From 2e355d9f93fc6cb9e5fc9a55f93145c9796f818a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 02:14:53 +0000 Subject: [PATCH 0001/1385] meta: bump next-intl from 3.15.5 to 3.19.0 (#7017) Bumps [next-intl](https://github.com/amannn/next-intl) from 3.15.5 to 3.19.0. - [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.15.5...v3.19.0) --- updated-dependencies: - dependency-name: next-intl 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 | 41 ++++++++++++----------------------------- 2 files changed, 13 insertions(+), 30 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 9025546c5b3b4..e46fc05a02203 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -67,7 +67,7 @@ "glob": "~10.4.1", "gray-matter": "~4.0.3", "next": "~14.2.7", - "next-intl": "~3.15.3", + "next-intl": "~3.19.0", "next-themes": "~0.3.0", "postcss": "~8.4.40", "postcss-calc": "~10.0.0", diff --git a/package-lock.json b/package-lock.json index 46e5d1677fd7b..f4ce387538710 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,7 @@ "glob": "~10.4.1", "gray-matter": "~4.0.3", "next": "~14.2.7", - "next-intl": "~3.15.3", + "next-intl": "~3.19.0", "next-themes": "~0.3.0", "postcss": "~8.4.40", "postcss-calc": "~10.0.0", @@ -3292,26 +3292,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", - "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" } }, - "node_modules/@formatjs/ecma402-abstract/node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@formatjs/fast-memoize": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", - "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -3320,7 +3309,6 @@ "version": "2.7.8", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", - "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "@formatjs/icu-skeleton-parser": "1.8.2", @@ -3331,17 +3319,15 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", - "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.2.32", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.32.tgz", - "integrity": "sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==", - "license": "MIT", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", "dependencies": { "tslib": "^2.4.0" } @@ -16485,7 +16471,6 @@ "version": "10.5.14", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", - "license": "BSD-3-Clause", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "@formatjs/fast-memoize": "2.2.0", @@ -22362,20 +22347,19 @@ } }, "node_modules/next-intl": { - "version": "3.15.5", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.15.5.tgz", - "integrity": "sha512-QnUFjKRLKC7dbb40RKqINTNkvvgTHUEv66Q9X+s/6hxQu/XRKKY4JtcZ5ajMW2Ed8H2eyOY7+WXxAY2GbXq6jA==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.19.0.tgz", + "integrity": "sha512-ciiHYBwR3ztoMdJZgFmt0LII7GYTsLA/MFt3y681q4Lw4fI5EYNCZSYb9XA/BIt3ZX5S1TLUP1uOERy1dIQvMg==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/amannn" } ], - "license": "MIT", "dependencies": { - "@formatjs/intl-localematcher": "^0.2.32", + "@formatjs/intl-localematcher": "^0.5.4", "negotiator": "^0.6.3", - "use-intl": "^3.15.5" + "use-intl": "^3.19.0" }, "peerDependencies": { "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0", @@ -30289,10 +30273,9 @@ } }, "node_modules/use-intl": { - "version": "3.17.6", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.17.6.tgz", - "integrity": "sha512-07wyVHSFSfI6M6TjhX/buZUFXnFymSz5LCimIMutTnBY11Vc/ym18j3HpZoQoWH+JYRKCCa4Jfm7NNyVKmgVww==", - "license": "MIT", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.19.0.tgz", + "integrity": "sha512-JOA73+YdtArxkvFKrneLAhH55m+x+sA9Wj8w8rYkHkHvcW/76w5T3szSmBG063vH3UqLoIKlsDVBBUfpkB7GMg==", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "intl-messageformat": "^10.5.14" From 532c90c1f87e336de70a8c281762f32c864ca20e Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga Date: Tue, 3 Sep 2024 11:02:58 -0300 Subject: [PATCH 0002/1385] Blog: v22.8.0 release post (#7027) Refs: https://github.com/nodejs/node/pull/54560 --- apps/site/pages/en/blog/release/v22.8.0.md | 232 +++++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v22.8.0.md diff --git a/apps/site/pages/en/blog/release/v22.8.0.md b/apps/site/pages/en/blog/release/v22.8.0.md new file mode 100644 index 0000000000000..b3303b9b69109 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.8.0.md @@ -0,0 +1,232 @@ +--- +date: '2024-09-03T13:51:48.461Z' +category: release +title: Node v22.8.0 (Current) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2024-09-03, Version 22.8.0 (Current), @RafaelGSS + +### New JS API for compile cache + +This release adds a new API `module.enableCompileCache()` that can be used to enable on-disk code caching of all modules loaded after this API is called. +Previously this could only be enabled by the `NODE_COMPILE_CACHE` environment variable, so it could only set by end-users. +This API allows tooling and library authors to enable caching of their own code. +This is a built-in alternative to the [v8-compile-cache](https://www.npmjs.com/package/v8-compile-cache)/[v8-compile-cache-lib ](https://www.npmjs.com/package/v8-compile-cache-lib) packages, +but have [better performance](https://github.com/nodejs/node/issues/47472#issuecomment-1970331362) and supports ESM. + +Thanks to Joyee Cheung for working on this. + +### New option for vm.createContext() to create a context with a freezable globalThis + +Node.js implements a flavor of `vm.createContext()` and friends that creates a context without contextifying its global +object when vm.constants.DONT_CONTEXTIFY is used. This is suitable when users want to freeze the context +(impossible when the global is contextified i.e. has interceptors installed) or speed up the global access if they +don't need the interceptor behavior. + +Thanks to Joyee Cheung for working on this. + +### Support for coverage thresholds + +Node.js now supports requiring code coverage to meet a specific threshold before the process exits successfully. +To use this feature, you need to enable the `--experimental-test-coverage` flag. + +You can set thresholds for the following types of coverage: + +- **Branch coverage**: Use `--test-coverage-branches=` +- **Function coverage**: Use `--test-coverage-functions=` +- **Line coverage**: Use `--test-coverage-lines=` + +`` should be an integer between 0 and 100. If an invalid value is provided, a `TypeError` will be thrown. + +If the code coverage fails to meet the specified thresholds for any category, the process will exit with code `1`. + +For instance, to enforce a minimum of 80% line coverage and 60% branch coverage, you can run: + +```console +$ node --experimental-test-coverage --test-coverage-lines=80 --test-coverage-branches=60 example.js +``` + +Thanks Aviv Keller for working on this. + +### Other Notable Changes + +- \[[`1f2cc2fa47`](https://github.com/nodejs/node/commit/1f2cc2fa47)] - **(SEMVER-MINOR)** **src,lib**: add performance.uvMetricsInfo (Rafael Gonzaga) [#54413](https://github.com/nodejs/node/pull/54413) +- \[[`1e01bdc0d0`](https://github.com/nodejs/node/commit/1e01bdc0d0)] - **(SEMVER-MINOR)** **net**: exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) [#54264](https://github.com/nodejs/node/pull/54264) +- \[[`97fa075c2e`](https://github.com/nodejs/node/commit/97fa075c2e)] - **(SEMVER-MINOR)** **test_runner**: support running tests in process (Colin Ihrig) [#53927](https://github.com/nodejs/node/pull/53927) +- \[[`858b583c88`](https://github.com/nodejs/node/commit/858b583c88)] - **(SEMVER-MINOR)** **test_runner**: defer inheriting hooks until run() (Colin Ihrig) [#53927](https://github.com/nodejs/node/pull/53927) + +### Commits + +- \[[`94985df9d6`](https://github.com/nodejs/node/commit/94985df9d6)] - **benchmark**: fix benchmark for file path and URL conversion (Early Riser) [#54190](https://github.com/nodejs/node/pull/54190) +- \[[`ac178b094b`](https://github.com/nodejs/node/commit/ac178b094b)] - **buffer**: truncate instead of throw when writing beyond buffer (Robert Nagy) [#54524](https://github.com/nodejs/node/pull/54524) +- \[[`afd8c1eb4f`](https://github.com/nodejs/node/commit/afd8c1eb4f)] - **buffer**: allow invalid encoding in from (Robert Nagy) [#54533](https://github.com/nodejs/node/pull/54533) +- \[[`6f0cf35cd3`](https://github.com/nodejs/node/commit/6f0cf35cd3)] - **build**: reclaim disk space on macOS GHA runner (jakecastelli) [#54658](https://github.com/nodejs/node/pull/54658) +- \[[`467ac3aec4`](https://github.com/nodejs/node/commit/467ac3aec4)] - **build**: don't clean obj.target directory if it doesn't exist (Joyee Cheung) [#54337](https://github.com/nodejs/node/pull/54337) +- \[[`71fdf961df`](https://github.com/nodejs/node/commit/71fdf961df)] - **build**: update required python version to 3.8 (Aviv Keller) [#54358](https://github.com/nodejs/node/pull/54358) +- \[[`73604cf1c5`](https://github.com/nodejs/node/commit/73604cf1c5)] - **deps**: update nghttp2 to 1.63.0 (Node.js GitHub Bot) [#54589](https://github.com/nodejs/node/pull/54589) +- \[[`b00c087285`](https://github.com/nodejs/node/commit/b00c087285)] - **deps**: V8: cherry-pick e74d0f437fcd (Joyee Cheung) [#54279](https://github.com/nodejs/node/pull/54279) +- \[[`33a6b3c7a9`](https://github.com/nodejs/node/commit/33a6b3c7a9)] - **deps**: backport ICU-22787 to fix ClangCL on Windows (Stefan Stojanovic) [#54502](https://github.com/nodejs/node/pull/54502) +- \[[`fe56949cbb`](https://github.com/nodejs/node/commit/fe56949cbb)] - **deps**: update c-ares to v1.33.1 (Node.js GitHub Bot) [#54549](https://github.com/nodejs/node/pull/54549) +- \[[`290f6ce619`](https://github.com/nodejs/node/commit/290f6ce619)] - **deps**: update amaro to 0.1.8 (Node.js GitHub Bot) [#54520](https://github.com/nodejs/node/pull/54520) +- \[[`b5843568b4`](https://github.com/nodejs/node/commit/b5843568b4)] - **deps**: update amaro to 0.1.7 (Node.js GitHub Bot) [#54473](https://github.com/nodejs/node/pull/54473) +- \[[`9c709209b4`](https://github.com/nodejs/node/commit/9c709209b4)] - **deps**: update undici to 6.19.8 (Node.js GitHub Bot) [#54456](https://github.com/nodejs/node/pull/54456) +- \[[`a5ce24181b`](https://github.com/nodejs/node/commit/a5ce24181b)] - **deps**: sqlite: fix Windows compilation (Colin Ihrig) [#54433](https://github.com/nodejs/node/pull/54433) +- \[[`3caf29ea88`](https://github.com/nodejs/node/commit/3caf29ea88)] - **deps**: update sqlite to 3.46.1 (Node.js GitHub Bot) [#54433](https://github.com/nodejs/node/pull/54433) +- \[[`68758d4b08`](https://github.com/nodejs/node/commit/68758d4b08)] - **doc**: add support me link for anonrig (Yagiz Nizipli) [#54611](https://github.com/nodejs/node/pull/54611) +- \[[`f5c5529266`](https://github.com/nodejs/node/commit/f5c5529266)] - **doc**: add alert on REPL from TCP socket (Rafael Gonzaga) [#54594](https://github.com/nodejs/node/pull/54594) +- \[[`bf824483cd`](https://github.com/nodejs/node/commit/bf824483cd)] - **doc**: fix typo in styleText description (Rafael Gonzaga) [#54616](https://github.com/nodejs/node/pull/54616) +- \[[`825d933fd4`](https://github.com/nodejs/node/commit/825d933fd4)] - **doc**: add getHeapStatistics() property descriptions (Benji Marinacci) [#54584](https://github.com/nodejs/node/pull/54584) +- \[[`80e5150160`](https://github.com/nodejs/node/commit/80e5150160)] - **doc**: fix module compile cache description (沈鸿飞) [#54625](https://github.com/nodejs/node/pull/54625) +- \[[`7fd033fe56`](https://github.com/nodejs/node/commit/7fd033fe56)] - **doc**: run license-builder (github-actions\[bot]) [#54562](https://github.com/nodejs/node/pull/54562) +- \[[`c499913732`](https://github.com/nodejs/node/commit/c499913732)] - **doc**: fix information about including coverage files (Aviv Keller) [#54527](https://github.com/nodejs/node/pull/54527) +- \[[`c3dc83befc`](https://github.com/nodejs/node/commit/c3dc83befc)] - **doc**: support collaborators - talk amplification (Michael Dawson) [#54508](https://github.com/nodejs/node/pull/54508) +- \[[`fc57beaad3`](https://github.com/nodejs/node/commit/fc57beaad3)] - **doc**: add note about shasum generation failure (Marco Ippolito) [#54487](https://github.com/nodejs/node/pull/54487) +- \[[`1800a58f49`](https://github.com/nodejs/node/commit/1800a58f49)] - **doc**: update websocket flag description to reflect stable API status (Yelim Koo) [#54482](https://github.com/nodejs/node/pull/54482) +- \[[`61affd77a7`](https://github.com/nodejs/node/commit/61affd77a7)] - **doc**: fix capitalization in module.md (shallow-beach) [#54488](https://github.com/nodejs/node/pull/54488) +- \[[`25419915c7`](https://github.com/nodejs/node/commit/25419915c7)] - **doc**: add esm examples to node:https (Alfredo González) [#54399](https://github.com/nodejs/node/pull/54399) +- \[[`83b5efeb54`](https://github.com/nodejs/node/commit/83b5efeb54)] - **doc**: reserve ABI 130 for Electron 33 (Calvin) [#54383](https://github.com/nodejs/node/pull/54383) +- \[[`6ccbd32ae8`](https://github.com/nodejs/node/commit/6ccbd32ae8)] - **doc, meta**: add missing `,` to `BUILDING.md` (Aviv Keller) [#54409](https://github.com/nodejs/node/pull/54409) +- \[[`fc08a9b0cd`](https://github.com/nodejs/node/commit/fc08a9b0cd)] - **fs**: refactor handleTimestampsAndMode to remove redundant call (HEESEUNG) [#54369](https://github.com/nodejs/node/pull/54369) +- \[[`4a664b5fcb`](https://github.com/nodejs/node/commit/4a664b5fcb)] - **lib**: respect terminal capabilities on styleText (Rafael Gonzaga) [#54389](https://github.com/nodejs/node/pull/54389) +- \[[`a9ce2b6a28`](https://github.com/nodejs/node/commit/a9ce2b6a28)] - **lib**: fix emit warning for debuglog.time when disabled (Vinicius Lourenço) [#54275](https://github.com/nodejs/node/pull/54275) +- \[[`b5a23c9783`](https://github.com/nodejs/node/commit/b5a23c9783)] - **meta**: remind users to use a supported version in bug reports (Aviv Keller) [#54481](https://github.com/nodejs/node/pull/54481) +- \[[`0d7171d8e9`](https://github.com/nodejs/node/commit/0d7171d8e9)] - **meta**: add more labels to dep-updaters (Aviv Keller) [#54454](https://github.com/nodejs/node/pull/54454) +- \[[`c4996c189f`](https://github.com/nodejs/node/commit/c4996c189f)] - **meta**: run coverage-windows when `vcbuild.bat` updated (Aviv Keller) [#54412](https://github.com/nodejs/node/pull/54412) +- \[[`3cf645768e`](https://github.com/nodejs/node/commit/3cf645768e)] - **module**: use amaro default transform values (Marco Ippolito) [#54517](https://github.com/nodejs/node/pull/54517) +- \[[`336496b90e`](https://github.com/nodejs/node/commit/336496b90e)] - **module**: add sourceURL magic comment hinting generated source (Chengzhong Wu) [#54402](https://github.com/nodejs/node/pull/54402) +- \[[`04f83b50ad`](https://github.com/nodejs/node/commit/04f83b50ad)] - _**Revert**_ "**net**: validate host name for server listen" (jakecastelli) [#54554](https://github.com/nodejs/node/pull/54554) +- \[[`1e01bdc0d0`](https://github.com/nodejs/node/commit/1e01bdc0d0)] - **(SEMVER-MINOR)** **net**: exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) [#54264](https://github.com/nodejs/node/pull/54264) +- \[[`3cd10a3f40`](https://github.com/nodejs/node/commit/3cd10a3f40)] - **node-api**: remove RefBase and CallbackWrapper (Vladimir Morozov) [#53590](https://github.com/nodejs/node/pull/53590) +- \[[`72c554abab`](https://github.com/nodejs/node/commit/72c554abab)] - **sqlite**: return results with null prototype (Michaël Zasso) [#54350](https://github.com/nodejs/node/pull/54350) +- \[[`e071651bb2`](https://github.com/nodejs/node/commit/e071651bb2)] - **src**: disable fast methods for `buffer.write` (Michaël Zasso) [#54565](https://github.com/nodejs/node/pull/54565) +- \[[`f8cbbc685a`](https://github.com/nodejs/node/commit/f8cbbc685a)] - **src**: use v8::Isolate::GetDefaultLocale() to compute navigator.language (Joyee Cheung) [#54279](https://github.com/nodejs/node/pull/54279) +- \[[`4baf4637eb`](https://github.com/nodejs/node/commit/4baf4637eb)] - **(SEMVER-MINOR)** **src**: add JS APIs for compile cache and NODE_DISABLE_COMPILE_CACHE (Joyee Cheung) [#54501](https://github.com/nodejs/node/pull/54501) +- \[[`101e299656`](https://github.com/nodejs/node/commit/101e299656)] - **src**: move more crypto_dh.cc code to ncrypto (James M Snell) [#54459](https://github.com/nodejs/node/pull/54459) +- \[[`e6e1f4e8bd`](https://github.com/nodejs/node/commit/e6e1f4e8bd)] - **src**: remove redundant AESCipherMode (Tobias Nießen) [#54438](https://github.com/nodejs/node/pull/54438) +- \[[`1ff3f63f5e`](https://github.com/nodejs/node/commit/1ff3f63f5e)] - **src**: handle errors correctly in `permission.cc` (Michaël Zasso) [#54541](https://github.com/nodejs/node/pull/54541) +- \[[`4938188682`](https://github.com/nodejs/node/commit/4938188682)] - **src**: return `v8::Object` from error constructors (Michaël Zasso) [#54541](https://github.com/nodejs/node/pull/54541) +- \[[`4578e9485b`](https://github.com/nodejs/node/commit/4578e9485b)] - **src**: use better return types in KVStore (Michaël Zasso) [#54539](https://github.com/nodejs/node/pull/54539) +- \[[`7d9e994791`](https://github.com/nodejs/node/commit/7d9e994791)] - **src**: change SetEncodedValue to return Maybe\ (Tobias Nießen) [#54443](https://github.com/nodejs/node/pull/54443) +- \[[`eef303028f`](https://github.com/nodejs/node/commit/eef303028f)] - **src**: remove cached data tag from snapshot metadata (Joyee Cheung) [#54122](https://github.com/nodejs/node/pull/54122) +- \[[`3a74c400d5`](https://github.com/nodejs/node/commit/3a74c400d5)] - **src**: improve `buffer.transcode` performance (Yagiz Nizipli) [#54153](https://github.com/nodejs/node/pull/54153) +- \[[`909c5320fd`](https://github.com/nodejs/node/commit/909c5320fd)] - **src**: move more crypto code to ncrypto (James M Snell) [#54320](https://github.com/nodejs/node/pull/54320) +- \[[`9ba75faf5f`](https://github.com/nodejs/node/commit/9ba75faf5f)] - **(SEMVER-MINOR)** **src,lib**: add performance.uvMetricsInfo (Rafael Gonzaga) [#54413](https://github.com/nodejs/node/pull/54413) +- \[[`fffc300c6d`](https://github.com/nodejs/node/commit/fffc300c6d)] - **stream**: change stream to use index instead of `for...of` (Wiyeong Seo) [#54474](https://github.com/nodejs/node/pull/54474) +- \[[`a4a6ef8d29`](https://github.com/nodejs/node/commit/a4a6ef8d29)] - **test**: fix test-tls-client-auth test for OpenSSL32 (Michael Dawson) [#54610](https://github.com/nodejs/node/pull/54610) +- \[[`76345a5d7c`](https://github.com/nodejs/node/commit/76345a5d7c)] - **test**: update TLS test for OpenSSL 3.2 (Richard Lau) [#54612](https://github.com/nodejs/node/pull/54612) +- \[[`522d5a359d`](https://github.com/nodejs/node/commit/522d5a359d)] - **test**: run V8 Fast API tests in release mode too (Michaël Zasso) [#54570](https://github.com/nodejs/node/pull/54570) +- \[[`edbecf5209`](https://github.com/nodejs/node/commit/edbecf5209)] - **test**: increase key size for ca2-cert.pem (Michael Dawson) [#54599](https://github.com/nodejs/node/pull/54599) +- \[[`bc976cfc93`](https://github.com/nodejs/node/commit/bc976cfc93)] - **test**: update test-abortsignal-cloneable to use node:test (James M Snell) [#54581](https://github.com/nodejs/node/pull/54581) +- \[[`9f1ce732a8`](https://github.com/nodejs/node/commit/9f1ce732a8)] - **test**: update test-assert-typedarray-deepequal to use node:test (James M Snell) [#54585](https://github.com/nodejs/node/pull/54585) +- \[[`c74f2aeb92`](https://github.com/nodejs/node/commit/c74f2aeb92)] - **test**: update test-assert to use node:test (James M Snell) [#54585](https://github.com/nodejs/node/pull/54585) +- \[[`a0be95e4cc`](https://github.com/nodejs/node/commit/a0be95e4cc)] - **test**: merge ongc and gcutil into gc.js (tannal) [#54355](https://github.com/nodejs/node/pull/54355) +- \[[`c10aff665e`](https://github.com/nodejs/node/commit/c10aff665e)] - **test**: move a couple of tests over to using node:test (James M Snell) [#54582](https://github.com/nodejs/node/pull/54582) +- \[[`dbbc790949`](https://github.com/nodejs/node/commit/dbbc790949)] - **test**: update test-aborted-util to use node:test (James M Snell) [#54578](https://github.com/nodejs/node/pull/54578) +- \[[`64442fce6b`](https://github.com/nodejs/node/commit/64442fce6b)] - **test**: refactor test-abortcontroller to use node:test (James M Snell) [#54574](https://github.com/nodejs/node/pull/54574) +- \[[`72345dee1c`](https://github.com/nodejs/node/commit/72345dee1c)] - **test**: fix embedding test for Windows (Vladimir Morozov) [#53659](https://github.com/nodejs/node/pull/53659) +- \[[`846e2b2896`](https://github.com/nodejs/node/commit/846e2b2896)] - **test**: refactor test_runner tests to change default reporter (Colin Ihrig) [#54547](https://github.com/nodejs/node/pull/54547) +- \[[`b5eb24c86a`](https://github.com/nodejs/node/commit/b5eb24c86a)] - **test**: force spec reporter in test-runner-watch-mode.mjs (Colin Ihrig) [#54538](https://github.com/nodejs/node/pull/54538) +- \[[`66ae9f4c0a`](https://github.com/nodejs/node/commit/66ae9f4c0a)] - **test**: use valid hostnames (Luigi Pinca) [#54556](https://github.com/nodejs/node/pull/54556) +- \[[`02d664b75f`](https://github.com/nodejs/node/commit/02d664b75f)] - **test**: fix improper path to URL conversion (Antoine du Hamel) [#54509](https://github.com/nodejs/node/pull/54509) +- \[[`8a4f8a9eff`](https://github.com/nodejs/node/commit/8a4f8a9eff)] - **test**: add tests for runner coverage with different stdout column widths (Pietro Marchini) [#54494](https://github.com/nodejs/node/pull/54494) +- \[[`b0ed8dbb2f`](https://github.com/nodejs/node/commit/b0ed8dbb2f)] - **test**: prevent V8 from writing into the system's tmpdir (Michaël Zasso) [#54395](https://github.com/nodejs/node/pull/54395) +- \[[`5ee234a5a6`](https://github.com/nodejs/node/commit/5ee234a5a6)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#54593](https://github.com/nodejs/node/pull/54593) +- \[[`a4bebf8559`](https://github.com/nodejs/node/commit/a4bebf8559)] - **test_runner**: ensure test watcher picks up new test files (Pietro Marchini) [#54225](https://github.com/nodejs/node/pull/54225) +- \[[`d4310fe9c1`](https://github.com/nodejs/node/commit/d4310fe9c1)] - **(SEMVER-MINOR)** **test_runner**: add support for coverage thresholds (Aviv Keller) [#54429](https://github.com/nodejs/node/pull/54429) +- \[[`0cf78aa24b`](https://github.com/nodejs/node/commit/0cf78aa24b)] - **test_runner**: refactor `mock_loader` (Antoine du Hamel) [#54223](https://github.com/nodejs/node/pull/54223) +- \[[`97fa075c2e`](https://github.com/nodejs/node/commit/97fa075c2e)] - **(SEMVER-MINOR)** **test_runner**: support running tests in process (Colin Ihrig) [#53927](https://github.com/nodejs/node/pull/53927) +- \[[`858b583c88`](https://github.com/nodejs/node/commit/858b583c88)] - **(SEMVER-MINOR)** **test_runner**: defer inheriting hooks until run() (Colin Ihrig) [#53927](https://github.com/nodejs/node/pull/53927) +- \[[`45b0250692`](https://github.com/nodejs/node/commit/45b0250692)] - **test_runner**: account for newline in source maps (Colin Ihrig) [#54444](https://github.com/nodejs/node/pull/54444) +- \[[`1c29e74d30`](https://github.com/nodejs/node/commit/1c29e74d30)] - **test_runner**: make `mock.module`'s `specifier` consistent with `import()` (Antoine du Hamel) [#54416](https://github.com/nodejs/node/pull/54416) +- \[[`cbe30a02a3`](https://github.com/nodejs/node/commit/cbe30a02a3)] - **test_runner**: finish build phase before running tests (Colin Ihrig) [#54423](https://github.com/nodejs/node/pull/54423) +- \[[`8a4b26f00c`](https://github.com/nodejs/node/commit/8a4b26f00c)] - **timers**: fix validation (Paolo Insogna) [#54404](https://github.com/nodejs/node/pull/54404) +- \[[`38798140c4`](https://github.com/nodejs/node/commit/38798140c4)] - **tools**: remove unused python files (Aviv Keller) [#53928](https://github.com/nodejs/node/pull/53928) +- \[[`da6c61def8`](https://github.com/nodejs/node/commit/da6c61def8)] - **tools**: add swc license (Marco Ippolito) [#54462](https://github.com/nodejs/node/pull/54462) +- \[[`16d4c437e1`](https://github.com/nodejs/node/commit/16d4c437e1)] - **typings**: provide internal types for wasi bindings (Andrew Moon) [#54119](https://github.com/nodejs/node/pull/54119) +- \[[`fe5666f006`](https://github.com/nodejs/node/commit/fe5666f006)] - **vm**: return all own names and symbols in property enumerator interceptor (Chengzhong Wu) [#54522](https://github.com/nodejs/node/pull/54522) +- \[[`db80eac496`](https://github.com/nodejs/node/commit/db80eac496)] - **(SEMVER-MINOR)** **vm**: introduce vanilla contexts via vm.constants.DONT_CONTEXTIFY (Joyee Cheung) [#54394](https://github.com/nodejs/node/pull/54394) +- \[[`8ffdd1e2b2`](https://github.com/nodejs/node/commit/8ffdd1e2b2)] - **zlib**: simplify validators (Yagiz Nizipli) [#54442](https://github.com/nodejs/node/pull/54442) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.8.0/node-v22.8.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.8.0/node-v22.8.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.8.0/node-v22.8.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.8.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.8.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.8.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.8.0/node-v22.8.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.8.0/node-v22.8.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.8.0/node-v22.8.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.8.0/node-v22.8.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.8.0/node-v22.8.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.8.0/node-v22.8.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.8.0/node-v22.8.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.8.0/node-v22.8.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.8.0/node-v22.8.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.8.0/node-v22.8.0.tar.gz \ +Other release files: https://nodejs.org/dist/v22.8.0/ \ +Documentation: https://nodejs.org/docs/v22.8.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +a832a113d2bf953c4866ad3c9f0d63fd09a33d205f26633835737f46933f8c5c node-v22.8.0-aix-ppc64.tar.gz +e986e4fb3cd19cdb3050d91b863c568cb32e89e0be2fcbe6063867b202e252ac node-v22.8.0-arm64.msi +723d53380d500087d738ee1a255fea121060602140a8e93cf7bd3013cd7531a4 node-v22.8.0-darwin-arm64.tar.gz +822d9fb8a12d4db7f0bfed008a5fbe2fd312be204a10b30930b0f3ab9e083d0e node-v22.8.0-darwin-arm64.tar.xz +2f56ac0a9b7f03aea854b8bf2246741179c0b758a0b1b7239d1d5b242aca0f1b node-v22.8.0-darwin-x64.tar.gz +ff60bf68aafd06540b5b1758cdd1100f1de55ea9caa7a370bb09d07733b1b81a node-v22.8.0-darwin-x64.tar.xz +2b7ef6e8b667710d97167e5d1e610bcbeb53fa2b1b30dec73658ba3d41aabc18 node-v22.8.0-headers.tar.gz +7df44d48036b965cbca6a20bdc9fe958fbdcfa3fad2c93e4acb4f5f063e2253c node-v22.8.0-headers.tar.xz +a23afe3a54270accabcd9be0fc0dbec6645e8c5b8b06040dcdf0086a7047622d node-v22.8.0-linux-arm64.tar.gz +9498fec4ce1ac2178d48dea825c012ca2ab532486824b8ed0dd3a7ffae87db0f node-v22.8.0-linux-arm64.tar.xz +b59fc61871fde20018f569e9a971599b0b0c9906843f789f22b0c3983a6cc2ac node-v22.8.0-linux-armv7l.tar.gz +257381f0ea23e8f6f60f76c48ae07ab6a40c112108a885846f7f79cde5e02781 node-v22.8.0-linux-armv7l.tar.xz +6d7a1239cc39387676fdad2311bc95aef6b95819c4e7a0ed0edfbc6ca2caeb52 node-v22.8.0-linux-ppc64le.tar.gz +c0704004a519e148cef71d7a74097234bf84150cdde5242362a0e87c6514b6f5 node-v22.8.0-linux-ppc64le.tar.xz +63114451139bf8a03c90dd57ae896840d76ded1e4f72e7feaecfc9eab8da4957 node-v22.8.0-linux-s390x.tar.gz +cd780416de584957016261ee702840d5a6b169e7bb63565ef2b3f865e3a671e6 node-v22.8.0-linux-s390x.tar.xz +a0bc969f61b96575a4b2cdd239729aa3e721384fa9ca3fb926a9582c019c1bbc node-v22.8.0-linux-x64.tar.gz +b6827dccd983acad09496f28a0f277218cc49302a8a7179ccbd7bf38305f5623 node-v22.8.0-linux-x64.tar.xz +30700aa91ec1c7d6f05b376cbe73e9d14a7148153f4d54514c9b492b0dcbf143 node-v22.8.0.pkg +cd5a5bd63c6c0a44278c9da0126e5d2c06a688462f18ed44f314a346a46e7ec5 node-v22.8.0.tar.gz +f130e82176d1ee0702d99afc1995d0061bf8ed357c38834a32a08c9ef74f1ac7 node-v22.8.0.tar.xz +30c10cf2ec1317ff2fb092f456e797907d4a70b3f190c11870ceaefb13b4664e node-v22.8.0-win-arm64.7z +89df2f4a03bc0a85083fa0120eb9391ea56e941378312fc0b83821f1f479cabb node-v22.8.0-win-arm64.zip +91c007a75c837abfabae44bdc98e9b4c6f90029d4662b9c4e4b9d1b67a046f17 node-v22.8.0-win-x64.7z +d6e1c4fca93997224cac0bec09b4201aa018f50171d38c6b85abe483012839c9 node-v22.8.0-win-x64.zip +565212e330b65b6edc635726d222f44f0a66f35e1b3a84b3181e302dfd48d370 node-v22.8.0-win-x86.7z +d34f514ffd372331e045a0a3900517164cc762ae54a5b3133552d82a4fa6e2c5 node-v22.8.0-win-x86.zip +f7870f6da18f9f884f09eed40da74529018888d51f620f3cb7c14b75b823af3f node-v22.8.0-x64.msi +c10cfe8ea214eeb3fc7e51997ee16db04d68a62b9355dbc091073c5c12535287 node-v22.8.0-x86.msi +808a02cbea61ad30da21b0cdebe9a7f1ace466f42a0419c7f44c6aaaee3bf832 win-arm64/node.exe +a155da85a633f586997023ca6e4fdd576b031da4d2488d0fdc6cacd48513735a win-arm64/node.lib +a8fd60482b38cf3a26b4f208ea53afd82ed3fbea00a829a384274234c6062eaa win-arm64/node_pdb.7z +4b55f899389bc96d1efc9a5a759162f2c1d670a8f13763910474cdfb72e60dce win-arm64/node_pdb.zip +693db8fce6bb56248b144a46f20c406c7b54a262e7514120c6cae85fd66e2c10 win-x64/node.exe +9d0b2b6a78f071562f85926e32913213d619326f98ce15ed38142948167c90a0 win-x64/node.lib +659e442d9561ffb09ae81b93304d4da8a6b84f722c1c743961850dabbb5526fc win-x64/node_pdb.7z +deb913d0297acba29e414b5d72795f7c57ef0c3fac44e69b02f6121e41e2ebbf win-x64/node_pdb.zip +7359847131b5228a6fa3f0927f009158b1c8c24862ae5060df3163e3b5856f0c win-x86/node.exe +86b3354a9ef56075d164787f2fe5b77b31088a2d7e79762cccc1d57e84ea51b2 win-x86/node.lib +1ecc56ba6a3e6188025e27ab74b22d06c63a16b7c6dc362f9b7026279b936f7d win-x86/node_pdb.7z +569e81de407f3b4c6b19821d6d8369e922136cd8b84350367b08bcf5736b2092 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmbXEuEACgkQi+q0389V +XvQtwgwAm3yNd8qbDICXS+rB2NQYsfgKKYZl/AOYt/UDguudK9wbV1Bw9zE65wjs +nqOru3rM5BeR+ujljpYFG3ZlmnRtVFBeVrd5bNHHIVVvQJ4OPORAx+CRfP2COTZt +VpwyZGAGRgbbiCAlrnQ7VfOKogcL0YjjqPQpgPPDESQ1BQjqbqdg6WAALUSAPcYU +x2pWHUBPzrlVjCxn9wUqawc7KpoVgrOHsOCtBbniY+y1jR6W4h95zALt3a3dJVTQ +jWU0TiZdx8+plqgqbJ4eYe0SniDCimKMxp/zOV1pNHEH2aRmYp/AR49MkmDbKp6H +JG2PV2VALvUTEWjQtrTbq6YVzFZcVyEW2HlbN3UyRmzDdWsIxhLmm0AYfNKI3vl5 +84zy/d5zDoXtrsI/FDzdcaqYlH8lL2yCZK0hoLnEGynHMsXm2exajUjYCaG3UmKs +mD2oDHfm3oEEB7XddrqG4mPDe0wgpk1llqBaLNhyTmPzYewkJoPTiTEdwehtgRsV +n9nxU0aa +=6yKj +-----END PGP SIGNATURE----- +``` From 29d3af768f3ffd073b9b130cb3b4a0dc4de497d0 Mon Sep 17 00:00:00 2001 From: Nirmal Kumar Date: Wed, 4 Sep 2024 03:17:12 +0530 Subject: [PATCH 0003/1385] Fix: nodejs.org/learn leads to 404 (#7001) Fixes 7000 --- apps/site/redirects.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/site/redirects.json b/apps/site/redirects.json index 8889da2b0973b..8b3b370b76ae9 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": "/learn", + "destination": "/en/learn" + }, { "source": "/:locale/learn", "destination": "/:locale/learn/getting-started/introduction-to-nodejs" From c5486e6e4b8c0c4450ccecdde33dd8a92bb0c47c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 08:29:28 +1000 Subject: [PATCH 0004/1385] meta: bump prettier-plugin-tailwindcss from 0.6.5 to 0.6.6 in the tailwind group (#7015) 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.5 to 0.6.6 - [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.5...v0.6.6) --- 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 | 13 ++++++++----- package.json | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f4ce387538710..2f371f12b1069 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", "prettier": "3.3.2", - "prettier-plugin-tailwindcss": "0.6.5", + "prettier-plugin-tailwindcss": "0.6.6", "typescript": "~5.5.0" }, "engines": { @@ -24222,11 +24222,10 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.5.tgz", - "integrity": "sha512-axfeOArc/RiGHjOIy9HytehlC0ZLeMaqY09mm8YCkMzznKiDkwFzOpBvtuhuv3xG5qB73+Mj7OCe2j/L1ryfuQ==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.6.tgz", + "integrity": "sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.21.3" }, @@ -24242,6 +24241,7 @@ "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", @@ -24279,6 +24279,9 @@ "prettier-plugin-marko": { "optional": true }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, "prettier-plugin-organize-attributes": { "optional": true }, diff --git a/package.json b/package.json index 7060e51631a98..f1db6e05b5663 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", "prettier": "3.3.2", - "prettier-plugin-tailwindcss": "0.6.5", + "prettier-plugin-tailwindcss": "0.6.6", "typescript": "~5.5.0" } } From 544f77955490b9c6716406f3db6214e9ed9ab15f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:48:36 +0000 Subject: [PATCH 0005/1385] meta: bump prettier from 3.3.2 to 3.3.3 (#7018) Bumps [prettier](https://github.com/prettier/prettier) from 3.3.2 to 3.3.3. - [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.2...3.3.3) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development 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 2f371f12b1069..928c5ccce1d3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "devDependencies": { "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", - "prettier": "3.3.2", + "prettier": "3.3.3", "prettier-plugin-tailwindcss": "0.6.6", "typescript": "~5.5.0" }, @@ -24206,11 +24206,10 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, diff --git a/package.json b/package.json index f1db6e05b5663..4dd5e9ef1ce2d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "devDependencies": { "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", - "prettier": "3.3.2", + "prettier": "3.3.3", "prettier-plugin-tailwindcss": "0.6.6", "typescript": "~5.5.0" } From 4f513e75bf8082bf25ca0fefdfbd19bf75461a4e Mon Sep 17 00:00:00 2001 From: Claudio W Date: Wed, 4 Sep 2024 14:20:26 +0200 Subject: [PATCH 0006/1385] chore: added new certification promo (#7029) Signed-off-by: Claudio W --- apps/site/site.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/site/site.json b/apps/site/site.json index 3ed40c4e5e87c..338cc997df7da 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -28,11 +28,11 @@ ], "websiteBanners": { "index": { - "startDate": "2024-07-08T00:00:00.000Z", - "endDate": "2024-07-16T23:59:00.000Z", - "text": "July Security Release is available", - "link": "https://nodejs.org/en/blog/vulnerability/july-2024-security-releases", - "type": "warning" + "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/", + "type": "default" } }, "websiteBadges": { From 4e85513a9cc0eae56052bdf52b9f580dce033344 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 07:41:31 -0500 Subject: [PATCH 0007/1385] meta: bump step-security/harden-runner from 2.9.0 to 2.9.1 (#7021) Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.9.0 to 2.9.1. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/0d381219ddf674d61a7572ddd19d7941e271515c...5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde) --- updated-dependencies: - dependency-name: step-security/harden-runner 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> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 6 +++--- .github/workflows/pull-request-label.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr.yml | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e5d634b5399f3..b0ffcd283e694 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -46,7 +46,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9f84f2efb54e8..0871a8e0b041d 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 34f959f461871..d2d47acd21585 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index 3a5821a7990d5..1af1b9395b57d 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 446ab0ee2736c..d5608bfbeee46 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -37,7 +37,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit @@ -161,7 +161,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit diff --git a/.github/workflows/pull-request-label.yml b/.github/workflows/pull-request-label.yml index 1a6d4b2a985da..479358dc63f79 100644 --- a/.github/workflows/pull-request-label.yml +++ b/.github/workflows/pull-request-label.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b8bbe208b4294..902168fcd5b5a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index 09f4a29c4c9a9..8bd80026e8067 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -34,7 +34,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit From 52d494c08845909a167b48818e384f7439902381 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 07:45:18 -0500 Subject: [PATCH 0008/1385] meta: bump chromaui/action from 11.7.0 to 11.7.1 (#7022) Bumps [chromaui/action](https://github.com/chromaui/action) from 11.7.0 to 11.7.1. - [Release notes](https://github.com/chromaui/action/releases) - [Commits](https://github.com/chromaui/action/compare/fdbe7756d4dbf493e2fbb822df73be7accd07e1c...b984808b772126a9f44b2b7737b131b68a2ede32) --- updated-dependencies: - dependency-name: chromaui/action 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> --- .github/workflows/lint-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index d5608bfbeee46..f8cc521f1a236 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -204,7 +204,7 @@ jobs: startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 - uses: chromaui/action@fdbe7756d4dbf493e2fbb822df73be7accd07e1c + uses: chromaui/action@b984808b772126a9f44b2b7737b131b68a2ede32 with: workingDir: apps/site buildScriptName: storybook:build From 7cfebcfa30c2b66b164389499875604e000593e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 07:46:34 -0500 Subject: [PATCH 0009/1385] meta: bump actions/upload-artifact from 4.3.4 to 4.4.0 (#7023) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.4 to 4.4.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/0b2256b8c012f0828dc542b3febcab082c67f72b...50769540e7f4bd5e21e526ee35c689e35e0d6874) --- updated-dependencies: - dependency-name: actions/upload-artifact 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/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 902168fcd5b5a..419b2fdb533b5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -51,7 +51,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: Upload Artifacts - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: SARIF file path: results.sarif From 1a62c01e4813aaf5b1b8f10e03cd84598f1ae88e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 08:25:53 -0500 Subject: [PATCH 0010/1385] meta: bump micromatch from 4.0.7 to 4.0.8 (#7025) Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8. - [Release notes](https://github.com/micromatch/micromatch/releases) - [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8) --- updated-dependencies: - dependency-name: micromatch dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 928c5ccce1d3f..ec2bdc893c3b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21997,10 +21997,9 @@ "license": "MIT" }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "license": "MIT", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" From 51ddeecac2b4424a95753192262bb9cd2666afa6 Mon Sep 17 00:00:00 2001 From: Maksim Ivanov Date: Thu, 5 Sep 2024 04:37:20 +0300 Subject: [PATCH 0011/1385] Add additional information for running mjs code example (#7026) --- .../pages/en/learn/getting-started/introduction-to-nodejs.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md b/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md index 503459952a002..185b871ab79b8 100644 --- a/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md +++ b/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md @@ -59,6 +59,7 @@ server.listen(port, hostname, () => { ``` To run this snippet, save it as a `server.js` file and run `node server.js` in your terminal. +If you use mjs version of the code, you should save it as a `server.mjs` file and run `node server.mjs` in your terminal. This code first includes the Node.js [`http` module](https://nodejs.org/api/http.html). From 692d67a3f686e8a6b389c8b48ddc080aa5324fea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Sep 2024 10:05:45 -0500 Subject: [PATCH 0012/1385] meta: bump github/codeql-action from 3.25.15 to 3.26.6 (#7024) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.15 to 3.26.6. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/afb54ba388a7dca6ecae48f608c4ff05ff4cc77a...4dd16135b69a43b6c8efb853346f8437d92d3c93) --- updated-dependencies: - dependency-name: github/codeql-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/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0871a8e0b041d..274c55413d0a0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/init@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/autobuild@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/analyze@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 419b2fdb533b5..b171db44d1bf2 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: sarif_file: results.sarif From 0b3e391276f62a57dcae41245a01ade90ea45950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josh=20Goldberg=20=E2=9C=A8?= Date: Mon, 9 Sep 2024 06:15:38 -0400 Subject: [PATCH 0013/1385] chore: updated ESLint to v9 with flat config (#7032) * chore: updated ESLint to v9 with flat config * chore: missed an .eslintjscache --- .github/workflows/lint-and-tests.yml | 2 - .gitignore | 1 - .prettierignore | 1 - apps/site/.eslintignore | 18 - apps/site/.eslintrc.json | 100 -- apps/site/.storybook/main.ts | 2 +- apps/site/.storybook/preview.tsx | 7 +- apps/site/components/withChangelogModal.tsx | 2 +- .../components/withDownloadCategories.tsx | 1 + apps/site/eslint.config.js | 146 +++ apps/site/layouts/Download.tsx | 1 + apps/site/package.json | 18 +- apps/site/turbo.json | 3 +- apps/site/util/hexToRGBA.ts | 2 +- package-lock.json | 886 ++++++++++++++++-- 15 files changed, 1000 insertions(+), 190 deletions(-) delete mode 100644 apps/site/.eslintignore delete mode 100644 apps/site/.eslintrc.json create mode 100644 apps/site/eslint.config.js diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index f8cc521f1a236..8caf0fcdfc051 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -82,7 +82,6 @@ jobs: .turbo/cache node_modules/.cache .eslintmdcache - .eslintjscache .stylelintcache .prettiercache # We want to restore Turborepo Cache and ESlint and Prettier Cache @@ -136,7 +135,6 @@ jobs: .turbo/cache node_modules/.cache .eslintmdcache - .eslintjscache .stylelintcache .prettiercache key: cache-lint-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.turbo/cache/**') }} diff --git a/.gitignore b/.gitignore index aef8ec50a2dbe..e2e87fa8cc1b3 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,6 @@ build-storybook.log cache # Cache Files -.eslintjscache .eslintmdcache .stylelintcache .prettiercache diff --git a/.prettierignore b/.prettierignore index 513b005d5c368..401abea059a92 100644 --- a/.prettierignore +++ b/.prettierignore @@ -26,7 +26,6 @@ build-storybook.log cache # Cache Files -.eslintjscache .eslintmdcache .stylelintcache .prettiercache diff --git a/apps/site/.eslintignore b/apps/site/.eslintignore deleted file mode 100644 index 11fbaa70596e8..0000000000000 --- a/apps/site/.eslintignore +++ /dev/null @@ -1,18 +0,0 @@ -# Node.js -node_modules - -# Next.js & Vercel Directories -.next -.turbo -.swc -build - -# We don't want to lint/prettify the Coverage Results -coverage -junit.xml - -# We shouldn't lint statically generated Storybook files -storybook-static - -# This file naturally might break conventional rules -global.d.ts diff --git a/apps/site/.eslintrc.json b/apps/site/.eslintrc.json deleted file mode 100644 index 49124878b6110..0000000000000 --- a/apps/site/.eslintrc.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "extends": "prettier", - "ignorePatterns": ["storybook-static/**"], - "overrides": [ - { - "files": ["public/**/*.js"], - "env": { "browser": true } - }, - { - "files": ["components/**/*.stories.tsx"], - "extends": "plugin:storybook/recommended" - }, - { - "files": ["**/{__tests__,__mocks__}/*.mjs"], - "env": { "jest": true } - }, - { - "files": ["**/*.{js,mjs,ts,tsx,mdx}"], - "env": { "es6": true, "node": true }, - "plugins": ["import"], - "extends": ["eslint:recommended", "next", "next/core-web-vitals"], - "rules": { - "import/namespace": "off", - "import/order": [ - "error", - { - "groups": [ - "builtin", - "external", - "internal", - ["sibling", "parent"], - "index", - "unknown" - ], - "newlines-between": "always", - "alphabetize": { - "order": "asc", - "caseInsensitive": true - } - } - ] - } - }, - { - "files": ["**/*.ts?(x)"], - "plugins": ["@typescript-eslint", "no-relative-import-paths"], - "extends": [ - "plugin:@typescript-eslint/recommended", - "plugin:import/recommended", - "plugin:import/typescript" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": true, - "tsconfigRootDir": "." - }, - "rules": { - "@typescript-eslint/consistent-type-imports": "error", - "@typescript-eslint/array-type": ["error", { "default": "generic" }], - "no-relative-import-paths/no-relative-import-paths": [ - "warn", - { "allowSameFolder": true, "prefix": "@" } - ] - } - }, - { - "files": ["**/*.md?(x)"], - "extends": "plugin:mdx/recommended", - "rules": { - "react/jsx-no-undef": "off", - "@next/next/no-img-element": "off" - } - }, - { - "files": ["**/*.{mdx,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" - } - ] - } - } - ] -} diff --git a/apps/site/.storybook/main.ts b/apps/site/.storybook/main.ts index 4247bcec94030..ec7ca5c3fd5fe 100644 --- a/apps/site/.storybook/main.ts +++ b/apps/site/.storybook/main.ts @@ -1,5 +1,5 @@ -import classNames from 'classnames'; import type { StorybookConfig } from '@storybook/nextjs'; +import classNames from 'classnames'; const rootClasses = classNames( // note: this is hard-coded sadly as next/font can only be loaded within next.js context diff --git a/apps/site/.storybook/preview.tsx b/apps/site/.storybook/preview.tsx index 9ede2e3a49e1a..7bd9698f2c00b 100644 --- a/apps/site/.storybook/preview.tsx +++ b/apps/site/.storybook/preview.tsx @@ -1,11 +1,10 @@ -import { NextIntlClientProvider } from 'next-intl'; - import { withThemeByDataAttribute } from '@storybook/addon-themes'; -import { NotificationProvider } from '@/providers/notificationProvider'; -import { STORYBOOK_MODES, STORYBOOK_SIZES } from '@/.storybook/constants'; import type { Preview, ReactRenderer } from '@storybook/react'; +import { NextIntlClientProvider } from 'next-intl'; +import { STORYBOOK_MODES, STORYBOOK_SIZES } from '@/.storybook/constants'; import englishLocale from '@/i18n/locales/en.json'; +import { NotificationProvider } from '@/providers/notificationProvider'; import '../next.fonts'; import '../styles/index.css'; diff --git a/apps/site/components/withChangelogModal.tsx b/apps/site/components/withChangelogModal.tsx index 8c6700bdbbd28..59b2d1f5b5988 100644 --- a/apps/site/components/withChangelogModal.tsx +++ b/apps/site/components/withChangelogModal.tsx @@ -62,7 +62,7 @@ const WithChangelogModal: FC = ({ } ); } - } catch (_) { + } catch { throw new Error(`Failed to fetch changelog for, ${versionWithPrefix}`); } }; diff --git a/apps/site/components/withDownloadCategories.tsx b/apps/site/components/withDownloadCategories.tsx index 4f85137d7e9f8..07ad284458e52 100644 --- a/apps/site/components/withDownloadCategories.tsx +++ b/apps/site/components/withDownloadCategories.tsx @@ -13,6 +13,7 @@ const WithDownloadCategories: FC = async ({ children }) => { const t = await getTranslations(); const releases = await getReleaseData(); + // eslint-disable-next-line react-hooks/rules-of-hooks const { pathname } = useClientContext(); const { page, category, subCategory } = getDownloadCategory(pathname); diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js new file mode 100644 index 0000000000000..8372ccbb6142e --- /dev/null +++ b/apps/site/eslint.config.js @@ -0,0 +1,146 @@ +import { fixupPluginRules } from '@eslint/compat'; +import { FlatCompat } from '@eslint/eslintrc'; +import js from '@eslint/js'; +import importX from 'eslint-plugin-import-x'; +import * as mdx from 'eslint-plugin-mdx'; +import noRelativeImportPaths from 'eslint-plugin-no-relative-import-paths'; +import react from 'eslint-plugin-react'; +import storybook from 'eslint-plugin-storybook'; +import tseslint from 'typescript-eslint'; + +const compat = new FlatCompat(); +const pluginToPatch = '@next/next'; + +const compatConfig = compat + .config({ + extends: [ + // https://github.com/vercel/next.js/discussions/49337 + 'plugin:@next/eslint-plugin-next/core-web-vitals', + + // https://github.com/facebook/react/issues/28313 + 'plugin:react-hooks/recommended', + ], + }) + .map(entry => { + if (Object.hasOwn(entry.plugins, pluginToPatch)) { + entry.plugins[pluginToPatch] = fixupPluginRules( + entry.plugins[pluginToPatch] + ); + } + + return entry; + }); + +export default tseslint.config( + { + ignores: [ + '.next', + '.swc', + '.turbo', + 'build', + 'coverage', + 'global.d.ts', + 'junit.xml', + 'storybook-static/**', + ], + }, + { + extends: [ + js.configs.recommended, + importX.flatConfigs.recommended, + importX.flatConfigs.typescript, + react.configs.flat['jsx-runtime'], + ...tseslint.configs.recommended, + ...compatConfig, + ], + files: ['**/*.{js,md,mdx,mjs,ts,tsx}'], + plugins: { + 'no-relative-import-paths': noRelativeImportPaths, + }, + rules: { + '@typescript-eslint/array-type': ['error', { default: 'generic' }], + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/no-require-imports': 'off', + 'import-x/namespace': 'off', + 'import-x/no-named-as-default-member': 'off', + 'import-x/no-unresolved': 'off', + 'import-x/order': [ + 'error', + { + groups: [ + 'builtin', + 'external', + 'internal', + ['sibling', 'parent'], + 'index', + 'unknown', + ], + 'newlines-between': 'always', + alphabetize: { + order: 'asc', + caseInsensitive: true, + }, + }, + ], + 'no-relative-import-paths/no-relative-import-paths': [ + 'warn', + { allowSameFolder: true, prefix: '@' }, + ], + }, + settings: { + react: { + version: 'detect', + }, + }, + }, + { + files: ['**/*.{md,mdx}'], + extends: [mdx.configs.flat], + rules: { + 'no-irregular-whitespace': 'off', + '@next/next/no-img-element': 'off', + + // https://github.com/typescript-eslint/typescript-eslint/issues/9860 + '@typescript-eslint/consistent-type-imports': 'off', + }, + }, + { + files: ['**/*.{mdx,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/apps/site/layouts/Download.tsx b/apps/site/layouts/Download.tsx index c8de36b3ff4c5..db6c83ad7fc1b 100644 --- a/apps/site/layouts/Download.tsx +++ b/apps/site/layouts/Download.tsx @@ -10,6 +10,7 @@ import styles from './layouts.module.css'; const DownloadLayout: FC = async ({ children }) => { const { frontmatter: { title, subtitle }, + // eslint-disable-next-line react-hooks/rules-of-hooks } = useClientContext(); return ( diff --git a/apps/site/package.json b/apps/site/package.json index e46fc05a02203..91d124d74c1a5 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -23,7 +23,7 @@ "start": "cross-env NODE_NO_WARNINGS=1 next start", "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true npm run build", "check-types": "tsc --noEmit", - "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\" --cache --cache-strategy=content --cache-location=.eslintjscache", + "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", "lint:md": "eslint \"**/*.md?(x)\" --cache --cache-strategy=content --cache-location=.eslintmdcache", "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", "lint": "turbo run lint:md lint:js lint:css", @@ -89,6 +89,8 @@ "vfile-matter": "~5.0.0" }, "devDependencies": { + "@eslint/compat": "^1.1.1", + "@next/eslint-plugin-next": "^14.2.8", "@storybook/addon-controls": "~8.2.7", "@storybook/addon-interactions": "~8.2.7", "@storybook/addon-themes": "~8.2.7", @@ -101,14 +103,16 @@ "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", - "@typescript-eslint/eslint-plugin": "7.11.0", - "@typescript-eslint/parser": "7.11.0", - "eslint": "8.57.0", + "eslint": "^9.9.1", "eslint-config-next": "~14.2.3", "eslint-config-prettier": "9.1.0", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.2.1", "eslint-plugin-mdx": "3.1.5", "eslint-plugin-no-relative-import-paths": "^1.5.3", - "eslint-plugin-storybook": "0.8.0", + "eslint-plugin-react": "^7.35.2", + "eslint-plugin-react-hooks": "5.1.0-rc-4c58fce7-20240904", + "eslint-plugin-storybook": "0.9.0--canary.156.da7873a.0", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", @@ -120,6 +124,10 @@ "stylelint-config-standard": "36.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.0", + "typescript-eslint": "^8.4.0", "user-agent-data-types": "0.4.2" + }, + "overrides": { + "eslint": "$eslint" } } diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 327d89ece90da..47ad453600693 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -89,8 +89,7 @@ "{next-data,scripts,i18n}/**/*.{mjs,json}", "{.storybook,public}/**/*.{ts,js,json}", "*.{json,ts,tsx}" - ], - "outputs": [".eslintjscache"] + ] }, "lint:md": { "inputs": ["{app,pages}/**/*.{md,mdx}", "*.{md,mdx}"], diff --git a/apps/site/util/hexToRGBA.ts b/apps/site/util/hexToRGBA.ts index e4d8e7f8ae781..fcafe312303f4 100644 --- a/apps/site/util/hexToRGBA.ts +++ b/apps/site/util/hexToRGBA.ts @@ -1,4 +1,4 @@ -export const hexToRGBA = (hex: string = '', alpha = 0.9) => { +export const hexToRGBA = (hex = '', alpha = 0.9) => { hex = hex.replace(/^#/, ''); const bigint = parseInt(hex, 16); diff --git a/package-lock.json b/package-lock.json index ec2bdc893c3b4..1ef0ec864d824 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,6 +82,8 @@ "vfile-matter": "~5.0.0" }, "devDependencies": { + "@eslint/compat": "^1.1.1", + "@next/eslint-plugin-next": "^14.2.8", "@storybook/addon-controls": "~8.2.7", "@storybook/addon-interactions": "~8.2.7", "@storybook/addon-themes": "~8.2.7", @@ -94,14 +96,16 @@ "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", - "@typescript-eslint/eslint-plugin": "7.11.0", - "@typescript-eslint/parser": "7.11.0", - "eslint": "8.57.0", + "eslint": "^9.9.1", "eslint-config-next": "~14.2.3", "eslint-config-prettier": "9.1.0", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.2.1", "eslint-plugin-mdx": "3.1.5", "eslint-plugin-no-relative-import-paths": "^1.5.3", - "eslint-plugin-storybook": "0.8.0", + "eslint-plugin-react": "^7.35.2", + "eslint-plugin-react-hooks": "5.1.0-rc-4c58fce7-20240904", + "eslint-plugin-storybook": "0.9.0--canary.156.da7873a.0", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", @@ -113,12 +117,160 @@ "stylelint-config-standard": "36.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.0", + "typescript-eslint": "^8.4.0", "user-agent-data-types": "0.4.2" }, "engines": { "node": "v20" } }, + "apps/site/node_modules/@eslint/eslintrc": { + "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, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "apps/site/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "apps/site/node_modules/@eslint/js": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "apps/site/node_modules/@next/eslint-plugin-next": { + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.8.tgz", + "integrity": "sha512-ue5vcq9Fjk3asACRDrzYjcGMEN7pMMDQ5zUD+FenkqvlPCVUD1x7PxBNOLfPYDZOrk/Vnl4GHmjj2mZDqPW8TQ==", + "dev": true, + "dependencies": { + "glob": "10.3.10" + } + }, + "apps/site/node_modules/@next/eslint-plugin-next/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "apps/site/node_modules/@next/eslint-plugin-next/node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "apps/site/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "apps/site/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, + "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" + } + }, + "apps/site/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "apps/site/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "apps/site/node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -133,6 +285,159 @@ } } }, + "apps/site/node_modules/eslint": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.1", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "apps/site/node_modules/eslint-plugin-react-hooks": { + "version": "5.1.0-rc-4c58fce7-20240904", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-4c58fce7-20240904.tgz", + "integrity": "sha512-PDoulHvydL8q8QhhyQx9y7c0Ot79D/o53+/6GG/9stROV2iBteNl/n8WNxwdcVtaSrFJ2BXd/M1U2fyjhelUzA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "apps/site/node_modules/eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "apps/site/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "apps/site/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "apps/site/node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "apps/site/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, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "apps/site/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, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, "apps/site/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -153,6 +458,24 @@ "url": "https://github.com/sponsors/isaacs" } }, + "apps/site/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, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "apps/site/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 + }, "node_modules/@adobe/css-tools": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", @@ -3130,12 +3453,58 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/compat": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.1.1.tgz", + "integrity": "sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "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, + "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/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -3160,6 +3529,7 @@ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3177,6 +3547,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3188,6 +3559,7 @@ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -3203,7 +3575,8 @@ "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", + "peer": true }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", @@ -3211,6 +3584,7 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3224,6 +3598,7 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=10" }, @@ -3237,10 +3612,20 @@ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -3348,6 +3733,7 @@ "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -3363,6 +3749,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3374,6 +3761,7 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3401,7 +3789,21 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.5", @@ -4746,6 +5148,15 @@ "integrity": "sha512-IjwkVqA2SlH8XweoAw7EJkeyPGk7gW9imlvhpywrKiPCLP1H0meG/blNAF5X38pirsmvhxPe/BCyywT7Exwuow==", "license": "MIT" }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, "node_modules/@npmcli/config": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.3.4.tgz", @@ -6459,6 +6870,12 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "node_modules/@rushstack/eslint-patch": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", @@ -8523,6 +8940,8 @@ "integrity": "sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "7.11.0", @@ -8557,6 +8976,8 @@ "integrity": "sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==", "dev": true, "license": "BSD-2-Clause", + "optional": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "7.11.0", "@typescript-eslint/types": "7.11.0", @@ -8586,6 +9007,8 @@ "integrity": "sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@typescript-eslint/types": "7.11.0", "@typescript-eslint/visitor-keys": "7.11.0" @@ -8604,6 +9027,8 @@ "integrity": "sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@typescript-eslint/typescript-estree": "7.11.0", "@typescript-eslint/utils": "7.11.0", @@ -8632,6 +9057,8 @@ "integrity": "sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -8646,6 +9073,8 @@ "integrity": "sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==", "dev": true, "license": "BSD-2-Clause", + "optional": true, + "peer": true, "dependencies": { "@typescript-eslint/types": "7.11.0", "@typescript-eslint/visitor-keys": "7.11.0", @@ -8675,6 +9104,8 @@ "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "7.11.0", @@ -8698,6 +9129,8 @@ "integrity": "sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@typescript-eslint/types": "7.11.0", "eslint-visitor-keys": "^3.4.3" @@ -13026,6 +13459,7 @@ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -13263,18 +13697,18 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", "dev": true, - "license": "ISC", "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", "is-glob": "^4.0.3" }, "engines": { @@ -13285,7 +13719,16 @@ }, "peerDependencies": { "eslint": "*", - "eslint-plugin-import": "*" + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, "node_modules/eslint-mdx": { @@ -13335,11 +13778,10 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -13363,27 +13805,27 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", "tsconfig-paths": "^3.15.0" }, @@ -13394,6 +13836,127 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, + "node_modules/eslint-plugin-import-x": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz", + "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^8.1.0", + "debug": "^4.3.4", + "doctrine": "^3.0.0", + "eslint-import-resolver-node": "^0.3.9", + "get-tsconfig": "^4.7.3", + "is-glob": "^4.0.3", + "minimatch": "^9.0.3", + "semver": "^7.6.3", + "stable-hash": "^0.0.4", + "tslib": "^2.6.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/scope-manager": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/types": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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/eslint-plugin-import-x/node_modules/@typescript-eslint/utils": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.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/eslint-plugin-import-x/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.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/eslint-plugin-import/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -13758,11 +14321,10 @@ "license": "ISC" }, "node_modules/eslint-plugin-react": { - "version": "7.35.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", - "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "version": "7.35.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", + "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -13795,7 +14357,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -13869,15 +14430,13 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.8.0.tgz", - "integrity": "sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==", + "version": "0.9.0--canary.156.da7873a.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.9.0--canary.156.da7873a.0.tgz", + "integrity": "sha512-3b6hQMRfKWwkNB0koK0y9Boi+GYAt8vz+3tzU5JHylyAZh3Vg5TgvxM6IRhKixEY4OlQhsJPhqMzP0rT9fP5mA==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "^0.0.1", "@typescript-eslint/utils": "^5.62.0", - "requireindex": "^1.2.0", "ts-dedent": "^2.2.0" }, "engines": { @@ -14032,6 +14591,7 @@ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -14062,6 +14622,7 @@ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14079,6 +14640,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14090,6 +14652,7 @@ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14107,6 +14670,7 @@ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -14122,7 +14686,8 @@ "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", + "peer": true }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", @@ -14130,6 +14695,7 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14143,6 +14709,7 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=10" }, @@ -14693,6 +15260,7 @@ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -16646,6 +17214,15 @@ "node": ">=4" } }, + "node_modules/is-bun-module": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.1.0.tgz", + "integrity": "sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -26814,16 +27391,6 @@ "node": ">=8.6.0" } }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.5" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -27695,6 +28262,12 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "license": "BSD-3-Clause" }, + "node_modules/stable-hash": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", + "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", + "dev": true + }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -29688,6 +30261,211 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", + "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.4.0", + "@typescript-eslint/parser": "8.4.0", + "@typescript-eslint/utils": "8.4.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/eslint-plugin": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", + "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/type-utils": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", + "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", + "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/utils": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "dev": true, + "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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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/utils": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.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/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.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/ufo": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", From d8f851da9dbf40fe41a18561391531e5eabe1048 Mon Sep 17 00:00:00 2001 From: Rakesh Kumar Singh <52422856+rakeshkumar1019@users.noreply.github.com> Date: Tue, 10 Sep 2024 07:17:06 +0530 Subject: [PATCH 0014/1385] fix: footer missing on learn & about layout (#6949) --- apps/site/layouts/About.tsx | 3 +++ apps/site/layouts/Learn.tsx | 3 +++ apps/site/layouts/layouts.module.css | 4 +++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/site/layouts/About.tsx b/apps/site/layouts/About.tsx index ef2258cab5999..5599ecbccfda3 100644 --- a/apps/site/layouts/About.tsx +++ b/apps/site/layouts/About.tsx @@ -1,6 +1,7 @@ import type { FC, PropsWithChildren } from 'react'; import WithBreadcrumbs from '@/components/withBreadcrumbs'; +import WithFooter from '@/components/withFooter'; import WithMetaBar from '@/components/withMetaBar'; import WithNavBar from '@/components/withNavBar'; import WithSidebar from '@/components/withSidebar'; @@ -21,6 +22,8 @@ const AboutLayout: FC = ({ children }) => ( + + ); diff --git a/apps/site/layouts/Learn.tsx b/apps/site/layouts/Learn.tsx index 6b4f6763f1925..a42e6ae5a221c 100644 --- a/apps/site/layouts/Learn.tsx +++ b/apps/site/layouts/Learn.tsx @@ -1,6 +1,7 @@ import type { FC, PropsWithChildren } from 'react'; import WithBreadcrumbs from '@/components/withBreadcrumbs'; +import WithFooter from '@/components/withFooter'; import WithMetaBar from '@/components/withMetaBar'; import WithNavBar from '@/components/withNavBar'; import WithProgressionSidebar from '@/components/withProgressionSidebar'; @@ -26,6 +27,8 @@ const LearnLayout: FC = ({ children }) => ( + + ); diff --git a/apps/site/layouts/layouts.module.css b/apps/site/layouts/layouts.module.css index e4a0353333f03..2f07379ef9723 100644 --- a/apps/site/layouts/layouts.module.css +++ b/apps/site/layouts/layouts.module.css @@ -1,6 +1,8 @@ .baseLayout { @apply grid - size-full + h-max + min-h-full + w-full grid-cols-[1fr] grid-rows-[auto_1fr_auto]; } From 150077f29b91c7f5d7322f206d34c27f9628eec7 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Thu, 12 Sep 2024 12:15:10 +0200 Subject: [PATCH 0015/1385] chore(get-Involved): update and add new ressources (#6857) * chore(get-Involved): update and add new ressources * update link Co-authored-by: Thomas.G Signed-off-by: Augustin Mauroy * type: use `JavaScript` instead of `javascript` * update from review * improve "Learning Materials" * Update apps/site/pages/en/about/get-involved/index.md Co-authored-by: Brian Muenzenmeyer Signed-off-by: Augustin Mauroy --------- Signed-off-by: Augustin Mauroy Co-authored-by: Thomas.G Co-authored-by: Brian Muenzenmeyer --- .../site/pages/en/about/get-involved/index.md | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/apps/site/pages/en/about/get-involved/index.md b/apps/site/pages/en/about/get-involved/index.md index 858bfc61901b2..bcbd7851b6275 100644 --- a/apps/site/pages/en/about/get-involved/index.md +++ b/apps/site/pages/en/about/get-involved/index.md @@ -5,22 +5,33 @@ layout: about # Get Involved +If you are interested in getting involved with the Node.js community, there are many ways to do so. The Node.js project is a large and diverse community, and there are many ways to contribute, beyond just writing code. + ## Community Discussion -- The [GitHub issues list](https://github.com/nodejs/node/issues) is the place for discussion of Node.js core features. -- For real-time chat about Node.js development use one of the platforms below - - For IRC, go to `irc.libera.chat` in the `#node.js` channel with an [IRC client](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) or connect in your web browser to the channel using [a web client](https://kiwiirc.com/nextclient/) - - For Slack, there are two options: - - The [OpenJSF Slack](https://slack-invite.openjsf.org/) is a Foundation run Slack with several Node.js channels (channels prefixed by `#nodejs-` are related to the project). - - [Node Slackers](https://www.nodeslackers.com/) is a Node.js-focused Slack community. +- The [GitHub issues list](https://github.com/nodejs/node/issues) is the place for discussion of Node.js core features and if you have questions about Node.js, you can use the [github discussions](https://github.com/orgs/nodejs/discussions). +- The [`nodejs/help`](https://github.com/nodjes/help/issues) repository is the place to ask questions about Node.js. - The official Node.js Twitter account is [nodejs](https://twitter.com/nodejs). - The [Node.js project calendar](https://nodejs.org/calendar) with all public team meetings. -## Learning +## Learning Materials + +If you are looking to learn more about Node.js, there are many resources available to you. - [Official Learn section](https://nodejs.org/en/learn/) of the Node.js website. - [Official API reference documentation](https://nodejs.org/api/). - [NodeSchool.io](https://nodeschool.io/) will teach you Node.js concepts via interactive command-line games. - [Stack Overflow Node.js tag](https://stackoverflow.com/questions/tagged/node.js) collects new information every day. - [The DEV Community Node.js tag](https://dev.to/t/node) is a place to share Node.js projects, articles and tutorials as well as start discussions and ask for feedback on Node.js-related topics. Developers of all skill-levels are welcome to take part. +- [Reddit Node.js community](https://www.reddit.com/r/node) is a place to share Node.js projects, articles and tutorials as well as start discussions and ask for feedback on Node.js-related topics. Developers of all skill-levels are welcome to take part. + +## Unofficial Discussion Areas + +If you are looking for a more informal place to discuss Node.js, there are several unofficial discussion areas. +Please note that these are not officially endorsed by the Node.js project. Also follow their respective code of conduct/rules. + +- [Node Slackers](https://www.nodeslackers.com/) is a Node.js-focused Slack community. +- [OpenJSF Slack](https://slack-invite.openjsf.org/) is a Slack workspace for the OpenJS Foundation. There are several channels related to Node.js. _(channels prefixed by `#nodejs-` are related to the project)_ - [Nodeiflux](https://discordapp.com/invite/vUsrbjd) is a friendly community of Node.js backend developers supporting each other on Discord. +- [ES Community](https://discord.gg/zJsuc6vvhn) is a Discord community for French-speaking JavaScript developers. +- `irc.libera.chat` in the `#node.js` channel with an [IRC client](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) or connect in your web browser to the channel using [a web client](https://kiwiirc.com/nextclient/). From fb16d75cde9641aca680d0ca6a1bfc45cc4e48da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 22:34:46 -0500 Subject: [PATCH 0016/1385] meta: bump the lint group across 1 directory with 5 updates (#7033) Bumps the lint group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [eslint](https://github.com/eslint/eslint) | `9.9.1` | `9.10.0` | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `14.2.6` | `14.2.8` | | [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) | `5.1.0-rc-4c58fce7-20240904` | `5.1.0-rc.0` | | [stylelint](https://github.com/stylelint/stylelint) | `16.6.1` | `16.9.0` | | [stylelint-config-standard](https://github.com/stylelint/stylelint-config-standard) | `36.0.0` | `36.0.1` | Updates `eslint` from 9.9.1 to 9.10.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.9.1...v9.10.0) Updates `eslint-config-next` from 14.2.6 to 14.2.8 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v14.2.8/packages/eslint-config-next) Updates `eslint-plugin-react-hooks` from 5.1.0-rc-4c58fce7-20240904 to 5.1.0-rc.0 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks) Updates `stylelint` from 16.6.1 to 16.9.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.6.1...16.9.0) Updates `stylelint-config-standard` from 36.0.0 to 36.0.1 - [Release notes](https://github.com/stylelint/stylelint-config-standard/releases) - [Changelog](https://github.com/stylelint/stylelint-config-standard/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint-config-standard/compare/36.0.0...36.0.1) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint-config-next dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint - dependency-name: eslint-plugin-react-hooks dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: stylelint-config-standard dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint ... 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 | 2009 +++++++++++++++++++--------------------- 2 files changed, 959 insertions(+), 1060 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 91d124d74c1a5..0628f894ddfd4 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -103,15 +103,15 @@ "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", - "eslint": "^9.9.1", - "eslint-config-next": "~14.2.3", + "eslint": "^9.10.0", + "eslint-config-next": "~14.2.8", "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import-x": "^4.2.1", "eslint-plugin-mdx": "3.1.5", "eslint-plugin-no-relative-import-paths": "^1.5.3", "eslint-plugin-react": "^7.35.2", - "eslint-plugin-react-hooks": "5.1.0-rc-4c58fce7-20240904", + "eslint-plugin-react-hooks": "5.1.0-rc.0", "eslint-plugin-storybook": "0.9.0--canary.156.da7873a.0", "handlebars": "4.7.8", "jest": "29.7.0", @@ -120,8 +120,8 @@ "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", "storybook": "~8.2.7", - "stylelint": "16.6.1", - "stylelint-config-standard": "36.0.0", + "stylelint": "16.9.0", + "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.0", "typescript-eslint": "^8.4.0", diff --git a/package-lock.json b/package-lock.json index 1ef0ec864d824..d70c320f2d1ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,15 +96,15 @@ "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", - "eslint": "^9.9.1", - "eslint-config-next": "~14.2.3", + "eslint": "^9.10.0", + "eslint-config-next": "~14.2.8", "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import-x": "^4.2.1", "eslint-plugin-mdx": "3.1.5", "eslint-plugin-no-relative-import-paths": "^1.5.3", "eslint-plugin-react": "^7.35.2", - "eslint-plugin-react-hooks": "5.1.0-rc-4c58fce7-20240904", + "eslint-plugin-react-hooks": "5.1.0-rc.0", "eslint-plugin-storybook": "0.9.0--canary.156.da7873a.0", "handlebars": "4.7.8", "jest": "29.7.0", @@ -113,8 +113,8 @@ "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", "storybook": "~8.2.7", - "stylelint": "16.6.1", - "stylelint-config-standard": "36.0.0", + "stylelint": "16.9.0", + "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.0", "typescript-eslint": "^8.4.0", @@ -124,99 +124,6 @@ "node": "v20" } }, - "apps/site/node_modules/@eslint/eslintrc": { - "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, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "apps/site/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "apps/site/node_modules/@eslint/js": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", - "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "apps/site/node_modules/@next/eslint-plugin-next": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.8.tgz", - "integrity": "sha512-ue5vcq9Fjk3asACRDrzYjcGMEN7pMMDQ5zUD+FenkqvlPCVUD1x7PxBNOLfPYDZOrk/Vnl4GHmjj2mZDqPW8TQ==", - "dev": true, - "dependencies": { - "glob": "10.3.10" - } - }, - "apps/site/node_modules/@next/eslint-plugin-next/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "apps/site/node_modules/@next/eslint-plugin-next/node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "apps/site/node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", @@ -286,16 +193,17 @@ } }, "apps/site/node_modules/eslint": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", - "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.18.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.1", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -318,7 +226,6 @@ "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", @@ -356,22 +263,6 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "apps/site/node_modules/eslint-scope": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", - "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "apps/site/node_modules/eslint-visitor-keys": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", @@ -413,31 +304,6 @@ "url": "https://opencollective.com/eslint" } }, - "apps/site/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, - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "apps/site/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, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, "apps/site/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -458,18 +324,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "apps/site/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, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "apps/site/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2925,9 +2779,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", + "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", "dev": true, "funding": [ { @@ -2939,18 +2793,17 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.4.1" + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", + "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", "dev": true, "funding": [ { @@ -2962,15 +2815,14 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", + "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==", "dev": true, "funding": [ { @@ -2982,19 +2834,18 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@csstools/selector-specificity": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", - "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "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": [ { @@ -3006,12 +2857,11 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" } }, "node_modules/@dual-bundle/import-meta-resolve": { @@ -3499,17 +3349,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "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", - "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -3517,19 +3365,29 @@ "strip-json-comments": "^3.1.1" }, "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" } }, + "node_modules/@eslint/eslintrc/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/@eslint/eslintrc/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", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3546,25 +3404,47 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "type-fest": "^0.20.2" + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3574,17 +3454,13 @@ "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", - "peer": true + "dev": true }, "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", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3592,29 +3468,13 @@ "node": "*" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", "dev": true, - "license": "MIT", - "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/object-schema": { @@ -3626,6 +3486,18 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", + "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", + "dev": true, + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -3732,7 +3604,6 @@ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "deprecated": "Use @eslint/config-array instead", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", @@ -3748,7 +3619,6 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "balanced-match": "^1.0.0", @@ -3760,7 +3630,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -3789,7 +3658,6 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "BSD-3-Clause", "peer": true }, "node_modules/@humanwhocodes/retry": { @@ -4893,11 +4761,10 @@ "integrity": "sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==" }, "node_modules/@next/eslint-plugin-next": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.6.tgz", - "integrity": "sha512-d3+p4AjIYmhqzYHhhmkRYYN6ZU35TwZAKX08xKRfnHkz72KhWL2kxMFsDptpZs5e8bBGdepn7vn1+9DaF8iX+A==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.8.tgz", + "integrity": "sha512-ue5vcq9Fjk3asACRDrzYjcGMEN7pMMDQ5zUD+FenkqvlPCVUD1x7PxBNOLfPYDZOrk/Vnl4GHmjj2mZDqPW8TQ==", "dev": true, - "license": "MIT", "dependencies": { "glob": "10.3.10" } @@ -4907,7 +4774,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -4930,7 +4796,6 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -8675,8 +8540,7 @@ "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/keygrip": { "version": "1.0.6", @@ -8935,26 +8799,25 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.11.0.tgz", - "integrity": "sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz", + "integrity": "sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.11.0", - "@typescript-eslint/type-utils": "7.11.0", - "@typescript-eslint/utils": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/type-utils": "7.2.0", + "@typescript-eslint/utils": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "ignore": "^5.2.4", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -8970,73 +8833,67 @@ } } }, - "node_modules/@typescript-eslint/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.11.0", - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/typescript-estree": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0", - "debug": "^4.3.4" + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.11.0.tgz", - "integrity": "sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0" + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.11.0.tgz", - "integrity": "sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==", + "node_modules/@typescript-eslint/parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.11.0", - "@typescript-eslint/utils": "7.11.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -9051,42 +8908,53 @@ } } }, - "node_modules/@typescript-eslint/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.11.0.tgz", - "integrity": "sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.11.0.tgz", - "integrity": "sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, "dependencies": { - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -9098,132 +8966,408 @@ } } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", - "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.11.0", - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/typescript-estree": "7.11.0" + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.11.0.tgz", - "integrity": "sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==", + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@typescript-eslint/types": "7.11.0", - "eslint-visitor-keys": "^3.4.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "license": "ISC" - }, - "node_modules/@vcarl/remark-headings": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@vcarl/remark-headings/-/remark-headings-0.1.0.tgz", - "integrity": "sha512-ffQxJUcapJ9Bk+fiGN49YJ9RaYMibrSTSezB1Fcrtu+0YSZxA3bsaLlIv1u/4sjPIeW/BKrs4xtMT3l3P9Ba5Q==", - "license": "MIT", - "dependencies": { - "mdast-util-to-string": "^3.1.0", - "unist-util-visit": "^4.0.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@vcarl/remark-headings/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, "dependencies": { - "@types/unist": "^2.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", + "node_modules/@typescript-eslint/type-utils": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz", + "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==", + "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/utils": "7.2.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vercel/analytics": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.3.1.tgz", - "integrity": "sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==", - "license": "MPL-2.0", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "dev": true, "dependencies": { - "server-only": "^0.0.1" + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, - "peerDependencies": { - "next": ">= 13", - "react": "^18 || ^19" + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz", + "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "license": "ISC" + }, + "node_modules/@vcarl/remark-headings": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@vcarl/remark-headings/-/remark-headings-0.1.0.tgz", + "integrity": "sha512-ffQxJUcapJ9Bk+fiGN49YJ9RaYMibrSTSezB1Fcrtu+0YSZxA3bsaLlIv1u/4sjPIeW/BKrs4xtMT3l3P9Ba5Q==", + "license": "MIT", + "dependencies": { + "mdast-util-to-string": "^3.1.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/@vcarl/remark-headings/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/@vcarl/remark-headings/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@vercel/analytics": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.3.1.tgz", + "integrity": "sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==", + "license": "MPL-2.0", + "dependencies": { + "server-only": "^0.0.1" + }, + "peerDependencies": { + "next": ">= 13", + "react": "^18 || ^19" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { "optional": true } } @@ -10081,7 +10225,6 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10235,8 +10378,7 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/astral-regex": { "version": "2.0.0", @@ -10331,19 +10473,17 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", "dev": true, - "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "deep-equal": "^2.0.5" + "engines": { + "node": ">= 0.4" } }, "node_modules/babel-core": { @@ -11306,7 +11446,6 @@ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11317,7 +11456,6 @@ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -12408,8 +12546,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "license": "BSD-2-Clause" + "dev": true }, "node_modules/data-urls": { "version": "3.0.2", @@ -12542,7 +12679,6 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.5", @@ -13235,7 +13371,6 @@ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -13458,7 +13593,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -13511,14 +13645,14 @@ } }, "node_modules/eslint-config-next": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.6.tgz", - "integrity": "sha512-z0URA5LO6y8lS/YLN0EDW/C4LEkDODjJzA37dvLVdzCPzuewjzTe1os5g3XclZAZrQ8X8hPaSMQ2JuVWwMmrTA==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.8.tgz", + "integrity": "sha512-gRqxHkSuCrQro6xqXnmXphcq8rdiw7FI+nLXpWmIlp/AfUzHCgXNQE7mOK+oco+SRaJbhqCg/68uRln1qjkF+Q==", "dev": true, - "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "14.2.6", + "@next/eslint-plugin-next": "14.2.8", "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", @@ -13537,128 +13671,133 @@ } } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/parser": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", - "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "node_modules/eslint-config-next/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": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", - "debug": "^4.3.4" + "esutils": "^2.0.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/scope-manager": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", - "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "node_modules/eslint-config-next/node_modules/eslint-plugin-import": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", - "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "node_modules/eslint-config-next/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", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", - "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "node_modules/eslint-config-next/node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ms": "^2.1.1" + } + }, + "node_modules/eslint-config-next/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, + "dependencies": { + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "*" + } + }, + "node_modules/eslint-config-next/node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-config-next/node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", - "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "node_modules/eslint-config-next/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.2.0", - "eslint-visitor-keys": "^3.4.1" + "minimist": "^1.2.0" }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/eslint-config-next/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=4" } }, - "node_modules/eslint-config-next/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/eslint-config-next/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, "node_modules/eslint-config-prettier": { @@ -13784,347 +13923,97 @@ "dev": true, "dependencies": { "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", - "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", - "dev": true, - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.9.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import-x": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz", - "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "^8.1.0", - "debug": "^4.3.4", - "doctrine": "^3.0.0", - "eslint-import-resolver-node": "^0.3.9", - "get-tsconfig": "^4.7.3", - "is-glob": "^4.0.3", - "minimatch": "^9.0.3", - "semver": "^7.6.3", - "stable-hash": "^0.0.4", - "tslib": "^2.6.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/scope-manager": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", - "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.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/eslint-plugin-import-x/node_modules/@typescript-eslint/utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", - "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.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/eslint-plugin-import-x/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.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/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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "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", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "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", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-import/node_modules/strip-bom": { - "version": "3.0.0", - "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" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-jest": { - "version": "27.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", - "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", + "node_modules/eslint-plugin-import-x": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz", + "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^5.10.0" + "@typescript-eslint/utils": "^8.1.0", + "debug": "^4.3.4", + "doctrine": "^3.0.0", + "eslint-import-resolver-node": "^0.3.9", + "get-tsconfig": "^4.7.3", + "is-glob": "^4.0.3", + "minimatch": "^9.0.3", + "semver": "^7.6.3", + "stable-hash": "^0.0.4", + "tslib": "^2.6.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", - "eslint": "^7.0.0 || ^8.0.0", - "jest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/scope-manager": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/types": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", "dev": true, - "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -14136,88 +14025,57 @@ } } }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/utils": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", "dev": true, - "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "8.4.0", + "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": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-plugin-jest/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-plugin-jest/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", - "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", + "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", "dev": true, - "license": "MIT", "dependencies": { "aria-query": "~5.1.3", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", - "axe-core": "^4.9.1", - "axobject-query": "~3.1.1", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "es-iterator-helpers": "^1.0.19", @@ -14233,7 +14091,7 @@ "node": ">=4.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { @@ -14241,7 +14099,6 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "deep-equal": "^2.0.5" } @@ -14251,7 +14108,6 @@ "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" @@ -14262,7 +14118,6 @@ "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" }, @@ -14270,22 +14125,6 @@ "node": "*" } }, - "node_modules/eslint-plugin-markdown": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", - "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^0.8.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/eslint-plugin-mdx": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz", @@ -14313,6 +14152,21 @@ "eslint": ">=8.0.0" } }, + "node_modules/eslint-plugin-mdx/node_modules/eslint-plugin-markdown": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", + "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/eslint-plugin-no-relative-import-paths": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/eslint-plugin-no-relative-import-paths/-/eslint-plugin-no-relative-import-paths-1.5.5.tgz", @@ -14352,18 +14206,6 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, "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", @@ -14435,85 +14277,25 @@ "integrity": "sha512-3b6hQMRfKWwkNB0koK0y9Boi+GYAt8vz+3tzU5JHylyAZh3Vg5TgvxM6IRhKixEY4OlQhsJPhqMzP0rT9fP5mA==", "dev": true, "dependencies": { - "@storybook/csf": "^0.0.1", - "@typescript-eslint/utils": "^5.62.0", - "ts-dedent": "^2.2.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "eslint": ">=6" - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", - "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@storybook/csf": "^0.0.1", + "@typescript-eslint/utils": "^5.62.0", + "ts-dedent": "^2.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 18" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": ">=6" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", + "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" } }, "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/utils": { @@ -14543,24 +14325,6 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/eslint-plugin-storybook/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -14586,18 +14350,16 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, - "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "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" @@ -14616,6 +14378,40 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -14664,12 +14460,41 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "peer": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, "node_modules/eslint/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "type-fest": "^0.20.2" @@ -14708,7 +14533,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "peer": true, "engines": { "node": ">=10" @@ -15255,17 +15079,28 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "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", - "peer": true, "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/file-entry-cache/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, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" } }, "node_modules/fill-range": { @@ -17070,7 +16905,6 @@ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17081,7 +16915,6 @@ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, - "license": "MIT", "dependencies": { "is-alphabetical": "^1.0.0", "is-decimal": "^1.0.0" @@ -17215,9 +17048,9 @@ } }, "node_modules/is-bun-module": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.1.0.tgz", - "integrity": "sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", "dev": true, "dependencies": { "semver": "^7.6.3" @@ -17288,7 +17121,6 @@ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17387,7 +17219,6 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -19336,25 +19167,22 @@ } }, "node_modules/known-css-properties": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", - "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", - "dev": true, - "license": "MIT" + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", + "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", + "dev": true }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true, - "license": "CC0-1.0" + "dev": true }, "node_modules/language-tags": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, - "license": "MIT", "dependencies": { "language-subtag-registry": "^0.3.20" }, @@ -20448,7 +20276,6 @@ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-to-string": "^2.0.0", @@ -20465,15 +20292,13 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -20484,7 +20309,6 @@ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, - "license": "MIT", "dependencies": { "@types/unist": "^2.0.2" }, @@ -21856,7 +21680,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "debug": "^4.0.0", "parse-entities": "^2.0.0" @@ -23561,7 +23384,6 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -23924,7 +23746,6 @@ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, - "license": "MIT", "dependencies": { "character-entities": "^1.0.0", "character-entities-legacy": "^1.0.0", @@ -23943,7 +23764,6 @@ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -28334,7 +28154,6 @@ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", "dev": true, - "license": "MIT", "dependencies": { "internal-slot": "^1.0.4" }, @@ -28636,7 +28455,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -28889,9 +28707,9 @@ } }, "node_modules/stylelint": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", - "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", + "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", "dev": true, "funding": [ { @@ -28903,19 +28721,18 @@ "url": "https://github.com/sponsors/stylelint" } ], - "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^2.6.3", - "@csstools/css-tokenizer": "^2.3.1", - "@csstools/media-query-list-parser": "^2.1.11", - "@csstools/selector-specificity": "^3.1.1", + "@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", "@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.2", "css-tree": "^2.3.1", - "debug": "^4.3.4", + "debug": "^4.3.6", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^9.0.0", @@ -28923,24 +28740,24 @@ "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^5.3.1", + "ignore": "^5.3.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.31.0", + "known-css-properties": "^0.34.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.7", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.38", - "postcss-resolve-nested-selector": "^0.1.1", + "postcss": "^8.4.41", + "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.1.0", + "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", "strip-ansi": "^7.1.0", - "supports-hyperlinks": "^3.0.0", + "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", "table": "^6.8.2", "write-file-atomic": "^5.0.1" @@ -28976,13 +28793,22 @@ } }, "node_modules/stylelint-config-standard": { - "version": "36.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz", - "integrity": "sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==", + "version": "36.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", + "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], "dependencies": { - "stylelint-config-recommended": "^14.0.0" + "stylelint-config-recommended": "^14.0.1" }, "engines": { "node": ">=18.12.0" @@ -29024,6 +28850,79 @@ "stylelint": "^16.2.1" } }, + "node_modules/stylelint-selector-bem-pattern/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/stylelint-selector-bem-pattern/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/stylelint-selector-bem-pattern/node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/stylelint-selector-bem-pattern/node_modules/eslint-plugin-jest": { + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, "node_modules/stylelint/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", From a2cb6d8852085b4d766c67915ea21a0e46d14ee3 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Fri, 13 Sep 2024 09:35:38 +0200 Subject: [PATCH 0017/1385] chore: update dep (#7038) chore(update-dep) --- package-lock.json | 111 ++++++++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index d70c320f2d1ad..116d92162a37f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10949,9 +10949,9 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "license": "MIT", "dependencies": { @@ -10963,7 +10963,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -13174,9 +13174,9 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", "engines": { @@ -14834,38 +14834,38 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -15126,14 +15126,14 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -21634,11 +21634,14 @@ "license": "MIT" }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -23896,9 +23899,9 @@ "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true, "license": "MIT" }, @@ -24909,13 +24912,13 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -27665,9 +27668,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", "dependencies": { @@ -27706,6 +27709,16 @@ "dev": true, "license": "MIT" }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -27723,16 +27736,16 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -30913,22 +30926,6 @@ "dev": true, "license": "MIT" }, - "node_modules/url/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/use-callback-ref": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", From b266643497acc2700625e870ddb75c7dfd00bd3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= Date: Fri, 13 Sep 2024 10:24:49 -0300 Subject: [PATCH 0018/1385] Set up i18n package (#6991) * build: change package scopes * build: create packages workspace * feat: create initial i18n package * feat: create import locale fn * chore: some peaks * refactor: remove duplicated type * chore: set up lint * chore: dep fix * fix: crowdin config * fix: fix modules, eslint * fix: fixed lint, test and build process * chore: code review changes * chore: fix turbo.json * chore: fix package versions * fix: fix build due to shiki * chore: (unrelated) shiki js engine --------- Co-authored-by: Claudio Wunder --- .github/workflows/translations-pr.yml | 4 +- .gitignore | 2 + .husky/pre-commit | 3 - apps/site/.storybook/preview.tsx | 2 +- .../Common/LanguageDropDown/index.tsx | 3 +- .../Downloads/Release/ReleaseCodeBox.tsx | 10 +- apps/site/eslint.config.js | 29 +- apps/site/i18n.tsx | 7 +- apps/site/next-env.d.ts | 2 +- apps/site/next.locales.mjs | 22 +- apps/site/next.mdx.shiki.mjs | 9 +- apps/site/package.json | 97 +- apps/site/shiki.config.mjs | 47 +- apps/site/tsconfig.json | 12 +- apps/site/turbo.json | 1 + apps/site/types/i18n.ts | 10 - apps/site/util/getHighlighter.ts | 20 +- crowdin.yml | 4 +- package-lock.json | 6204 +++++++---------- package.json | 21 +- {apps/site => packages}/i18n/config.json | 0 packages/i18n/eslint.config.js | 58 + packages/i18n/lib/index.mjs | 39 + {apps/site => packages}/i18n/locales/en.json | 0 {apps/site => packages}/i18n/locales/fr.json | 0 {apps/site => packages}/i18n/locales/id.json | 0 {apps/site => packages}/i18n/locales/pt.json | 0 {apps/site => packages}/i18n/locales/uk.json | 0 .../site => packages}/i18n/locales/zh-cn.json | 0 .../site => packages}/i18n/locales/zh-tw.json | 0 packages/i18n/package.json | 28 + packages/i18n/tsconfig.json | 21 + packages/i18n/turbo.json | 17 + packages/i18n/types.d.ts | 10 + turbo.json | 12 +- 35 files changed, 2732 insertions(+), 3962 deletions(-) rename {apps/site => packages}/i18n/config.json (100%) create mode 100644 packages/i18n/eslint.config.js create mode 100644 packages/i18n/lib/index.mjs rename {apps/site => packages}/i18n/locales/en.json (100%) rename {apps/site => packages}/i18n/locales/fr.json (100%) rename {apps/site => packages}/i18n/locales/id.json (100%) rename {apps/site => packages}/i18n/locales/pt.json (100%) rename {apps/site => packages}/i18n/locales/uk.json (100%) rename {apps/site => packages}/i18n/locales/zh-cn.json (100%) rename {apps/site => packages}/i18n/locales/zh-tw.json (100%) create mode 100644 packages/i18n/package.json create mode 100644 packages/i18n/tsconfig.json create mode 100644 packages/i18n/turbo.json create mode 100644 packages/i18n/types.d.ts diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index 8bd80026e8067..f9d3e4d1ff64a 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -12,8 +12,8 @@ on: - 'apps/site/pages/**/*.mdx' - '!apps/site/pages/en/**/*.md' - '!apps/site/pages/en/**/*.mdx' - - 'apps/site/i18n/locales/*.json' - - '!apps/site/i18n/locales/en.json' + - 'packages/i18n/locales/*.json' + - '!packages/i18n/locales/en.json' permissions: actions: read diff --git a/.gitignore b/.gitignore index e2e87fa8cc1b3..2c2b5b1273b34 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,5 @@ tsconfig.tsbuildinfo # Sentry Config File .sentryclirc + +dist/ diff --git a/.husky/pre-commit b/.husky/pre-commit index 0b30eeabf5b20..2e2b9e7afa086 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,6 +1,3 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - # lint and format staged files npx lint-staged diff --git a/apps/site/.storybook/preview.tsx b/apps/site/.storybook/preview.tsx index 7bd9698f2c00b..43e68629f1c56 100644 --- a/apps/site/.storybook/preview.tsx +++ b/apps/site/.storybook/preview.tsx @@ -1,9 +1,9 @@ +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 { STORYBOOK_MODES, STORYBOOK_SIZES } from '@/.storybook/constants'; -import englishLocale from '@/i18n/locales/en.json'; import { NotificationProvider } from '@/providers/notificationProvider'; import '../next.fonts'; diff --git a/apps/site/components/Common/LanguageDropDown/index.tsx b/apps/site/components/Common/LanguageDropDown/index.tsx index f8dfc2fbc6618..9c71267746807 100644 --- a/apps/site/components/Common/LanguageDropDown/index.tsx +++ b/apps/site/components/Common/LanguageDropDown/index.tsx @@ -1,11 +1,10 @@ import { LanguageIcon } from '@heroicons/react/24/outline'; +import type { LocaleConfig } from '@node-core/website-i18n/types'; import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; import classNames from 'classnames'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import type { LocaleConfig } from '@/types'; - import styles from './index.module.css'; type SimpleLocaleConfig = Pick; diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 9b6b5d8628eb4..3b446074f61e9 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -6,12 +6,10 @@ import type { FC } from 'react'; import CodeBox from '@/components/Common/CodeBox'; import { ReleaseContext } from '@/providers/releaseProvider'; -import { getShiki, highlightToHtml } from '@/util/getHighlighter'; +import { shikiPromise, highlightToHtml } from '@/util/getHighlighter'; import { getNodeDownloadSnippet } from '@/util/getNodeDownloadSnippet'; -// We cannot do top-level awaits on utilities or code that is imported by client-only components -// hence we only declare a Promise and let it be fulfilled by the first call to the function -const memoizedShiki = getShiki(); +const memoizedShiki = shikiPromise.then(highlightToHtml); const ReleaseCodeBox: FC = () => { const { platform, os, release } = useContext(ReleaseContext); @@ -25,9 +23,7 @@ const ReleaseCodeBox: FC = () => { // but usually we should recommend users to download "major" versions // since our Download Buttons get the latest minor of a major, it does make sense // to request installation of a major via a package manager - memoizedShiki - .then(shiki => highlightToHtml(shiki)(updatedCode, 'bash')) - .then(setCode); + memoizedShiki.then(shiki => shiki(updatedCode, 'bash')).then(setCode); // Only react when the specific release number changed // eslint-disable-next-line react-hooks/exhaustive-deps }, [release.versionWithPrefix, os, platform]); diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index 8372ccbb6142e..376b7d43135e4 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -1,4 +1,3 @@ -import { fixupPluginRules } from '@eslint/compat'; import { FlatCompat } from '@eslint/eslintrc'; import js from '@eslint/js'; import importX from 'eslint-plugin-import-x'; @@ -9,27 +8,16 @@ import storybook from 'eslint-plugin-storybook'; import tseslint from 'typescript-eslint'; const compat = new FlatCompat(); -const pluginToPatch = '@next/next'; -const compatConfig = compat - .config({ - extends: [ - // https://github.com/vercel/next.js/discussions/49337 - 'plugin:@next/eslint-plugin-next/core-web-vitals', - - // https://github.com/facebook/react/issues/28313 - 'plugin:react-hooks/recommended', - ], - }) - .map(entry => { - if (Object.hasOwn(entry.plugins, pluginToPatch)) { - entry.plugins[pluginToPatch] = fixupPluginRules( - entry.plugins[pluginToPatch] - ); - } +const compatConfig = compat.config({ + extends: [ + // https://github.com/vercel/next.js/discussions/49337 + 'plugin:@next/eslint-plugin-next/core-web-vitals', - return entry; - }); + // https://github.com/facebook/react/issues/28313 + 'plugin:react-hooks/recommended', + ], +}); export default tseslint.config( { @@ -58,6 +46,7 @@ export default tseslint.config( 'no-relative-import-paths': noRelativeImportPaths, }, rules: { + '@next/next/no-duplicate-head': 'off', '@typescript-eslint/array-type': ['error', { default: 'generic' }], '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/no-require-imports': 'off', diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index 5c9029e116370..5e235d8e3d15f 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -1,3 +1,4 @@ +import { importLocale } from '@node-core/website-i18n'; import { getRequestConfig } from 'next-intl/server'; import { availableLocaleCodes } from '@/next.locales.mjs'; @@ -7,13 +8,15 @@ const loadLocaleDictionary = async (locale: string) => { if (locale === 'en') { // This enables HMR on the English Locale, so that instant refresh // happens while we add/change texts on the source locale - return import('./i18n/locales/en.json').then(f => f.default); + return import('@node-core/website-i18n/locales/en.json').then( + f => f.default + ); } if (availableLocaleCodes.includes(locale)) { // Other languages don't really require HMR as they will never be development languages // so we can load them dynamically - return import(`./i18n/locales/${locale}.json`).then(f => f.default); + return importLocale(locale); } throw new Error(`Unsupported locale: ${locale}`); diff --git a/apps/site/next-env.d.ts b/apps/site/next-env.d.ts index fd36f9494e2c2..725dd6f245153 100644 --- a/apps/site/next-env.d.ts +++ b/apps/site/next-env.d.ts @@ -3,4 +3,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/apps/site/next.locales.mjs b/apps/site/next.locales.mjs index 4805361a7424b..058a9f3f62dde 100644 --- a/apps/site/next.locales.mjs +++ b/apps/site/next.locales.mjs @@ -1,27 +1,31 @@ 'use strict'; -import localeConfig from './i18n/config.json' assert { type: 'json' }; +import { + getAvailableLocales, + getAvailableLocaleCodes, + getDefaultLocale, + getAvailableLocalesMap, + getAllLocaleCodes, +} from '@node-core/website-i18n'; // As set of available and enabled locales for the website // This is used for allowing us to redirect the user to any // of the available locales that we have enabled on the website -const availableLocales = localeConfig.filter(locale => locale.enabled); +const availableLocales = getAvailableLocales(); // This gives an easy way of accessing all available locale codes -const availableLocaleCodes = availableLocales.map(locale => locale.code); +const availableLocaleCodes = getAvailableLocaleCodes(); // This provides the default locale information for the Next.js Application // This is marked by the unique `locale.default` property on the `en` locale -/** @type {import('./types').LocaleConfig} */ -const defaultLocale = availableLocales.find(locale => locale.default); +/** @type {import('@node-core/website-i18n/types').LocaleConfig} */ +const defaultLocale = getDefaultLocale(); // Creates a Map of available locales for easy access -const availableLocalesMap = Object.fromEntries( - localeConfig.map(locale => [locale.code, locale]) -); +const availableLocalesMap = getAvailableLocalesMap(); // Creates all supported locales -const allLocaleCodes = localeConfig.map(locale => locale.code); +const allLocaleCodes = getAllLocaleCodes(); export { allLocaleCodes, diff --git a/apps/site/next.mdx.shiki.mjs b/apps/site/next.mdx.shiki.mjs index b3253f6646cfc..136743b96b611 100644 --- a/apps/site/next.mdx.shiki.mjs +++ b/apps/site/next.mdx.shiki.mjs @@ -4,7 +4,7 @@ import classNames from 'classnames'; import { toString } from 'hast-util-to-string'; import { SKIP, visit } from 'unist-util-visit'; -import { getShiki, highlightToHast } from './util/getHighlighter'; +import { shikiPromise, highlightToHast } from './util/getHighlighter'; // This is what Remark will use as prefix within a
 className
 // to attribute the current language of the 
 element
@@ -58,7 +58,7 @@ export default function rehypeShikiji() {
     // We do a top-level await, since the Unist-tree visitor
     // is synchronous, and it makes more sense to do a top-level
     // await, rather than an await inside the visitor function
-    const memoizedShiki = await getShiki();
+    const memoizedShiki = highlightToHast(await shikiPromise);
 
     visit(tree, 'element', (_, index, parent) => {
       const languages = [];
@@ -174,10 +174,7 @@ export default function rehypeShikiji() {
       const languageId = codeLanguage.slice(languagePrefix.length);
 
       // Parses the 
 contents and returns a HAST tree with the highlighted code
-      const { children } = highlightToHast(memoizedShiki)(
-        preElementContents,
-        languageId
-      );
+      const { children } = memoizedShiki(preElementContents, languageId);
 
       // Adds the original language back to the 
 element
       children[0].properties.class = classNames(
diff --git a/apps/site/package.json b/apps/site/package.json
index 0628f894ddfd4..d6172ce334139 100644
--- a/apps/site/package.json
+++ b/apps/site/package.json
@@ -1,7 +1,7 @@
 {
   "type": "module",
   "private": true,
-  "name": "@nodejs/website",
+  "name": "@node-core/website",
   "description": "Nodejs.org Website",
   "homepage": "https://nodejs.org",
   "repository": {
@@ -38,41 +38,42 @@
   "dependencies": {
     "@heroicons/react": "~2.1.5",
     "@mdx-js/mdx": "^3.0.1",
+    "@node-core/website-i18n": "*",
     "@nodevu/core": "~0.1.0",
     "@orama/highlight": "^0.1.6",
-    "@oramacloud/client": "^1.3.2",
-    "@radix-ui/react-accessible-icon": "^1.0.3",
-    "@radix-ui/react-avatar": "^1.0.4",
-    "@radix-ui/react-dialog": "^1.0.5",
-    "@radix-ui/react-dropdown-menu": "^2.0.6",
-    "@radix-ui/react-label": "^2.0.2",
-    "@radix-ui/react-scroll-area": "^1.0.5",
-    "@radix-ui/react-select": "^2.0.0",
-    "@radix-ui/react-slot": "^1.0.2",
-    "@radix-ui/react-tabs": "^1.0.4",
-    "@radix-ui/react-toast": "^1.1.5",
+    "@oramacloud/client": "^1.3.15",
+    "@radix-ui/react-accessible-icon": "^1.1.0",
+    "@radix-ui/react-avatar": "^1.1.0",
+    "@radix-ui/react-dialog": "^1.1.1",
+    "@radix-ui/react-dropdown-menu": "^2.1.1",
+    "@radix-ui/react-label": "^2.1.0",
+    "@radix-ui/react-scroll-area": "^1.1.0",
+    "@radix-ui/react-select": "^2.1.1",
+    "@radix-ui/react-slot": "^1.1.0",
+    "@radix-ui/react-tabs": "^1.1.0",
+    "@radix-ui/react-toast": "^1.2.1",
     "@savvywombat/tailwindcss-grid-areas": "~4.0.0",
-    "@sentry/nextjs": "~8.14.0",
+    "@sentry/nextjs": "~8.30.0",
     "@tailwindcss/container-queries": "~0.1.1",
-    "@types/node": "20.16.3",
+    "@types/node": "20.16.5",
     "@vcarl/remark-headings": "~0.1.0",
     "@vercel/analytics": "~1.3.1",
-    "@vercel/speed-insights": "~1.0.10",
-    "autoprefixer": "~10.4.18",
+    "@vercel/speed-insights": "~1.0.12",
+    "autoprefixer": "~10.4.20",
     "classnames": "~2.5.1",
     "cross-env": "7.0.3",
     "dedent": "1.5.3",
     "feed": "~4.2.2",
     "github-slugger": "~2.0.0",
-    "glob": "~10.4.1",
+    "glob": "~11.0.0",
     "gray-matter": "~4.0.3",
-    "next": "~14.2.7",
-    "next-intl": "~3.19.0",
+    "next": "~14.2.11",
+    "next-intl": "~3.19.1",
     "next-themes": "~0.3.0",
-    "postcss": "~8.4.40",
-    "postcss-calc": "~10.0.0",
+    "postcss": "~8.4.45",
+    "postcss-calc": "~10.0.2",
     "postcss-import": "~16.1.0",
-    "postcss-mixins": "~10.0.1",
+    "postcss-mixins": "~11.0.1",
     "postcss-simple-vars": "~7.0.1",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
@@ -80,54 +81,50 @@
     "rehype-slug": "~6.0.0",
     "remark-gfm": "~4.0.0",
     "remark-reading-time": "~2.0.1",
-    "semver": "~7.6.0",
-    "shiki": "~1.15.2",
-    "tailwindcss": "^3.4.7",
-    "typescript": "~5.5.3",
+    "semver": "~7.6.3",
+    "shiki": "~1.17.5",
+    "tailwindcss": "^3.4.11",
     "unist-util-visit": "~5.0.0",
     "vfile": "~6.0.3",
     "vfile-matter": "~5.0.0"
   },
   "devDependencies": {
-    "@eslint/compat": "^1.1.1",
-    "@next/eslint-plugin-next": "^14.2.8",
-    "@storybook/addon-controls": "~8.2.7",
-    "@storybook/addon-interactions": "~8.2.7",
-    "@storybook/addon-themes": "~8.2.7",
-    "@storybook/addon-viewport": "~8.2.7",
-    "@storybook/nextjs": "~8.2.7",
+    "@eslint/compat": "~1.1.1",
+    "@next/eslint-plugin-next": "~14.2.11",
+    "@storybook/addon-controls": "~8.3.0",
+    "@storybook/addon-interactions": "~8.3.0",
+    "@storybook/addon-themes": "~8.3.0",
+    "@storybook/addon-viewport": "~8.3.0",
+    "@storybook/nextjs": "~8.3.0",
     "@testing-library/jest-dom": "~6.5.0",
     "@testing-library/react": "~16.0.1",
     "@testing-library/user-event": "~14.5.2",
-    "@types/jest": "29.5.12",
+    "@types/jest": "29.5.13",
     "@types/react": "^18.3.5",
     "@types/react-dom": "^18.3.0",
     "@types/semver": "~7.5.8",
-    "eslint": "^9.10.0",
-    "eslint-config-next": "~14.2.8",
-    "eslint-config-prettier": "9.1.0",
-    "eslint-import-resolver-typescript": "^3.6.3",
-    "eslint-plugin-import-x": "^4.2.1",
-    "eslint-plugin-mdx": "3.1.5",
-    "eslint-plugin-no-relative-import-paths": "^1.5.3",
-    "eslint-plugin-react": "^7.35.2",
-    "eslint-plugin-react-hooks": "5.1.0-rc.0",
-    "eslint-plugin-storybook": "0.9.0--canary.156.da7873a.0",
+    "eslint": "~9.10.0",
+    "eslint-config-next": "~14.2.11",
+    "eslint-import-resolver-typescript": "~3.6.3",
+    "eslint-plugin-import-x": "~4.2.1",
+    "eslint-plugin-mdx": "~3.1.5",
+    "eslint-plugin-no-relative-import-paths": "~1.5.5",
+    "eslint-plugin-react": "~7.36.1",
+    "eslint-plugin-react-hooks": "5.1.0-rc-4c58fce7-20240904",
+    "eslint-plugin-storybook": "0.9.0--canary.156.26b630a.0",
     "handlebars": "4.7.8",
     "jest": "29.7.0",
     "jest-environment-jsdom": "29.7.0",
     "jest-junit": "16.0.0",
     "remark-frontmatter": "5.0.0",
     "remark-preset-lint-node": "5.1.2",
-    "storybook": "~8.2.7",
+    "storybook": "~8.3.0",
     "stylelint": "16.9.0",
     "stylelint-config-standard": "36.0.1",
     "stylelint-order": "6.0.4",
-    "stylelint-selector-bem-pattern": "4.0.0",
-    "typescript-eslint": "^8.4.0",
+    "stylelint-selector-bem-pattern": "4.0.1",
+    "typescript": "~5.5.4",
+    "typescript-eslint": "~8.5.0",
     "user-agent-data-types": "0.4.2"
-  },
-  "overrides": {
-    "eslint": "$eslint"
   }
 }
diff --git a/apps/site/shiki.config.mjs b/apps/site/shiki.config.mjs
index cdfecd2716981..54ef9d3e4485c 100644
--- a/apps/site/shiki.config.mjs
+++ b/apps/site/shiki.config.mjs
@@ -18,46 +18,13 @@ export const LANGUAGES = [
     aliases: ['mjs', 'cjs', 'js'],
     displayName: 'JavaScript',
   },
-  {
-    ...jsonLanguage[0],
-    scopeName: 'source.json',
-    displayName: 'JSON',
-  },
-  {
-    ...typeScriptLanguage[0],
-    scopeName: 'source.ts',
-    aliases: ['ts'],
-    displayName: 'TypeScript',
-  },
-  {
-    ...shellScriptLanguage[0],
-    scopeName: 'source.shell',
-    aliases: ['bash', 'sh', 'shell', 'zsh'],
-    displayName: 'Bash',
-  },
-  {
-    ...powershellLanguage[0],
-    scopeName: 'source.powershell',
-    aliases: ['ps', 'ps1'],
-    displayName: 'PowerShell',
-  },
-  {
-    ...shellSessionLanguage[0],
-    scopeName: 'text.shell-session',
-    aliases: ['console'],
-    displayName: 'Bash',
-  },
-  {
-    ...dockerLanguage[0],
-    scopeName: 'source.dockerfile',
-    aliases: ['dockerfile'],
-    displayName: 'Dockerfile',
-  },
-  {
-    ...diffLanguage[0],
-    scopeName: 'source.diff',
-    displayName: 'Diff',
-  },
+  ...jsonLanguage,
+  ...typeScriptLanguage,
+  ...shellScriptLanguage,
+  ...powershellLanguage,
+  ...shellSessionLanguage,
+  ...dockerLanguage,
+  ...diffLanguage,
 ];
 
 // This is the default theme we use for our Shiki Syntax Highlighter
diff --git a/apps/site/tsconfig.json b/apps/site/tsconfig.json
index 613b2c5576e99..f1fbd46c6dfe0 100644
--- a/apps/site/tsconfig.json
+++ b/apps/site/tsconfig.json
@@ -9,19 +9,13 @@
     "noEmit": true,
     "esModuleInterop": true,
     "module": "esnext",
-    "moduleResolution": "node",
+    "moduleResolution": "Bundler",
     "resolveJsonModule": true,
     "isolatedModules": true,
     "jsx": "preserve",
     "incremental": true,
-    "paths": {
-      "@/*": ["./*"]
-    },
-    "plugins": [
-      {
-        "name": "next"
-      }
-    ],
+    "paths": { "@/*": ["./*"] },
+    "plugins": [{ "name": "next" }],
     "baseUrl": "."
   },
   "mdx": {
diff --git a/apps/site/turbo.json b/apps/site/turbo.json
index 47ad453600693..926a21dc5a378 100644
--- a/apps/site/turbo.json
+++ b/apps/site/turbo.json
@@ -21,6 +21,7 @@
       ]
     },
     "build": {
+      "dependsOn": ["^build"],
       "inputs": [
         "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}",
         "{app,components,layouts,pages,styles}/**/*.css",
diff --git a/apps/site/types/i18n.ts b/apps/site/types/i18n.ts
index fd5e703a842ed..c3666688c6ec9 100644
--- a/apps/site/types/i18n.ts
+++ b/apps/site/types/i18n.ts
@@ -1,15 +1,5 @@
 import type { JSXElementConstructor, ReactElement, ReactNode } from 'react';
 
-export interface LocaleConfig {
-  code: string;
-  localName: string;
-  name: string;
-  langDir: string;
-  dateFormat: string;
-  hrefLang: string;
-  enabled: boolean;
-}
-
 export type FormattedMessage =
   | string
   | ReactElement>
diff --git a/apps/site/util/getHighlighter.ts b/apps/site/util/getHighlighter.ts
index 9669598bf7b66..8b9b5b43e438f 100644
--- a/apps/site/util/getHighlighter.ts
+++ b/apps/site/util/getHighlighter.ts
@@ -1,24 +1,24 @@
 import { getSingletonHighlighterCore } from '@shikijs/core';
 import type { HighlighterCore } from '@shikijs/core';
-import { getWasmInstance } from '@shikijs/core/wasm-inlined';
+import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript';
 
 import { LANGUAGES, DEFAULT_THEME } from '@/shiki.config.mjs';
 
 // This creates a memoized minimal Shikiji Syntax Highlighter
-export const getShiki = () =>
-  getSingletonHighlighterCore({
-    themes: [DEFAULT_THEME],
-    langs: LANGUAGES,
-    loadWasm: getWasmInstance,
-  });
+export const shikiPromise = getSingletonHighlighterCore({
+  themes: [DEFAULT_THEME],
+  langs: LANGUAGES,
+  // Let's use Shiki's new Experimental JavaScript-based regex engine!
+  engine: createJavaScriptRegexEngine(),
+});
 
 export const highlightToHtml =
   (shiki: HighlighterCore) => (code: string, language: string) =>
-    // Shiki will always return the Highlighted code encapsulated in a 
 and  tag
-    // since our own CodeBox component handles the  tag, we just want to extract
-    // the inner highlighted code to the CodeBox
     shiki
       .codeToHtml(code, { lang: language, theme: DEFAULT_THEME })
+      // Shiki will always return the Highlighted code encapsulated in a 
 and  tag
+      // since our own CodeBox component handles the  tag, we just want to extract
+      // the inner highlighted code to the CodeBox
       .match(/(.+?)<\/code>/s)![1];
 
 export const highlightToHast =
diff --git a/crowdin.yml b/crowdin.yml
index a3e118ce652f0..644c8d597bf99 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -30,8 +30,8 @@ files:
         pt-BR: pt-br
         zh-CN: zh-cn
         zh-TW: zh-tw
-  - source: /apps/site/i18n/locales/en.json
-    translation: /apps/site/i18n/locales/%two_letters_code%.json
+  - source: /packages/i18n/locales/en.json
+    translation: /packages/i18n/locales/%two_letters_code%.json
     languages_mapping:
       two_letters_code:
         es-ES: es
diff --git a/package-lock.json b/package-lock.json
index 116d92162a37f..49554ccff1ebd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,71 +1,72 @@
 {
-  "name": "@nodejs/website",
+  "name": "nodejs-website",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "@nodejs/website",
+      "name": "nodejs-website",
       "license": "MIT",
       "workspaces": [
-        "apps/*"
+        "apps/*",
+        "packages/*"
       ],
       "dependencies": {
-        "husky": "9.0.11",
-        "lint-staged": "15.2.7",
-        "turbo": "2.1.1"
+        "husky": "9.1.6",
+        "lint-staged": "15.2.10",
+        "turbo": "2.1.2"
       },
       "devDependencies": {
         "commitizen": "4.3.0",
         "cz-conventional-changelog": "3.3.0",
         "prettier": "3.3.3",
-        "prettier-plugin-tailwindcss": "0.6.6",
-        "typescript": "~5.5.0"
+        "prettier-plugin-tailwindcss": "0.6.6"
       },
       "engines": {
         "node": "v20"
       }
     },
     "apps/site": {
-      "name": "@nodejs/website",
+      "name": "@node-core/website",
       "license": "MIT",
       "dependencies": {
         "@heroicons/react": "~2.1.5",
         "@mdx-js/mdx": "^3.0.1",
+        "@node-core/website-i18n": "*",
         "@nodevu/core": "~0.1.0",
         "@orama/highlight": "^0.1.6",
-        "@oramacloud/client": "^1.3.2",
-        "@radix-ui/react-accessible-icon": "^1.0.3",
-        "@radix-ui/react-avatar": "^1.0.4",
-        "@radix-ui/react-dialog": "^1.0.5",
-        "@radix-ui/react-dropdown-menu": "^2.0.6",
-        "@radix-ui/react-label": "^2.0.2",
-        "@radix-ui/react-scroll-area": "^1.0.5",
-        "@radix-ui/react-select": "^2.0.0",
-        "@radix-ui/react-slot": "^1.0.2",
-        "@radix-ui/react-tabs": "^1.0.4",
-        "@radix-ui/react-toast": "^1.1.5",
+        "@oramacloud/client": "^1.3.15",
+        "@radix-ui/react-accessible-icon": "^1.1.0",
+        "@radix-ui/react-avatar": "^1.1.0",
+        "@radix-ui/react-dialog": "^1.1.1",
+        "@radix-ui/react-dropdown-menu": "^2.1.1",
+        "@radix-ui/react-label": "^2.1.0",
+        "@radix-ui/react-scroll-area": "^1.1.0",
+        "@radix-ui/react-select": "^2.1.1",
+        "@radix-ui/react-slot": "^1.1.0",
+        "@radix-ui/react-tabs": "^1.1.0",
+        "@radix-ui/react-toast": "^1.2.1",
         "@savvywombat/tailwindcss-grid-areas": "~4.0.0",
-        "@sentry/nextjs": "~8.14.0",
+        "@sentry/nextjs": "~8.30.0",
         "@tailwindcss/container-queries": "~0.1.1",
-        "@types/node": "20.16.3",
+        "@types/node": "20.16.5",
         "@vcarl/remark-headings": "~0.1.0",
         "@vercel/analytics": "~1.3.1",
-        "@vercel/speed-insights": "~1.0.10",
-        "autoprefixer": "~10.4.18",
+        "@vercel/speed-insights": "~1.0.12",
+        "autoprefixer": "~10.4.20",
         "classnames": "~2.5.1",
         "cross-env": "7.0.3",
         "dedent": "1.5.3",
         "feed": "~4.2.2",
         "github-slugger": "~2.0.0",
-        "glob": "~10.4.1",
+        "glob": "~11.0.0",
         "gray-matter": "~4.0.3",
-        "next": "~14.2.7",
-        "next-intl": "~3.19.0",
+        "next": "~14.2.11",
+        "next-intl": "~3.19.1",
         "next-themes": "~0.3.0",
-        "postcss": "~8.4.40",
-        "postcss-calc": "~10.0.0",
+        "postcss": "~8.4.45",
+        "postcss-calc": "~10.0.2",
         "postcss-import": "~16.1.0",
-        "postcss-mixins": "~10.0.1",
+        "postcss-mixins": "~11.0.1",
         "postcss-simple-vars": "~7.0.1",
         "react": "^18.3.1",
         "react-dom": "^18.3.1",
@@ -73,111 +74,56 @@
         "rehype-slug": "~6.0.0",
         "remark-gfm": "~4.0.0",
         "remark-reading-time": "~2.0.1",
-        "semver": "~7.6.0",
-        "shiki": "~1.15.2",
-        "tailwindcss": "^3.4.7",
-        "typescript": "~5.5.3",
+        "semver": "~7.6.3",
+        "shiki": "~1.17.5",
+        "tailwindcss": "^3.4.11",
         "unist-util-visit": "~5.0.0",
         "vfile": "~6.0.3",
         "vfile-matter": "~5.0.0"
       },
       "devDependencies": {
-        "@eslint/compat": "^1.1.1",
-        "@next/eslint-plugin-next": "^14.2.8",
-        "@storybook/addon-controls": "~8.2.7",
-        "@storybook/addon-interactions": "~8.2.7",
-        "@storybook/addon-themes": "~8.2.7",
-        "@storybook/addon-viewport": "~8.2.7",
-        "@storybook/nextjs": "~8.2.7",
+        "@eslint/compat": "~1.1.1",
+        "@next/eslint-plugin-next": "~14.2.11",
+        "@storybook/addon-controls": "~8.3.0",
+        "@storybook/addon-interactions": "~8.3.0",
+        "@storybook/addon-themes": "~8.3.0",
+        "@storybook/addon-viewport": "~8.3.0",
+        "@storybook/nextjs": "~8.3.0",
         "@testing-library/jest-dom": "~6.5.0",
         "@testing-library/react": "~16.0.1",
         "@testing-library/user-event": "~14.5.2",
-        "@types/jest": "29.5.12",
+        "@types/jest": "29.5.13",
         "@types/react": "^18.3.5",
         "@types/react-dom": "^18.3.0",
         "@types/semver": "~7.5.8",
-        "eslint": "^9.10.0",
-        "eslint-config-next": "~14.2.8",
-        "eslint-config-prettier": "9.1.0",
-        "eslint-import-resolver-typescript": "^3.6.3",
-        "eslint-plugin-import-x": "^4.2.1",
-        "eslint-plugin-mdx": "3.1.5",
-        "eslint-plugin-no-relative-import-paths": "^1.5.3",
-        "eslint-plugin-react": "^7.35.2",
-        "eslint-plugin-react-hooks": "5.1.0-rc.0",
-        "eslint-plugin-storybook": "0.9.0--canary.156.da7873a.0",
+        "eslint": "~9.10.0",
+        "eslint-config-next": "~14.2.11",
+        "eslint-import-resolver-typescript": "~3.6.3",
+        "eslint-plugin-import-x": "~4.2.1",
+        "eslint-plugin-mdx": "~3.1.5",
+        "eslint-plugin-no-relative-import-paths": "~1.5.5",
+        "eslint-plugin-react": "~7.36.1",
+        "eslint-plugin-react-hooks": "5.1.0-rc-4c58fce7-20240904",
+        "eslint-plugin-storybook": "0.9.0--canary.156.26b630a.0",
         "handlebars": "4.7.8",
         "jest": "29.7.0",
         "jest-environment-jsdom": "29.7.0",
         "jest-junit": "16.0.0",
         "remark-frontmatter": "5.0.0",
         "remark-preset-lint-node": "5.1.2",
-        "storybook": "~8.2.7",
+        "storybook": "~8.3.0",
         "stylelint": "16.9.0",
         "stylelint-config-standard": "36.0.1",
         "stylelint-order": "6.0.4",
-        "stylelint-selector-bem-pattern": "4.0.0",
-        "typescript-eslint": "^8.4.0",
+        "stylelint-selector-bem-pattern": "4.0.1",
+        "typescript": "~5.5.4",
+        "typescript-eslint": "~8.5.0",
         "user-agent-data-types": "0.4.2"
       },
       "engines": {
         "node": "v20"
       }
     },
-    "apps/site/node_modules/acorn": {
-      "version": "8.12.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
-      "dev": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "apps/site/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,
-      "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"
-      }
-    },
-    "apps/site/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,
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "apps/site/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,
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
     "apps/site/node_modules/dedent": {
       "version": "1.5.3",
       "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz",
@@ -192,144 +138,29 @@
         }
       }
     },
-    "apps/site/node_modules/eslint": {
-      "version": "9.10.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz",
-      "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.11.0",
-        "@eslint/config-array": "^0.18.0",
-        "@eslint/eslintrc": "^3.1.0",
-        "@eslint/js": "9.10.0",
-        "@eslint/plugin-kit": "^0.1.0",
-        "@humanwhocodes/module-importer": "^1.0.1",
-        "@humanwhocodes/retry": "^0.3.0",
-        "@nodelib/fs.walk": "^1.2.8",
-        "ajv": "^6.12.4",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.3.2",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^8.0.2",
-        "eslint-visitor-keys": "^4.0.0",
-        "espree": "^10.1.0",
-        "esquery": "^1.5.0",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^8.0.0",
-        "find-up": "^5.0.0",
-        "glob-parent": "^6.0.2",
-        "ignore": "^5.2.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.3",
-        "strip-ansi": "^6.0.1",
-        "text-table": "^0.2.0"
-      },
-      "bin": {
-        "eslint": "bin/eslint.js"
-      },
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "url": "https://eslint.org/donate"
-      },
-      "peerDependencies": {
-        "jiti": "*"
-      },
-      "peerDependenciesMeta": {
-        "jiti": {
-          "optional": true
-        }
-      }
-    },
-    "apps/site/node_modules/eslint-plugin-react-hooks": {
-      "version": "5.1.0-rc-4c58fce7-20240904",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-4c58fce7-20240904.tgz",
-      "integrity": "sha512-PDoulHvydL8q8QhhyQx9y7c0Ot79D/o53+/6GG/9stROV2iBteNl/n8WNxwdcVtaSrFJ2BXd/M1U2fyjhelUzA==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "peerDependencies": {
-        "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
-      }
-    },
-    "apps/site/node_modules/eslint-visitor-keys": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
-      "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
-      "dev": true,
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "apps/site/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,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "apps/site/node_modules/espree": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
-      "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
-      "dev": true,
-      "dependencies": {
-        "acorn": "^8.12.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^4.0.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
     "apps/site/node_modules/glob": {
-      "version": "10.4.5",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
-      "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+      "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": "^3.1.2",
-        "minimatch": "^9.0.4",
+        "jackspeak": "^4.0.1",
+        "minimatch": "^10.0.0",
         "minipass": "^7.1.2",
         "package-json-from-dist": "^1.0.0",
-        "path-scurry": "^1.11.1"
+        "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/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
-    },
     "node_modules/@adobe/css-tools": {
       "version": "4.4.0",
       "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz",
@@ -424,12 +255,12 @@
       }
     },
     "node_modules/@babel/generator": {
-      "version": "7.25.5",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz",
-      "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
+      "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/types": "^7.25.4",
+        "@babel/types": "^7.25.6",
         "@jridgewell/gen-mapping": "^0.3.5",
         "@jridgewell/trace-mapping": "^0.3.25",
         "jsesc": "^2.5.1"
@@ -741,13 +572,13 @@
       }
     },
     "node_modules/@babel/helpers": {
-      "version": "7.25.0",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
-      "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
+      "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
       "license": "MIT",
       "dependencies": {
         "@babel/template": "^7.25.0",
-        "@babel/types": "^7.25.0"
+        "@babel/types": "^7.25.6"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -840,12 +671,12 @@
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.25.4",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz",
-      "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
+      "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/types": "^7.25.4"
+        "@babel/types": "^7.25.6"
       },
       "bin": {
         "parser": "bin/babel-parser.js"
@@ -1032,30 +863,14 @@
         "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-syntax-flow": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz",
-      "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
     "node_modules/@babel/plugin-syntax-import-assertions": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz",
-      "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz",
+      "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.24.7"
+        "@babel/helper-plugin-utils": "^7.24.8"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1065,13 +880,13 @@
       }
     },
     "node_modules/@babel/plugin-syntax-import-attributes": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
-      "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz",
+      "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.24.7"
+        "@babel/helper-plugin-utils": "^7.24.8"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1540,23 +1355,6 @@
         "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-transform-flow-strip-types": {
-      "version": "7.25.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz",
-      "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.24.8",
-        "@babel/plugin-syntax-flow": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
     "node_modules/@babel/plugin-transform-for-of": {
       "version": "7.24.7",
       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
@@ -2344,24 +2142,6 @@
         "semver": "bin/semver.js"
       }
     },
-    "node_modules/@babel/preset-flow": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz",
-      "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.24.7",
-        "@babel/helper-validator-option": "^7.24.7",
-        "@babel/plugin-transform-flow-strip-types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
     "node_modules/@babel/preset-modules": {
       "version": "0.1.6-no-external-plugins",
       "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
@@ -2418,231 +2198,62 @@
         "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/register": {
-      "version": "7.24.6",
-      "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz",
-      "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==",
+    "node_modules/@babel/regjsgen": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+      "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+      "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "clone-deep": "^4.0.1",
-        "find-cache-dir": "^2.0.0",
-        "make-dir": "^2.1.0",
-        "pirates": "^4.0.6",
-        "source-map-support": "^0.5.16"
+        "regenerator-runtime": "^0.14.0"
       },
       "engines": {
         "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/register/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "dev": true,
+    "node_modules/@babel/template": {
+      "version": "7.25.0",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
+      "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
       "license": "MIT",
       "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
+        "@babel/code-frame": "^7.24.7",
+        "@babel/parser": "^7.25.0",
+        "@babel/types": "^7.25.0"
       },
       "engines": {
-        "node": ">=6"
+        "node": ">=6.9.0"
       }
     },
-    "node_modules/@babel/register/node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dev": true,
+    "node_modules/@babel/traverse": {
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
+      "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
       "license": "MIT",
       "dependencies": {
-        "locate-path": "^3.0.0"
+        "@babel/code-frame": "^7.24.7",
+        "@babel/generator": "^7.25.6",
+        "@babel/parser": "^7.25.6",
+        "@babel/template": "^7.25.0",
+        "@babel/types": "^7.25.6",
+        "debug": "^4.3.1",
+        "globals": "^11.1.0"
       },
       "engines": {
-        "node": ">=6"
+        "node": ">=6.9.0"
       }
     },
-    "node_modules/@babel/register/node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@babel/register/node_modules/make-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@babel/register/node_modules/p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@babel/register/node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@babel/register/node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@babel/register/node_modules/pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@babel/register/node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@babel/register/node_modules/semver": {
-      "version": "5.7.2",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
-      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/@babel/register/node_modules/source-map": {
-      "version": "0.6.1",
-      "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"
-      }
-    },
-    "node_modules/@babel/register/node_modules/source-map-support": {
-      "version": "0.5.21",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "node_modules/@babel/regjsgen": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
-      "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@babel/runtime": {
-      "version": "7.25.4",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz",
-      "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "regenerator-runtime": "^0.14.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/template": {
-      "version": "7.25.0",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
-      "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.24.7",
-        "@babel/parser": "^7.25.0",
-        "@babel/types": "^7.25.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/traverse": {
-      "version": "7.25.4",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz",
-      "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.24.7",
-        "@babel/generator": "^7.25.4",
-        "@babel/parser": "^7.25.4",
-        "@babel/template": "^7.25.0",
-        "@babel/types": "^7.25.4",
-        "debug": "^4.3.1",
-        "globals": "^11.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/types": {
-      "version": "7.25.4",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz",
-      "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==",
+    "node_modules/@babel/types": {
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
+      "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
       "license": "MIT",
       "dependencies": {
         "@babel/helper-string-parser": "^7.24.8",
@@ -2668,14 +2279,14 @@
       "license": "MIT"
     },
     "node_modules/@commitlint/config-validator": {
-      "version": "19.0.3",
-      "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.0.3.tgz",
-      "integrity": "sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==",
+      "version": "19.5.0",
+      "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.5.0.tgz",
+      "integrity": "sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==",
       "dev": true,
       "license": "MIT",
       "optional": true,
       "dependencies": {
-        "@commitlint/types": "^19.0.3",
+        "@commitlint/types": "^19.5.0",
         "ajv": "^8.11.0"
       },
       "engines": {
@@ -2683,9 +2294,9 @@
       }
     },
     "node_modules/@commitlint/execute-rule": {
-      "version": "19.0.0",
-      "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.0.0.tgz",
-      "integrity": "sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==",
+      "version": "19.5.0",
+      "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz",
+      "integrity": "sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==",
       "dev": true,
       "license": "MIT",
       "optional": true,
@@ -2694,17 +2305,17 @@
       }
     },
     "node_modules/@commitlint/load": {
-      "version": "19.4.0",
-      "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.4.0.tgz",
-      "integrity": "sha512-I4lCWaEZYQJ1y+Y+gdvbGAx9pYPavqZAZ3/7/8BpWh+QjscAn8AjsUpLV2PycBsEx7gupq5gM4BViV9xwTIJuw==",
+      "version": "19.5.0",
+      "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.5.0.tgz",
+      "integrity": "sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==",
       "dev": true,
       "license": "MIT",
       "optional": true,
       "dependencies": {
-        "@commitlint/config-validator": "^19.0.3",
-        "@commitlint/execute-rule": "^19.0.0",
-        "@commitlint/resolve-extends": "^19.1.0",
-        "@commitlint/types": "^19.0.3",
+        "@commitlint/config-validator": "^19.5.0",
+        "@commitlint/execute-rule": "^19.5.0",
+        "@commitlint/resolve-extends": "^19.5.0",
+        "@commitlint/types": "^19.5.0",
         "chalk": "^5.3.0",
         "cosmiconfig": "^9.0.0",
         "cosmiconfig-typescript-loader": "^5.0.0",
@@ -2731,15 +2342,15 @@
       }
     },
     "node_modules/@commitlint/resolve-extends": {
-      "version": "19.1.0",
-      "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz",
-      "integrity": "sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==",
+      "version": "19.5.0",
+      "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz",
+      "integrity": "sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==",
       "dev": true,
       "license": "MIT",
       "optional": true,
       "dependencies": {
-        "@commitlint/config-validator": "^19.0.3",
-        "@commitlint/types": "^19.0.3",
+        "@commitlint/config-validator": "^19.5.0",
+        "@commitlint/types": "^19.5.0",
         "global-directory": "^4.0.1",
         "import-meta-resolve": "^4.0.0",
         "lodash.mergewith": "^4.6.2",
@@ -2750,9 +2361,9 @@
       }
     },
     "node_modules/@commitlint/types": {
-      "version": "19.0.3",
-      "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.0.3.tgz",
-      "integrity": "sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==",
+      "version": "19.5.0",
+      "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.5.0.tgz",
+      "integrity": "sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==",
       "dev": true,
       "license": "MIT",
       "optional": true,
@@ -2793,6 +2404,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       },
@@ -2815,6 +2427,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       }
@@ -2834,6 +2447,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       },
@@ -2857,6 +2471,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -2887,9 +2502,9 @@
       }
     },
     "node_modules/@esbuild/aix-ppc64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
-      "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz",
+      "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==",
       "cpu": [
         "ppc64"
       ],
@@ -2900,13 +2515,13 @@
         "aix"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/android-arm": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
-      "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz",
+      "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==",
       "cpu": [
         "arm"
       ],
@@ -2917,13 +2532,13 @@
         "android"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/android-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
-      "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz",
+      "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==",
       "cpu": [
         "arm64"
       ],
@@ -2934,13 +2549,13 @@
         "android"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/android-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
-      "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz",
+      "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==",
       "cpu": [
         "x64"
       ],
@@ -2951,13 +2566,13 @@
         "android"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
-      "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz",
+      "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==",
       "cpu": [
         "arm64"
       ],
@@ -2968,13 +2583,13 @@
         "darwin"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/darwin-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
-      "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz",
+      "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==",
       "cpu": [
         "x64"
       ],
@@ -2985,13 +2600,13 @@
         "darwin"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
-      "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz",
+      "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==",
       "cpu": [
         "arm64"
       ],
@@ -3002,13 +2617,13 @@
         "freebsd"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
-      "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz",
+      "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==",
       "cpu": [
         "x64"
       ],
@@ -3019,13 +2634,13 @@
         "freebsd"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-arm": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
-      "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz",
+      "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==",
       "cpu": [
         "arm"
       ],
@@ -3036,13 +2651,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
-      "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz",
+      "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==",
       "cpu": [
         "arm64"
       ],
@@ -3053,13 +2668,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-ia32": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
-      "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz",
+      "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==",
       "cpu": [
         "ia32"
       ],
@@ -3070,13 +2685,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-loong64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
-      "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz",
+      "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==",
       "cpu": [
         "loong64"
       ],
@@ -3087,13 +2702,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
-      "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz",
+      "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==",
       "cpu": [
         "mips64el"
       ],
@@ -3104,13 +2719,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
-      "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz",
+      "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==",
       "cpu": [
         "ppc64"
       ],
@@ -3121,13 +2736,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
-      "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz",
+      "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==",
       "cpu": [
         "riscv64"
       ],
@@ -3138,13 +2753,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-s390x": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
-      "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz",
+      "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==",
       "cpu": [
         "s390x"
       ],
@@ -3155,13 +2770,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
-      "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz",
+      "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==",
       "cpu": [
         "x64"
       ],
@@ -3172,13 +2787,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
-      "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz",
+      "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==",
       "cpu": [
         "x64"
       ],
@@ -3189,13 +2804,30 @@
         "netbsd"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/openbsd-arm64": {
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz",
+      "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
-      "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz",
+      "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==",
       "cpu": [
         "x64"
       ],
@@ -3206,13 +2838,13 @@
         "openbsd"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/sunos-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
-      "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz",
+      "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==",
       "cpu": [
         "x64"
       ],
@@ -3223,13 +2855,13 @@
         "sunos"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/win32-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
-      "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz",
+      "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==",
       "cpu": [
         "arm64"
       ],
@@ -3240,13 +2872,13 @@
         "win32"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/win32-ia32": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
-      "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz",
+      "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==",
       "cpu": [
         "ia32"
       ],
@@ -3257,13 +2889,13 @@
         "win32"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/win32-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
-      "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz",
+      "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==",
       "cpu": [
         "x64"
       ],
@@ -3274,7 +2906,7 @@
         "win32"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@eslint-community/eslint-utils": {
@@ -3293,6 +2925,19 @@
         "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.11.0",
       "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
@@ -3308,6 +2953,7 @@
       "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.1.1.tgz",
       "integrity": "sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
@@ -3317,6 +2963,7 @@
       "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",
@@ -3331,6 +2978,7 @@
       "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"
@@ -3341,6 +2989,7 @@
       "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"
       },
@@ -3353,6 +3002,7 @@
       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
       "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ajv": "^6.12.4",
         "debug": "^4.3.2",
@@ -3371,23 +3021,12 @@
         "url": "https://opencollective.com/eslint"
       }
     },
-    "node_modules/@eslint/eslintrc/node_modules/acorn": {
-      "version": "8.12.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
-      "dev": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
     "node_modules/@eslint/eslintrc/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",
@@ -3404,45 +3043,18 @@
       "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/eslint-visitor-keys": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
-      "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
-      "dev": true,
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/@eslint/eslintrc/node_modules/espree": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
-      "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
-      "dev": true,
-      "dependencies": {
-        "acorn": "^8.12.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^4.0.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
     "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"
       },
@@ -3454,13 +3066,15 @@
       "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
-    },
+      "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"
       },
@@ -3473,6 +3087,7 @@
       "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz",
       "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
@@ -3482,6 +3097,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"
       }
@@ -3491,6 +3107,7 @@
       "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz",
       "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==",
       "dev": true,
+      "license": "Apache-2.0",
       "dependencies": {
         "levn": "^0.4.1"
       },
@@ -3549,6 +3166,7 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz",
       "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==",
+      "license": "MIT",
       "dependencies": {
         "@formatjs/intl-localematcher": "0.5.4",
         "tslib": "^2.4.0"
@@ -3558,6 +3176,7 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz",
       "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==",
+      "license": "MIT",
       "dependencies": {
         "tslib": "^2.4.0"
       }
@@ -3566,6 +3185,7 @@
       "version": "2.7.8",
       "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz",
       "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==",
+      "license": "MIT",
       "dependencies": {
         "@formatjs/ecma402-abstract": "2.0.0",
         "@formatjs/icu-skeleton-parser": "1.8.2",
@@ -3576,6 +3196,7 @@
       "version": "1.8.2",
       "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz",
       "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==",
+      "license": "MIT",
       "dependencies": {
         "@formatjs/ecma402-abstract": "2.0.0",
         "tslib": "^2.4.0"
@@ -3585,6 +3206,7 @@
       "version": "0.5.4",
       "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz",
       "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==",
+      "license": "MIT",
       "dependencies": {
         "tslib": "^2.4.0"
       }
@@ -3598,46 +3220,6 @@
         "react": ">= 16"
       }
     },
-    "node_modules/@humanwhocodes/config-array": {
-      "version": "0.11.14",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
-      "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
-      "deprecated": "Use @eslint/config-array instead",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@humanwhocodes/object-schema": "^2.0.2",
-        "debug": "^4.3.1",
-        "minimatch": "^3.0.5"
-      },
-      "engines": {
-        "node": ">=10.10.0"
-      }
-    },
-    "node_modules/@humanwhocodes/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,
-      "peer": true,
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/@humanwhocodes/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,
-      "peer": true,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/@humanwhocodes/module-importer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -3652,19 +3234,12 @@
         "url": "https://github.com/sponsors/nzakas"
       }
     },
-    "node_modules/@humanwhocodes/object-schema": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
-      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
-      "deprecated": "Use @eslint/object-schema instead",
-      "dev": true,
-      "peer": true
-    },
     "node_modules/@humanwhocodes/retry": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz",
       "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">=18.18"
       },
@@ -4071,9 +3646,9 @@
       }
     },
     "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "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"
@@ -4756,15 +4331,17 @@
       }
     },
     "node_modules/@next/env": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.7.tgz",
-      "integrity": "sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ=="
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.11.tgz",
+      "integrity": "sha512-HYsQRSIXwiNqvzzYThrBwq6RhXo3E0n8j8nQnAs8i4fCEo2Zf/3eS0IiRA8XnRg9Ha0YnpkyJZIZg1qEwemrHw==",
+      "license": "MIT"
     },
     "node_modules/@next/eslint-plugin-next": {
-      "version": "14.2.8",
-      "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.8.tgz",
-      "integrity": "sha512-ue5vcq9Fjk3asACRDrzYjcGMEN7pMMDQ5zUD+FenkqvlPCVUD1x7PxBNOLfPYDZOrk/Vnl4GHmjj2mZDqPW8TQ==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.11.tgz",
+      "integrity": "sha512-7mw+xW7Y03Ph4NTCcAzYe+vu4BNjEHZUfZayyF3Y1D9RX6c5NIe25m1grHEAkyUuaqjRxOYhnCNeglOkIqLkBA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "glob": "10.3.10"
       }
@@ -4774,6 +4351,7 @@
       "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
       "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "foreground-child": "^3.1.0",
         "jackspeak": "^2.3.5",
@@ -4796,6 +4374,7 @@
       "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
       "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
       "dev": true,
+      "license": "BlueOak-1.0.0",
       "dependencies": {
         "@isaacs/cliui": "^8.0.2"
       },
@@ -4809,13 +4388,54 @@
         "@pkgjs/parseargs": "^0.11.0"
       }
     },
+    "node_modules/@next/eslint-plugin-next/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"
+    },
+    "node_modules/@next/eslint-plugin-next/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@next/eslint-plugin-next/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/@next/swc-darwin-arm64": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.7.tgz",
-      "integrity": "sha512-UhZGcOyI9LE/tZL3h9rs/2wMZaaJKwnpAyegUVDGZqwsla6hMfeSj9ssBWQS9yA4UXun3pPhrFLVnw5KXZs3vw==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.11.tgz",
+      "integrity": "sha512-eiY9u7wEJZWp/Pga07Qy3ZmNEfALmmSS1HtsJF3y1QEyaExu7boENz11fWqDmZ3uvcyAxCMhTrA1jfVxITQW8g==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -4825,12 +4445,13 @@
       }
     },
     "node_modules/@next/swc-darwin-x64": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.7.tgz",
-      "integrity": "sha512-ys2cUgZYRc+CbyDeLAaAdZgS7N1Kpyy+wo0b/gAj+SeOeaj0Lw/q+G1hp+DuDiDAVyxLBCJXEY/AkhDmtihUTA==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.11.tgz",
+      "integrity": "sha512-lnB0zYCld4yE0IX3ANrVMmtAbziBb7MYekcmR6iE9bujmgERl6+FK+b0MBq0pl304lYe7zO4yxJus9H/Af8jbg==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -4840,12 +4461,13 @@
       }
     },
     "node_modules/@next/swc-linux-arm64-gnu": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.7.tgz",
-      "integrity": "sha512-2xoWtE13sUJ3qrC1lwE/HjbDPm+kBQYFkkiVECJWctRASAHQ+NwjMzgrfqqMYHfMxFb5Wws3w9PqzZJqKFdWcQ==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.11.tgz",
+      "integrity": "sha512-Ulo9TZVocYmUAtzvZ7FfldtwUoQY0+9z3BiXZCLSUwU2bp7GqHA7/bqrfsArDlUb2xeGwn3ZuBbKtNK8TR0A8w==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4855,12 +4477,13 @@
       }
     },
     "node_modules/@next/swc-linux-arm64-musl": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.7.tgz",
-      "integrity": "sha512-+zJ1gJdl35BSAGpkCbfyiY6iRTaPrt3KTl4SF/B1NyELkqqnrNX6cp4IjjjxKpd64/7enI0kf6b9O1Uf3cL0pw==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.11.tgz",
+      "integrity": "sha512-fH377DnKGyUnkWlmUpFF1T90m0dADBfK11dF8sOQkiELF9M+YwDRCGe8ZyDzvQcUd20Rr5U7vpZRrAxKwd3Rzg==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4870,12 +4493,13 @@
       }
     },
     "node_modules/@next/swc-linux-x64-gnu": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.7.tgz",
-      "integrity": "sha512-m6EBqrskeMUzykBrv0fDX/28lWIBGhMzOYaStp0ihkjzIYJiKUOzVYD1gULHc8XDf5EMSqoH/0/TRAgXqpQwmw==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.11.tgz",
+      "integrity": "sha512-a0TH4ZZp4NS0LgXP/488kgvWelNpwfgGTUCDXVhPGH6pInb7yIYNgM4kmNWOxBFt+TIuOH6Pi9NnGG4XWFUyXQ==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4885,12 +4509,13 @@
       }
     },
     "node_modules/@next/swc-linux-x64-musl": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.7.tgz",
-      "integrity": "sha512-gUu0viOMvMlzFRz1r1eQ7Ql4OE+hPOmA7smfZAhn8vC4+0swMZaZxa9CSIozTYavi+bJNDZ3tgiSdMjmMzRJlQ==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.11.tgz",
+      "integrity": "sha512-DYYZcO4Uir2gZxA4D2JcOAKVs8ZxbOFYPpXSVIgeoQbREbeEHxysVsg3nY4FrQy51e5opxt5mOHl/LzIyZBoKA==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4900,12 +4525,13 @@
       }
     },
     "node_modules/@next/swc-win32-arm64-msvc": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.7.tgz",
-      "integrity": "sha512-PGbONHIVIuzWlYmLvuFKcj+8jXnLbx4WrlESYlVnEzDsa3+Q2hI1YHoXaSmbq0k4ZwZ7J6sWNV4UZfx1OeOlbQ==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.11.tgz",
+      "integrity": "sha512-PwqHeKG3/kKfPpM6of1B9UJ+Er6ySUy59PeFu0Un0LBzJTRKKAg2V6J60Yqzp99m55mLa+YTbU6xj61ImTv9mg==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -4915,12 +4541,13 @@
       }
     },
     "node_modules/@next/swc-win32-ia32-msvc": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.7.tgz",
-      "integrity": "sha512-BiSY5umlx9ed5RQDoHcdbuKTUkuFORDqzYKPHlLeS+STUWQKWziVOn3Ic41LuTBvqE0TRJPKpio9GSIblNR+0w==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.11.tgz",
+      "integrity": "sha512-0U7PWMnOYIvM74GY6rbH6w7v+vNPDVH1gUhlwHpfInJnNe5LkmUZqhp7FNWeNa5wbVgRcRi1F1cyxp4dmeLLvA==",
       "cpu": [
         "ia32"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -4930,12 +4557,13 @@
       }
     },
     "node_modules/@next/swc-win32-x64-msvc": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.7.tgz",
-      "integrity": "sha512-pxsI23gKWRt/SPHFkDEsP+w+Nd7gK37Hpv0ngc5HpWy2e7cKx9zR/+Q2ptAUqICNTecAaGWvmhway7pj/JLEWA==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.11.tgz",
+      "integrity": "sha512-gQpS7mcgovWoaTG1FbS5/ojF7CGfql1Q0ZLsMrhcsi2Sr9HEqsUZ70MPJyaYBXbk6iEAP7UXMD9HC8KY1qNwvA==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -4945,21 +4573,25 @@
       }
     },
     "node_modules/@noble/hashes": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
-      "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz",
+      "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==",
       "license": "MIT",
       "engines": {
-        "node": ">= 16"
+        "node": "^14.21.3 || >=16"
       },
       "funding": {
         "url": "https://paulmillr.com/funding/"
       }
     },
-    "node_modules/@nodejs/website": {
+    "node_modules/@node-core/website": {
       "resolved": "apps/site",
       "link": true
     },
+    "node_modules/@node-core/website-i18n": {
+      "resolved": "packages/i18n",
+      "link": true
+    },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -5018,6 +4650,7 @@
       "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz",
       "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=12.4.0"
       }
@@ -5169,6 +4802,62 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
+    "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"
+    },
+    "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==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "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": {
+        "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/@npmcli/name-from-folder": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz",
@@ -5219,6 +4908,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",
@@ -5229,6 +4934,46 @@
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
     },
+    "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"
+    },
+    "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==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "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": {
+        "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/@npmcli/promise-spawn": {
       "version": "7.0.2",
       "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz",
@@ -5278,9 +5023,9 @@
       }
     },
     "node_modules/@opentelemetry/api-logs": {
-      "version": "0.52.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz",
-      "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==",
+      "version": "0.53.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz",
+      "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==",
       "license": "Apache-2.0",
       "dependencies": {
         "@opentelemetry/api": "^1.0.0"
@@ -5290,9 +5035,9 @@
       }
     },
     "node_modules/@opentelemetry/context-async-hooks": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.1.tgz",
-      "integrity": "sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==",
+      "version": "1.26.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.26.0.tgz",
+      "integrity": "sha512-HedpXXYzzbaoutw6DFLWLDket2FwLkLpil4hGCZ1xYEIMTcivdfwEOISgdbLEWyG3HW52gTq2V9mOVJrONgiwg==",
       "license": "Apache-2.0",
       "engines": {
         "node": ">=14"
@@ -5302,12 +5047,12 @@
       }
     },
     "node_modules/@opentelemetry/core": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz",
-      "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==",
+      "version": "1.26.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz",
+      "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/semantic-conventions": "1.25.1"
+        "@opentelemetry/semantic-conventions": "1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5316,23 +5061,14 @@
         "@opentelemetry/api": ">=1.0.0 <1.10.0"
       }
     },
-    "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz",
-      "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==",
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=14"
-      }
-    },
     "node_modules/@opentelemetry/instrumentation": {
-      "version": "0.52.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz",
-      "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==",
+      "version": "0.53.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz",
+      "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/api-logs": "0.52.1",
-        "@types/shimmer": "^1.0.2",
+        "@opentelemetry/api-logs": "0.53.0",
+        "@types/shimmer": "^1.2.0",
         "import-in-the-middle": "^1.8.1",
         "require-in-the-middle": "^7.1.1",
         "semver": "^7.5.2",
@@ -5346,14 +5082,14 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-connect": {
-      "version": "0.37.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.37.0.tgz",
-      "integrity": "sha512-SeQktDIH5rNzjiEiazWiJAIXkmnLOnNV7wwHpahrqE0Ph+Z3heqMfxRtoMtbdJSIYLfcNZYO51AjxZ00IXufdw==",
+      "version": "0.39.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.39.0.tgz",
+      "integrity": "sha512-pGBiKevLq7NNglMgqzmeKczF4XQMTOUOTkK8afRHMZMnrK3fcETyTH7lVaSozwiOM3Ws+SuEmXZT7DYrrhxGlg==",
       "license": "Apache-2.0",
       "dependencies": {
         "@opentelemetry/core": "^1.8.0",
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0",
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0",
         "@types/connect": "3.4.36"
       },
       "engines": {
@@ -5364,14 +5100,14 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-express": {
-      "version": "0.40.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.40.1.tgz",
-      "integrity": "sha512-+RKMvVe2zw3kIXRup9c1jFu3T4d0fs5aKy015TpiMyoCKX1UMu3Z0lfgYtuyiSTANvg5hZnDbWmQmqSPj9VTvg==",
+      "version": "0.42.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.42.0.tgz",
+      "integrity": "sha512-YNcy7ZfGnLsVEqGXQPT+S0G1AE46N21ORY7i7yUQyfhGAL4RBjnZUqefMI0NwqIl6nGbr1IpF0rZGoN8Q7x12Q==",
       "license": "Apache-2.0",
       "dependencies": {
         "@opentelemetry/core": "^1.8.0",
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5381,14 +5117,14 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-fastify": {
-      "version": "0.37.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.37.0.tgz",
-      "integrity": "sha512-WRjwzNZgupSzbEYvo9s+QuHJRqZJjVdNxSEpGBwWK8RKLlHGwGVAu0gcc2gPamJWUJsGqPGvahAPWM18ZkWj6A==",
+      "version": "0.39.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.39.0.tgz",
+      "integrity": "sha512-SS9uSlKcsWZabhBp2szErkeuuBDgxOUlllwkS92dVaWRnMmwysPhcEgHKB8rUe3BHg/GnZC1eo1hbTZv4YhfoA==",
       "license": "Apache-2.0",
       "dependencies": {
         "@opentelemetry/core": "^1.8.0",
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5397,13 +5133,14 @@
         "@opentelemetry/api": "^1.3.0"
       }
     },
-    "node_modules/@opentelemetry/instrumentation-graphql": {
-      "version": "0.41.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.41.0.tgz",
-      "integrity": "sha512-R/gXeljgIhaRDKquVkKYT5QHPnFouM8ooyePZEP0kqyaVAedtR1V7NfAUJbxfTG5fBQa5wdmLjvu63+tzRXZCA==",
+    "node_modules/@opentelemetry/instrumentation-fs": {
+      "version": "0.15.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.15.0.tgz",
+      "integrity": "sha512-JWVKdNLpu1skqZQA//jKOcKdJC66TWKqa2FUFq70rKohvaSq47pmXlnabNO+B/BvLfmidfiaN35XakT5RyMl2Q==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/instrumentation": "^0.52.0"
+        "@opentelemetry/core": "^1.8.0",
+        "@opentelemetry/instrumentation": "^0.53.0"
       },
       "engines": {
         "node": ">=14"
@@ -5412,15 +5149,13 @@
         "@opentelemetry/api": "^1.3.0"
       }
     },
-    "node_modules/@opentelemetry/instrumentation-hapi": {
+    "node_modules/@opentelemetry/instrumentation-generic-pool": {
       "version": "0.39.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.39.0.tgz",
-      "integrity": "sha512-ik2nA9Yj2s2ay+aNY+tJsKCsEx6Tsc2g/MK0iWBW5tibwrWKTy1pdVt5sB3kd5Gkimqj23UV5+FH2JFcQLeKug==",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz",
+      "integrity": "sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/core": "^1.8.0",
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0"
+        "@opentelemetry/instrumentation": "^0.53.0"
       },
       "engines": {
         "node": ">=14"
@@ -5429,16 +5164,13 @@
         "@opentelemetry/api": "^1.3.0"
       }
     },
-    "node_modules/@opentelemetry/instrumentation-http": {
-      "version": "0.52.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.52.1.tgz",
-      "integrity": "sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q==",
+    "node_modules/@opentelemetry/instrumentation-graphql": {
+      "version": "0.43.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.43.0.tgz",
+      "integrity": "sha512-aI3YMmC2McGd8KW5du1a2gBA0iOMOGLqg4s9YjzwbjFwjlmMNFSK1P3AIg374GWg823RPUGfVTIgZ/juk9CVOA==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/core": "1.25.1",
-        "@opentelemetry/instrumentation": "0.52.1",
-        "@opentelemetry/semantic-conventions": "1.25.1",
-        "semver": "^7.5.2"
+        "@opentelemetry/instrumentation": "^0.53.0"
       },
       "engines": {
         "node": ">=14"
@@ -5447,24 +5179,33 @@
         "@opentelemetry/api": "^1.3.0"
       }
     },
-    "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz",
-      "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==",
+    "node_modules/@opentelemetry/instrumentation-hapi": {
+      "version": "0.41.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz",
+      "integrity": "sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==",
       "license": "Apache-2.0",
+      "dependencies": {
+        "@opentelemetry/core": "^1.8.0",
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
+      },
       "engines": {
         "node": ">=14"
+      },
+      "peerDependencies": {
+        "@opentelemetry/api": "^1.3.0"
       }
     },
-    "node_modules/@opentelemetry/instrumentation-ioredis": {
-      "version": "0.41.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.41.0.tgz",
-      "integrity": "sha512-rxiLloU8VyeJGm5j2fZS8ShVdB82n7VNP8wTwfUQqDwRfHCnkzGr+buKoxuhGD91gtwJ91RHkjHA1Eg6RqsUTg==",
+    "node_modules/@opentelemetry/instrumentation-http": {
+      "version": "0.53.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz",
+      "integrity": "sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/redis-common": "^0.36.2",
-        "@opentelemetry/semantic-conventions": "^1.23.0"
+        "@opentelemetry/core": "1.26.0",
+        "@opentelemetry/instrumentation": "0.53.0",
+        "@opentelemetry/semantic-conventions": "1.27.0",
+        "semver": "^7.5.2"
       },
       "engines": {
         "node": ">=14"
@@ -5473,17 +5214,15 @@
         "@opentelemetry/api": "^1.3.0"
       }
     },
-    "node_modules/@opentelemetry/instrumentation-koa": {
-      "version": "0.41.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.41.0.tgz",
-      "integrity": "sha512-mbPnDt7ELvpM2S0vixYUsde7122lgegLOJQxx8iJQbB8YHal/xnTh9v7IfArSVzIDo+E+080hxZyUZD4boOWkw==",
+    "node_modules/@opentelemetry/instrumentation-ioredis": {
+      "version": "0.43.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz",
+      "integrity": "sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/core": "^1.8.0",
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0",
-        "@types/koa": "2.14.0",
-        "@types/koa__router": "12.0.3"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/redis-common": "^0.36.2",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5492,15 +5231,48 @@
         "@opentelemetry/api": "^1.3.0"
       }
     },
-    "node_modules/@opentelemetry/instrumentation-mongodb": {
-      "version": "0.45.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.45.0.tgz",
-      "integrity": "sha512-xnZP9+ayeB1JJyNE9cIiwhOJTzNEsRhXVdLgfzmrs48Chhhk026mQdM5CITfyXSCfN73FGAIB8d91+pflJEfWQ==",
+    "node_modules/@opentelemetry/instrumentation-kafkajs": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.3.0.tgz",
+      "integrity": "sha512-UnkZueYK1ise8FXQeKlpBd7YYUtC7mM8J0wzUSccEfc/G8UqHQqAzIyYCUOUPUKp8GsjLnWOOK/3hJc4owb7Jg==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/sdk-metrics": "^1.9.1",
-        "@opentelemetry/semantic-conventions": "^1.22.0"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "peerDependencies": {
+        "@opentelemetry/api": "^1.3.0"
+      }
+    },
+    "node_modules/@opentelemetry/instrumentation-koa": {
+      "version": "0.43.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz",
+      "integrity": "sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@opentelemetry/core": "^1.8.0",
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "peerDependencies": {
+        "@opentelemetry/api": "^1.3.0"
+      }
+    },
+    "node_modules/@opentelemetry/instrumentation-mongodb": {
+      "version": "0.47.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz",
+      "integrity": "sha512-yqyXRx2SulEURjgOQyJzhCECSh5i1uM49NUaq9TqLd6fA7g26OahyJfsr9NE38HFqGRHpi4loyrnfYGdrsoVjQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/sdk-metrics": "^1.9.1",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5510,14 +5282,14 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-mongoose": {
-      "version": "0.39.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.39.0.tgz",
-      "integrity": "sha512-J1r66A7zJklPPhMtrFOO7/Ud2p0Pv5u8+r23Cd1JUH6fYPmftNJVsLp2urAt6PHK4jVqpP/YegN8wzjJ2mZNPQ==",
+      "version": "0.42.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz",
+      "integrity": "sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==",
       "license": "Apache-2.0",
       "dependencies": {
         "@opentelemetry/core": "^1.8.0",
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5527,14 +5299,14 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-mysql": {
-      "version": "0.39.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.39.0.tgz",
-      "integrity": "sha512-8snHPh83rhrDf31v9Kq0Nf+ts8hdr7NguuszRqZomZBHgE0+UyXZSkXHAAFZoBPPRMGyM68uaFE5hVtFl+wOcA==",
+      "version": "0.41.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz",
+      "integrity": "sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0",
-        "@types/mysql": "2.15.22"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0",
+        "@types/mysql": "2.15.26"
       },
       "engines": {
         "node": ">=14"
@@ -5544,13 +5316,13 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-mysql2": {
-      "version": "0.39.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.39.0.tgz",
-      "integrity": "sha512-Iypuq2z6TCfriAXCIZjRq8GTFCKhQv5SpXbmI+e60rYdXw8NHtMH4NXcGF0eKTuoCsC59IYSTUvDQYDKReaszA==",
+      "version": "0.41.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz",
+      "integrity": "sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0",
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0",
         "@opentelemetry/sql-common": "^0.40.1"
       },
       "engines": {
@@ -5561,13 +5333,13 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-nestjs-core": {
-      "version": "0.38.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.38.0.tgz",
-      "integrity": "sha512-M381Df1dM8aqihZz2yK+ugvMFK5vlHG/835dc67Sx2hH4pQEQYDA2PpFPTgc9AYYOydQaj7ClFQunESimjXDgg==",
+      "version": "0.40.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz",
+      "integrity": "sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.23.0"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5577,16 +5349,16 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-pg": {
-      "version": "0.42.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.42.0.tgz",
-      "integrity": "sha512-sjgcM8CswYy8zxHgXv4RAZ09DlYhQ+9TdlourUs63Df/ek5RrB1ZbjznqW7PB6c3TyJJmX6AVtPTjAsROovEjA==",
+      "version": "0.44.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz",
+      "integrity": "sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/instrumentation": "^0.52.0",
-        "@opentelemetry/semantic-conventions": "^1.22.0",
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0",
         "@opentelemetry/sql-common": "^0.40.1",
         "@types/pg": "8.6.1",
-        "@types/pg-pool": "2.0.4"
+        "@types/pg-pool": "2.0.6"
       },
       "engines": {
         "node": ">=14"
@@ -5596,14 +5368,14 @@
       }
     },
     "node_modules/@opentelemetry/instrumentation-redis-4": {
-      "version": "0.40.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.40.0.tgz",
-      "integrity": "sha512-0ieQYJb6yl35kXA75LQUPhHtGjtQU9L85KlWa7d4ohBbk/iQKZ3X3CFl5jC5vNMq/GGPB3+w3IxNvALlHtrp7A==",
+      "version": "0.42.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz",
+      "integrity": "sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/instrumentation": "^0.52.0",
+        "@opentelemetry/instrumentation": "^0.53.0",
         "@opentelemetry/redis-common": "^0.36.2",
-        "@opentelemetry/semantic-conventions": "^1.22.0"
+        "@opentelemetry/semantic-conventions": "^1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5612,6 +5384,22 @@
         "@opentelemetry/api": "^1.3.0"
       }
     },
+    "node_modules/@opentelemetry/instrumentation-undici": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz",
+      "integrity": "sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@opentelemetry/core": "^1.8.0",
+        "@opentelemetry/instrumentation": "^0.53.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "peerDependencies": {
+        "@opentelemetry/api": "^1.7.0"
+      }
+    },
     "node_modules/@opentelemetry/redis-common": {
       "version": "0.36.2",
       "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz",
@@ -5622,13 +5410,13 @@
       }
     },
     "node_modules/@opentelemetry/resources": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz",
-      "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==",
+      "version": "1.26.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz",
+      "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/core": "1.25.1",
-        "@opentelemetry/semantic-conventions": "1.25.1"
+        "@opentelemetry/core": "1.26.0",
+        "@opentelemetry/semantic-conventions": "1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5637,24 +5425,14 @@
         "@opentelemetry/api": ">=1.0.0 <1.10.0"
       }
     },
-    "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz",
-      "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==",
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=14"
-      }
-    },
     "node_modules/@opentelemetry/sdk-metrics": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz",
-      "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==",
+      "version": "1.26.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz",
+      "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/core": "1.25.1",
-        "@opentelemetry/resources": "1.25.1",
-        "lodash.merge": "^4.6.2"
+        "@opentelemetry/core": "1.26.0",
+        "@opentelemetry/resources": "1.26.0"
       },
       "engines": {
         "node": ">=14"
@@ -5664,14 +5442,14 @@
       }
     },
     "node_modules/@opentelemetry/sdk-trace-base": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.1.tgz",
-      "integrity": "sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==",
+      "version": "1.26.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.26.0.tgz",
+      "integrity": "sha512-olWQldtvbK4v22ymrKLbIcBi9L2SpMO84sCPY54IVsJhP9fRsxJT194C/AVaAuJzLE30EdhhM1VmvVYR7az+cw==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@opentelemetry/core": "1.25.1",
-        "@opentelemetry/resources": "1.25.1",
-        "@opentelemetry/semantic-conventions": "1.25.1"
+        "@opentelemetry/core": "1.26.0",
+        "@opentelemetry/resources": "1.26.0",
+        "@opentelemetry/semantic-conventions": "1.27.0"
       },
       "engines": {
         "node": ">=14"
@@ -5680,19 +5458,10 @@
         "@opentelemetry/api": ">=1.0.0 <1.10.0"
       }
     },
-    "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": {
-      "version": "1.25.1",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz",
-      "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==",
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=14"
-      }
-    },
     "node_modules/@opentelemetry/semantic-conventions": {
-      "version": "1.26.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.26.0.tgz",
-      "integrity": "sha512-U9PJlOswJPSgQVPI+XEuNLElyFWkb0hAiMg+DExD9V0St03X2lPHGMdxMY/LrVmoukuIpXJ12oyrOtEZ4uXFkw==",
+      "version": "1.27.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz",
+      "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==",
       "license": "Apache-2.0",
       "engines": {
         "node": ">=14"
@@ -5723,18 +5492,18 @@
       }
     },
     "node_modules/@orama/orama": {
-      "version": "2.0.23",
-      "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-2.0.23.tgz",
-      "integrity": "sha512-hb99eZAKW0KBaTyf8f7iV1yFIniQtkcs3sV5pooQ7mh33DCjTyeB39qUW8IHyBDFSs2rjLoePjW0CROvhb3rkw==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-2.1.0.tgz",
+      "integrity": "sha512-6Z6acBHmXGhp2Dom0ZvGJsJ1tkCwvs+uqNZUnhBbUTDvX4U1EMSGiTZt3fJFXy1enLKse6lOpG+E76/MnQIdBw==",
       "license": "Apache-2.0",
       "engines": {
         "node": ">= 16.0.0"
       }
     },
     "node_modules/@oramacloud/client": {
-      "version": "1.3.14",
-      "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.14.tgz",
-      "integrity": "sha512-lD8i0+52W+RX5mDVfEEEdp38NvVCi5fX7GHLUlVTkKGnb5W8u2lEJlYnVhq9Lt0A5Qs3T9NYIczgTvUzD3jzpA==",
+      "version": "1.3.15",
+      "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.15.tgz",
+      "integrity": "sha512-QBgQrK0WA9pPzeVh/E6p44erwL0IJaHB3TrbEAsrduqbj38xY06jjpYsn//2fJt34jEnIBjOwPkjZ3OJEJlR4A==",
       "license": "ISC",
       "dependencies": {
         "@orama/orama": "^2.0.16",
@@ -5842,9 +5611,9 @@
       }
     },
     "node_modules/@prisma/instrumentation": {
-      "version": "5.16.1",
-      "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.16.1.tgz",
-      "integrity": "sha512-4m5gRFWnQb8s/yTyGbMZkL7A5uJgqOWcWJxapwcAD0T0kh5sGPEVSQl/zTQvE9aduXhFAxOtC3gO+R8Hb5xO1Q==",
+      "version": "5.19.1",
+      "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.19.1.tgz",
+      "integrity": "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==",
       "license": "Apache-2.0",
       "dependencies": {
         "@opentelemetry/api": "^1.8",
@@ -5852,6 +5621,38 @@
         "@opentelemetry/sdk-trace-base": "^1.22"
       }
     },
+    "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": {
+      "version": "0.52.1",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz",
+      "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@opentelemetry/api": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": {
+      "version": "0.52.1",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz",
+      "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@opentelemetry/api-logs": "0.52.1",
+        "@types/shimmer": "^1.0.2",
+        "import-in-the-middle": "^1.8.1",
+        "require-in-the-middle": "^7.1.1",
+        "semver": "^7.5.2",
+        "shimmer": "^1.2.1"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "peerDependencies": {
+        "@opentelemetry/api": "^1.3.0"
+      }
+    },
     "node_modules/@radix-ui/number": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz",
@@ -6707,6 +6508,58 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
+    "node_modules/@rollup/plugin-commonjs/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": {
+        "@isaacs/cliui": "^8.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      },
+      "optionalDependencies": {
+        "@pkgjs/parseargs": "^0.11.0"
+      }
+    },
+    "node_modules/@rollup/plugin-commonjs/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/@rollup/plugin-commonjs/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",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@rollup/plugin-commonjs/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.18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@rollup/pluginutils": {
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
@@ -6735,12 +6588,6 @@
       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
       "license": "MIT"
     },
-    "node_modules/@rtsao/scc": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
-      "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
-      "dev": true
-    },
     "node_modules/@rushstack/eslint-patch": {
       "version": "1.10.4",
       "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz",
@@ -6761,99 +6608,99 @@
       }
     },
     "node_modules/@sentry-internal/browser-utils": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.14.0.tgz",
-      "integrity": "sha512-ldIa3qeMYZ5WUdcuBqQhXOSrEPZwB09gmELzFietjcPZTK1naAE5g5On94gpj1je1dn1S0+tXJ0a7SJS9Tu4Sw==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.30.0.tgz",
+      "integrity": "sha512-pwX+awNWaxSOAsBLVLqc1+Hw+Fm1Nci9mbKFA6Ed5YzCG049PnBVQwugpmx2dcyyCqJpORhcIqb9jHdCkYmCiA==",
       "license": "MIT",
       "dependencies": {
-        "@sentry/core": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@sentry/core": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry-internal/feedback": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.14.0.tgz",
-      "integrity": "sha512-0mBSTdoCEgzWS4btIIZF8XSnAo0eK6gr7Md7xVVOZMd/er0DgYVKl+z3dMoidyijGcrAlJssECUxWHOV3iJitQ==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.30.0.tgz",
+      "integrity": "sha512-ParFRxQY6helxkwUDmro77Wc5uSIC6rZos88jYMrYwFmoTJaNWf4lDzPyECfdSiSYyzSMZk4dorSUN85Ul7DCg==",
       "license": "MIT",
       "dependencies": {
-        "@sentry/core": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@sentry/core": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry-internal/replay": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.14.0.tgz",
-      "integrity": "sha512-ntc4+1asXCUvM/Oiot/z3+mlCZ83imphbPdiI9ilLErQjDsXFsvNTXe6a0TMoCckKcnypTG6LFyQS62okDiG5Q==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.30.0.tgz",
+      "integrity": "sha512-/KFre+BrovPCiovgAu5N1ErJtkDVzkJA5hV3Jw011AlxRWxrmPwu6+9sV9/rn3tqYAGyq6IggYqeIOHhLh1Ihg==",
       "license": "MIT",
       "dependencies": {
-        "@sentry-internal/browser-utils": "8.14.0",
-        "@sentry/core": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@sentry-internal/browser-utils": "8.30.0",
+        "@sentry/core": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry-internal/replay-canvas": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.14.0.tgz",
-      "integrity": "sha512-8md1ZxuEk51PNFPbwxVDc7RJ7RSNWHiGLNWYQO/MTKonZf78x4OfQLNIHgQ4z4nMUP38NfjMVkNi21LGW+vMNA==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.30.0.tgz",
+      "integrity": "sha512-y/QqcvchhtMlVA6eOZicIfTxtZarazQZJuFW0018ynPxBTiuuWSxMCLqduulXUYsFejfD8/eKHb3BpCIFdDYjg==",
       "license": "MIT",
       "dependencies": {
-        "@sentry-internal/replay": "8.14.0",
-        "@sentry/core": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@sentry-internal/replay": "8.30.0",
+        "@sentry/core": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry/babel-plugin-component-annotate": {
-      "version": "2.20.1",
-      "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.20.1.tgz",
-      "integrity": "sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg==",
+      "version": "2.22.3",
+      "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.3.tgz",
+      "integrity": "sha512-OlHA+i+vnQHRIdry4glpiS/xTOtgjmpXOt6IBOUqynx5Jd/iK1+fj+t8CckqOx9wRacO/hru2wfW/jFq0iViLg==",
       "license": "MIT",
       "engines": {
         "node": ">= 14"
       }
     },
     "node_modules/@sentry/browser": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.14.0.tgz",
-      "integrity": "sha512-XQ28e/vcxtI+TwSpvfqS86nZtY0538ZUdda1vZmkpu9eXT632tzk1P8rNhiIUs0lCssQw8sakTUzjxZxEe0+ZA==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.30.0.tgz",
+      "integrity": "sha512-M+tKqawH9S3CqlAIcqdZcHbcsNQkEa9MrPqPCYvXco3C4LRpNizJP2XwBiGQY2yK+fOSvbaWpPtlI938/wuRZQ==",
       "license": "MIT",
       "dependencies": {
-        "@sentry-internal/browser-utils": "8.14.0",
-        "@sentry-internal/feedback": "8.14.0",
-        "@sentry-internal/replay": "8.14.0",
-        "@sentry-internal/replay-canvas": "8.14.0",
-        "@sentry/core": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@sentry-internal/browser-utils": "8.30.0",
+        "@sentry-internal/feedback": "8.30.0",
+        "@sentry-internal/replay": "8.30.0",
+        "@sentry-internal/replay-canvas": "8.30.0",
+        "@sentry/core": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry/bundler-plugin-core": {
-      "version": "2.20.1",
-      "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.20.1.tgz",
-      "integrity": "sha512-6ipbmGzHekxeRCbp7eoefr6bdd/lW4cNA9eNnrmd9+PicubweGaZZbH2NjhFHsaxzgOezwipDHjrTaap2kTHgw==",
+      "version": "2.22.3",
+      "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.3.tgz",
+      "integrity": "sha512-DeoUl0WffcqZZRl5Wy9aHvX4WfZbbWt0QbJ7NJrcEViq+dRAI2FQTYECFLwdZi5Gtb3oyqZICO+P7k8wDnzsjQ==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.18.5",
-        "@sentry/babel-plugin-component-annotate": "2.20.1",
-        "@sentry/cli": "^2.22.3",
+        "@sentry/babel-plugin-component-annotate": "2.22.3",
+        "@sentry/cli": "^2.33.1",
         "dotenv": "^16.3.1",
         "find-up": "^5.0.0",
         "glob": "^9.3.2",
@@ -6882,6 +6729,12 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
+    "node_modules/@sentry/bundler-plugin-core/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/@sentry/bundler-plugin-core/node_modules/magic-string": {
       "version": "0.30.8",
       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz",
@@ -6918,10 +6771,35 @@
         "node": ">=8"
       }
     },
+    "node_modules/@sentry/bundler-plugin-core/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.18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@sentry/bundler-plugin-core/node_modules/path-scurry/node_modules/minipass": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
     "node_modules/@sentry/cli": {
-      "version": "2.33.1",
-      "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.33.1.tgz",
-      "integrity": "sha512-dUlZ4EFh98VFRPJ+f6OW3JEYQ7VvqGNMa0AMcmvk07ePNeK/GicAWmSQE4ZfJTTl80ul6HZw1kY01fGQOQlVRA==",
+      "version": "2.36.1",
+      "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.36.1.tgz",
+      "integrity": "sha512-gzK5uQKDWKhyH5udoB5+oaUNrS//urWyaXgKvHKz4gFfl744HuKY9dpLPP2nMnf0zLGmGM6xJnMXLqILq0mtxw==",
       "hasInstallScript": true,
       "license": "BSD-3-Clause",
       "dependencies": {
@@ -6938,19 +6816,19 @@
         "node": ">= 10"
       },
       "optionalDependencies": {
-        "@sentry/cli-darwin": "2.33.1",
-        "@sentry/cli-linux-arm": "2.33.1",
-        "@sentry/cli-linux-arm64": "2.33.1",
-        "@sentry/cli-linux-i686": "2.33.1",
-        "@sentry/cli-linux-x64": "2.33.1",
-        "@sentry/cli-win32-i686": "2.33.1",
-        "@sentry/cli-win32-x64": "2.33.1"
+        "@sentry/cli-darwin": "2.36.1",
+        "@sentry/cli-linux-arm": "2.36.1",
+        "@sentry/cli-linux-arm64": "2.36.1",
+        "@sentry/cli-linux-i686": "2.36.1",
+        "@sentry/cli-linux-x64": "2.36.1",
+        "@sentry/cli-win32-i686": "2.36.1",
+        "@sentry/cli-win32-x64": "2.36.1"
       }
     },
     "node_modules/@sentry/cli-darwin": {
-      "version": "2.33.1",
-      "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.33.1.tgz",
-      "integrity": "sha512-+4/VIx/E1L2hChj5nGf5MHyEPHUNHJ/HoG5RY+B+vyEutGily1c1+DM2bum7RbD0xs6wKLIyup5F02guzSzG8A==",
+      "version": "2.36.1",
+      "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.36.1.tgz",
+      "integrity": "sha512-JOHQjVD8Kqxm1jUKioAP5ohLOITf+Dh6+DBz4gQjCNdotsvNW5m63TKROwq2oB811p+Jzv5304ujmN4cAqW1Ww==",
       "license": "BSD-3-Clause",
       "optional": true,
       "os": [
@@ -6961,9 +6839,9 @@
       }
     },
     "node_modules/@sentry/cli-linux-arm": {
-      "version": "2.33.1",
-      "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.33.1.tgz",
-      "integrity": "sha512-zbxEvQju+tgNvzTOt635le4kS/Fbm2XC2RtYbCTs034Vb8xjrAxLnK0z1bQnStUV8BkeBHtsNVrG+NSQDym2wg==",
+      "version": "2.36.1",
+      "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.36.1.tgz",
+      "integrity": "sha512-gvEOKN0fWL2AVqUBKHNXPRZfJNvKTs8kQhS8cQqahZGgZHiPCI4BqW45cKMq+ZTt1UUbLmt6khx5Dz7wi+0i5A==",
       "cpu": [
         "arm"
       ],
@@ -6978,9 +6856,9 @@
       }
     },
     "node_modules/@sentry/cli-linux-arm64": {
-      "version": "2.33.1",
-      "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.33.1.tgz",
-      "integrity": "sha512-DbGV56PRKOLsAZJX27Jt2uZ11QfQEMmWB4cIvxkKcFVE+LJP4MVA+MGGRUL6p+Bs1R9ZUuGbpKGtj0JiG6CoXw==",
+      "version": "2.36.1",
+      "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.36.1.tgz",
+      "integrity": "sha512-R//3ZEkbzvoStr3IA7nxBZNiBYyxOljOqAhgiTnejXHmnuwDzM3TBA2n5vKPE/kBFxboEBEw0UTzTIRb1T0bgw==",
       "cpu": [
         "arm64"
       ],
@@ -6995,9 +6873,9 @@
       }
     },
     "node_modules/@sentry/cli-linux-i686": {
-      "version": "2.33.1",
-      "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.33.1.tgz",
-      "integrity": "sha512-g2LS4oPXkPWOfKWukKzYp4FnXVRRSwBxhuQ9eSw2peeb58ZIObr4YKGOA/8HJRGkooBJIKGaAR2mH2Pk1TKaiA==",
+      "version": "2.36.1",
+      "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.36.1.tgz",
+      "integrity": "sha512-R7sW5Vk/HacVy2YgQoQB+PwccvFYf2CZVPSFSFm2z7MEfNe77UYHWUq+sjJ4vxWG6HDWGVmaX0fjxyDkE01JRA==",
       "cpu": [
         "x86",
         "ia32"
@@ -7013,9 +6891,9 @@
       }
     },
     "node_modules/@sentry/cli-linux-x64": {
-      "version": "2.33.1",
-      "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.33.1.tgz",
-      "integrity": "sha512-IV3dcYV/ZcvO+VGu9U6kuxSdbsV2kzxaBwWUQxtzxJ+cOa7J8Hn1t0koKGtU53JVZNBa06qJWIcqgl4/pCuKIg==",
+      "version": "2.36.1",
+      "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.36.1.tgz",
+      "integrity": "sha512-UMr3ik8ksA7zQfbzsfwCb+ztenLnaeAbX94Gp+bzANZwPfi/vVHf2bLyqsBs4OyVt9SPlN1bbM/RTGfMjZ3JOw==",
       "cpu": [
         "x64"
       ],
@@ -7030,9 +6908,9 @@
       }
     },
     "node_modules/@sentry/cli-win32-i686": {
-      "version": "2.33.1",
-      "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.33.1.tgz",
-      "integrity": "sha512-F7cJySvkpzIu7fnLKNHYwBzZYYwlhoDbAUnaFX0UZCN+5DNp/5LwTp37a5TWOsmCaHMZT4i9IO4SIsnNw16/zQ==",
+      "version": "2.36.1",
+      "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.36.1.tgz",
+      "integrity": "sha512-CflvhnvxPEs5GWQuuDtYSLqPrBaPbcSJFlBuUIb+8WNzRxvVfjgw1qzfZmkQqABqiy/YEsEekllOoMFZAvCcVA==",
       "cpu": [
         "x86",
         "ia32"
@@ -7047,9 +6925,9 @@
       }
     },
     "node_modules/@sentry/cli-win32-x64": {
-      "version": "2.33.1",
-      "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.33.1.tgz",
-      "integrity": "sha512-8VyRoJqtb2uQ8/bFRKNuACYZt7r+Xx0k2wXRGTyH05lCjAiVIXn7DiS2BxHFty7M1QEWUCMNsb/UC/x/Cu2wuA==",
+      "version": "2.36.1",
+      "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.36.1.tgz",
+      "integrity": "sha512-wWqht2xghcK3TGnooHZSzA3WSjdtno/xFjZLvWmw38rblGwgKMxLZnlxV6uDyS+OJ6CbfDTlCRay/0TIqA0N8g==",
       "cpu": [
         "x64"
       ],
@@ -7063,34 +6941,35 @@
       }
     },
     "node_modules/@sentry/core": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.14.0.tgz",
-      "integrity": "sha512-kEB8R3hMxdJRzwZwNqIxwrnmKx/iNl2ZHL/48/ywJu4u+qkBqQs9OsR+ACa+eZyAZTY5T0cPRGsUcNdnwy1ZAg==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.30.0.tgz",
+      "integrity": "sha512-CJ/FuWLw0QEKGKXGL/nm9eaOdajEcmPekLuHAuOCxID7N07R9l9laz3vFbAkUZ97GGDv3sYrJZgywfY3Moropg==",
       "license": "MIT",
       "dependencies": {
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry/nextjs": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.14.0.tgz",
-      "integrity": "sha512-K1pdkh+V+MxWxdwwxQe1pkauE9OJ6cGP5UTAJXDaQIYOLToVhrjz4igg9MRvbe1WcA64uiTHHvYts9vmwXTGQw==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.30.0.tgz",
+      "integrity": "sha512-835H7/ERIGvxE2m9cYqB5Mmd4PfLPlVQdyJAEL3br7fpl5mp3A3JtA3AiZ98smpVW/rUkLHGOWziRb6uTgJSXA==",
       "license": "MIT",
       "dependencies": {
-        "@opentelemetry/instrumentation-http": "0.52.1",
+        "@opentelemetry/instrumentation-http": "0.53.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0",
         "@rollup/plugin-commonjs": "26.0.1",
-        "@sentry/core": "8.14.0",
-        "@sentry/node": "8.14.0",
-        "@sentry/opentelemetry": "8.14.0",
-        "@sentry/react": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0",
-        "@sentry/vercel-edge": "8.14.0",
-        "@sentry/webpack-plugin": "2.20.1",
+        "@sentry/core": "8.30.0",
+        "@sentry/node": "8.30.0",
+        "@sentry/opentelemetry": "8.30.0",
+        "@sentry/react": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0",
+        "@sentry/vercel-edge": "8.30.0",
+        "@sentry/webpack-plugin": "2.22.3",
         "chalk": "3.0.0",
         "resolve": "1.22.8",
         "rollup": "3.29.4",
@@ -7101,7 +6980,7 @@
       },
       "peerDependencies": {
         "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0",
-        "webpack": ">= 5.0.0"
+        "webpack": "5.94.0"
       },
       "peerDependenciesMeta": {
         "webpack": {
@@ -7110,55 +6989,57 @@
       }
     },
     "node_modules/@sentry/node": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.14.0.tgz",
-      "integrity": "sha512-C/Gwk4iHo2AbMX3X8aoZR1pYhr5WwaeTZZXSytglbKJgy5Udi/jB/3PKJqJnzJX4xCSvNj7rp75QM+E+3fAzbw==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.30.0.tgz",
+      "integrity": "sha512-Tog0Ag7sU3lNj4cPUZy1KRJXyYXZlWiwlk34KYNNxAk0vDiK6W0bF8mvS+aaUukgb7FO5A0eu9l+VApdBJOr3Q==",
       "license": "MIT",
       "dependencies": {
         "@opentelemetry/api": "^1.9.0",
         "@opentelemetry/context-async-hooks": "^1.25.1",
         "@opentelemetry/core": "^1.25.1",
-        "@opentelemetry/instrumentation": "^0.52.1",
-        "@opentelemetry/instrumentation-connect": "0.37.0",
-        "@opentelemetry/instrumentation-express": "0.40.1",
-        "@opentelemetry/instrumentation-fastify": "0.37.0",
-        "@opentelemetry/instrumentation-graphql": "0.41.0",
-        "@opentelemetry/instrumentation-hapi": "0.39.0",
-        "@opentelemetry/instrumentation-http": "0.52.1",
-        "@opentelemetry/instrumentation-ioredis": "0.41.0",
-        "@opentelemetry/instrumentation-koa": "0.41.0",
-        "@opentelemetry/instrumentation-mongodb": "0.45.0",
-        "@opentelemetry/instrumentation-mongoose": "0.39.0",
-        "@opentelemetry/instrumentation-mysql": "0.39.0",
-        "@opentelemetry/instrumentation-mysql2": "0.39.0",
-        "@opentelemetry/instrumentation-nestjs-core": "0.38.0",
-        "@opentelemetry/instrumentation-pg": "0.42.0",
-        "@opentelemetry/instrumentation-redis-4": "0.40.0",
-        "@opentelemetry/resources": "^1.25.1",
-        "@opentelemetry/sdk-trace-base": "^1.25.1",
-        "@opentelemetry/semantic-conventions": "^1.25.1",
-        "@prisma/instrumentation": "5.16.1",
-        "@sentry/core": "8.14.0",
-        "@sentry/opentelemetry": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/instrumentation-connect": "0.39.0",
+        "@opentelemetry/instrumentation-express": "0.42.0",
+        "@opentelemetry/instrumentation-fastify": "0.39.0",
+        "@opentelemetry/instrumentation-fs": "0.15.0",
+        "@opentelemetry/instrumentation-generic-pool": "0.39.0",
+        "@opentelemetry/instrumentation-graphql": "0.43.0",
+        "@opentelemetry/instrumentation-hapi": "0.41.0",
+        "@opentelemetry/instrumentation-http": "0.53.0",
+        "@opentelemetry/instrumentation-ioredis": "0.43.0",
+        "@opentelemetry/instrumentation-kafkajs": "0.3.0",
+        "@opentelemetry/instrumentation-koa": "0.43.0",
+        "@opentelemetry/instrumentation-mongodb": "0.47.0",
+        "@opentelemetry/instrumentation-mongoose": "0.42.0",
+        "@opentelemetry/instrumentation-mysql": "0.41.0",
+        "@opentelemetry/instrumentation-mysql2": "0.41.0",
+        "@opentelemetry/instrumentation-nestjs-core": "0.40.0",
+        "@opentelemetry/instrumentation-pg": "0.44.0",
+        "@opentelemetry/instrumentation-redis-4": "0.42.0",
+        "@opentelemetry/instrumentation-undici": "0.6.0",
+        "@opentelemetry/resources": "^1.26.0",
+        "@opentelemetry/sdk-trace-base": "^1.26.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0",
+        "@prisma/instrumentation": "5.19.1",
+        "@sentry/core": "8.30.0",
+        "@sentry/opentelemetry": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0",
+        "import-in-the-middle": "^1.11.0"
       },
       "engines": {
         "node": ">=14.18"
-      },
-      "optionalDependencies": {
-        "opentelemetry-instrumentation-fetch-node": "1.2.0"
       }
     },
     "node_modules/@sentry/opentelemetry": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.14.0.tgz",
-      "integrity": "sha512-Kf7mzxhmHQFf3G1tueAhKHFF3wfGiAyCGzSof7QwhHaUp2a3iHOFHGpzcPaq+RS9O01qAQDq0GYChj0VpBH34g==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.30.0.tgz",
+      "integrity": "sha512-6mCIP2zvxAiEsNEoF8kv+UUD4XGWSKJU6RY5BF1U26HLitXv1fNPtzaTR96Ehv9h0zktjLfqfpVUZ7DGkdBvLA==",
       "license": "MIT",
       "dependencies": {
-        "@sentry/core": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@sentry/core": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
@@ -7166,21 +7047,21 @@
       "peerDependencies": {
         "@opentelemetry/api": "^1.9.0",
         "@opentelemetry/core": "^1.25.1",
-        "@opentelemetry/instrumentation": "^0.52.1",
-        "@opentelemetry/sdk-trace-base": "^1.25.1",
-        "@opentelemetry/semantic-conventions": "^1.25.1"
+        "@opentelemetry/instrumentation": "^0.53.0",
+        "@opentelemetry/sdk-trace-base": "^1.26.0",
+        "@opentelemetry/semantic-conventions": "^1.27.0"
       }
     },
     "node_modules/@sentry/react": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.14.0.tgz",
-      "integrity": "sha512-Fvpi75ipK7XJEEVWxnEm5tol1bL6/LsBDIULQia1pSYqGDfnosYwkmRmNjhtIkhQTyDbbER9ZFypT+cwGS1mUw==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.30.0.tgz",
+      "integrity": "sha512-ktQjXs87jdsxW0YrHci3sb6zcSzhMECWnrTVU/KGZF8UoDsk4P4xRCknijd2SSmDIjSkwzUAANR43UkCi4BTQg==",
       "license": "MIT",
       "dependencies": {
-        "@sentry/browser": "8.14.0",
-        "@sentry/core": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0",
+        "@sentry/browser": "8.30.0",
+        "@sentry/core": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0",
         "hoist-non-react-statics": "^3.3.2"
       },
       "engines": {
@@ -7191,47 +7072,47 @@
       }
     },
     "node_modules/@sentry/types": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.14.0.tgz",
-      "integrity": "sha512-RTXp96JPY3OM7Y3J8CaAYEkhosyTXrT/2uE7dTmPn1z7Oxunp8MYyyfSU4HtvDeMA3dxbI4dhNmXpfRyclV4Ew==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.30.0.tgz",
+      "integrity": "sha512-kgWW2BCjBmVlSQRG32GonHEVyeDbys74xf9mLPvynwHTgw3+NUlNAlEdu05xnb2ow4bCTHfbkS5G1zRgyv5k4Q==",
       "license": "MIT",
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry/utils": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.14.0.tgz",
-      "integrity": "sha512-EWlBrYEqdgmDn/C8iRr+z2jSwUXOQL73NG+cbsJtGWSDGSmBLsGNPk2wgKq6U5Nu7Icyw2+10QbbqS5F1Q1bvQ==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.30.0.tgz",
+      "integrity": "sha512-wZxU2HWlzsnu8214Xy7S7cRIuD6h8Z5DnnkojJfX0i0NLooepZQk2824el1Q13AakLb7/S8CHSHXOMnCtoSduw==",
       "license": "MIT",
       "dependencies": {
-        "@sentry/types": "8.14.0"
+        "@sentry/types": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry/vercel-edge": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.14.0.tgz",
-      "integrity": "sha512-UEl0Wc+PAXb3qW6CHQ/UXPpbtwsmkAytrY3rwXAcF0iAwiSxxe5IeFNfKk5QpDbUzq65jv8aJaww7RicQEaG5A==",
+      "version": "8.30.0",
+      "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.30.0.tgz",
+      "integrity": "sha512-0R0HWmPZwIOunj4JQoOT9FexhesAVNpMkM2mezP7QlVGGBQA39s9j8+o658Ymh8xzKo1ZTg4pHjoySLPhrN1JA==",
       "license": "MIT",
       "dependencies": {
-        "@sentry/core": "8.14.0",
-        "@sentry/types": "8.14.0",
-        "@sentry/utils": "8.14.0"
+        "@sentry/core": "8.30.0",
+        "@sentry/types": "8.30.0",
+        "@sentry/utils": "8.30.0"
       },
       "engines": {
         "node": ">=14.18"
       }
     },
     "node_modules/@sentry/webpack-plugin": {
-      "version": "2.20.1",
-      "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.20.1.tgz",
-      "integrity": "sha512-U6LzoE09Ndt0OCWROoRaZqqIHGxyMRdKpBhbqoBqyyfVwXN/zGW3I/cWZ1e8rreiKFj+2+c7+X0kOS+NGMTUrg==",
+      "version": "2.22.3",
+      "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.3.tgz",
+      "integrity": "sha512-Sq1S6bL3nuoTP5typkj+HPjQ13dqftIE8kACAq4tKkXOpWO9bf6HtqcruEQCxMekbWDTdljsrknQ17ZBx2q66Q==",
       "license": "MIT",
       "dependencies": {
-        "@sentry/bundler-plugin-core": "2.20.1",
+        "@sentry/bundler-plugin-core": "2.22.3",
         "unplugin": "1.0.1",
         "uuid": "^9.0.0"
       },
@@ -7243,13 +7124,55 @@
       }
     },
     "node_modules/@shikijs/core": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.15.2.tgz",
-      "integrity": "sha512-hi6XZuwHYn6bU4wtXZxST8ynM55aiU2+rVU9aPIrSxqKmEKl4d65puwGsggwcZWTET+7zGXKe7AUj46iQ8Aq8w==",
+      "version": "1.17.5",
+      "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.5.tgz",
+      "integrity": "sha512-JDgFZbJvfZ1g0lRVHtPTv6n2MwWnbTSGwncL/Qmlg7BZBzHCcDY2CxYGkNUm7k+lljOrFzXFGh38s8CRRZH+TQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@shikijs/engine-javascript": "1.17.5",
+        "@shikijs/engine-oniguruma": "1.17.5",
+        "@shikijs/types": "1.17.5",
+        "@shikijs/vscode-textmate": "^9.2.2",
+        "@types/hast": "^3.0.4",
+        "hast-util-to-html": "^9.0.2"
+      }
+    },
+    "node_modules/@shikijs/engine-javascript": {
+      "version": "1.17.5",
+      "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.5.tgz",
+      "integrity": "sha512-129knB7yGxq51i5f9ci1lsrC/9rJwo7yzOmHVjQIRk+e1C0caaSwzm4mhLJ506ui0vEmQZ9LzY6a/crW1UsReA==",
+      "license": "MIT",
+      "dependencies": {
+        "@shikijs/types": "1.17.5",
+        "oniguruma-to-js": "0.4.0"
+      }
+    },
+    "node_modules/@shikijs/engine-oniguruma": {
+      "version": "1.17.5",
+      "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.5.tgz",
+      "integrity": "sha512-GcuDWdUcs06sCoRS/JwbcO8M55MOvirTs3wIR7E6pMoePJWgAxhIYDQHURvSrgKgyUrTl3EKwujHljivS5BJVA==",
+      "license": "MIT",
+      "dependencies": {
+        "@shikijs/types": "1.17.5",
+        "@shikijs/vscode-textmate": "^9.2.2"
+      }
+    },
+    "node_modules/@shikijs/types": {
+      "version": "1.17.5",
+      "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.5.tgz",
+      "integrity": "sha512-xDIczjZ7QB6opNrCObX/6/78Jb/BFglRPo7E7f9swd1TCabhumOLsv23103pNUOMZrJYARUkHJpEx7ryFLM3FA==",
+      "license": "MIT",
       "dependencies": {
+        "@shikijs/vscode-textmate": "^9.2.2",
         "@types/hast": "^3.0.4"
       }
     },
+    "node_modules/@shikijs/vscode-textmate": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz",
+      "integrity": "sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==",
+      "license": "MIT"
+    },
     "node_modules/@sinclair/typebox": {
       "version": "0.27.8",
       "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
@@ -7257,19 +7180,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/@sindresorhus/merge-streams": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
-      "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/@sinonjs/commons": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
@@ -7280,16 +7190,6 @@
         "type-detect": "4.0.8"
       }
     },
-    "node_modules/@sinonjs/commons/node_modules/type-detect": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
-      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/@sinonjs/fake-timers": {
       "version": "10.3.0",
       "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
@@ -7301,12 +7201,13 @@
       }
     },
     "node_modules/@storybook/addon-controls": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.2.9.tgz",
-      "integrity": "sha512-vaSE78KOE7SO0GrW4e+mdQphSNpvCX/FGybIRxyaKX9h8smoyUwRNHVyCS3ROHTwH324QWu7GDzsOVrnyXOv0A==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.0.tgz",
+      "integrity": "sha512-Id4j6Neimkdq0OyfQ3qkHpKLisbN08M8pXHDI/A0VeF91xEGBdc1bJgS/EU+ifa24tr5SRYwlAlcBDAWJbZMfA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
+        "@storybook/global": "^5.0.0",
         "dequal": "^2.0.2",
         "lodash": "^4.17.21",
         "ts-dedent": "^2.0.0"
@@ -7316,19 +7217,19 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/addon-interactions": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.2.9.tgz",
-      "integrity": "sha512-oSxBkqpmp1Vm9v/G8mZeFNXD8k6T1NMgzUWzAx7R5m31rfObhoi5Fo1bKQT5BAhSSsdjjd7owTAFKdhwSotSKg==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.0.tgz",
+      "integrity": "sha512-nAVUFpt2kTaPMY7RxfZwiYipngxf76dfx1E/QP9n/333+/pe88UwXbUkmLKpyC8EWqZXDI0oSV5XDDzoI5x3dA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@storybook/global": "^5.0.0",
-        "@storybook/instrumenter": "8.2.9",
-        "@storybook/test": "8.2.9",
+        "@storybook/instrumenter": "8.3.0",
+        "@storybook/test": "8.3.0",
         "polished": "^4.2.2",
         "ts-dedent": "^2.2.0"
       },
@@ -7337,13 +7238,13 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/addon-themes": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.2.9.tgz",
-      "integrity": "sha512-f9buB5v18ul7IP0JALkPn9kpPvkkxe4RiEF5S77i1B6v7/1Owa62DLp2NLgav/tvg6MHsGap4UnnyuOxWHUTbg==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.3.0.tgz",
+      "integrity": "sha512-kAvpsQBrIMe7u8zU5+WoYKPhSo/MzgYXHARjYKhJYpsFatCv/npg/hLOiBlKWV5FzEqjQx9dAZiehXDF3JsCZw==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -7354,13 +7255,13 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/addon-viewport": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.2.9.tgz",
-      "integrity": "sha512-lyM24+DJEt8R0YZkJKee34NQWv0REACU6lYDalqJNdKS1sEwzLGWxg1hZXnw2JFdBID9NGVvyYU2w6LDozOB0g==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.0.tgz",
+      "integrity": "sha512-6h/0mKipUG6w2o5IOzyhvC/2ifJlSNIA60hLkJ291g42+ilzkydpby9TBN7FcnrVL3Bv+oLgkDLBWVCqma/fyw==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -7371,18 +7272,18 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/builder-webpack5": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.2.9.tgz",
-      "integrity": "sha512-D3oYk4LkteWZ3QLcdUTu/0rUvVNUp/bWwEKAycZDr2uFCOhv8VoS2/l/TaHjn3wpyWpVVKS6GgdP72K++YVufg==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.0.tgz",
+      "integrity": "sha512-kJJjyWJ/ttUIRYJe6muMjWlXnH9nNmTvd4k5QY6AnblcxE/mXc1Z+D5lSzvStmZEAB/KaSHGrEuiSCReQrNTTQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@storybook/core-webpack": "8.2.9",
-        "@types/node": "^18.0.0",
+        "@storybook/core-webpack": "8.3.0",
+        "@types/node": "^22.0.0",
         "@types/semver": "^7.3.4",
         "browser-assert": "^1.2.1",
         "case-sensitive-paths-webpack-plugin": "^2.4.0",
@@ -7414,7 +7315,7 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       },
       "peerDependenciesMeta": {
         "typescript": {
@@ -7423,13 +7324,13 @@
       }
     },
     "node_modules/@storybook/builder-webpack5/node_modules/@types/node": {
-      "version": "18.19.45",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
-      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
+      "version": "22.5.4",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
+      "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "undici-types": "~5.26.4"
+        "undici-types": "~6.19.2"
       }
     },
     "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": {
@@ -7447,153 +7348,70 @@
         "node": ">=14.14"
       }
     },
-    "node_modules/@storybook/codemod": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.2.9.tgz",
-      "integrity": "sha512-3yRx1lFMm1FXWVv+CKDiYM4gOQPEfpcZAQrjfcumxSDUrB091pnU1PeI92Prj3vCdi4+0oPNuN4yDGNUYTMP/A==",
+    "node_modules/@storybook/components": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.3.0.tgz",
+      "integrity": "sha512-SO/iTkmWp3aYCIy8DEhRMoOn6K7lcKTPNC/YjTvOFFzwq/CLq86WNqz6aX+wV5n6MvWTs7evSwMoz7lp4Lc4sw==",
       "dev": true,
       "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.24.4",
-        "@babel/preset-env": "^7.24.4",
-        "@babel/types": "^7.24.0",
-        "@storybook/core": "8.2.9",
-        "@storybook/csf": "0.1.11",
-        "@types/cross-spawn": "^6.0.2",
-        "cross-spawn": "^7.0.3",
-        "globby": "^14.0.1",
-        "jscodeshift": "^0.15.1",
-        "lodash": "^4.17.21",
-        "prettier": "^3.1.1",
-        "recast": "^0.23.5",
-        "tiny-invariant": "^1.3.1"
-      },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "storybook": "^8.3.0"
       }
     },
-    "node_modules/@storybook/codemod/node_modules/globby": {
-      "version": "14.0.2",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz",
-      "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==",
+    "node_modules/@storybook/core": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.0.tgz",
+      "integrity": "sha512-UeErpD0xRIP2nFA2TjPYxtEyv24O6VRfq2XXU5ki2QPYnxOxAPBbrMHCADjgBwNS4S2NUWTaVBYxybISVbrj+w==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@sindresorhus/merge-streams": "^2.1.0",
-        "fast-glob": "^3.3.2",
-        "ignore": "^5.2.4",
-        "path-type": "^5.0.0",
-        "slash": "^5.1.0",
-        "unicorn-magic": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=18"
+        "@storybook/csf": "^0.1.11",
+        "@types/express": "^4.17.21",
+        "browser-assert": "^1.2.1",
+        "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0",
+        "esbuild-register": "^3.5.0",
+        "express": "^4.19.2",
+        "process": "^0.11.10",
+        "recast": "^0.23.5",
+        "semver": "^7.6.2",
+        "util": "^0.12.5",
+        "ws": "^8.2.3"
       },
       "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
       }
     },
-    "node_modules/@storybook/codemod/node_modules/path-type": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
-      "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
+    "node_modules/@storybook/core-webpack": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.0.tgz",
+      "integrity": "sha512-lCuuB0dD+SKjF17QVX+YoQIlW30Dv/zK0k3Gt3mXdvYqjFXTx1FqWRmt1YFeUWaBQ0XF8GC+PN699KgwGH73tA==",
       "dev": true,
       "license": "MIT",
-      "engines": {
-        "node": ">=12"
+      "dependencies": {
+        "@types/node": "^22.0.0",
+        "ts-dedent": "^2.0.0"
       },
       "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@storybook/codemod/node_modules/slash": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
-      "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@storybook/components": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.2.9.tgz",
-      "integrity": "sha512-OkkcZ/f/6o3GdFEEK9ZHKIGHWUHmavZUYs5xaSgU64bOrA2aqEFtfeWWitZYTv3Euhk8MVLWfyEMDfez0AlvDg==",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/storybook"
-      },
-      "peerDependencies": {
-        "storybook": "^8.2.9"
-      }
-    },
-    "node_modules/@storybook/core": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.2.9.tgz",
-      "integrity": "sha512-wSER8FpA6Il/jPyDfKm3yohxDtuhisNPTonMVzd3ulNWR4zERLddyO3HrHJJwdqYHLNk4SBFzwMGpQZVws1y0w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@storybook/csf": "0.1.11",
-        "@types/express": "^4.17.21",
-        "@types/node": "^18.0.0",
-        "browser-assert": "^1.2.1",
-        "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0",
-        "esbuild-register": "^3.5.0",
-        "express": "^4.19.2",
-        "process": "^0.11.10",
-        "recast": "^0.23.5",
-        "util": "^0.12.4",
-        "ws": "^8.2.3"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/storybook"
-      }
-    },
-    "node_modules/@storybook/core-webpack": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.2.9.tgz",
-      "integrity": "sha512-6yL1su+d8IOTU+UkZqM9SeBcVc/G6vUHLsMdlWNyVtRus2JTMmT0K0/ll56jrm/ym0y98cxUOA1jsImkBubP2Q==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "^18.0.0",
-        "ts-dedent": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/storybook"
-      },
-      "peerDependencies": {
-        "storybook": "^8.2.9"
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/core-webpack/node_modules/@types/node": {
-      "version": "18.19.45",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
-      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "undici-types": "~5.26.4"
-      }
-    },
-    "node_modules/@storybook/core/node_modules/@types/node": {
-      "version": "18.19.45",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
-      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
+      "version": "22.5.4",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
+      "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "undici-types": "~5.26.4"
+        "undici-types": "~6.19.2"
       }
     },
     "node_modules/@storybook/csf": {
@@ -7614,14 +7432,14 @@
       "license": "MIT"
     },
     "node_modules/@storybook/instrumenter": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.2.9.tgz",
-      "integrity": "sha512-+DNjTbsMzlDggsvkhRuOy7aGvQJ4oLCPgunP5Se/3yBjG+M2bYDa0EmC5jC2nwZ3ffpuvbzaVe7fWf7R8W9F2Q==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.0.tgz",
+      "integrity": "sha512-oJmX8jbNKbPBlNMItRvEoaVAJWX1u6jsqXdIcNRCXo3PDdVnunVYz8vVkG8mbL8Cp/cKlsuQk7YBZA4IM5mRgg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@storybook/global": "^5.0.0",
-        "@vitest/utils": "^1.3.1",
+        "@vitest/utils": "^2.0.5",
         "util": "^0.12.4"
       },
       "funding": {
@@ -7629,13 +7447,13 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/manager-api": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.2.9.tgz",
-      "integrity": "sha512-mkYvUlfqDw+0WbxIynh5TcrotmoXlumEsOA4+45zuNea8XpEgj5cNBUCnmfEO6yQ85swqkS8YYbMpg1cZyu/Vw==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.0.tgz",
+      "integrity": "sha512-5WBLEFHpe4H+9vZZLjNh7msIkyl9MPt4/C2nI+MXKZyU55xBBgiAy4fcD9aj02PcbhyR4JhLqbqmdeBe5Xafeg==",
       "dev": true,
       "license": "MIT",
       "funding": {
@@ -7643,13 +7461,13 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/nextjs": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.2.9.tgz",
-      "integrity": "sha512-grWabBWTKp0ltJv+DuHtIH88oVIq2xFeTchVaA6mC9jqxmOilKe2KAQA2QNH6/5CXrGo+MuUO62UsHrYOIwsSg==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.3.0.tgz",
+      "integrity": "sha512-W56LPdKtRtSfhV+W/yXTVPCHadyXt1KWCVIWWhafCY2qhgIQjDqcQfzFighvFPncsJVUarneDZksZAziMz5JEQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -7667,11 +7485,11 @@
         "@babel/preset-typescript": "^7.24.1",
         "@babel/runtime": "^7.24.4",
         "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
-        "@storybook/builder-webpack5": "8.2.9",
-        "@storybook/preset-react-webpack": "8.2.9",
-        "@storybook/react": "8.2.9",
-        "@storybook/test": "8.2.9",
-        "@types/node": "^18.0.0",
+        "@storybook/builder-webpack5": "8.3.0",
+        "@storybook/preset-react-webpack": "8.3.0",
+        "@storybook/react": "8.3.0",
+        "@storybook/test": "8.3.0",
+        "@types/node": "^22.0.0",
         "@types/semver": "^7.3.4",
         "babel-loader": "^9.1.3",
         "css-loader": "^6.7.3",
@@ -7688,7 +7506,7 @@
         "sass-loader": "^12.4.0",
         "semver": "^7.3.5",
         "style-loader": "^3.3.1",
-        "styled-jsx": "5.1.1",
+        "styled-jsx": "^5.1.6",
         "ts-dedent": "^2.0.0",
         "tsconfig-paths": "^4.0.0",
         "tsconfig-paths-webpack-plugin": "^4.0.1"
@@ -7707,7 +7525,7 @@
         "next": "^13.5.0 || ^14.0.0",
         "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.2.9",
+        "storybook": "^8.3.0",
         "webpack": "^5.0.0"
       },
       "peerDependenciesMeta": {
@@ -7720,13 +7538,13 @@
       }
     },
     "node_modules/@storybook/nextjs/node_modules/@types/node": {
-      "version": "18.19.45",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
-      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
+      "version": "22.5.4",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
+      "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "undici-types": "~5.26.4"
+        "undici-types": "~6.19.2"
       }
     },
     "node_modules/@storybook/nextjs/node_modules/fs-extra": {
@@ -7745,16 +7563,16 @@
       }
     },
     "node_modules/@storybook/preset-react-webpack": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.2.9.tgz",
-      "integrity": "sha512-uBLsUfwymWXGmfN/0vB7gLCC0CWDHc778605SWxakqFx7wGF1FZUW4R46qbDFrHTaKh+bundseRdy5/uklksLQ==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.0.tgz",
+      "integrity": "sha512-Y0by9yzhKU7lNTQ/7ePJ8ki/Iv/ctG2TPziEQOIds0LWs511yF37VsTBwWG17rGo9U4hKPJ37IDBVo0el7kw3g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@storybook/core-webpack": "8.2.9",
-        "@storybook/react": "8.2.9",
+        "@storybook/core-webpack": "8.3.0",
+        "@storybook/react": "8.3.0",
         "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0",
-        "@types/node": "^18.0.0",
+        "@types/node": "^22.0.0",
         "@types/semver": "^7.3.4",
         "find-up": "^5.0.0",
         "fs-extra": "^11.1.0",
@@ -7775,7 +7593,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.2.9"
+        "storybook": "^8.3.0"
       },
       "peerDependenciesMeta": {
         "typescript": {
@@ -7784,13 +7602,13 @@
       }
     },
     "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": {
-      "version": "18.19.45",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
-      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
+      "version": "22.5.4",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
+      "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "undici-types": "~5.26.4"
+        "undici-types": "~6.19.2"
       }
     },
     "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": {
@@ -7809,9 +7627,9 @@
       }
     },
     "node_modules/@storybook/preview-api": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.2.9.tgz",
-      "integrity": "sha512-D8/t+a78OJqQAcT/ABa1C4YM/OaLGQ9IvCsp3Q9ruUqDCwuZBj8bG3D4477dlY4owX2ycC0rWYu3VvuK0EmJjA==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.0.tgz",
+      "integrity": "sha512-pHq/T7oWBfzc9TCIPYyJQUXuiUiFfmdrcYvuZE1kf46i7wXh9Q2/Kd3BUJWSCpBXUMoYfAxg9YysGljMII8LWA==",
       "dev": true,
       "license": "MIT",
       "funding": {
@@ -7819,31 +7637,30 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/react": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.2.9.tgz",
-      "integrity": "sha512-F2xZcTDxxjpbqt7eP8rEHmlksiKmE/qtPusEWEY4N4jK01kN+ncxSl8gkJpUohMEmAnVC5t/1v/sU57xv1DYpg==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.3.0.tgz",
+      "integrity": "sha512-qd8IKXqaOG9m0VK0QukFMmKpjmm7sy1R3T681dLet8s+AEAimLH/RiBzd+0dxWng2H/Ng6ldUmCtd3Cs6w/EFQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@storybook/components": "^8.2.9",
+        "@storybook/components": "^8.3.0",
         "@storybook/global": "^5.0.0",
-        "@storybook/manager-api": "^8.2.9",
-        "@storybook/preview-api": "^8.2.9",
-        "@storybook/react-dom-shim": "8.2.9",
-        "@storybook/theming": "^8.2.9",
+        "@storybook/manager-api": "^8.3.0",
+        "@storybook/preview-api": "^8.3.0",
+        "@storybook/react-dom-shim": "8.3.0",
+        "@storybook/theming": "^8.3.0",
         "@types/escodegen": "^0.0.6",
         "@types/estree": "^0.0.51",
-        "@types/node": "^18.0.0",
+        "@types/node": "^22.0.0",
         "acorn": "^7.4.1",
         "acorn-jsx": "^5.3.1",
         "acorn-walk": "^7.2.0",
         "escodegen": "^2.1.0",
         "html-tags": "^3.1.0",
-        "lodash": "^4.17.21",
         "prop-types": "^15.7.2",
         "react-element-to-jsx-string": "^15.0.0",
         "semver": "^7.3.7",
@@ -7859,12 +7676,16 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
+        "@storybook/test": "8.3.0",
         "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.2.9",
+        "storybook": "^8.3.0",
         "typescript": ">= 4.2.x"
       },
       "peerDependenciesMeta": {
+        "@storybook/test": {
+          "optional": true
+        },
         "typescript": {
           "optional": true
         }
@@ -7891,9 +7712,9 @@
       }
     },
     "node_modules/@storybook/react-dom-shim": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.2.9.tgz",
-      "integrity": "sha512-uCAjSQEsNk8somVn1j/I1G9G/uUax5byHseIIV0Eq3gVXttGd7gaWcP+TDHtqIaenWHx4l+hCSuCesxiLWmx4Q==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.0.tgz",
+      "integrity": "sha512-87X4cvgwFT1ll5SzXgQq6iGbkVCgxLBpBm58akF/hzpeRkwfJDncGi/A5hElOJrBg63IkznmSJE7tf9RkrboqQ==",
       "dev": true,
       "license": "MIT",
       "funding": {
@@ -7903,7 +7724,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.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@storybook/react/node_modules/@types/estree": {
@@ -7914,29 +7735,30 @@
       "license": "MIT"
     },
     "node_modules/@storybook/react/node_modules/@types/node": {
-      "version": "18.19.45",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
-      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
+      "version": "22.5.4",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
+      "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "undici-types": "~5.26.4"
+        "undici-types": "~6.19.2"
       }
     },
     "node_modules/@storybook/test": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.2.9.tgz",
-      "integrity": "sha512-O5JZ5S8UVVR7V0ru5AiF/uRO+srAVwji0Iik7ihy8gw3V91WQNMmJh2KkdhG0R1enYeBsYZlipOm+AW7f/MmOA==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.0.tgz",
+      "integrity": "sha512-d8y8ST8YY/pSjTxBcWitKM7YbbupN8D0obVlciZRt6WW3o8WUz6iwMuzuJuiUVwtxiRtdKL9jygC5M+aaCpFYQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@storybook/csf": "0.1.11",
-        "@storybook/instrumenter": "8.2.9",
-        "@testing-library/dom": "10.1.0",
-        "@testing-library/jest-dom": "6.4.5",
+        "@storybook/csf": "^0.1.11",
+        "@storybook/global": "^5.0.0",
+        "@storybook/instrumenter": "8.3.0",
+        "@testing-library/dom": "10.4.0",
+        "@testing-library/jest-dom": "6.5.0",
         "@testing-library/user-event": "14.5.2",
-        "@vitest/expect": "1.6.0",
-        "@vitest/spy": "1.6.0",
+        "@vitest/expect": "2.0.5",
+        "@vitest/spy": "2.0.5",
         "util": "^0.12.4"
       },
       "funding": {
@@ -7944,103 +7766,13 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
-      }
-    },
-    "node_modules/@storybook/test/node_modules/@testing-library/dom": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz",
-      "integrity": "sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==",
-      "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/@storybook/test/node_modules/@testing-library/dom/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/@storybook/test/node_modules/@testing-library/jest-dom": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz",
-      "integrity": "sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@adobe/css-tools": "^4.3.2",
-        "@babel/runtime": "^7.9.2",
-        "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"
-      },
-      "peerDependencies": {
-        "@jest/globals": ">= 28",
-        "@types/bun": "latest",
-        "@types/jest": ">= 28",
-        "jest": ">= 28",
-        "vitest": ">= 0.32"
-      },
-      "peerDependenciesMeta": {
-        "@jest/globals": {
-          "optional": true
-        },
-        "@types/bun": {
-          "optional": true
-        },
-        "@types/jest": {
-          "optional": true
-        },
-        "jest": {
-          "optional": true
-        },
-        "vitest": {
-          "optional": true
-        }
+        "storybook": "^8.3.0"
       }
     },
-    "node_modules/@storybook/test/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",
-      "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/@storybook/theming": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.2.9.tgz",
-      "integrity": "sha512-OL0NFvowPX85N5zIYdgeKKaFm7V4Vgtci093vL3cDZT13LGH6GuEzJKkUFGuUGNPFlJc+EgTj0o6PYKrOLyQ6w==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.0.tgz",
+      "integrity": "sha512-lJCarAzswZvUgBt/o1LMJp+07Io5G2VI1+Fw+bgn+92kRD8otCFwuMZIy0u7cEjHiEGqGnpzThlIki6vFjEXeA==",
       "dev": true,
       "license": "MIT",
       "funding": {
@@ -8048,7 +7780,7 @@
         "url": "https://opencollective.com/storybook"
       },
       "peerDependencies": {
-        "storybook": "^8.2.9"
+        "storybook": "^8.3.0"
       }
     },
     "node_modules/@swc/counter": {
@@ -8082,7 +7814,6 @@
       "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@babel/code-frame": "^7.10.4",
         "@babel/runtime": "^7.12.5",
@@ -8103,7 +7834,6 @@
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
@@ -8120,6 +7850,7 @@
       "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",
@@ -8147,6 +7878,7 @@
       "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz",
       "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.12.5"
       },
@@ -8193,15 +7925,6 @@
         "node": ">= 10"
       }
     },
-    "node_modules/@types/accepts": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz",
-      "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
     "node_modules/@types/acorn": {
       "version": "4.0.6",
       "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
@@ -8267,6 +7990,7 @@
       "version": "1.19.5",
       "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
       "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@types/connect": "*",
@@ -8292,12 +8016,6 @@
         "@types/node": "*"
       }
     },
-    "node_modules/@types/content-disposition": {
-      "version": "0.5.8",
-      "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz",
-      "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==",
-      "license": "MIT"
-    },
     "node_modules/@types/conventional-commits-parser": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
@@ -8309,28 +8027,6 @@
         "@types/node": "*"
       }
     },
-    "node_modules/@types/cookies": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz",
-      "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/connect": "*",
-        "@types/express": "*",
-        "@types/keygrip": "*",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/cross-spawn": {
-      "version": "6.0.6",
-      "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz",
-      "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
     "node_modules/@types/debug": {
       "version": "4.1.12",
       "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
@@ -8347,13 +8043,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/@types/emscripten": {
-      "version": "1.39.13",
-      "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz",
-      "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/@types/escodegen": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz",
@@ -8380,6 +8069,7 @@
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
       "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@types/body-parser": "*",
@@ -8392,6 +8082,7 @@
       "version": "4.19.5",
       "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
       "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@types/node": "*",
@@ -8426,16 +8117,11 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/@types/http-assert": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz",
-      "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==",
-      "license": "MIT"
-    },
     "node_modules/@types/http-errors": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
       "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/@types/is-empty": {
@@ -8473,9 +8159,9 @@
       }
     },
     "node_modules/@types/jest": {
-      "version": "29.5.12",
-      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz",
-      "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==",
+      "version": "29.5.13",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz",
+      "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -8536,52 +8222,6 @@
       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
       "license": "MIT"
     },
-    "node_modules/@types/json5": {
-      "version": "0.0.29",
-      "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
-      "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
-      "dev": true
-    },
-    "node_modules/@types/keygrip": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz",
-      "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==",
-      "license": "MIT"
-    },
-    "node_modules/@types/koa": {
-      "version": "2.14.0",
-      "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.14.0.tgz",
-      "integrity": "sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/accepts": "*",
-        "@types/content-disposition": "*",
-        "@types/cookies": "*",
-        "@types/http-assert": "*",
-        "@types/http-errors": "*",
-        "@types/keygrip": "*",
-        "@types/koa-compose": "*",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/koa__router": {
-      "version": "12.0.3",
-      "resolved": "https://registry.npmjs.org/@types/koa__router/-/koa__router-12.0.3.tgz",
-      "integrity": "sha512-5YUJVv6NwM1z7m6FuYpKfNLTZ932Z6EF6xy2BbtpJSyn13DKNQEkXVffFVSnJHxvwwWh2SAeumpjAYUELqgjyw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/koa": "*"
-      }
-    },
-    "node_modules/@types/koa-compose": {
-      "version": "3.2.8",
-      "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz",
-      "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/koa": "*"
-      }
-    },
     "node_modules/@types/mdast": {
       "version": "3.0.15",
       "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
@@ -8607,6 +8247,7 @@
       "version": "1.3.5",
       "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
       "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/@types/ms": {
@@ -8616,18 +8257,19 @@
       "license": "MIT"
     },
     "node_modules/@types/mysql": {
-      "version": "2.15.22",
-      "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.22.tgz",
-      "integrity": "sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==",
+      "version": "2.15.26",
+      "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz",
+      "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*"
       }
     },
     "node_modules/@types/node": {
-      "version": "20.16.3",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.3.tgz",
-      "integrity": "sha512-/wdGiWRkMOm53gAsSyFMXFZHbVg7C6CbkrzHNpaHoYfsUWPg7m6ZRKtvQjgvQ9i8WT540a3ydRlRQbxjY30XxQ==",
+      "version": "20.16.5",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz",
+      "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==",
+      "license": "MIT",
       "dependencies": {
         "undici-types": "~6.19.2"
       }
@@ -8642,11 +8284,6 @@
         "form-data": "^4.0.0"
       }
     },
-    "node_modules/@types/node/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=="
-    },
     "node_modules/@types/parse-json": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
@@ -8666,9 +8303,9 @@
       }
     },
     "node_modules/@types/pg-pool": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.4.tgz",
-      "integrity": "sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz",
+      "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==",
       "license": "MIT",
       "dependencies": {
         "@types/pg": "*"
@@ -8691,6 +8328,7 @@
       "version": "1.2.7",
       "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
       "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/@types/react": {
@@ -8698,6 +8336,7 @@
       "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz",
       "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==",
       "devOptional": true,
+      "license": "MIT",
       "dependencies": {
         "@types/prop-types": "*",
         "csstype": "^3.0.2"
@@ -8731,6 +8370,7 @@
       "version": "0.17.4",
       "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
       "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@types/mime": "^1",
@@ -8741,6 +8381,7 @@
       "version": "1.15.7",
       "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
       "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@types/http-errors": "*",
@@ -8803,6 +8444,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz",
       "integrity": "sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/regexpp": "^4.5.1",
         "@typescript-eslint/scope-manager": "7.2.0",
@@ -8833,58 +8475,12 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz",
-      "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.2.0",
-        "@typescript-eslint/visitor-keys": "7.2.0"
-      },
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz",
-      "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==",
-      "dev": true,
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz",
-      "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.2.0",
-        "eslint-visitor-keys": "^3.4.1"
-      },
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
     "node_modules/@typescript-eslint/parser": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz",
       "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "@typescript-eslint/scope-manager": "7.2.0",
         "@typescript-eslint/types": "7.2.0",
@@ -8908,11 +8504,12 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
+    "node_modules/@typescript-eslint/scope-manager": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz",
       "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/types": "7.2.0",
         "@typescript-eslint/visitor-keys": "7.2.0"
@@ -8925,101 +8522,12 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz",
-      "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==",
-      "dev": true,
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz",
-      "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.2.0",
-        "@typescript-eslint/visitor-keys": "7.2.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "minimatch": "9.0.3",
-        "semver": "^7.5.4",
-        "ts-api-utils": "^1.0.1"
-      },
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz",
-      "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.2.0",
-        "eslint-visitor-keys": "^3.4.1"
-      },
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/parser/node_modules/minimatch": {
-      "version": "9.0.3",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
-      "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.62.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
-      "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "5.62.0",
-        "@typescript-eslint/visitor-keys": "5.62.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils": {
+    "node_modules/@typescript-eslint/type-utils": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz",
       "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/typescript-estree": "7.2.0",
         "@typescript-eslint/utils": "7.2.0",
@@ -9042,11 +8550,12 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
+    "node_modules/@typescript-eslint/types": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz",
       "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^16.0.0 || >=18.0.0"
       },
@@ -9055,23 +8564,24 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz",
-      "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==",
+    "node_modules/@typescript-eslint/typescript-estree": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz",
+      "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
-        "@typescript-eslint/types": "7.2.0",
-        "@typescript-eslint/visitor-keys": "7.2.0",
+        "@typescript-eslint/types": "8.5.0",
+        "@typescript-eslint/visitor-keys": "8.5.0",
         "debug": "^4.3.4",
-        "globby": "^11.1.0",
+        "fast-glob": "^3.3.2",
         "is-glob": "^4.0.3",
-        "minimatch": "9.0.3",
-        "semver": "^7.5.4",
-        "ts-api-utils": "^1.0.1"
+        "minimatch": "^9.0.4",
+        "semver": "^7.6.0",
+        "ts-api-utils": "^1.3.0"
       },
       "engines": {
-        "node": "^16.0.0 || >=18.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
@@ -9083,76 +8593,65 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz",
-      "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==",
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz",
+      "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==",
       "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.2.0",
-        "eslint-visitor-keys": "^3.4.1"
-      },
+      "license": "MIT",
       "engines": {
-        "node": "^16.0.0 || >=18.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": {
-      "version": "9.0.3",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
-      "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz",
+      "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "brace-expansion": "^2.0.1"
+        "@typescript-eslint/types": "8.5.0",
+        "eslint-visitor-keys": "^3.4.3"
       },
       "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/types": {
-      "version": "5.62.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
-      "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+    "node_modules/@typescript-eslint/typescript-estree/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": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
+        "url": "https://opencollective.com/eslint"
       }
     },
-    "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.62.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
-      "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+    "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==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
-        "@typescript-eslint/types": "5.62.0",
-        "@typescript-eslint/visitor-keys": "5.62.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
+        "brace-expansion": "^2.0.1"
       },
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": ">=16 || 14 >=14.17"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
     "node_modules/@typescript-eslint/utils": {
@@ -9160,6 +8659,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz",
       "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "@types/json-schema": "^7.0.12",
@@ -9180,69 +8680,12 @@
         "eslint": "^8.56.0"
       }
     },
-    "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz",
-      "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.2.0",
-        "@typescript-eslint/visitor-keys": "7.2.0"
-      },
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz",
-      "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==",
-      "dev": true,
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz",
-      "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.2.0",
-        "@typescript-eslint/visitor-keys": "7.2.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "minimatch": "9.0.3",
-        "semver": "^7.5.4",
-        "ts-api-utils": "^1.0.1"
-      },
-      "engines": {
-        "node": "^16.0.0 || >=18.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
+    "node_modules/@typescript-eslint/visitor-keys": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz",
       "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/types": "7.2.0",
         "eslint-visitor-keys": "^3.4.1"
@@ -9255,36 +8698,17 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/@typescript-eslint/utils/node_modules/minimatch": {
-      "version": "9.0.3",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
-      "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.62.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
-      "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+    "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==",
       "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "5.62.0",
-        "eslint-visitor-keys": "^3.3.0"
-      },
+      "license": "Apache-2.0",
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
+        "url": "https://opencollective.com/eslint"
       }
     },
     "node_modules/@ungap/structured-clone": {
@@ -9408,92 +8832,99 @@
       }
     },
     "node_modules/@vitest/expect": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz",
-      "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz",
+      "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@vitest/spy": "1.6.0",
-        "@vitest/utils": "1.6.0",
-        "chai": "^4.3.10"
+        "@vitest/spy": "2.0.5",
+        "@vitest/utils": "2.0.5",
+        "chai": "^5.1.1",
+        "tinyrainbow": "^1.2.0"
       },
       "funding": {
         "url": "https://opencollective.com/vitest"
       }
     },
-    "node_modules/@vitest/spy": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz",
-      "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==",
+    "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz",
+      "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "tinyspy": "^2.2.0"
+        "tinyrainbow": "^1.2.0"
       },
       "funding": {
         "url": "https://opencollective.com/vitest"
       }
     },
-    "node_modules/@vitest/utils": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz",
-      "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==",
+    "node_modules/@vitest/expect/node_modules/@vitest/utils": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz",
+      "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "diff-sequences": "^29.6.3",
+        "@vitest/pretty-format": "2.0.5",
         "estree-walker": "^3.0.3",
-        "loupe": "^2.3.7",
-        "pretty-format": "^29.7.0"
+        "loupe": "^3.1.1",
+        "tinyrainbow": "^1.2.0"
       },
       "funding": {
         "url": "https://opencollective.com/vitest"
       }
     },
-    "node_modules/@vitest/utils/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==",
+    "node_modules/@vitest/pretty-format": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.0.tgz",
+      "integrity": "sha512-7sxf2F3DNYatgmzXXcTh6cq+/fxwB47RIQqZJFoSH883wnVAoccSRT6g+dTKemUBo8Q5N4OYYj1EBXLuRKvp3Q==",
       "dev": true,
       "license": "MIT",
-      "engines": {
-        "node": ">=10"
+      "dependencies": {
+        "tinyrainbow": "^1.2.0"
       },
       "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+        "url": "https://opencollective.com/vitest"
       }
     },
-    "node_modules/@vitest/utils/node_modules/pretty-format": {
-      "version": "29.7.0",
-      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
-      "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+    "node_modules/@vitest/spy": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz",
+      "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@jest/schemas": "^29.6.3",
-        "ansi-styles": "^5.0.0",
-        "react-is": "^18.0.0"
+        "tinyspy": "^3.0.0"
       },
-      "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      "funding": {
+        "url": "https://opencollective.com/vitest"
       }
     },
-    "node_modules/@vitest/utils/node_modules/react-is": {
-      "version": "18.3.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
-      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+    "node_modules/@vitest/utils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.0.tgz",
+      "integrity": "sha512-rreyfVe0PuNqJfKYUwfPDfi6rrp0VSu0Wgvp5WBqJonP+4NvXHk48X6oBam1Lj47Hy6jbJtnMj3OcRdrkTP0tA==",
       "dev": true,
-      "license": "MIT"
+      "license": "MIT",
+      "dependencies": {
+        "@vitest/pretty-format": "2.1.0",
+        "loupe": "^3.1.1",
+        "tinyrainbow": "^1.2.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/vitest"
+      }
     },
     "node_modules/@vue/compiler-core": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz",
-      "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.4.tgz",
+      "integrity": "sha512-oNwn+BAt3n9dK9uAYvI+XGlutwuTq/wfj4xCBaZCqwwVIGtD7D6ViihEbyYZrDHIHTDE3Q6oL3/hqmAyFEy9DQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/parser": "^7.24.7",
-        "@vue/shared": "3.4.38",
+        "@babel/parser": "^7.25.3",
+        "@vue/shared": "3.5.4",
         "entities": "^4.5.0",
         "estree-walker": "^2.0.2",
         "source-map-js": "^1.2.0"
@@ -9506,29 +8937,29 @@
       "license": "MIT"
     },
     "node_modules/@vue/compiler-dom": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz",
-      "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.4.tgz",
+      "integrity": "sha512-yP9RRs4BDLOLfldn6ah+AGCNovGjMbL9uHvhDHf5wan4dAHLnFGOkqtfE7PPe4HTXIqE7l/NILdYw53bo1C8jw==",
       "license": "MIT",
       "dependencies": {
-        "@vue/compiler-core": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/compiler-core": "3.5.4",
+        "@vue/shared": "3.5.4"
       }
     },
     "node_modules/@vue/compiler-sfc": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz",
-      "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.4.tgz",
+      "integrity": "sha512-P+yiPhL+NYH7m0ZgCq7AQR2q7OIE+mpAEgtkqEeH9oHSdIRvUO+4X6MPvblJIWcoe4YC5a2Gdf/RsoyP8FFiPQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/parser": "^7.24.7",
-        "@vue/compiler-core": "3.4.38",
-        "@vue/compiler-dom": "3.4.38",
-        "@vue/compiler-ssr": "3.4.38",
-        "@vue/shared": "3.4.38",
+        "@babel/parser": "^7.25.3",
+        "@vue/compiler-core": "3.5.4",
+        "@vue/compiler-dom": "3.5.4",
+        "@vue/compiler-ssr": "3.5.4",
+        "@vue/shared": "3.5.4",
         "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.10",
-        "postcss": "^8.4.40",
+        "magic-string": "^0.30.11",
+        "postcss": "^8.4.44",
         "source-map-js": "^1.2.0"
       }
     },
@@ -9539,63 +8970,63 @@
       "license": "MIT"
     },
     "node_modules/@vue/compiler-ssr": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz",
-      "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.4.tgz",
+      "integrity": "sha512-acESdTXsxPnYr2C4Blv0ggx5zIFMgOzZmYU2UgvIff9POdRGbRNBHRyzHAnizcItvpgerSKQbllUc9USp3V7eg==",
       "license": "MIT",
       "dependencies": {
-        "@vue/compiler-dom": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/compiler-dom": "3.5.4",
+        "@vue/shared": "3.5.4"
       }
     },
     "node_modules/@vue/reactivity": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz",
-      "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.4.tgz",
+      "integrity": "sha512-HKKbEuP7tYSGCq4e4nK6ZW6l5hyG66OUetefBp4budUyjvAYsnQDf+bgFzg2RAgnH0CInyqXwD9y47jwJEHrQw==",
       "license": "MIT",
       "dependencies": {
-        "@vue/shared": "3.4.38"
+        "@vue/shared": "3.5.4"
       }
     },
     "node_modules/@vue/runtime-core": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz",
-      "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.4.tgz",
+      "integrity": "sha512-f3ek2sTA0AFu0n+w+kCtz567Euqqa3eHewvo4klwS7mWfSj/A+UmYTwsnUFo35KeyAFY60JgrCGvEBsu1n/3LA==",
       "license": "MIT",
       "dependencies": {
-        "@vue/reactivity": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/reactivity": "3.5.4",
+        "@vue/shared": "3.5.4"
       }
     },
     "node_modules/@vue/runtime-dom": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz",
-      "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.4.tgz",
+      "integrity": "sha512-ofyc0w6rbD5KtjhP1i9hGOKdxGpvmuB1jprP7Djlj0X7R5J/oLwuNuE98GJ8WW31Hu2VxQHtk/LYTAlW8xrJdw==",
       "license": "MIT",
       "dependencies": {
-        "@vue/reactivity": "3.4.38",
-        "@vue/runtime-core": "3.4.38",
-        "@vue/shared": "3.4.38",
+        "@vue/reactivity": "3.5.4",
+        "@vue/runtime-core": "3.5.4",
+        "@vue/shared": "3.5.4",
         "csstype": "^3.1.3"
       }
     },
     "node_modules/@vue/server-renderer": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz",
-      "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.4.tgz",
+      "integrity": "sha512-FbjV6DJLgKRetMYFBA1UXCroCiED/Ckr53/ba9wivyd7D/Xw9fpo0T6zXzCnxQwyvkyrL7y6plgYhWhNjGxY5g==",
       "license": "MIT",
       "dependencies": {
-        "@vue/compiler-ssr": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/compiler-ssr": "3.5.4",
+        "@vue/shared": "3.5.4"
       },
       "peerDependencies": {
-        "vue": "3.4.38"
+        "vue": "3.5.4"
       }
     },
     "node_modules/@vue/shared": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz",
-      "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.4.tgz",
+      "integrity": "sha512-L2MCDD8l7yC62Te5UUyPVpmexhL9ipVnYRw9CsWfm/BGRL5FwDX4a25bcJ/OJSD3+Hx+k/a8LDKcG2AFdJV3BA==",
       "license": "MIT"
     },
     "node_modules/@webassemblyjs/ast": {
@@ -9756,48 +9187,6 @@
       "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
       "license": "Apache-2.0"
     },
-    "node_modules/@yarnpkg/fslib": {
-      "version": "2.10.3",
-      "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz",
-      "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "@yarnpkg/libzip": "^2.3.0",
-        "tslib": "^1.13.0"
-      },
-      "engines": {
-        "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0"
-      }
-    },
-    "node_modules/@yarnpkg/fslib/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true,
-      "license": "0BSD"
-    },
-    "node_modules/@yarnpkg/libzip": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz",
-      "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "@types/emscripten": "^1.39.6",
-        "tslib": "^1.13.0"
-      },
-      "engines": {
-        "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0"
-      }
-    },
-    "node_modules/@yarnpkg/libzip/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true,
-      "license": "0BSD"
-    },
     "node_modules/abab": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@@ -9879,9 +9268,9 @@
       }
     },
     "node_modules/acorn-globals/node_modules/acorn-walk": {
-      "version": "8.3.3",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz",
-      "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==",
+      "version": "8.3.4",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
+      "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -10220,26 +9609,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/array.prototype.findlastindex": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
-      "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.7",
-        "define-properties": "^1.2.1",
-        "es-abstract": "^1.23.2",
-        "es-errors": "^1.3.0",
-        "es-object-atoms": "^1.0.0",
-        "es-shim-unscopables": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "node_modules/array.prototype.flat": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
@@ -10352,13 +9721,13 @@
       }
     },
     "node_modules/assertion-error": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
-      "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+      "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
       "dev": true,
       "license": "MIT",
       "engines": {
-        "node": "*"
+        "node": ">=12"
       }
     },
     "node_modules/ast-types": {
@@ -10378,7 +9747,8 @@
       "version": "0.0.8",
       "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
       "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/astral-regex": {
       "version": "2.0.0",
@@ -10391,9 +9761,9 @@
       }
     },
     "node_modules/astring": {
-      "version": "1.8.6",
-      "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
-      "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz",
+      "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==",
       "license": "MIT",
       "bin": {
         "astring": "bin/astring"
@@ -10473,6 +9843,7 @@
       "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz",
       "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==",
       "dev": true,
+      "license": "MPL-2.0",
       "engines": {
         "node": ">=4"
       }
@@ -10482,20 +9853,11 @@
       "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
       "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">= 0.4"
       }
     },
-    "node_modules/babel-core": {
-      "version": "7.0.0-bridge.0",
-      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
-      "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
     "node_modules/babel-jest": {
       "version": "29.7.0",
       "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
@@ -11283,7 +10645,6 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
       "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "es-define-property": "^1.0.0",
@@ -11340,9 +10701,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001651",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
-      "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
+      "version": "1.0.30001660",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz",
+      "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==",
       "funding": [
         {
           "type": "opencollective",
@@ -11380,22 +10741,20 @@
       }
     },
     "node_modules/chai": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz",
-      "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
+      "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "assertion-error": "^1.1.0",
-        "check-error": "^1.0.3",
-        "deep-eql": "^4.1.3",
-        "get-func-name": "^2.0.2",
-        "loupe": "^2.3.6",
-        "pathval": "^1.1.1",
-        "type-detect": "^4.1.0"
+        "assertion-error": "^2.0.1",
+        "check-error": "^2.1.1",
+        "deep-eql": "^5.0.1",
+        "loupe": "^3.1.0",
+        "pathval": "^2.0.0"
       },
       "engines": {
-        "node": ">=4"
+        "node": ">=12"
       }
     },
     "node_modules/chalk": {
@@ -11446,6 +10805,7 @@
       "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
       "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
       "dev": true,
+      "license": "MIT",
       "funding": {
         "type": "github",
         "url": "https://github.com/sponsors/wooorm"
@@ -11456,6 +10816,7 @@
       "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
       "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
       "dev": true,
+      "license": "MIT",
       "funding": {
         "type": "github",
         "url": "https://github.com/sponsors/wooorm"
@@ -11469,16 +10830,13 @@
       "license": "MIT"
     },
     "node_modules/check-error": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
-      "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
+      "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
       "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "get-func-name": "^2.0.2"
-      },
+      "license": "MIT",
       "engines": {
-        "node": "*"
+        "node": ">= 16"
       }
     },
     "node_modules/chokidar": {
@@ -11517,16 +10875,6 @@
         "node": ">= 6"
       }
     },
-    "node_modules/chownr": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
-      "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/chrome-trace-event": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
@@ -11563,20 +10911,10 @@
         "safe-buffer": "^5.0.1"
       }
     },
-    "node_modules/citty": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
-      "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "consola": "^3.2.3"
-      }
-    },
     "node_modules/cjs-module-lexer": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz",
-      "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz",
+      "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==",
       "license": "MIT"
     },
     "node_modules/classnames": {
@@ -11651,9 +10989,9 @@
       }
     },
     "node_modules/cli-truncate/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "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"
@@ -11663,9 +11001,9 @@
       }
     },
     "node_modules/cli-truncate/node_modules/emoji-regex": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
-      "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+      "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
       "license": "MIT"
     },
     "node_modules/cli-truncate/node_modules/string-width": {
@@ -11741,34 +11079,6 @@
         "node": ">=0.8"
       }
     },
-    "node_modules/clone-deep": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
-      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-plain-object": "^2.0.4",
-        "kind-of": "^6.0.2",
-        "shallow-clone": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/clone-deep/node_modules/is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/co": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -11969,23 +11279,6 @@
         "node": ">= 6"
       }
     },
-    "node_modules/confbox": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz",
-      "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/consola": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
-      "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^14.18.0 || >=16.10.0"
-      }
-    },
     "node_modules/console-browserify": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
@@ -12272,35 +11565,6 @@
         "node": "*"
       }
     },
-    "node_modules/crypto-random-string": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
-      "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "type-fest": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/crypto-random-string/node_modules/type-fest": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
-      "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
-      "dev": true,
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/css-functions-list": {
       "version": "3.2.2",
       "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz",
@@ -12546,7 +11810,8 @@
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
       "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
-      "dev": true
+      "dev": true,
+      "license": "BSD-2-Clause"
     },
     "node_modules/data-urls": {
       "version": "3.0.2",
@@ -12618,12 +11883,12 @@
       }
     },
     "node_modules/debug": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
-      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "version": "4.3.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
       "license": "MIT",
       "dependencies": {
-        "ms": "2.1.2"
+        "ms": "^2.1.3"
       },
       "engines": {
         "node": ">=6.0"
@@ -12662,14 +11927,11 @@
       "license": "MIT"
     },
     "node_modules/deep-eql": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
-      "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
+      "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
       "dev": true,
       "license": "MIT",
-      "dependencies": {
-        "type-detect": "^4.0.0"
-      },
       "engines": {
         "node": ">=6"
       }
@@ -12679,6 +11941,7 @@
       "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
       "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "array-buffer-byte-length": "^1.0.0",
         "call-bind": "^1.0.5",
@@ -12740,7 +12003,6 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
       "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "es-define-property": "^1.0.0",
@@ -12772,13 +12034,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/defu": {
-      "version": "6.1.4",
-      "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
-      "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -13116,9 +12371,9 @@
       "license": "MIT"
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.13",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
-      "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
+      "version": "1.5.22",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.22.tgz",
+      "integrity": "sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==",
       "license": "ISC"
     },
     "node_modules/elliptic": {
@@ -13230,19 +12485,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/envinfo": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz",
-      "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "envinfo": "dist/cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/environment": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
@@ -13347,7 +12589,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
       "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "get-intrinsic": "^1.2.4"
@@ -13360,7 +12601,6 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
       "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -13371,6 +12611,7 @@
       "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
       "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.2",
         "get-intrinsic": "^1.1.3",
@@ -13475,9 +12716,9 @@
       }
     },
     "node_modules/esbuild": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
-      "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz",
+      "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==",
       "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
@@ -13485,32 +12726,33 @@
         "esbuild": "bin/esbuild"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       },
       "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.21.5",
-        "@esbuild/android-arm": "0.21.5",
-        "@esbuild/android-arm64": "0.21.5",
-        "@esbuild/android-x64": "0.21.5",
-        "@esbuild/darwin-arm64": "0.21.5",
-        "@esbuild/darwin-x64": "0.21.5",
-        "@esbuild/freebsd-arm64": "0.21.5",
-        "@esbuild/freebsd-x64": "0.21.5",
-        "@esbuild/linux-arm": "0.21.5",
-        "@esbuild/linux-arm64": "0.21.5",
-        "@esbuild/linux-ia32": "0.21.5",
-        "@esbuild/linux-loong64": "0.21.5",
-        "@esbuild/linux-mips64el": "0.21.5",
-        "@esbuild/linux-ppc64": "0.21.5",
-        "@esbuild/linux-riscv64": "0.21.5",
-        "@esbuild/linux-s390x": "0.21.5",
-        "@esbuild/linux-x64": "0.21.5",
-        "@esbuild/netbsd-x64": "0.21.5",
-        "@esbuild/openbsd-x64": "0.21.5",
-        "@esbuild/sunos-x64": "0.21.5",
-        "@esbuild/win32-arm64": "0.21.5",
-        "@esbuild/win32-ia32": "0.21.5",
-        "@esbuild/win32-x64": "0.21.5"
+        "@esbuild/aix-ppc64": "0.23.1",
+        "@esbuild/android-arm": "0.23.1",
+        "@esbuild/android-arm64": "0.23.1",
+        "@esbuild/android-x64": "0.23.1",
+        "@esbuild/darwin-arm64": "0.23.1",
+        "@esbuild/darwin-x64": "0.23.1",
+        "@esbuild/freebsd-arm64": "0.23.1",
+        "@esbuild/freebsd-x64": "0.23.1",
+        "@esbuild/linux-arm": "0.23.1",
+        "@esbuild/linux-arm64": "0.23.1",
+        "@esbuild/linux-ia32": "0.23.1",
+        "@esbuild/linux-loong64": "0.23.1",
+        "@esbuild/linux-mips64el": "0.23.1",
+        "@esbuild/linux-ppc64": "0.23.1",
+        "@esbuild/linux-riscv64": "0.23.1",
+        "@esbuild/linux-s390x": "0.23.1",
+        "@esbuild/linux-x64": "0.23.1",
+        "@esbuild/netbsd-x64": "0.23.1",
+        "@esbuild/openbsd-arm64": "0.23.1",
+        "@esbuild/openbsd-x64": "0.23.1",
+        "@esbuild/sunos-x64": "0.23.1",
+        "@esbuild/win32-arm64": "0.23.1",
+        "@esbuild/win32-ia32": "0.23.1",
+        "@esbuild/win32-x64": "0.23.1"
       }
     },
     "node_modules/esbuild-register": {
@@ -13527,9 +12769,9 @@
       }
     },
     "node_modules/escalade": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
-      "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -13589,44 +12831,40 @@
       }
     },
     "node_modules/eslint": {
-      "version": "8.57.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
-      "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+      "version": "9.10.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz",
+      "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==",
       "dev": true,
-      "peer": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.6.1",
-        "@eslint/eslintrc": "^2.1.4",
-        "@eslint/js": "8.57.0",
-        "@humanwhocodes/config-array": "^0.11.14",
+        "@eslint-community/regexpp": "^4.11.0",
+        "@eslint/config-array": "^0.18.0",
+        "@eslint/eslintrc": "^3.1.0",
+        "@eslint/js": "9.10.0",
+        "@eslint/plugin-kit": "^0.1.0",
         "@humanwhocodes/module-importer": "^1.0.1",
+        "@humanwhocodes/retry": "^0.3.0",
         "@nodelib/fs.walk": "^1.2.8",
-        "@ungap/structured-clone": "^1.2.0",
         "ajv": "^6.12.4",
         "chalk": "^4.0.0",
         "cross-spawn": "^7.0.2",
         "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
         "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^7.2.2",
-        "eslint-visitor-keys": "^3.4.3",
-        "espree": "^9.6.1",
-        "esquery": "^1.4.2",
+        "eslint-scope": "^8.0.2",
+        "eslint-visitor-keys": "^4.0.0",
+        "espree": "^10.1.0",
+        "esquery": "^1.5.0",
         "esutils": "^2.0.2",
         "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
+        "file-entry-cache": "^8.0.0",
         "find-up": "^5.0.0",
         "glob-parent": "^6.0.2",
-        "globals": "^13.19.0",
-        "graphemer": "^1.4.0",
         "ignore": "^5.2.0",
         "imurmurhash": "^0.1.4",
         "is-glob": "^4.0.0",
         "is-path-inside": "^3.0.3",
-        "js-yaml": "^4.1.0",
         "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
         "lodash.merge": "^4.6.2",
         "minimatch": "^3.1.2",
         "natural-compare": "^1.4.0",
@@ -13638,19 +12876,28 @@
         "eslint": "bin/eslint.js"
       },
       "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"
+        "url": "https://eslint.org/donate"
+      },
+      "peerDependencies": {
+        "jiti": "*"
+      },
+      "peerDependenciesMeta": {
+        "jiti": {
+          "optional": true
+        }
       }
     },
     "node_modules/eslint-config-next": {
-      "version": "14.2.8",
-      "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.8.tgz",
-      "integrity": "sha512-gRqxHkSuCrQro6xqXnmXphcq8rdiw7FI+nLXpWmIlp/AfUzHCgXNQE7mOK+oco+SRaJbhqCg/68uRln1qjkF+Q==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.11.tgz",
+      "integrity": "sha512-gGIoBoHCJuLn6vaV1Ke8UurVvgb7JjQv6oRlWmI6RAAxz7KwJOYxxm2blctavA0a3eofbE9TdgKvvTb2G55OHQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@next/eslint-plugin-next": "14.2.8",
+        "@next/eslint-plugin-next": "14.2.11",
         "@rushstack/eslint-patch": "^1.3.3",
         "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0",
         "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0",
@@ -13671,95 +12918,12 @@
         }
       }
     },
-    "node_modules/eslint-config-next/node_modules/doctrine": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-      "dev": true,
-      "dependencies": {
-        "esutils": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/eslint-config-next/node_modules/eslint-plugin-import": {
-      "version": "2.30.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz",
-      "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==",
-      "dev": true,
-      "dependencies": {
-        "@rtsao/scc": "^1.1.0",
-        "array-includes": "^3.1.8",
-        "array.prototype.findlastindex": "^1.2.5",
-        "array.prototype.flat": "^1.3.2",
-        "array.prototype.flatmap": "^1.3.2",
-        "debug": "^3.2.7",
-        "doctrine": "^2.1.0",
-        "eslint-import-resolver-node": "^0.3.9",
-        "eslint-module-utils": "^2.9.0",
-        "hasown": "^2.0.2",
-        "is-core-module": "^2.15.1",
-        "is-glob": "^4.0.3",
-        "minimatch": "^3.1.2",
-        "object.fromentries": "^2.0.8",
-        "object.groupby": "^1.0.3",
-        "object.values": "^1.2.0",
-        "semver": "^6.3.1",
-        "tsconfig-paths": "^3.15.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "peerDependencies": {
-        "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
-      }
-    },
-    "node_modules/eslint-config-next/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,
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/eslint-config-next/node_modules/eslint-plugin-import/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/eslint-config-next/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,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/eslint-config-next/node_modules/eslint-plugin-import/node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
     "node_modules/eslint-config-next/node_modules/eslint-plugin-react-hooks": {
       "version": "4.6.2",
       "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
       "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=10"
       },
@@ -13767,52 +12931,6 @@
         "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
       }
     },
-    "node_modules/eslint-config-next/node_modules/json5": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
-      "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
-      "dev": true,
-      "dependencies": {
-        "minimist": "^1.2.0"
-      },
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/eslint-config-next/node_modules/strip-bom": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-      "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/eslint-config-next/node_modules/tsconfig-paths": {
-      "version": "3.15.0",
-      "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
-      "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
-      "dev": true,
-      "dependencies": {
-        "@types/json5": "^0.0.29",
-        "json5": "^1.0.2",
-        "minimist": "^1.2.6",
-        "strip-bom": "^3.0.0"
-      }
-    },
-    "node_modules/eslint-config-prettier": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
-      "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "eslint-config-prettier": "bin/cli.js"
-      },
-      "peerDependencies": {
-        "eslint": ">=7.0.0"
-      }
-    },
     "node_modules/eslint-import-resolver-node": {
       "version": "0.3.9",
       "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
@@ -13840,6 +12958,7 @@
       "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz",
       "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "@nolyfill/is-core-module": "1.0.39",
         "debug": "^4.3.5",
@@ -13899,21 +13018,52 @@
         "type": "opencollective",
         "url": "https://opencollective.com/unified"
       },
-      "peerDependencies": {
-        "eslint": ">=8.0.0"
+      "peerDependencies": {
+        "eslint": ">=8.0.0"
+      }
+    },
+    "node_modules/eslint-mdx/node_modules/acorn": {
+      "version": "8.12.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
+      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.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/acorn": {
-      "version": "8.12.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+    "node_modules/eslint-mdx/node_modules/espree": {
+      "version": "9.6.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
       "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "acorn": "^8.9.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^3.4.1"
       },
       "engines": {
-        "node": ">=0.4.0"
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
       }
     },
     "node_modules/eslint-module-utils": {
@@ -13921,6 +13071,7 @@
       "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz",
       "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "debug": "^3.2.7"
       },
@@ -13943,11 +13094,38 @@
         "ms": "^2.1.1"
       }
     },
+    "node_modules/eslint-plugin-import": {
+      "name": "eslint-plugin-import-x",
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz",
+      "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/utils": "^8.1.0",
+        "debug": "^4.3.4",
+        "doctrine": "^3.0.0",
+        "eslint-import-resolver-node": "^0.3.9",
+        "get-tsconfig": "^4.7.3",
+        "is-glob": "^4.0.3",
+        "minimatch": "^9.0.3",
+        "semver": "^7.6.3",
+        "stable-hash": "^0.0.4",
+        "tslib": "^2.6.3"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0"
+      }
+    },
     "node_modules/eslint-plugin-import-x": {
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz",
       "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/utils": "^8.1.0",
         "debug": "^4.3.4",
@@ -13968,13 +13146,14 @@
       }
     },
     "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/scope-manager": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz",
-      "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz",
+      "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/types": "8.4.0",
-        "@typescript-eslint/visitor-keys": "8.4.0"
+        "@typescript-eslint/types": "8.5.0",
+        "@typescript-eslint/visitor-keys": "8.5.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -13985,10 +13164,11 @@
       }
     },
     "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/types": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz",
-      "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz",
+      "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
@@ -13997,20 +13177,17 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz",
-      "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==",
+    "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/utils": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz",
+      "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/types": "8.4.0",
-        "@typescript-eslint/visitor-keys": "8.4.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"
+        "@eslint-community/eslint-utils": "^4.4.0",
+        "@typescript-eslint/scope-manager": "8.5.0",
+        "@typescript-eslint/types": "8.5.0",
+        "@typescript-eslint/typescript-estree": "8.5.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -14019,22 +13196,100 @@
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
       },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0"
       }
     },
-    "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/utils": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz",
-      "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==",
+    "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/visitor-keys": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz",
+      "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.5.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/eslint-plugin-import-x/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-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==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/@typescript-eslint/scope-manager": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz",
+      "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.5.0",
+        "@typescript-eslint/visitor-keys": "8.5.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/@typescript-eslint/types": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz",
+      "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==",
+      "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/eslint-plugin-import/node_modules/@typescript-eslint/utils": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz",
+      "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
-        "@typescript-eslint/scope-manager": "8.4.0",
-        "@typescript-eslint/types": "8.4.0",
-        "@typescript-eslint/typescript-estree": "8.4.0"
+        "@typescript-eslint/scope-manager": "8.5.0",
+        "@typescript-eslint/types": "8.5.0",
+        "@typescript-eslint/typescript-estree": "8.5.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -14047,13 +13302,14 @@
         "eslint": "^8.57.0 || ^9.0.0"
       }
     },
-    "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz",
-      "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==",
+    "node_modules/eslint-plugin-import/node_modules/@typescript-eslint/visitor-keys": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz",
+      "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/types": "8.4.0",
+        "@typescript-eslint/types": "8.5.0",
         "eslint-visitor-keys": "^3.4.3"
       },
       "engines": {
@@ -14064,11 +13320,41 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
+    "node_modules/eslint-plugin-import/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-plugin-import/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/eslint-plugin-jsx-a11y": {
       "version": "6.10.0",
       "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz",
       "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "aria-query": "~5.1.3",
         "array-includes": "^3.1.8",
@@ -14099,6 +13385,7 @@
       "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
       "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
       "dev": true,
+      "license": "Apache-2.0",
       "dependencies": {
         "deep-equal": "^2.0.5"
       }
@@ -14108,6 +13395,7 @@
       "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"
@@ -14118,6 +13406,7 @@
       "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"
       },
@@ -14125,6 +13414,22 @@
         "node": "*"
       }
     },
+    "node_modules/eslint-plugin-markdown": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz",
+      "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mdast-util-from-markdown": "^0.8.5"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
     "node_modules/eslint-plugin-mdx": {
       "version": "3.1.5",
       "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz",
@@ -14152,21 +13457,6 @@
         "eslint": ">=8.0.0"
       }
     },
-    "node_modules/eslint-plugin-mdx/node_modules/eslint-plugin-markdown": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz",
-      "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==",
-      "dev": true,
-      "dependencies": {
-        "mdast-util-from-markdown": "^0.8.5"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      }
-    },
     "node_modules/eslint-plugin-no-relative-import-paths": {
       "version": "1.5.5",
       "resolved": "https://registry.npmjs.org/eslint-plugin-no-relative-import-paths/-/eslint-plugin-no-relative-import-paths-1.5.5.tgz",
@@ -14175,10 +13465,11 @@
       "license": "ISC"
     },
     "node_modules/eslint-plugin-react": {
-      "version": "7.35.2",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz",
-      "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==",
+      "version": "7.36.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz",
+      "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "array-includes": "^3.1.8",
         "array.prototype.findlast": "^1.2.5",
@@ -14206,6 +13497,19 @@
         "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
       }
     },
+    "node_modules/eslint-plugin-react-hooks": {
+      "version": "5.1.0-rc-4c58fce7-20240904",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-4c58fce7-20240904.tgz",
+      "integrity": "sha512-PDoulHvydL8q8QhhyQx9y7c0Ot79D/o53+/6GG/9stROV2iBteNl/n8WNxwdcVtaSrFJ2BXd/M1U2fyjhelUzA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "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/brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -14272,10 +13576,11 @@
       }
     },
     "node_modules/eslint-plugin-storybook": {
-      "version": "0.9.0--canary.156.da7873a.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.9.0--canary.156.da7873a.0.tgz",
-      "integrity": "sha512-3b6hQMRfKWwkNB0koK0y9Boi+GYAt8vz+3tzU5JHylyAZh3Vg5TgvxM6IRhKixEY4OlQhsJPhqMzP0rT9fP5mA==",
+      "version": "0.9.0--canary.156.26b630a.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.9.0--canary.156.26b630a.0.tgz",
+      "integrity": "sha512-DKeYmn75Z4rltmd+sRRX+wJQKuhPkkepxDvNQhqnXG1bqJhWWh5SYSvsAxW8YMSSG8MWh8lPH8OSvcTgE+u8kA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@storybook/csf": "^0.0.1",
         "@typescript-eslint/utils": "^5.62.0",
@@ -14298,6 +13603,38 @@
         "lodash": "^4.17.15"
       }
     },
+    "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/scope-manager": {
+      "version": "5.62.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
+      "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "5.62.0",
+        "@typescript-eslint/visitor-keys": "5.62.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/types": {
+      "version": "5.62.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
+      "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
     "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/utils": {
       "version": "5.62.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
@@ -14325,6 +13662,24 @@
         "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
     },
+    "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/visitor-keys": {
+      "version": "5.62.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
+      "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "5.62.0",
+        "eslint-visitor-keys": "^3.3.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
     "node_modules/eslint-plugin-storybook/node_modules/eslint-scope": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -14339,6 +13694,19 @@
         "node": ">=8.0.0"
       }
     },
+    "node_modules/eslint-plugin-storybook/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-plugin-storybook/node_modules/estraverse": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
@@ -14354,6 +13722,7 @@
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz",
       "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "esrecurse": "^4.3.0",
         "estraverse": "^5.2.0"
@@ -14366,59 +13735,24 @@
       }
     },
     "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==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
+      "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
       "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/node_modules/@eslint/eslintrc": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
-      "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^9.6.0",
-        "globals": "^13.19.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.0",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
-      },
-      "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"
       }
     },
-    "node_modules/eslint/node_modules/@eslint/js": {
-      "version": "8.57.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
-      "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
-      "dev": true,
-      "peer": true,
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      }
-    },
     "node_modules/eslint/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",
-      "peer": true,
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
@@ -14436,7 +13770,6 @@
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -14448,7 +13781,6 @@
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
@@ -14460,59 +13792,12 @@
         "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/eslint/node_modules/eslint-scope": {
-      "version": "7.2.2",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
-      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/eslint/node_modules/file-entry-cache": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "flat-cache": "^3.0.4"
-      },
-      "engines": {
-        "node": "^10.12.0 || >=12.0.0"
-      }
-    },
-    "node_modules/eslint/node_modules/globals": {
-      "version": "13.24.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
-      "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "type-fest": "^0.20.2"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/eslint/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",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/eslint/node_modules/minimatch": {
       "version": "3.1.2",
@@ -14520,7 +13805,6 @@
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
       "license": "ISC",
-      "peer": true,
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -14528,32 +13812,19 @@
         "node": "*"
       }
     },
-    "node_modules/eslint/node_modules/type-fest": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-      "dev": true,
-      "peer": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/espree": {
-      "version": "9.6.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
-      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
+      "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
       "dev": true,
       "license": "BSD-2-Clause",
       "dependencies": {
-        "acorn": "^8.9.0",
+        "acorn": "^8.12.0",
         "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.4.1"
+        "eslint-visitor-keys": "^4.0.0"
       },
       "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"
@@ -15030,16 +14301,6 @@
         "bser": "2.1.1"
       }
     },
-    "node_modules/fd-package-json": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-1.2.0.tgz",
-      "integrity": "sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "walk-up-path": "^3.0.1"
-      }
-    },
     "node_modules/feed": {
       "version": "4.2.2",
       "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz",
@@ -15083,6 +14344,7 @@
       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
       "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "flat-cache": "^4.0.0"
       },
@@ -15095,6 +14357,7 @@
       "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"
@@ -15251,16 +14514,6 @@
       "dev": true,
       "license": "ISC"
     },
-    "node_modules/flow-parser": {
-      "version": "0.244.0",
-      "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.244.0.tgz",
-      "integrity": "sha512-Dkc88m5k8bx1VvHTO9HEJ7tvMcSb3Zvcv1PY4OHK7pHdtdY2aUjhmPy6vpjVJ2uUUOIybRlb91sXE8g4doChtA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
     "node_modules/for-each": {
       "version": "0.3.3",
       "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@@ -15543,39 +14796,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/fs-minipass": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
-      "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/fs-minipass/node_modules/minipass": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
-      "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/fs-minipass/node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true,
-      "license": "ISC"
-    },
     "node_modules/fs-monkey": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz",
@@ -15686,7 +14906,6 @@
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
       "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "es-errors": "^1.3.0",
@@ -15753,9 +14972,9 @@
       }
     },
     "node_modules/get-tsconfig": {
-      "version": "4.7.6",
-      "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz",
-      "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==",
+      "version": "4.8.1",
+      "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz",
+      "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -15765,26 +14984,6 @@
         "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
       }
     },
-    "node_modules/giget": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz",
-      "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "citty": "^0.1.6",
-        "consola": "^3.2.3",
-        "defu": "^6.1.4",
-        "node-fetch-native": "^1.6.3",
-        "nypm": "^0.3.8",
-        "ohash": "^1.1.3",
-        "pathe": "^1.1.2",
-        "tar": "^6.2.0"
-      },
-      "bin": {
-        "giget": "dist/cli.mjs"
-      }
-    },
     "node_modules/github-slugger": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
@@ -15982,7 +15181,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
       "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "get-intrinsic": "^1.1.3"
@@ -16096,7 +15294,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
       "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "es-define-property": "^1.0.0"
@@ -16109,7 +15306,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
       "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -16122,7 +15318,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
       "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -16238,6 +15433,29 @@
         "url": "https://opencollective.com/unified"
       }
     },
+    "node_modules/hast-util-to-html": {
+      "version": "9.0.2",
+      "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.2.tgz",
+      "integrity": "sha512-RP5wNpj5nm1Z8cloDv4Sl4RS8jH5HYa0v93YB6Wb4poEzgMo/dAAL0KcT4974dCjcNG5pkLqTImeFHHCwwfY3g==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/hast": "^3.0.0",
+        "@types/unist": "^3.0.0",
+        "ccount": "^2.0.0",
+        "comma-separated-tokens": "^2.0.0",
+        "hast-util-whitespace": "^3.0.0",
+        "html-void-elements": "^3.0.0",
+        "mdast-util-to-hast": "^13.0.0",
+        "property-information": "^6.0.0",
+        "space-separated-tokens": "^2.0.0",
+        "stringify-entities": "^4.0.0",
+        "zwitch": "^2.0.4"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
     "node_modules/hast-util-to-jsx-runtime": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
@@ -16266,18 +15484,18 @@
       }
     },
     "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz",
-      "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==",
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
+      "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
       "license": "MIT"
     },
     "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz",
-      "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==",
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
+      "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
       "license": "MIT",
       "dependencies": {
-        "inline-style-parser": "0.2.3"
+        "inline-style-parser": "0.2.4"
       }
     },
     "node_modules/hast-util-to-string": {
@@ -16442,6 +15660,16 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/html-void-elements": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+      "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
     "node_modules/html-webpack-plugin": {
       "version": "5.6.0",
       "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz",
@@ -16577,12 +15805,12 @@
       }
     },
     "node_modules/husky": {
-      "version": "9.0.11",
-      "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz",
-      "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==",
+      "version": "9.1.6",
+      "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz",
+      "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==",
       "license": "MIT",
       "bin": {
-        "husky": "bin.mjs"
+        "husky": "bin.js"
       },
       "engines": {
         "node": ">=18"
@@ -16874,6 +16102,7 @@
       "version": "10.5.14",
       "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz",
       "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==",
+      "license": "BSD-3-Clause",
       "dependencies": {
         "@formatjs/ecma402-abstract": "2.0.0",
         "@formatjs/fast-memoize": "2.2.0",
@@ -16905,6 +16134,7 @@
       "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
       "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
       "dev": true,
+      "license": "MIT",
       "funding": {
         "type": "github",
         "url": "https://github.com/sponsors/wooorm"
@@ -16915,6 +16145,7 @@
       "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
       "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "is-alphabetical": "^1.0.0",
         "is-decimal": "^1.0.0"
@@ -17052,6 +16283,7 @@
       "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz",
       "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "semver": "^7.6.3"
       }
@@ -17121,6 +16353,7 @@
       "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
       "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
       "dev": true,
+      "license": "MIT",
       "funding": {
         "type": "github",
         "url": "https://github.com/sponsors/wooorm"
@@ -17219,6 +16452,7 @@
       "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
       "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
       "dev": true,
+      "license": "MIT",
       "funding": {
         "type": "github",
         "url": "https://github.com/sponsors/wooorm"
@@ -17543,16 +16777,6 @@
       "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
       "license": "ISC"
     },
-    "node_modules/isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/istanbul-lib-coverage": {
       "version": "3.2.2",
       "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
@@ -17665,13 +16889,16 @@
       }
     },
     "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.1",
+      "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz",
+      "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==",
       "license": "BlueOak-1.0.0",
       "dependencies": {
         "@isaacs/cliui": "^8.0.2"
       },
+      "engines": {
+        "node": "20 || >=22"
+      },
       "funding": {
         "url": "https://github.com/sponsors/isaacs"
       },
@@ -18912,82 +18139,6 @@
         "js-yaml": "bin/js-yaml.js"
       }
     },
-    "node_modules/jscodeshift": {
-      "version": "0.15.2",
-      "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz",
-      "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.23.0",
-        "@babel/parser": "^7.23.0",
-        "@babel/plugin-transform-class-properties": "^7.22.5",
-        "@babel/plugin-transform-modules-commonjs": "^7.23.0",
-        "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11",
-        "@babel/plugin-transform-optional-chaining": "^7.23.0",
-        "@babel/plugin-transform-private-methods": "^7.22.5",
-        "@babel/preset-flow": "^7.22.15",
-        "@babel/preset-typescript": "^7.23.0",
-        "@babel/register": "^7.22.15",
-        "babel-core": "^7.0.0-bridge.0",
-        "chalk": "^4.1.2",
-        "flow-parser": "0.*",
-        "graceful-fs": "^4.2.4",
-        "micromatch": "^4.0.4",
-        "neo-async": "^2.5.0",
-        "node-dir": "^0.1.17",
-        "recast": "^0.23.3",
-        "temp": "^0.8.4",
-        "write-file-atomic": "^2.3.0"
-      },
-      "bin": {
-        "jscodeshift": "bin/jscodeshift.js"
-      },
-      "peerDependencies": {
-        "@babel/preset-env": "^7.1.6"
-      },
-      "peerDependenciesMeta": {
-        "@babel/preset-env": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/jscodeshift/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/jscodeshift/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/jscodeshift/node_modules/write-file-atomic": {
-      "version": "2.4.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
-      "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "graceful-fs": "^4.1.11",
-        "imurmurhash": "^0.1.4",
-        "signal-exit": "^3.0.2"
-      }
-    },
     "node_modules/jsdom": {
       "version": "20.0.3",
       "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
@@ -19170,19 +18321,22 @@
       "version": "0.34.0",
       "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz",
       "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/language-subtag-registry": {
       "version": "0.3.23",
       "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
       "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==",
-      "dev": true
+      "dev": true,
+      "license": "CC0-1.0"
     },
     "node_modules/language-tags": {
       "version": "1.0.9",
       "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
       "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "language-subtag-registry": "^0.3.20"
       },
@@ -19233,21 +18387,21 @@
       "license": "MIT"
     },
     "node_modules/lint-staged": {
-      "version": "15.2.7",
-      "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.7.tgz",
-      "integrity": "sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==",
+      "version": "15.2.10",
+      "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz",
+      "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==",
       "license": "MIT",
       "dependencies": {
         "chalk": "~5.3.0",
         "commander": "~12.1.0",
-        "debug": "~4.3.4",
+        "debug": "~4.3.6",
         "execa": "~8.0.1",
-        "lilconfig": "~3.1.1",
-        "listr2": "~8.2.1",
-        "micromatch": "~4.0.7",
+        "lilconfig": "~3.1.2",
+        "listr2": "~8.2.4",
+        "micromatch": "~4.0.8",
         "pidtree": "~0.6.0",
         "string-argv": "~0.3.2",
-        "yaml": "~2.4.2"
+        "yaml": "~2.5.0"
       },
       "bin": {
         "lint-staged": "bin/lint-staged.js"
@@ -19420,9 +18574,9 @@
       }
     },
     "node_modules/listr2/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "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"
@@ -19444,9 +18598,9 @@
       }
     },
     "node_modules/listr2/node_modules/emoji-regex": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
-      "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+      "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
       "license": "MIT"
     },
     "node_modules/listr2/node_modules/string-width": {
@@ -19579,6 +18733,7 @@
       "version": "4.6.2",
       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/lodash.mergewith": {
@@ -19673,9 +18828,9 @@
       }
     },
     "node_modules/log-update/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "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"
@@ -19712,9 +18867,9 @@
       }
     },
     "node_modules/log-update/node_modules/emoji-regex": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
-      "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+      "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
       "license": "MIT"
     },
     "node_modules/log-update/node_modules/is-fullwidth-code-point": {
@@ -19861,9 +19016,9 @@
       }
     },
     "node_modules/loupe": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
-      "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
+      "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -20276,6 +19431,7 @@
       "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
       "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/mdast": "^3.0.0",
         "mdast-util-to-string": "^2.0.0",
@@ -20292,13 +19448,15 @@
       "version": "2.0.11",
       "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
       "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
       "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
       "dev": true,
+      "license": "MIT",
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/unified"
@@ -20309,6 +19467,7 @@
       "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
       "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.2"
       },
@@ -20991,9 +20150,9 @@
       }
     },
     "node_modules/mdast-util-mdx-expression": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
-      "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
+      "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
       "license": "MIT",
       "dependencies": {
         "@types/estree-jsx": "^1.0.0",
@@ -21090,9 +20249,9 @@
       }
     },
     "node_modules/mdast-util-mdx-jsx": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz",
-      "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz",
+      "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==",
       "license": "MIT",
       "dependencies": {
         "@types/estree-jsx": "^1.0.0",
@@ -21105,7 +20264,6 @@
         "mdast-util-to-markdown": "^2.0.0",
         "parse-entities": "^4.0.0",
         "stringify-entities": "^4.0.0",
-        "unist-util-remove-position": "^5.0.0",
         "unist-util-stringify-position": "^4.0.0",
         "vfile-message": "^4.0.0"
       },
@@ -21683,6 +20841,7 @@
           "url": "https://opencollective.com/unified"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "debug": "^4.0.0",
         "parse-entities": "^2.0.0"
@@ -21887,9 +21046,9 @@
       }
     },
     "node_modules/micromark-extension-mdx-jsx": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz",
-      "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz",
+      "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==",
       "license": "MIT",
       "dependencies": {
         "@types/acorn": "^4.0.0",
@@ -21899,6 +21058,7 @@
         "micromark-factory-mdx-expression": "^2.0.0",
         "micromark-factory-space": "^2.0.0",
         "micromark-util-character": "^2.0.0",
+        "micromark-util-events-to-acorn": "^2.0.0",
         "micromark-util-symbol": "^2.0.0",
         "micromark-util-types": "^2.0.0",
         "vfile-message": "^4.0.0"
@@ -22018,9 +21178,9 @@
       }
     },
     "node_modules/micromark-factory-mdx-expression": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz",
-      "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz",
+      "integrity": "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -22035,6 +21195,7 @@
       "dependencies": {
         "@types/estree": "^1.0.0",
         "devlop": "^1.0.0",
+        "micromark-factory-space": "^2.0.0",
         "micromark-util-character": "^2.0.0",
         "micromark-util-events-to-acorn": "^2.0.0",
         "micromark-util-symbol": "^2.0.0",
@@ -22403,6 +21564,7 @@
       "version": "4.0.8",
       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
       "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+      "license": "MIT",
       "dependencies": {
         "braces": "^3.0.3",
         "picomatch": "^2.3.1"
@@ -22513,15 +21675,15 @@
       "license": "MIT"
     },
     "node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "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": ">=16 || 14 >=14.17"
+        "node": "20 || >=22"
       },
       "funding": {
         "url": "https://github.com/sponsors/isaacs"
@@ -22546,40 +21708,6 @@
         "node": ">=16 || 14 >=14.17"
       }
     },
-    "node_modules/minizlib": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
-      "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "minipass": "^3.0.0",
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/minizlib/node_modules/minipass": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
-      "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/minizlib/node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true,
-      "license": "ISC"
-    },
     "node_modules/mkdirp": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -22593,32 +21721,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/mlly": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz",
-      "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "acorn": "^8.11.3",
-        "pathe": "^1.1.2",
-        "pkg-types": "^1.1.1",
-        "ufo": "^1.5.3"
-      }
-    },
-    "node_modules/mlly/node_modules/acorn": {
-      "version": "8.12.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
     "node_modules/module-details-from-path": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz",
@@ -22636,9 +21738,9 @@
       }
     },
     "node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
       "license": "MIT"
     },
     "node_modules/mute-stream": {
@@ -22700,11 +21802,12 @@
       "license": "MIT"
     },
     "node_modules/next": {
-      "version": "14.2.7",
-      "resolved": "https://registry.npmjs.org/next/-/next-14.2.7.tgz",
-      "integrity": "sha512-4Qy2aK0LwH4eQiSvQWyKuC7JXE13bIopEQesWE0c/P3uuNRnZCQanI0vsrMLmUQJLAto+A+/8+sve2hd+BQuOQ==",
+      "version": "14.2.11",
+      "resolved": "https://registry.npmjs.org/next/-/next-14.2.11.tgz",
+      "integrity": "sha512-8MDFqHBhdmR2wdfaWc8+lW3A/hppFe1ggQ9vgIu/g2/2QEMYJrPoQP6b+VNk56gIug/bStysAmrpUKtj3XN8Bw==",
+      "license": "MIT",
       "dependencies": {
-        "@next/env": "14.2.7",
+        "@next/env": "14.2.11",
         "@swc/helpers": "0.5.5",
         "busboy": "1.6.0",
         "caniuse-lite": "^1.0.30001579",
@@ -22719,15 +21822,15 @@
         "node": ">=18.17.0"
       },
       "optionalDependencies": {
-        "@next/swc-darwin-arm64": "14.2.7",
-        "@next/swc-darwin-x64": "14.2.7",
-        "@next/swc-linux-arm64-gnu": "14.2.7",
-        "@next/swc-linux-arm64-musl": "14.2.7",
-        "@next/swc-linux-x64-gnu": "14.2.7",
-        "@next/swc-linux-x64-musl": "14.2.7",
-        "@next/swc-win32-arm64-msvc": "14.2.7",
-        "@next/swc-win32-ia32-msvc": "14.2.7",
-        "@next/swc-win32-x64-msvc": "14.2.7"
+        "@next/swc-darwin-arm64": "14.2.11",
+        "@next/swc-darwin-x64": "14.2.11",
+        "@next/swc-linux-arm64-gnu": "14.2.11",
+        "@next/swc-linux-arm64-musl": "14.2.11",
+        "@next/swc-linux-x64-gnu": "14.2.11",
+        "@next/swc-linux-x64-musl": "14.2.11",
+        "@next/swc-win32-arm64-msvc": "14.2.11",
+        "@next/swc-win32-ia32-msvc": "14.2.11",
+        "@next/swc-win32-x64-msvc": "14.2.11"
       },
       "peerDependencies": {
         "@opentelemetry/api": "^1.1.0",
@@ -22749,19 +21852,20 @@
       }
     },
     "node_modules/next-intl": {
-      "version": "3.19.0",
-      "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.19.0.tgz",
-      "integrity": "sha512-ciiHYBwR3ztoMdJZgFmt0LII7GYTsLA/MFt3y681q4Lw4fI5EYNCZSYb9XA/BIt3ZX5S1TLUP1uOERy1dIQvMg==",
+      "version": "3.19.1",
+      "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.19.1.tgz",
+      "integrity": "sha512-KlJSomzbB5dNkWBIiSIRaoy5zqwLgHNV5Zw0ULhkHjNnPN7aLFFv2G+VOQKle630sNH2JiKc9nsmi6PM1GdkhA==",
       "funding": [
         {
           "type": "individual",
           "url": "https://github.com/sponsors/amannn"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "@formatjs/intl-localematcher": "^0.5.4",
         "negotiator": "^0.6.3",
-        "use-intl": "^3.19.0"
+        "use-intl": "^3.19.1"
       },
       "peerDependencies": {
         "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0",
@@ -22806,6 +21910,29 @@
         "node": "^10 || ^12 || >=14"
       }
     },
+    "node_modules/next/node_modules/styled-jsx": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
+      "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
+      "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"
+      },
+      "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",
@@ -22824,43 +21951,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/node-dir": {
-      "version": "0.1.17",
-      "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
-      "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "minimatch": "^3.0.2"
-      },
-      "engines": {
-        "node": ">= 0.10.5"
-      }
-    },
-    "node_modules/node-dir/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/node-dir/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/node-domexception": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
@@ -22900,13 +21990,6 @@
         }
       }
     },
-    "node_modules/node-fetch-native": {
-      "version": "1.6.4",
-      "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
-      "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/node-fetch/node_modules/tr46": {
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -23080,197 +22163,45 @@
         "npm-install-checks": "^6.0.0",
         "npm-normalize-package-bin": "^3.0.0",
         "npm-package-arg": "^11.0.0",
-        "semver": "^7.3.5"
-      },
-      "engines": {
-        "node": "^16.14.0 || >=18.0.0"
-      }
-    },
-    "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/nth-check": {
-      "version": "2.1.1",
-      "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"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/nth-check?sponsor=1"
-      }
-    },
-    "node_modules/nwsapi": {
-      "version": "2.2.12",
-      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz",
-      "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/nypm": {
-      "version": "0.3.9",
-      "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.9.tgz",
-      "integrity": "sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "citty": "^0.1.6",
-        "consola": "^3.2.3",
-        "execa": "^8.0.1",
-        "pathe": "^1.1.2",
-        "pkg-types": "^1.1.1",
-        "ufo": "^1.5.3"
-      },
-      "bin": {
-        "nypm": "dist/cli.mjs"
-      },
-      "engines": {
-        "node": "^14.16.0 || >=16.10.0"
-      }
-    },
-    "node_modules/nypm/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==",
-      "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",
-        "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/nypm/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==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/nypm/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==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=16.17.0"
-      }
-    },
-    "node_modules/nypm/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==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/nypm/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==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/nypm/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==",
-      "dev": true,
-      "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/nypm/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==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mimic-fn": "^4.0.0"
+        "semver": "^7.3.5"
       },
       "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "node": "^16.14.0 || >=18.0.0"
       }
     },
-    "node_modules/nypm/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==",
+    "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",
-      "engines": {
-        "node": ">=12"
+      "dependencies": {
+        "path-key": "^3.0.0"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+      "engines": {
+        "node": ">=8"
       }
     },
-    "node_modules/nypm/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==",
+    "node_modules/nth-check": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
       "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0"
       },
       "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
       }
     },
+    "node_modules/nwsapi": {
+      "version": "2.2.12",
+      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz",
+      "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/object-assign": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -23293,7 +22224,6 @@
       "version": "1.13.2",
       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
       "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -23382,20 +22312,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/object.groupby": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
-      "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.7",
-        "define-properties": "^1.2.1",
-        "es-abstract": "^1.23.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/object.values": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
@@ -23421,13 +22337,6 @@
       "dev": true,
       "license": "ISC"
     },
-    "node_modules/ohash": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz",
-      "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/on-finished": {
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -23467,19 +22376,33 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/oniguruma-to-js": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.0.tgz",
+      "integrity": "sha512-GwNFPQygkpDjO9MOr54Rqi01dGS+h9VAS//Qxz9lTN5B09CxqiIc7rydvdV+Ex2Z8Vk+zqfHH7hU6ePn8uf+Mg==",
+      "license": "MIT",
+      "dependencies": {
+        "regex": "^4.3.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
     "node_modules/openai": {
-      "version": "4.56.0",
-      "resolved": "https://registry.npmjs.org/openai/-/openai-4.56.0.tgz",
-      "integrity": "sha512-zcag97+3bG890MNNa0DQD9dGmmTWL8unJdNkulZzWRXrl+QeD+YkBI4H58rJcwErxqGK6a0jVPZ4ReJjhDGcmw==",
+      "version": "4.60.0",
+      "resolved": "https://registry.npmjs.org/openai/-/openai-4.60.0.tgz",
+      "integrity": "sha512-U/wNmrUPdfsvU1GrKRP5mY5YHR3ev6vtdfNID6Sauz+oquWD8r+cXPL1xiUlYniosPKajy33muVHhGS/9/t6KA==",
       "license": "Apache-2.0",
       "dependencies": {
         "@types/node": "^18.11.18",
         "@types/node-fetch": "^2.6.4",
+        "@types/qs": "^6.9.15",
         "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"
+        "node-fetch": "^2.6.7",
+        "qs": "^6.10.3"
       },
       "bin": {
         "openai": "bin/cli"
@@ -23494,84 +22417,19 @@
       }
     },
     "node_modules/openai/node_modules/@types/node": {
-      "version": "18.19.45",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
-      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
+      "version": "18.19.50",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.50.tgz",
+      "integrity": "sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==",
       "license": "MIT",
       "dependencies": {
         "undici-types": "~5.26.4"
       }
     },
-    "node_modules/opentelemetry-instrumentation-fetch-node": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/opentelemetry-instrumentation-fetch-node/-/opentelemetry-instrumentation-fetch-node-1.2.0.tgz",
-      "integrity": "sha512-aiSt/4ubOTyb1N5C2ZbGrBvaJOXIZhZvpRPYuUVxQJe27wJZqf/o65iPrqgLcgfeOLaQ8cS2Q+762jrYvniTrA==",
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "@opentelemetry/api": "^1.6.0",
-        "@opentelemetry/instrumentation": "^0.43.0",
-        "@opentelemetry/semantic-conventions": "^1.17.0"
-      },
-      "engines": {
-        "node": ">18.0.0"
-      }
-    },
-    "node_modules/opentelemetry-instrumentation-fetch-node/node_modules/@opentelemetry/instrumentation": {
-      "version": "0.43.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.43.0.tgz",
-      "integrity": "sha512-S1uHE+sxaepgp+t8lvIDuRgyjJWisAb733198kwQTUc9ZtYQ2V2gmyCtR1x21ePGVLoMiX/NWY7WA290hwkjJQ==",
-      "license": "Apache-2.0",
-      "optional": true,
-      "dependencies": {
-        "@types/shimmer": "^1.0.2",
-        "import-in-the-middle": "1.4.2",
-        "require-in-the-middle": "^7.1.1",
-        "semver": "^7.5.2",
-        "shimmer": "^1.2.1"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "peerDependencies": {
-        "@opentelemetry/api": "^1.3.0"
-      }
-    },
-    "node_modules/opentelemetry-instrumentation-fetch-node/node_modules/acorn": {
-      "version": "8.12.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
-      "license": "MIT",
-      "optional": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/opentelemetry-instrumentation-fetch-node/node_modules/acorn-import-assertions": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
-      "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
-      "license": "MIT",
-      "optional": true,
-      "peerDependencies": {
-        "acorn": "^8"
-      }
-    },
-    "node_modules/opentelemetry-instrumentation-fetch-node/node_modules/import-in-the-middle": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz",
-      "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==",
-      "license": "Apache-2.0",
-      "optional": true,
-      "dependencies": {
-        "acorn": "^8.8.2",
-        "acorn-import-assertions": "^1.9.0",
-        "cjs-module-lexer": "^1.2.2",
-        "module-details-from-path": "^1.0.3"
-      }
+    "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",
@@ -23749,6 +22607,7 @@
       "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
       "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "character-entities": "^1.0.0",
         "character-entities-legacy": "^1.0.0",
@@ -23767,6 +22626,7 @@
       "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
       "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
       "dev": true,
+      "license": "MIT",
       "funding": {
         "type": "github",
         "url": "https://github.com/sponsors/wooorm"
@@ -23877,26 +22737,29 @@
       "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"
+      "version": "11.0.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz",
+      "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==",
+      "license": "ISC",
+      "engines": {
+        "node": "20 || >=22"
+      }
     },
     "node_modules/path-to-regexp": {
       "version": "0.1.10",
@@ -23915,21 +22778,14 @@
         "node": ">=8"
       }
     },
-    "node_modules/pathe": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
-      "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/pathval": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
-      "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
+      "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
       "dev": true,
       "license": "MIT",
       "engines": {
-        "node": "*"
+        "node": ">= 14.16"
       }
     },
     "node_modules/pbkdf2": {
@@ -24001,9 +22857,9 @@
       }
     },
     "node_modules/picocolors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
-      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+      "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
       "license": "ISC"
     },
     "node_modules/picomatch": {
@@ -24117,18 +22973,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/pkg-types": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz",
-      "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "confbox": "^0.1.7",
-        "mlly": "^1.7.1",
-        "pathe": "^1.1.2"
-      }
-    },
     "node_modules/pluralize": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
@@ -24176,9 +23020,9 @@
       }
     },
     "node_modules/postcss": {
-      "version": "8.4.41",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
-      "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
+      "version": "8.4.45",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz",
+      "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==",
       "funding": [
         {
           "type": "opencollective",
@@ -24361,9 +23205,9 @@
       }
     },
     "node_modules/postcss-mixins": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-10.0.1.tgz",
-      "integrity": "sha512-5+cI9r8L5ChegVsLM9pXa53Ft03Mt9xAq+kvzqfrUHGPCArVGOfUvmQK2CLP3XWWP2dqxDLQI+lIcXG+GTqOBQ==",
+      "version": "11.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-11.0.1.tgz",
+      "integrity": "sha512-jM9F8bdfP6v/2kCV6Z1PbRribZqB7gh+grtgLnWayQLDo/nLLyEZtmMZ/od6n2YNkyWJo/CAKLHqWNmef0SMVA==",
       "funding": [
         {
           "type": "opencollective",
@@ -24376,13 +23220,13 @@
       ],
       "license": "MIT",
       "dependencies": {
-        "fast-glob": "^3.3.2",
         "postcss-js": "^4.0.1",
         "postcss-simple-vars": "^7.0.1",
-        "sugarss": "^4.0.1"
+        "sugarss": "^4.0.1",
+        "tinyglobby": "^0.2.6"
       },
       "engines": {
-        "node": "^18.0 || >= 20.0"
+        "node": "^18.0 || ^ 20.0 || >= 22.0"
       },
       "peerDependencies": {
         "postcss": "^8.2.14"
@@ -24609,6 +23453,7 @@
       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
       "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "prettier": "bin/prettier.cjs"
       },
@@ -24624,6 +23469,7 @@
       "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.6.tgz",
       "integrity": "sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=14.21.3"
       },
@@ -24915,7 +23761,6 @@
       "version": "6.13.0",
       "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
       "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
-      "dev": true,
       "license": "BSD-3-Clause",
       "dependencies": {
         "side-channel": "^1.0.6"
@@ -25348,9 +24193,9 @@
       "license": "MIT"
     },
     "node_modules/regenerate-unicode-properties": {
-      "version": "10.1.1",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
-      "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+      "version": "10.2.0",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
+      "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -25377,6 +24222,12 @@
         "@babel/runtime": "^7.8.4"
       }
     },
+    "node_modules/regex": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.2.tgz",
+      "integrity": "sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==",
+      "license": "MIT"
+    },
     "node_modules/regex-parser": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz",
@@ -27719,13 +26570,6 @@
         "node": ">= 0.8"
       }
     },
-    "node_modules/send/node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/serialize-javascript": {
       "version": "6.0.2",
       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
@@ -27761,7 +26605,6 @@
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
       "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "define-data-property": "^1.1.4",
@@ -27819,19 +26662,6 @@
         "sha.js": "bin.js"
       }
     },
-    "node_modules/shallow-clone": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/sharp": {
       "version": "0.33.5",
       "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
@@ -27895,11 +26725,16 @@
       }
     },
     "node_modules/shiki": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.15.2.tgz",
-      "integrity": "sha512-M+7QZQZiZw/cZeizrC/yryG3eeG8pTUhu7ZaHxVyzPNFIRIlN46YBciquoNPCiXiwLnx6JB62f3lSuSYQrus1w==",
+      "version": "1.17.5",
+      "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.5.tgz",
+      "integrity": "sha512-8i4+fbTlnJPUYkgBEZ92QKmK3Gr23n2YVwqwyz0e+VmXqKpJZuV6P/CY00gSGHDXXjXT5l0BLwsMfO2Pe52TLQ==",
+      "license": "MIT",
       "dependencies": {
-        "@shikijs/core": "1.15.2",
+        "@shikijs/core": "1.17.5",
+        "@shikijs/engine-javascript": "1.17.5",
+        "@shikijs/engine-oniguruma": "1.17.5",
+        "@shikijs/types": "1.17.5",
+        "@shikijs/vscode-textmate": "^9.2.2",
         "@types/hast": "^3.0.4"
       }
     },
@@ -27913,7 +26748,6 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
       "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.7",
@@ -28014,9 +26848,9 @@
       }
     },
     "node_modules/source-map-js": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
-      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
       "license": "BSD-3-Clause",
       "engines": {
         "node": ">=0.10.0"
@@ -28099,7 +26933,8 @@
       "version": "0.0.4",
       "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz",
       "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/stack-utils": {
       "version": "2.0.6",
@@ -28143,170 +26978,55 @@
         "node": ">=6"
       }
     },
-    "node_modules/stacktrace-parser/node_modules/type-fest": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
-      "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/stop-iteration-iterator": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
-      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
-      "dev": true,
-      "dependencies": {
-        "internal-slot": "^1.0.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/storybook": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.2.9.tgz",
-      "integrity": "sha512-S7Q/Yt4A+nu1O23rg39lQvBqL2Vg+PKXbserDWUR4LFJtfmoZ2xGO8oFIhJmvvhjUBvolw1q7QDeswPq2i0sGw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.24.4",
-        "@babel/types": "^7.24.0",
-        "@storybook/codemod": "8.2.9",
-        "@storybook/core": "8.2.9",
-        "@types/semver": "^7.3.4",
-        "@yarnpkg/fslib": "2.10.3",
-        "@yarnpkg/libzip": "2.3.0",
-        "chalk": "^4.1.0",
-        "commander": "^6.2.1",
-        "cross-spawn": "^7.0.3",
-        "detect-indent": "^6.1.0",
-        "envinfo": "^7.7.3",
-        "execa": "^5.0.0",
-        "fd-package-json": "^1.2.0",
-        "find-up": "^5.0.0",
-        "fs-extra": "^11.1.0",
-        "giget": "^1.0.0",
-        "globby": "^14.0.1",
-        "jscodeshift": "^0.15.1",
-        "leven": "^3.1.0",
-        "ora": "^5.4.1",
-        "prettier": "^3.1.1",
-        "prompts": "^2.4.0",
-        "semver": "^7.3.7",
-        "strip-json-comments": "^3.0.1",
-        "tempy": "^3.1.0",
-        "tiny-invariant": "^1.3.1",
-        "ts-dedent": "^2.0.0"
-      },
-      "bin": {
-        "getstorybook": "bin/index.cjs",
-        "sb": "bin/index.cjs",
-        "storybook": "bin/index.cjs"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/storybook"
-      }
-    },
-    "node_modules/storybook/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/storybook/node_modules/commander": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
-      "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
-      "dev": true,
-      "license": "MIT",
+    "node_modules/stacktrace-parser/node_modules/type-fest": {
+      "version": "0.7.1",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+      "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
+      "license": "(MIT OR CC0-1.0)",
       "engines": {
-        "node": ">= 6"
+        "node": ">=8"
       }
     },
-    "node_modules/storybook/node_modules/fs-extra": {
-      "version": "11.2.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
-      "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+    "node_modules/statuses": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
       "dev": true,
       "license": "MIT",
-      "dependencies": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
       "engines": {
-        "node": ">=14.14"
+        "node": ">= 0.8"
       }
     },
-    "node_modules/storybook/node_modules/globby": {
-      "version": "14.0.2",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz",
-      "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==",
+    "node_modules/stop-iteration-iterator": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@sindresorhus/merge-streams": "^2.1.0",
-        "fast-glob": "^3.3.2",
-        "ignore": "^5.2.4",
-        "path-type": "^5.0.0",
-        "slash": "^5.1.0",
-        "unicorn-magic": "^0.1.0"
+        "internal-slot": "^1.0.4"
       },
       "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "node": ">= 0.4"
       }
     },
-    "node_modules/storybook/node_modules/path-type": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
-      "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
+    "node_modules/storybook": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.0.tgz",
+      "integrity": "sha512-XKU+nem9OKX/juvJPwka1Q7DTpSbOe0IMp8ZyLQWorhFKpquJdUjryl7Z9GiFZyyTykCqH4ItQ7h8PaOmqVMOw==",
       "dev": true,
       "license": "MIT",
-      "engines": {
-        "node": ">=12"
+      "dependencies": {
+        "@storybook/core": "8.3.0"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/storybook/node_modules/slash": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
-      "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.16"
+      "bin": {
+        "getstorybook": "bin/index.cjs",
+        "sb": "bin/index.cjs",
+        "storybook": "bin/index.cjs"
       },
       "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
       }
     },
     "node_modules/stream-browserify": {
@@ -28468,6 +27188,7 @@
       "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz",
       "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "define-properties": "^1.1.3",
         "es-abstract": "^1.17.5"
@@ -28697,9 +27418,10 @@
       }
     },
     "node_modules/styled-jsx": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
-      "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
+      "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==",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "client-only": "0.0.1"
@@ -28708,7 +27430,7 @@
         "node": ">= 12.0.0"
       },
       "peerDependencies": {
-        "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+        "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
       },
       "peerDependenciesMeta": {
         "@babel/core": {
@@ -28734,6 +27456,7 @@
           "url": "https://github.com/sponsors/stylelint"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "@csstools/css-parser-algorithms": "^3.0.1",
         "@csstools/css-tokenizer": "^3.0.1",
@@ -28820,6 +27543,7 @@
           "url": "https://github.com/sponsors/stylelint"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "stylelint-config-recommended": "^14.0.1"
       },
@@ -28845,13 +27569,12 @@
       }
     },
     "node_modules/stylelint-selector-bem-pattern": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/stylelint-selector-bem-pattern/-/stylelint-selector-bem-pattern-4.0.0.tgz",
-      "integrity": "sha512-nPo3Vi/xl5s9yEZ2GEFxsdzeq3GJI0f70Cqc6kwn5zbCDkmb2p0S48Mr1O8F/DrXV6kIbQyPbft3Cmmtk42QMQ==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/stylelint-selector-bem-pattern/-/stylelint-selector-bem-pattern-4.0.1.tgz",
+      "integrity": "sha512-zpyC52/aqwbxbtliyTKdV3gv+h/ExZUTIn7tKMt9nfILtMhYIeJNF5a3UE1dtv9L826ulXU+83YA83Ymx3jW0A==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "eslint-plugin-jest": "^27.2.2",
         "lodash": ">=4.17.21",
         "postcss": "^8.4.24",
         "postcss-bem-linter": "^4.0.1"
@@ -28863,83 +27586,10 @@
         "stylelint": "^16.2.1"
       }
     },
-    "node_modules/stylelint-selector-bem-pattern/node_modules/@typescript-eslint/utils": {
-      "version": "5.62.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
-      "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@types/json-schema": "^7.0.9",
-        "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.62.0",
-        "@typescript-eslint/types": "5.62.0",
-        "@typescript-eslint/typescript-estree": "5.62.0",
-        "eslint-scope": "^5.1.1",
-        "semver": "^7.3.7"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      }
-    },
-    "node_modules/stylelint-selector-bem-pattern/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-      "dev": true,
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/stylelint-selector-bem-pattern/node_modules/@typescript-eslint/utils/node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/stylelint-selector-bem-pattern/node_modules/eslint-plugin-jest": {
-      "version": "27.9.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz",
-      "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/utils": "^5.10.0"
-      },
-      "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
-      },
-      "peerDependencies": {
-        "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0",
-        "eslint": "^7.0.0 || ^8.0.0",
-        "jest": "*"
-      },
-      "peerDependenciesMeta": {
-        "@typescript-eslint/eslint-plugin": {
-          "optional": true
-        },
-        "jest": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/stylelint/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "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": {
@@ -28957,9 +27607,9 @@
       "license": "MIT"
     },
     "node_modules/stylelint/node_modules/file-entry-cache": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz",
-      "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==",
+      "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": {
@@ -29112,6 +27762,58 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
+    "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": {
+        "@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/minimatch": {
+      "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": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "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.18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/sugarss": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz",
@@ -29245,9 +27947,9 @@
       }
     },
     "node_modules/tailwindcss": {
-      "version": "3.4.10",
-      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz",
-      "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==",
+      "version": "3.4.11",
+      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.11.tgz",
+      "integrity": "sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==",
       "license": "MIT",
       "dependencies": {
         "@alloc/quick-lru": "^5.2.0",
@@ -29283,147 +27985,43 @@
     },
     "node_modules/tailwindcss/node_modules/lilconfig": {
       "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
-      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/tailwindcss/node_modules/postcss-import": {
-      "version": "15.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
-      "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.0.0",
-        "read-cache": "^1.0.0",
-        "resolve": "^1.1.7"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.0.0"
-      }
-    },
-    "node_modules/tapable": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/tar": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
-      "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "chownr": "^2.0.0",
-        "fs-minipass": "^2.0.0",
-        "minipass": "^5.0.0",
-        "minizlib": "^2.1.1",
-        "mkdirp": "^1.0.3",
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/tar/node_modules/minipass": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
-      "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/tar/node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/temp": {
-      "version": "0.8.4",
-      "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
-      "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "rimraf": "~2.6.2"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/temp-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz",
-      "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.16"
-      }
-    },
-    "node_modules/temp/node_modules/rimraf": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-      "deprecated": "Rimraf versions prior to v4 are no longer supported",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
+      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
       }
     },
-    "node_modules/tempy": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz",
-      "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==",
-      "dev": true,
+    "node_modules/tailwindcss/node_modules/postcss-import": {
+      "version": "15.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+      "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
       "license": "MIT",
       "dependencies": {
-        "is-stream": "^3.0.0",
-        "temp-dir": "^3.0.0",
-        "type-fest": "^2.12.2",
-        "unique-string": "^3.0.0"
+        "postcss-value-parser": "^4.0.0",
+        "read-cache": "^1.0.0",
+        "resolve": "^1.1.7"
       },
       "engines": {
-        "node": ">=14.16"
+        "node": ">=14.0.0"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+      "peerDependencies": {
+        "postcss": "^8.0.0"
       }
     },
-    "node_modules/tempy/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==",
-      "dev": true,
+    "node_modules/tapable": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
       "license": "MIT",
       "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "node": ">=6"
       }
     },
     "node_modules/terser": {
-      "version": "5.31.6",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz",
-      "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==",
+      "version": "5.32.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.32.0.tgz",
+      "integrity": "sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "@jridgewell/source-map": "^0.3.3",
@@ -29681,10 +28279,59 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/tinyglobby": {
+      "version": "0.2.6",
+      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.6.tgz",
+      "integrity": "sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==",
+      "license": "ISC",
+      "dependencies": {
+        "fdir": "^6.3.0",
+        "picomatch": "^4.0.2"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/tinyglobby/node_modules/fdir": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.3.0.tgz",
+      "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==",
+      "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",
+      "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
     "node_modules/tinyspy": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz",
-      "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
+      "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -29903,32 +28550,9 @@
       }
     },
     "node_modules/tslib": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
-      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
-      "license": "0BSD"
-    },
-    "node_modules/tsutils": {
-      "version": "3.21.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
-      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "tslib": "^1.8.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      },
-      "peerDependencies": {
-        "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
-      }
-    },
-    "node_modules/tsutils/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true,
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+      "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
       "license": "0BSD"
     },
     "node_modules/tty-browserify": {
@@ -29939,88 +28563,95 @@
       "license": "MIT"
     },
     "node_modules/turbo": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.1.tgz",
-      "integrity": "sha512-u9gUDkmR9dFS8b5kAYqIETK4OnzsS4l2ragJ0+soSMHh6VEeNHjTfSjk1tKxCqLyziCrPogadxP680J+v6yGHw==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.2.tgz",
+      "integrity": "sha512-Jb0rbU4iHEVQ18An/YfakdIv9rKnd3zUfSE117EngrfWXFHo3RndVH96US3GsT8VHpwTncPePDBT2t06PaFLrw==",
+      "license": "MIT",
       "bin": {
         "turbo": "bin/turbo"
       },
       "optionalDependencies": {
-        "turbo-darwin-64": "2.1.1",
-        "turbo-darwin-arm64": "2.1.1",
-        "turbo-linux-64": "2.1.1",
-        "turbo-linux-arm64": "2.1.1",
-        "turbo-windows-64": "2.1.1",
-        "turbo-windows-arm64": "2.1.1"
+        "turbo-darwin-64": "2.1.2",
+        "turbo-darwin-arm64": "2.1.2",
+        "turbo-linux-64": "2.1.2",
+        "turbo-linux-arm64": "2.1.2",
+        "turbo-windows-64": "2.1.2",
+        "turbo-windows-arm64": "2.1.2"
       }
     },
     "node_modules/turbo-darwin-64": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.1.1.tgz",
-      "integrity": "sha512-aYNuJpZlCoi0Htd79fl/2DywpewGKijdXeOfg9KzNuPVKzSMYlAXuAlNGh0MKjiOcyqxQGL7Mq9LFhwA0VpDpQ==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.1.2.tgz",
+      "integrity": "sha512-3TEBxHWh99h2yIzkuIigMEOXt/ItYQp0aPiJjPd1xN4oDcsKK5AxiFKPH9pdtfIBzYsY59kQhZiFj0ELnSP7Bw==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
       ]
     },
     "node_modules/turbo-darwin-arm64": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.1.1.tgz",
-      "integrity": "sha512-tifJKD8yHY48rHXPMcM8o1jI/Jk2KCaXiNjTKvvy9Zsim61BZksNVLelIbrRoCGwAN6PUBZO2lGU5iL/TQJ5Pw==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.1.2.tgz",
+      "integrity": "sha512-he0miWNq2WxJzsH82jS2Z4MXpnkzn9SH8a79iPXiJkq25QREImucscM4RPasXm8wARp91pyysJMq6aasD45CeA==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
       ]
     },
     "node_modules/turbo-linux-64": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.1.1.tgz",
-      "integrity": "sha512-Js6d/bSQe9DuV9c7ITXYpsU/ADzFHABdz1UIHa7Oqjj9VOEbFeA9WpAn0c+mdJrVD+IXJFbbDZUjN7VYssmtcg==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.1.2.tgz",
+      "integrity": "sha512-fKUBcc0rK8Vdqv5a/E3CSpMBLG1bzwv+Q0Q83F8fG2ZfNCNKGbcEYABdonNZkkx141Rj03cZQFCgxu3MVEGU+A==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/turbo-linux-arm64": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.1.1.tgz",
-      "integrity": "sha512-LidzTCq0yvQ+N8w8Qub9FmhQ/mmEIeoqFi7DSupekEV2EjvE9jw/zYc9Pk67X+g7dHVfgOnvVzmrjChdxpFePw==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.1.2.tgz",
+      "integrity": "sha512-sV8Bpmm0WiuxgbhxymcC7wSsuxfBBieI98GegSwbr/bs1ANAgzCg93urIrdKdQ3/b31zZxQwcaP4FBF1wx1Qdg==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/turbo-windows-64": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.1.1.tgz",
-      "integrity": "sha512-GKc9ZywKwy4xLDhwXd6H07yzl0TB52HjXMrFLyHGhCVnf/w0oq4sLJv2sjbvuarPjsyx4xnCBJ3m3oyL2XmFtA==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.1.2.tgz",
+      "integrity": "sha512-wcmIJZI9ORT9ykHGliFE6kWRQrlH930QGSjSgWC8uFChFFuOyUlvC7ttcxuSvU9VqC7NF4C+GVAcFJQ8lTjN7g==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
       ]
     },
     "node_modules/turbo-windows-arm64": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.1.1.tgz",
-      "integrity": "sha512-oFKkMj11KKUv3xSK9/fhAEQTxLUp1Ol1EOktwc32+SFtEU0uls7kosAz0b+qe8k3pJGEMFdDPdqoEjyJidbxtQ==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.1.2.tgz",
+      "integrity": "sha512-zdnXjrhk7YO6CP+Q5wPueEvOCLH4lDa6C4rrwiakcWcPgcQGbVozJlo4uaQ6awo8HLWQEvOwu84RkWTdLAc/Hw==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -30040,9 +28671,9 @@
       }
     },
     "node_modules/type-detect": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz",
-      "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -30164,6 +28795,7 @@
       "version": "5.5.4",
       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
       "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
+      "devOptional": true,
       "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
@@ -30174,14 +28806,15 @@
       }
     },
     "node_modules/typescript-eslint": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz",
-      "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.5.0.tgz",
+      "integrity": "sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/eslint-plugin": "8.4.0",
-        "@typescript-eslint/parser": "8.4.0",
-        "@typescript-eslint/utils": "8.4.0"
+        "@typescript-eslint/eslint-plugin": "8.5.0",
+        "@typescript-eslint/parser": "8.5.0",
+        "@typescript-eslint/utils": "8.5.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -30197,16 +28830,17 @@
       }
     },
     "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz",
-      "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz",
+      "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/regexpp": "^4.10.0",
-        "@typescript-eslint/scope-manager": "8.4.0",
-        "@typescript-eslint/type-utils": "8.4.0",
-        "@typescript-eslint/utils": "8.4.0",
-        "@typescript-eslint/visitor-keys": "8.4.0",
+        "@typescript-eslint/scope-manager": "8.5.0",
+        "@typescript-eslint/type-utils": "8.5.0",
+        "@typescript-eslint/utils": "8.5.0",
+        "@typescript-eslint/visitor-keys": "8.5.0",
         "graphemer": "^1.4.0",
         "ignore": "^5.3.1",
         "natural-compare": "^1.4.0",
@@ -30230,15 +28864,16 @@
       }
     },
     "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz",
-      "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz",
+      "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
-        "@typescript-eslint/scope-manager": "8.4.0",
-        "@typescript-eslint/types": "8.4.0",
-        "@typescript-eslint/typescript-estree": "8.4.0",
-        "@typescript-eslint/visitor-keys": "8.4.0",
+        "@typescript-eslint/scope-manager": "8.5.0",
+        "@typescript-eslint/types": "8.5.0",
+        "@typescript-eslint/typescript-estree": "8.5.0",
+        "@typescript-eslint/visitor-keys": "8.5.0",
         "debug": "^4.3.4"
       },
       "engines": {
@@ -30258,13 +28893,14 @@
       }
     },
     "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz",
-      "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz",
+      "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/types": "8.4.0",
-        "@typescript-eslint/visitor-keys": "8.4.0"
+        "@typescript-eslint/types": "8.5.0",
+        "@typescript-eslint/visitor-keys": "8.5.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -30275,13 +28911,14 @@
       }
     },
     "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz",
-      "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz",
+      "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/typescript-estree": "8.4.0",
-        "@typescript-eslint/utils": "8.4.0",
+        "@typescript-eslint/typescript-estree": "8.5.0",
+        "@typescript-eslint/utils": "8.5.0",
         "debug": "^4.3.4",
         "ts-api-utils": "^1.3.0"
       },
@@ -30299,56 +28936,30 @@
       }
     },
     "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz",
-      "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==",
-      "dev": true,
-      "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.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz",
-      "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz",
+      "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==",
       "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "8.4.0",
-        "@typescript-eslint/visitor-keys": "8.4.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"
-      },
+      "license": "MIT",
       "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/utils": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz",
-      "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz",
+      "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
-        "@typescript-eslint/scope-manager": "8.4.0",
-        "@typescript-eslint/types": "8.4.0",
-        "@typescript-eslint/typescript-estree": "8.4.0"
+        "@typescript-eslint/scope-manager": "8.5.0",
+        "@typescript-eslint/types": "8.5.0",
+        "@typescript-eslint/typescript-estree": "8.5.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -30362,12 +28973,13 @@
       }
     },
     "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz",
-      "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz",
+      "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/types": "8.4.0",
+        "@typescript-eslint/types": "8.5.0",
         "eslint-visitor-keys": "^3.4.3"
       },
       "engines": {
@@ -30378,17 +28990,23 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/ufo": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
-      "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
+    "node_modules/typescript-eslint/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": "MIT"
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
     },
     "node_modules/uglify-js": {
-      "version": "3.19.2",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.2.tgz",
-      "integrity": "sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==",
+      "version": "3.19.3",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+      "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
       "dev": true,
       "license": "BSD-2-Clause",
       "optional": true,
@@ -30428,15 +29046,15 @@
       }
     },
     "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==",
+      "version": "6.19.8",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+      "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
       "license": "MIT"
     },
     "node_modules/unicode-canonical-property-names-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+      "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -30458,9 +29076,9 @@
       }
     },
     "node_modules/unicode-match-property-value-ecmascript": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
-      "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
+      "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -30477,19 +29095,6 @@
         "node": ">=4"
       }
     },
-    "node_modules/unicorn-magic": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
-      "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/unified": {
       "version": "11.0.5",
       "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
@@ -30577,6 +29182,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",
@@ -30597,6 +29218,29 @@
         "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
       }
     },
+    "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"
+    },
+    "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==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/unified-engine/node_modules/parse-json": {
       "version": "7.1.1",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz",
@@ -30617,6 +29261,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",
@@ -30680,22 +29341,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/unique-string": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
-      "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "crypto-random-string": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/unist-util-inspect": {
       "version": "8.1.0",
       "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.1.0.tgz",
@@ -30749,20 +29394,6 @@
         "url": "https://opencollective.com/unified"
       }
     },
-    "node_modules/unist-util-remove-position": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
-      "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0",
-        "unist-util-visit": "^5.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
     "node_modules/unist-util-stringify-position": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
@@ -30948,9 +29579,10 @@
       }
     },
     "node_modules/use-intl": {
-      "version": "3.19.0",
-      "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.19.0.tgz",
-      "integrity": "sha512-JOA73+YdtArxkvFKrneLAhH55m+x+sA9Wj8w8rYkHkHvcW/76w5T3szSmBG063vH3UqLoIKlsDVBBUfpkB7GMg==",
+      "version": "3.19.1",
+      "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.19.1.tgz",
+      "integrity": "sha512-FUblDZJ/iuXusroBxvzVwXmgjHIef2YHJ0ASRmkMV8whlcRr6QJozBZUR/xB4I0+MMbWDD4GPugUK+MxE2coJA==",
+      "license": "MIT",
       "dependencies": {
         "@formatjs/fast-memoize": "^2.2.0",
         "intl-messageformat": "^10.5.14"
@@ -31117,6 +29749,7 @@
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
       "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+      "license": "MIT",
       "dependencies": {
         "@types/unist": "^3.0.0",
         "vfile-message": "^4.0.0"
@@ -31191,9 +29824,9 @@
       }
     },
     "node_modules/vfile-reporter/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "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": {
@@ -31204,9 +29837,9 @@
       }
     },
     "node_modules/vfile-reporter/node_modules/emoji-regex": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
-      "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+      "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
       "dev": true,
       "license": "MIT"
     },
@@ -31295,16 +29928,16 @@
       "license": "MIT"
     },
     "node_modules/vue": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz",
-      "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.4.tgz",
+      "integrity": "sha512-3yAj2gkmiY+i7+22A1PWM+kjOVXjU74UPINcTiN7grIVPyFFI0lpGwHlV/4xydDmobaBn7/xmi+YG8HeSlCTcg==",
       "license": "MIT",
       "dependencies": {
-        "@vue/compiler-dom": "3.4.38",
-        "@vue/compiler-sfc": "3.4.38",
-        "@vue/runtime-dom": "3.4.38",
-        "@vue/server-renderer": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/compiler-dom": "3.5.4",
+        "@vue/compiler-sfc": "3.5.4",
+        "@vue/runtime-dom": "3.5.4",
+        "@vue/server-renderer": "3.5.4",
+        "@vue/shared": "3.5.4"
       },
       "peerDependencies": {
         "typescript": "*"
@@ -31895,9 +30528,9 @@
       "license": "ISC"
     },
     "node_modules/yaml": {
-      "version": "2.4.5",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
-      "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz",
+      "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==",
       "license": "ISC",
       "bin": {
         "yaml": "bin.mjs"
@@ -31956,6 +30589,19 @@
         "type": "github",
         "url": "https://github.com/sponsors/wooorm"
       }
+    },
+    "packages/i18n": {
+      "name": "@node-core/website-i18n",
+      "devDependencies": {
+        "eslint": "~9.10.0",
+        "eslint-import-resolver-typescript": "~3.6.3",
+        "eslint-plugin-import-x": "~4.2.1",
+        "typescript": "~5.5.4",
+        "typescript-eslint": "~8.5.0"
+      },
+      "engines": {
+        "node": ">=20"
+      }
     }
   }
 }
diff --git a/package.json b/package.json
index 4dd5e9ef1ce2d..91571d15bad8d 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "type": "module",
   "private": true,
-  "name": "@nodejs/website",
+  "name": "nodejs-website",
   "description": "Nodejs.org Website",
   "homepage": "https://nodejs.org",
   "repository": {
@@ -17,7 +17,8 @@
   },
   "packageManager": "npm@10.7.0",
   "workspaces": [
-    "apps/*"
+    "apps/*",
+    "packages/*"
   ],
   "scripts": {
     "dev": "turbo run dev",
@@ -35,15 +36,21 @@
     "prepare": "husky"
   },
   "dependencies": {
-    "husky": "9.0.11",
-    "lint-staged": "15.2.7",
-    "turbo": "2.1.1"
+    "husky": "9.1.6",
+    "lint-staged": "15.2.10",
+    "turbo": "2.1.2"
   },
   "devDependencies": {
     "commitizen": "4.3.0",
     "cz-conventional-changelog": "3.3.0",
     "prettier": "3.3.3",
-    "prettier-plugin-tailwindcss": "0.6.6",
-    "typescript": "~5.5.0"
+    "prettier-plugin-tailwindcss": "0.6.6"
+  },
+  "overrides": {
+    "eslint": "9.10.0",
+    "@typescript-eslint/typescript-estree": "8.5.0",
+    "eslint-config-next": {
+      "eslint-plugin-import": "npm:eslint-plugin-import-x@4.2.1"
+    }
   }
 }
diff --git a/apps/site/i18n/config.json b/packages/i18n/config.json
similarity index 100%
rename from apps/site/i18n/config.json
rename to packages/i18n/config.json
diff --git a/packages/i18n/eslint.config.js b/packages/i18n/eslint.config.js
new file mode 100644
index 0000000000000..6e9478a0712fe
--- /dev/null
+++ b/packages/i18n/eslint.config.js
@@ -0,0 +1,58 @@
+import js from '@eslint/js';
+import importX from 'eslint-plugin-import-x';
+import noRelativeImportPaths from 'eslint-plugin-no-relative-import-paths';
+import tseslint from 'typescript-eslint';
+
+export default tseslint.config(
+  {
+    ignores: [
+      'build',
+      'coverage',
+      'global.d.ts',
+      'junit.xml',
+      'storybook-static/**',
+    ],
+  },
+  {
+    extends: [
+      js.configs.recommended,
+      importX.flatConfigs.recommended,
+      importX.flatConfigs.typescript,
+      ...tseslint.configs.recommended,
+    ],
+    files: ['**/*.{js,mjs,ts}'],
+    plugins: {
+      'no-relative-import-paths': noRelativeImportPaths,
+    },
+    rules: {
+      '@typescript-eslint/array-type': ['error', { default: 'generic' }],
+      '@typescript-eslint/consistent-type-imports': 'error',
+      '@typescript-eslint/no-require-imports': 'off',
+      'import-x/namespace': 'off',
+      'import-x/no-named-as-default-member': 'off',
+      'import-x/no-unresolved': 'off',
+      'import-x/order': [
+        'error',
+        {
+          groups: [
+            'builtin',
+            'external',
+            'internal',
+            ['sibling', 'parent'],
+            'index',
+            'unknown',
+          ],
+          'newlines-between': 'always',
+          alphabetize: {
+            order: 'asc',
+            caseInsensitive: true,
+          },
+        },
+      ],
+      'no-relative-import-paths/no-relative-import-paths': [
+        'warn',
+        { allowSameFolder: true, prefix: '@' },
+      ],
+    },
+  }
+);
diff --git a/packages/i18n/lib/index.mjs b/packages/i18n/lib/index.mjs
new file mode 100644
index 0000000000000..5fefbb9bb5f4d
--- /dev/null
+++ b/packages/i18n/lib/index.mjs
@@ -0,0 +1,39 @@
+'use strict';
+
+import localeConfig from '@node-core/website-i18n/config.json' assert { type: 'json' };
+
+/**
+ * Imports a locale when exists from the locales directory
+ *
+ * @param {string} locale The locale code to import
+ * @returns {Record} The imported locale
+ */
+export const importLocale = async locale => {
+  return import(`../locales/${locale}.json`).then(f => f.default);
+};
+
+/**
+ * A set of available and enabled locales for the website
+ * This is used for allowing us to redirect the user to any
+ * of the available locales that we have enabled on the website
+ *
+ * @returns {Array}
+ */
+export const getAvailableLocales = () =>
+  localeConfig.filter(locale => locale.enabled);
+
+// This gives an easy way of accessing all available locale codes
+export const getAvailableLocaleCodes = () =>
+  getAvailableLocales().map(locale => locale.code);
+
+// This provides the default locale information for the Next.js Application
+// This is marked by the unique `locale.default` property on the `en` locale
+export const getDefaultLocale = () =>
+  getAvailableLocales().find(locale => locale.default);
+
+// Creates a Map of available locales for easy access
+export const getAvailableLocalesMap = () =>
+  Object.fromEntries(localeConfig.map(locale => [locale.code, locale]));
+
+// Creates all supported locales
+export const getAllLocaleCodes = () => localeConfig.map(locale => locale.code);
diff --git a/apps/site/i18n/locales/en.json b/packages/i18n/locales/en.json
similarity index 100%
rename from apps/site/i18n/locales/en.json
rename to packages/i18n/locales/en.json
diff --git a/apps/site/i18n/locales/fr.json b/packages/i18n/locales/fr.json
similarity index 100%
rename from apps/site/i18n/locales/fr.json
rename to packages/i18n/locales/fr.json
diff --git a/apps/site/i18n/locales/id.json b/packages/i18n/locales/id.json
similarity index 100%
rename from apps/site/i18n/locales/id.json
rename to packages/i18n/locales/id.json
diff --git a/apps/site/i18n/locales/pt.json b/packages/i18n/locales/pt.json
similarity index 100%
rename from apps/site/i18n/locales/pt.json
rename to packages/i18n/locales/pt.json
diff --git a/apps/site/i18n/locales/uk.json b/packages/i18n/locales/uk.json
similarity index 100%
rename from apps/site/i18n/locales/uk.json
rename to packages/i18n/locales/uk.json
diff --git a/apps/site/i18n/locales/zh-cn.json b/packages/i18n/locales/zh-cn.json
similarity index 100%
rename from apps/site/i18n/locales/zh-cn.json
rename to packages/i18n/locales/zh-cn.json
diff --git a/apps/site/i18n/locales/zh-tw.json b/packages/i18n/locales/zh-tw.json
similarity index 100%
rename from apps/site/i18n/locales/zh-tw.json
rename to packages/i18n/locales/zh-tw.json
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
new file mode 100644
index 0000000000000..5af01be3f0d0e
--- /dev/null
+++ b/packages/i18n/package.json
@@ -0,0 +1,28 @@
+{
+  "name": "@node-core/website-i18n",
+  "type": "module",
+  ".": {
+    "types": "./dist/index.d.mts",
+    "default": "./lib/index.mjs"
+  },
+  "main": "./lib/index.mjs",
+  "module": "./lib/index.mjs",
+  "types": "./dist/index.d.mts",
+  "files": [
+    "locales"
+  ],
+  "scripts": {
+    "build": "tsc --declaration --emitDeclarationOnly",
+    "lint:js": "eslint \"**/*.{js,mjs,ts}\""
+  },
+  "engines": {
+    "node": ">=20"
+  },
+  "devDependencies": {
+    "eslint": "~9.10.0",
+    "eslint-import-resolver-typescript": "~3.6.3",
+    "eslint-plugin-import-x": "~4.2.1",
+    "typescript": "~5.5.4",
+    "typescript-eslint": "~8.5.0"
+  }
+}
diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json
new file mode 100644
index 0000000000000..70662fcec503e
--- /dev/null
+++ b/packages/i18n/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,
+    "paths": { "@/*": ["./*"] },
+    "baseUrl": ".",
+    "outDir": "dist"
+  },
+  "include": ["lib", "types.d.ts"],
+  "exclude": ["node_modules", "dist"]
+}
diff --git a/packages/i18n/turbo.json b/packages/i18n/turbo.json
new file mode 100644
index 0000000000000..ddc932d6ae7ca
--- /dev/null
+++ b/packages/i18n/turbo.json
@@ -0,0 +1,17 @@
+{
+  "$schema": "https://turbo.build/schema.json",
+  "extends": ["//"],
+  "tasks": {
+    "dev": {
+      "cache": false,
+      "persistent": true
+    },
+    "build": {
+      "dependsOn": [],
+      "outputs": ["dist/**"]
+    },
+    "lint:js": {
+      "inputs": ["lib/**/*.{js,mjs,ts}"]
+    }
+  }
+}
diff --git a/packages/i18n/types.d.ts b/packages/i18n/types.d.ts
new file mode 100644
index 0000000000000..7e0a501af9810
--- /dev/null
+++ b/packages/i18n/types.d.ts
@@ -0,0 +1,10 @@
+export interface LocaleConfig {
+  code: string;
+  localName: string;
+  name: string;
+  langDir: string;
+  dateFormat: string;
+  hrefLang: string;
+  enabled: boolean;
+  default: boolean;
+}
diff --git a/turbo.json b/turbo.json
index 13bc9d9fdab63..bc649c8502b46 100644
--- a/turbo.json
+++ b/turbo.json
@@ -8,10 +8,18 @@
       "outputs": [".prettiercache"]
     },
     "lint": {
-      "dependsOn": ["lint:md", "lint:css", "lint:js"]
+      "dependsOn": [
+        "@node-core/website#lint:md",
+        "@node-core/website#lint:css",
+        "lint:js"
+      ]
     },
     "lint:lint-staged": {
-      "dependsOn": ["lint:md", "lint:css", "lint:js"]
+      "dependsOn": [
+        "@node-core/website#lint:md",
+        "@node-core/website#lint:css",
+        "@node-core/website#lint:js"
+      ]
     },
     "check-types": {
       "dependsOn": ["^topo"]

From 59ca4ee0578ed89d27b35117b996b5c7e7e8eb2f Mon Sep 17 00:00:00 2001
From: Claudio W 
Date: Fri, 13 Sep 2024 19:07:41 +0200
Subject: [PATCH 0019/1385] fix: added missing cache (#7041)

---
 .github/workflows/build.yml | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b0ffcd283e694..40c0d10863678 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -76,6 +76,18 @@ jobs:
           # regardless of having code changes or not
           fetch-depth: 1
 
+      - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
+        with:
+          # See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
+          path: |
+            ~/.npm
+            ${{ github.workspace }}/.next/cache
+          # Generate a new cache whenever packages or source files change.
+          key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
+          # If source files changed but packages didn't, rebuild from a prior cache.
+          restore-keys: |
+            ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
+
       - name: Set up Node.js
         uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
         with:

From ac3f5bb44248c12c7952f06934db85c4f2a15d02 Mon Sep 17 00:00:00 2001
From: Claudio Wunder 
Date: Fri, 13 Sep 2024 20:38:09 +0200
Subject: [PATCH 0020/1385] hotfix: simplify callstack

---
 apps/site/shiki.config.mjs | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/apps/site/shiki.config.mjs b/apps/site/shiki.config.mjs
index 54ef9d3e4485c..d28ee4d3a8ecf 100644
--- a/apps/site/shiki.config.mjs
+++ b/apps/site/shiki.config.mjs
@@ -10,13 +10,17 @@ import shellSessionLanguage from 'shiki/langs/shellsession.mjs';
 import typeScriptLanguage from 'shiki/langs/typescript.mjs';
 import shikiNordTheme from 'shiki/themes/nord.mjs';
 
-/** @type {Array} */
+/**
+ * All languages needed within the Node.js website for syntax highlighting.
+ *
+ * @type {Array}
+ */
 export const LANGUAGES = [
   {
     ...javaScriptLanguage[0],
-    scopeName: 'source.js',
-    aliases: ['mjs', 'cjs', 'js'],
-    displayName: 'JavaScript',
+    // We path the JavaScript language to include the CommonJS and ES Module aliases
+    // that are commonly used (non-standard aliases) within our API docs and Blog posts
+    aliases: javaScriptLanguage[0].aliases.concat('cjs', 'mjs'),
   },
   ...jsonLanguage,
   ...typeScriptLanguage,

From 991be60a315ef3e025ce8464a6ef629c9d836ae4 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer 
Date: Fri, 13 Sep 2024 13:40:10 -0500
Subject: [PATCH 0021/1385] Adds scorecard annotations (#6979)

---
 .github/scorecard.yml | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 .github/scorecard.yml

diff --git a/.github/scorecard.yml b/.github/scorecard.yml
new file mode 100644
index 0000000000000..e461abd489a61
--- /dev/null
+++ b/.github/scorecard.yml
@@ -0,0 +1,8 @@
+# annotations tell scorecard that we have mitigated a concern. automation is only so good at establishing context
+# https://github.com/ossf/scorecard/blob/main/config/README.md#annotating-your-project
+annotations:
+  # our workflows only run when a maintainer allows it
+  - checks:
+      - dangerous-workflow
+    reasons:
+      - reason: remediated

From 4139bbbd21d3a6bdbde5c89fb94ebf1c17d6ccc2 Mon Sep 17 00:00:00 2001
From: Claudio W 
Date: Sat, 14 Sep 2024 13:22:45 +0200
Subject: [PATCH 0022/1385] hotfix: cache path

Signed-off-by: Claudio W 
---
 .github/workflows/build.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 40c0d10863678..ea6321e64705f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -81,7 +81,7 @@ jobs:
           # See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
           path: |
             ~/.npm
-            ${{ github.workspace }}/.next/cache
+            ${{ github.workspace }}/apps/site/.next/cache
           # Generate a new cache whenever packages or source files change.
           key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
           # If source files changed but packages didn't, rebuild from a prior cache.

From d9e08655cef249f878874da3572abcdf6b4a5d0a Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer 
Date: Mon, 16 Sep 2024 02:55:15 -0500
Subject: [PATCH 0023/1385] fix(action): correct lint path, clean up warnings,
 fix lints (#7043)

* fix(action): supply config path

* fix(eslint): supply custom path to pages

* fix(eslint): replace deprecated ignore approach
---
 .eslintignore                         | 5 -----
 .github/workflows/translations-pr.yml | 2 +-
 apps/site/eslint.config.js            | 2 ++
 packages/i18n/eslint.config.js        | 2 ++
 4 files changed, 5 insertions(+), 6 deletions(-)
 delete mode 100644 .eslintignore

diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index ab22ce98c29c5..0000000000000
--- a/.eslintignore
+++ /dev/null
@@ -1,5 +0,0 @@
-# Node.js
-node_modules
-
-# Next.js & Vercel Directories
-.turbo
diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml
index f9d3e4d1ff64a..fa89f6dbb8495 100644
--- a/.github/workflows/translations-pr.yml
+++ b/.github/workflows/translations-pr.yml
@@ -106,7 +106,7 @@ jobs:
       - 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
+        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
diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js
index 376b7d43135e4..5ac5bb2196eb7 100644
--- a/apps/site/eslint.config.js
+++ b/apps/site/eslint.config.js
@@ -22,6 +22,7 @@ const compatConfig = compat.config({
 export default tseslint.config(
   {
     ignores: [
+      'node_modules',
       '.next',
       '.swc',
       '.turbo',
@@ -88,6 +89,7 @@ export default tseslint.config(
     rules: {
       'no-irregular-whitespace': 'off',
       '@next/next/no-img-element': 'off',
+      '@next/next/no-html-link-for-pages': ['error', 'apps/site/pages/'],
 
       // https://github.com/typescript-eslint/typescript-eslint/issues/9860
       '@typescript-eslint/consistent-type-imports': 'off',
diff --git a/packages/i18n/eslint.config.js b/packages/i18n/eslint.config.js
index 6e9478a0712fe..727c2fbc1a061 100644
--- a/packages/i18n/eslint.config.js
+++ b/packages/i18n/eslint.config.js
@@ -6,6 +6,8 @@ import tseslint from 'typescript-eslint';
 export default tseslint.config(
   {
     ignores: [
+      'node_modules',
+      '.turbo',
       'build',
       'coverage',
       'global.d.ts',

From ae062434c5c4bdd943e32233de06806dcc7b45a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ulises=20Gasc=C3=B3n?= 
Date: Mon, 16 Sep 2024 10:24:33 +0200
Subject: [PATCH 0024/1385] Ensure Trusted Code Checkout in GitHub Actions
 Workflow (#7034)

* feat: Ensure Trusted Code Checkout in GitHub Actions Workflow

* fix: update GitHub event name
---
 .github/workflows/build.yml           | 2 +-
 .github/workflows/lighthouse.yml      | 2 +-
 .github/workflows/lint-and-tests.yml  | 4 ++--
 .github/workflows/translations-pr.yml | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ea6321e64705f..429e097ad6117 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -68,7 +68,7 @@ jobs:
         uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
         with:
           # Provides the Pull Request commit SHA or the GitHub merge group ref
-          ref: ${{ github.event.pull_request.head.sha || github.ref }}
+          ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }}
           # We only need to fetch the last commit from the head_ref
           # since we're not using the `--filter` operation from turborepo
           # We don't use the `--filter` as we always want to force builds regardless of having changes or not
diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml
index 1af1b9395b57d..d4b48cb0326ab 100644
--- a/.github/workflows/lighthouse.yml
+++ b/.github/workflows/lighthouse.yml
@@ -46,7 +46,7 @@ jobs:
         uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
         with:
           # Provides the Pull Request commit SHA or the GitHub merge group ref
-          ref: ${{ github.event.pull_request.head.sha || github.ref }}
+          ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }}
 
       - name: Add Comment to PR
         # Signal that a lighthouse run is about to start
diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml
index 8caf0fcdfc051..092527331bee4 100644
--- a/.github/workflows/lint-and-tests.yml
+++ b/.github/workflows/lint-and-tests.yml
@@ -73,7 +73,7 @@ jobs:
         uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
         with:
           # Provides the Pull Request commit SHA or the GitHub merge group ref
-          ref: ${{ github.event.pull_request.head.sha || github.ref }}
+          ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }}
 
       - name: Restore Lint Cache
         uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
@@ -167,7 +167,7 @@ jobs:
         uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
         with:
           # Provides the Pull Request commit SHA or the GitHub merge group ref
-          ref: ${{ github.event.pull_request.head.sha || github.ref }}
+          ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }}
           # The Chromatic (@chromaui/action) Action requires a full history of the current branch in order to be able to compare
           # previous changes and previous commits and determine which Storybooks should be tested against and what should be built
           fetch-depth: 0
diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml
index fa89f6dbb8495..54b312f846393 100644
--- a/.github/workflows/translations-pr.yml
+++ b/.github/workflows/translations-pr.yml
@@ -73,7 +73,7 @@ jobs:
         uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
         with:
           # Provides the Pull Request commit SHA or the GitHub merge group ref
-          ref: ${{ github.event.pull_request.head.sha || github.ref }}
+          ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }}
 
       - name: Restore Lint Cache
         uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2

From d16471477be36d8c4a728f259a01ef74b4d6b017 Mon Sep 17 00:00:00 2001
From: Augustin Mauroy 
Date: Mon, 16 Sep 2024 14:09:38 +0200
Subject: [PATCH 0025/1385] content(learn): update resources about typescript
 (#6951)

* content(learn): update ressources about typescript

* adding important note

* content(learn): update from feedback

Co-Authored-By: Antoine du Hamel 

* content(learn): remove global install of tsc

* fix fails from github copilot

fix fails from github copilot

* fix: remove old stuff from navigation

* update

* update

* Update from feedback

Co-Authored-By: Brian Muenzenmeyer 

---------

Co-authored-by: Antoine du Hamel 
Co-authored-by: Brian Muenzenmeyer 
---
 apps/site/navigation.json                     |  25 ++-
 .../getting-started/nodejs-with-typescript.md | 185 ------------------
 .../pages/en/learn/typescript/introduction.md |  50 +++++
 .../pages/en/learn/typescript/run-natively.md |  38 ++++
 apps/site/pages/en/learn/typescript/run.md    |  49 +++++
 .../pages/en/learn/typescript/transpile.md    | 118 +++++++++++
 apps/site/redirects.json                      |   4 +
 apps/site/site.json                           |  10 +-
 packages/i18n/locales/en.json                 |  10 +-
 9 files changed, 294 insertions(+), 195 deletions(-)
 delete mode 100644 apps/site/pages/en/learn/getting-started/nodejs-with-typescript.md
 create mode 100644 apps/site/pages/en/learn/typescript/introduction.md
 create mode 100644 apps/site/pages/en/learn/typescript/run-natively.md
 create mode 100644 apps/site/pages/en/learn/typescript/run.md
 create mode 100644 apps/site/pages/en/learn/typescript/transpile.md

diff --git a/apps/site/navigation.json b/apps/site/navigation.json
index ea4468a46f6f9..167dade569035 100644
--- a/apps/site/navigation.json
+++ b/apps/site/navigation.json
@@ -163,10 +163,6 @@
               "link": "/learn/getting-started/nodejs-the-difference-between-development-and-production",
               "label": "components.navigation.learn.gettingStarted.links.nodejsTheDifferenceBetweenDevelopmentAndProduction"
             },
-            "nodejsWithTypescript": {
-              "link": "/learn/getting-started/nodejs-with-typescript",
-              "label": "components.navigation.learn.gettingStarted.links.nodejsWithTypescript"
-            },
             "nodejsWithWebassembly": {
               "link": "/learn/getting-started/nodejs-with-webassembly",
               "label": "components.navigation.learn.gettingStarted.links.nodejsWithWebassembly"
@@ -185,6 +181,27 @@
             }
           }
         },
+        "typescript": {
+          "label": "components.navigation.learn.typescript.links.typescript",
+          "items": {
+            "introduction": {
+              "link": "/learn/typescript/introduction",
+              "label": "components.navigation.learn.typescript.links.introduction"
+            },
+            "transpile": {
+              "link": "/learn/typescript/transpile",
+              "label": "components.navigation.learn.typescript.links.transpile"
+            },
+            "run": {
+              "link": "/learn/typescript/run",
+              "label": "components.navigation.learn.typescript.links.run"
+            },
+            "runNatively": {
+              "link": "/learn/typescript/run-natively",
+              "label": "components.navigation.learn.typescript.links.runNatively"
+            }
+          }
+        },
         "asynchronousWork": {
           "label": "components.navigation.learn.asynchronousWork.links.asynchronousWork",
           "items": {
diff --git a/apps/site/pages/en/learn/getting-started/nodejs-with-typescript.md b/apps/site/pages/en/learn/getting-started/nodejs-with-typescript.md
deleted file mode 100644
index a254dca669067..0000000000000
--- a/apps/site/pages/en/learn/getting-started/nodejs-with-typescript.md
+++ /dev/null
@@ -1,185 +0,0 @@
----
-title: Node.js with TypeScript
-layout: learn
-authors: sbielenica, ovflowd, vaishnav-mk, AugustinMauroy
----
-
-# Node.js with TypeScript
-
-## What is TypeScript
-
-**[TypeScript](https://www.typescriptlang.org)** is an open-source language maintained and developed by Microsoft. It's loved and used by a lot of software developers around the world.
-
-Basically, it's a superset of JavaScript that adds new capabilities to the language. The most notable addition is static type definitions, something that is not present in plain JavaScript. Thanks to types, it's possible, for example, to declare what kind of arguments we are expecting and what is returned exactly in our functions or what's the exact shape of the object that we are creating. TypeScript is a really powerful tool and opens a new world of possibilities in JavaScript projects. It makes our code more secure and robust by preventing many bugs before the code is even shipped - it catches problems during code development and integrates wonderfully with code editors like Visual Studio Code.
-
-We can talk about other TypeScript benefits later, let's see some examples now!
-
-### Examples
-
-Take a look at this code snippet and then we can unpack it together:
-
-```ts
-type User = {
-  name: string;
-  age: number;
-};
-
-function isAdult(user: User): boolean {
-  return user.age >= 18;
-}
-
-const justine: User = {
-  name: 'Justine',
-  age: 23,
-};
-
-const isJustineAnAdult: boolean = isAdult(justine);
-```
-
-The first part (with the `type` keyword) is responsible for declaring our custom object type representing users. Later we utilize this newly created type to create function `isAdult` that accepts one argument of type `User` and returns `boolean`. After this, we create `justine`, our example data that can be used for calling the previously defined function. Finally, we create a new variable with information on whether `justine` is an adult.
-
-There are additional things about this example that you should know. Firstly, if we would not comply with declared types, TypeScript would alarm us that something is wrong and prevent misuse. Secondly, not everything must be typed explicitly - TypeScript is very smart and can deduce types for us. For example, variable `isJustineAnAdult` would be of type `boolean` even if we didn't type it explicitly or `justine` would be valid argument for our function even if we didn't declare this variable as of `User` type.
-
-Okay, so we have some TypeScript code. Now how do we run it?
-
-**First thing to do is to install TypeScript in our project:**
-
-```bash
-npm i -D typescript
-```
-
-Now we can compile it to JavaScript using `tsc` command in the terminal. Let's do it!
-
-**Assuming that our file is named `example.ts`, the command would look like:**
-
-```bash
-npx tsc example.ts
-```
-
-> [npx](https://www.npmjs.com/package/npx) here stands for Node Package Execute. This tool allows us to run TypeScript's compiler without installing it globally.
-
-`tsc` is the TypeScript compiler which will take our TypeScript code and compile it to JavaScript.
-This command will result in a new file named `example.js` that we can run using Node.js.
-Now when we know how to compile and run TypeScript code let's see TypeScript bug-preventing capabilities in action!
-
-**This is how we will modify our code:**
-
-```ts
-type User = {
-  name: string;
-  age: number;
-};
-
-function isAdult(user: User): boolean {
-  return user.age >= 18;
-}
-
-const justine: User = {
-  name: 'Justine',
-  age: 'Secret!',
-};
-
-const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
-```
-
-**And this is what TypeScript has to say about this:**
-
-```console
-example.ts:12:5 - error TS2322: Type 'string' is not assignable to type 'number'.
-
-12     age: 'Secret!',
-       ~~~
-
-  example.ts:3:5
-    3     age: number;
-          ~~~
-    The expected type comes from property 'age' which is declared here on type 'User'
-
-example.ts:15:7 - error TS2322: Type 'boolean' is not assignable to type 'string'.
-
-15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
-         ~~~~~~~~~~~~~~~~
-
-example.ts:15:51 - error TS2554: Expected 1 arguments, but got 2.
-
-15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
-                                                     ~~~~~~~~~~~~~~~~~~~~~~
-
-
-Found 3 errors in the same file, starting at: example.ts:12
-```
-
-As you can see TypeScript successfully prevents us from shipping code that could work unexpectedly. That's wonderful!
-
-## More about TypeScript
-
-TypeScript offers a whole lot of other great mechanisms like interfaces, classes, utility types and so on. Also, on bigger projects you can declare your TypeScript compiler configuration in a separate file and granularly adjust how it works, how strict it is and where it stores compiled files for example. You can read more about all this awesome stuff in [the official TypeScript docs](https://www.typescriptlang.org/docs).
-
-Some of the other benefits of TypeScript that are worth mentioning are that it can be adopted progressively, it helps making code more readable and understandable and it allows developers to use modern language features while shipping code for older Node.js versions.
-
-## Running TypeScript Code in Node.js
-
-Node.js cannot run TypeScript natively. You cannot call `node example.ts` from the command line directly. But there are three solutions to this problem:
-
-### Compiling TypeScript to JavaScript
-
-If you want to run TypeScript code in Node.js, you need to compile it to JavaScript first. You can do this using the TypeScript compiler `tsc` as shown earlier.
-
-Here's a small example:
-
-```bash
-npx tsc example.ts
-node example.js
-```
-
-### Running TypeScript Code with `ts-node`
-
-You can use [ts-node](https://typestrong.org/ts-node/) to run TypeScript code directly in Node.js without the need to compile it first. But it's not typechecking your code. So we recommend to type check your code first with `tsc` and then run it with `ts-node` before shipping it.
-
-To use `ts-node`, you need to install it first:
-
-```bash
-npm i -D ts-node
-```
-
-Then you can run your TypeScript code like this:
-
-```bash
-npx ts-node example.ts
-```
-
-### Running TypeScript Code with `tsx`
-
-You can use [tsx](https://tsx.is/) to run TypeScript code directly in Node.js without the need to compile it first. But it's not typechecking your code. So we recommend to type check your code first with `tsc` and then run it with `tsx` before shipping it.
-
-To use `tsx`, you need to install it first:
-
-```bash
-npm i -D tsx
-```
-
-Then you can run your TypeScript code like this:
-
-```bash
-npx tsx example.ts
-```
-
-If you want to use `tsx` via `node`, you can register `tsx` via `--import`:
-
-```bash
-node --import=tsx example.ts
-```
-
-## TypeScript in the Node.js world
-
-TypeScript is well-established in the Node.js world and used by many companies, open-source projects, tools and frameworks.
-Some of the notable examples of open-source projects using TypeScript are:
-
-- [NestJS](https://nestjs.com/) - robust and fully-featured framework that makes creating scalable and well-architected systems easy and pleasant
-- [TypeORM](https://typeorm.io/#/) - great ORM influenced by other well-known tools from other languages like Hibernate, Doctrine or Entity Framework
-- [Prisma](https://prisma.io/) - next-generation ORM featuring a declarative data model, generated migrations and fully type-safe database queries
-- [RxJS](https://rxjs.dev/) - widely used library for reactive programming
-- [AdonisJS](https://adonisjs.com) - A fully featured web framework with Node.js
-- [FoalTs](https://foalts.org/) - The Elegant Nodejs Framework
-
-And many, many more great projects... Maybe even your next one!
diff --git a/apps/site/pages/en/learn/typescript/introduction.md b/apps/site/pages/en/learn/typescript/introduction.md
new file mode 100644
index 0000000000000..4cd976f2fb581
--- /dev/null
+++ b/apps/site/pages/en/learn/typescript/introduction.md
@@ -0,0 +1,50 @@
+---
+title: Introduction to TypeScript
+layout: learn
+authors: sbielenica, ovflowd, vaishnav-mk, AugustinMauroy
+---
+
+# Introduction to TypeScript
+
+## What is TypeScript
+
+**[TypeScript](https://www.typescriptlang.org)** is an open-source language maintained and developed by Microsoft.
+
+Basically, TypeScript adds additional syntax to JavaScript to support a tighter integration with your editor. Catch errors early in your editor or in your CI/CD pipeline, and write more maintainable code.
+
+We can talk about other TypeScript benefits later, let's see some examples now!
+
+## First TypeScript code
+
+Take a look at this code snippet and then we can unpack it together:
+
+
+
+```ts
+type User = {
+  name: string;
+  age: number;
+};
+
+function isAdult(user: User): boolean {
+  return user.age >= 18;
+}
+
+const justine = {
+  name: 'Justine',
+  age: 23,
+} satisfies User;
+
+const isJustineAnAdult = isAdult(justine);
+```
+
+The first part (with the `type` keyword) is responsible for declaring our custom object type representing users. Later we utilize this newly created type to create function `isAdult` that accepts one argument of type `User` and returns `boolean`. After this, we create `justine`, our example data that can be used for calling the previously defined function. Finally, we create a new variable with information on whether `justine` is an adult.
+
+There are additional things about this example that you should know. Firstly, if we do not comply with the declared types, TypeScript will inform us that something is wrong and prevent misuse. Secondly, not everything must be typed explicitly—TypeScript infers types for us. For example, the variable `isJustineAnAdult` is of type `boolean` even if we didn't type it explicitly, and `justine` would be a valid argument for our function even though we didn't declare this variable as of `User` type.
+
+## How to run TypeScript code
+
+Okay, so we have some TypeScript code. Now how do we run it?
+There are few possible ways to run TypeScript code, we will cover all of them in the next articles.
diff --git a/apps/site/pages/en/learn/typescript/run-natively.md b/apps/site/pages/en/learn/typescript/run-natively.md
new file mode 100644
index 0000000000000..6a101ad176012
--- /dev/null
+++ b/apps/site/pages/en/learn/typescript/run-natively.md
@@ -0,0 +1,38 @@
+---
+title: Running TypeScript Natively
+layout: learn
+authors: AugustinMauroy
+---
+
+> **⚠️WARNING⚠️:** All content in this article uses Node.js experimental features. Please make sure you are using a version of Node.js that supports the features mentioned in this article. And remember that experimental features can change in future versions of Node.js.
+
+# Running TypeScript Natively
+
+In the previous articles, we learned how to run TypeScript code using transpilation and with a runner. In this article, we will learn how to run TypeScript code using Node.js itself.
+
+## Running TypeScript code with Node.js
+
+Since V22.6.0, Node.js has experimental support for some TypeScript syntax. You can write code that's valid TypeScript directly in Node.js without the need to transpile it first.
+
+So how do you run TypeScript code with Node.js?
+
+```bash
+node --experimental-strip-types example.ts
+```
+
+The `--experimental-strip-types` flag tells Node.js to strip the type annotations from the TypeScript code before running it.
+
+And that's it! You can now run TypeScript code directly in Node.js without the need to transpile it first, and use TypeScript to catch type-related errors.
+Future versions of Node.js will include support for TypeScript without the need for a command line flag.
+
+## Limitations
+
+At the time of writing, the experimental support for TypeScript in Node.js has some limitations. To allow TypeScript to run in node.js, our collaborators have chosen to only strip types from the code.
+
+You can get more information on the [API docs](https://nodejs.org/docs/latest/api/typescript.html#unsupported-typescript-features)
+
+## Important notes
+
+Thanks to all the contributors who have made this feature possible. We hope that this feature will be stable and available in the LTS version of Node.js soon.
+
+We can understand that this feature is experimental and has some limitations; if that doesn't suit your use-case, please use something else, or contribute a fix. Bug reports are also welcome, please keep in mind the project is run by volunteers, without warranty of any kind, so please be patient if you can't contribute the fix yourself.
diff --git a/apps/site/pages/en/learn/typescript/run.md b/apps/site/pages/en/learn/typescript/run.md
new file mode 100644
index 0000000000000..b3404b1c45566
--- /dev/null
+++ b/apps/site/pages/en/learn/typescript/run.md
@@ -0,0 +1,49 @@
+---
+title: Running TypeScript with a runner
+layout: learn
+authors: AugustinMauroy
+---
+
+# Running TypeScript with a runner
+
+In the previous article, we learned how to run TypeScript code using transpilation. In this article, we will learn how to run TypeScript code using a runner.
+
+## Running TypeScript code with `ts-node`
+
+[ts-node](https://typestrong.org/ts-node/) is a TypeScript execution environment for Node.js. It allows you to run TypeScript code directly in Node.js without the need to compile it first. Note, however, that it does not type check your code. So we recommend to type check your code first with `tsc` and then run it with `ts-node` before shipping it.
+
+To use `ts-node`, you need to install it first:
+
+```bash
+npm i -D ts-node
+```
+
+Then you can run your TypeScript code like this:
+
+```bash
+npx ts-node example.ts
+```
+
+## Running TypeScript code with `tsx`
+
+[tsx](https://tsx.is/) is another TypeScript execution environment for Node.js. It allows you to run TypeScript code directly in Node.js without the need to compile it first. Note, however, that it does not type check your code. So we recommend to type check your code first with `tsc` and then run it with `tsx` before shipping it.
+
+To use `tsx`, you need to install it first:
+
+```bash
+npm i -D tsx
+```
+
+Then you can run your TypeScript code like this:
+
+```bash
+npx tsx example.ts
+```
+
+### Registering `tsx` via `node`
+
+If you want to use `tsx` via `node`, you can register `tsx` via `--import`:
+
+```bash
+node --import=tsx example.ts
+```
diff --git a/apps/site/pages/en/learn/typescript/transpile.md b/apps/site/pages/en/learn/typescript/transpile.md
new file mode 100644
index 0000000000000..62c042d4e902f
--- /dev/null
+++ b/apps/site/pages/en/learn/typescript/transpile.md
@@ -0,0 +1,118 @@
+---
+title: Running TypeScript code using transpilation
+layout: learn
+authors: AugustinMauroy
+---
+
+# Running TypeScript code using transpilation
+
+Transpilation is the process of converting source code from one language to another. In the case of TypeScript, it's the process of converting TypeScript code to JavaScript code. This is necessary because browsers and Node.js can't run TypeScript code directly.
+
+## Compiling TypeScript to JavaScript
+
+The most common way to run TypeScript code is to compile it to JavaScript first. You can do this using the TypeScript compiler `tsc`.
+
+**Step 1:** Write your TypeScript code in a file, for example `example.ts`.
+
+
+
+```ts
+type User = {
+  name: string;
+  age: number;
+};
+
+function isAdult(user: User): boolean {
+  return user.age >= 18;
+}
+
+const justine = {
+  name: 'Justine',
+  age: 23,
+} satisfies User;
+
+const isJustineAnAdult = isAdult(justine);
+```
+
+**Step 2:** Install TypeScript locally using a package manager:
+
+In this example we're going to use npm, you can check our [our introduction to the npm package manager](/learn/getting-started/an-introduction-to-the-npm-package-manager) for more information.
+
+```bash displayName="Install TypeScript locally"
+npm i -D typescript # -D is a shorthand for --save-dev
+```
+
+**Step 3:** Compile your TypeScript code to JavaScript using the `tsc` command:
+
+```bash
+npx tsc example.ts
+```
+
+> **NOTE:** `npx` is a tool that allows you to run Node.js packages without installing them globally.
+
+`tsc` is the TypeScript compiler which will take our TypeScript code and compile it to JavaScript.
+This command will result in a new file named `example.js` that we can run using Node.js.
+Now when we know how to compile and run TypeScript code let's see TypeScript bug-preventing capabilities in action!
+
+**Step 4:** Run your JavaScript code using Node.js:
+
+```bash
+node example.js
+```
+
+You should see the output of your TypeScript code in the terminal
+
+## If there are type errors
+
+If you have type errors in your TypeScript code, the TypeScript compiler will catch them and prevent you from running the code. For example, if you change the `age` property of `justine` to a string, TypeScript will throw an error:
+
+We will modify our code like this, to voluntarily introduce a type error:
+
+```ts
+type User = {
+  name: string;
+  age: number;
+};
+
+function isAdult(user: User): boolean {
+  return user.age >= 18;
+}
+
+const justine: User = {
+  name: 'Justine',
+  age: 'Secret!',
+};
+
+const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
+```
+
+And this is what TypeScript has to say about this:
+
+```console
+example.ts:12:5 - error TS2322: Type 'string' is not assignable to type 'number'.
+
+12     age: 'Secret!',
+       ~~~
+
+  example.ts:3:5
+    3     age: number;
+          ~~~
+    The expected type comes from property 'age' which is declared here on type 'User'
+
+example.ts:15:7 - error TS2322: Type 'boolean' is not assignable to type 'string'.
+
+15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
+         ~~~~~~~~~~~~~~~~
+
+example.ts:15:51 - error TS2554: Expected 1 arguments, but got 2.
+
+15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
+                                                     ~~~~~~~~~~~~~~~~~~~~~~
+
+
+Found 3 errors in the same file, starting at: example.ts:12
+```
+
+As you can see, TypeScript is very helpful in catching bugs before they even happen. This is one of the reasons why TypeScript is so popular among developers.
diff --git a/apps/site/redirects.json b/apps/site/redirects.json
index 8b3b370b76ae9..32d1e794e898c 100644
--- a/apps/site/redirects.json
+++ b/apps/site/redirects.json
@@ -287,6 +287,10 @@
     {
       "source": "/:locale/download/current",
       "destination": "/:locale/download/package-manager/current"
+    },
+    {
+      "source": "/:locale/learn/getting-started/nodejs-with-typescript",
+      "destination": "/:locale/learn/typescript/introduction"
     }
   ],
   "internal": []
diff --git a/apps/site/site.json b/apps/site/site.json
index 338cc997df7da..8613581d70fae 100644
--- a/apps/site/site.json
+++ b/apps/site/site.json
@@ -37,12 +37,12 @@
   },
   "websiteBadges": {
     "index": {
-      "startDate": "2024-04-24T00:00:00.000Z",
-      "endDate": "2024-05-24T00:00:00.000Z",
+      "startDate": "2024-09-01T00:00:00.000Z",
+      "endDate": "2024-10-01T00:00:00.000Z",
       "kind": "default",
-      "title": "Survey",
-      "text": "Help us shape the next 10 years of Node.js",
-      "link": "https://linuxfoundation.surveymonkey.com/r/nodenext10survey24"
+      "title": "Discover",
+      "text": "TypeScript in Node.js",
+      "link": "https://nodejs.org/en/learn/typescript/introduction/"
     }
   }
 }
diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json
index 8b20d7964f6ef..096896b6f6057 100644
--- a/packages/i18n/locales/en.json
+++ b/packages/i18n/locales/en.json
@@ -35,13 +35,21 @@
             "anIntroductionToTheNpmPackageManager": "An introduction to the npm package manager",
             "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) and beyond",
             "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, the difference between development and production",
-            "nodejsWithTypescript": "Node.js with TypeScript",
             "nodejsWithWebassembly": "Node.js with WebAssembly",
             "debugging": "Debugging Node.js",
             "profiling": "Profiling Node.js Applications",
             "securityBestPractices": "Security Best Practices"
           }
         },
+        "typescript": {
+          "links": {
+            "typescript": "TypeScript",
+            "introduction": "Introduction to TypeScript",
+            "transpile": "Running TypeScript code using transpilation",
+            "run": "Running TypeScript with a runner",
+            "runNatively": "Running TypeScript Natively"
+          }
+        },
         "asynchronousWork": {
           "links": {
             "asynchronousWork": "Asynchronous Work",

From b26f16e516522b153f709595455a0db57b412876 Mon Sep 17 00:00:00 2001
From: Rafael Gonzaga 
Date: Tue, 17 Sep 2024 18:26:06 -0300
Subject: [PATCH 0026/1385] Blog: v22.9.0 release post (#7052)

Refs: https://github.com/nodejs/node/pull/54966
---
 apps/site/pages/en/blog/release/v22.9.0.md | 331 +++++++++++++++++++++
 1 file changed, 331 insertions(+)
 create mode 100644 apps/site/pages/en/blog/release/v22.9.0.md

diff --git a/apps/site/pages/en/blog/release/v22.9.0.md b/apps/site/pages/en/blog/release/v22.9.0.md
new file mode 100644
index 0000000000000..37ca226dacc59
--- /dev/null
+++ b/apps/site/pages/en/blog/release/v22.9.0.md
@@ -0,0 +1,331 @@
+---
+date: '2024-09-17T21:09:02.508Z'
+category: release
+title: Node v22.9.0 (Current)
+layout: blog-post
+author: Rafael Gonzaga
+---
+
+## 2024-09-17, Version 22.9.0 (Current), @RafaelGSS
+
+### New API to retrieve execution Stack Trace
+
+A new API `getCallSite` has been introduced to the `util` module. This API allows users
+to retrieve the stacktrace of the current execution. Example:
+
+```js
+const util = require('node:util');
+
+function exampleFunction() {
+  const callSites = util.getCallSite();
+
+  console.log('Call Sites:');
+  callSites.forEach((callSite, index) => {
+    console.log(`CallSite ${index + 1}:`);
+    console.log(`Function Name: ${callSite.functionName}`);
+    console.log(`Script Name: ${callSite.scriptName}`);
+    console.log(`Line Number: ${callSite.lineNumber}`);
+    console.log(`Column Number: ${callSite.column}`);
+  });
+  // CallSite 1:
+  // Function Name: exampleFunction
+  // Script Name: /home/example.js
+  // Line Number: 5
+  // Column Number: 26
+
+  // CallSite 2:
+  // Function Name: anotherFunction
+  // Script Name: /home/example.js
+  // Line Number: 22
+  // Column Number: 3
+
+  // ...
+}
+
+// A function to simulate another stack layer
+function anotherFunction() {
+  exampleFunction();
+}
+
+anotherFunction();
+```
+
+Thanks to Rafael Gonzaga for making this work on [#54380](https://github.com/nodejs/node/pull/54380).
+
+### Disable V8 Maglev
+
+We have seen several crashes/unexpected JS behaviors with maglev on v22
+(which ships V8 v12.4). The bugs lie in the codegen so it would be difficult for
+users to work around them or even figure out where the bugs are coming from.
+Some bugs are fixed in the upstream while some others probably remain.
+
+As v22 will get stuck with V8 v12.4 as LTS, it will be increasingly difficult to
+backport patches for them even if the bugs are fixed. So disable it by default
+on v22 to reduce the churn and troubles for users.
+
+Thanks to Joyee Cheung for making this work on [#54384](https://github.com/nodejs/node/pull/54384)
+
+### Exposes X509_V_FLAG_PARTIAL_CHAIN to tls.createSecureContext
+
+This releases introduces a new option to the API `tls.createSecureContext`. For
+now on users can use `tls.createSecureContext({ allowPartialTrustChain: true })`
+to treat intermediate (non-self-signed) certificates in the trust CA certificate
+list as trusted.
+
+Thanks to Anna Henningsen for making this work on [#54790](https://github.com/nodejs/node/pull/54790)
+
+### Other Notable Changes
+
+- \[[`5c9599af5a`](https://github.com/nodejs/node/commit/5c9599af5a)] - **src**: create handle scope in FastInternalModuleStat (Joyee Cheung) [#54384](https://github.com/nodejs/node/pull/54384)
+- \[[`e2307d87e8`](https://github.com/nodejs/node/commit/e2307d87e8)] - **(SEMVER-MINOR)** **stream**: relocate the status checking code in the onwritecomplete (YoonSoo_Shin) [#54032](https://github.com/nodejs/node/pull/54032)
+
+### Deprecations
+
+- \[[`8433032948`](https://github.com/nodejs/node/commit/8433032948)] - **repl**: doc-deprecate instantiating `node:repl` classes without `new` (Aviv Keller) [#54842](https://github.com/nodejs/node/pull/54842)
+- \[[`8c4c85cf31`](https://github.com/nodejs/node/commit/8c4c85cf31)] - **zlib**: deprecate instantiating classes without new (Yagiz Nizipli) [#54708](https://github.com/nodejs/node/pull/54708)
+
+### Commits
+
+- \[[`027b0ffe84`](https://github.com/nodejs/node/commit/027b0ffe84)] - **async_hooks**: add an InactiveAsyncContextFrame class (Bryan English) [#54510](https://github.com/nodejs/node/pull/54510)
+- \[[`022767028e`](https://github.com/nodejs/node/commit/022767028e)] - **benchmark**: --no-warnings to avoid DEP/ExpWarn log (Rafael Gonzaga) [#54928](https://github.com/nodejs/node/pull/54928)
+- \[[`af1988c147`](https://github.com/nodejs/node/commit/af1988c147)] - **benchmark**: add buffer.isAscii benchmark (RafaelGSS) [#54740](https://github.com/nodejs/node/pull/54740)
+- \[[`40c6849964`](https://github.com/nodejs/node/commit/40c6849964)] - **benchmark**: add buffer.isUtf8 bench (RafaelGSS) [#54740](https://github.com/nodejs/node/pull/54740)
+- \[[`237d7dfbde`](https://github.com/nodejs/node/commit/237d7dfbde)] - **benchmark**: add access async version to bench (Rafael Gonzaga) [#54747](https://github.com/nodejs/node/pull/54747)
+- \[[`ebe91db827`](https://github.com/nodejs/node/commit/ebe91db827)] - **benchmark**: enhance dc publish benchmark (Rafael Gonzaga) [#54745](https://github.com/nodejs/node/pull/54745)
+- \[[`060164485b`](https://github.com/nodejs/node/commit/060164485b)] - **benchmark**: add match and doesNotMatch bench (RafaelGSS) [#54734](https://github.com/nodejs/node/pull/54734)
+- \[[`2844180c7e`](https://github.com/nodejs/node/commit/2844180c7e)] - **benchmark**: add rejects and doesNotReject bench (RafaelGSS) [#54734](https://github.com/nodejs/node/pull/54734)
+- \[[`af7689ed02`](https://github.com/nodejs/node/commit/af7689ed02)] - **benchmark**: add throws and doesNotThrow bench (RafaelGSS) [#54734](https://github.com/nodejs/node/pull/54734)
+- \[[`456a1fe222`](https://github.com/nodejs/node/commit/456a1fe222)] - **benchmark**: add strictEqual and notStrictEqual bench (RafaelGSS) [#54734](https://github.com/nodejs/node/pull/54734)
+- \[[`721c63c858`](https://github.com/nodejs/node/commit/721c63c858)] - **benchmark**: adds groups to better separate benchmarks (Giovanni Bucci) [#54393](https://github.com/nodejs/node/pull/54393)
+- \[[`68e45b406e`](https://github.com/nodejs/node/commit/68e45b406e)] - **benchmark,doc**: add CPU scaling governor to perf (Rafael Gonzaga) [#54723](https://github.com/nodejs/node/pull/54723)
+- \[[`d19efd7a50`](https://github.com/nodejs/node/commit/d19efd7a50)] - **benchmark,doc**: mention bar.R to the list of scripts (Rafael Gonzaga) [#54722](https://github.com/nodejs/node/pull/54722)
+- \[[`1fb67afa2f`](https://github.com/nodejs/node/commit/1fb67afa2f)] - **buffer**: fix out of range for toString (Jason Zhang) [#54553](https://github.com/nodejs/node/pull/54553)
+- \[[`85b5ed5d41`](https://github.com/nodejs/node/commit/85b5ed5d41)] - **buffer**: re-enable Fast API for Buffer.write (Robert Nagy) [#54526](https://github.com/nodejs/node/pull/54526)
+- \[[`9a075279ec`](https://github.com/nodejs/node/commit/9a075279ec)] - **build**: upgrade clang-format to v18 (Aviv Keller) [#53957](https://github.com/nodejs/node/pull/53957)
+- \[[`69ec9d8d2b`](https://github.com/nodejs/node/commit/69ec9d8d2b)] - **build**: fix conflicting V8 object print flags (Daeyeon Jeong) [#54785](https://github.com/nodejs/node/pull/54785)
+- \[[`948bba396c`](https://github.com/nodejs/node/commit/948bba396c)] - **build**: do not build with code cache for core coverage collection (Joyee Cheung) [#54633](https://github.com/nodejs/node/pull/54633)
+- \[[`6200cf4fb6`](https://github.com/nodejs/node/commit/6200cf4fb6)] - **build**: don't store eslint locally (Aviv Keller) [#54231](https://github.com/nodejs/node/pull/54231)
+- \[[`3b5ed97fe9`](https://github.com/nodejs/node/commit/3b5ed97fe9)] - **build**: turn off `-Wrestrict` (Richard Lau) [#54737](https://github.com/nodejs/node/pull/54737)
+- \[[`e38e305a35`](https://github.com/nodejs/node/commit/e38e305a35)] - **build,win**: enable clang-cl compilation (Stefan Stojanovic) [#54655](https://github.com/nodejs/node/pull/54655)
+- \[[`5bba0781b0`](https://github.com/nodejs/node/commit/5bba0781b0)] - **crypto**: reject dh,x25519,x448 in {Sign,Verify}Final (Huáng Jùnliàng) [#53774](https://github.com/nodejs/node/pull/53774)
+- \[[`3981853c00`](https://github.com/nodejs/node/commit/3981853c00)] - **crypto**: return a clearer error when loading an unsupported pkcs12 (Tim Perry) [#54485](https://github.com/nodejs/node/pull/54485)
+- \[[`02ac5376b9`](https://github.com/nodejs/node/commit/02ac5376b9)] - **crypto**: remove unused `kHashTypes` internal (Antoine du Hamel) [#54627](https://github.com/nodejs/node/pull/54627)
+- \[[`323d9da3c9`](https://github.com/nodejs/node/commit/323d9da3c9)] - **deps**: update cjs-module-lexer to 1.4.1 (Node.js GitHub Bot) [#54846](https://github.com/nodejs/node/pull/54846)
+- \[[`bf4bf7cc6b`](https://github.com/nodejs/node/commit/bf4bf7cc6b)] - **deps**: update simdutf to 5.5.0 (Node.js GitHub Bot) [#54434](https://github.com/nodejs/node/pull/54434)
+- \[[`61047dd130`](https://github.com/nodejs/node/commit/61047dd130)] - **deps**: upgrade npm to 10.8.3 (npm team) [#54619](https://github.com/nodejs/node/pull/54619)
+- \[[`2351da5034`](https://github.com/nodejs/node/commit/2351da5034)] - **deps**: update cjs-module-lexer to 1.4.0 (Node.js GitHub Bot) [#54713](https://github.com/nodejs/node/pull/54713)
+- \[[`0659516823`](https://github.com/nodejs/node/commit/0659516823)] - **deps**: allow amaro to be externalizable (Michael Dawson) [#54646](https://github.com/nodejs/node/pull/54646)
+- \[[`6a32645dbc`](https://github.com/nodejs/node/commit/6a32645dbc)] - **deps**: fix sign-compare warning in ncrypto (Cheng) [#54624](https://github.com/nodejs/node/pull/54624)
+- \[[`8f62f19197`](https://github.com/nodejs/node/commit/8f62f19197)] - **doc**: fix broken Android building link (Niklas Wenzel) [#54922](https://github.com/nodejs/node/pull/54922)
+- \[[`440c256d76`](https://github.com/nodejs/node/commit/440c256d76)] - **doc**: add support link for aduh95 (Antoine du Hamel) [#54866](https://github.com/nodejs/node/pull/54866)
+- \[[`56aca2a1ca`](https://github.com/nodejs/node/commit/56aca2a1ca)] - **doc**: run license-builder (github-actions\[bot]) [#54854](https://github.com/nodejs/node/pull/54854)
+- \[[`8931f569c6`](https://github.com/nodejs/node/commit/8931f569c6)] - **doc**: experimental flag for global accessible APIs (Chengzhong Wu) [#54330](https://github.com/nodejs/node/pull/54330)
+- \[[`6f8a6e9eb6`](https://github.com/nodejs/node/commit/6f8a6e9eb6)] - **doc**: add `ERR_INVALID_ADDRESS` to `errors.md` (Aviv Keller) [#54661](https://github.com/nodejs/node/pull/54661)
+- \[[`c1b92e05e7`](https://github.com/nodejs/node/commit/c1b92e05e7)] - **doc**: add support link for mcollina (Matteo Collina) [#54786](https://github.com/nodejs/node/pull/54786)
+- \[[`1def18122a`](https://github.com/nodejs/node/commit/1def18122a)] - **doc**: mark `--conditions` CLI flag as stable (Guy Bedford) [#54209](https://github.com/nodejs/node/pull/54209)
+- \[[`b8ae36b6c3`](https://github.com/nodejs/node/commit/b8ae36b6c3)] - **doc**: fix typo in recognizing-contributors (Tobias Nießen) [#54822](https://github.com/nodejs/node/pull/54822)
+- \[[`2c2ae80924`](https://github.com/nodejs/node/commit/2c2ae80924)] - **doc**: clarify `--max-old-space-size` and `--max-semi-space-size` units (Alexandre ABRIOUX) [#54477](https://github.com/nodejs/node/pull/54477)
+- \[[`5bd4be5ce7`](https://github.com/nodejs/node/commit/5bd4be5ce7)] - **doc**: replace --allow-fs-read by --allow-fs-write in related section (M1CK431) [#54427](https://github.com/nodejs/node/pull/54427)
+- \[[`c0f3e4603f`](https://github.com/nodejs/node/commit/c0f3e4603f)] - **doc**: add support link for marco-ippolito (Marco Ippolito) [#54789](https://github.com/nodejs/node/pull/54789)
+- \[[`dc69eb8276`](https://github.com/nodejs/node/commit/dc69eb8276)] - **doc**: fix typo in module.md (Tobias Nießen) [#54794](https://github.com/nodejs/node/pull/54794)
+- \[[`de225f5db9`](https://github.com/nodejs/node/commit/de225f5db9)] - **doc**: specify that preloaded modules affect subprocesses (Aviv Keller) [#52939](https://github.com/nodejs/node/pull/52939)
+- \[[`62b0007cbe`](https://github.com/nodejs/node/commit/62b0007cbe)] - **doc**: clarify expandedSQL behavior (Tobias Nießen) [#54685](https://github.com/nodejs/node/pull/54685)
+- \[[`1c7bdf95db`](https://github.com/nodejs/node/commit/1c7bdf95db)] - **doc**: render type references in SQLite docs (Tobias Nießen) [#54684](https://github.com/nodejs/node/pull/54684)
+- \[[`5555095531`](https://github.com/nodejs/node/commit/5555095531)] - **doc**: fix typo (Michael Dawson) [#54640](https://github.com/nodejs/node/pull/54640)
+- \[[`754baa4efa`](https://github.com/nodejs/node/commit/754baa4efa)] - **doc**: fix webcrypto.md AES-GCM backticks (Filip Skokan) [#54621](https://github.com/nodejs/node/pull/54621)
+- \[[`5bfb4bcf45`](https://github.com/nodejs/node/commit/5bfb4bcf45)] - **doc**: add documentation about os.tmpdir() overrides (Joyee Cheung) [#54613](https://github.com/nodejs/node/pull/54613)
+- \[[`22d873208e`](https://github.com/nodejs/node/commit/22d873208e)] - **doc, build**: fixup build docs (Aviv Keller) [#54899](https://github.com/nodejs/node/pull/54899)
+- \[[`5e081a12b6`](https://github.com/nodejs/node/commit/5e081a12b6)] - **doc, child_process**: add esm snippets (Aviv Keller) [#53616](https://github.com/nodejs/node/pull/53616)
+- \[[`2b68c30a26`](https://github.com/nodejs/node/commit/2b68c30a26)] - **doc, meta**: fix broken link in `onboarding.md` (Aviv Keller) [#54886](https://github.com/nodejs/node/pull/54886)
+- \[[`a624002fff`](https://github.com/nodejs/node/commit/a624002fff)] - **esm**: throw `ERR_REQUIRE_ESM` instead of `ERR_INTERNAL_ASSERTION` (Antoine du Hamel) [#54868](https://github.com/nodejs/node/pull/54868)
+- \[[`31d4ef91ee`](https://github.com/nodejs/node/commit/31d4ef91ee)] - **esm**: fix support for `URL` instances in `import.meta.resolve` (Antoine du Hamel) [#54690](https://github.com/nodejs/node/pull/54690)
+- \[[`40ba89e452`](https://github.com/nodejs/node/commit/40ba89e452)] - **esm**: use Undici/`fetch` `data:` URL parser (Matthew Aitken) [#54748](https://github.com/nodejs/node/pull/54748)
+- \[[`93116dd7b1`](https://github.com/nodejs/node/commit/93116dd7b1)] - **fs**: translate error code properly in cpSync (Jason Zhang) [#54906](https://github.com/nodejs/node/pull/54906)
+- \[[`375cbb592e`](https://github.com/nodejs/node/commit/375cbb592e)] - **fs**: refactor rimraf to avoid using primordials (Yagiz Nizipli) [#54834](https://github.com/nodejs/node/pull/54834)
+- \[[`ee89c3149e`](https://github.com/nodejs/node/commit/ee89c3149e)] - **fs**: respect dereference when copy symlink directory (Jason Zhang) [#54732](https://github.com/nodejs/node/pull/54732)
+- \[[`7123bf7ca4`](https://github.com/nodejs/node/commit/7123bf7ca4)] - **http**: reduce likelihood of race conditions on keep-alive timeout (jazelly) [#54863](https://github.com/nodejs/node/pull/54863)
+- \[[`04ef3e4afd`](https://github.com/nodejs/node/commit/04ef3e4afd)] - **https**: only use default ALPNProtocols when appropriate (Brian White) [#54411](https://github.com/nodejs/node/pull/54411)
+- \[[`dc5593ba1e`](https://github.com/nodejs/node/commit/dc5593ba1e)] - **lib**: remove unnecessary async (jakecastelli) [#54829](https://github.com/nodejs/node/pull/54829)
+- \[[`2b9a6373da`](https://github.com/nodejs/node/commit/2b9a6373da)] - **lib**: make WeakRef safe in abort_controller (jazelly) [#54791](https://github.com/nodejs/node/pull/54791)
+- \[[`5f02e1b850`](https://github.com/nodejs/node/commit/5f02e1b850)] - **lib**: move `Symbol[Async]Dispose` polyfills to `internal/util` (Antoine du Hamel) [#54853](https://github.com/nodejs/node/pull/54853)
+- \[[`fc78ced7e4`](https://github.com/nodejs/node/commit/fc78ced7e4)] - **lib**: convert signals to array before validation (Jason Zhang) [#54714](https://github.com/nodejs/node/pull/54714)
+- \[[`21fef34a53`](https://github.com/nodejs/node/commit/21fef34a53)] - **lib**: add note about removing `node:sys` module (Rafael Gonzaga) [#54743](https://github.com/nodejs/node/pull/54743)
+- \[[`a37d805489`](https://github.com/nodejs/node/commit/a37d805489)] - **(SEMVER-MINOR)** **lib**: add util.getCallSite() API (Rafael Gonzaga) [#54380](https://github.com/nodejs/node/pull/54380)
+- \[[`2a1f56cce6`](https://github.com/nodejs/node/commit/2a1f56cce6)] - **lib**: ensure no holey array in fixed_queue (Jason Zhang) [#54537](https://github.com/nodejs/node/pull/54537)
+- \[[`540b1dbaf6`](https://github.com/nodejs/node/commit/540b1dbaf6)] - **lib**: refactor SubtleCrypto experimental warnings (Filip Skokan) [#54620](https://github.com/nodejs/node/pull/54620)
+- \[[`b59c8b88c7`](https://github.com/nodejs/node/commit/b59c8b88c7)] - **lib,src**: use built-in array buffer detach, transfer (Yagiz Nizipli) [#54837](https://github.com/nodejs/node/pull/54837)
+- \[[`c1cc046de9`](https://github.com/nodejs/node/commit/c1cc046de9)] - **meta**: bump peter-evans/create-pull-request from 6.1.0 to 7.0.1 (dependabot\[bot]) [#54820](https://github.com/nodejs/node/pull/54820)
+- \[[`82c08ef483`](https://github.com/nodejs/node/commit/82c08ef483)] - **meta**: add `Windows ARM64` to flaky-tests list (Aviv Keller) [#54693](https://github.com/nodejs/node/pull/54693)
+- \[[`df30e8efa1`](https://github.com/nodejs/node/commit/df30e8efa1)] - **meta**: ping @nodejs/performance on bench changes (Rafael Gonzaga) [#54752](https://github.com/nodejs/node/pull/54752)
+- \[[`bdd9fbb905`](https://github.com/nodejs/node/commit/bdd9fbb905)] - **meta**: bump actions/setup-python from 5.1.1 to 5.2.0 (Rich Trott) [#54691](https://github.com/nodejs/node/pull/54691)
+- \[[`19574a8403`](https://github.com/nodejs/node/commit/19574a8403)] - **meta**: update sccache to v0.8.1 (Aviv Keller) [#54720](https://github.com/nodejs/node/pull/54720)
+- \[[`9ebcfb2b28`](https://github.com/nodejs/node/commit/9ebcfb2b28)] - **meta**: bump step-security/harden-runner from 2.9.0 to 2.9.1 (dependabot\[bot]) [#54704](https://github.com/nodejs/node/pull/54704)
+- \[[`ea58feb959`](https://github.com/nodejs/node/commit/ea58feb959)] - **meta**: bump actions/upload-artifact from 4.3.4 to 4.4.0 (dependabot\[bot]) [#54703](https://github.com/nodejs/node/pull/54703)
+- \[[`c6bd9e443e`](https://github.com/nodejs/node/commit/c6bd9e443e)] - **meta**: bump github/codeql-action from 3.25.15 to 3.26.6 (dependabot\[bot]) [#54702](https://github.com/nodejs/node/pull/54702)
+- \[[`79b358af2e`](https://github.com/nodejs/node/commit/79b358af2e)] - **meta**: fix links in `SECURITY.md` (Aviv Keller) [#54696](https://github.com/nodejs/node/pull/54696)
+- \[[`6c8a20d650`](https://github.com/nodejs/node/commit/6c8a20d650)] - **meta**: fix `contributing` codeowners (Aviv Keller) [#54641](https://github.com/nodejs/node/pull/54641)
+- \[[`b7284ed099`](https://github.com/nodejs/node/commit/b7284ed099)] - **module**: do not warn for typeless package.json when there isn't one (Joyee Cheung) [#54045](https://github.com/nodejs/node/pull/54045)
+- \[[`ddd24a6e63`](https://github.com/nodejs/node/commit/ddd24a6e63)] - **node-api**: add external buffer creation benchmark (Chengzhong Wu) [#54877](https://github.com/nodejs/node/pull/54877)
+- \[[`4a7576efae`](https://github.com/nodejs/node/commit/4a7576efae)] - **node-api**: add support for UTF-8 and Latin-1 property keys (Mert Can Altin) [#52984](https://github.com/nodejs/node/pull/52984)
+- \[[`461e523498`](https://github.com/nodejs/node/commit/461e523498)] - **os**: improve `tmpdir` performance (Yagiz Nizipli) [#54709](https://github.com/nodejs/node/pull/54709)
+- \[[`94fb7ab2e7`](https://github.com/nodejs/node/commit/94fb7ab2e7)] - **path**: remove `StringPrototypeCharCodeAt` from `posix.extname` (Aviv Keller) [#54546](https://github.com/nodejs/node/pull/54546)
+- \[[`67b1d4cb45`](https://github.com/nodejs/node/commit/67b1d4cb45)] - **repl**: avoid interpreting 'npm' as a command when errors are recoverable (Shima Ryuhei) [#54848](https://github.com/nodejs/node/pull/54848)
+- \[[`8433032948`](https://github.com/nodejs/node/commit/8433032948)] - **repl**: doc-deprecate instantiating `node:repl` classes without `new` (Aviv Keller) [#54842](https://github.com/nodejs/node/pull/54842)
+- \[[`7766349dd0`](https://github.com/nodejs/node/commit/7766349dd0)] - **sqlite**: fix segfault in expandedSQL (Tobias Nießen) [#54687](https://github.com/nodejs/node/pull/54687)
+- \[[`4c1b98ba2b`](https://github.com/nodejs/node/commit/4c1b98ba2b)] - **sqlite**: remove unnecessary auto assignment (Tobias Nießen) [#54686](https://github.com/nodejs/node/pull/54686)
+- \[[`77d162adb6`](https://github.com/nodejs/node/commit/77d162adb6)] - **src**: add `--env-file-if-exists` flag (Bosco Domingo) [#53060](https://github.com/nodejs/node/pull/53060)
+- \[[`424bdc03b4`](https://github.com/nodejs/node/commit/424bdc03b4)] - **src**: add Cleanable class to Environment (Gabriel Schulhof) [#54880](https://github.com/nodejs/node/pull/54880)
+- \[[`fbd08e3a9f`](https://github.com/nodejs/node/commit/fbd08e3a9f)] - **src**: switch crypto APIs to use Maybe\ (James M Snell) [#54775](https://github.com/nodejs/node/pull/54775)
+- \[[`5e72bd3545`](https://github.com/nodejs/node/commit/5e72bd3545)] - **src**: eliminate ManagedEVPPkey (James M Snell) [#54751](https://github.com/nodejs/node/pull/54751)
+- \[[`97cbcfbb43`](https://github.com/nodejs/node/commit/97cbcfbb43)] - **src**: fix unhandled error in structuredClone (Daeyeon Jeong) [#54764](https://github.com/nodejs/node/pull/54764)
+- \[[`b89cd8d19a`](https://github.com/nodejs/node/commit/b89cd8d19a)] - **src**: move hkdf, scrypto, pbkdf2 impl to ncrypto (James M Snell) [#54651](https://github.com/nodejs/node/pull/54651)
+- \[[`5c9599af5a`](https://github.com/nodejs/node/commit/5c9599af5a)] - **src**: create handle scope in FastInternalModuleStat (Joyee Cheung) [#54384](https://github.com/nodejs/node/pull/54384)
+- \[[`e2307d87e8`](https://github.com/nodejs/node/commit/e2307d87e8)] - **(SEMVER-MINOR)** **stream**: relocate the status checking code in the onwritecomplete (YoonSoo_Shin) [#54032](https://github.com/nodejs/node/pull/54032)
+- \[[`ff54cabef6`](https://github.com/nodejs/node/commit/ff54cabef6)] - **test**: adjust test-tls-junk-server for OpenSSL32 (Michael Dawson) [#54926](https://github.com/nodejs/node/pull/54926)
+- \[[`23fb03beed`](https://github.com/nodejs/node/commit/23fb03beed)] - **test**: remove duplicate skip AIX (Wuli) [#54917](https://github.com/nodejs/node/pull/54917)
+- \[[`2b5e70816a`](https://github.com/nodejs/node/commit/2b5e70816a)] - **test**: adjust tls test for OpenSSL32 (Michael Dawson) [#54909](https://github.com/nodejs/node/pull/54909)
+- \[[`cefa692dcb`](https://github.com/nodejs/node/commit/cefa692dcb)] - **test**: fix test-http2-socket-close.js (Hüseyin Açacak) [#54900](https://github.com/nodejs/node/pull/54900)
+- \[[`097f6d3e7e`](https://github.com/nodejs/node/commit/097f6d3e7e)] - **test**: improve test-internal-fs-syncwritestream (Sunghoon) [#54671](https://github.com/nodejs/node/pull/54671)
+- \[[`ed736a689f`](https://github.com/nodejs/node/commit/ed736a689f)] - **test**: deflake test-dns (Luigi Pinca) [#54902](https://github.com/nodejs/node/pull/54902)
+- \[[`bb4849f595`](https://github.com/nodejs/node/commit/bb4849f595)] - **test**: fix test test-tls-dhe for OpenSSL32 (Michael Dawson) [#54903](https://github.com/nodejs/node/pull/54903)
+- \[[`d9264bceca`](https://github.com/nodejs/node/commit/d9264bceca)] - **test**: use correct file naming syntax for `util-parse-env` (Aviv Keller) [#53705](https://github.com/nodejs/node/pull/53705)
+- \[[`115a7ca42a`](https://github.com/nodejs/node/commit/115a7ca42a)] - **test**: add missing await (Luigi Pinca) [#54828](https://github.com/nodejs/node/pull/54828)
+- \[[`7a1d633d77`](https://github.com/nodejs/node/commit/7a1d633d77)] - **test**: move more url tests to `node:test` (Yagiz Nizipli) [#54636](https://github.com/nodejs/node/pull/54636)
+- \[[`ee385d62b9`](https://github.com/nodejs/node/commit/ee385d62b9)] - **test**: strip color chars in `test-runner-run` (Giovanni Bucci) [#54552](https://github.com/nodejs/node/pull/54552)
+- \[[`2efec6221c`](https://github.com/nodejs/node/commit/2efec6221c)] - **test**: deflake test-http2-misbehaving-multiplex (Luigi Pinca) [#54872](https://github.com/nodejs/node/pull/54872)
+- \[[`b198a91404`](https://github.com/nodejs/node/commit/b198a91404)] - **test**: remove dead code in test-http2-misbehaving-multiplex (Luigi Pinca) [#54860](https://github.com/nodejs/node/pull/54860)
+- \[[`194cb83f39`](https://github.com/nodejs/node/commit/194cb83f39)] - **test**: reduce test-esm-loader-hooks-inspect-wait flakiness (Luigi Pinca) [#54827](https://github.com/nodejs/node/pull/54827)
+- \[[`4b53558e8b`](https://github.com/nodejs/node/commit/4b53558e8b)] - **test**: reduce the allocation size in test-worker-arraybuffer-zerofill (James M Snell) [#54839](https://github.com/nodejs/node/pull/54839)
+- \[[`c968d65d6d`](https://github.com/nodejs/node/commit/c968d65d6d)] - **test**: fix test-tls-client-mindhsize for OpenSSL32 (Michael Dawson) [#54739](https://github.com/nodejs/node/pull/54739)
+- \[[`b998bb0933`](https://github.com/nodejs/node/commit/b998bb0933)] - **test**: remove need to make fs call for zlib test (Yagiz Nizipli) [#54814](https://github.com/nodejs/node/pull/54814)
+- \[[`f084ea2e01`](https://github.com/nodejs/node/commit/f084ea2e01)] - **test**: use platform timeout (jakecastelli) [#54591](https://github.com/nodejs/node/pull/54591)
+- \[[`b10e434cf3`](https://github.com/nodejs/node/commit/b10e434cf3)] - **test**: add platform timeout support for riscv64 (jakecastelli) [#54591](https://github.com/nodejs/node/pull/54591)
+- \[[`b875f2d7de`](https://github.com/nodejs/node/commit/b875f2d7de)] - **test**: reduce stack size for test-error-serdes (James M Snell) [#54840](https://github.com/nodejs/node/pull/54840)
+- \[[`d1a411480a`](https://github.com/nodejs/node/commit/d1a411480a)] - **test**: reduce fs calls in test-fs-existssync-false (Yagiz Nizipli) [#54815](https://github.com/nodejs/node/pull/54815)
+- \[[`b96ee30a09`](https://github.com/nodejs/node/commit/b96ee30a09)] - **test**: use `node:test` in `test-cli-syntax.bad` (Aviv Keller) [#54513](https://github.com/nodejs/node/pull/54513)
+- \[[`5278b8b7a1`](https://github.com/nodejs/node/commit/5278b8b7a1)] - **test**: move test-http-server-request-timeouts-mixed (James M Snell) [#54841](https://github.com/nodejs/node/pull/54841)
+- \[[`8345a60d3a`](https://github.com/nodejs/node/commit/8345a60d3a)] - **test**: fix Windows async-context-frame memory failure (Stephen Belanger) [#54823](https://github.com/nodejs/node/pull/54823)
+- \[[`cad404e1a1`](https://github.com/nodejs/node/commit/cad404e1a1)] - **test**: fix volatile for CauseSegfault with clang (Ivan Trubach) [#54325](https://github.com/nodejs/node/pull/54325)
+- \[[`41682c7286`](https://github.com/nodejs/node/commit/41682c7286)] - **test**: set `test-http2-socket-close` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`1e1ac48711`](https://github.com/nodejs/node/commit/1e1ac48711)] - **test**: set `test-worker-arraybuffer-zerofill` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`56238debff`](https://github.com/nodejs/node/commit/56238debff)] - **test**: set `test-runner-run-watch` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`8291de1540`](https://github.com/nodejs/node/commit/8291de1540)] - **test**: set `test-http-server-request-timeouts-mixed` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`32d340e6b3`](https://github.com/nodejs/node/commit/32d340e6b3)] - **test**: set `test-single-executable-application-empty` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`6a2da4c4ca`](https://github.com/nodejs/node/commit/6a2da4c4ca)] - **test**: set `test-macos-app-sandbox` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`2f408847a0`](https://github.com/nodejs/node/commit/2f408847a0)] - **test**: set `test-fs-utimes` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`e3b7c40ffc`](https://github.com/nodejs/node/commit/e3b7c40ffc)] - **test**: set `test-runner-run-watch` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`d2ede46946`](https://github.com/nodejs/node/commit/d2ede46946)] - **test**: set `test-sqlite-statement-sync` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`b9f3385808`](https://github.com/nodejs/node/commit/b9f3385808)] - **test**: set `test-writewrap` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`d55fec8f40`](https://github.com/nodejs/node/commit/d55fec8f40)] - **test**: set `test-async-context-frame` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`3dfb525f3e`](https://github.com/nodejs/node/commit/3dfb525f3e)] - **test**: set `test-esm-loader-hooks-inspect-wait` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`b0458a88b4`](https://github.com/nodejs/node/commit/b0458a88b4)] - **test**: set `test-http2-large-file` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`5f6f8757e5`](https://github.com/nodejs/node/commit/5f6f8757e5)] - **test**: set `test-runner-watch-mode-complex` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`4231af336d`](https://github.com/nodejs/node/commit/4231af336d)] - **test**: set `test-performance-function` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`45ef2a868e`](https://github.com/nodejs/node/commit/45ef2a868e)] - **test**: set `test-debugger-heap-profiler` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802)
+- \[[`b5137f6405`](https://github.com/nodejs/node/commit/b5137f6405)] - **test**: fix `test-process-load-env-file` when path contains `'` (Antoine du Hamel) [#54511](https://github.com/nodejs/node/pull/54511)
+- \[[`960116905a`](https://github.com/nodejs/node/commit/960116905a)] - **test**: refactor fs-watch tests due to macOS issue (Santiago Gimeno) [#54498](https://github.com/nodejs/node/pull/54498)
+- \[[`f074d74bf3`](https://github.com/nodejs/node/commit/f074d74bf3)] - **test**: refactor `test-esm-type-field-errors` (Giovanni Bucci) [#54368](https://github.com/nodejs/node/pull/54368)
+- \[[`67e30deced`](https://github.com/nodejs/node/commit/67e30deced)] - **test**: move more zlib tests to node:test (Yagiz Nizipli) [#54609](https://github.com/nodejs/node/pull/54609)
+- \[[`fdb65111a3`](https://github.com/nodejs/node/commit/fdb65111a3)] - **test**: improve output of child process utilities (Joyee Cheung) [#54622](https://github.com/nodejs/node/pull/54622)
+- \[[`55a12a4190`](https://github.com/nodejs/node/commit/55a12a4190)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#54925](https://github.com/nodejs/node/pull/54925)
+- \[[`de0f445a7f`](https://github.com/nodejs/node/commit/de0f445a7f)] - **test_runner**: reimplement `assert.ok` to allow stack parsing (Aviv Keller) [#54776](https://github.com/nodejs/node/pull/54776)
+- \[[`a52c199d9d`](https://github.com/nodejs/node/commit/a52c199d9d)] - **(SEMVER-MINOR)** **test_runner**: report coverage thresholds in `test:coverage` (Aviv Keller) [#54813](https://github.com/nodejs/node/pull/54813)
+- \[[`6552fddef5`](https://github.com/nodejs/node/commit/6552fddef5)] - **test_runner**: update kPatterns (Pietro Marchini) [#54728](https://github.com/nodejs/node/pull/54728)
+- \[[`3396a4954d`](https://github.com/nodejs/node/commit/3396a4954d)] - **test_runner**: detect only tests when isolation is off (Colin Ihrig) [#54832](https://github.com/nodejs/node/pull/54832)
+- \[[`021f59b6bc`](https://github.com/nodejs/node/commit/021f59b6bc)] - **test_runner**: apply filtering when tests begin (Colin Ihrig) [#54832](https://github.com/nodejs/node/pull/54832)
+- \[[`36da793350`](https://github.com/nodejs/node/commit/36da793350)] - **test_runner**: allow `--import` with no isolation (Aviv Keller) [#54697](https://github.com/nodejs/node/pull/54697)
+- \[[`de73d1ee4b`](https://github.com/nodejs/node/commit/de73d1ee4b)] - **test_runner**: improve code coverage cleanup (Colin Ihrig) [#54856](https://github.com/nodejs/node/pull/54856)
+- \[[`3d478728f2`](https://github.com/nodejs/node/commit/3d478728f2)] - **timers**: avoid generating holey internal arrays (Gürgün Dayıoğlu) [#54771](https://github.com/nodejs/node/pull/54771)
+- \[[`b3d567ae0f`](https://github.com/nodejs/node/commit/b3d567ae0f)] - **timers**: document ref option for scheduler.wait (Paolo Insogna) [#54605](https://github.com/nodejs/node/pull/54605)
+- \[[`c2bf0134ce`](https://github.com/nodejs/node/commit/c2bf0134ce)] - **(SEMVER-MINOR)** **tls**: add `allowPartialTrustChain` flag (Anna Henningsen) [#54790](https://github.com/nodejs/node/pull/54790)
+- \[[`608a611132`](https://github.com/nodejs/node/commit/608a611132)] - **tools**: add readability/fn_size to filter (Rafael Gonzaga) [#54744](https://github.com/nodejs/node/pull/54744)
+- \[[`93fab49099`](https://github.com/nodejs/node/commit/93fab49099)] - **tools**: add util scripts to land and rebase PRs (Antoine du Hamel) [#54656](https://github.com/nodejs/node/pull/54656)
+- \[[`d6df542ff8`](https://github.com/nodejs/node/commit/d6df542ff8)] - **tools**: remove readability/fn_size rule (Rafael Gonzaga) [#54663](https://github.com/nodejs/node/pull/54663)
+- \[[`689d127ee7`](https://github.com/nodejs/node/commit/689d127ee7)] - **typings**: fix TypedArray to a global type (1ilsang) [#54063](https://github.com/nodejs/node/pull/54063)
+- \[[`071dff1d34`](https://github.com/nodejs/node/commit/071dff1d34)] - **typings**: correct param type of `SafePromisePrototypeFinally` (Wuli) [#54727](https://github.com/nodejs/node/pull/54727)
+- \[[`5243e3240c`](https://github.com/nodejs/node/commit/5243e3240c)] - _**Revert**_ "**v8**: enable maglev on supported architectures" (Joyee Cheung) [#54384](https://github.com/nodejs/node/pull/54384)
+- \[[`ade9da5b3a`](https://github.com/nodejs/node/commit/ade9da5b3a)] - **vm**: add vm proto property lookup test (Chengzhong Wu) [#54606](https://github.com/nodejs/node/pull/54606)
+- \[[`8385958b60`](https://github.com/nodejs/node/commit/8385958b60)] - **zlib**: add typings for better dx (Yagiz Nizipli) [#54699](https://github.com/nodejs/node/pull/54699)
+- \[[`8c4c85cf31`](https://github.com/nodejs/node/commit/8c4c85cf31)] - **zlib**: deprecate instantiating classes without new (Yagiz Nizipli) [#54708](https://github.com/nodejs/node/pull/54708)
+
+Windows 32-bit Installer: https://nodejs.org/dist/v22.9.0/node-v22.9.0-x86.msi \
+Windows 64-bit Installer: https://nodejs.org/dist/v22.9.0/node-v22.9.0-x64.msi \
+Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.9.0/node-v22.9.0-arm64.msi \
+Windows 32-bit Binary: https://nodejs.org/dist/v22.9.0/win-x86/node.exe \
+Windows 64-bit Binary: https://nodejs.org/dist/v22.9.0/win-x64/node.exe \
+Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.9.0/win-arm64/node.exe \
+macOS 64-bit Installer: https://nodejs.org/dist/v22.9.0/node-v22.9.0.pkg \
+macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.9.0/node-v22.9.0-darwin-arm64.tar.gz \
+macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.9.0/node-v22.9.0-darwin-x64.tar.gz \
+Linux 64-bit Binary: https://nodejs.org/dist/v22.9.0/node-v22.9.0-linux-x64.tar.xz \
+Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.9.0/node-v22.9.0-linux-ppc64le.tar.xz \
+Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.9.0/node-v22.9.0-linux-s390x.tar.xz \
+AIX 64-bit Binary: https://nodejs.org/dist/v22.9.0/node-v22.9.0-aix-ppc64.tar.gz \
+ARMv7 32-bit Binary: https://nodejs.org/dist/v22.9.0/node-v22.9.0-linux-armv7l.tar.xz \
+ARMv8 64-bit Binary: https://nodejs.org/dist/v22.9.0/node-v22.9.0-linux-arm64.tar.xz \
+Source Code: https://nodejs.org/dist/v22.9.0/node-v22.9.0.tar.gz \
+Other release files: https://nodejs.org/dist/v22.9.0/ \
+Documentation: https://nodejs.org/docs/v22.9.0/api/
+
+### SHASUMS
+
+```
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+6cdaa6e3c5c7cf0596dd5a3deafc63d22987eb7da95eca1fffccd168a70f4b1e  node-v22.9.0-aix-ppc64.tar.gz
+0930031b9cf40a5d6dab8a5c4c80d051698e6df581e3623ec6902619f3434874  node-v22.9.0-arm64.msi
+7d62217f64491524db6bcfb059049d64fd6a9adcae52565ed54aaad365a55afd  node-v22.9.0-darwin-arm64.tar.gz
+2e01a251a29ce603721d83c896d157e7b7b22de1ae8f84336641390daf7fc125  node-v22.9.0-darwin-arm64.tar.xz
+2d68692990a38078e1895763ff68f8ef0105299134e7f5654ddafaac69d4fa59  node-v22.9.0-darwin-x64.tar.gz
+6b9e9df47fab128ed58f5b8e781d90604355ab55dbdafb0e876a3ae933557d2d  node-v22.9.0-darwin-x64.tar.xz
+4035e59c26405889d97cc257f5a30088b58990d720124147469b42c66402ce2d  node-v22.9.0-headers.tar.gz
+fc595974bcd61bb617d5da0dcdd8ef2c89fedfed954b75f02697d3e98027008d  node-v22.9.0-headers.tar.xz
+4497750edeba40349fae55c058103a7c3c606adb209839c087739d2184c25d8a  node-v22.9.0-linux-arm64.tar.gz
+5b19718b78a4b632896a52a90246b41e7b8c569a57c0676ff0dd24b30b55275d  node-v22.9.0-linux-arm64.tar.xz
+67dbabeee7cee24fa56cb9ceba01dd9f41d7644d95744e0bd66897d472e6188c  node-v22.9.0-linux-armv7l.tar.gz
+cdcd2f0a30184a2c633eeafc0d0317013cc8665ee1254c2da1563761579d85af  node-v22.9.0-linux-armv7l.tar.xz
+f3baf6120602e13436ab30bbe55593599a6f5681efe33ea21f77550af7cfde83  node-v22.9.0-linux-ppc64le.tar.gz
+86dad0b0db3003538c804ebdcce7ac0f0e3b245d842fd554620ba8230d536808  node-v22.9.0-linux-ppc64le.tar.xz
+70ee74fc334075f5822d46bd1c0286fcfb1547e0d55278c0dab5cefc70783af5  node-v22.9.0-linux-s390x.tar.gz
+8adc776e92e8b03fb3c422754856267357f3eaa95686b18067f31d6987f1778c  node-v22.9.0-linux-s390x.tar.xz
+1efa7ba49fbb80b2110ebed50224705ca23b1edbdd1e3210e293faa006540488  node-v22.9.0-linux-x64.tar.gz
+1bfae9ef21ab43c92d8274f1bd032bf61f42ea004192a18d4c64477508626142  node-v22.9.0-linux-x64.tar.xz
+7a0a0a3998d989fe117f358e17ae0542ba264d2ae5c5681fc9d9ce8a666ce7b2  node-v22.9.0-win-arm64.7z
+85c838f9100599d4a16d9e4b64344d7dc0991e10751db4d5a9e9473f0b67cce2  node-v22.9.0-win-arm64.zip
+805d4f842b2f85907fc28d1d631971bac5c1df691d7040cfa5e46d02534f98df  node-v22.9.0-win-x64.7z
+8af226c0aa71fefe5228e881f4b5c5d90a8b41c290b96f44f56990d8dc3fac1c  node-v22.9.0-win-x64.zip
+3a6b798464794a0ac2452cf51e55df6f60f09598f724dd3eb890d64d99d81e5b  node-v22.9.0-win-x86.7z
+16204fc98ff2370e49283c7f653ee8b8845c92b5e2bfcb8a4453219dea8f7b81  node-v22.9.0-win-x86.zip
+55cd8bada120341a16bdc06e1dcf7af25d8879875ae09525637125a661c3faab  node-v22.9.0-x64.msi
+90651995e20f55dbf495aafffc053ab7d551dd47f6d942b226183093552c5e73  node-v22.9.0-x86.msi
+5a70e38868121c5cd1b4c5ba9330c461c2afd5ffe26091f19fe8e4b014559b08  node-v22.9.0.pkg
+296854aa1dca140b0462c2415637d0419e42af91114538a7e6fdf623971a6833  node-v22.9.0.tar.gz
+a55aeb368dee93432f610127cf94ce682aac07b93dcbbaadd856df122c9239df  node-v22.9.0.tar.xz
+4076261755ffc71ea4c78446f113ce5cf8d92c69d8ef4d78e07785381eb5160a  win-arm64/node.exe
+ad65afe5b192644fec9d599c77f0e38a8421d0d7ad2389679882a288c8df444b  win-arm64/node.lib
+ca8b0c10f26a2f4758a241285f037dcf554c295d1bfe88aaa074c6e580eeb4ee  win-arm64/node_pdb.7z
+2d27f1e746a806690acb70880c3d1422ad12348baadd73dc730cc6e4df2013f7  win-arm64/node_pdb.zip
+cf5c4dc82434c181171d6bef146d4374742ef2bb89ca31d2ab83ffff210ea1b1  win-x64/node.exe
+3581a06b68c4584d146372113eaa8c4d102127222e5041195ba38f185eef419c  win-x64/node.lib
+dc385fb2d62d8dc6ed18e4cb53c94dbdefe85ec06b0634e19de24f4e30c4c56a  win-x64/node_pdb.7z
+82dfcc4826004fe6bbf2244b7b461ddaa5a1e8294a356d70e6200fca293fe261  win-x64/node_pdb.zip
+317aeafe7dfeb5093534fe0be6de946c302bb39c40ba8de47bc51a8b305afad3  win-x86/node.exe
+45399070d1d247cf223d12e80d3e638635af24d2f7a4714bc8e38a6a918f162a  win-x86/node.lib
+628455f63aaaa8c29d115b462d600974262874765588ccd253db4b1ce7b815f5  win-x86/node_pdb.7z
+18d2ff4cec79ceb1ecf1729bc0872d8d2ecde814c8540a65d4c43ef28d3b9816  win-x86/node_pdb.zip
+-----BEGIN PGP SIGNATURE-----
+
+iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmbp7t8ACgkQi+q0389V
+XvTuxAv+NouvgETBs60HgGsbzKcvFS1ddHkwRYnutCjHHaU0bN2NBFrJisqUt5j4
+NJpYVfpQiVNUwlp4K57BxcZAQd6ck5v0REcjGYNbWmM/h5AcoRRURw7c684a1F6i
+9zKdXUTEbj69SFayPYTlZBZBqsi6kJmGDy+FnahASmgjML7HQDYr95qauPPY7jb8
+mBdbNbpYhCikV/nZzyZ/S0Ann0VT6Dap6v0/y94q6rF361AT3QdVyhN5UXfLx1YB
+BAcq3KWK+Lx/JTWsm6PjG5p2sQi1pih0NDQKSR7oGjSVMrdwqOl+NISB3yusK/QX
++iBNSWrpxMJhQCaJruLj6NjbgEcls5Urpx5KPkBmArN+jO2a/k+hwvSMn6NR6jOJ
+HRECUN9iC4Tz+ye3QVwWkx2YSn86svz5/vSen1UiruZq9I3sGiwf8VOweoJ9/FYE
+Gu9N7c/v1+JixIq1R9j/z33JhbpF8mWHjYW36oc1t9hekCpiwOI9Ty32tU78aAu5
+lBx53dvo
+=jPws
+-----END PGP SIGNATURE-----
+```

From d9cf9b08c229d86d689691b7e487e102f93b848a Mon Sep 17 00:00:00 2001
From: "Node.js Crowdin Bot"
 <148437438+nodejs-crowdin@users.noreply.github.com>
Date: Thu, 19 Sep 2024 10:25:36 +0200
Subject: [PATCH 0027/1385] [automated]: crowdin sync (#7045)

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* fix(eslint): remove deprecated eslint ignore config

* fix(action): supply config path

* chore: fix two lints

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: synced translations from crowdin [skip ci]

* chore: automated format of translated files

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: normalize some mis-translations

---------

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Brian Muenzenmeyer 
Co-authored-by: nodejs-crowdin 
---
 .../site/pages/fr/about/get-involved/index.md | 25 +++++++++++++------
 apps/site/pages/fr/about/governance.md        |  4 +--
 apps/site/pages/id/about/governance.md        |  8 +++---
 apps/site/pages/id/about/index.mdx            |  2 +-
 .../pages/uk/about/get-involved/contribute.md |  4 +--
 .../pages/uk/about/get-involved/events.mdx    |  2 +-
 apps/site/pages/uk/about/governance.md        |  6 ++---
 apps/site/pages/uk/about/index.mdx            |  5 ++--
 .../site/pages/uk/about/previous-releases.mdx |  4 +--
 .../pages/uk/about/security-reporting.mdx     |  4 +--
 .../pages/uk/download/package-manager/all.md  |  8 +++---
 .../uk/download/prebuilt-binaries/current.mdx |  2 +-
 .../uk/download/prebuilt-binaries/index.mdx   |  2 +-
 .../download/prebuilt-installer/current.mdx   |  2 +-
 .../uk/download/prebuilt-installer/index.mdx  |  2 +-
 15 files changed, 45 insertions(+), 35 deletions(-)

diff --git a/apps/site/pages/fr/about/get-involved/index.md b/apps/site/pages/fr/about/get-involved/index.md
index eaf1911daa61a..5e3693d7de325 100644
--- a/apps/site/pages/fr/about/get-involved/index.md
+++ b/apps/site/pages/fr/about/get-involved/index.md
@@ -5,22 +5,33 @@ layout: about
 
 # Impliquez-vous
 
+Si vous souhaitez vous impliquer dans la communauté Node.js, il existe de nombreuses façons de le faire. Le projet Node.js est une communauté vaste et diversifiée, et il existe de nombreuses façons de contribuer, au-delà de l'écriture de code.
+
 ## Discussions de la communauté
 
-- La [GitHub issues list](https://github.com/nodejs/node/issues) est le lieu de discussion des fonctionnalités de base de Node.js.
-- Pour discuter en temps réel du développement de Node.js, utilisez l'une des plateformes suivantes
-  - Pour IRC, allez sur `irc.libera.chat` dans le canal `#node.js` avec un [client IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ou connectez-vous dans votre navigateur web au canal en utilisant [un client web] (https://kiwiirc.com/nextclient/).
-  - Pour Slack, il y a deux options :
-    - Le [OpenJSF Slack](https://slack-invite.openjsf.org/) est un Slack géré par la Fondation avec plusieurs canaux Node.js (les canaux préfixés par `#nodejs-` sont liés au projet).
-    - [Node Slackers](https://www.nodeslackers.com/) est une communauté Slack axée sur Node.js.
+- La [GitHub issues list](https://github.com/nodejs/node/issues) est le lieu de discussion des fonctionnalités de base de Node.js et si vous avez des questions sur Node.js, vous pouvez utiliser les [github discussions](https://github.com/orgs/nodejs/discussions).
+- Le dépôt [`nodejs/help`](https://github.com/nodjes/help/issues) est l'endroit où poser des questions sur Node.js.
 - Le compte Twitter officiel de Node.js est [nodejs](https://twitter.com/nodejs).
 - Le [calendrier du projet Node.js](https://nodejs.org/calendar) avec toutes les réunions publiques de l'équipe.
 
-## Apprentissage
+## Matériel d'apprentissage
+
+Si vous souhaitez en savoir plus sur Node.js, de nombreuses ressources sont à votre disposition.
 
 - [Section officielle d'apprentissage](https://nodejs.org/en/learn/) du site web de Node.js.
 - [Official API reference documentation](https://nodejs.org/api/).
 - [NodeSchool.io](https://nodeschool.io/) vous enseignera les concepts de Node.js par le biais de jeux interactifs en ligne de commande.
 - Le site [Stack Overflow Node.js tag](https://stackoverflow.com/questions/tagged/node.js) recueille de nouvelles informations chaque jour.
 - [Le tag Node.js de la communauté DEV](https://dev.to/t/node) est un endroit pour partager des projets, des articles et des tutoriels Node.js, ainsi que pour lancer des discussions et demander des commentaires sur des sujets liés à Node.js. Les développeurs de tous niveaux sont les bienvenus.
+- La [communauté Reddit Node.js](https://www.reddit.com/r/node) est un lieu de partage de projets, d'articles et de tutoriels Node.js, ainsi que de discussions et de demandes de commentaires sur des sujets liés à Node.js. Les développeurs de tous niveaux sont les bienvenus.
+
+## Espaces de discussion non officiels
+
+Si vous cherchez un endroit plus informel pour discuter de Node.js, il existe plusieurs espaces de discussion non officiels.
+Veuillez noter qu'ils ne sont pas officiellement approuvés par le projet Node.js. Respectez également leur code de conduite/règles respectives.
+
+- [Node Slackers](https://www.nodeslackers.com/) est une communauté Slack axée sur Node.js.
+- [OpenJSF Slack](https://slack-invite.openjsf.org/) est un espace de travail Slack pour la Fondation OpenJS. Il y a plusieurs canaux liés à Node.js. (les canaux préfixés par `#nodejs-` sont liés au projet).
 - [Nodeiflux](https://discordapp.com/invite/vUsrbjd) est une communauté amicale de développeurs backend Node.js qui s'entraident sur Discord.
+- [ES Community](https://discord.gg/zJsuc6vvhn) est une communauté Discord pour les développeurs JavaScript francophones.
+- `irc.libera.chat` dans le canal `#node.js` avec un [client IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ou connectez-vous dans votre navigateur web au canal en utilisant [un client web](https://kiwiirc.com/nextclient/).
diff --git a/apps/site/pages/fr/about/governance.md b/apps/site/pages/fr/about/governance.md
index e20c44a3b716f..73741b6ad0e12 100644
--- a/apps/site/pages/fr/about/governance.md
+++ b/apps/site/pages/fr/about/governance.md
@@ -24,13 +24,13 @@ Un guide pour les collaborateurs est disponible à l'adresse suivante : [collabo
 
 ## Comité de pilotage technique
 
-Le projet est régi par le [Comité de pilotage technique (TSC)][]
+Le projet est régi par le [Comité de pilotage technique (TSC)][Technical Steering Committee (TSC)]
 qui est responsable de l'orientation de haut niveau du projet. Le TSC est un
 un sous-ensemble de collaborateurs actifs qui sont nommés par d'autres membres existants du 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
-[comité de pilotage technique (tsc)]: https://github.com/nodejs/TSC/blob/main/TSC-Charter.md
+[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/id/about/governance.md b/apps/site/pages/id/about/governance.md
index b58259b5e5a13..fccc0765aeab6 100644
--- a/apps/site/pages/id/about/governance.md
+++ b/apps/site/pages/id/about/governance.md
@@ -7,11 +7,11 @@ layout: about
 
 ## Proses Pencarian Kesepakatan
 
-Proyek Node.js mengikuti model pengambilan keputusan [Pencarian Konsensus][].
+Proyek Node.js mengikuti model pengambilan keputusan \[Pencarian Konsensus] \[].
 
 ## Kolaborator
 
-Repositori inti GitHub [nodejs/node][] dikelola oleh Kolaborator
+Repositori inti GitHub [nodejs/node] \[] dikelola oleh Kolaborator
 yang dinominasikan oleh Kolaborator lain yang ada secara berkelanjutan.
 
 Individu yang memberikan kontribusi signifikan dan berharga akan dijadikan Kolaborator dan diberikan akses komitmen terhadap proyek. Individu-individu ini diidentifikasi oleh Kolaborator lain dan nominasi mereka didiskusikan dengan Kolaborator yang ada.
@@ -22,11 +22,11 @@ Panduan untuk Kolaborator disimpan di [collaborator-guide.md][].
 
 ## Komite Pengarah Teknis
 
-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.
+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.
 
 [consensus seeking]: https://id.wikipedia.org/wiki/Musyawarah
 [readme.md]: https://github.com/nodejs/node/blob/main/README.md#current-project-team-members
 [tsc]: https://github.com/nodejs/TSC
-[komite pengarah teknis]: https://github.com/nodejs/TSC/blob/main/TSC-Charter.md
+[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/id/about/index.mdx b/apps/site/pages/id/about/index.mdx
index 623a5c9777f81..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
diff --git a/apps/site/pages/uk/about/get-involved/contribute.md b/apps/site/pages/uk/about/get-involved/contribute.md
index 21bda3e1c870b..2bdac419874c3 100644
--- a/apps/site/pages/uk/about/get-involved/contribute.md
+++ b/apps/site/pages/uk/about/get-involved/contribute.md
@@ -9,7 +9,7 @@ layout: about
 
 ## Запит про загальну допомогу
 
-Через високий рівень активності в репозиторії `nodejs/node\` питання та запити про загальну допомогу щодо використання Node.js слід створювати в [репозиторії допомоги з Node.js](https://github.com/nodejs/help/issues).
+Через високий рівень активності в репозиторії `nodejs/node` питання та запити про загальну допомогу щодо використання Node.js слід створювати в [репозиторії допомоги з Node.js](https://github.com/nodejs/help/issues).
 
 ## Повідомлення про проблему
 
@@ -44,4 +44,4 @@ layout: about
 - участі в робочих групах
 - участі в ширшій спільноті Node.js
 
-Якщо особи, що роблять цінний вклад у проєкт, вважають, що вони не розглядались на надання дозволу для внесення змін, тоді вони можуть [створити запит в репозиторії](https://github.com/nodejs/TSC/issues) або [сконтактувати із членом TSC](https://github.com/nodejs/node#tsc-technical-steering-committee) напряму.
+Якщо особи, які роблять цінний внесок у проєкт, вважають, що вони не розглядалися на отримання доступу для commit'ів, то вони можуть [створити issue](https://github.com/nodejs/TSC/issues) або [зв'язатись із членом TSC](https://github.com/nodejs/node#tsc-technical-steering-committee) безпосередньо.
diff --git a/apps/site/pages/uk/about/get-involved/events.mdx b/apps/site/pages/uk/about/get-involved/events.mdx
index 811ff18768809..a91dbe0e97e7a 100644
--- a/apps/site/pages/uk/about/get-involved/events.mdx
+++ b/apps/site/pages/uk/about/get-involved/events.mdx
@@ -11,6 +11,6 @@ layout: about
 
 Проєкт Node.js проводить численні зустрічі впродовж року для обговорення та планування аспектів проєкту.
 
-Ці зустрічі відбудуться в наступні 7 днів.
+Ці зустрічі відбудуться в наступні 7 днів:
 
 
diff --git a/apps/site/pages/uk/about/governance.md b/apps/site/pages/uk/about/governance.md
index 55475c2dbc1ef..179c03d627c04 100644
--- a/apps/site/pages/uk/about/governance.md
+++ b/apps/site/pages/uk/about/governance.md
@@ -7,7 +7,7 @@ layout: about
 
 ## Процес пошуку консенсусу
 
-Node.js дотримується моделі прийняття рішень [знаходження консенсусу][].
+Node.js дотримується моделі прийняття рішень [знаходження консенсусу][Consensus Seeking].
 
 ## Співавтори
 
@@ -21,11 +21,11 @@ Node.js дотримується моделі прийняття рішень [
 
 ## Технічний керівний комітет
 
-Проєкт керується [Технічним керівним комітетом (TSC)][], який відповідальний за високорівневе керування проєктом. TSC — це набір активних співавторів, які номінуються іншими чинними членами TSC.
+Проєкт керується [Технічним керівним комітетом (TSC)][Technical Steering Committee (TSC)], який відповідальний за високорівневе керування проєктом. TSC — це набір активних співавторів, які номінуються іншими чинними членами TSC.
 
 [consensus seeking]: https://uk.wikipedia.org/wiki/%D0%97%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%B5%D0%BD%D1%81%D1%83%D1%81%D1%83
 [readme.md]: https://github.com/nodejs/node/blob/main/README.md#current-project-team-members
 [tsc]: https://github.com/nodejs/TSC
-[Технічним керівним комітетом (TSC)]: https://github.com/nodejs/TSC/blob/main/TSC-Charter.md
+[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/uk/about/index.mdx b/apps/site/pages/uk/about/index.mdx
index 8a4ba5503f812..733472c03fbd6 100644
--- a/apps/site/pages/uk/about/index.mdx
+++ b/apps/site/pages/uk/about/index.mdx
@@ -44,12 +44,11 @@ server.listen(port, hostname, () => {
 Ця модель використовується на противагу поширенішій моделі, у якій використовуються потоки ОС. Така модель відносно неефективна та важка у використанні. Крім того, користувачі Node.js можуть не хвилюватися про дедлоки, оскільки тут немає блокувань. Майже жодна функція не виконує ввід-вивід безпосередньо, тому процеси не блокуються, за винятком тих випадків, коли ввід-вивід виконується синхронними методами стандартної бібліотеки Node.js. Завдяки відсутності блокувань доцільно створювати масштабовані системи в Node.js.
 
 Якщо деякі терміни вам незрозумілі, перегляньте статтю про
-[блокувальні та неблокувальні виклики][].
+[блокувальні та неблокувальні виклики][Blocking vs. Non-Blocking].
 
 ---
 
-Node.js надихався системами [Event Machine][] мови Ruby та [Twisted][] мови Python. Проте Node.js зводить подієву модель на новий рівень. Він представляє цикл подій як основу середовища виконання, а не як бібліотеку.
-інших системах присутній блокувальний виклик, який починає цикл подій. Зазвичай поведінка визначається функціями зворотного виклику на початку скрипту, після чого відбувається блокувальний виклик, наприклад, `EventMachine::run()`. Node.js не має такого виклику, а просто запускає цикл подій після виконання ввідного скрипту і виходить із циклу, коли всі зворотні виклики були виконані. Така поведінка схожа з поведінкою браузерного JavaScript — цикл подій прихований від користувача.
+Node.js надихався системами [Event Machine][] мови Ruby та [Twisted][] мови Python. Проте Node.js зводить подієву модель на новий рівень. Він представляє цикл подій як основу середовища виконання, а не як бібліотеку. В інших системах присутній блокувальний виклик, який починає цикл подій. Зазвичай поведінка визначається функціями зворотного виклику на початку скрипту, після чого відбувається блокувальний виклик, наприклад, `EventMachine::run()`. Node.js не має такого виклику, а просто запускає цикл подій після виконання ввідного скрипту і виходить із циклу, коли всі зворотні виклики були виконані. Така поведінка схожа з поведінкою браузерного JavaScript — цикл подій прихований від користувача.
 
 HTTP є повноцінною частиною Node.js, розроблений з урахуванням потокової передачі даних і низької затримки. Це робить Node.js ідеальним варіантом для створення основи для веббібліотеки або фреймворку.
 
diff --git a/apps/site/pages/uk/about/previous-releases.mdx b/apps/site/pages/uk/about/previous-releases.mdx
index cea258c7bc777..63f43ad408be1 100644
--- a/apps/site/pages/uk/about/previous-releases.mdx
+++ b/apps/site/pages/uk/about/previous-releases.mdx
@@ -5,10 +5,10 @@ layout: about
 
 Релізи Node.js
 
-Основні версії Node.js мають статус релізу _Current_ протягом шести місяців, що дає розробникам бібліотек час надати їм підтримку.
+Основні версії Node.js мають статус релізу _Current_ протягом шести місяців, що дає час розробникам бібліотек надати їм підтримку.
 Через шість місяців непарні релізи (9, 11 тощо) більше не підтримуватимуться, а парні релізи (10, 12 тощо) отримають статус _Active LTS_ та стануть готовими до загального використання.
 Статус релізу _LTS_ означає «довгострокова підтримка (ДСП)», тобто критичні помилки будуть виправлятися впродовж 30 місяців.
-Застосунки на продакшні повинні використовувати лише релізи _Active LTS_ та _Maintenance LTS_.
+Застосунки в клієнтському середовищі повинні використовувати лише релізи _Active LTS_ та _Maintenance LTS_.
 
 ## Розклад релізів
 
diff --git a/apps/site/pages/uk/about/security-reporting.mdx b/apps/site/pages/uk/about/security-reporting.mdx
index 37b8c91f920d7..c710284b2385d 100644
--- a/apps/site/pages/uk/about/security-reporting.mdx
+++ b/apps/site/pages/uk/about/security-reporting.mdx
@@ -5,7 +5,7 @@ layout: about
 
 Звітність про безпеку
 
-Для детальнішої інформації про чинні норми безпеки, перейдіть [на цю сторінку](https://github.com/nodejs/node/security/policy).
+Для детальнішої інформації про чинні норми безпеки перейдіть [на цю сторінку](https://github.com/nodejs/node/security/policy).
 
 ## Повідомлення про помилку в Node.js
 
@@ -31,7 +31,7 @@ layout: about
 
 Обирається дата оголошення цієї вразливості та робиться запит на CVE (Common Vulnerabilities and Exposures (CVE®)) щодо неї.
 
-У цю дату копію оголошення розсилають адресатам, які відповідають за безпеку Node.js. Зміни додаються до публічного репозиторію, а нові збірки — до nodejs.org. Протягом 6 годин після розсилки копію оголошення буде опубліковано в блозі Node.js.
+У цю дату копію оголошення розсилають адресатам, які відповідають за безпеку Node.js. Зміни додаються до публічного репозиторію, а нові збірки — до nodejs.org. Протягом 6 годин після розсилки копія оголошення публікується в блозі Node.js.
 
 Зазвичай датою оголошення є дата через 72 години після запиту на CVE. Однак вона може варіюватися залежно від серйозності помилки та складності її виправлення.
 
diff --git a/apps/site/pages/uk/download/package-manager/all.md b/apps/site/pages/uk/download/package-manager/all.md
index 6449151423d77..e4993887e3353 100644
--- a/apps/site/pages/uk/download/package-manager/all.md
+++ b/apps/site/pages/uk/download/package-manager/all.md
@@ -12,8 +12,8 @@ title: Установка Node.js через менеджер пакетів
 - [Alpine Linux](#alpine-linux)
 - [Android](#android)
 - [Arch Linux](#arch-linux)
-- [CentOS, Fedora та Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux)
-- [Дистрибутиви Linux на базі Debian та Ubuntu](#debian-and-ubuntu-based-linux-distributions)
+- [CentOS, Fedora та Red Hat Enterprise Linux](#centos-fedora-та-red-hat-enterprise-linux)
+- [Дистрибутиви Linux на базі Debian та Ubuntu](#дистрибутиви-linux-на-базі-debian-та-ubuntu)
 - [Exherbo Linux](#exherbo-linux)
 - [fnm](#fnm)
 - [FreeBSD](#freebsd)
@@ -26,8 +26,8 @@ title: Установка Node.js через менеджер пакетів
 - [nvm](#nvm)
 - [nvs](#nvs)
 - [OpenBSD](#openbsd)
-- [openSUSE та SLE](#opensuse-and-sle)
-- [SmartOS та illumos](#smartos-and-illumos)
+- [openSUSE та SLE](#opensuse-та-sle)
+- [SmartOS та illumos](#smartos-та-illumos)
 - [Snap](#snap)
 - [Solus](#solus)
 - [vfox](#vfox)
diff --git a/apps/site/pages/uk/download/prebuilt-binaries/current.mdx b/apps/site/pages/uk/download/prebuilt-binaries/current.mdx
index 01e1877a47d1d..4f4a4e9045525 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 для розрядності
diff --git a/apps/site/pages/uk/download/prebuilt-binaries/index.mdx b/apps/site/pages/uk/download/prebuilt-binaries/index.mdx index f829dc5736845..ea3e7f7417f79 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 для розрядності
diff --git a/apps/site/pages/uk/download/prebuilt-installer/current.mdx b/apps/site/pages/uk/download/prebuilt-installer/current.mdx index 9b7217bfd6129..50abaaf235f48 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 для розрядності
diff --git a/apps/site/pages/uk/download/prebuilt-installer/index.mdx b/apps/site/pages/uk/download/prebuilt-installer/index.mdx index ff5860331089b..ee370f641fe1c 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 для розрядності
From db37c53364d48d33fe7a38c6922e897171d3447f Mon Sep 17 00:00:00 2001 From: TenzDelek <122612557+TenzDelek@users.noreply.github.com> Date: Fri, 20 Sep 2024 07:26:05 +0530 Subject: [PATCH 0028/1385] fixed the text cutoff issue (#7046) * fixed the text wrap * suggested changes:px to builtin * width change from fit to xs --- apps/site/components/Common/Select/index.module.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/site/components/Common/Select/index.module.css b/apps/site/components/Common/Select/index.module.css index aaedbd4355e22..b669ea3239f66 100644 --- a/apps/site/components/Common/Select/index.module.css +++ b/apps/site/components/Common/Select/index.module.css @@ -96,7 +96,9 @@ } .text > span > span { - @apply truncate; + @apply max-w-64 + truncate + text-wrap; } .label { From 06400ad2b5d11963d3beeb1ecc392d44b0d5c6c7 Mon Sep 17 00:00:00 2001 From: Jan Amann Date: Sat, 21 Sep 2024 04:23:50 +0200 Subject: [PATCH 0029/1385] fix: Use default messages from `en` as fallback if messages are missing in another locale (#7054) * fix: Use default messages from `en` as fallback if messages are missing in another locale * chore: Remove `deepmerge` dependency in favor of a more optimized custom function * chore: Revert changes to lockfile --- apps/site/i18n.tsx | 19 +++++++++++++------ apps/site/util/deepMerge.ts | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 apps/site/util/deepMerge.ts diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index 5e235d8e3d15f..efed3f4d9c6fd 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -3,20 +3,27 @@ import { getRequestConfig } from 'next-intl/server'; import { availableLocaleCodes } from '@/next.locales.mjs'; +import deepMerge from './util/deepMerge'; + // Loads the Application Locales/Translations Dynamically const loadLocaleDictionary = async (locale: string) => { + // This enables HMR on the English Locale, so that instant refresh + // happens while we add/change texts on the source locale + const defaultMessages = await import( + '@node-core/website-i18n/locales/en.json' + ).then(f => f.default); + if (locale === 'en') { - // This enables HMR on the English Locale, so that instant refresh - // happens while we add/change texts on the source locale - return import('@node-core/website-i18n/locales/en.json').then( - f => f.default - ); + return defaultMessages; } if (availableLocaleCodes.includes(locale)) { // Other languages don't really require HMR as they will never be development languages // so we can load them dynamically - return importLocale(locale); + const messages = await importLocale(locale); + + // Use default messages as fallback + return deepMerge(defaultMessages, messages); } throw new Error(`Unsupported locale: ${locale}`); diff --git a/apps/site/util/deepMerge.ts b/apps/site/util/deepMerge.ts new file mode 100644 index 0000000000000..751c09a3afe16 --- /dev/null +++ b/apps/site/util/deepMerge.ts @@ -0,0 +1,20 @@ +export default function deepMerge( + obj1: Obj1, + obj2: Obj2 +): Obj1 & Obj2 { + const result = { ...obj1 } as Obj1 & Obj2; + + for (const key in obj2) { + if (Object.prototype.hasOwnProperty.call(obj2, key)) { + if (typeof obj2[key] === 'object' && obj2[key] !== null) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + result[key] = deepMerge(result[key] as any, obj2[key] as any); + } else { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + result[key] = obj2[key] as any; + } + } + } + + return result; +} From 29e64d74e7863056e3de0df4f4b0cad18e027762 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Wed, 25 Sep 2024 13:53:33 -0500 Subject: [PATCH 0030/1385] 6492 surfin 404 (#7056) * feat: turtle surfin * fix indentation per our style * specify unit on TW * better whitespace at least on Chrome responsive mode this looks better. still testing * unit of measures on all arbitrary values * Apply suggestions from code review Co-authored-by: Caner Akdas Signed-off-by: Brian Muenzenmeyer * use TW content rule * center the error state headings did not alter .special, as that is used for the homepage --------- Signed-off-by: Brian Muenzenmeyer Co-authored-by: Darcy Clarke Co-authored-by: Caner Akdas --- apps/site/app/[locale]/error.tsx | 2 +- apps/site/app/[locale]/not-found.tsx | 20 +++++++++------ apps/site/app/global-error.tsx | 4 ++- apps/site/public/static/images/smoke.gif | Bin 0 -> 61685 bytes apps/site/styles/effects.css | 31 +++++++++++++++++++++++ apps/site/tailwind.config.ts | 12 +++++++++ 6 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 apps/site/public/static/images/smoke.gif diff --git a/apps/site/app/[locale]/error.tsx b/apps/site/app/[locale]/error.tsx index 8f642ae363cc6..a62a830d1f1ed 100644 --- a/apps/site/app/[locale]/error.tsx +++ b/apps/site/app/[locale]/error.tsx @@ -19,7 +19,7 @@ const ErrorPage: FC<{ error: Error }> = ({ error }) => {
500 -

+

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

diff --git a/apps/site/app/[locale]/not-found.tsx b/apps/site/app/[locale]/not-found.tsx index bb7b53628c709..44d8839a42d7d 100644 --- a/apps/site/app/[locale]/not-found.tsx +++ b/apps/site/app/[locale]/not-found.tsx @@ -18,14 +18,18 @@ const NotFoundPage: FC = () => {

404 -

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

-
- The Node.js mascot +

+ {t('layouts.error.notFound.title')} +

+
+
+ The Node.js mascot +

{t('layouts.error.notFound.description')} diff --git a/apps/site/app/global-error.tsx b/apps/site/app/global-error.tsx index 20d1cb618a735..6cab08ae716f9 100644 --- a/apps/site/app/global-error.tsx +++ b/apps/site/app/global-error.tsx @@ -21,7 +21,9 @@ const GlobalErrorPage: FC<{ error: Error }> = ({ error }) => {

500 -

Internal Server Error

+

+ Internal Server Error +

This page has thrown a non-recoverable error.

diff --git a/apps/site/public/static/images/smoke.gif b/apps/site/public/static/images/smoke.gif new file mode 100644 index 0000000000000000000000000000000000000000..df014e59c9d179829b043ec0fc884aaf047e1e5b GIT binary patch literal 61685 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 Date: Tue, 1 Oct 2024 05:27:46 -0500 Subject: [PATCH 0031/1385] Fix broken link to past releases (#7061) fixes link path closes #7060 Signed-off-by: Brian Muenzenmeyer --- apps/site/pages/en/download/prebuilt-installer/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/download/prebuilt-installer/index.mdx b/apps/site/pages/en/download/prebuilt-installer/index.mdx index 702f1b7558fe8..402402f4a4978 100644 --- a/apps/site/pages/en/download/prebuilt-installer/index.mdx +++ b/apps/site/pages/en/download/prebuilt-installer/index.mdx @@ -21,6 +21,6 @@ Learn how to verify signed SHASUMSdownload options -Learn about Node.js Releases +Learn about Node.js Releases From a6c9b8675087d9dfb151a6c045952789f010c1c0 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Tue, 1 Oct 2024 07:26:30 -0500 Subject: [PATCH 0032/1385] fix broken link (#7063) reported via crowdin user Signed-off-by: Brian Muenzenmeyer --- apps/site/pages/en/about/get-involved/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/about/get-involved/index.md b/apps/site/pages/en/about/get-involved/index.md index bcbd7851b6275..d29d68c4fe57a 100644 --- a/apps/site/pages/en/about/get-involved/index.md +++ b/apps/site/pages/en/about/get-involved/index.md @@ -10,7 +10,7 @@ If you are interested in getting involved with the Node.js community, there are ## Community Discussion - The [GitHub issues list](https://github.com/nodejs/node/issues) is the place for discussion of Node.js core features and if you have questions about Node.js, you can use the [github discussions](https://github.com/orgs/nodejs/discussions). -- The [`nodejs/help`](https://github.com/nodjes/help/issues) repository is the place to ask questions about Node.js. +- The [`nodejs/help`](https://github.com/nodejs/help/issues) repository is the place to ask questions about Node.js. - The official Node.js Twitter account is [nodejs](https://twitter.com/nodejs). - The [Node.js project calendar](https://nodejs.org/calendar) with all public team meetings. From b66ae9d88098808a3075bd83ca4831106e27cd2c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:36:27 -0700 Subject: [PATCH 0033/1385] meta: bump github/codeql-action from 3.26.6 to 3.26.10 (#7071) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.6 to 3.26.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4dd16135b69a43b6c8efb853346f8437d92d3c93...e2b3eafc8d227b0241d48be5f425d47c2d750a13) --- updated-dependencies: - dependency-name: github/codeql-action 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> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 274c55413d0a0..054190a560111 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/autobuild@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b171db44d1bf2..f9b8ae6ab9e36 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/upload-sarif@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 with: sarif_file: results.sarif From ba73d19e2c29c69e322ceeeb48078fc8b283a0e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:36:35 -0700 Subject: [PATCH 0034/1385] meta: bump step-security/harden-runner from 2.9.1 to 2.10.1 (#7070) Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.9.1 to 2.10.1. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde...91182cccc01eb5e619899d80e4e971d6181294a7) --- updated-dependencies: - dependency-name: step-security/harden-runner 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/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 6 +++--- .github/workflows/pull-request-label.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr.yml | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 429e097ad6117..32e953effb287 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -46,7 +46,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 054190a560111..4943329ea48ef 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index d2d47acd21585..d3d77b5218ccd 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index d4b48cb0326ab..5cc6a7d13e255 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 092527331bee4..1f62e724853b5 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -37,7 +37,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -159,7 +159,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/pull-request-label.yml b/.github/workflows/pull-request-label.yml index 479358dc63f79..1eed831e2f500 100644 --- a/.github/workflows/pull-request-label.yml +++ b/.github/workflows/pull-request-label.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f9b8ae6ab9e36..2c9c908ab098b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index 54b312f846393..26f34acc7fd72 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -34,7 +34,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit From cd13b7cabea8a4d1b48f71c5f9caef18a460f495 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:36:59 -0700 Subject: [PATCH 0035/1385] meta: bump actions/setup-node from 4.0.3 to 4.0.4 (#7069) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.0.3 to 4.0.4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/1e60f620b9541d16bece96c5465dc8ee9832be0b...0a44ba7841725637a19e28fa30b79a866c81b0a6) --- updated-dependencies: - dependency-name: actions/setup-node 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> --- .github/workflows/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-pr.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 32e953effb287..61350ca0b9596 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,7 +89,7 @@ jobs: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- - name: Set up Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 1f62e724853b5..89d08389d5646 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -95,7 +95,7 @@ jobs: cache-lint- - name: Set up Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' @@ -173,7 +173,7 @@ jobs: fetch-depth: 0 - name: Set up Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index 26f34acc7fd72..bb46d215b048a 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -92,7 +92,7 @@ jobs: cache-lint- - name: Set up Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' From 749765f1f52fcfa5f5fa2994d14ba103961008ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:37:37 -0700 Subject: [PATCH 0036/1385] meta: bump actions/checkout from 4.1.7 to 4.2.0 (#7067) Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/692973e3d937129bcbf40652eb9f2f61becf3332...d632683dd7b4114ad314bca15554477dd762a938) --- updated-dependencies: - dependency-name: actions/checkout 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/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr.yml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 61350ca0b9596..4f26ca0736e0b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,7 +65,7 @@ jobs: run: echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%" - name: Git Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 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 }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4943329ea48ef..f3a313e1e8862 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -46,7 +46,7 @@ jobs: egress-policy: audit - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index d3d77b5218ccd..4f7c1e7565af0 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -26,7 +26,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - name: Review Dependencies uses: actions/dependency-review-action@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4 diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index 5cc6a7d13e255..07340a2cead3b 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -43,7 +43,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 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 }} diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 89d08389d5646..08509e62306ca 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -70,7 +70,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 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 }} @@ -164,7 +164,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 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 }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2c9c908ab098b..14a9519240f21 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 with: persist-credentials: false diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index bb46d215b048a..8d156f1de843c 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -70,7 +70,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 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 }} From f5ad83e8ea93e86f6f209a298e8b99e094fbe032 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:38:06 -0700 Subject: [PATCH 0037/1385] meta: bump chromaui/action from 11.7.1 to 11.11.0 (#7066) Bumps [chromaui/action](https://github.com/chromaui/action) from 11.7.1 to 11.11.0. - [Release notes](https://github.com/chromaui/action/releases) - [Commits](https://github.com/chromaui/action/compare/b984808b772126a9f44b2b7737b131b68a2ede32...30b6228aa809059d46219e0f556752e8672a7e26) --- updated-dependencies: - dependency-name: chromaui/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/lint-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 08509e62306ca..89b478473c55d 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -202,7 +202,7 @@ jobs: startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 - uses: chromaui/action@b984808b772126a9f44b2b7737b131b68a2ede32 + uses: chromaui/action@30b6228aa809059d46219e0f556752e8672a7e26 with: workingDir: apps/site buildScriptName: storybook:build From 9a6132475d6d4647d6fa4e3c1bde614a966a57ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 07:49:29 -0500 Subject: [PATCH 0038/1385] meta: bump @types/react from 18.3.5 to 18.3.10 in the react group (#7075) Bumps the react group with 1 update: [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). Updates `@types/react` from 18.3.5 to 18.3.10 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: react ... 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 d6172ce334139..96f83568287c9 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -100,7 +100,7 @@ "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.13", - "@types/react": "^18.3.5", + "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint": "~9.10.0", diff --git a/package-lock.json b/package-lock.json index 49554ccff1ebd..9c39647ab778b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,7 +93,7 @@ "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.13", - "@types/react": "^18.3.5", + "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint": "~9.10.0", @@ -8332,11 +8332,10 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", - "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", + "version": "18.3.10", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.10.tgz", + "integrity": "sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==", "devOptional": true, - "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" From dcd2d23ba6bb1d4799cfb61ad9d1588a7bbde467 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 07:49:56 -0500 Subject: [PATCH 0039/1385] meta: bump postcss from 8.4.45 to 8.4.47 (#7080) Bumps [postcss](https://github.com/postcss/postcss) from 8.4.45 to 8.4.47. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.45...8.4.47) --- updated-dependencies: - dependency-name: postcss 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 | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 96f83568287c9..72c792f3ce3a5 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -70,7 +70,7 @@ "next": "~14.2.11", "next-intl": "~3.19.1", "next-themes": "~0.3.0", - "postcss": "~8.4.45", + "postcss": "~8.4.47", "postcss-calc": "~10.0.2", "postcss-import": "~16.1.0", "postcss-mixins": "~11.0.1", diff --git a/package-lock.json b/package-lock.json index 9c39647ab778b..a6f03fcad3ca0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,7 +63,7 @@ "next": "~14.2.11", "next-intl": "~3.19.1", "next-themes": "~0.3.0", - "postcss": "~8.4.45", + "postcss": "~8.4.47", "postcss-calc": "~10.0.2", "postcss-import": "~16.1.0", "postcss-mixins": "~11.0.1", @@ -23019,9 +23019,9 @@ } }, "node_modules/postcss": { - "version": "8.4.45", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", - "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -23036,11 +23036,10 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" From e1bd1cf74f109eb7da0128c74111236e87fb1fd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 08:07:26 -0500 Subject: [PATCH 0040/1385] meta: bump MishaKav/jest-coverage-comment from 1.0.26 to 1.0.27 (#7068) Bumps [MishaKav/jest-coverage-comment](https://github.com/mishakav/jest-coverage-comment) from 1.0.26 to 1.0.27. - [Release notes](https://github.com/mishakav/jest-coverage-comment/releases) - [Changelog](https://github.com/MishaKav/jest-coverage-comment/blob/main/CHANGELOG.md) - [Commits](https://github.com/mishakav/jest-coverage-comment/compare/434e6d2d37116d23d812809b61d499639842fa3b...d74238813c33e6ea20530ff91b5ea37953d11c91) --- updated-dependencies: - dependency-name: MishaKav/jest-coverage-comment 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> --- .github/workflows/lint-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 89b478473c55d..c63269db3b632 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -217,7 +217,7 @@ jobs: if: steps.chromatic-deploy.outcome == 'success' # This comments the current Jest Coverage Report containing JUnit XML reports # and a Code Coverage Summary - uses: MishaKav/jest-coverage-comment@434e6d2d37116d23d812809b61d499639842fa3b # v1.0.26 + uses: MishaKav/jest-coverage-comment@d74238813c33e6ea20530ff91b5ea37953d11c91 # v1.0.27 with: title: 'Unit Test Coverage Report' junitxml-path: ./apps/site/junit.xml From 6284a18d61aa0f6b5f93e172a9fa98c58f862187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 3 Oct 2024 20:59:20 +0200 Subject: [PATCH 0041/1385] Blog: v20.18.0 release post (#7084) Refs: https://github.com/nodejs/node/pull/55170 --- apps/site/pages/en/blog/release/v20.18.0.md | 430 ++++++++++++++++++++ 1 file changed, 430 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v20.18.0.md diff --git a/apps/site/pages/en/blog/release/v20.18.0.md b/apps/site/pages/en/blog/release/v20.18.0.md new file mode 100644 index 0000000000000..c16a1eff87a8e --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.18.0.md @@ -0,0 +1,430 @@ +--- +date: '2024-10-03T17:57:41.630Z' +category: release +title: Node v20.18.0 (LTS) +layout: blog-post +author: Michaël Zasso +--- + +## 2024-10-03, Version 20.18.0 'Iron' (LTS), @targos + +### Notable Changes + +### Experimental Network Inspection Support in Node.js + +This update introduces the initial support for network inspection in Node.js. +Currently, this is an experimental feature, so you need to enable it using the `--experimental-network-inspection` flag. +With this feature enabled, you can inspect network activities occurring within a JavaScript application. + +To use network inspection, start your Node.js application with the following command: + +```console +$ node --inspect-wait --experimental-network-inspection index.js +``` + +Please note that the network inspection capabilities are in active development. +We are actively working on enhancing this feature and will continue to expand its functionality in future updates. + +- Network inspection is limited to the `http` and `https` modules only. +- The Network tab in Chrome DevTools will not be available until the + [feature request on the Chrome DevTools side](https://issues.chromium.org/issues/353924015) is addressed. + +Contributed by Kohei Ueno in [#53593](https://github.com/nodejs/node/pull/53593) and [#54246](https://github.com/nodejs/node/pull/54246) + +#### Exposes X509_V_FLAG_PARTIAL_CHAIN to tls.createSecureContext + +This releases introduces a new option to the API `tls.createSecureContext`. From +now on, `tls.createSecureContext({ allowPartialTrustChain: true })` can be used +to treat intermediate (non-self-signed) certificates in the trust CA certificate +list as trusted. + +Contributed by Anna Henningsen in [#54790](https://github.com/nodejs/node/pull/54790) + +#### New option for vm.createContext() to create a context with a freezable globalThis + +Node.js implements a flavor of `vm.createContext()` and friends that creates a context without contextifying its global +object when vm.constants.DONT_CONTEXTIFY is used. This is suitable when users want to freeze the context +(impossible when the global is contextified i.e. has interceptors installed) or speed up the global access if they +don't need the interceptor behavior. + +Contributed by Joyee Cheung in [#54394](https://github.com/nodejs/node/pull/54394) + +#### Deprecations + +- \[[`64aa31f6e5`](https://github.com/nodejs/node/commit/64aa31f6e5)] - **repl**: doc-deprecate instantiating `node:repl` classes without `new` (Aviv Keller) [#54842](https://github.com/nodejs/node/pull/54842) +- \[[`4c52ee3d7f`](https://github.com/nodejs/node/commit/4c52ee3d7f)] - **zlib**: deprecate instantiating classes without new (Yagiz Nizipli) [#54708](https://github.com/nodejs/node/pull/54708) + +#### Other Notable Changes + +- \[[`b80da2f964`](https://github.com/nodejs/node/commit/b80da2f964)] - **buffer**: optimize createFromString (Robert Nagy) [#54324](https://github.com/nodejs/node/pull/54324) +- \[[`02b36cbd2d`](https://github.com/nodejs/node/commit/02b36cbd2d)] - **(SEMVER-MINOR)** **lib**: add EventSource Client (Aras Abbasi) [#51575](https://github.com/nodejs/node/pull/51575) +- \[[`879546a9bf`](https://github.com/nodejs/node/commit/879546a9bf)] - **(SEMVER-MINOR)** **src,lib**: add performance.uvMetricsInfo (Rafael Gonzaga) [#54413](https://github.com/nodejs/node/pull/54413) +- \[[`f789f4c92d`](https://github.com/nodejs/node/commit/f789f4c92d)] - **(SEMVER-MINOR)** **test_runner**: support module mocking (Colin Ihrig) [#52848](https://github.com/nodejs/node/pull/52848) +- \[[`4eb0749b6c`](https://github.com/nodejs/node/commit/4eb0749b6c)] - **(SEMVER-MINOR)** **url**: implement parse method for safer URL parsing (Ali Hassan) [#52280](https://github.com/nodejs/node/pull/52280) + +### Commits + +- \[[`013c48f0e9`](https://github.com/nodejs/node/commit/013c48f0e9)] - **benchmark**: --no-warnings to avoid DEP/ExpWarn log (Rafael Gonzaga) [#54928](https://github.com/nodejs/node/pull/54928) +- \[[`194fc113ac`](https://github.com/nodejs/node/commit/194fc113ac)] - **benchmark**: add buffer.isAscii benchmark (RafaelGSS) [#54740](https://github.com/nodejs/node/pull/54740) +- \[[`7410d51cb9`](https://github.com/nodejs/node/commit/7410d51cb9)] - **benchmark**: add buffer.isUtf8 bench (RafaelGSS) [#54740](https://github.com/nodejs/node/pull/54740) +- \[[`2393f21e8a`](https://github.com/nodejs/node/commit/2393f21e8a)] - **benchmark**: add access async version to bench (Rafael Gonzaga) [#54747](https://github.com/nodejs/node/pull/54747) +- \[[`b8779721f0`](https://github.com/nodejs/node/commit/b8779721f0)] - **benchmark**: enhance dc publish benchmark (Rafael Gonzaga) [#54745](https://github.com/nodejs/node/pull/54745) +- \[[`4078aa83ff`](https://github.com/nodejs/node/commit/4078aa83ff)] - **benchmark**: add match and doesNotMatch bench (RafaelGSS) [#54734](https://github.com/nodejs/node/pull/54734) +- \[[`66acab9976`](https://github.com/nodejs/node/commit/66acab9976)] - **benchmark**: add rejects and doesNotReject bench (RafaelGSS) [#54734](https://github.com/nodejs/node/pull/54734) +- \[[`6db777fb3a`](https://github.com/nodejs/node/commit/6db777fb3a)] - **benchmark**: add throws and doesNotThrow bench (RafaelGSS) [#54734](https://github.com/nodejs/node/pull/54734) +- \[[`8f101560ce`](https://github.com/nodejs/node/commit/8f101560ce)] - **benchmark**: add strictEqual and notStrictEqual bench (RafaelGSS) [#54734](https://github.com/nodejs/node/pull/54734) +- \[[`2c9e4c936e`](https://github.com/nodejs/node/commit/2c9e4c936e)] - **benchmark**: adds groups to better separate benchmarks (Giovanni Bucci) [#54393](https://github.com/nodejs/node/pull/54393) +- \[[`671c3ac633`](https://github.com/nodejs/node/commit/671c3ac633)] - **benchmark**: fix benchmark for file path and URL conversion (Early Riser) [#54190](https://github.com/nodejs/node/pull/54190) +- \[[`8c8708cb5b`](https://github.com/nodejs/node/commit/8c8708cb5b)] - **benchmark**: use assert.ok searchparams (Rafael Gonzaga) [#54334](https://github.com/nodejs/node/pull/54334) +- \[[`8b71fa79e2`](https://github.com/nodejs/node/commit/8b71fa79e2)] - **benchmark**: add stream.compose benchmark (jakecastelli) [#54308](https://github.com/nodejs/node/pull/54308) +- \[[`93ee36e3a0`](https://github.com/nodejs/node/commit/93ee36e3a0)] - **benchmark**: rename count to n (Rafael Gonzaga) [#54271](https://github.com/nodejs/node/pull/54271) +- \[[`f2971b6f0b`](https://github.com/nodejs/node/commit/f2971b6f0b)] - **benchmark**: change assert() to assert.ok() (Rafael Gonzaga) [#54254](https://github.com/nodejs/node/pull/54254) +- \[[`f48f2c212c`](https://github.com/nodejs/node/commit/f48f2c212c)] - **benchmark**: support --help in CLI (Aviv Keller) [#53358](https://github.com/nodejs/node/pull/53358) +- \[[`0309b0520b`](https://github.com/nodejs/node/commit/0309b0520b)] - **benchmark**: remove force option as force defaults to true (Yelim Koo) [#54203](https://github.com/nodejs/node/pull/54203) +- \[[`b6e8305b2d`](https://github.com/nodejs/node/commit/b6e8305b2d)] - **benchmark**: use assert.ok instead of assert (Rafael Gonzaga) [#54176](https://github.com/nodejs/node/pull/54176) +- \[[`90c660d26a`](https://github.com/nodejs/node/commit/90c660d26a)] - **benchmark**: add require-esm benchmark (Joyee Cheung) [#52166](https://github.com/nodejs/node/pull/52166) +- \[[`1b8584b52e`](https://github.com/nodejs/node/commit/1b8584b52e)] - **benchmark,doc**: add CPU scaling governor to perf (Rafael Gonzaga) [#54723](https://github.com/nodejs/node/pull/54723) +- \[[`0b9161b330`](https://github.com/nodejs/node/commit/0b9161b330)] - **benchmark,doc**: mention bar.R to the list of scripts (Rafael Gonzaga) [#54722](https://github.com/nodejs/node/pull/54722) +- \[[`84bf93b7ea`](https://github.com/nodejs/node/commit/84bf93b7ea)] - **buffer**: allow invalid encoding in from (Robert Nagy) [#54533](https://github.com/nodejs/node/pull/54533) +- \[[`d04246a0d7`](https://github.com/nodejs/node/commit/d04246a0d7)] - **buffer**: optimize byteLength for common encodings (Robert Nagy) [#54342](https://github.com/nodejs/node/pull/54342) +- \[[`f36831f694`](https://github.com/nodejs/node/commit/f36831f694)] - **buffer**: optimize createFromString (Robert Nagy) [#54324](https://github.com/nodejs/node/pull/54324) +- \[[`f5f40c8088`](https://github.com/nodejs/node/commit/f5f40c8088)] - **buffer**: optimize for common encodings (Robert Nagy) [#54319](https://github.com/nodejs/node/pull/54319) +- \[[`76c37703be`](https://github.com/nodejs/node/commit/76c37703be)] - **buffer**: add JSDoc to blob bytes method (Roberto Simonini) [#54117](https://github.com/nodejs/node/pull/54117) +- \[[`3012d31404`](https://github.com/nodejs/node/commit/3012d31404)] - **buffer**: use faster integer argument check (Robert Nagy) [#54089](https://github.com/nodejs/node/pull/54089) +- \[[`3505782801`](https://github.com/nodejs/node/commit/3505782801)] - **buffer**: make indexOf(byte) faster (Tobias Nießen) [#53455](https://github.com/nodejs/node/pull/53455) +- \[[`d285fc1f68`](https://github.com/nodejs/node/commit/d285fc1f68)] - **build**: upgrade clang-format to v18 (Aviv Keller) [#53957](https://github.com/nodejs/node/pull/53957) +- \[[`d288ec3b0a`](https://github.com/nodejs/node/commit/d288ec3b0a)] - **build**: fix conflicting V8 object print flags (Daeyeon Jeong) [#54785](https://github.com/nodejs/node/pull/54785) +- \[[`e862eecac9`](https://github.com/nodejs/node/commit/e862eecac9)] - **build**: do not build with code cache for core coverage collection (Joyee Cheung) [#54633](https://github.com/nodejs/node/pull/54633) +- \[[`f7a606eb96`](https://github.com/nodejs/node/commit/f7a606eb96)] - **build**: turn off `-Wrestrict` (Richard Lau) [#54737](https://github.com/nodejs/node/pull/54737) +- \[[`71ca2665e4`](https://github.com/nodejs/node/commit/71ca2665e4)] - **build**: reclaim disk space on macOS GHA runner (jakecastelli) [#54658](https://github.com/nodejs/node/pull/54658) +- \[[`82d8051c39`](https://github.com/nodejs/node/commit/82d8051c39)] - **build**: don't clean obj.target directory if it doesn't exist (Joyee Cheung) [#54337](https://github.com/nodejs/node/pull/54337) +- \[[`6e550b1f26`](https://github.com/nodejs/node/commit/6e550b1f26)] - **build**: update `ruff` to `0.5.2` (Aviv Keller) [#53909](https://github.com/nodejs/node/pull/53909) +- \[[`e2ea7b26d7`](https://github.com/nodejs/node/commit/e2ea7b26d7)] - **build**: fix ./configure --help format error (Zhenwei Jin) [#53066](https://github.com/nodejs/node/pull/53066) +- \[[`eb2402d569`](https://github.com/nodejs/node/commit/eb2402d569)] - **build**: enable building with shared uvwasi lib (Pooja D P) [#43987](https://github.com/nodejs/node/pull/43987) +- \[[`45732314d4`](https://github.com/nodejs/node/commit/45732314d4)] - **build**: sync V8 warning cflags with BUILD.gn (Michaël Zasso) [#52873](https://github.com/nodejs/node/pull/52873) +- \[[`6e0a2bb54c`](https://github.com/nodejs/node/commit/6e0a2bb54c)] - **build**: harmonize Clang checks (Michaël Zasso) [#52873](https://github.com/nodejs/node/pull/52873) +- \[[`3f78d4eb28`](https://github.com/nodejs/node/commit/3f78d4eb28)] - **cli**: add `--expose-gc` flag available to `NODE_OPTIONS` (Juan José) [#53078](https://github.com/nodejs/node/pull/53078) +- \[[`a110409b2a`](https://github.com/nodejs/node/commit/a110409b2a)] - **console**: use validateOneOf for colorMode validation (HEESEUNG) [#54245](https://github.com/nodejs/node/pull/54245) +- \[[`231ab788ea`](https://github.com/nodejs/node/commit/231ab788ea)] - **crypto**: reject dh,x25519,x448 in {Sign,Verify}Final (Huáng Jùnliàng) [#53774](https://github.com/nodejs/node/pull/53774) +- \[[`a5984e4570`](https://github.com/nodejs/node/commit/a5984e4570)] - **crypto**: return a clearer error when loading an unsupported pkcs12 (Tim Perry) [#54485](https://github.com/nodejs/node/pull/54485) +- \[[`f287cd77bd`](https://github.com/nodejs/node/commit/f287cd77bd)] - **crypto**: remove unused `kHashTypes` internal (Antoine du Hamel) [#54627](https://github.com/nodejs/node/pull/54627) +- \[[`1fc904f8c4`](https://github.com/nodejs/node/commit/1fc904f8c4)] - **deps**: update cjs-module-lexer to 1.4.1 (Node.js GitHub Bot) [#54846](https://github.com/nodejs/node/pull/54846) +- \[[`95b55c39b1`](https://github.com/nodejs/node/commit/95b55c39b1)] - **deps**: update simdutf to 5.5.0 (Node.js GitHub Bot) [#54434](https://github.com/nodejs/node/pull/54434) +- \[[`cf6ded5dd3`](https://github.com/nodejs/node/commit/cf6ded5dd3)] - **deps**: update cjs-module-lexer to 1.4.0 (Node.js GitHub Bot) [#54713](https://github.com/nodejs/node/pull/54713) +- \[[`7f8edce3f1`](https://github.com/nodejs/node/commit/7f8edce3f1)] - **deps**: update c-ares to v1.33.1 (Node.js GitHub Bot) [#54549](https://github.com/nodejs/node/pull/54549) +- \[[`9a4a7b7ecc`](https://github.com/nodejs/node/commit/9a4a7b7ecc)] - **deps**: update undici to 6.19.8 (Node.js GitHub Bot) [#54456](https://github.com/nodejs/node/pull/54456) +- \[[`87ca1d7fee`](https://github.com/nodejs/node/commit/87ca1d7fee)] - **deps**: update simdutf to 5.3.4 (Node.js GitHub Bot) [#54312](https://github.com/nodejs/node/pull/54312) +- \[[`d3a743f182`](https://github.com/nodejs/node/commit/d3a743f182)] - **deps**: update zlib to 1.3.0.1-motley-71660e1 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`926981aa9f`](https://github.com/nodejs/node/commit/926981aa9f)] - **deps**: update zlib to 1.3.0.1-motley-c2469fd (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`654c8d1fdc`](https://github.com/nodejs/node/commit/654c8d1fdc)] - **deps**: update zlib to 1.3.0.1-motley-68e57e6 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`2477e79172`](https://github.com/nodejs/node/commit/2477e79172)] - **deps**: update zlib to 1.3.0.1-motley-8b7eff8 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`3d8113faf5`](https://github.com/nodejs/node/commit/3d8113faf5)] - **deps**: update zlib to 1.3.0.1-motley-e432200 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`ac294e3db4`](https://github.com/nodejs/node/commit/ac294e3db4)] - **deps**: update zlib to 1.3.0.1-motley-887bb57 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`239588b968`](https://github.com/nodejs/node/commit/239588b968)] - **deps**: update c-ares to v1.33.0 (Node.js GitHub Bot) [#54198](https://github.com/nodejs/node/pull/54198) +- \[[`6e7de37ed3`](https://github.com/nodejs/node/commit/6e7de37ed3)] - **deps**: update undici to 6.19.7 (Node.js GitHub Bot) [#54286](https://github.com/nodejs/node/pull/54286) +- \[[`38aa9d6ea9`](https://github.com/nodejs/node/commit/38aa9d6ea9)] - **deps**: update acorn to 8.12.1 (Node.js GitHub Bot) [#53465](https://github.com/nodejs/node/pull/53465) +- \[[`d30145f663`](https://github.com/nodejs/node/commit/d30145f663)] - **deps**: update undici to 6.19.5 (Node.js GitHub Bot) [#54076](https://github.com/nodejs/node/pull/54076) +- \[[`c169d9c12b`](https://github.com/nodejs/node/commit/c169d9c12b)] - **deps**: update simdutf to 5.3.1 (Node.js GitHub Bot) [#54196](https://github.com/nodejs/node/pull/54196) +- \[[`92f3447957`](https://github.com/nodejs/node/commit/92f3447957)] - **doc**: add missing EventSource docs to globals (Matthew Aitken) [#55022](https://github.com/nodejs/node/pull/55022) +- \[[`2879ce9681`](https://github.com/nodejs/node/commit/2879ce9681)] - **doc**: fix broken Android building link (Niklas Wenzel) [#54922](https://github.com/nodejs/node/pull/54922) +- \[[`096623b59a`](https://github.com/nodejs/node/commit/096623b59a)] - **doc**: add support link for aduh95 (Antoine du Hamel) [#54866](https://github.com/nodejs/node/pull/54866) +- \[[`1dfd238781`](https://github.com/nodejs/node/commit/1dfd238781)] - **doc**: run license-builder (github-actions\[bot]) [#54854](https://github.com/nodejs/node/pull/54854) +- \[[`a6c748fffb`](https://github.com/nodejs/node/commit/a6c748fffb)] - **doc**: experimental flag for global accessible APIs (Chengzhong Wu) [#54330](https://github.com/nodejs/node/pull/54330) +- \[[`d48a22fa14`](https://github.com/nodejs/node/commit/d48a22fa14)] - **doc**: add `ERR_INVALID_ADDRESS` to `errors.md` (Aviv Keller) [#54661](https://github.com/nodejs/node/pull/54661) +- \[[`4a840cecfa`](https://github.com/nodejs/node/commit/4a840cecfa)] - **doc**: add support link for mcollina (Matteo Collina) [#54786](https://github.com/nodejs/node/pull/54786) +- \[[`ec22d86512`](https://github.com/nodejs/node/commit/ec22d86512)] - **doc**: mark `--conditions` CLI flag as stable (Guy Bedford) [#54209](https://github.com/nodejs/node/pull/54209) +- \[[`77c702ca07`](https://github.com/nodejs/node/commit/77c702ca07)] - **doc**: fix typo in recognizing-contributors (Tobias Nießen) [#54822](https://github.com/nodejs/node/pull/54822) +- \[[`62953ef9fb`](https://github.com/nodejs/node/commit/62953ef9fb)] - **doc**: clarify `--max-old-space-size` and `--max-semi-space-size` units (Alexandre ABRIOUX) [#54477](https://github.com/nodejs/node/pull/54477) +- \[[`e2bab0f2b2`](https://github.com/nodejs/node/commit/e2bab0f2b2)] - **doc**: replace --allow-fs-read by --allow-fs-write in related section (M1CK431) [#54427](https://github.com/nodejs/node/pull/54427) +- \[[`9cbfd5b33a`](https://github.com/nodejs/node/commit/9cbfd5b33a)] - **doc**: add support link for marco-ippolito (Marco Ippolito) [#54789](https://github.com/nodejs/node/pull/54789) +- \[[`53167b29ef`](https://github.com/nodejs/node/commit/53167b29ef)] - **doc**: fix typo (Michael Dawson) [#54640](https://github.com/nodejs/node/pull/54640) +- \[[`87f78a35f7`](https://github.com/nodejs/node/commit/87f78a35f7)] - **doc**: fix webcrypto.md AES-GCM backticks (Filip Skokan) [#54621](https://github.com/nodejs/node/pull/54621) +- \[[`7c83c15221`](https://github.com/nodejs/node/commit/7c83c15221)] - **doc**: add documentation about os.tmpdir() overrides (Joyee Cheung) [#54613](https://github.com/nodejs/node/pull/54613) +- \[[`4bfd832d70`](https://github.com/nodejs/node/commit/4bfd832d70)] - **doc**: add support me link for anonrig (Yagiz Nizipli) [#54611](https://github.com/nodejs/node/pull/54611) +- \[[`22a103e5ec`](https://github.com/nodejs/node/commit/22a103e5ec)] - **doc**: add alert on REPL from TCP socket (Rafael Gonzaga) [#54594](https://github.com/nodejs/node/pull/54594) +- \[[`b6374c24e1`](https://github.com/nodejs/node/commit/b6374c24e1)] - **doc**: fix typo in styleText description (Rafael Gonzaga) [#54616](https://github.com/nodejs/node/pull/54616) +- \[[`2f5b98ee1f`](https://github.com/nodejs/node/commit/2f5b98ee1f)] - **doc**: add getHeapStatistics() property descriptions (Benji Marinacci) [#54584](https://github.com/nodejs/node/pull/54584) +- \[[`482302b99b`](https://github.com/nodejs/node/commit/482302b99b)] - **doc**: fix information about including coverage files (Aviv Keller) [#54527](https://github.com/nodejs/node/pull/54527) +- \[[`b3708e7df4`](https://github.com/nodejs/node/commit/b3708e7df4)] - **doc**: support collaborators - talk amplification (Michael Dawson) [#54508](https://github.com/nodejs/node/pull/54508) +- \[[`c86fe23012`](https://github.com/nodejs/node/commit/c86fe23012)] - **doc**: add note about shasum generation failure (Marco Ippolito) [#54487](https://github.com/nodejs/node/pull/54487) +- \[[`d53e6cf755`](https://github.com/nodejs/node/commit/d53e6cf755)] - **doc**: fix capitalization in module.md (shallow-beach) [#54488](https://github.com/nodejs/node/pull/54488) +- \[[`cdc6713f18`](https://github.com/nodejs/node/commit/cdc6713f18)] - **doc**: add esm examples to node:https (Alfredo González) [#54399](https://github.com/nodejs/node/pull/54399) +- \[[`1ac1fe4e65`](https://github.com/nodejs/node/commit/1ac1fe4e65)] - **doc**: fix error description of the max header size (Egawa Ryo) [#54125](https://github.com/nodejs/node/pull/54125) +- \[[`244542b720`](https://github.com/nodejs/node/commit/244542b720)] - **doc**: add git node security --cleanup (Rafael Gonzaga) [#54381](https://github.com/nodejs/node/pull/54381) +- \[[`69fb71f54c`](https://github.com/nodejs/node/commit/69fb71f54c)] - **doc**: add note on weakness of permission model (Tobias Nießen) [#54268](https://github.com/nodejs/node/pull/54268) +- \[[`83b2cb908b`](https://github.com/nodejs/node/commit/83b2cb908b)] - **doc**: add versions when `--watch-preserve-output` was added (Théo LUDWIG) [#54328](https://github.com/nodejs/node/pull/54328) +- \[[`460fb49483`](https://github.com/nodejs/node/commit/460fb49483)] - **doc**: replace v19 mention in Current release (Rafael Gonzaga) [#54361](https://github.com/nodejs/node/pull/54361) +- \[[`994b46a160`](https://github.com/nodejs/node/commit/994b46a160)] - **doc**: correct peformance entry types (Jason Zhang) [#54263](https://github.com/nodejs/node/pull/54263) +- \[[`f142e668cb`](https://github.com/nodejs/node/commit/f142e668cb)] - **doc**: fix typo in method name in the sea doc (Eliyah Sundström) [#54027](https://github.com/nodejs/node/pull/54027) +- \[[`9529a30dba`](https://github.com/nodejs/node/commit/9529a30dba)] - **doc**: mark process.nextTick legacy (Marco Ippolito) [#51280](https://github.com/nodejs/node/pull/51280) +- \[[`7e25fabb91`](https://github.com/nodejs/node/commit/7e25fabb91)] - **doc**: add esm examples to node:http2 (Alfredo González) [#54292](https://github.com/nodejs/node/pull/54292) +- \[[`6a4f05e384`](https://github.com/nodejs/node/commit/6a4f05e384)] - **doc**: explicitly mention node:fs module restriction (Rafael Gonzaga) [#54269](https://github.com/nodejs/node/pull/54269) +- \[[`53f5c54997`](https://github.com/nodejs/node/commit/53f5c54997)] - **doc**: warn for windows build bug (Jason Zhang) [#54217](https://github.com/nodejs/node/pull/54217) +- \[[`07bde054f3`](https://github.com/nodejs/node/commit/07bde054f3)] - **doc**: make some parameters optional in `tracingChannel.traceCallback` (Deokjin Kim) [#54068](https://github.com/nodejs/node/pull/54068) +- \[[`62bf03b5f1`](https://github.com/nodejs/node/commit/62bf03b5f1)] - **doc**: add esm examples to node:dns (Alfredo González) [#54172](https://github.com/nodejs/node/pull/54172) +- \[[`fb2b19184b`](https://github.com/nodejs/node/commit/fb2b19184b)] - **doc**: add KevinEady as a triager (Chengzhong Wu) [#54179](https://github.com/nodejs/node/pull/54179) +- \[[`24976bfba0`](https://github.com/nodejs/node/commit/24976bfba0)] - **doc**: add esm examples to node:console (Alfredo González) [#54108](https://github.com/nodejs/node/pull/54108) +- \[[`4e7edc40f7`](https://github.com/nodejs/node/commit/4e7edc40f7)] - **doc**: fix sea assets example (Sadzurami) [#54192](https://github.com/nodejs/node/pull/54192) +- \[[`322b5d91e1`](https://github.com/nodejs/node/commit/322b5d91e1)] - **doc**: add links to security steward companies (Aviv Keller) [#52981](https://github.com/nodejs/node/pull/52981) +- \[[`6ab271510e`](https://github.com/nodejs/node/commit/6ab271510e)] - **doc**: move `onread` option from `socket.connect()` to `new net.socket()` (sendoru) [#54194](https://github.com/nodejs/node/pull/54194) +- \[[`39c30ea08f`](https://github.com/nodejs/node/commit/39c30ea08f)] - **doc**: move release key for Myles Borins (Richard Lau) [#54059](https://github.com/nodejs/node/pull/54059) +- \[[`e9fc54804a`](https://github.com/nodejs/node/commit/e9fc54804a)] - **doc**: refresh instructions for building node from source (Liran Tal) [#53768](https://github.com/nodejs/node/pull/53768) +- \[[`f131dc625a`](https://github.com/nodejs/node/commit/f131dc625a)] - **doc**: add documentation for blob.bytes() method (jaexxin) [#54114](https://github.com/nodejs/node/pull/54114) +- \[[`8d41bb900b`](https://github.com/nodejs/node/commit/8d41bb900b)] - **doc**: add missing new lines to custom test reporter examples (Eddie Abbondanzio) [#54152](https://github.com/nodejs/node/pull/54152) +- \[[`2acaeaba77`](https://github.com/nodejs/node/commit/2acaeaba77)] - **doc**: update list of Triagers on the `README.md` (Antoine du Hamel) [#54138](https://github.com/nodejs/node/pull/54138) +- \[[`fff8eb2792`](https://github.com/nodejs/node/commit/fff8eb2792)] - **doc**: expand troubleshooting section (Liran Tal) [#53808](https://github.com/nodejs/node/pull/53808) +- \[[`402121520f`](https://github.com/nodejs/node/commit/402121520f)] - **doc**: clarify `useCodeCache` setting for cross-platform SEA generation (Yelim Koo) [#53994](https://github.com/nodejs/node/pull/53994) +- \[[`272484b8b2`](https://github.com/nodejs/node/commit/272484b8b2)] - **doc**: test for cli options (Aras Abbasi) [#51623](https://github.com/nodejs/node/pull/51623) +- \[[`c4d0ca4710`](https://github.com/nodejs/node/commit/c4d0ca4710)] - **doc, build**: fixup build docs (Aviv Keller) [#54899](https://github.com/nodejs/node/pull/54899) +- \[[`2e3e17748b`](https://github.com/nodejs/node/commit/2e3e17748b)] - **doc, child_process**: add esm snippets (Aviv Keller) [#53616](https://github.com/nodejs/node/pull/53616) +- \[[`c40b4b4f27`](https://github.com/nodejs/node/commit/c40b4b4f27)] - **doc, meta**: fix broken link in `onboarding.md` (Aviv Keller) [#54886](https://github.com/nodejs/node/pull/54886) +- \[[`beff587b94`](https://github.com/nodejs/node/commit/beff587b94)] - **doc, meta**: add missing `,` to `BUILDING.md` (Aviv Keller) [#54409](https://github.com/nodejs/node/pull/54409) +- \[[`c114585430`](https://github.com/nodejs/node/commit/c114585430)] - **doc, meta**: replace command with link to keys (Aviv Keller) [#53745](https://github.com/nodejs/node/pull/53745) +- \[[`0843077a99`](https://github.com/nodejs/node/commit/0843077a99)] - **doc, test**: simplify test README table (Aviv Keller) [#53971](https://github.com/nodejs/node/pull/53971) +- \[[`2df7bc0e32`](https://github.com/nodejs/node/commit/2df7bc0e32)] - **doc,tools**: enforce use of `node:` prefix (Antoine du Hamel) [#53950](https://github.com/nodejs/node/pull/53950) +- \[[`0dd4639391`](https://github.com/nodejs/node/commit/0dd4639391)] - **esm**: fix support for `URL` instances in `import.meta.resolve` (Antoine du Hamel) [#54690](https://github.com/nodejs/node/pull/54690) +- \[[`f0c55e206d`](https://github.com/nodejs/node/commit/f0c55e206d)] - **fs**: refactor rimraf to avoid using primordials (Yagiz Nizipli) [#54834](https://github.com/nodejs/node/pull/54834) +- \[[`f568384bbd`](https://github.com/nodejs/node/commit/f568384bbd)] - **fs**: refactor handleTimestampsAndMode to remove redundant call (HEESEUNG) [#54369](https://github.com/nodejs/node/pull/54369) +- \[[`2fb7cc9715`](https://github.com/nodejs/node/commit/2fb7cc9715)] - **fs**: fix typings (Yagiz Nizipli) [#53626](https://github.com/nodejs/node/pull/53626) +- \[[`596940cfa0`](https://github.com/nodejs/node/commit/596940cfa0)] - **http**: reduce likelihood of race conditions on keep-alive timeout (jazelly) [#54863](https://github.com/nodejs/node/pull/54863) +- \[[`6e13a7ba02`](https://github.com/nodejs/node/commit/6e13a7ba02)] - **http**: remove prototype primordials (Antoine du Hamel) [#53698](https://github.com/nodejs/node/pull/53698) +- \[[`99f96eb3f7`](https://github.com/nodejs/node/commit/99f96eb3f7)] - **http2**: remove prototype primordials (Antoine du Hamel) [#53696](https://github.com/nodejs/node/pull/53696) +- \[[`41f5eacc1a`](https://github.com/nodejs/node/commit/41f5eacc1a)] - **https**: only use default ALPNProtocols when appropriate (Brian White) [#54411](https://github.com/nodejs/node/pull/54411) +- \[[`59a39520e1`](https://github.com/nodejs/node/commit/59a39520e1)] - **(SEMVER-MINOR)** **inspector**: support `Network.loadingFailed` event (Kohei Ueno) [#54246](https://github.com/nodejs/node/pull/54246) +- \[[`d1007fb1a9`](https://github.com/nodejs/node/commit/d1007fb1a9)] - **inspector**: provide detailed info to fix DevTools frontend errors (Kohei Ueno) [#54156](https://github.com/nodejs/node/pull/54156) +- \[[`3b93507949`](https://github.com/nodejs/node/commit/3b93507949)] - **(SEMVER-MINOR)** **inspector**: add initial support for network inspection (Kohei Ueno) [#53593](https://github.com/nodejs/node/pull/53593) +- \[[`fc37b801c8`](https://github.com/nodejs/node/commit/fc37b801c8)] - **lib**: remove unnecessary async (jakecastelli) [#54829](https://github.com/nodejs/node/pull/54829) +- \[[`d86f24787b`](https://github.com/nodejs/node/commit/d86f24787b)] - **lib**: make WeakRef safe in abort_controller (jazelly) [#54791](https://github.com/nodejs/node/pull/54791) +- \[[`77c59224e5`](https://github.com/nodejs/node/commit/77c59224e5)] - **lib**: add note about removing `node:sys` module (Rafael Gonzaga) [#54743](https://github.com/nodejs/node/pull/54743) +- \[[`b8c06dce02`](https://github.com/nodejs/node/commit/b8c06dce02)] - **lib**: ensure no holey array in fixed_queue (Jason Zhang) [#54537](https://github.com/nodejs/node/pull/54537) +- \[[`b85c8ce1fc`](https://github.com/nodejs/node/commit/b85c8ce1fc)] - **lib**: refactor SubtleCrypto experimental warnings (Filip Skokan) [#54620](https://github.com/nodejs/node/pull/54620) +- \[[`e84812c1b5`](https://github.com/nodejs/node/commit/e84812c1b5)] - **lib**: respect terminal capabilities on styleText (Rafael Gonzaga) [#54389](https://github.com/nodejs/node/pull/54389) +- \[[`c004abaf17`](https://github.com/nodejs/node/commit/c004abaf17)] - **lib**: replace spread operator with primordials function (YoonSoo_Shin) [#54053](https://github.com/nodejs/node/pull/54053) +- \[[`b79aeabc4d`](https://github.com/nodejs/node/commit/b79aeabc4d)] - **lib**: avoid for of loop and remove unnecessary variable in zlib (YoonSoo_Shin) [#54258](https://github.com/nodejs/node/pull/54258) +- \[[`f4085363c6`](https://github.com/nodejs/node/commit/f4085363c6)] - **lib**: fix unhandled errors in webstream adapters (Fedor Indutny) [#54206](https://github.com/nodejs/node/pull/54206) +- \[[`1ad857e748`](https://github.com/nodejs/node/commit/1ad857e748)] - **lib**: fix typos in comments within internal/streams (YoonSoo_Shin) [#54093](https://github.com/nodejs/node/pull/54093) +- \[[`02b36cbd2d`](https://github.com/nodejs/node/commit/02b36cbd2d)] - **(SEMVER-MINOR)** **lib**: add EventSource Client (Aras Abbasi) [#51575](https://github.com/nodejs/node/pull/51575) +- \[[`afbf2c0530`](https://github.com/nodejs/node/commit/afbf2c0530)] - **lib,permission**: support Buffer to permission.has (Rafael Gonzaga) [#54104](https://github.com/nodejs/node/pull/54104) +- \[[`54af47395d`](https://github.com/nodejs/node/commit/54af47395d)] - **meta**: bump peter-evans/create-pull-request from 6.1.0 to 7.0.1 (dependabot\[bot]) [#54820](https://github.com/nodejs/node/pull/54820) +- \[[`a0c10f2ed9`](https://github.com/nodejs/node/commit/a0c10f2ed9)] - **meta**: add `Windows ARM64` to flaky-tests list (Aviv Keller) [#54693](https://github.com/nodejs/node/pull/54693) +- \[[`27b06880e1`](https://github.com/nodejs/node/commit/27b06880e1)] - **meta**: bump actions/setup-python from 5.1.1 to 5.2.0 (Rich Trott) [#54691](https://github.com/nodejs/node/pull/54691) +- \[[`8747af1037`](https://github.com/nodejs/node/commit/8747af1037)] - **meta**: update sccache to v0.8.1 (Aviv Keller) [#54720](https://github.com/nodejs/node/pull/54720) +- \[[`3f753d87a6`](https://github.com/nodejs/node/commit/3f753d87a6)] - **meta**: bump step-security/harden-runner from 2.9.0 to 2.9.1 (dependabot\[bot]) [#54704](https://github.com/nodejs/node/pull/54704) +- \[[`6f103ae25d`](https://github.com/nodejs/node/commit/6f103ae25d)] - **meta**: bump actions/upload-artifact from 4.3.4 to 4.4.0 (dependabot\[bot]) [#54703](https://github.com/nodejs/node/pull/54703) +- \[[`3e6a9bb04e`](https://github.com/nodejs/node/commit/3e6a9bb04e)] - **meta**: bump github/codeql-action from 3.25.15 to 3.26.6 (dependabot\[bot]) [#54702](https://github.com/nodejs/node/pull/54702) +- \[[`c666ebc4e4`](https://github.com/nodejs/node/commit/c666ebc4e4)] - **meta**: fix links in `SECURITY.md` (Aviv Keller) [#54696](https://github.com/nodejs/node/pull/54696) +- \[[`4d361b3bed`](https://github.com/nodejs/node/commit/4d361b3bed)] - **meta**: fix `contributing` codeowners (Aviv Keller) [#54641](https://github.com/nodejs/node/pull/54641) +- \[[`36931aa183`](https://github.com/nodejs/node/commit/36931aa183)] - **meta**: remind users to use a supported version in bug reports (Aviv Keller) [#54481](https://github.com/nodejs/node/pull/54481) +- \[[`cf283d9ca7`](https://github.com/nodejs/node/commit/cf283d9ca7)] - **meta**: run coverage-windows when `vcbuild.bat` updated (Aviv Keller) [#54412](https://github.com/nodejs/node/pull/54412) +- \[[`67ca397c9f`](https://github.com/nodejs/node/commit/67ca397c9f)] - **meta**: add test-permission-\* CODEOWNERS (Rafael Gonzaga) [#54267](https://github.com/nodejs/node/pull/54267) +- \[[`b61a2f5b79`](https://github.com/nodejs/node/commit/b61a2f5b79)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#54210](https://github.com/nodejs/node/pull/54210) +- \[[`dd8ab83667`](https://github.com/nodejs/node/commit/dd8ab83667)] - **meta**: add module label for the lib/internal/modules folder (Aviv Keller) [#52858](https://github.com/nodejs/node/pull/52858) +- \[[`db78978d17`](https://github.com/nodejs/node/commit/db78978d17)] - **meta**: bump `actions/upload-artifact` from 4.3.3 to 4.3.4 (dependabot\[bot]) [#54166](https://github.com/nodejs/node/pull/54166) +- \[[`ca808dd9e5`](https://github.com/nodejs/node/commit/ca808dd9e5)] - **meta**: bump `actions/download-artifact` from 4.1.7 to 4.1.8 (dependabot\[bot]) [#54167](https://github.com/nodejs/node/pull/54167) +- \[[`a35d980146`](https://github.com/nodejs/node/commit/a35d980146)] - **meta**: bump actions/setup-python from 5.1.0 to 5.1.1 (dependabot\[bot]) [#54165](https://github.com/nodejs/node/pull/54165) +- \[[`3a103c3a17`](https://github.com/nodejs/node/commit/3a103c3a17)] - **meta**: bump `step-security/harden-runner` from 2.8.1 to 2.9.0 (dependabot\[bot]) [#54169](https://github.com/nodejs/node/pull/54169) +- \[[`775ebbe0e8`](https://github.com/nodejs/node/commit/775ebbe0e8)] - **meta**: bump `actions/setup-node` from 4.0.2 to 4.0.3 (dependabot\[bot]) [#54170](https://github.com/nodejs/node/pull/54170) +- \[[`7d5dd6f1d1`](https://github.com/nodejs/node/commit/7d5dd6f1d1)] - **meta**: bump `github/codeql-action` from 3.25.11 to 3.25.15 (dependabot\[bot]) [#54168](https://github.com/nodejs/node/pull/54168) +- \[[`80dd38dde3`](https://github.com/nodejs/node/commit/80dd38dde3)] - **meta**: bump `ossf/scorecard-action` from 2.3.3 to 2.4.0 (dependabot\[bot]) [#54171](https://github.com/nodejs/node/pull/54171) +- \[[`90b632ee02`](https://github.com/nodejs/node/commit/90b632ee02)] - **module**: warn on detection in typeless package (Geoffrey Booth) [#52168](https://github.com/nodejs/node/pull/52168) +- \[[`3011927aab`](https://github.com/nodejs/node/commit/3011927aab)] - **node-api**: add external buffer creation benchmark (Chengzhong Wu) [#54877](https://github.com/nodejs/node/pull/54877) +- \[[`7611093e11`](https://github.com/nodejs/node/commit/7611093e11)] - **node-api**: add support for UTF-8 and Latin-1 property keys (Mert Can Altin) [#52984](https://github.com/nodejs/node/pull/52984) +- \[[`d65a8f377c`](https://github.com/nodejs/node/commit/d65a8f377c)] - **node-api**: remove RefBase and CallbackWrapper (Vladimir Morozov) [#53590](https://github.com/nodejs/node/pull/53590) +- \[[`309cb1cbd2`](https://github.com/nodejs/node/commit/309cb1cbd2)] - **path**: remove `StringPrototypeCharCodeAt` from `posix.extname` (Aviv Keller) [#54546](https://github.com/nodejs/node/pull/54546) +- \[[`2859b4ba9a`](https://github.com/nodejs/node/commit/2859b4ba9a)] - **path**: change `posix.join` to use array (Wiyeong Seo) [#54331](https://github.com/nodejs/node/pull/54331) +- \[[`c61cee2138`](https://github.com/nodejs/node/commit/c61cee2138)] - **path**: fix relative on Windows (Hüseyin Açacak) [#53991](https://github.com/nodejs/node/pull/53991) +- \[[`329be5cc35`](https://github.com/nodejs/node/commit/329be5cc35)] - **path**: use the correct name in `validateString` (Benjamin Pasero) [#53669](https://github.com/nodejs/node/pull/53669) +- \[[`a9837267cb`](https://github.com/nodejs/node/commit/a9837267cb)] - **repl**: avoid interpreting 'npm' as a command when errors are recoverable (Shima Ryuhei) [#54848](https://github.com/nodejs/node/pull/54848) +- \[[`d6a2317961`](https://github.com/nodejs/node/commit/d6a2317961)] - **repl**: doc-deprecate instantiating `node:repl` classes without `new` (Aviv Keller) [#54842](https://github.com/nodejs/node/pull/54842) +- \[[`7f09d983f3`](https://github.com/nodejs/node/commit/7f09d983f3)] - **sea**: don't set code cache flags when snapshot is used (Joyee Cheung) [#54120](https://github.com/nodejs/node/pull/54120) +- \[[`85542b094c`](https://github.com/nodejs/node/commit/85542b094c)] - **src**: add Cleanable class to Environment (Gabriel Schulhof) [#54880](https://github.com/nodejs/node/pull/54880) +- \[[`8422064127`](https://github.com/nodejs/node/commit/8422064127)] - **src**: remove redundant AESCipherMode (Tobias Nießen) [#54438](https://github.com/nodejs/node/pull/54438) +- \[[`342c32483a`](https://github.com/nodejs/node/commit/342c32483a)] - **src**: handle errors correctly in `permission.cc` (Michaël Zasso) [#54541](https://github.com/nodejs/node/pull/54541) +- \[[`90ff714699`](https://github.com/nodejs/node/commit/90ff714699)] - **src**: return `v8::Object` from error constructors (Michaël Zasso) [#54541](https://github.com/nodejs/node/pull/54541) +- \[[`872856cfcb`](https://github.com/nodejs/node/commit/872856cfcb)] - **src**: improve `buffer.transcode` performance (Yagiz Nizipli) [#54153](https://github.com/nodejs/node/pull/54153) +- \[[`91936ebd12`](https://github.com/nodejs/node/commit/91936ebd12)] - **src**: skip inspector wait in internal workers (Chengzhong Wu) [#54219](https://github.com/nodejs/node/pull/54219) +- \[[`9759049427`](https://github.com/nodejs/node/commit/9759049427)] - **src**: account for OpenSSL unexpected version (Shelley Vohr) [#54038](https://github.com/nodejs/node/pull/54038) +- \[[`87167fa248`](https://github.com/nodejs/node/commit/87167fa248)] - **src**: use `args.This()` instead of `Holder` (Michaël Zasso) [#53474](https://github.com/nodejs/node/pull/53474) +- \[[`b05c56e4be`](https://github.com/nodejs/node/commit/b05c56e4be)] - **src**: simplify `size() == 0` checks (Yagiz Nizipli) [#53440](https://github.com/nodejs/node/pull/53440) +- \[[`d53e53699c`](https://github.com/nodejs/node/commit/d53e53699c)] - **src**: fix execArgv in worker (theanarkh) [#53029](https://github.com/nodejs/node/pull/53029) +- \[[`21776a34b5`](https://github.com/nodejs/node/commit/21776a34b5)] - **src**: make sure pass the `argv` to worker threads (theanarkh) [#52827](https://github.com/nodejs/node/pull/52827) +- \[[`3aaae68ec8`](https://github.com/nodejs/node/commit/3aaae68ec8)] - **(SEMVER-MINOR)** **src,lib**: add performance.uvMetricsInfo (Rafael Gonzaga) [#54413](https://github.com/nodejs/node/pull/54413) +- \[[`ef1c0d7def`](https://github.com/nodejs/node/commit/ef1c0d7def)] - **src,permission**: handle process.chdir on pm (Rafael Gonzaga) [#53175](https://github.com/nodejs/node/pull/53175) +- \[[`0c32918eef`](https://github.com/nodejs/node/commit/0c32918eef)] - **stream**: change stream to use index instead of `for...of` (Wiyeong Seo) [#54474](https://github.com/nodejs/node/pull/54474) +- \[[`337cd412b5`](https://github.com/nodejs/node/commit/337cd412b5)] - **stream**: make checking pendingcb on WritableStream backward compatible (jakecastelli) [#54142](https://github.com/nodejs/node/pull/54142) +- \[[`713fc0c9eb`](https://github.com/nodejs/node/commit/713fc0c9eb)] - **stream**: throw TypeError when criteria fulfilled in getIterator (jakecastelli) [#53825](https://github.com/nodejs/node/pull/53825) +- \[[`9686153616`](https://github.com/nodejs/node/commit/9686153616)] - **stream**: fix util.inspect for compression/decompressionStream (Mert Can Altin) [#52283](https://github.com/nodejs/node/pull/52283) +- \[[`76110b0b43`](https://github.com/nodejs/node/commit/76110b0b43)] - **test**: adjust test-tls-junk-server for OpenSSL32 (Michael Dawson) [#54926](https://github.com/nodejs/node/pull/54926) +- \[[`4092889371`](https://github.com/nodejs/node/commit/4092889371)] - **test**: adjust tls test for OpenSSL32 (Michael Dawson) [#54909](https://github.com/nodejs/node/pull/54909) +- \[[`5d48543a16`](https://github.com/nodejs/node/commit/5d48543a16)] - **test**: fix test-http2-socket-close.js (Hüseyin Açacak) [#54900](https://github.com/nodejs/node/pull/54900) +- \[[`8048c2eaed`](https://github.com/nodejs/node/commit/8048c2eaed)] - **test**: improve test-internal-fs-syncwritestream (Sunghoon) [#54671](https://github.com/nodejs/node/pull/54671) +- \[[`597bc14c90`](https://github.com/nodejs/node/commit/597bc14c90)] - **test**: deflake test-dns (Luigi Pinca) [#54902](https://github.com/nodejs/node/pull/54902) +- \[[`a9fc8d9cfa`](https://github.com/nodejs/node/commit/a9fc8d9cfa)] - **test**: fix test test-tls-dhe for OpenSSL32 (Michael Dawson) [#54903](https://github.com/nodejs/node/pull/54903) +- \[[`1b3b4f4a9f`](https://github.com/nodejs/node/commit/1b3b4f4a9f)] - **test**: use correct file naming syntax for `util-parse-env` (Aviv Keller) [#53705](https://github.com/nodejs/node/pull/53705) +- \[[`9db46b5ea3`](https://github.com/nodejs/node/commit/9db46b5ea3)] - **test**: add missing await (Luigi Pinca) [#54828](https://github.com/nodejs/node/pull/54828) +- \[[`124f715679`](https://github.com/nodejs/node/commit/124f715679)] - **test**: move more url tests to `node:test` (Yagiz Nizipli) [#54636](https://github.com/nodejs/node/pull/54636) +- \[[`d2ec96150a`](https://github.com/nodejs/node/commit/d2ec96150a)] - **test**: strip color chars in `test-runner-run` (Giovanni Bucci) [#54552](https://github.com/nodejs/node/pull/54552) +- \[[`747d9ae72e`](https://github.com/nodejs/node/commit/747d9ae72e)] - **test**: deflake test-http2-misbehaving-multiplex (Luigi Pinca) [#54872](https://github.com/nodejs/node/pull/54872) +- \[[`7b7687eadc`](https://github.com/nodejs/node/commit/7b7687eadc)] - **test**: remove dead code in test-http2-misbehaving-multiplex (Luigi Pinca) [#54860](https://github.com/nodejs/node/pull/54860) +- \[[`60f5f5426d`](https://github.com/nodejs/node/commit/60f5f5426d)] - **test**: reduce test-esm-loader-hooks-inspect-wait flakiness (Luigi Pinca) [#54827](https://github.com/nodejs/node/pull/54827) +- \[[`f5e77385c5`](https://github.com/nodejs/node/commit/f5e77385c5)] - **test**: reduce the allocation size in test-worker-arraybuffer-zerofill (James M Snell) [#54839](https://github.com/nodejs/node/pull/54839) +- \[[`f26cf09d6b`](https://github.com/nodejs/node/commit/f26cf09d6b)] - **test**: fix test-tls-client-mindhsize for OpenSSL32 (Michael Dawson) [#54739](https://github.com/nodejs/node/pull/54739) +- \[[`c6f9afec94`](https://github.com/nodejs/node/commit/c6f9afec94)] - **test**: use platform timeout (jakecastelli) [#54591](https://github.com/nodejs/node/pull/54591) +- \[[`8f49b7c3ee`](https://github.com/nodejs/node/commit/8f49b7c3ee)] - **test**: reduce fs calls in test-fs-existssync-false (Yagiz Nizipli) [#54815](https://github.com/nodejs/node/pull/54815) +- \[[`e2c69c9844`](https://github.com/nodejs/node/commit/e2c69c9844)] - **test**: move test-http-server-request-timeouts-mixed (James M Snell) [#54841](https://github.com/nodejs/node/pull/54841) +- \[[`f7af8ca021`](https://github.com/nodejs/node/commit/f7af8ca021)] - **test**: fix volatile for CauseSegfault with clang (Ivan Trubach) [#54325](https://github.com/nodejs/node/pull/54325) +- \[[`d1bae5ede5`](https://github.com/nodejs/node/commit/d1bae5ede5)] - **test**: set `test-worker-arraybuffer-zerofill` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`b5b5cc811f`](https://github.com/nodejs/node/commit/b5b5cc811f)] - **test**: set `test-http-server-request-timeouts-mixed` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`9808feecac`](https://github.com/nodejs/node/commit/9808feecac)] - **test**: set `test-single-executable-application-empty` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`97d41c62e3`](https://github.com/nodejs/node/commit/97d41c62e3)] - **test**: set `test-macos-app-sandbox` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`57ae68001c`](https://github.com/nodejs/node/commit/57ae68001c)] - **test**: set `test-fs-utimes` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`38afc4da03`](https://github.com/nodejs/node/commit/38afc4da03)] - **test**: set `test-runner-run-watch` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`68e19748a6`](https://github.com/nodejs/node/commit/68e19748a6)] - **test**: set `test-writewrap` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`e8cb03d530`](https://github.com/nodejs/node/commit/e8cb03d530)] - **test**: set `test-async-context-frame` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`3a56517220`](https://github.com/nodejs/node/commit/3a56517220)] - **test**: set `test-esm-loader-hooks-inspect-wait` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`c98cd1227d`](https://github.com/nodejs/node/commit/c98cd1227d)] - **test**: set `test-http2-large-file` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`16176a6323`](https://github.com/nodejs/node/commit/16176a6323)] - **test**: set `test-runner-watch-mode-complex` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`eed0537533`](https://github.com/nodejs/node/commit/eed0537533)] - **test**: set `test-performance-function` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`d0f208d2e9`](https://github.com/nodejs/node/commit/d0f208d2e9)] - **test**: set `test-debugger-heap-profiler` as flaky (Yagiz Nizipli) [#54802](https://github.com/nodejs/node/pull/54802) +- \[[`68891a6363`](https://github.com/nodejs/node/commit/68891a6363)] - **test**: fix `test-process-load-env-file` when path contains `'` (Antoine du Hamel) [#54511](https://github.com/nodejs/node/pull/54511) +- \[[`4f82673139`](https://github.com/nodejs/node/commit/4f82673139)] - **test**: refactor fs-watch tests due to macOS issue (Santiago Gimeno) [#54498](https://github.com/nodejs/node/pull/54498) +- \[[`3606c53fdc`](https://github.com/nodejs/node/commit/3606c53fdc)] - **test**: refactor `test-esm-type-field-errors` (Giovanni Bucci) [#54368](https://github.com/nodejs/node/pull/54368) +- \[[`99566aea97`](https://github.com/nodejs/node/commit/99566aea97)] - **test**: improve output of child process utilities (Joyee Cheung) [#54622](https://github.com/nodejs/node/pull/54622) +- \[[`ed2377c1a1`](https://github.com/nodejs/node/commit/ed2377c1a1)] - **test**: fix test-tls-client-auth test for OpenSSL32 (Michael Dawson) [#54610](https://github.com/nodejs/node/pull/54610) +- \[[`d2a7e45946`](https://github.com/nodejs/node/commit/d2a7e45946)] - **test**: update TLS test for OpenSSL 3.2 (Richard Lau) [#54612](https://github.com/nodejs/node/pull/54612) +- \[[`a50bbca78a`](https://github.com/nodejs/node/commit/a50bbca78a)] - **test**: increase key size for ca2-cert.pem (Michael Dawson) [#54599](https://github.com/nodejs/node/pull/54599) +- \[[`d7ac3262de`](https://github.com/nodejs/node/commit/d7ac3262de)] - **test**: update test-assert-typedarray-deepequal to use node:test (James M Snell) [#54585](https://github.com/nodejs/node/pull/54585) +- \[[`916a73cd8f`](https://github.com/nodejs/node/commit/916a73cd8f)] - **test**: update test-assert to use node:test (James M Snell) [#54585](https://github.com/nodejs/node/pull/54585) +- \[[`10bea1cef5`](https://github.com/nodejs/node/commit/10bea1cef5)] - **test**: merge ongc and gcutil into gc.js (tannal) [#54355](https://github.com/nodejs/node/pull/54355) +- \[[`f145982436`](https://github.com/nodejs/node/commit/f145982436)] - **test**: move a couple of tests over to using node:test (James M Snell) [#54582](https://github.com/nodejs/node/pull/54582) +- \[[`229e102d20`](https://github.com/nodejs/node/commit/229e102d20)] - **test**: fix embedding test for Windows (Vladimir Morozov) [#53659](https://github.com/nodejs/node/pull/53659) +- \[[`fcf82adef0`](https://github.com/nodejs/node/commit/fcf82adef0)] - **test**: use relative paths in test-cli-permission tests (sendoru) [#54188](https://github.com/nodejs/node/pull/54188) +- \[[`4c219b0235`](https://github.com/nodejs/node/commit/4c219b0235)] - **test**: fix timeout not being cleared (Isaac-yz-Liu) [#54242](https://github.com/nodejs/node/pull/54242) +- \[[`e446517a41`](https://github.com/nodejs/node/commit/e446517a41)] - **test**: refactor `test-runner-module-mocking` (Antoine du Hamel) [#54233](https://github.com/nodejs/node/pull/54233) +- \[[`782a6a05ef`](https://github.com/nodejs/node/commit/782a6a05ef)] - **test**: use assert.{s,deepS}trictEqual() (Luigi Pinca) [#54208](https://github.com/nodejs/node/pull/54208) +- \[[`d478db7adc`](https://github.com/nodejs/node/commit/d478db7adc)] - **test**: set test-structuredclone-jstransferable non-flaky (Stefan Stojanovic) [#54115](https://github.com/nodejs/node/pull/54115) +- \[[`c8587ec90d`](https://github.com/nodejs/node/commit/c8587ec90d)] - **test**: update wpt test for streams (devstone) [#54129](https://github.com/nodejs/node/pull/54129) +- \[[`dbc26c2971`](https://github.com/nodejs/node/commit/dbc26c2971)] - **test**: fix typo in test (Sonny) [#54137](https://github.com/nodejs/node/pull/54137) +- \[[`17b7ec4df3`](https://github.com/nodejs/node/commit/17b7ec4df3)] - **test**: add initial pull delay and prototype pollution prevention tests (Sonny) [#54061](https://github.com/nodejs/node/pull/54061) +- \[[`931ff4367a`](https://github.com/nodejs/node/commit/931ff4367a)] - **test**: update wpt test (Mert Can Altin) [#53814](https://github.com/nodejs/node/pull/53814) +- \[[`1c1bd7ce52`](https://github.com/nodejs/node/commit/1c1bd7ce52)] - **test**: update `url` web-platform tests (Yagiz Nizipli) [#53472](https://github.com/nodejs/node/pull/53472) +- \[[`b048eaea5c`](https://github.com/nodejs/node/commit/b048eaea5c)] - **test_runner**: reimplement `assert.ok` to allow stack parsing (Aviv Keller) [#54776](https://github.com/nodejs/node/pull/54776) +- \[[`c981e61155`](https://github.com/nodejs/node/commit/c981e61155)] - **test_runner**: improve code coverage cleanup (Colin Ihrig) [#54856](https://github.com/nodejs/node/pull/54856) +- \[[`4f421b37da`](https://github.com/nodejs/node/commit/4f421b37da)] - **test_runner**: use validateStringArray for `timers.enable()` (Deokjin Kim) [#49534](https://github.com/nodejs/node/pull/49534) +- \[[`27da75ae22`](https://github.com/nodejs/node/commit/27da75ae22)] - **test_runner**: do not expose internal loader (Antoine du Hamel) [#54106](https://github.com/nodejs/node/pull/54106) +- \[[`56cbc80d28`](https://github.com/nodejs/node/commit/56cbc80d28)] - **test_runner**: make mock_loader not confuse CJS and ESM resolution (Sung Ye In) [#53846](https://github.com/nodejs/node/pull/53846) +- \[[`8fd951f7c7`](https://github.com/nodejs/node/commit/8fd951f7c7)] - **test_runner**: remove outdated comment (Colin Ihrig) [#54146](https://github.com/nodejs/node/pull/54146) +- \[[`65b6fec3ba`](https://github.com/nodejs/node/commit/65b6fec3ba)] - **test_runner**: run after hooks even if test is aborted (Colin Ihrig) [#54151](https://github.com/nodejs/node/pull/54151) +- \[[`c0b4c8284c`](https://github.com/nodejs/node/commit/c0b4c8284c)] - **test_runner**: added colors to dot reporter (Giovanni) [#53450](https://github.com/nodejs/node/pull/53450) +- \[[`3000e5df91`](https://github.com/nodejs/node/commit/3000e5df91)] - **test_runner**: support module detection in module mocks (Geoffrey Booth) [#53642](https://github.com/nodejs/node/pull/53642) +- \[[`f789f4c92d`](https://github.com/nodejs/node/commit/f789f4c92d)] - **(SEMVER-MINOR)** **test_runner**: support module mocking (Colin Ihrig) [#52848](https://github.com/nodejs/node/pull/52848) +- \[[`82d1c36f51`](https://github.com/nodejs/node/commit/82d1c36f51)] - **test_runner**: display failed test stack trace with dot reporter (Mihir Bhansali) [#52655](https://github.com/nodejs/node/pull/52655) +- \[[`5358601e31`](https://github.com/nodejs/node/commit/5358601e31)] - **timers**: avoid generating holey internal arrays (Gürgün Dayıoğlu) [#54771](https://github.com/nodejs/node/pull/54771) +- \[[`b6ed97c66d`](https://github.com/nodejs/node/commit/b6ed97c66d)] - **timers**: document ref option for scheduler.wait (Paolo Insogna) [#54605](https://github.com/nodejs/node/pull/54605) +- \[[`f524b8a28b`](https://github.com/nodejs/node/commit/f524b8a28b)] - **timers**: fix validation (Paolo Insogna) [#54404](https://github.com/nodejs/node/pull/54404) +- \[[`bc020f7cb3`](https://github.com/nodejs/node/commit/bc020f7cb3)] - **(SEMVER-MINOR)** **tls**: add `allowPartialTrustChain` flag (Anna Henningsen) [#54790](https://github.com/nodejs/node/pull/54790) +- \[[`d0e6f9168e`](https://github.com/nodejs/node/commit/d0e6f9168e)] - **tls**: remove prototype primordials (Antoine du Hamel) [#53699](https://github.com/nodejs/node/pull/53699) +- \[[`f5c65d0be6`](https://github.com/nodejs/node/commit/f5c65d0be6)] - **tools**: add readability/fn_size to filter (Rafael Gonzaga) [#54744](https://github.com/nodejs/node/pull/54744) +- \[[`a47bb9b2c2`](https://github.com/nodejs/node/commit/a47bb9b2c2)] - **tools**: add util scripts to land and rebase PRs (Antoine du Hamel) [#54656](https://github.com/nodejs/node/pull/54656) +- \[[`fe3155cefa`](https://github.com/nodejs/node/commit/fe3155cefa)] - **tools**: remove readability/fn_size rule (Rafael Gonzaga) [#54663](https://github.com/nodejs/node/pull/54663) +- \[[`d6b9cc3acd`](https://github.com/nodejs/node/commit/d6b9cc3acd)] - **tools**: remove unused python files (Aviv Keller) [#53928](https://github.com/nodejs/node/pull/53928) +- \[[`b5fbe9609c`](https://github.com/nodejs/node/commit/b5fbe9609c)] - **tools**: remove header from c-ares license (Aviv Keller) [#54335](https://github.com/nodejs/node/pull/54335) +- \[[`a7fdc608c6`](https://github.com/nodejs/node/commit/a7fdc608c6)] - **tools**: add find pyenv path on windows (Marco Ippolito) [#54314](https://github.com/nodejs/node/pull/54314) +- \[[`f90688cd5b`](https://github.com/nodejs/node/commit/f90688cd5b)] - **tools**: make undici updater build wasm from src (Michael Dawson) [#54128](https://github.com/nodejs/node/pull/54128) +- \[[`a033dff2f2`](https://github.com/nodejs/node/commit/a033dff2f2)] - **tty**: initialize winSize array with values (Michaël Zasso) [#54281](https://github.com/nodejs/node/pull/54281) +- \[[`e635e0956c`](https://github.com/nodejs/node/commit/e635e0956c)] - **typings**: fix TypedArray to a global type (1ilsang) [#54063](https://github.com/nodejs/node/pull/54063) +- \[[`b5bf08f31e`](https://github.com/nodejs/node/commit/b5bf08f31e)] - **typings**: correct param type of `SafePromisePrototypeFinally` (Wuli) [#54727](https://github.com/nodejs/node/pull/54727) +- \[[`628ae4bde5`](https://github.com/nodejs/node/commit/628ae4bde5)] - **typings**: add util.styleText type definition (Rafael Gonzaga) [#54252](https://github.com/nodejs/node/pull/54252) +- \[[`cc37401ea5`](https://github.com/nodejs/node/commit/cc37401ea5)] - **typings**: add missing binding function `writeFileUtf8()` (Jungku Lee) [#54110](https://github.com/nodejs/node/pull/54110) +- \[[`728c3fd6f1`](https://github.com/nodejs/node/commit/728c3fd6f1)] - **url**: modify pathToFileURL to handle extended UNC path (Early Riser) [#54262](https://github.com/nodejs/node/pull/54262) +- \[[`b25563dfcb`](https://github.com/nodejs/node/commit/b25563dfcb)] - **url**: improve resolveObject with ObjectAssign (Early Riser) [#54092](https://github.com/nodejs/node/pull/54092) +- \[[`eededd1ca8`](https://github.com/nodejs/node/commit/eededd1ca8)] - **url**: make URL.parse enumerable (Filip Skokan) [#53720](https://github.com/nodejs/node/pull/53720) +- \[[`4eb0749b6c`](https://github.com/nodejs/node/commit/4eb0749b6c)] - **(SEMVER-MINOR)** **url**: implement parse method for safer URL parsing (Ali Hassan) [#52280](https://github.com/nodejs/node/pull/52280) +- \[[`9e1c2293bf`](https://github.com/nodejs/node/commit/9e1c2293bf)] - **vm**: harden module type checks (Chengzhong Wu) [#52162](https://github.com/nodejs/node/pull/52162) +- \[[`2d90340cb3`](https://github.com/nodejs/node/commit/2d90340cb3)] - **(SEMVER-MINOR)** **vm**: introduce vanilla contexts via vm.constants.DONT_CONTEXTIFY (Joyee Cheung) [#54394](https://github.com/nodejs/node/pull/54394) +- \[[`4644d05ab5`](https://github.com/nodejs/node/commit/4644d05ab5)] - **zlib**: deprecate instantiating classes without new (Yagiz Nizipli) [#54708](https://github.com/nodejs/node/pull/54708) +- \[[`ecdf6dd444`](https://github.com/nodejs/node/commit/ecdf6dd444)] - **zlib**: simplify validators (Yagiz Nizipli) [#54442](https://github.com/nodejs/node/pull/54442) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.18.0/node-v20.18.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.18.0/node-v20.18.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.18.0/node-v20.18.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.18.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.18.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.18.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.18.0/node-v20.18.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.18.0/node-v20.18.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.18.0/node-v20.18.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.18.0/node-v20.18.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.18.0/node-v20.18.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.18.0/node-v20.18.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.18.0/node-v20.18.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.18.0/node-v20.18.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.18.0/node-v20.18.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.18.0/node-v20.18.0.tar.gz \ +Other release files: https://nodejs.org/dist/v20.18.0/ \ +Documentation: https://nodejs.org/docs/v20.18.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +612c1cbb613f7af05f9de71767c3ba791b1972abe07fe37dbc721e837f2df9bc node-v20.18.0-aix-ppc64.tar.gz +6a8615293b4920fdd232185810a77583ae5301350c0d025654452d1f1f655436 node-v20.18.0-arm64.msi +92e180624259d082562592bb12548037c6a417069be29e452ec5d158d657b4be node-v20.18.0-darwin-arm64.tar.gz +678e062bdae3824aa997bd469580a4dda48fd51f61d3679b6ba06352e6cef38f node-v20.18.0-darwin-arm64.tar.xz +c02aa7560612a4e2cc359fd89fae7aedde370c06db621f2040a4a9f830a125dc node-v20.18.0-darwin-x64.tar.gz +63e150a3bb4f31743257d8597262c6b5f0a2356e7c42002e29d5f7d1bf161f08 node-v20.18.0-darwin-x64.tar.xz +fbae87a8bc00969c7e89e15e51392362e2c1e59a7eaba3e2ccba1601745e77a5 node-v20.18.0-headers.tar.gz +b9984e1fb92e30437cf41c1b9ae3361a87022aa2528f9b77d5e415d772d28d96 node-v20.18.0-headers.tar.xz +38bccb35c06ee4edbcd00c77976e3fad1d69d2e57c3c0c363d1700a2a2493278 node-v20.18.0-linux-arm64.tar.gz +a9ce85675ba33f00527f6234d90000946c0936fb4fca605f1891bb5f4fe6fb0a node-v20.18.0-linux-arm64.tar.xz +9a522daa837d4d32dc700bf9b18dea9e21a229b113a22cfcf38f1f2240bbbc47 node-v20.18.0-linux-armv7l.tar.gz +964110a031c467a555aa889a6f2f13f7a1d5d4b834403aaa6d9148de050e1563 node-v20.18.0-linux-armv7l.tar.xz +627ead0c0dbb6db57db415dd440506764ecb7238a8b6ecb65720a43787ccfead node-v20.18.0-linux-ppc64le.tar.gz +b3753b739c5a53694477f45b25970f9b3daf83c88844de9fb837c6593e99edf6 node-v20.18.0-linux-ppc64le.tar.xz +41d3e8dc9fc23e0ae1a313fac27f57fc3358c790af11632943566600fc2ae2d3 node-v20.18.0-linux-s390x.tar.gz +8a9a0142055f85b0f75a8e80195c8e413a40ccf926cb4b983accf01f33f83118 node-v20.18.0-linux-s390x.tar.xz +24a5d58a1d4c2903478f4b7c3cfd2eeb5cea2cae3baee11a4dc6a1fed25fec6c node-v20.18.0-linux-x64.tar.gz +4543670b589593f8fa5f106111fd5139081da42bb165a9239f05195e405f240a node-v20.18.0-linux-x64.tar.xz +f3abed6434fc5f378547516f118c9a3696099ebc670c3ea349bac122b3973770 node-v20.18.0.pkg +c0819f8fc5038584d24c22002aeffd23f2d4a6fd6b337b30c502cbe4a659720c node-v20.18.0.tar.gz +7d9433e91fd88d82ba8de86e711ec41907638e227993d22e95126b02f6cd714a node-v20.18.0.tar.xz +295682b03995d0887af37e2781da6a405dbac39b29c801a45b8bff19c7df3b9b node-v20.18.0-win-arm64.7z +9da99126416e25fa0351c39daf984120e3a24ae8f3ad35a4f4f117ae52db7184 node-v20.18.0-win-arm64.zip +e990cb43a1bf130335b4ff913190e20b36e27f37fe7929ef1b6fc79c64cd78bc node-v20.18.0-win-x64.7z +f5cea43414cc33024bbe5867f208d1c9c915d6a38e92abeee07ed9e563662297 node-v20.18.0-win-x64.zip +d2392f96262b392b3122a0271e8d98d8dda56e345a39a93096758fb47c1abfb3 node-v20.18.0-win-x86.7z +74335c6f67c68f33e751ece1a3c834fc17dba2a872a73ef3921ea575cb57d4fe node-v20.18.0-win-x86.zip +93d1d30341d7d38b7a8f3ab0fa3be1f9e6436b90338b2bd8b8af4e80d00bd036 node-v20.18.0-x64.msi +9ae3aaeced931fbd874c6488cc4960611691baa9c11e0b84c0ed9226ccc2d0cb node-v20.18.0-x86.msi +e66327f3d1de938059bedda660de2eff1a508b61d777ff247615a019eb153d46 win-arm64/node.exe +58795bcd44e8023ff443dedabf7f9af928732a51befc5324082aafe56e0f5eb0 win-arm64/node.lib +12d1614f57c02726066586f00b00cf570965ddcfaaa42e6418a26355a68de3fa win-arm64/node_pdb.7z +0ed107a5ca32327a131c0c02b573fbba7c9549a8b16ea2828850cb87e15f97eb win-arm64/node_pdb.zip +35b7c95a379beb606f5798ed83081690df13190077630b234163c6607aa4cc94 win-x64/node.exe +afeae4c806b82987ee073c9c75a0e5c5530213145c64f2824d0ed220a6acf962 win-x64/node.lib +7b5adad6a9278e1f507add8d2c49465053f92cef8aed43aa88f0131df817bb0d win-x64/node_pdb.7z +b1887992ff66f841aaf89db8a26909355253f7a28e8245b5500436a0a4e41204 win-x64/node_pdb.zip +4364bfd5cc485ce2bf9b89878fddc09f4c7abdedc680cd5ea5065b0516754106 win-x86/node.exe +a2ccacb78f399dceb60f5ad275c9380c5cf498202ef1cb7f7bd789d844ab0daa win-x86/node.lib +180103650f8efc5726826e6c07d0d775b6ae063d85778c600f040bb54d17129f win-x86/node_pdb.7z +0a0cae066699d13891179fc167aab64eda1d477f241ed22b09233b05c56f87d8 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEj8yhP+8dDC6RAI4Jdw96mlrhVgAFAmb+2tQACgkQdw96mlrh +VgDD3hAAjUuhsYitdzrnesSmmMldEcIWRS+1Wrb6TmJLTsosgFnEvEboTqYtcASF +LCj6oAGauRVGhn49IWxJH6d0QtSIMkTe3wBQPQIridsR++RNCmoYy0tqVPQrU111 +EymcSfISwnvC40xGmyGw1PQz33dD9IPwBlz9SnmvpQGYNxpb3EA9bjhbldQ1BbjU +xbV9mdC6KFYAvwYzAfyEfuf4PgkN/1Q9//p+nPSYIFrW0uMpxJQg47DhiSfFKlxA +WuifCYdNaMv7QE5QMgPElSH/4/yoo7owRxeMj77Dq33OzvY0mcLauWsItR2Hjjla +1KsvOdFMk6x0wb4Gwb6S245zbbFq+Ja5/7oWput9nmfxxbY16c24ieKKOlFTx74s +sOSml10O5PkpE60CXnakDJdrAr7zDvyvPgmMNyWs69hLdKkWUKnDlembuie2fmTA +QK/Tu/sjFTney8BIAIBmJSgXrTLNesppmaXQ2nvTpK2J2sSV+8DVMvzK0SqCXJzW +nBCV+z+beLo2YbDyQWfMgYwz6vLXir0pEHlD3VZrVR7gsWArYFbztCkf1h3V7njT +txr2//xDGfRvh92/UmuRhSnKoi59gEfTb6zIwifTUWQXOSPYkIKK3tMSDcn+ChYO +44tjDUK4sksFP6OAW8PVNTTtgobAXFdwWJ+OGq9WnPb/fpjysjk= +=xl8D +-----END PGP SIGNATURE----- +``` From b7814d5c3342d6c406a29a8651defd357e22ce41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 10:54:55 +1000 Subject: [PATCH 0042/1385] meta: bump the tailwind group with 2 updates (#7076) Bumps the tailwind group with 2 updates: [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) and [tailwindcss](https://github.com/tailwindlabs/tailwindcss). Updates `prettier-plugin-tailwindcss` from 0.6.6 to 0.6.8 - [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.6...v0.6.8) Updates `tailwindcss` from 3.4.11 to 3.4.13 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/v3.4.13/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.11...v3.4.13) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch dependency-group: tailwind - dependency-name: tailwindcss dependency-type: direct:production 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> --- apps/site/package.json | 2 +- package-lock.json | 18 ++++++++---------- package.json | 2 +- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 72c792f3ce3a5..5b31d626c1990 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -83,7 +83,7 @@ "remark-reading-time": "~2.0.1", "semver": "~7.6.3", "shiki": "~1.17.5", - "tailwindcss": "^3.4.11", + "tailwindcss": "^3.4.13", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.0" diff --git a/package-lock.json b/package-lock.json index a6f03fcad3ca0..4351c478c7a26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", "prettier": "3.3.3", - "prettier-plugin-tailwindcss": "0.6.6" + "prettier-plugin-tailwindcss": "0.6.8" }, "engines": { "node": "v20" @@ -76,7 +76,7 @@ "remark-reading-time": "~2.0.1", "semver": "~7.6.3", "shiki": "~1.17.5", - "tailwindcss": "^3.4.11", + "tailwindcss": "^3.4.13", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.0" @@ -23463,11 +23463,10 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.6.tgz", - "integrity": "sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.8.tgz", + "integrity": "sha512-dGu3kdm7SXPkiW4nzeWKCl3uoImdd5CTZEJGxyypEPL37Wj0HT2pLqjrvSei1nTeuQfO4PUfjeW5cTUNRLZ4sA==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.21.3" }, @@ -27945,10 +27944,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.11.tgz", - "integrity": "sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==", - "license": "MIT", + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz", + "integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", diff --git a/package.json b/package.json index 91571d15bad8d..1681a567d61bb 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", "prettier": "3.3.3", - "prettier-plugin-tailwindcss": "0.6.6" + "prettier-plugin-tailwindcss": "0.6.8" }, "overrides": { "eslint": "9.10.0", From 653b78d7c36c9b8719f2844cef409f8bf86d7bd0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:02:32 +1000 Subject: [PATCH 0043/1385] meta: bump the next-js group with 2 updates (#7074) Bumps the next-js group with 2 updates: [turbo](https://github.com/vercel/turborepo) and [next](https://github.com/vercel/next.js). Updates `turbo` from 2.1.2 to 2.1.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.1.2...v2.1.3) Updates `next` from 14.2.11 to 14.2.14 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.14) --- updated-dependencies: - dependency-name: turbo dependency-type: direct:production update-type: version-update:semver-patch dependency-group: next-js - dependency-name: next 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 | 162 ++++++++++++++++++----------------------- package.json | 2 +- 3 files changed, 74 insertions(+), 92 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 5b31d626c1990..eaebdbe1afaea 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -67,7 +67,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "~14.2.11", + "next": "~14.2.14", "next-intl": "~3.19.1", "next-themes": "~0.3.0", "postcss": "~8.4.47", diff --git a/package-lock.json b/package-lock.json index 4351c478c7a26..b7fbc836edd1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "dependencies": { "husky": "9.1.6", "lint-staged": "15.2.10", - "turbo": "2.1.2" + "turbo": "2.1.3" }, "devDependencies": { "commitizen": "4.3.0", @@ -60,7 +60,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "~14.2.11", + "next": "~14.2.14", "next-intl": "~3.19.1", "next-themes": "~0.3.0", "postcss": "~8.4.47", @@ -4331,10 +4331,9 @@ } }, "node_modules/@next/env": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.11.tgz", - "integrity": "sha512-HYsQRSIXwiNqvzzYThrBwq6RhXo3E0n8j8nQnAs8i4fCEo2Zf/3eS0IiRA8XnRg9Ha0YnpkyJZIZg1qEwemrHw==", - "license": "MIT" + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.14.tgz", + "integrity": "sha512-/0hWQfiaD5//LvGNgc8PjvyqV50vGK0cADYzaoOOGN8fxzBn3iAiaq3S0tCRnFBldq0LVveLcxCTi41ZoYgAgg==" }, "node_modules/@next/eslint-plugin-next": { "version": "14.2.11", @@ -4429,13 +4428,12 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.11.tgz", - "integrity": "sha512-eiY9u7wEJZWp/Pga07Qy3ZmNEfALmmSS1HtsJF3y1QEyaExu7boENz11fWqDmZ3uvcyAxCMhTrA1jfVxITQW8g==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.14.tgz", + "integrity": "sha512-bsxbSAUodM1cjYeA4o6y7sp9wslvwjSkWw57t8DtC8Zig8aG8V6r+Yc05/9mDzLKcybb6EN85k1rJDnMKBd9Gw==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -4445,13 +4443,12 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.11.tgz", - "integrity": "sha512-lnB0zYCld4yE0IX3ANrVMmtAbziBb7MYekcmR6iE9bujmgERl6+FK+b0MBq0pl304lYe7zO4yxJus9H/Af8jbg==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.14.tgz", + "integrity": "sha512-cC9/I+0+SK5L1k9J8CInahduTVWGMXhQoXFeNvF0uNs3Bt1Ub0Azb8JzTU9vNCr0hnaMqiWu/Z0S1hfKc3+dww==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -4461,13 +4458,12 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.11.tgz", - "integrity": "sha512-Ulo9TZVocYmUAtzvZ7FfldtwUoQY0+9z3BiXZCLSUwU2bp7GqHA7/bqrfsArDlUb2xeGwn3ZuBbKtNK8TR0A8w==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.14.tgz", + "integrity": "sha512-RMLOdA2NU4O7w1PQ3Z9ft3PxD6Htl4uB2TJpocm+4jcllHySPkFaUIFacQ3Jekcg6w+LBaFvjSPthZHiPmiAUg==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -4477,13 +4473,12 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.11.tgz", - "integrity": "sha512-fH377DnKGyUnkWlmUpFF1T90m0dADBfK11dF8sOQkiELF9M+YwDRCGe8ZyDzvQcUd20Rr5U7vpZRrAxKwd3Rzg==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.14.tgz", + "integrity": "sha512-WgLOA4hT9EIP7jhlkPnvz49iSOMdZgDJVvbpb8WWzJv5wBD07M2wdJXLkDYIpZmCFfo/wPqFsFR4JS4V9KkQ2A==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -4493,13 +4488,12 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.11.tgz", - "integrity": "sha512-a0TH4ZZp4NS0LgXP/488kgvWelNpwfgGTUCDXVhPGH6pInb7yIYNgM4kmNWOxBFt+TIuOH6Pi9NnGG4XWFUyXQ==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.14.tgz", + "integrity": "sha512-lbn7svjUps1kmCettV/R9oAvEW+eUI0lo0LJNFOXoQM5NGNxloAyFRNByYeZKL3+1bF5YE0h0irIJfzXBq9Y6w==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -4509,13 +4503,12 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.11.tgz", - "integrity": "sha512-DYYZcO4Uir2gZxA4D2JcOAKVs8ZxbOFYPpXSVIgeoQbREbeEHxysVsg3nY4FrQy51e5opxt5mOHl/LzIyZBoKA==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.14.tgz", + "integrity": "sha512-7TcQCvLQ/hKfQRgjxMN4TZ2BRB0P7HwrGAYL+p+m3u3XcKTraUFerVbV3jkNZNwDeQDa8zdxkKkw2els/S5onQ==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -4525,13 +4518,12 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.11.tgz", - "integrity": "sha512-PwqHeKG3/kKfPpM6of1B9UJ+Er6ySUy59PeFu0Un0LBzJTRKKAg2V6J60Yqzp99m55mLa+YTbU6xj61ImTv9mg==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.14.tgz", + "integrity": "sha512-8i0Ou5XjTLEje0oj0JiI0Xo9L/93ghFtAUYZ24jARSeTMXLUx8yFIdhS55mTExq5Tj4/dC2fJuaT4e3ySvXU1A==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -4541,13 +4533,12 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.11.tgz", - "integrity": "sha512-0U7PWMnOYIvM74GY6rbH6w7v+vNPDVH1gUhlwHpfInJnNe5LkmUZqhp7FNWeNa5wbVgRcRi1F1cyxp4dmeLLvA==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.14.tgz", + "integrity": "sha512-2u2XcSaDEOj+96eXpyjHjtVPLhkAFw2nlaz83EPeuK4obF+HmtDJHqgR1dZB7Gb6V/d55FL26/lYVd0TwMgcOQ==", "cpu": [ "ia32" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -4557,13 +4548,12 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.11.tgz", - "integrity": "sha512-gQpS7mcgovWoaTG1FbS5/ojF7CGfql1Q0ZLsMrhcsi2Sr9HEqsUZ70MPJyaYBXbk6iEAP7UXMD9HC8KY1qNwvA==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.14.tgz", + "integrity": "sha512-MZom+OvZ1NZxuRovKt1ApevjiUJTcU2PmdJKL66xUPaJeRywnbGGRWUlaAOwunD6dX+pm83vj979NTC8QXjGWg==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -21801,12 +21791,11 @@ "license": "MIT" }, "node_modules/next": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.11.tgz", - "integrity": "sha512-8MDFqHBhdmR2wdfaWc8+lW3A/hppFe1ggQ9vgIu/g2/2QEMYJrPoQP6b+VNk56gIug/bStysAmrpUKtj3XN8Bw==", - "license": "MIT", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.14.tgz", + "integrity": "sha512-Q1coZG17MW0Ly5x76shJ4dkC23woLAhhnDnw+DfTc7EpZSGuWrlsZ3bZaO8t6u1Yu8FVfhkqJE+U8GC7E0GLPQ==", "dependencies": { - "@next/env": "14.2.11", + "@next/env": "14.2.14", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -21821,15 +21810,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.11", - "@next/swc-darwin-x64": "14.2.11", - "@next/swc-linux-arm64-gnu": "14.2.11", - "@next/swc-linux-arm64-musl": "14.2.11", - "@next/swc-linux-x64-gnu": "14.2.11", - "@next/swc-linux-x64-musl": "14.2.11", - "@next/swc-win32-arm64-msvc": "14.2.11", - "@next/swc-win32-ia32-msvc": "14.2.11", - "@next/swc-win32-x64-msvc": "14.2.11" + "@next/swc-darwin-arm64": "14.2.14", + "@next/swc-darwin-x64": "14.2.14", + "@next/swc-linux-arm64-gnu": "14.2.14", + "@next/swc-linux-arm64-musl": "14.2.14", + "@next/swc-linux-x64-gnu": "14.2.14", + "@next/swc-linux-x64-musl": "14.2.14", + "@next/swc-win32-arm64-msvc": "14.2.14", + "@next/swc-win32-ia32-msvc": "14.2.14", + "@next/swc-win32-x64-msvc": "14.2.14" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -28559,95 +28548,88 @@ "license": "MIT" }, "node_modules/turbo": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.2.tgz", - "integrity": "sha512-Jb0rbU4iHEVQ18An/YfakdIv9rKnd3zUfSE117EngrfWXFHo3RndVH96US3GsT8VHpwTncPePDBT2t06PaFLrw==", - "license": "MIT", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.3.tgz", + "integrity": "sha512-lY0yj2GH2a2a3NExZ3rGe+rHUVeFE2aXuRAue57n+08E7Z7N7YCmynju0kPC1grAQzERmoLpKrmzmWd+PNiADw==", "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "2.1.2", - "turbo-darwin-arm64": "2.1.2", - "turbo-linux-64": "2.1.2", - "turbo-linux-arm64": "2.1.2", - "turbo-windows-64": "2.1.2", - "turbo-windows-arm64": "2.1.2" + "turbo-darwin-64": "2.1.3", + "turbo-darwin-arm64": "2.1.3", + "turbo-linux-64": "2.1.3", + "turbo-linux-arm64": "2.1.3", + "turbo-windows-64": "2.1.3", + "turbo-windows-arm64": "2.1.3" } }, "node_modules/turbo-darwin-64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.1.2.tgz", - "integrity": "sha512-3TEBxHWh99h2yIzkuIigMEOXt/ItYQp0aPiJjPd1xN4oDcsKK5AxiFKPH9pdtfIBzYsY59kQhZiFj0ELnSP7Bw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.1.3.tgz", + "integrity": "sha512-ouJOm0g0YyoBuhmikEujVCBGo3Zr0lbSOWFIsQtWUTItC88F2w2byhjtsYGPXQwMlTbXwmoBU2lOCfWNkeEwHQ==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/turbo-darwin-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.1.2.tgz", - "integrity": "sha512-he0miWNq2WxJzsH82jS2Z4MXpnkzn9SH8a79iPXiJkq25QREImucscM4RPasXm8wARp91pyysJMq6aasD45CeA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.1.3.tgz", + "integrity": "sha512-j2FOJsK4LAOtHQlb3Oom0yWB/Vi0nF1ljInr311mVzHoFAJRZtfW2fRvdZRb/lBUwjSp8be58qWHzANIcrA0OA==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/turbo-linux-64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.1.2.tgz", - "integrity": "sha512-fKUBcc0rK8Vdqv5a/E3CSpMBLG1bzwv+Q0Q83F8fG2ZfNCNKGbcEYABdonNZkkx141Rj03cZQFCgxu3MVEGU+A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.1.3.tgz", + "integrity": "sha512-ubRHkI1gSel7H7wsmxKK8C9UlLWqg/2dkCC88LFupaK6TKgvBKqDqA0Z1M9C/escK0Jsle2k0H8bybV9OYIl4Q==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/turbo-linux-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.1.2.tgz", - "integrity": "sha512-sV8Bpmm0WiuxgbhxymcC7wSsuxfBBieI98GegSwbr/bs1ANAgzCg93urIrdKdQ3/b31zZxQwcaP4FBF1wx1Qdg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.1.3.tgz", + "integrity": "sha512-LffUL+e5wv7BtD6DgnM2kKOlDkMo2eRjhbAjVnrCD3wi2ug0tl6NDzajnHHjtaMyOnIf4AvzSKdLWsBxafGBQA==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/turbo-windows-64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.1.2.tgz", - "integrity": "sha512-wcmIJZI9ORT9ykHGliFE6kWRQrlH930QGSjSgWC8uFChFFuOyUlvC7ttcxuSvU9VqC7NF4C+GVAcFJQ8lTjN7g==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.1.3.tgz", + "integrity": "sha512-S9SvcZZoaq5jKr6kA6eF7/xgQhVn8Vh7PVy5lono9zybvhyL4eY++y2PaLToIgL8G9IcbLmgOC73ExNjFBg9XQ==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/turbo-windows-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.1.2.tgz", - "integrity": "sha512-zdnXjrhk7YO6CP+Q5wPueEvOCLH4lDa6C4rrwiakcWcPgcQGbVozJlo4uaQ6awo8HLWQEvOwu84RkWTdLAc/Hw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.1.3.tgz", + "integrity": "sha512-twlEo8lRrGbrR6T/ZklUIquW3IlFCEtywklgVA81aIrSBm56+GEVpSrHhIlsx1hiYeSNrs+GpDwZGe+V7fvEVQ==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "win32" diff --git a/package.json b/package.json index 1681a567d61bb..c5b811dedcc9f 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "dependencies": { "husky": "9.1.6", "lint-staged": "15.2.10", - "turbo": "2.1.2" + "turbo": "2.1.3" }, "devDependencies": { "commitizen": "4.3.0", From 6016ef85391f1b908018442ed9189d330d12223f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:20:41 +1000 Subject: [PATCH 0044/1385] meta: bump next-intl from 3.19.1 to 3.20.0 (#7078) Bumps [next-intl](https://github.com/amannn/next-intl) from 3.19.1 to 3.20.0. - [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.19.1...v3.20.0) --- updated-dependencies: - dependency-name: next-intl 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 | 24 ++++++++---------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index eaebdbe1afaea..df405fbb8c12c 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -68,7 +68,7 @@ "glob": "~11.0.0", "gray-matter": "~4.0.3", "next": "~14.2.14", - "next-intl": "~3.19.1", + "next-intl": "~3.20.0", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", diff --git a/package-lock.json b/package-lock.json index b7fbc836edd1e..4865cca0598e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,7 +61,7 @@ "glob": "~11.0.0", "gray-matter": "~4.0.3", "next": "~14.2.14", - "next-intl": "~3.19.1", + "next-intl": "~3.20.0", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", @@ -3166,7 +3166,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", - "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" @@ -3176,7 +3175,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", - "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -3185,7 +3183,6 @@ "version": "2.7.8", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", - "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "@formatjs/icu-skeleton-parser": "1.8.2", @@ -3196,7 +3193,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", - "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "tslib": "^2.4.0" @@ -3206,7 +3202,6 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", - "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -16091,7 +16086,6 @@ "version": "10.5.14", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", - "license": "BSD-3-Clause", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "@formatjs/fast-memoize": "2.2.0", @@ -21840,20 +21834,19 @@ } }, "node_modules/next-intl": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.19.1.tgz", - "integrity": "sha512-KlJSomzbB5dNkWBIiSIRaoy5zqwLgHNV5Zw0ULhkHjNnPN7aLFFv2G+VOQKle630sNH2JiKc9nsmi6PM1GdkhA==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.20.0.tgz", + "integrity": "sha512-0bCZcc38HfAZk/T+PNNcnJZknC+caS5rBK+WYRd1HsOL5O6puEu2H3kya8oT9s8piHjrTf7P0UHeahOFleOnrw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/amannn" } ], - "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "negotiator": "^0.6.3", - "use-intl": "^3.19.1" + "use-intl": "^3.20.0" }, "peerDependencies": { "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0", @@ -29557,10 +29550,9 @@ } }, "node_modules/use-intl": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.19.1.tgz", - "integrity": "sha512-FUblDZJ/iuXusroBxvzVwXmgjHIef2YHJ0ASRmkMV8whlcRr6QJozBZUR/xB4I0+MMbWDD4GPugUK+MxE2coJA==", - "license": "MIT", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.20.0.tgz", + "integrity": "sha512-5WQs6yZVWI9K7vw3134P0bhKNp4mi8NbmqKOCuhD9nQUMTKdmpBXwjk62+axwvEbj4XrZxj4X93mQMLXU5ZsCg==", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "intl-messageformat": "^10.5.14" From db6c6472ea1bdbd0d8c6634fbdfb65916f6d8632 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:26:44 +1000 Subject: [PATCH 0045/1385] meta: bump @sentry/nextjs from 8.30.0 to 8.32.0 (#7077) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 8.30.0 to 8.32.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.30.0...8.32.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" 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 | 295 ++++++++++++++++++----------------------- 2 files changed, 133 insertions(+), 164 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index df405fbb8c12c..3d6258e6bdadc 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -53,7 +53,7 @@ "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.1", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@sentry/nextjs": "~8.30.0", + "@sentry/nextjs": "~8.32.0", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", diff --git a/package-lock.json b/package-lock.json index 4865cca0598e0..42dd8223b153c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.1", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@sentry/nextjs": "~8.30.0", + "@sentry/nextjs": "~8.32.0", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", @@ -5011,7 +5011,6 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -5023,7 +5022,6 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.26.0.tgz", "integrity": "sha512-HedpXXYzzbaoutw6DFLWLDket2FwLkLpil4hGCZ1xYEIMTcivdfwEOISgdbLEWyG3HW52gTq2V9mOVJrONgiwg==", - "license": "Apache-2.0", "engines": { "node": ">=14" }, @@ -5035,7 +5033,6 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, @@ -5050,7 +5047,6 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "^1.2.0", @@ -5066,11 +5062,26 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-amqplib": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.42.0.tgz", + "integrity": "sha512-fiuU6OKsqHJiydHWgTRQ7MnIrJ2lEqsdgFtNIH4LbAUJl/5XmrIeoDzDnox+hfkgWK65jsleFuQDtYb5hW1koQ==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, "node_modules/@opentelemetry/instrumentation-connect": { "version": "0.39.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.39.0.tgz", "integrity": "sha512-pGBiKevLq7NNglMgqzmeKczF4XQMTOUOTkK8afRHMZMnrK3fcETyTH7lVaSozwiOM3Ws+SuEmXZT7DYrrhxGlg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5084,11 +5095,24 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-dataloader": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.12.0.tgz", + "integrity": "sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.53.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, "node_modules/@opentelemetry/instrumentation-express": { "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.42.0.tgz", "integrity": "sha512-YNcy7ZfGnLsVEqGXQPT+S0G1AE46N21ORY7i7yUQyfhGAL4RBjnZUqefMI0NwqIl6nGbr1IpF0rZGoN8Q7x12Q==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5105,7 +5129,6 @@ "version": "0.39.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.39.0.tgz", "integrity": "sha512-SS9uSlKcsWZabhBp2szErkeuuBDgxOUlllwkS92dVaWRnMmwysPhcEgHKB8rUe3BHg/GnZC1eo1hbTZv4YhfoA==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5122,7 +5145,6 @@ "version": "0.15.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.15.0.tgz", "integrity": "sha512-JWVKdNLpu1skqZQA//jKOcKdJC66TWKqa2FUFq70rKohvaSq47pmXlnabNO+B/BvLfmidfiaN35XakT5RyMl2Q==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0" @@ -5138,7 +5160,6 @@ "version": "0.39.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz", "integrity": "sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5153,7 +5174,6 @@ "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.43.0.tgz", "integrity": "sha512-aI3YMmC2McGd8KW5du1a2gBA0iOMOGLqg4s9YjzwbjFwjlmMNFSK1P3AIg374GWg823RPUGfVTIgZ/juk9CVOA==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5168,7 +5188,6 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz", "integrity": "sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5185,7 +5204,6 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz", "integrity": "sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/instrumentation": "0.53.0", @@ -5203,7 +5221,6 @@ "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz", "integrity": "sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/redis-common": "^0.36.2", @@ -5220,7 +5237,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.3.0.tgz", "integrity": "sha512-UnkZueYK1ise8FXQeKlpBd7YYUtC7mM8J0wzUSccEfc/G8UqHQqAzIyYCUOUPUKp8GsjLnWOOK/3hJc4owb7Jg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0" @@ -5236,7 +5252,6 @@ "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz", "integrity": "sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5253,7 +5268,6 @@ "version": "0.47.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz", "integrity": "sha512-yqyXRx2SulEURjgOQyJzhCECSh5i1uM49NUaq9TqLd6fA7g26OahyJfsr9NE38HFqGRHpi4loyrnfYGdrsoVjQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/sdk-metrics": "^1.9.1", @@ -5270,7 +5284,6 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz", "integrity": "sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5287,7 +5300,6 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz", "integrity": "sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5304,7 +5316,6 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz", "integrity": "sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5321,7 +5332,6 @@ "version": "0.40.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz", "integrity": "sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0" @@ -5337,7 +5347,6 @@ "version": "0.44.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz", "integrity": "sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5356,7 +5365,6 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz", "integrity": "sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/redis-common": "^0.36.2", @@ -5373,7 +5381,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz", "integrity": "sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0" @@ -5389,7 +5396,6 @@ "version": "0.36.2", "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", - "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -5398,7 +5404,6 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/semantic-conventions": "1.27.0" @@ -5414,7 +5419,6 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/resources": "1.26.0" @@ -5430,7 +5434,6 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.26.0.tgz", "integrity": "sha512-olWQldtvbK4v22ymrKLbIcBi9L2SpMO84sCPY54IVsJhP9fRsxJT194C/AVaAuJzLE30EdhhM1VmvVYR7az+cw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/resources": "1.26.0", @@ -5447,7 +5450,6 @@ "version": "1.27.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -5456,7 +5458,6 @@ "version": "0.40.1", "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.1.0" }, @@ -5599,7 +5600,6 @@ "version": "5.19.1", "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.19.1.tgz", "integrity": "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.8", "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0", @@ -5610,7 +5610,6 @@ "version": "0.52.1", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -5622,7 +5621,6 @@ "version": "0.52.1", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.52.1", "@types/shimmer": "^1.0.2", @@ -6593,58 +6591,54 @@ } }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.30.0.tgz", - "integrity": "sha512-pwX+awNWaxSOAsBLVLqc1+Hw+Fm1Nci9mbKFA6Ed5YzCG049PnBVQwugpmx2dcyyCqJpORhcIqb9jHdCkYmCiA==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.32.0.tgz", + "integrity": "sha512-DpUGhk5O1OVjT0fo9wsbEdO1R/S9gGBRDtn9+FFVeRtieJHwXpeZiLK+tZhTOvaILmtSoTPUEY3L5sK4j5Xq9g==", "dependencies": { - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0" + "@sentry/core": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.30.0.tgz", - "integrity": "sha512-ParFRxQY6helxkwUDmro77Wc5uSIC6rZos88jYMrYwFmoTJaNWf4lDzPyECfdSiSYyzSMZk4dorSUN85Ul7DCg==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.32.0.tgz", + "integrity": "sha512-XB7hiVJQW1tNzpoXIHbvm3rjipIt7PZiJJtFg2vxaqu/FzdgOcYqQiwIKivJVAKuRZ9rIeJtK1jdXQFOc/TRJA==", "dependencies": { - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0" + "@sentry/core": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.30.0.tgz", - "integrity": "sha512-/KFre+BrovPCiovgAu5N1ErJtkDVzkJA5hV3Jw011AlxRWxrmPwu6+9sV9/rn3tqYAGyq6IggYqeIOHhLh1Ihg==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.32.0.tgz", + "integrity": "sha512-yiEUnn2yyo1AIQIFNeRX3tdK8fmyKIkxdFS1WiVQmeYI/hFwYBTZPly0FcO/g3xnRMSA2tvrS+hZEaaXfK4WhA==", "dependencies": { - "@sentry-internal/browser-utils": "8.30.0", - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0" + "@sentry-internal/browser-utils": "8.32.0", + "@sentry/core": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.30.0.tgz", - "integrity": "sha512-y/QqcvchhtMlVA6eOZicIfTxtZarazQZJuFW0018ynPxBTiuuWSxMCLqduulXUYsFejfD8/eKHb3BpCIFdDYjg==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.32.0.tgz", + "integrity": "sha512-oBbhtDBkD+5z/T0NVJ5VenBWAid/S9QdVrod/UqxVqU7F8N+E9/INFQI48zCWr4iVlUMcszJPDElvJEsMDvvBQ==", "dependencies": { - "@sentry-internal/replay": "8.30.0", - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0" + "@sentry-internal/replay": "8.32.0", + "@sentry/core": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0" }, "engines": { "node": ">=14.18" @@ -6660,18 +6654,17 @@ } }, "node_modules/@sentry/browser": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.30.0.tgz", - "integrity": "sha512-M+tKqawH9S3CqlAIcqdZcHbcsNQkEa9MrPqPCYvXco3C4LRpNizJP2XwBiGQY2yK+fOSvbaWpPtlI938/wuRZQ==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.32.0.tgz", + "integrity": "sha512-AEKFj64g4iYwEMRvVcxiY0FswmClRXCP1IEvCqujn8OBS8AjMOr1z/RwYieEs0D90yNNB3YEqF8adrKENblJmw==", "dependencies": { - "@sentry-internal/browser-utils": "8.30.0", - "@sentry-internal/feedback": "8.30.0", - "@sentry-internal/replay": "8.30.0", - "@sentry-internal/replay-canvas": "8.30.0", - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0" + "@sentry-internal/browser-utils": "8.32.0", + "@sentry-internal/feedback": "8.32.0", + "@sentry-internal/replay": "8.32.0", + "@sentry-internal/replay-canvas": "8.32.0", + "@sentry/core": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0" }, "engines": { "node": ">=14.18" @@ -6926,38 +6919,37 @@ } }, "node_modules/@sentry/core": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.30.0.tgz", - "integrity": "sha512-CJ/FuWLw0QEKGKXGL/nm9eaOdajEcmPekLuHAuOCxID7N07R9l9laz3vFbAkUZ97GGDv3sYrJZgywfY3Moropg==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.32.0.tgz", + "integrity": "sha512-+xidTr0lZ0c755tq4k75dXPEb8PA+qvIefW3U9+dQMORLokBrYoKYMf5zZTG2k/OfSJS6OSxatUj36NFuCs3aA==", "dependencies": { - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0" + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/nextjs": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.30.0.tgz", - "integrity": "sha512-835H7/ERIGvxE2m9cYqB5Mmd4PfLPlVQdyJAEL3br7fpl5mp3A3JtA3AiZ98smpVW/rUkLHGOWziRb6uTgJSXA==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.32.0.tgz", + "integrity": "sha512-rnnSsKFd4u9TXGr0XVQ7lEl/PkTfNyJ4kxwu9gW+OJjzmmjzIAC4RyY4YQTR1+p/q9QrruWrXLEsuCPqAHfqNw==", "dependencies": { "@opentelemetry/instrumentation-http": "0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@rollup/plugin-commonjs": "26.0.1", - "@sentry/core": "8.30.0", - "@sentry/node": "8.30.0", - "@sentry/opentelemetry": "8.30.0", - "@sentry/react": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0", - "@sentry/vercel-edge": "8.30.0", + "@sentry-internal/browser-utils": "8.32.0", + "@sentry/core": "8.32.0", + "@sentry/node": "8.32.0", + "@sentry/opentelemetry": "8.32.0", + "@sentry/react": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0", + "@sentry/vercel-edge": "8.32.0", "@sentry/webpack-plugin": "2.22.3", "chalk": "3.0.0", "resolve": "1.22.8", - "rollup": "3.29.4", + "rollup": "3.29.5", "stacktrace-parser": "^0.1.10" }, "engines": { @@ -6974,16 +6966,17 @@ } }, "node_modules/@sentry/node": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.30.0.tgz", - "integrity": "sha512-Tog0Ag7sU3lNj4cPUZy1KRJXyYXZlWiwlk34KYNNxAk0vDiK6W0bF8mvS+aaUukgb7FO5A0eu9l+VApdBJOr3Q==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.32.0.tgz", + "integrity": "sha512-a2PoFA9j/HmJVGF/zXJhLP6QhRHGye/2EznQdHOELsH1BkeMgBaXl7D52r2E/b7qki647lXrdbspB6jid8NycA==", "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.25.1", "@opentelemetry/core": "^1.25.1", "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation-amqplib": "^0.42.0", "@opentelemetry/instrumentation-connect": "0.39.0", + "@opentelemetry/instrumentation-dataloader": "0.12.0", "@opentelemetry/instrumentation-express": "0.42.0", "@opentelemetry/instrumentation-fastify": "0.39.0", "@opentelemetry/instrumentation-fs": "0.15.0", @@ -7006,10 +6999,10 @@ "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.30.0", - "@sentry/opentelemetry": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0", + "@sentry/core": "8.32.0", + "@sentry/opentelemetry": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0", "import-in-the-middle": "^1.11.0" }, "engines": { @@ -7017,14 +7010,13 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.30.0.tgz", - "integrity": "sha512-6mCIP2zvxAiEsNEoF8kv+UUD4XGWSKJU6RY5BF1U26HLitXv1fNPtzaTR96Ehv9h0zktjLfqfpVUZ7DGkdBvLA==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.32.0.tgz", + "integrity": "sha512-YCD8EnwJJ2ab3zWWtu5VrvHP/6Ss6GGQH0TYx2cfeGG3c0wTA/5zYx9JR4i3hUtOh1pifN34HlY0yyQHD4yctg==", "dependencies": { - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0" + "@sentry/core": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0" }, "engines": { "node": ">=14.18" @@ -7038,15 +7030,14 @@ } }, "node_modules/@sentry/react": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.30.0.tgz", - "integrity": "sha512-ktQjXs87jdsxW0YrHci3sb6zcSzhMECWnrTVU/KGZF8UoDsk4P4xRCknijd2SSmDIjSkwzUAANR43UkCi4BTQg==", - "license": "MIT", - "dependencies": { - "@sentry/browser": "8.30.0", - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.32.0.tgz", + "integrity": "sha512-YljqK+k80XOvyXjK2p2neTncRcSuwlpL7qHtNgwR1MHx18FEi7HXlnm13J4g3kxao4ORMxlCXCEPNXlLT+vqQg==", + "dependencies": { + "@sentry/browser": "8.32.0", + "@sentry/core": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -7057,35 +7048,32 @@ } }, "node_modules/@sentry/types": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.30.0.tgz", - "integrity": "sha512-kgWW2BCjBmVlSQRG32GonHEVyeDbys74xf9mLPvynwHTgw3+NUlNAlEdu05xnb2ow4bCTHfbkS5G1zRgyv5k4Q==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.32.0.tgz", + "integrity": "sha512-hxckvN2MzS5SgGDgVQ0/QpZXk13Vrq4BtZLwXhPhyeTmZtUiUfWvcL5TFQqLinfKdTKPe9q2MxeAJ0D4LalhMg==", "engines": { "node": ">=14.18" } }, "node_modules/@sentry/utils": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.30.0.tgz", - "integrity": "sha512-wZxU2HWlzsnu8214Xy7S7cRIuD6h8Z5DnnkojJfX0i0NLooepZQk2824el1Q13AakLb7/S8CHSHXOMnCtoSduw==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.32.0.tgz", + "integrity": "sha512-t1WVERhgmYURxbBj9J4/H2P2X+VKqm7B3ce9iQyrZbdf5NekhcU4jHIecPUWCPHjQkFIqkVTorqeBmDTlg/UmQ==", "dependencies": { - "@sentry/types": "8.30.0" + "@sentry/types": "8.32.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/vercel-edge": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.30.0.tgz", - "integrity": "sha512-0R0HWmPZwIOunj4JQoOT9FexhesAVNpMkM2mezP7QlVGGBQA39s9j8+o658Ymh8xzKo1ZTg4pHjoySLPhrN1JA==", - "license": "MIT", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.32.0.tgz", + "integrity": "sha512-HxvQWQMjNsLPkYU0vArzjqh+p/vyw9CXyIruu3D89VQU0krL1JFhhhHWZj1UIb7MVTzNO4oq4HeldbOkI0AepA==", "dependencies": { - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0" + "@sentry/core": "8.32.0", + "@sentry/types": "8.32.0", + "@sentry/utils": "8.32.0" }, "engines": { "node": ">=14.18" @@ -8245,7 +8233,6 @@ "version": "2.15.26", "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8280,7 +8267,6 @@ "version": "8.6.1", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", - "license": "MIT", "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -8291,7 +8277,6 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", - "license": "MIT", "dependencies": { "@types/pg": "*" } @@ -8376,8 +8361,7 @@ "node_modules/@types/shimmer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", - "license": "MIT" + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -15534,7 +15518,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } @@ -15904,10 +15887,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.0.tgz", - "integrity": "sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q==", - "license": "Apache-2.0", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", + "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -15919,7 +15901,6 @@ "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -15931,7 +15912,6 @@ "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -21707,8 +21687,7 @@ "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", - "license": "MIT" + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" }, "node_modules/mri": { "version": "1.2.0", @@ -22810,22 +22789,19 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "license": "ISC", "engines": { "node": ">=4.0.0" } }, "node_modules/pg-protocol": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", - "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==", - "license": "MIT" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" }, "node_modules/pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -23383,7 +23359,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -23392,7 +23367,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23401,7 +23375,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23410,7 +23383,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", "dependencies": { "xtend": "^4.0.0" }, @@ -26034,7 +26006,6 @@ "version": "7.4.0", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", - "license": "MIT", "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", @@ -26250,10 +26221,9 @@ } }, "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "license": "MIT", + "version": "3.29.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", + "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", "bin": { "rollup": "dist/bin/rollup" }, @@ -26720,8 +26690,7 @@ "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", - "license": "BSD-2-Clause" + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, "node_modules/side-channel": { "version": "1.0.6", From 6ca0f249da231814bc69903533a82a8385280682 Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Fri, 4 Oct 2024 23:49:33 +0200 Subject: [PATCH 0046/1385] [automated]: crowdin sync (#7065) * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: automated format of translated files Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update apps/site/pages/fr/about/governance.md Signed-off-by: Brian Muenzenmeyer * Update apps/site/pages/id/about/governance.md Signed-off-by: Brian Muenzenmeyer * fix a translation link * fix more translations links --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Brian Muenzenmeyer Co-authored-by: nodejs-crowdin Co-authored-by: Brian Muenzenmeyer --- apps/site/pages/fr/about/governance.md | 2 +- apps/site/pages/id/about/governance.md | 4 ++-- apps/site/pages/id/about/index.mdx | 4 ++-- apps/site/pages/uk/about/index.mdx | 4 ++-- packages/i18n/locales/fr.json | 10 +++++++++- packages/i18n/locales/pt.json | 10 +++++++++- packages/i18n/locales/uk.json | 10 +++++++++- 7 files changed, 34 insertions(+), 10 deletions(-) diff --git a/apps/site/pages/fr/about/governance.md b/apps/site/pages/fr/about/governance.md index 73741b6ad0e12..2edda2f772c9b 100644 --- a/apps/site/pages/fr/about/governance.md +++ b/apps/site/pages/fr/about/governance.md @@ -24,7 +24,7 @@ Un guide pour les collaborateurs est disponible à l'adresse suivante : [collabo ## Comité de pilotage technique -Le projet est régi par le [Comité de pilotage technique (TSC)][Technical Steering Committee (TSC)] +Le projet est régi par le [Comité de pilotage technique (TSC)][technical steering committee (tsc)] qui est responsable de l'orientation de haut niveau du projet. Le TSC est un un sous-ensemble de collaborateurs actifs qui sont nommés par d'autres membres existants du TSC. diff --git a/apps/site/pages/id/about/governance.md b/apps/site/pages/id/about/governance.md index fccc0765aeab6..c9b5bbc4d3c70 100644 --- a/apps/site/pages/id/about/governance.md +++ b/apps/site/pages/id/about/governance.md @@ -11,7 +11,7 @@ Proyek Node.js mengikuti model pengambilan keputusan \[Pencarian Konsensus] \[]. ## Kolaborator -Repositori inti GitHub [nodejs/node] \[] dikelola oleh Kolaborator +Repositori inti GitHub [nodejs/node][] dikelola oleh Kolaborator yang dinominasikan oleh Kolaborator lain yang ada secara berkelanjutan. Individu yang memberikan kontribusi signifikan dan berharga akan dijadikan Kolaborator dan diberikan akses komitmen terhadap proyek. Individu-individu ini diidentifikasi oleh Kolaborator lain dan nominasi mereka didiskusikan dengan Kolaborator yang ada. @@ -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][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. [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 bb2d0e29b91ee..b420da357524f 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 -[berpilin]: https://twisted.org/ +[twisted]: https://twisted.org/ diff --git a/apps/site/pages/uk/about/index.mdx b/apps/site/pages/uk/about/index.mdx index 733472c03fbd6..9f65526d7ebd9 100644 --- a/apps/site/pages/uk/about/index.mdx +++ b/apps/site/pages/uk/about/index.mdx @@ -44,7 +44,7 @@ server.listen(port, hostname, () => { Ця модель використовується на противагу поширенішій моделі, у якій використовуються потоки ОС. Така модель відносно неефективна та важка у використанні. Крім того, користувачі Node.js можуть не хвилюватися про дедлоки, оскільки тут немає блокувань. Майже жодна функція не виконує ввід-вивід безпосередньо, тому процеси не блокуються, за винятком тих випадків, коли ввід-вивід виконується синхронними методами стандартної бібліотеки Node.js. Завдяки відсутності блокувань доцільно створювати масштабовані системи в Node.js. Якщо деякі терміни вам незрозумілі, перегляньте статтю про -[блокувальні та неблокувальні виклики][Blocking vs. Non-Blocking]. +[блокувальні та неблокувальні виклики][blocking vs. non-blocking]. --- @@ -54,7 +54,7 @@ HTTP є повноцінною частиною Node.js, розроблений Те, що Node.js спроєктований без використання потоків, не означає, що ви не можете використовувати багато ядер у своєму середовищі. Дочірні процеси можна створити за допомогою нашого API [`child_process.fork()`][]. Вони спроєктовані так, що з ними можна легко взаємодіяти. Модуль [`cluster`][] побудований на такому самому інтерфейсі, що дозволяє ділити сокети на багато процесів, аби збалансувати навантаження на ядра. -[блокуючі vs неблокуючі методи]: /learn/asynchronous-work/overview-of-blocking-vs-non-blocking +[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 diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index 80fcc13cb2696..e1c120f2e4079 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -35,13 +35,21 @@ "anIntroductionToTheNpmPackageManager": "Une introduction au gestionnaire de paquets npm", "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) et au-delà", "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, la différence entre le développement et la production", - "nodejsWithTypescript": "Node.js avec TypeScript", "nodejsWithWebassembly": "Node.js avec WebAssembly", "debugging": "Débogage de Node.js", "profiling": "Profilage des applications Node.js", "securityBestPractices": "Meilleures pratiques de sécurité" } }, + "typescript": { + "links": { + "typescript": "TypeScript", + "introduction": "Introduction à TypeScript", + "transpile": "Exécution du code TypeScript à l'aide de la transpilation", + "run": "Exécuter TypeScript avec un runner", + "runNatively": "Exécuter TypeScript en mode natif" + } + }, "asynchronousWork": { "links": { "asynchronousWork": "Travail asynchrone", diff --git a/packages/i18n/locales/pt.json b/packages/i18n/locales/pt.json index 42daa41d6b63b..20e3fbebb7dca 100644 --- a/packages/i18n/locales/pt.json +++ b/packages/i18n/locales/pt.json @@ -35,13 +35,21 @@ "anIntroductionToTheNpmPackageManager": "Introdução ao gestor de pacotes npm", "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) e além", "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, a diferença entre o desenvolvimento e a produção", - "nodejsWithTypescript": "Node.js com TypeScript", "nodejsWithWebassembly": "Node.js com WebAssembly", "debugging": "Depuração da Node.js", "profiling": "Definição de Perfis de Aplicações de Node.js", "securityBestPractices": "Boas Práticas de Segurança" } }, + "typescript": { + "links": { + "typescript": "TypeScript", + "introduction": "Introdução à TypeScript", + "transpile": "Executar o código da TypeScript utilizando a tradução de código", + "run": "Executar a TypeScript com uma executora", + "runNatively": "Executar a TypeScript Nativamente" + } + }, "asynchronousWork": { "links": { "asynchronousWork": "Trabalho Assíncrono", diff --git a/packages/i18n/locales/uk.json b/packages/i18n/locales/uk.json index 1802e748e8b67..14718639533fa 100644 --- a/packages/i18n/locales/uk.json +++ b/packages/i18n/locales/uk.json @@ -35,13 +35,21 @@ "anIntroductionToTheNpmPackageManager": "Вступ до менеджера пакетів npm", "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) і новіші версії", "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Різниця між клієнтським та розробницьким середовищем у Node.js", - "nodejsWithTypescript": "Node.js із TypeScript", "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": "Асинхронна робота", From b14bea1903e9f1e8550db92d9d9bd42ab39bf602 Mon Sep 17 00:00:00 2001 From: Cole Westbrook Date: Sun, 6 Oct 2024 16:11:47 -0400 Subject: [PATCH 0047/1385] Credit artist for Rocket Turtle branding (#7088) * Feat: Credit artist for Rocket Turtle branding * Fix: Move artist credit to above mascot --------- Co-authored-by: Cole --- apps/site/pages/en/about/branding.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/site/pages/en/about/branding.mdx b/apps/site/pages/en/about/branding.mdx index 156cb1c0da48d..f1296bf913122 100644 --- a/apps/site/pages/en/about/branding.mdx +++ b/apps/site/pages/en/about/branding.mdx @@ -9,6 +9,8 @@ Please review the [trademark policy](https://trademark-policy.openjsf.org/) for ## Node.js® Mascot +Credit to [@Ang_ngl on X](https://x.com/Ang_ngl) for designing and contributing the Rocket Turtle. + Node.js mascot Date: Mon, 7 Oct 2024 13:27:06 -0500 Subject: [PATCH 0048/1385] fix(calendar): use new CALENDAR_NODEJS_ID (#7097) --- apps/site/next.calendar.constants.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/next.calendar.constants.mjs b/apps/site/next.calendar.constants.mjs index a78dc8f422997..c1e2712be9b82 100644 --- a/apps/site/next.calendar.constants.mjs +++ b/apps/site/next.calendar.constants.mjs @@ -24,7 +24,7 @@ export const SHARED_CALENDAR_KEY = * This is Node.js's Public Google Calendar ID used for all public entries from Node.js Calendar */ export const CALENDAR_NODEJS_ID = - 'nodejs.org_nr77ama8p7d7f9ajrpnu506c98@group.calendar.google.com'; + 'c_16f0ae5d3a22625175d199dbdb1cac84c2d09eab7f173e94f558417cb5cdbfd8@group.calendar.google.com'; /** * Default Date format for Calendars and Time Components From 0bef4dbe7aaedcf402aec5d1c8116ed657c5e464 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Tue, 8 Oct 2024 03:44:09 +0100 Subject: [PATCH 0049/1385] fix: Update Node.js calendar links (#7098) Refs: https://github.com/nodejs/admin/issues/923 Signed-off-by: Richard Lau --- apps/site/redirects.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/redirects.json b/apps/site/redirects.json index 32d1e794e898c..8b751766c6355 100644 --- a/apps/site/redirects.json +++ b/apps/site/redirects.json @@ -14,11 +14,11 @@ }, { "source": "/calendar", - "destination": "https://calendar.google.com/calendar/embed?src=nodejs.org_nr77ama8p7d7f9ajrpnu506c98%40group.calendar.google.com" + "destination": "https://calendar.google.com/calendar/embed?src=c_16f0ae5d3a22625175d199dbdb1cac84c2d09eab7f173e94f558417cb5cdbfd8%40group.calendar.google.com" }, { "source": "/calendar.ics", - "destination": "https://calendar.google.com/calendar/ical/nodejs.org_nr77ama8p7d7f9ajrpnu506c98%40group.calendar.google.com/public/basic.ics" + "destination": "https://calendar.google.com/calendar/ical/c_16f0ae5d3a22625175d199dbdb1cac84c2d09eab7f173e94f558417cb5cdbfd8%40group.calendar.google.com/public/basic.ics" }, { "source": "/:locale/security", From 39f9579f680eadee9c44d854fe6e75907c7a0005 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 22:31:37 -0500 Subject: [PATCH 0050/1385] meta: bump typescript-eslint from 8.5.0 to 8.8.0 (#7079) Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.5.0 to 8.8.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.8.0/packages/typescript-eslint) --- updated-dependencies: - dependency-name: typescript-eslint 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 | 99 +++++++++++++++++--------------------- packages/i18n/package.json | 2 +- 3 files changed, 47 insertions(+), 56 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 3d6258e6bdadc..f4511020878e2 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -124,7 +124,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.5.4", - "typescript-eslint": "~8.5.0", + "typescript-eslint": "~8.8.0", "user-agent-data-types": "0.4.2" } } diff --git a/package-lock.json b/package-lock.json index 42dd8223b153c..ce8ef94bf5c85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -117,7 +117,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.5.4", - "typescript-eslint": "~8.5.0", + "typescript-eslint": "~8.8.0", "user-agent-data-types": "0.4.2" }, "engines": { @@ -28746,15 +28746,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.5.0.tgz", - "integrity": "sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.0.tgz", + "integrity": "sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.5.0", - "@typescript-eslint/parser": "8.5.0", - "@typescript-eslint/utils": "8.5.0" + "@typescript-eslint/eslint-plugin": "8.8.0", + "@typescript-eslint/parser": "8.8.0", + "@typescript-eslint/utils": "8.8.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -28770,17 +28769,16 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", - "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz", + "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/type-utils": "8.5.0", - "@typescript-eslint/utils": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.8.0", + "@typescript-eslint/type-utils": "8.8.0", + "@typescript-eslint/utils": "8.8.0", + "@typescript-eslint/visitor-keys": "8.8.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -28804,16 +28802,15 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz", - "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz", + "integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.8.0", + "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/typescript-estree": "8.8.0", + "@typescript-eslint/visitor-keys": "8.8.0", "debug": "^4.3.4" }, "engines": { @@ -28833,14 +28830,13 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", - "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz", + "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0" + "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/visitor-keys": "8.8.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -28851,14 +28847,13 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", - "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz", + "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/typescript-estree": "8.8.0", + "@typescript-eslint/utils": "8.8.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -28876,11 +28871,10 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", + "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -28890,16 +28884,15 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz", + "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0" + "@typescript-eslint/scope-manager": "8.8.0", + "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/typescript-estree": "8.8.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -28913,13 +28906,12 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", + "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/types": "8.8.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -28935,7 +28927,6 @@ "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" }, @@ -30536,7 +30527,7 @@ "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-import-x": "~4.2.1", "typescript": "~5.5.4", - "typescript-eslint": "~8.5.0" + "typescript-eslint": "~8.8.0" }, "engines": { "node": ">=20" diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 5af01be3f0d0e..be10eaf609d9c 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -23,6 +23,6 @@ "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-import-x": "~4.2.1", "typescript": "~5.5.4", - "typescript-eslint": "~8.5.0" + "typescript-eslint": "~8.8.0" } } From f5d9bdeae230e426c562ded26877ac15ae2a18ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 21:19:15 +1000 Subject: [PATCH 0051/1385] meta: bump @next/eslint-plugin-next from 14.2.11 to 14.2.14 (#7081) Bumps [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) from 14.2.11 to 14.2.14. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v14.2.14/packages/eslint-plugin-next) --- updated-dependencies: - dependency-name: "@next/eslint-plugin-next" dependency-type: direct:development 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 | 95 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 91 insertions(+), 6 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index f4511020878e2..decb50806694d 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -90,7 +90,7 @@ }, "devDependencies": { "@eslint/compat": "~1.1.1", - "@next/eslint-plugin-next": "~14.2.11", + "@next/eslint-plugin-next": "~14.2.14", "@storybook/addon-controls": "~8.3.0", "@storybook/addon-interactions": "~8.3.0", "@storybook/addon-themes": "~8.3.0", diff --git a/package-lock.json b/package-lock.json index ce8ef94bf5c85..acd3a406494a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,7 +83,7 @@ }, "devDependencies": { "@eslint/compat": "~1.1.1", - "@next/eslint-plugin-next": "~14.2.11", + "@next/eslint-plugin-next": "~14.2.14", "@storybook/addon-controls": "~8.3.0", "@storybook/addon-interactions": "~8.3.0", "@storybook/addon-themes": "~8.3.0", @@ -4331,11 +4331,10 @@ "integrity": "sha512-/0hWQfiaD5//LvGNgc8PjvyqV50vGK0cADYzaoOOGN8fxzBn3iAiaq3S0tCRnFBldq0LVveLcxCTi41ZoYgAgg==" }, "node_modules/@next/eslint-plugin-next": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.11.tgz", - "integrity": "sha512-7mw+xW7Y03Ph4NTCcAzYe+vu4BNjEHZUfZayyF3Y1D9RX6c5NIe25m1grHEAkyUuaqjRxOYhnCNeglOkIqLkBA==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.14.tgz", + "integrity": "sha512-kV+OsZ56xhj0rnTn6HegyTGkoa16Mxjrpk7pjWumyB2P8JVQb8S9qtkjy/ye0GnTr4JWtWG4x/2qN40lKZ3iVQ==", "dev": true, - "license": "MIT", "dependencies": { "glob": "10.3.10" } @@ -12886,6 +12885,15 @@ } } }, + "node_modules/eslint-config-next/node_modules/@next/eslint-plugin-next": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.11.tgz", + "integrity": "sha512-7mw+xW7Y03Ph4NTCcAzYe+vu4BNjEHZUfZayyF3Y1D9RX6c5NIe25m1grHEAkyUuaqjRxOYhnCNeglOkIqLkBA==", + "dev": true, + "dependencies": { + "glob": "10.3.10" + } + }, "node_modules/eslint-config-next/node_modules/eslint-plugin-react-hooks": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", @@ -12899,6 +12907,83 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, + "node_modules/eslint-config-next/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-config-next/node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/eslint-config-next/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 + }, + "node_modules/eslint-config-next/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-config-next/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, + "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/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", From bfae4b99867e5ec5ccb3f321bb63c1c540beed6c Mon Sep 17 00:00:00 2001 From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:58:38 +0200 Subject: [PATCH 0052/1385] Add mocking guide (#7092) * Add mocking guide * fixup: add explanation of mocking (and stubs) * fixup: add links to node docs & improve formatting * fixup: apply suggestions from code review Co-authored-by: Augustin Mauroy Co-authored-by: Aviv Keller Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup: wordsmith and add missing assertion to test case * Update mocking.md Co-authored-by: Aviv Keller Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup: apply suggestions from code review (installing undici & wordsmith `bar`) Co-authored-by: Antoine du Hamel Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup: wordsmith and sequence --------- Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Co-authored-by: Augustin Mauroy Co-authored-by: Aviv Keller Co-authored-by: Antoine du Hamel --- apps/site/navigation.json | 4 + .../pages/en/learn/test-runner/mocking.md | 270 ++++++++++++++++++ packages/i18n/locales/en.json | 3 +- 3 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 apps/site/pages/en/learn/test-runner/mocking.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 167dade569035..307ab6eb73d80 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -357,6 +357,10 @@ "usingTestRunner": { "link": "/learn/test-runner/using-test-runner", "label": "components.navigation.learn.testRunner.links.usingTestRunner" + }, + "mocking": { + "link": "/learn/test-runner/mocking", + "label": "components.navigation.learn.testRunner.links.mocking" } } } diff --git a/apps/site/pages/en/learn/test-runner/mocking.md b/apps/site/pages/en/learn/test-runner/mocking.md new file mode 100644 index 0000000000000..9da90c7869f02 --- /dev/null +++ b/apps/site/pages/en/learn/test-runner/mocking.md @@ -0,0 +1,270 @@ +--- +title: Mocking in tests +layout: learn +authors: JakobJingleheimer +--- + +# Mocking in tests + +Mocking is a means of creating a facsimile, a puppet. This is generally done in a `when 'a', do 'b'` manner of puppeteering. The idea is to limit the number of moving pieces and control things that "don't matter". "mocks" and "stubs" are technically different kinds of "test doubles". For the curious mind, a stub is a replacement that does nothing (a no-op) but track its invocation. A mock is a stub that also has a fake implementation (the `when 'a', do 'b'`). Within this doc, the difference is unimportant, and stubs are referred to as mocks. + +Tests should be deterministic: runnable in any order, any number of times, and always produce the same result. Proper setup and mocking make this possible. + +Node.js provides many ways to mock various pieces of code. + +This articles deals with the following types of tests: + +| type | description | example | mock candidates | +| :--------------- | :---------------------------------------- | :--------------------------------------------------------------------------------------------- | :--------------------------------------- | +| unit | the smallest bit of code you can isolate | `const sum = (a, b) => a + b` | own code, external code, external system | +| component | a unit + dependencies | `const arithmetic = (op = sum, a, b) => ops[op](a, b)` | external code, external system | +| integration | components fitting together | - | external code, external system | +| end-to-end (e2e) | app + external data stores, delivery, etc | A fake user (ex a Playwright agent) literally using an app connected to real external systems. | none (do not mock) | + +There are different schools of thought about when to mock and when not to mock, the broad strokes of which are outlined below. + +## When and not to mock + +There are 3 main mock candidates: + +- Own code +- External code +- External system + +### Own code + +This is what your project controls. + +```mjs displayName="your-project/main.mjs" +import foo from './foo.mjs'; + +export function main() { + const f = foo(); +} +``` + +Here, `foo` is an "own code" dependency of `main`. + +#### Why + +For a true unit test of `main`, `foo` should be mocked: you're testing that `main` works, not that `main` + `foo` work (that's a different test). + +#### Why not + +Mocking `foo` can be more trouble than worth, especially when `foo` is simple, well-tested, and rarely updated. + +Not mocking `foo` can be better because it's more authentic and increases coverage of `foo` (because `main`'s tests will also verify `foo`). This can, however, create noise: when `foo` breaks, a bunch of other tests will also break, so tracking down the problem is more tedious: if only the 1 test for the item ultimately responsible for the issue is failing, that's very easy to spot; whereas 100 tests failing creates a needle-in-a-haystack to find the real problem. + +### External code + +This is what your project does not control. + +```mjs displayName="your-project/main.mjs" +import bar from 'bar'; + +export function main() { + const f = bar(); +} +``` + +Here, `bar` is an external package, e.g. an npm dependency. + +Uncontroversially, for unit tests, this should always be mocked. For component and integration tests, whether to mock depends on what this is. + +#### Why + +Verifying that code that your project does not maintain works is not the goal of a unit test (and that code should have its own tests). + +#### Why not + +Sometimes, it's just not realistic to mock. For example, you would almost never mock a large framework such as react or angular (the medicine would be worse than the ailment). + +### External system + +These are things like databases, environments (Chromium or Firefox for a web app, an operating system for a node app, etc), file systems, memory store, etc. + +Ideally, mocking these would not be necessary. Aside from somehow creating isolated copies for each case (usually very impractical due to cost, additional execution time, etc), the next best option is to mock. Without mocking, tests sabotage each other: + +```mjs displayName="storage.mjs" +import { db } from 'db'; + +export function read(key, all = false) { + validate(key, val); + + if (all) return db.getAll(key); + + return db.getOne(key); +} + +export function save(key, val) { + validate(key, val); + + return db.upsert(key, val); +} +``` + +```mjs displayName="storage.test.mjs" +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + +import { db } from 'db'; + +import { save } from './storage.mjs'; + +describe('storage', { concurrency: true }, () => { + it('should retrieve the requested item', async () => { + await db.upsert('good', 'item'); // give it something to read + await db.upsert('erroneous', 'item'); // give it a chance to fail + + const results = await read('a', true); + + assert.equal(results.length, 1); // ensure read did not retrieve erroneous item + + assert.deepEqual(results[0], { key: 'good', val: 'item' }); + }); + + it('should save the new item', async () => { + const id = await save('good', 'item'); + + assert.ok(id); + + const items = await db.getAll(); + + assert.equal(items.length, 1); // ensure save did not create duplicates + + assert.deepEqual(items[0], { key: 'good', val: 'item' }); + }); +}); +``` + +In the above, the first and second cases (the `it()` statements) can sabotage each other because they are run concurrently and mutate the same store (a race condition): `save()`'s insertion can cause the otherwise valid `read()`'s test to fail its assertion on items found (and `read()`'s can do the same thing to `save()`'s). + +## What to mock + +### Modules + units + +This leverages [`mock`](https://nodejs.org/api/test.html#class-mocktracker) from the Node.js test runner. + +```mjs +import assert from 'node:assert/strict'; +import { before, describe, it, mock } from 'node:test'; + + +describe('foo', { concurrency: true }, () => { + let barMock = mock.fn(); + let foo; + + before(async () => { + const barNamedExports = await import('./bar.mjs') + // discard the original default export + .then(({ default, ...rest }) => rest); + + // It's usually not necessary to manually call restore() after each + // nor reset() after all (node does this automatically). + mock.module('./bar.mjs', { + defaultExport: barMock + // Keep the other exports that you don't want to mock. + namedExports: barNamedExports, + }); + + // This MUST be a dynamic import because that is the only way to ensure the + // import starts after the mock has been set up. + ({ foo } = await import('./foo.mjs')); + }); + + it('should do the thing', () => { + barMock.mockImplementationOnce(function bar_mock() {/* … */}); + + assert.equal(foo(), 42); + }); +}); +``` + +### APIs + +A little-known fact is that there is a builtin way to mock `fetch`. [`undici`](https://github.com/nodejs/undici) is the Node.js implementation of `fetch`. It's shipped with `node`, but not currently exposed by `node` itself, so it must be installed (ex `npm install undici`). + +```mjs displayName="endpoints.spec.mjs" +import assert from 'node:assert/strict'; +import { beforeEach, describe, it } from 'node:test'; +import { MockAgent, setGlobalDispatcher } from 'undici'; + +import endpoints from './endpoints.mjs'; + +describe('endpoints', { concurrency: true }, () => { + let agent; + beforeEach(() => { + agent = new MockAgent(); + setGlobalDispatcher(agent); + }); + + it('should retrieve data', async () => { + const endpoint = 'foo'; + const code = 200; + const data = { + key: 'good', + val: 'item', + }; + + agent + .get('example.com') + .intercept({ + path: endpoint, + method: 'GET', + }) + .reply(code, data); + + assert.deepEqual(await endpoints.get(endpoint), { + code, + data, + }); + }); + + it('should save data', async () => { + const endpoint = 'foo/1'; + const code = 201; + const data = { + key: 'good', + val: 'item', + }; + + agent + .get('example.com') + .intercept({ + path: endpoint, + method: 'PUT', + }) + .reply(code, data); + + assert.deepEqual(await endpoints.save(endpoint), { + code, + data, + }); + }); +}); +``` + +### Time + +Like Doctor Strange, you too can control time. You would usually do this just for convenience to avoid artificially protracted test runs (do you really want to wait 3 minutes for that `setTimeout()` to trigger?). You may also want to travel through time. This leverages [`mock.timers`](https://nodejs.org/api/test.html#class-mocktimers) from the Node.js test runner. + +Note the use of time-zone here (`Z` in the time-stamps). Neglecting to include a consistent time-zone will likely lead to unexpected restults. + +```mjs displayName="master-time.spec.mjs" +import assert from 'node:assert/strict'; +import { describe, it, mock } from 'node:test'; + +import ago from './ago.mjs'; + +describe('whatever', { concurrency: true }, () => { + it('should choose "minutes" when that\'s the closet unit', () => { + mock.timers.enable({ now: new Date('2000-01-01T00:02:02Z') }); + + const t = ago('1999-12-01T23:59:59Z'); + + assert.equal(t, '2 minutes ago'); + }); +}); +``` + +This is especially useful when comparing against a static fixture (that is checked into a repository), such as in [snapshot testing](https://nodejs.org/api/test.html#snapshot-testing). diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 096896b6f6057..df74ef6caeb7d 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -109,7 +109,8 @@ "links": { "testRunner": "Test Runner", "introduction": "Discovering Node.js's test runner", - "usingTestRunner": "Using Node.js's test runner" + "usingTestRunner": "Using Node.js's test runner", + "mocking": "Mocking in tests" } } }, From 0b24ff7c62813e01e3faeb129f9d0ad330d74902 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Tue, 8 Oct 2024 17:38:33 +0200 Subject: [PATCH 0053/1385] fix: dep vulnerability (#7095) --- apps/site/package.json | 2 +- package-lock.json | 495 ++++++++++++++++++++++------------------- 2 files changed, 263 insertions(+), 234 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index decb50806694d..33e005d3fab20 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -53,7 +53,7 @@ "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.1", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@sentry/nextjs": "~8.32.0", + "@sentry/nextjs": "^8.33.1", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", diff --git a/package-lock.json b/package-lock.json index acd3a406494a2..1751bc420691b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.1", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@sentry/nextjs": "~8.32.0", + "@sentry/nextjs": "^8.33.1", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", @@ -124,6 +124,252 @@ "node": "v20" } }, + "apps/site/node_modules/@sentry-internal/browser-utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.33.1.tgz", + "integrity": "sha512-TW6/r+Gl5jiXv54iK1xZ3mlVgTS/jaBp4vcQ0xGMdgiQ3WchEPcFSeYovL+YHT3tSud0GZqVtDQCz+5i76puqA==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1" + }, + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry-internal/feedback": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.33.1.tgz", + "integrity": "sha512-qauMRTm3qDaLqZ3ibI03cj4gLF40y0ij65nj+cns6iWxGCtPrO8tjvXFWuQsE7Aye9dGMnBgmv7uN+NTUtC3RA==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1" + }, + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry-internal/replay": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.33.1.tgz", + "integrity": "sha512-fm4coIOjmanU29NOVN9MyaP4fUCOYytbtFqVSKRFNZQ/xAgNeySiBIbUd6IjujMmnOk9bY0WEUMcdm3Uotjdog==", + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "8.33.1", + "@sentry/core": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1" + }, + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry-internal/replay-canvas": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.33.1.tgz", + "integrity": "sha512-nsxTFTPCT10Ty/v6+AiST3+yotGP1sUb8xqfKB9fPnS1hZHFryp0NnEls7xFjBsBbZPU1GpFkzrk/E6JFzixDQ==", + "license": "MIT", + "dependencies": { + "@sentry-internal/replay": "8.33.1", + "@sentry/core": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1" + }, + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry/browser": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.33.1.tgz", + "integrity": "sha512-c6zI/igexkLwZuGk+u8Rj26ChjxGgkhe6ZbKFsXCYaKAp5ep5X7HQRkkqgbxApiqlC0LduHdd/ymzh139JLg8w==", + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "8.33.1", + "@sentry-internal/feedback": "8.33.1", + "@sentry-internal/replay": "8.33.1", + "@sentry-internal/replay-canvas": "8.33.1", + "@sentry/core": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1" + }, + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry/core": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.33.1.tgz", + "integrity": "sha512-3SS41suXLFzxL3OQvTMZ6q92ZapELVq2l2SoWlZopcamWhog2Ru0dp2vkunq97kFHb2TzKRTlFH4+4gbT8SJug==", + "license": "MIT", + "dependencies": { + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1" + }, + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry/nextjs": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.33.1.tgz", + "integrity": "sha512-XLUyib6bCv2iynKaoYIotVKzLsGc9lr6QI4ZV3/PstiiXKwtTm1TPdBfIlrDJMGIMxH7Z/DmkvJNSESV19Ui6Q==", + "license": "MIT", + "dependencies": { + "@opentelemetry/instrumentation-http": "0.53.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@rollup/plugin-commonjs": "26.0.1", + "@sentry-internal/browser-utils": "8.33.1", + "@sentry/core": "8.33.1", + "@sentry/node": "8.33.1", + "@sentry/opentelemetry": "8.33.1", + "@sentry/react": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1", + "@sentry/vercel-edge": "8.33.1", + "@sentry/webpack-plugin": "2.22.3", + "chalk": "3.0.0", + "resolve": "1.22.8", + "rollup": "3.29.5", + "stacktrace-parser": "^0.1.10" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0", + "webpack": ">=5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "apps/site/node_modules/@sentry/node": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.33.1.tgz", + "integrity": "sha512-0Xmlrl5nU5Bx6YybaIfztyOIiIXW5X64vcK0u94Sg4uHcDO7YvEbhflKjp669ds2I6ZQ/czqxnaAY8gM6P2SCA==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.25.1", + "@opentelemetry/core": "^1.25.1", + "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation-amqplib": "^0.42.0", + "@opentelemetry/instrumentation-connect": "0.39.0", + "@opentelemetry/instrumentation-dataloader": "0.12.0", + "@opentelemetry/instrumentation-express": "0.42.0", + "@opentelemetry/instrumentation-fastify": "0.39.0", + "@opentelemetry/instrumentation-fs": "0.15.0", + "@opentelemetry/instrumentation-generic-pool": "0.39.0", + "@opentelemetry/instrumentation-graphql": "0.43.0", + "@opentelemetry/instrumentation-hapi": "0.41.0", + "@opentelemetry/instrumentation-http": "0.53.0", + "@opentelemetry/instrumentation-ioredis": "0.43.0", + "@opentelemetry/instrumentation-kafkajs": "0.3.0", + "@opentelemetry/instrumentation-koa": "0.43.0", + "@opentelemetry/instrumentation-lru-memoizer": "0.40.0", + "@opentelemetry/instrumentation-mongodb": "0.47.0", + "@opentelemetry/instrumentation-mongoose": "0.42.0", + "@opentelemetry/instrumentation-mysql": "0.41.0", + "@opentelemetry/instrumentation-mysql2": "0.41.0", + "@opentelemetry/instrumentation-nestjs-core": "0.40.0", + "@opentelemetry/instrumentation-pg": "0.44.0", + "@opentelemetry/instrumentation-redis-4": "0.42.0", + "@opentelemetry/instrumentation-undici": "0.6.0", + "@opentelemetry/resources": "^1.26.0", + "@opentelemetry/sdk-trace-base": "^1.26.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@prisma/instrumentation": "5.19.1", + "@sentry/core": "8.33.1", + "@sentry/opentelemetry": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1", + "import-in-the-middle": "^1.11.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry/opentelemetry": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.33.1.tgz", + "integrity": "sha512-D2aE2G0DUHLLnfbOXrTjiNJKAs/RZfOBJMidI4fC2AIwqCmrp55Aex4dRq4hxd8MPLR92Kt/ikHeJxlzWB15KA==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/core": "^1.25.1", + "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/sdk-trace-base": "^1.26.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "apps/site/node_modules/@sentry/react": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.33.1.tgz", + "integrity": "sha512-SsEX05xfcfOvo7/pK1UyeyTAYWH8iSIsXXlsjvnSRsbuJkjb0c+q6yiZpj3A2PRdbcx43nTVE1n0lSpgaqj2HA==", + "license": "MIT", + "dependencies": { + "@sentry/browser": "8.33.1", + "@sentry/core": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1", + "hoist-non-react-statics": "^3.3.2" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "react": "^16.14.0 || 17.x || 18.x || 19.x" + } + }, + "apps/site/node_modules/@sentry/types": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.33.1.tgz", + "integrity": "sha512-GjoAMvwtpIemoF/IiwZ7A60g4nQv3qwzR21GvJqDVUoKD0e8pv9OLX+HyXoUat4wEDGSuDUcUyUKD2G+od73QA==", + "license": "MIT", + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-uzuYpiiJuFY3N4WNHMBWUQX5oNv2t/TbG0OHRp3Rr7yeu+HSfD542TIp9/gMZ+G0Cxd8AmVO3wkKIFbk0TL4Qg==", + "license": "MIT", + "dependencies": { + "@sentry/types": "8.33.1" + }, + "engines": { + "node": ">=14.18" + } + }, + "apps/site/node_modules/@sentry/vercel-edge": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.33.1.tgz", + "integrity": "sha512-YKAsFAm4ctsKRdoS3LkYF4oG5BD1chT4Uqy4AaBhlz0s5iHxBI7YzZFbcW4YiNnDWT80tdF+FS7AvUAjy+npoA==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.33.1", + "@sentry/types": "8.33.1", + "@sentry/utils": "8.33.1" + }, + "engines": { + "node": ">=14.18" + } + }, "apps/site/node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -5263,6 +5509,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.40.0.tgz", + "integrity": "sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.53.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, "node_modules/@opentelemetry/instrumentation-mongodb": { "version": "0.47.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz", @@ -6589,60 +6850,6 @@ "tailwindcss": "^3.0.1" } }, - "node_modules/@sentry-internal/browser-utils": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.32.0.tgz", - "integrity": "sha512-DpUGhk5O1OVjT0fo9wsbEdO1R/S9gGBRDtn9+FFVeRtieJHwXpeZiLK+tZhTOvaILmtSoTPUEY3L5sK4j5Xq9g==", - "dependencies": { - "@sentry/core": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/feedback": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.32.0.tgz", - "integrity": "sha512-XB7hiVJQW1tNzpoXIHbvm3rjipIt7PZiJJtFg2vxaqu/FzdgOcYqQiwIKivJVAKuRZ9rIeJtK1jdXQFOc/TRJA==", - "dependencies": { - "@sentry/core": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/replay": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.32.0.tgz", - "integrity": "sha512-yiEUnn2yyo1AIQIFNeRX3tdK8fmyKIkxdFS1WiVQmeYI/hFwYBTZPly0FcO/g3xnRMSA2tvrS+hZEaaXfK4WhA==", - "dependencies": { - "@sentry-internal/browser-utils": "8.32.0", - "@sentry/core": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.32.0.tgz", - "integrity": "sha512-oBbhtDBkD+5z/T0NVJ5VenBWAid/S9QdVrod/UqxVqU7F8N+E9/INFQI48zCWr4iVlUMcszJPDElvJEsMDvvBQ==", - "dependencies": { - "@sentry-internal/replay": "8.32.0", - "@sentry/core": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0" - }, - "engines": { - "node": ">=14.18" - } - }, "node_modules/@sentry/babel-plugin-component-annotate": { "version": "2.22.3", "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.3.tgz", @@ -6652,23 +6859,6 @@ "node": ">= 14" } }, - "node_modules/@sentry/browser": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.32.0.tgz", - "integrity": "sha512-AEKFj64g4iYwEMRvVcxiY0FswmClRXCP1IEvCqujn8OBS8AjMOr1z/RwYieEs0D90yNNB3YEqF8adrKENblJmw==", - "dependencies": { - "@sentry-internal/browser-utils": "8.32.0", - "@sentry-internal/feedback": "8.32.0", - "@sentry-internal/replay": "8.32.0", - "@sentry-internal/replay-canvas": "8.32.0", - "@sentry/core": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0" - }, - "engines": { - "node": ">=14.18" - } - }, "node_modules/@sentry/bundler-plugin-core": { "version": "2.22.3", "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.3.tgz", @@ -6917,167 +7107,6 @@ "node": ">=10" } }, - "node_modules/@sentry/core": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.32.0.tgz", - "integrity": "sha512-+xidTr0lZ0c755tq4k75dXPEb8PA+qvIefW3U9+dQMORLokBrYoKYMf5zZTG2k/OfSJS6OSxatUj36NFuCs3aA==", - "dependencies": { - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/nextjs": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.32.0.tgz", - "integrity": "sha512-rnnSsKFd4u9TXGr0XVQ7lEl/PkTfNyJ4kxwu9gW+OJjzmmjzIAC4RyY4YQTR1+p/q9QrruWrXLEsuCPqAHfqNw==", - "dependencies": { - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@rollup/plugin-commonjs": "26.0.1", - "@sentry-internal/browser-utils": "8.32.0", - "@sentry/core": "8.32.0", - "@sentry/node": "8.32.0", - "@sentry/opentelemetry": "8.32.0", - "@sentry/react": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0", - "@sentry/vercel-edge": "8.32.0", - "@sentry/webpack-plugin": "2.22.3", - "chalk": "3.0.0", - "resolve": "1.22.8", - "rollup": "3.29.5", - "stacktrace-parser": "^0.1.10" - }, - "engines": { - "node": ">=14.18" - }, - "peerDependencies": { - "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0", - "webpack": "5.94.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - } - } - }, - "node_modules/@sentry/node": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.32.0.tgz", - "integrity": "sha512-a2PoFA9j/HmJVGF/zXJhLP6QhRHGye/2EznQdHOELsH1BkeMgBaXl7D52r2E/b7qki647lXrdbspB6jid8NycA==", - "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.25.1", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/instrumentation-amqplib": "^0.42.0", - "@opentelemetry/instrumentation-connect": "0.39.0", - "@opentelemetry/instrumentation-dataloader": "0.12.0", - "@opentelemetry/instrumentation-express": "0.42.0", - "@opentelemetry/instrumentation-fastify": "0.39.0", - "@opentelemetry/instrumentation-fs": "0.15.0", - "@opentelemetry/instrumentation-generic-pool": "0.39.0", - "@opentelemetry/instrumentation-graphql": "0.43.0", - "@opentelemetry/instrumentation-hapi": "0.41.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/instrumentation-ioredis": "0.43.0", - "@opentelemetry/instrumentation-kafkajs": "0.3.0", - "@opentelemetry/instrumentation-koa": "0.43.0", - "@opentelemetry/instrumentation-mongodb": "0.47.0", - "@opentelemetry/instrumentation-mongoose": "0.42.0", - "@opentelemetry/instrumentation-mysql": "0.41.0", - "@opentelemetry/instrumentation-mysql2": "0.41.0", - "@opentelemetry/instrumentation-nestjs-core": "0.40.0", - "@opentelemetry/instrumentation-pg": "0.44.0", - "@opentelemetry/instrumentation-redis-4": "0.42.0", - "@opentelemetry/instrumentation-undici": "0.6.0", - "@opentelemetry/resources": "^1.26.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.32.0", - "@sentry/opentelemetry": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0", - "import-in-the-middle": "^1.11.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/opentelemetry": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.32.0.tgz", - "integrity": "sha512-YCD8EnwJJ2ab3zWWtu5VrvHP/6Ss6GGQH0TYx2cfeGG3c0wTA/5zYx9JR4i3hUtOh1pifN34HlY0yyQHD4yctg==", - "dependencies": { - "@sentry/core": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0" - }, - "engines": { - "node": ">=14.18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - } - }, - "node_modules/@sentry/react": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.32.0.tgz", - "integrity": "sha512-YljqK+k80XOvyXjK2p2neTncRcSuwlpL7qHtNgwR1MHx18FEi7HXlnm13J4g3kxao4ORMxlCXCEPNXlLT+vqQg==", - "dependencies": { - "@sentry/browser": "8.32.0", - "@sentry/core": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0", - "hoist-non-react-statics": "^3.3.2" - }, - "engines": { - "node": ">=14.18" - }, - "peerDependencies": { - "react": "^16.14.0 || 17.x || 18.x || 19.x" - } - }, - "node_modules/@sentry/types": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.32.0.tgz", - "integrity": "sha512-hxckvN2MzS5SgGDgVQ0/QpZXk13Vrq4BtZLwXhPhyeTmZtUiUfWvcL5TFQqLinfKdTKPe9q2MxeAJ0D4LalhMg==", - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/utils": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.32.0.tgz", - "integrity": "sha512-t1WVERhgmYURxbBj9J4/H2P2X+VKqm7B3ce9iQyrZbdf5NekhcU4jHIecPUWCPHjQkFIqkVTorqeBmDTlg/UmQ==", - "dependencies": { - "@sentry/types": "8.32.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/vercel-edge": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.32.0.tgz", - "integrity": "sha512-HxvQWQMjNsLPkYU0vArzjqh+p/vyw9CXyIruu3D89VQU0krL1JFhhhHWZj1UIb7MVTzNO4oq4HeldbOkI0AepA==", - "dependencies": { - "@sentry/core": "8.32.0", - "@sentry/types": "8.32.0", - "@sentry/utils": "8.32.0" - }, - "engines": { - "node": ">=14.18" - } - }, "node_modules/@sentry/webpack-plugin": { "version": "2.22.3", "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.3.tgz", From 7ef584d083075b319ac0fce7f7f57edf34ac6c3f Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Tue, 8 Oct 2024 17:39:36 +0200 Subject: [PATCH 0054/1385] chore: update dependabot rules (#7087) chore: update dependabot --- .github/dependabot.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e9a555083b2da..034e03b176f8f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -23,6 +23,7 @@ updates: patterns: - '@typescript-eslint/*' - 'eslint' + - 'typescript-eslint' - 'eslint-*' - 'stylelint' - 'stylelint-*' @@ -43,10 +44,9 @@ updates: next-js: patterns: - 'next' - - 'turbo' - - 'next-mdx-remote' - - 'next-sitemap' - - 'next-themes' + - 'eslint-config-next' + - '@next/eslint-plugin-next' + - 'next-*' - '@vercel/*' mdx: patterns: @@ -63,8 +63,12 @@ updates: tailwind: patterns: - '@savvywombat/tailwindcss-grid-areas' + - '@tailwindcss/container-queries' - 'prettier-plugin-tailwindcss' - 'tailwindcss' + orama: + patterns: + - '@orama/*' ignore: # Manually update major versions of @types/node with the version specified within .nvmrc - dependency-name: '@types/node' From a95705b6d8f20776f1b572140c99281874f8a1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulises=20Gasc=C3=B3n?= Date: Tue, 8 Oct 2024 17:49:37 +0200 Subject: [PATCH 0055/1385] docs: add authors (#7096) Ref: https://github.com/nodejs/nodejs.org/pull/4896/commits/5c4e35b6c4fcb4286bbee23815f1ebc6a0f627ce --- .../pages/en/learn/getting-started/security-best-practices.md | 1 + 1 file changed, 1 insertion(+) 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 cfa1de4f557b5..6833efa8b49fe 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 @@ -1,6 +1,7 @@ --- title: Security Best Practices layout: learn +authors: RafaelGSS, UlisesGascon, fraxken, facutuesca, mhdawson, arhart, naugtur, anonrig --- # Security Best Practices From e74f56e3a04fa4243edd4a94338d924e6edd8d70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 10:55:26 -0700 Subject: [PATCH 0056/1385] meta: bump github/codeql-action from 3.26.10 to 3.26.12 (#7100) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.10 to 3.26.12. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/e2b3eafc8d227b0241d48be5f425d47c2d750a13...c36620d31ac7c881962c3d9dd939c40ec9434f2b) --- updated-dependencies: - dependency-name: github/codeql-action 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> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f3a313e1e8862..40b13d06ed537 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/init@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/autobuild@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 14a9519240f21..1aea26d7f383f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/upload-sarif@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 with: sarif_file: results.sarif From 087d414e06fcf7edd44e4c3808b18e31dc34023d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 10:55:31 -0700 Subject: [PATCH 0057/1385] meta: bump actions/upload-artifact from 4.4.0 to 4.4.1 (#7101) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.0 to 4.4.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/50769540e7f4bd5e21e526ee35c689e35e0d6874...604373da6381bf24206979c74d06a550515601b9) --- updated-dependencies: - dependency-name: actions/upload-artifact 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> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1aea26d7f383f..80b890fffbfe6 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -51,7 +51,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: Upload Artifacts - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4.4.1 with: name: SARIF file path: results.sarif From f6eaabcbe9dde761d0576c2bb98fb4e70cb37b37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 10:55:58 -0700 Subject: [PATCH 0058/1385] meta: bump actions/cache from 4.0.2 to 4.1.0 (#7102) Bumps [actions/cache](https://github.com/actions/cache) from 4.0.2 to 4.1.0. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/0c45773b623bea8c8e75f6c82b208c3cf94ea4f9...2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2) --- updated-dependencies: - dependency-name: actions/cache 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/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-pr.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4f26ca0736e0b..e9ca991227597 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: # regardless of having code changes or not fetch-depth: 1 - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 with: # See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node path: | diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index c63269db3b632..71099a91c7233 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -76,7 +76,7 @@ jobs: ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }} - name: Restore Lint Cache - uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + uses: actions/cache/restore@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 with: path: | .turbo/cache @@ -129,7 +129,7 @@ jobs: (github.event_name == 'pull_request_target' && startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + uses: actions/cache/save@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 with: path: | .turbo/cache diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index 8d156f1de843c..23214a5774c4d 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -76,7 +76,7 @@ jobs: ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }} - name: Restore Lint Cache - uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + uses: actions/cache/restore@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 with: path: | apps/site/.eslintmdcache @@ -120,7 +120,7 @@ jobs: commit_message: 'chore: automated format of translated files' - name: Save Lint Cache - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + uses: actions/cache/save@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 with: path: | apps/site/.eslintmdcache From 716856f217df5054fa33396e373ad8469abcc64c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 11:02:22 -0700 Subject: [PATCH 0059/1385] meta: bump actions/checkout from 4.2.0 to 4.2.1 (#7103) Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/d632683dd7b4114ad314bca15554477dd762a938...eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871) --- updated-dependencies: - dependency-name: actions/checkout 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> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr.yml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9ca991227597..bbe81722e9a24 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,7 +65,7 @@ jobs: run: echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%" - name: Git Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 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 }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 40b13d06ed537..bdf17331276f3 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -46,7 +46,7 @@ jobs: egress-policy: audit - name: Checkout repository - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 4f7c1e7565af0..3cc3be09d0671 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -26,7 +26,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Review Dependencies uses: actions/dependency-review-action@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4 diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index 07340a2cead3b..d2f8deb504c7e 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -43,7 +43,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 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 }} diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 71099a91c7233..99d34f77b7209 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -70,7 +70,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 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 }} @@ -164,7 +164,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 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 }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 80b890fffbfe6..a76bb51a149b7 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: persist-credentials: false diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index 23214a5774c4d..8724656e33c1b 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -70,7 +70,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 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 }} From 5fc6f9717c08a1797d7f77b81dd385825777d808 Mon Sep 17 00:00:00 2001 From: Michael Esteban Date: Wed, 9 Oct 2024 05:06:33 +1000 Subject: [PATCH 0060/1385] fix: handle the potential absence of events (#7091) * fix: handle the potential absence of events * chore: move logic to getCalendarEvents --- apps/site/next.calendar.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/next.calendar.mjs b/apps/site/next.calendar.mjs index 1d898c9aa0c37..a30c48e0e0dcb 100644 --- a/apps/site/next.calendar.mjs +++ b/apps/site/next.calendar.mjs @@ -35,5 +35,5 @@ export const getCalendarEvents = async (calendarId = '', maxResults = 20) => { return fetch(calendarQueryUrl.toString()) .then(response => response.json()) - .then(calendar => calendar.items); + .then(calendar => calendar.items ?? []); }; From c6e97a1656f6d6f546e2c58cf5ecf3e6321a9e1b Mon Sep 17 00:00:00 2001 From: Aquib Baig Date: Wed, 9 Oct 2024 00:55:31 +0530 Subject: [PATCH 0061/1385] fix table markup in branding pages (#7085) * fix table markup in branding pages * revert translation files --- apps/site/pages/en/about/branding.mdx | 156 +++++++++++++------------- 1 file changed, 81 insertions(+), 75 deletions(-) diff --git a/apps/site/pages/en/about/branding.mdx b/apps/site/pages/en/about/branding.mdx index f1296bf913122..0bb77028496da 100644 --- a/apps/site/pages/en/about/branding.mdx +++ b/apps/site/pages/en/about/branding.mdx @@ -24,89 +24,95 @@ Credit to [@Ang_ngl on X](https://x.com/Ang_ngl) for designing and contributing ### Node.js® Horizontal Logo - - - - + + + + + +
- Node.js Dark Horizontal Logo - - Node.js Light Horizontal Logo -
+ Node.js Dark Horizontal Logo + + Node.js Light Horizontal Logo +
### Node.js® Stacked Logo - - - - - - - - + + + + + + + + + +
- Node.js Dark Stacked Logo - - Node.js Light Stacked Logo -
- Node.js Black Stacked Logo - - Node.js White Stacked Logo -
+ Node.js Dark Stacked Logo + + Node.js Light Stacked Logo +
+ Node.js Black Stacked Logo + + Node.js White Stacked Logo +
### JS Icons - - - - + + + + + +
- JS Icons Green - - White JS Icons -
+ JS Icons Green + + White JS Icons +
From 5b77c34fb91ec4e6aeadf2ab598af5c77dea7236 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Tue, 8 Oct 2024 22:43:47 +0200 Subject: [PATCH 0062/1385] fix(accessibility): add right title/alt (#7094) --- apps/site/components/Common/AvatarGroup/Avatar/index.tsx | 6 ++++-- apps/site/components/Common/AvatarGroup/index.tsx | 5 +++-- apps/site/components/withMetaBar.tsx | 3 +-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx b/apps/site/components/Common/AvatarGroup/Avatar/index.tsx index 36122f839126f..4837f9b40b585 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx +++ b/apps/site/components/Common/AvatarGroup/Avatar/index.tsx @@ -6,18 +6,20 @@ import styles from './index.module.css'; export type AvatarProps = { src: string; alt: string; + fallback: string; }; -const Avatar: FC = ({ src, alt }) => ( +const Avatar: FC = ({ src, alt, fallback }) => ( - {alt} + {fallback} ); diff --git a/apps/site/components/Common/AvatarGroup/index.tsx b/apps/site/components/Common/AvatarGroup/index.tsx index b7172ec8dfc6b..4dea98b700d5d 100644 --- a/apps/site/components/Common/AvatarGroup/index.tsx +++ b/apps/site/components/Common/AvatarGroup/index.tsx @@ -11,7 +11,7 @@ import { getAcronymFromString } from '@/util/stringUtils'; import styles from './index.module.css'; type AvatarGroupProps = { - avatars: Array>; + avatars: Array, 'fallback'>>; limit?: number; isExpandable?: boolean; }; @@ -33,7 +33,8 @@ const AvatarGroup: FC = ({ {renderAvatars.map((avatar, index) => ( ))} diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index f4db3091a77e7..543d901d55f4b 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -10,7 +10,6 @@ import { useClientContext } from '@/hooks/react-client'; import useMediaQuery from '@/hooks/react-client/useMediaQuery'; import { DEFAULT_DATE_FORMAT } from '@/next.calendar.constants.mjs'; import { getGitHubBlobUrl, getGitHubAvatarUrl } from '@/util/gitHubUtils'; -import { getAcronymFromString } from '@/util/stringUtils'; const WithMetaBar: FC = () => { const { headings, readingTime, frontmatter, filename } = useClientContext(); @@ -23,7 +22,7 @@ const WithMetaBar: FC = () => { frontmatter.authors?.split(',').map(author => author.trim()) ?? []; const avatars = usernames.map(username => ({ src: getGitHubAvatarUrl(username), - alt: getAcronymFromString(username), + alt: username, })); // Doing that because on mobile list on top of page and on desktop list on the right side From 7611d9a7a16c9624a12faca38592e11f622386fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 06:44:27 -0500 Subject: [PATCH 0063/1385] meta: bump @eslint/compat from 1.1.1 to 1.2.0 (#7109) Bumps [@eslint/compat](https://github.com/eslint/rewrite) from 1.1.1 to 1.2.0. - [Release notes](https://github.com/eslint/rewrite/releases) - [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json) - [Commits](https://github.com/eslint/rewrite/compare/compat-v1.1.1...compat-v1.2.0) --- updated-dependencies: - dependency-name: "@eslint/compat" 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 | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 33e005d3fab20..2fc8ea90459a1 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -89,7 +89,7 @@ "vfile-matter": "~5.0.0" }, "devDependencies": { - "@eslint/compat": "~1.1.1", + "@eslint/compat": "~1.2.0", "@next/eslint-plugin-next": "~14.2.14", "@storybook/addon-controls": "~8.3.0", "@storybook/addon-interactions": "~8.3.0", diff --git a/package-lock.json b/package-lock.json index 1751bc420691b..8915171a8bf48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,7 +82,7 @@ "vfile-matter": "~5.0.0" }, "devDependencies": { - "@eslint/compat": "~1.1.1", + "@eslint/compat": "~1.2.0", "@next/eslint-plugin-next": "~14.2.14", "@storybook/addon-controls": "~8.3.0", "@storybook/addon-interactions": "~8.3.0", @@ -3195,13 +3195,20 @@ } }, "node_modules/@eslint/compat": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.1.1.tgz", - "integrity": "sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.0.tgz", + "integrity": "sha512-CkPWddN7J9JPrQedEr2X7AjK9y1jaMJtxZ4A/+jTMFA2+n5BWhcKHW/EbJyARqg2zzQfgtWUtVmG3hrG6+nGpg==", "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": { From c5ed18a9cfb3d35bab6a724fa6ce64dd43dbe049 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 06:44:50 -0500 Subject: [PATCH 0064/1385] meta: bump @oramacloud/client from 1.3.15 to 1.3.16 (#7107) Bumps @oramacloud/client from 1.3.15 to 1.3.16. --- updated-dependencies: - dependency-name: "@oramacloud/client" 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 | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 2fc8ea90459a1..4d6093f9905df 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -41,7 +41,7 @@ "@node-core/website-i18n": "*", "@nodevu/core": "~0.1.0", "@orama/highlight": "^0.1.6", - "@oramacloud/client": "^1.3.15", + "@oramacloud/client": "^1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-dialog": "^1.1.1", diff --git a/package-lock.json b/package-lock.json index 8915171a8bf48..68234299252de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "@node-core/website-i18n": "*", "@nodevu/core": "~0.1.0", "@orama/highlight": "^0.1.6", - "@oramacloud/client": "^1.3.15", + "@oramacloud/client": "^1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-dialog": "^1.1.1", @@ -5754,10 +5754,9 @@ } }, "node_modules/@oramacloud/client": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.15.tgz", - "integrity": "sha512-QBgQrK0WA9pPzeVh/E6p44erwL0IJaHB3TrbEAsrduqbj38xY06jjpYsn//2fJt34jEnIBjOwPkjZ3OJEJlR4A==", - "license": "ISC", + "version": "1.3.16", + "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.16.tgz", + "integrity": "sha512-WOc7hcg40x5OZb1rPiH/qSLeDb1hzCy4jVIV1wSfwni/ZQ4cHRyDKuMda5iyjF3A+ZgQfH1P5Oqi03cZSZw98g==", "dependencies": { "@orama/orama": "^2.0.16", "@paralleldrive/cuid2": "^2.2.1", From b27693aaceb39ca2b9714a2d95062cd037b63c47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:45:26 +0000 Subject: [PATCH 0065/1385] meta: bump @radix-ui/react-dialog from 1.1.1 to 1.1.2 (#7105) Bumps [@radix-ui/react-dialog](https://github.com/radix-ui/primitives) from 1.1.1 to 1.1.2. - [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-dialog" 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 | 145 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 135 insertions(+), 12 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 4d6093f9905df..5e2be5fe461dc 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -44,7 +44,7 @@ "@oramacloud/client": "^1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.0", - "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-scroll-area": "^1.1.0", diff --git a/package-lock.json b/package-lock.json index 68234299252de..34213b5c8729a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,7 +37,7 @@ "@oramacloud/client": "^1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.0", - "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-scroll-area": "^1.1.0", @@ -6043,25 +6043,24 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", - "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", + "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.0", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "1.1.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", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" + "react-remove-scroll": "2.6.0" }, "peerDependencies": { "@types/react": "*", @@ -6078,6 +6077,130 @@ } } }, + "node_modules/@radix-ui/react-dialog/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-dialog/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-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "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-dialog/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-dialog/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-dialog/node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-direction": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", From 40817ffa9a2b2a86eb94f68f511193aca5fbc3b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:46:23 +0000 Subject: [PATCH 0066/1385] meta: bump @radix-ui/react-scroll-area from 1.1.0 to 1.2.0 (#7108) Bumps [@radix-ui/react-scroll-area](https://github.com/radix-ui/primitives) from 1.1.0 to 1.2.0. - [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-scroll-area" 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 | 50 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 5e2be5fe461dc..6719e0e7f70fa 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -47,7 +47,7 @@ "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-scroll-area": "^1.2.0", "@radix-ui/react-select": "^2.1.1", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.0", diff --git a/package-lock.json b/package-lock.json index 34213b5c8729a..00ed59b65b19b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-scroll-area": "^1.2.0", "@radix-ui/react-select": "^2.1.1", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.0", @@ -6528,17 +6528,16 @@ } }, "node_modules/@radix-ui/react-scroll-area": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.1.0.tgz", - "integrity": "sha512-9ArIZ9HWhsrfqS765h+GZuLoxaRHD/j0ZWOWilsCvYTpYJp8XwCqNG7Dt9Nu/TItKOdgLGkOPCodQvDc+UMwYg==", - "license": "MIT", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz", + "integrity": "sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==", "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.0", + "@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-layout-effect": "1.1.0" @@ -6558,6 +6557,43 @@ } } }, + "node_modules/@radix-ui/react-scroll-area/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-scroll-area/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-select": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.1.tgz", From c58855d0e2b49a2fdca3a9f77f5439494d9dbb88 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:47:02 +0000 Subject: [PATCH 0067/1385] meta: bump @radix-ui/react-toast from 1.2.1 to 1.2.2 (#7111) Bumps [@radix-ui/react-toast](https://github.com/radix-ui/primitives) from 1.2.1 to 1.2.2. - [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-toast" 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 | 103 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 95 insertions(+), 10 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 6719e0e7f70fa..09d9d1cbb0a99 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -51,7 +51,7 @@ "@radix-ui/react-select": "^2.1.1", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.0", - "@radix-ui/react-toast": "^1.2.1", + "@radix-ui/react-toast": "^1.2.2", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@sentry/nextjs": "^8.33.1", "@tailwindcss/container-queries": "~0.1.1", diff --git a/package-lock.json b/package-lock.json index 00ed59b65b19b..be7bd41d64178 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,7 @@ "@radix-ui/react-select": "^2.1.1", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.0", - "@radix-ui/react-toast": "^1.2.1", + "@radix-ui/react-toast": "^1.2.2", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@sentry/nextjs": "^8.33.1", "@tailwindcss/container-queries": "~0.1.1", @@ -6686,18 +6686,17 @@ } }, "node_modules/@radix-ui/react-toast": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.1.tgz", - "integrity": "sha512-5trl7piMXcZiCq7MW6r8YYmu0bK5qDpTWz+FdEPdKyft2UixkspheYbjbrLXVN5NGKHFbOP7lm8eD0biiSqZqg==", - "license": "MIT", + "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==", "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.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "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", @@ -6719,6 +6718,92 @@ } } }, + "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-use-callback-ref": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", From e94a0986eb9642da83ed7f3a0beb1a41f226c2c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:49:41 +0000 Subject: [PATCH 0068/1385] meta: bump @types/react from 18.3.10 to 18.3.11 in the react group (#7104) Bumps the react group with 1 update: [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). Updates `@types/react` from 18.3.10 to 18.3.11 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: react ... 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 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 09d9d1cbb0a99..5e68207162842 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -100,7 +100,7 @@ "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.13", - "@types/react": "^18.3.10", + "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint": "~9.10.0", diff --git a/package-lock.json b/package-lock.json index be7bd41d64178..a5c5f8bd7d01a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,7 +93,7 @@ "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.13", - "@types/react": "^18.3.10", + "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint": "~9.10.0", @@ -8580,9 +8580,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.10.tgz", - "integrity": "sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==", + "version": "18.3.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", + "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", "devOptional": true, "dependencies": { "@types/prop-types": "*", From eb38c2f6a878dfa86bfbd4967a48cf0c14c412ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 06:56:39 -0500 Subject: [PATCH 0069/1385] meta: bump @radix-ui/react-select from 2.1.1 to 2.1.2 (#7112) Bumps [@radix-ui/react-select](https://github.com/radix-ui/primitives) from 2.1.1 to 2.1.2. - [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-select" 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 | 120 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 111 insertions(+), 11 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 5e68207162842..fa94c4edc685e 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -48,7 +48,7 @@ "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-scroll-area": "^1.2.0", - "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", diff --git a/package-lock.json b/package-lock.json index a5c5f8bd7d01a..3d2b07e94d7bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-scroll-area": "^1.2.0", - "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", @@ -6595,23 +6595,22 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.1.tgz", - "integrity": "sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==", - "license": "MIT", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", + "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", "dependencies": { "@radix-ui/number": "1.1.0", "@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.0", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-portal": "1.1.2", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-slot": "1.1.0", "@radix-ui/react-use-callback-ref": "1.1.0", @@ -6620,7 +6619,7 @@ "@radix-ui/react-use-previous": "1.1.0", "@radix-ui/react-visually-hidden": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" + "react-remove-scroll": "2.6.0" }, "peerDependencies": { "@types/react": "*", @@ -6637,6 +6636,107 @@ } } }, + "node_modules/@radix-ui/react-select/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-select/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-select/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "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-select/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-select/node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", From a6ff80c73f4cb6072c450459942d00405d7c56ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 06:57:00 -0500 Subject: [PATCH 0070/1385] meta: bump @radix-ui/react-avatar from 1.1.0 to 1.1.1 (#7110) Bumps [@radix-ui/react-avatar](https://github.com/radix-ui/primitives) from 1.1.0 to 1.1.1. - [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-avatar" 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 | 25 +++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index fa94c4edc685e..7f9b2c77b0eb4 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -43,7 +43,7 @@ "@orama/highlight": "^0.1.6", "@oramacloud/client": "^1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", - "@radix-ui/react-avatar": "^1.1.0", + "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", diff --git a/package-lock.json b/package-lock.json index 3d2b07e94d7bd..af22ff3d0d18f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,7 @@ "@orama/highlight": "^0.1.6", "@oramacloud/client": "^1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", - "@radix-ui/react-avatar": "^1.1.0", + "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", @@ -5961,12 +5961,11 @@ } }, "node_modules/@radix-ui/react-avatar": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.0.tgz", - "integrity": "sha512-Q/PbuSMk/vyAd/UoIShVGZ7StHHeRFYU7wXmi5GV+8cLXflZAEpHL/F697H1klrzxKXNtZ97vWiC0q3RKUH8UA==", - "license": "MIT", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", + "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", "dependencies": { - "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" @@ -5986,6 +5985,20 @@ } } }, + "node_modules/@radix-ui/react-avatar/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-collection": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", From 6360223d79b03c9f97dc1f59884a75fd0a8d6728 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 06:58:01 -0500 Subject: [PATCH 0071/1385] meta: bump the lint group across 1 directory with 5 updates (#7106) Bumps the lint group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `14.2.11` | `14.2.14` | | [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) | `4.2.1` | `4.3.1` | | [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) | `7.36.1` | `7.37.1` | | [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) | `5.1.0-rc-4c58fce7-20240904` | `5.1.0-rc.0` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.8.0` | `8.8.1` | Updates `eslint-config-next` from 14.2.11 to 14.2.14 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v14.2.14/packages/eslint-config-next) Updates `eslint-plugin-import-x` from 4.2.1 to 4.3.1 - [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.2.1...v4.3.1) Updates `eslint-plugin-react` from 7.36.1 to 7.37.1 - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.36.1...v7.37.1) Updates `eslint-plugin-react-hooks` from 5.1.0-rc-4c58fce7-20240904 to 5.1.0-rc.0 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks) Updates `typescript-eslint` from 8.8.0 to 8.8.1 - [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.8.1/packages/typescript-eslint) --- updated-dependencies: - dependency-name: eslint-config-next dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint - dependency-name: eslint-plugin-import-x dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint-plugin-react-hooks 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-patch dependency-group: lint ... 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 | 220 +++++++++++-------------------------- packages/i18n/package.json | 4 +- 3 files changed, 72 insertions(+), 162 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 7f9b2c77b0eb4..0efdae5241b5d 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -104,13 +104,13 @@ "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint": "~9.10.0", - "eslint-config-next": "~14.2.11", + "eslint-config-next": "~14.2.14", "eslint-import-resolver-typescript": "~3.6.3", - "eslint-plugin-import-x": "~4.2.1", + "eslint-plugin-import-x": "~4.3.1", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-no-relative-import-paths": "~1.5.5", - "eslint-plugin-react": "~7.36.1", - "eslint-plugin-react-hooks": "5.1.0-rc-4c58fce7-20240904", + "eslint-plugin-react": "~7.37.1", + "eslint-plugin-react-hooks": "5.1.0-rc.0", "eslint-plugin-storybook": "0.9.0--canary.156.26b630a.0", "handlebars": "4.7.8", "jest": "29.7.0", @@ -124,7 +124,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.5.4", - "typescript-eslint": "~8.8.0", + "typescript-eslint": "~8.8.1", "user-agent-data-types": "0.4.2" } } diff --git a/package-lock.json b/package-lock.json index af22ff3d0d18f..8bd46e6b5347b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -97,13 +97,13 @@ "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint": "~9.10.0", - "eslint-config-next": "~14.2.11", + "eslint-config-next": "~14.2.14", "eslint-import-resolver-typescript": "~3.6.3", - "eslint-plugin-import-x": "~4.2.1", + "eslint-plugin-import-x": "~4.3.1", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-no-relative-import-paths": "~1.5.5", - "eslint-plugin-react": "~7.36.1", - "eslint-plugin-react-hooks": "5.1.0-rc-4c58fce7-20240904", + "eslint-plugin-react": "~7.37.1", + "eslint-plugin-react-hooks": "5.1.0-rc.0", "eslint-plugin-storybook": "0.9.0--canary.156.26b630a.0", "handlebars": "4.7.8", "jest": "29.7.0", @@ -117,7 +117,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.5.4", - "typescript-eslint": "~8.8.0", + "typescript-eslint": "~8.8.1", "user-agent-data-types": "0.4.2" }, "engines": { @@ -13250,16 +13250,15 @@ } }, "node_modules/eslint-config-next": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.11.tgz", - "integrity": "sha512-gGIoBoHCJuLn6vaV1Ke8UurVvgb7JjQv6oRlWmI6RAAxz7KwJOYxxm2blctavA0a3eofbE9TdgKvvTb2G55OHQ==", + "version": "14.2.14", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.14.tgz", + "integrity": "sha512-TXwyjGICAlWC9O0OufS3koTsBKQH8l1xt3SY/aDuvtKHIwjTHplJKWVb1WOEX0OsDaxGbFXmfD2EY1sNfG0Y/w==", "dev": true, - "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "14.2.11", + "@next/eslint-plugin-next": "14.2.14", "@rushstack/eslint-patch": "^1.3.3", - "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.28.1", @@ -13277,15 +13276,6 @@ } } }, - "node_modules/eslint-config-next/node_modules/@next/eslint-plugin-next": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.11.tgz", - "integrity": "sha512-7mw+xW7Y03Ph4NTCcAzYe+vu4BNjEHZUfZayyF3Y1D9RX6c5NIe25m1grHEAkyUuaqjRxOYhnCNeglOkIqLkBA==", - "dev": true, - "dependencies": { - "glob": "10.3.10" - } - }, "node_modules/eslint-config-next/node_modules/eslint-plugin-react-hooks": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", @@ -13299,83 +13289,6 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/eslint-config-next/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-config-next/node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/eslint-config-next/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 - }, - "node_modules/eslint-config-next/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-config-next/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, - "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/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -13566,11 +13479,10 @@ } }, "node_modules/eslint-plugin-import-x": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz", - "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.3.1.tgz", + "integrity": "sha512-5TriWkXulDl486XnYYRgsL+VQoS/7mhN/2ci02iLCuL7gdhbiWxnsuL/NTcaKY9fpMgsMFjWZBtIGW7pb+RX0g==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.1.0", "debug": "^4.3.4", @@ -13910,11 +13822,10 @@ "license": "ISC" }, "node_modules/eslint-plugin-react": { - "version": "7.36.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", - "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", + "version": "7.37.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", + "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -13943,11 +13854,10 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0-rc-4c58fce7-20240904", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-4c58fce7-20240904.tgz", - "integrity": "sha512-PDoulHvydL8q8QhhyQx9y7c0Ot79D/o53+/6GG/9stROV2iBteNl/n8WNxwdcVtaSrFJ2BXd/M1U2fyjhelUzA==", + "version": "5.1.0-rc.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc.0.tgz", + "integrity": "sha512-xBc+mRT2KSyzKm78GyaOFPyF4EnSRfTSmre88Ak8jG1HnpNGEiHETbCuXih8Xl796DryrJej/8IdW4oQ+m5kPg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -29223,14 +29133,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.0.tgz", - "integrity": "sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.1.tgz", + "integrity": "sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.8.0", - "@typescript-eslint/parser": "8.8.0", - "@typescript-eslint/utils": "8.8.0" + "@typescript-eslint/eslint-plugin": "8.8.1", + "@typescript-eslint/parser": "8.8.1", + "@typescript-eslint/utils": "8.8.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -29246,16 +29156,16 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz", - "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==", + "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, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/type-utils": "8.8.0", - "@typescript-eslint/utils": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.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", @@ -29279,15 +29189,15 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz", - "integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==", + "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, "dependencies": { - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/typescript-estree": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.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": { @@ -29307,13 +29217,13 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz", - "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", + "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, "dependencies": { - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.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" @@ -29324,13 +29234,13 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz", - "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==", + "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, "dependencies": { - "@typescript-eslint/typescript-estree": "8.8.0", - "@typescript-eslint/utils": "8.8.0", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/utils": "8.8.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -29348,9 +29258,9 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", - "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", + "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, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -29361,15 +29271,15 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz", - "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz", + "integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/typescript-estree": "8.8.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" @@ -29383,12 +29293,12 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", - "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", + "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, "dependencies": { - "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/types": "8.8.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -31002,9 +30912,9 @@ "devDependencies": { "eslint": "~9.10.0", "eslint-import-resolver-typescript": "~3.6.3", - "eslint-plugin-import-x": "~4.2.1", + "eslint-plugin-import-x": "~4.3.1", "typescript": "~5.5.4", - "typescript-eslint": "~8.8.0" + "typescript-eslint": "~8.8.1" }, "engines": { "node": ">=20" diff --git a/packages/i18n/package.json b/packages/i18n/package.json index be10eaf609d9c..9fa17a30a0311 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -21,8 +21,8 @@ "devDependencies": { "eslint": "~9.10.0", "eslint-import-resolver-typescript": "~3.6.3", - "eslint-plugin-import-x": "~4.2.1", + "eslint-plugin-import-x": "~4.3.1", "typescript": "~5.5.4", - "typescript-eslint": "~8.8.0" + "typescript-eslint": "~8.8.1" } } From f116efe39e942f67b302b3e9853c823a9beff92d Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Thu, 10 Oct 2024 14:03:09 +0200 Subject: [PATCH 0072/1385] feat(layout): Refractoring (#6929) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(layout): introduce SimplePage * feat(layout): refractoring * fix: flex col ≠ flex row --- apps/site/app/[locale]/error.tsx | 33 +++++------- apps/site/app/[locale]/not-found.tsx | 51 +++++++++---------- apps/site/app/global-error.tsx | 31 +++++------ apps/site/components/withLayout.tsx | 6 ++- apps/site/layouts/ArticlePage.tsx | 24 +++++++++ apps/site/layouts/Centered.tsx | 18 ------- apps/site/layouts/Content.tsx | 9 ---- apps/site/layouts/GlowingBackdrop.tsx | 35 +++++++++++++ apps/site/layouts/Home.tsx | 16 ------ apps/site/layouts/Post.tsx | 5 +- .../pages/en/download/package-manager/all.md | 32 +----------- apps/site/types/layouts.ts | 3 +- 12 files changed, 117 insertions(+), 146 deletions(-) create mode 100644 apps/site/layouts/ArticlePage.tsx delete mode 100644 apps/site/layouts/Content.tsx create mode 100644 apps/site/layouts/GlowingBackdrop.tsx delete mode 100644 apps/site/layouts/Home.tsx diff --git a/apps/site/app/[locale]/error.tsx b/apps/site/app/[locale]/error.tsx index a62a830d1f1ed..f7c05407a2508 100644 --- a/apps/site/app/[locale]/error.tsx +++ b/apps/site/app/[locale]/error.tsx @@ -6,31 +6,26 @@ import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import Button from '@/components/Common/Button'; -import GlowingBackdrop from '@/components/Common/GlowingBackdrop'; -import CenteredLayout from '@/layouts/Centered'; +import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; const ErrorPage: FC<{ error: Error }> = ({ error }) => { captureException(error); const t = useTranslations(); return ( - - - -

- 500 -

- {t('layouts.error.internalServerError.title')} -

-

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

- -
- + + 500 +

+ {t('layouts.error.internalServerError.title')} +

+

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

+ +
); }; diff --git a/apps/site/app/[locale]/not-found.tsx b/apps/site/app/[locale]/not-found.tsx index 44d8839a42d7d..ec3a343628e52 100644 --- a/apps/site/app/[locale]/not-found.tsx +++ b/apps/site/app/[locale]/not-found.tsx @@ -6,40 +6,35 @@ import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import Button from '@/components/Common/Button'; -import GlowingBackdrop from '@/components/Common/GlowingBackdrop'; -import CenteredLayout from '@/layouts/Centered'; +import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; const NotFoundPage: FC = () => { const t = useTranslations(); return ( - - - -
- 404 -

- {t('layouts.error.notFound.title')} -

-
-
- The Node.js mascot -
+ + 404 +

+ {t('layouts.error.notFound.title')} +

+
+
+ The Node.js mascot
-

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

- -
-
+
+

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

+ + ); }; diff --git a/apps/site/app/global-error.tsx b/apps/site/app/global-error.tsx index 6cab08ae716f9..cb99e04c2fb36 100644 --- a/apps/site/app/global-error.tsx +++ b/apps/site/app/global-error.tsx @@ -5,9 +5,8 @@ import { captureException } from '@sentry/nextjs'; import type { FC } from 'react'; import Button from '@/components/Common/Button'; -import GlowingBackdrop from '@/components/Common/GlowingBackdrop'; import BaseLayout from '@/layouts/Base'; -import CenteredLayout from '@/layouts/Centered'; +import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; const GlobalErrorPage: FC<{ error: Error }> = ({ error }) => { captureException(error); @@ -16,23 +15,17 @@ const GlobalErrorPage: FC<{ error: Error }> = ({ error }) => { - - - -
- 500 -

- Internal Server Error -

-

- This page has thrown a non-recoverable error. -

- -
-
+ + 500 +

Internal Server Error

+

+ This page has thrown a non-recoverable error. +

+ +
diff --git a/apps/site/components/withLayout.tsx b/apps/site/components/withLayout.tsx index 7e8d50b300354..8d5a7d4745e9a 100644 --- a/apps/site/components/withLayout.tsx +++ b/apps/site/components/withLayout.tsx @@ -1,10 +1,11 @@ import type { FC, PropsWithChildren } from 'react'; import AboutLayout from '@/layouts/About'; +import ArticlePageLayout from '@/layouts/ArticlePage'; import BlogLayout from '@/layouts/Blog'; import DefaultLayout from '@/layouts/Default'; import DownloadLayout from '@/layouts/Download'; -import HomeLayout from '@/layouts/Home'; +import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; import LearnLayout from '@/layouts/Learn'; import PostLayout from '@/layouts/Post'; import SearchLayout from '@/layouts/Search'; @@ -12,13 +13,14 @@ import type { Layouts } from '@/types'; const layouts = { about: AboutLayout, - home: HomeLayout, + home: props => , learn: LearnLayout, page: DefaultLayout, 'blog-post': PostLayout, 'blog-category': BlogLayout, search: SearchLayout, download: DownloadLayout, + article: ArticlePageLayout, } satisfies Record; type WithLayoutProps = PropsWithChildren<{ layout: L }>; diff --git a/apps/site/layouts/ArticlePage.tsx b/apps/site/layouts/ArticlePage.tsx new file mode 100644 index 0000000000000..a2cadddc0cfb2 --- /dev/null +++ b/apps/site/layouts/ArticlePage.tsx @@ -0,0 +1,24 @@ +import type { FC, PropsWithChildren } from 'react'; + +import WithMetaBar from '@/components/withMetaBar'; +import WithNavBar from '@/components/withNavBar'; +import WithSidebar from '@/components/withSidebar'; +import ArticleLayout from '@/layouts/Article'; + +const ArticlePageLayout: FC = ({ children }) => ( + <> + + + + + +
+
{children}
+ + +
+
+ +); + +export default ArticlePageLayout; diff --git a/apps/site/layouts/Centered.tsx b/apps/site/layouts/Centered.tsx index f63f312b451aa..e69de29bb2d1d 100644 --- a/apps/site/layouts/Centered.tsx +++ b/apps/site/layouts/Centered.tsx @@ -1,18 +0,0 @@ -import type { FC, PropsWithChildren } from 'react'; - -import WithFooter from '@/components/withFooter'; -import WithNavBar from '@/components/withNavBar'; - -import styles from './layouts.module.css'; - -const CenteredLayout: FC = ({ children }) => ( - <> - - -
{children}
- - - -); - -export default CenteredLayout; diff --git a/apps/site/layouts/Content.tsx b/apps/site/layouts/Content.tsx deleted file mode 100644 index 5e67339e0ad7c..0000000000000 --- a/apps/site/layouts/Content.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import type { FC, PropsWithChildren } from 'react'; - -import styles from './layouts.module.css'; - -const ContentLayout: FC = ({ children }) => ( -
{children}
-); - -export default ContentLayout; diff --git a/apps/site/layouts/GlowingBackdrop.tsx b/apps/site/layouts/GlowingBackdrop.tsx new file mode 100644 index 0000000000000..2457baf8e0877 --- /dev/null +++ b/apps/site/layouts/GlowingBackdrop.tsx @@ -0,0 +1,35 @@ +import classNames from 'classnames'; +import type { FC, PropsWithChildren } from 'react'; + +import GlowingBackdrop from '@/components/Common/GlowingBackdrop'; +import WithFooter from '@/components/withFooter'; +import WithNavBar from '@/components/withNavBar'; + +import styles from './layouts.module.css'; + +type GlowingBackdropLayoutProps = PropsWithChildren<{ + kind?: 'home'; +}>; + +const GlowingBackdropLayout: FC = ({ + kind, + children, +}) => ( + <> + +
+ + +
+ {children} +
+
+ + +); + +export default GlowingBackdropLayout; diff --git a/apps/site/layouts/Home.tsx b/apps/site/layouts/Home.tsx deleted file mode 100644 index 9a95e136b6c05..0000000000000 --- a/apps/site/layouts/Home.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import type { FC, PropsWithChildren } from 'react'; - -import GlowingBackdrop from '@/components/Common/GlowingBackdrop'; -import CenteredLayout from '@/layouts/Centered'; - -import styles from './layouts.module.css'; - -const HomeLayout: FC = ({ children }) => ( - - - -
{children}
-
-); - -export default HomeLayout; diff --git a/apps/site/layouts/Post.tsx b/apps/site/layouts/Post.tsx index 23a3d7d0c3b54..e6cd3fc715949 100644 --- a/apps/site/layouts/Post.tsx +++ b/apps/site/layouts/Post.tsx @@ -7,7 +7,6 @@ import WithFooter from '@/components/withFooter'; import WithMetaBar from '@/components/withMetaBar'; import WithNavBar from '@/components/withNavBar'; import { useClientContext } from '@/hooks/react-server'; -import ContentLayout from '@/layouts/Content'; import { mapAuthorToCardAuthors, mapBlogCategoryToPreviewType, @@ -26,7 +25,7 @@ const PostLayout: FC = ({ children }) => { <> - +

{frontmatter.title}

@@ -51,7 +50,7 @@ const PostLayout: FC = ({ children }) => {
- +
diff --git a/apps/site/pages/en/download/package-manager/all.md b/apps/site/pages/en/download/package-manager/all.md index 3feb29f9c26ad..cc58af56998eb 100644 --- a/apps/site/pages/en/download/package-manager/all.md +++ b/apps/site/pages/en/download/package-manager/all.md @@ -1,5 +1,5 @@ --- -layout: download +layout: article title: Installing Node.js via package manager --- @@ -7,36 +7,6 @@ title: Installing Node.js via package manager > The packages on this page are maintained and supported by their respective packagers, **not** the Node.js core team. Please report any issues you encounter to the package maintainer. If it turns out your issue is a bug in Node.js itself, the maintainer will report the issue upstream. ---- - -- [Alpine Linux](#alpine-linux) -- [Android](#android) -- [Arch Linux](#arch-linux) -- [CentOS, Fedora and Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux) -- [Debian and Ubuntu based Linux distributions](#debian-and-ubuntu-based-linux-distributions) -- [Exherbo Linux](#exherbo-linux) -- [fnm](#fnm) -- [FreeBSD](#freebsd) -- [Gentoo](#gentoo) -- [IBM i](#ibm-i) -- [macOS](#macos) -- [n](#n) -- [NetBSD](#netbsd) -- [Nodenv](#nodenv) -- [nvm](#nvm) -- [nvs](#nvs) -- [OpenBSD](#openbsd) -- [openSUSE and SLE](#opensuse-and-sle) -- [SmartOS and illumos](#smartos-and-illumos) -- [Snap](#snap) -- [Solus](#solus) -- [vfox](#vfox) -- [Void Linux](#void-linux) -- [Windows](#windows-1) -- [z/OS](#zos) - ---- - ## Alpine Linux Node.js LTS and npm packages are available in the Main Repository. diff --git a/apps/site/types/layouts.ts b/apps/site/types/layouts.ts index 44bf83c8c5ef0..8e354bd51329e 100644 --- a/apps/site/types/layouts.ts +++ b/apps/site/types/layouts.ts @@ -6,4 +6,5 @@ export type Layouts = | 'blog-category' | 'blog-post' | 'search' - | 'download'; + | 'download' + | 'article'; From 3c0635cfcbdc667b3e7daae5f2bedf1e58a7d486 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Fri, 11 Oct 2024 14:07:01 -0500 Subject: [PATCH 0073/1385] Optimize CI during crowdin sync (#7114) * fix(ci): cancel existing runs during noisy crowdin syncs * be more precise in the grouping --- .github/workflows/dependency-review.yml | 5 +++++ .github/workflows/translations-pr.yml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 3cc3be09d0671..99ea3ba5e90a9 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -13,6 +13,11 @@ on: branches: - main +# Cancel any runs on the same branch +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + permissions: contents: read diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index 8724656e33c1b..fd286fb7a9066 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -15,6 +15,11 @@ on: - '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 From 3da97a1722f83ac0cdbe872426f890938d7472ec Mon Sep 17 00:00:00 2001 From: Caner Akdas Date: Sat, 12 Oct 2024 22:30:40 +0300 Subject: [PATCH 0074/1385] Fix: select box overflow on download pages (#7119) fix: download page select overflow --- apps/site/components/Downloads/Release/BitnessDropdown.tsx | 2 +- .../components/Downloads/Release/OperatingSystemDropdown.tsx | 2 +- apps/site/components/Downloads/Release/PlatformDropdown.tsx | 2 +- apps/site/components/Downloads/Release/VersionDropdown.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/site/components/Downloads/Release/BitnessDropdown.tsx b/apps/site/components/Downloads/Release/BitnessDropdown.tsx index e6ddd46e6e822..1d0e25d0b6841 100644 --- a/apps/site/components/Downloads/Release/BitnessDropdown.tsx +++ b/apps/site/components/Downloads/Release/BitnessDropdown.tsx @@ -100,7 +100,7 @@ const BitnessDropdown: FC = () => { ariaLabel={t('layouts.download.dropdown.bitness')} defaultValue={String(bitness)} onChange={bitness => setBitness(parseNumericBitness(bitness))} - className="w-28" + className="min-w-28" inline={true} /> ); diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index 7cf9933a89432..eccb0f21cc4e7 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -63,7 +63,7 @@ const OperatingSystemDropdown: FC = ({ ariaLabel={t('layouts.download.dropdown.os')} defaultValue={os} onChange={value => setOS(value as UserOS)} - className="w-[8.5rem]" + className="min-w-[8.5rem]" inline={true} /> ); diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index a4839ae966f42..4ac966c72c8a9 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -79,7 +79,7 @@ const PlatformDropdown: FC = () => { ariaLabel={t('layouts.download.dropdown.platform')} defaultValue={platform} onChange={platform => setPlatform(platform as PackageManager)} - className="w-28" + className="min-w-28" inline={true} /> ); diff --git a/apps/site/components/Downloads/Release/VersionDropdown.tsx b/apps/site/components/Downloads/Release/VersionDropdown.tsx index 6701792817e12..bbaf307317c0c 100644 --- a/apps/site/components/Downloads/Release/VersionDropdown.tsx +++ b/apps/site/components/Downloads/Release/VersionDropdown.tsx @@ -32,7 +32,7 @@ const VersionDropdown: FC = () => { }))} defaultValue={release.versionWithPrefix} onChange={setVersion} - className="w-40" + className="min-w-40" inline={true} /> ); From 3a4c7a2ae6ff81d60b71f19c46c41de82ed50d7c Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Tue, 15 Oct 2024 14:13:48 +0200 Subject: [PATCH 0075/1385] [automated]: crowdin sync, enables turkish (#7089) * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: automated format of translated files Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * enabled turkish * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: automated format of translated files Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: automated format of translated files Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * manually fix links * fix more turkish links * fix french links --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: nodejs-crowdin Co-authored-by: Brian Muenzenmeyer --- apps/site/pages/es/index.mdx | 137 ++++++ apps/site/pages/es/search.mdx | 6 + .../pages/fa/download/package-manager/all.md | 32 +- apps/site/pages/fr/about/branding.mdx | 86 ++-- .../pages/fr/about/get-involved/contribute.md | 6 +- .../site/pages/fr/about/get-involved/index.md | 2 +- apps/site/pages/fr/about/governance.md | 2 +- .../site/pages/fr/about/previous-releases.mdx | 2 +- .../pages/fr/about/security-reporting.mdx | 4 +- .../pages/fr/download/package-manager/all.md | 32 +- .../fr/download/prebuilt-installer/index.mdx | 2 +- apps/site/pages/id/about/governance.md | 2 +- .../pages/id/download/package-manager/all.md | 32 +- apps/site/pages/pt/about/branding.mdx | 86 ++-- .../site/pages/pt/about/get-involved/index.md | 26 +- .../pages/pt/download/package-manager/all.md | 32 +- .../pt/download/prebuilt-installer/index.mdx | 2 +- apps/site/pages/tr/about/branding.mdx | 84 ++++ .../tr/about/get-involved/collab-summit.md | 16 + .../pages/tr/about/get-involved/contribute.md | 28 +- .../site/pages/tr/about/get-involved/index.md | 36 +- apps/site/pages/tr/about/governance.md | 31 ++ apps/site/pages/tr/about/index.mdx | 60 +++ .../site/pages/tr/about/previous-releases.mdx | 21 + .../pages/tr/about/security-reporting.mdx | 66 +++ .../pages/tr/download/package-manager/all.md | 398 ++++++++++++++++++ .../tr/download/package-manager/current.mdx | 24 ++ .../tr/download/package-manager/index.mdx | 25 ++ .../tr/download/prebuilt-binaries/current.mdx | 24 ++ .../tr/download/prebuilt-binaries/index.mdx | 26 ++ .../download/prebuilt-installer/current.mdx | 26 ++ .../tr/download/prebuilt-installer/index.mdx | 26 ++ .../pages/tr/download/source-code/current.mdx | 24 ++ .../pages/tr/download/source-code/index.mdx | 24 ++ apps/site/pages/tr/index.mdx | 143 +++++++ .../site/pages/uk/about/get-involved/index.md | 25 +- apps/site/pages/uk/about/index.mdx | 2 +- .../pages/uk/download/package-manager/all.md | 32 +- .../uk/download/prebuilt-installer/index.mdx | 2 +- .../pages/uk/download/source-code/index.mdx | 2 +- .../zh-cn/download/package-manager/all.md | 32 +- .../zh-tw/download/package-manager/all.md | 32 +- packages/i18n/config.json | 2 +- packages/i18n/locales/pt.json | 3 +- packages/i18n/locales/tr.json | 329 +++++++++++++++ packages/i18n/locales/zh-cn.json | 36 +- 46 files changed, 1718 insertions(+), 352 deletions(-) create mode 100644 apps/site/pages/es/index.mdx create mode 100644 apps/site/pages/es/search.mdx create mode 100644 apps/site/pages/tr/about/branding.mdx create mode 100644 apps/site/pages/tr/about/get-involved/collab-summit.md create mode 100644 apps/site/pages/tr/about/governance.md create mode 100644 apps/site/pages/tr/about/index.mdx create mode 100644 apps/site/pages/tr/about/previous-releases.mdx create mode 100644 apps/site/pages/tr/about/security-reporting.mdx create mode 100644 apps/site/pages/tr/download/package-manager/all.md create mode 100644 apps/site/pages/tr/download/package-manager/current.mdx create mode 100644 apps/site/pages/tr/download/package-manager/index.mdx create mode 100644 apps/site/pages/tr/download/prebuilt-binaries/current.mdx create mode 100644 apps/site/pages/tr/download/prebuilt-binaries/index.mdx create mode 100644 apps/site/pages/tr/download/prebuilt-installer/current.mdx create mode 100644 apps/site/pages/tr/download/prebuilt-installer/index.mdx create mode 100644 apps/site/pages/tr/download/source-code/current.mdx create mode 100644 apps/site/pages/tr/download/source-code/index.mdx create mode 100644 apps/site/pages/tr/index.mdx create mode 100644 packages/i18n/locales/tr.json diff --git a/apps/site/pages/es/index.mdx b/apps/site/pages/es/index.mdx new file mode 100644 index 0000000000000..ba26804287fcc --- /dev/null +++ b/apps/site/pages/es/index.mdx @@ -0,0 +1,137 @@ +--- +title: Ejecuta JavaScript en cualquier parte +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 }) => ( + + ¿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). + +
diff --git a/apps/site/pages/es/search.mdx b/apps/site/pages/es/search.mdx new file mode 100644 index 0000000000000..048d829afa13f --- /dev/null +++ b/apps/site/pages/es/search.mdx @@ -0,0 +1,6 @@ +--- +layout: search +title: Resultados de Búsqueda +--- + + diff --git a/apps/site/pages/fa/download/package-manager/all.md b/apps/site/pages/fa/download/package-manager/all.md index 5192b8847d665..c301c512de83e 100644 --- a/apps/site/pages/fa/download/package-manager/all.md +++ b/apps/site/pages/fa/download/package-manager/all.md @@ -1,5 +1,5 @@ --- -layout: download +layout: article title: از طریق پکیج منیجر Node.js نصب --- @@ -7,36 +7,6 @@ title: از طریق پکیج منیجر Node.js نصب > پکیج‌های این صفحه توسط پکیج منیجر های مربوطه نگهداری و پشتیبانی می‌شوند، **نه** توسط تیم هسته Node.js. لطفاً اگر به هرگونه مشکلی برخوردید آن را به نگه دارنده پکیج گزارش دهید. اگر مشکل شما یک باگ در خود Node.js باشد، نگه دارنده آن را به مرجع اصلی گزارش خواهد داد. ---- - -- [Alpine Linux](#alpine-linux) -- [Android](#android) -- [Arch Linux](#arch-linux) -- [CentOS, Fedora and Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux) -- [Debian and Ubuntu based Linux distributions](#debian-and-ubuntu-based-linux-distributions) -- [Exherbo Linux](#exherbo-linux) -- [fnm](#fnm) -- [FreeBSD](#freebsd) -- [Gentoo](#gentoo) -- [IBM i](#ibm-i) -- [macOS](#macos) -- [n](#n) -- [NetBSD](#netbsd) -- [Nodenv](#nodenv) -- [nvm](#nvm) -- [nvs](#nvs) -- [OpenBSD](#openbsd) -- [openSUSE and SLE](#opensuse-and-sle) -- [SmartOS and illumos](#smartos-and-illumos) -- [Snap](#snap) -- [Solus](#solus) -- [vfox](#vfox) -- [Void Linux](#void-linux) -- [Windows](#windows-1) -- [z/OS](#zos) - ---- - ## Alpine Linux بسته‌های Node.js LTS و npm در مخزن اصلی موجود هستند. diff --git a/apps/site/pages/fr/about/branding.mdx b/apps/site/pages/fr/about/branding.mdx index 8f96b99a5e5ca..62f33e48f5250 100644 --- a/apps/site/pages/fr/about/branding.mdx +++ b/apps/site/pages/fr/about/branding.mdx @@ -9,6 +9,8 @@ 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. + Mascotte de Node.js - - - Node.js Logo horizontal - - - - Node.js Light Horizontal Logo - - + + + + Logo horizontal sombre de Node.js + + + + Logo horizontal clair de Node.js + + + + ### Logo Node.js® empilé - - - - - - - - - - - + + + + + + + + + + + + + + +
- Node.js Dark Stacked Logo - - Node.js Light Stacked Logo -
- Node.js Black Stacked Logo - - Node.js White Stacked Logo -
+ Logo empilé sombre de Node.js + + Logo empilé clair de Node.js +
+ Logo empilé noir de Node.js + + Logo empilé blanc de Node.js +
### Icons JS - - - - - + + + + + + + +
- Icons JS Vert - - Icons JS Blanc -
+ Icons JS Vert + + Icons JS Blanc +
diff --git a/apps/site/pages/fr/about/get-involved/contribute.md b/apps/site/pages/fr/about/get-involved/contribute.md index ebe77d2973041..946b83001d5c9 100644 --- a/apps/site/pages/fr/about/get-involved/contribute.md +++ b/apps/site/pages/fr/about/get-involved/contribute.md @@ -9,7 +9,7 @@ Merci de votre intérêt à contribuer à Node.js ! Vous pouvez contribuer de pl ## Demander de l'aide générale -Le niveau d'activité du dépôt `nodejs/node` étant très élevé, les questions ou les demandes d'aide générale concernant l'utilisation de Node.js doivent être adressées au [Node.js help repository] (https://github.com/nodejs/help/issues).Node.js +Le niveau d'activité du dépôt `nodejs/node` étant très élevé, les questions ou les demandes d'aide générale concernant l'utilisation de Node.js doivent être adressées au [Node.js help repository](https://github.com/nodejs/help/issues).Node.js ## Signaler un problème @@ -28,7 +28,7 @@ Le projet Node.js est actuellement géré par un certain nombre de dépôts GitH ## Contributions au code -Si vous souhaitez corriger des bogues ou ajouter une nouvelle fonctionnalité à Node.js, veuillez consulter les [Directives de contribution à Node.js] (https://github.com/nodejs/node/blob/main/CONTRIBUTING.md/#pull-requests). Le processus de révision par les collaborateurs existants pour toutes les contributions au projet y est également expliqué. +Si vous souhaitez corriger des bogues ou ajouter une nouvelle fonctionnalité à Node.js, veuillez consulter les [Directives de contribution à Node.js](https://github.com/nodejs/node/blob/main/CONTRIBUTING.md/#pull-requests). Le processus de révision par les collaborateurs existants pour toutes les contributions au projet y est également expliqué. Si vous vous demandez comment commencer, vous pouvez consulter [Node Todo](https://www.nodetodo.org/) qui vous guidera peut-être vers votre première contribution. @@ -44,4 +44,4 @@ En devenant collaborateur, les contributeurs peuvent avoir encore plus d'impact - participation à des groupes de travail - autre participation à la communauté Node.js plus large -Si des personnes apportant des contributions précieuses estiment qu'elles n'ont pas été prises en compte pour l'accès à l'engagement, elles peuvent [enregistrer un problème] (https://github.com/nodejs/TSC/issues) ou [contacter un membre du TSC] (https://github.com/nodejs/node#tsc-technical-steering-committee) directement. +Si des personnes apportant des contributions précieuses estiment qu'elles n'ont pas été prises en compte pour l'accès à l'engagement, elles peuvent [enregistrer un problème](https://github.com/nodejs/TSC/issues) ou [contacter un membre du TSC](https://github.com/nodejs/node#tsc-technical-steering-committee) directement. diff --git a/apps/site/pages/fr/about/get-involved/index.md b/apps/site/pages/fr/about/get-involved/index.md index 5e3693d7de325..9da181e3e6085 100644 --- a/apps/site/pages/fr/about/get-involved/index.md +++ b/apps/site/pages/fr/about/get-involved/index.md @@ -10,7 +10,7 @@ Si vous souhaitez vous impliquer dans la communauté Node.js, il existe de nombr ## Discussions de la communauté - La [GitHub issues list](https://github.com/nodejs/node/issues) est le lieu de discussion des fonctionnalités de base de Node.js et si vous avez des questions sur Node.js, vous pouvez utiliser les [github discussions](https://github.com/orgs/nodejs/discussions). -- Le dépôt [`nodejs/help`](https://github.com/nodjes/help/issues) est l'endroit où poser des questions sur Node.js. +- Le dépôt [`nodejs/help`](https://github.com/nodejs/help/issues) est l'endroit où poser des questions sur Node.js. - Le compte Twitter officiel de Node.js est [nodejs](https://twitter.com/nodejs). - Le [calendrier du projet Node.js](https://nodejs.org/calendar) avec toutes les réunions publiques de l'équipe. diff --git a/apps/site/pages/fr/about/governance.md b/apps/site/pages/fr/about/governance.md index 2edda2f772c9b..30cb570d6cbdd 100644 --- a/apps/site/pages/fr/about/governance.md +++ b/apps/site/pages/fr/about/governance.md @@ -24,7 +24,7 @@ Un guide pour les collaborateurs est disponible à l'adresse suivante : [collabo ## Comité de pilotage technique -Le projet est régi par le [Comité de pilotage technique (TSC)][technical steering committee (tsc)] +Le projet est régi par le "[Technical Steering Committee (TSC)][]" qui est responsable de l'orientation de haut niveau du projet. Le TSC est un un sous-ensemble de collaborateurs actifs qui sont nommés par d'autres membres existants du TSC. diff --git a/apps/site/pages/fr/about/previous-releases.mdx b/apps/site/pages/fr/about/previous-releases.mdx index 617c6b9088f29..dd53567056c68 100644 --- a/apps/site/pages/fr/about/previous-releases.mdx +++ b/apps/site/pages/fr/about/previous-releases.mdx @@ -14,7 +14,7 @@ Les applications de production ne doivent utiliser que les versions _Active LTS_ ![Releases](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) -Tous les détails concernant le calendrier des versions de Node.js sont disponibles [sur GitHub] (https://github.com/nodejs/release#release-schedule). +Tous les détails concernant le calendrier des versions de Node.js sont disponibles [sur GitHub](https://github.com/nodejs/release#release-schedule). ## Vous recherchez la dernière version d'une branche de version ? diff --git a/apps/site/pages/fr/about/security-reporting.mdx b/apps/site/pages/fr/about/security-reporting.mdx index 4209d3c628ecf..b17332a3543ac 100644 --- a/apps/site/pages/fr/about/security-reporting.mdx +++ b/apps/site/pages/fr/about/security-reporting.mdx @@ -5,11 +5,11 @@ layout: about Rapport de sécurité -Pour plus de détails sur les politiques de sécurité active, consultez [cette page] (https://github.com/nodejs/node/security/policy). +Pour plus de détails sur les politiques de sécurité active, consultez [cette page](https://github.com/nodejs/node/security/policy). ## Signaler une faille dans Node.js -Signalez les bogues de sécurité dans Node.js via [HackerOne] (https://hackerone.com/nodejs). +Signalez les bogues de sécurité dans Node.js via [HackerOne](https://hackerone.com/nodejs). Vous recevrez un accusé de réception de votre rapport dans les 5 jours, et vous recevrez une réponse plus détaillée dans les 10 jours, indiquant les prochaines étapes. une réponse plus détaillée à votre rapport dans les 10 jours, indiquant les prochaines étapes du traitement de votre demande. diff --git a/apps/site/pages/fr/download/package-manager/all.md b/apps/site/pages/fr/download/package-manager/all.md index 838d5a30b6f6a..e3cc8139496c1 100644 --- a/apps/site/pages/fr/download/package-manager/all.md +++ b/apps/site/pages/fr/download/package-manager/all.md @@ -1,5 +1,5 @@ --- -layout: download +layout: article title: Installer Node.js via le gestionnaire de paquets --- @@ -7,36 +7,6 @@ title: Installer Node.js via le gestionnaire de paquets > Les paquets sur cette page sont maintenus et supportés par leurs auteurs respectifs, **pas** par l'équipe de base de Node.js. Veuillez rapporter tout problème que vous rencontrez au mainteneur du paquet. S'il s'avère que votre problème est un bogue dans Node.js lui-même, le mainteneur rapportera le problème en amont. ---- - -- [Alpine Linux](#alpine-linux) -- [Android](#android) -- [Arch Linux](#arch-linux) -- [CentOS, Fedora et Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux) -- [Debian et Distributions Linux basées sur Ubuntu](#debian-and-ubuntu-based-linux-distributions) -- [Exherbo Linux](#exherbo-linux) -- [fnm](#fnm) -- [FreeBSD](#freebsd) -- [Gentoo](#gentoo) -- [IBM i](#ibm-i) -- [macOS](#macos) -- [n](#n) -- [NetBSD](#netbsd) -- [Nodenv](#nodenv) -- [nvm](#nvm) -- [nvs](#nvs) -- [OpenBSD](#openbsd) -- [openSUSE et SLE](#opensuse-and-sle) -- [SmartOS et illumos](#smartos-and-illumos) -- [Snap](#snap) -- [Solus](#solus) -- [vfox](#vfox) -- [Void Linux](#void-linux) -- [Windows](#windows-1) -- [z/OS](#zos) - ---- - ## Alpine Linux Les paquets Node.js LTS et npm sont disponibles dans le dépôt principal. diff --git a/apps/site/pages/fr/download/prebuilt-installer/index.mdx b/apps/site/pages/fr/download/prebuilt-installer/index.mdx index 451440f6adc96..d351d99bb5e24 100644 --- a/apps/site/pages/fr/download/prebuilt-installer/index.mdx +++ b/apps/site/pages/fr/download/prebuilt-installer/index.mdx @@ -21,6 +21,6 @@ Apprenez à vérifier les SHASUMSoptions de téléchargement de Node.js. -En savoir plus sur les Versions Node.js +En savoir plus sur les Versions Node.js diff --git a/apps/site/pages/id/about/governance.md b/apps/site/pages/id/about/governance.md index c9b5bbc4d3c70..fdfd7b99efd2e 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] \[]. +Proyek Node.js mengikuti model pengambilan keputusan [Pencarian Konsensus][consensus seeking]. ## Kolaborator diff --git a/apps/site/pages/id/download/package-manager/all.md b/apps/site/pages/id/download/package-manager/all.md index c1781eaeed769..892c7d0f1e9c9 100644 --- a/apps/site/pages/id/download/package-manager/all.md +++ b/apps/site/pages/id/download/package-manager/all.md @@ -1,5 +1,5 @@ --- -layout: download +layout: article title: Menginstal Node.js melalui manajer paket --- @@ -7,36 +7,6 @@ title: Menginstal Node.js melalui manajer paket > Paket-paket di halaman ini dijaga dan didukung oleh para pemberi paket mereka masing-masing, bukan tim inti Node.js. Harap laporkan setiap masalah yang Anda temui kepada pemelihara paket. Jika masalah Anda ternyata adalah bug dalam Node.js itu sendiri, pemelihara akan melaporkan masalah tersebut ke hulu. ---- - -- [Alpine Linux](#alpine-linux) -- [Android](#android) -- [Arch Linux](#arch-linux) -- [CentOS, Fedora dan Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux) -- [Distribusi Linux berbasis Debian dan Ubuntu](#debian-and-ubuntu-based-linux-distributions) -- [Exherbo Linux](#exherbo-linux) -- [fnm](#fnm) -- [FreeBSD](#freebsd) -- [Gentoo](#gentoo) -- [IBM i](#ibm-i) -- [macOS](#macos) -- [n](#n) -- [NetBSD](#netbsd) -- [Nodenv](#nodenv) -- [nvm](#nvm) -- [nvs](#nvs) -- [OpenBSD](#openbsd) -- [openSUSE dan SLE](#opensuse-and-sle) -- [SmartOS dan illumos](#smartos-and-illumos) -- [Snap](#snap) -- [Solus](#solus) -- [vfox](#vfox) -- [Void Linux](#void-linux) -- [Windows](#windows-1) -- [z/OS](#zos) - ---- - ## Alpine Linux Paket Node.js LTS dan npm tersedia di Repository Utama. diff --git a/apps/site/pages/pt/about/branding.mdx b/apps/site/pages/pt/about/branding.mdx index 9e20fdf437a4d..e281a14fb546b 100644 --- a/apps/site/pages/pt/about/branding.mdx +++ b/apps/site/pages/pt/about/branding.mdx @@ -9,6 +9,8 @@ Consultar a [política de marcas registadas](https://trademark-policy.openjsf.or ## Mascote da Node.js® +Crédito a [@Ang_ngl on X](https://x.com/Ang_ngl) por desenhar e contribuir com a Tartaruga do Foguetão. + Mascote da Node.js - - - Logótipo Escuro Horizontal da Node.js - - - - Logótipo Claro Horizontal da Node.js - - + + + + Logótipo Escuro Horizontal da Node.js + + + + Logótipo Claro Horizontal da Node.js + + + + ### Logótipo Empilhado da Node.js® - - - - - - - - - - - + + + + + + + + + + + + + + +
- Logótipo Escuro Empilhado da Node.js - - Logótipo Claro Empilhado da Node.js -
- Logótipo Empilhado Preto da Node.js - - Logótipo Empilhado Branco da Node.js -
+ Logótipo Escuro Empilhado da Node.js + + Logótipo Claro Empilhado da Node.js +
+ Logótipo Empilhado Preto da Node.js + + Logótipo Empilhado Branco da Node.js +
### Ícones da JS - - - - - + + + + + + + +
- Ícones da JS Verde - - Ícones da JS Branco -
+ Ícones da JS Verde + + Ícones da JS Branco +
diff --git a/apps/site/pages/pt/about/get-involved/index.md b/apps/site/pages/pt/about/get-involved/index.md index 03833b4a02692..abdbf70a9d109 100644 --- a/apps/site/pages/pt/about/get-involved/index.md +++ b/apps/site/pages/pt/about/get-involved/index.md @@ -1,26 +1,36 @@ --- -title: Participe +title: Participar layout: about --- # Participe +Aos que estiverem interessados em colaborar com a comunidade da Node.js, existem muitas maneiras de fazê-lo. O projeto Node.js é grande e diverso em comunidade, e existem muitas maneiras de colaborar, para além de escrever código. + ## Discussão de Comunidade -- A [Lista de Problemas no Github](https://github.com/nodejs/node/issues) é o local para discussões sobre as funcionalidades principais do Node.js. -- Para comunicação em tempo real sobre o desenvolvimento do Node.js, use uma das plataformas abaixo - - Para IRC, acesse `irc.libera.chat` no canal `#node.js` utilizando um [cliente IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ou junte-se ao canal com o seu navegador usando um [cliente web](https://kiwiirc.com/nextclient/) - - Para o Slack, existe duas opções: - - O [OpenJSF Slack](https://slack-invite.openjsf.org/) é um Slack administrado pela Fundação com vários canais Node.js (canais com o prefixo `#nodejs-` estão relacionados ao projeto). - - [Node Slackers](https://www.nodeslackers.com/) é uma comunidade do Slack focada em Node.js. +- A [lista de problemas da GitHub](https://github.com/nodejs/node/issues) é o lugar para as discussões sobre as funcionalidades nucleares da Node.js e se tivermos questões sobre a Node.js, podemos utilizar as [discussões da GitHub](https://github.com/orgs/nodejs/discussions). +- O repositório [`nodejs/help`](https://github.com/nodejs/help/issues) é o lugar para fazer-se questões sobre a Node.js. - A conta oficial do Node.js no Twitter é [nodejs](https://twitter.com/nodejs). - O [calendário do projeto Node.js](https://nodejs.org/calendar) com todas as reuniões públicas da equipa. -## Estudos +## Materiais de Estudo + +Se estivermos interessados em saber ou aprender mais sobre a Node.js, existem muitos recursos a nossa disposição. - [Secção oficial de aprendizagem](https://nodejs.org/en/learn/) do sítio da Node.js. - [Documentação oficial de referência da API](https://nodejs.org/api/). - [NodeSchool.io](https://nodeschool.io/) ensina conceitos de Node.js por jogos interativos da linha de comandos. - [A tag Stack Overflow Node.js](https://stackoverflow.com/questions/tagged/node.js) coleta novas informações todos os dias. - [A tag Node.js da comunidade DEV](https://dev.to/t/node) é um lugar para partilhar projetos, artigos e tutoriais do Node.js, bem como iniciar discussões e pedir feedback sobre assuntos relacionados ao Node.js. Desenvolvedores de todos os níveis de habilidade podem participar. +- A [comunidade da Node.js da Reddit](https://www.reddit.com/r/node) é o lugar para partilhar os projetos, artigos, e tutoriais de Node.js, bem como o lugar para começar discussões e pedir por comentários relacionados a Node.js. Programadores de todos os níveis de habilidade são bem-vindos a participar. + +## Áreas de Discussões Não Oficiais + +Se estivermos a procura de um lugar informal para discutir a Node.js, existem vários lugares de discussão não oficial. Notemos que estes não são oficialmente endossados pelo projeto Node.js. E também devemos seguir seus respetivos código de conduta ou regras. + +- [Node Slackers](https://www.nodeslackers.com/) é uma comunidade do Slack focada em Node.js. +- A [Slack da OpenJSF](https://slack-invite.openjsf.org/) é um espaço de trabalho da Fundação OpenJS. Existem vários canais relacionados a Node.js. _(canais prefixados por `#nodejs-`) são relacionados ao projeto_ - [Nodeiflux](https://discordapp.com/invite/vUsrbjd) é uma comunidade amigável de desenvolvedores de backend Node.js que se apoiam uns aos outros no Discord. +- A [Comunidade ES](https://discord.gg/zJsuc6vvhn) é uma comunidade da Discord para programadores da JavaScript falantes do Francês. +- `irc.libera.chat` no canal `#node.js` com um [cliente de Conversa-Resposta da Internet](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ou podemos conectar o nosso navegador da Web ao canal ao utilizar [um cliente da Web](https://kiwiirc.com/nextclient/). diff --git a/apps/site/pages/pt/download/package-manager/all.md b/apps/site/pages/pt/download/package-manager/all.md index 7a9b32cab0f5e..2df1370f6a692 100644 --- a/apps/site/pages/pt/download/package-manager/all.md +++ b/apps/site/pages/pt/download/package-manager/all.md @@ -1,5 +1,5 @@ --- -layout: download +layout: article title: Instalação da Node.js através do Gestor de Pacote --- @@ -7,36 +7,6 @@ title: Instalação da Node.js através do Gestor de Pacote > Os pacotes nesta página são mantidos e suportados por seus respetivos empacotadores, **não** pela equipa principal da Node.js. Precisamos reportar quaisquer problemas que encontrarmos ao responsável do pacote. Se o nosso problema for um erro de programação na própria Node.js, o responsável reportará o problema. ---- - -- [Alpine Linux](#alpine-linux) -- [Android](#android) -- [Arch Linux](#arch-linux) -- [CentOS, Fedora e Red Hat Enterprise Linux](#centos-fedora-e-red-hat-enterprise-linux) -- [Distribuições de Linux baseadas em Debian e Ubuntu](#distribuicoes-de-linux-baseadas-em-debian-e-ubuntu) -- [Exherbo Linux](#exherbo-linux) -- [fnm](#fnm) -- [FreeBSD](#freebsd) -- [Gentoo](#gentoo) -- [IBM i](#ibm-i) -- [macOS](#macos) -- [n](#n) -- [NetBSD](#netbsd) -- [Nodenv](#nodenv) -- [nvm](#nvm) -- [nvs](#nvs) -- [OpenBSD](#openbsd) -- [openSUSE e SLE](#opensuse-e-sle) -- [SmartOS e illumos](#smartos-e-illumos) -- [Snap](#snap) -- [Solus](#solus) -- [vfox](#vfox) -- [Void Linux](#void-linux) -- [Windows](#windows-1) -- [z/OS](#zos) - ---- - ## Linux Alpino Os pacotes da Node.js com suporte de longo prazo e npm estão disponíveis no repositório principal. diff --git a/apps/site/pages/pt/download/prebuilt-installer/index.mdx b/apps/site/pages/pt/download/prebuilt-installer/index.mdx index 22ef2c0d72f25..ce5d362e13d0a 100644 --- a/apps/site/pages/pt/download/prebuilt-installer/index.mdx +++ b/apps/site/pages/pt/download/prebuilt-installer/index.mdx @@ -21,6 +21,6 @@ Saber como verificar o SHASUMS assinado opções de descarga disponíveis da Node.js -Saber mais sobre os Lançamentos da Node.js +Saber mais sobre os Lançamentos da Node.js diff --git a/apps/site/pages/tr/about/branding.mdx b/apps/site/pages/tr/about/branding.mdx new file mode 100644 index 0000000000000..e3646bdebd2d0 --- /dev/null +++ b/apps/site/pages/tr/about/branding.mdx @@ -0,0 +1,84 @@ +--- +title: Node.js'in markalaşması +layout: about +--- + +Node.js'in markalaşması + +Node.js® logolarının ve işaretlerinin izin verilen kullanımına ilişkin bilgi için lütfen [ticari marka politikasını](https://trademark-policy.openjsf.org/) inceleyin. + +## Node.js® Maskot + +Roket Kaplumbağayı tasarlayıp katkıda bulunduğu için [X'de @Ang_ngl](https://x.com/Ang_ngl)'e teşekkürler. + +Node.js Maskot + +## Node.js® Logo + +### Node.js® Yatay Logo + + + + + + + + + + +
+ Node.js Karanlık Yatay Logo + + Node.js Aydınlık Yatay Logo +
+ +### Node.js® Dikey Logo + + + + + + + + + + + + + + + + + +
+ Node.js Koyu Dikey Logo + + Node.js Aydınlık Dikey Logo +
+ Node.js Siyah Dikey Logo + + Node.js Beyaz Dikey Logo +
+ +### JS Simgeleri + + + + + + + + + + +
+ Yeşil JS Simgeleri + + Beyaz JS Simgeleri +
diff --git a/apps/site/pages/tr/about/get-involved/collab-summit.md b/apps/site/pages/tr/about/get-involved/collab-summit.md new file mode 100644 index 0000000000000..4146129418cd4 --- /dev/null +++ b/apps/site/pages/tr/about/get-involved/collab-summit.md @@ -0,0 +1,16 @@ +--- +title: İş Birliği Zirvesi +layout: about +--- + +# İş Birliği Zirvesi + +Node.js'in İş Birliği Zirvesi, Node.js'i canlı iş birliği, eğitim ve bilgi paylaşımıyla tartışmak üzere mevcut ve potansiyel katkıda bulunanları bir araya getiren bir konferanstır. Topluluktan ekipler, çalışma grupları ve katkıda bulunanlar yılda iki kez bir araya gelerek karar almaya yardımcı olacak tartışmalar gerçekleştirirken aynı zamanda bizzat ilerletmek istedikleri heyecan verici çabalar üzerinde de çalışıyorlar. + +## Kimler katılıyor? + +İş Birliği Zirvesine öncelikli olarak mevcut katkıda bulunanlar ve topluluk üyeleri katılıyor, ancak henüz katkıda bulunmayan ve katılmak isteyenlere de ev sahipliği yapıyor. Node.js'e katkıda bulunma konusunda yeniyseniz İş Birliği Zirvesi, toplulukta neler olup bittiğini öğrenmenize ve sahip olduğunuz ve geliştirmek istediğiniz becerilerle katkıda bulunmanıza yardımcı olacak iyi bir fırsat olabilir. + +Zirve öncesi, katkı da bulunanlar ve topluluk üyeleri bir program oluşturmak için oturum önerilerini gönderirler. Katılımcılar yerlerini almadan önce oturumları tanıyabilir, genel katılımcı tartışmalarını yapabilir ve ardından oturumlara dalabilirler. Ayrıca koridor da fikir alışverişi ve beyin fırtınaları için de pek çok fırsat olacak. + +Yaklaşan ve geçmiş İş Birliği Zirveleri hakkında bilgi için [Zirve deposuna](https://github.com/openjs-foundation/summit) göz atın. Katkıda bulunanların ve topluluk üyelerinin yüz yüze tartışmayı önerdikleri konuları paylaşan [sorunlar dosyasına](https://github.com/nodejs/summit/issues) bir göz atın. diff --git a/apps/site/pages/tr/about/get-involved/contribute.md b/apps/site/pages/tr/about/get-involved/contribute.md index 0c812116db400..2d71fa5c8f9e8 100644 --- a/apps/site/pages/tr/about/get-involved/contribute.md +++ b/apps/site/pages/tr/about/get-involved/contribute.md @@ -9,13 +9,13 @@ Node.js'e katkıda bulunmaya ilginiz için teşekkür ederiz! Katkıda bulunabil ## Genel Yardım Talebi -Nodejs/node\\` deposundaki etkinlik düzeyi çok yüksek olduğundan, Node.js kullanımıyla ilgili genel yardım soruları veya talepleri [Node.js yardım deposu] (https\://github.com/nodejs/help/issues) adresine yönlendirilmelidir. +`nodejs/node` deposundaki etkinlik düzeyi çok yüksek olduğundan, Node.js kullanımıyla ilgili genel yardım soruları veya talepleri [Node.js yardım deposu](https://github.com/nodejs/help/issues) adresine yönlendirilmelidir. ## Sorun Bildirme Eğer Node.js ile ilgili bir sorun bulduysanız, lütfen GitHub projesinde bir sorun (issue) bildirmekten çekinmeyin. Sorununuzu bildirirken, sorunun tekrarlanabilir bir test örneği ile ifade edilebildiğinden emin olun, ve bu test örneği dış bağımlılıklar içermemelidir. Yani, test örneği sadece Node.js'in kendisi ile çalıştırılabilir olmalıdır. -Bir sorun bildirirken, mümkün olduğunca çevrenizle ilgili bilgi de dahil etmeniz gerekmektedir. Sorunu daraltmaya çalışırken hangi bilgilerin önemli olacağını bilemeyiz. En azından aşağıdaki bilgileri içermeye çalışın: +Bir sorun bildirirken, mümkün olduğunca geliştirme ortamınız ile ilgili bilgi de dahil etmeniz gerekmektedir. Sorunu daraltmaya çalışırken hangi bilgilerin önemli olacağını bilemeyiz. En azından aşağıdaki bilgileri sağlamaya çalışın: - Node.js Sürümü - Çalıştırdığınız platform (macOS, SmartOS, Linux, Windows) @@ -23,25 +23,25 @@ Bir sorun bildirirken, mümkün olduğunca çevrenizle ilgili bilgi de dahil etm Node.js projesi şu anda birkaç ayrı GitHub deposu üzerinden yönetilmektedir, her birinin kendi ayrı sorun veritabanı bulunmaktadır. Mümkünse, bildirdiğiniz herhangi bir sorunu uygun deposuna yönlendirin, ancak yanlış yere yerleştirilirse endişelenmeyin, katkıda bulunan topluluk sizi doğru yöne yönlendirmekten memnuniyet duyacaktır. -- Node.js'ye özgü sorunları bildirmek için lütfen [nodejs/node](https://github.com/nodejs/node) adresini kullanın +- Node.js'e özgü sorunları bildirmek için lütfen [nodejs/node](https://github.com/nodejs/node) adresini kullanın - Bu web sitesine özgü sorunları bildirmek için lütfen [nodejs/nodejs.org](https://github.com/nodejs/nodejs.org/issues) adresini kullanın ## Kod katkıları -Node.js'ye hata düzeltmek veya yeni bir özellik eklemek istiyorsanız, lütfen [Node.js Katkı Yönergelerine] (https\://github.com/nodejs/node/blob/main/CONTRIBUTING.md/#pull-requests) başvurduğunuzdan emin olun. Projeye yapılan tüm katkılar için mevcut işbirlikçiler tarafından yapılan inceleme süreci de burada açıklanmaktadır. +Node.js'e hata düzeltmek veya yeni bir özellik eklemek istiyorsanız, lütfen [Node.js Katkı Yönergelerini](https://github.com/nodejs/node/blob/main/CONTRIBUTING.md/#pull-requests) dikkate aldığınızdan emin olun. Projeye yapılan tüm katkılar için mevcut iş birlikçiler tarafından yapılan inceleme süreci de burada açıklanmaktadır. -Nasıl başlayacağınızı merak ediyorsanız, ilk katkınıza doğru size rehberlik edebilecek [Node Todo] (https\://www\.nodetodo.org/) adresini kontrol edebilirsiniz. +Nasıl başlayacağınızı merak ediyorsanız, ilk katkınızda size rehberlik edebilecek [Node Todo](https://www.nodetodo.org/) adresini kontrol edebilirsiniz. -## İşbirlikçi olmak +## İş birlikçi olmak -İşbirlikçi olarak kabul edilerek, katkıda bulunanlar projeye daha da büyük bir etki yapabilirler. Diğer katkı sağlayıcıları, katkılarını gözden geçirerek, sorunları sınıflandırarak ve projenin geleceğini şekillendirmede daha büyük bir rol alarak yardımcı olabilirler. Node.js topluluğu tarafından herhangi bir Node.js deposunda önemli ve değerli katkılar yapan bireyler İşbirlikçi olarak belirlenebilir ve projeye commit erişimi verilebilir. Dikkate alınan faaliyetler şunları içerir (ancak bunlarla sınırlı değildir): +İş birlikçi olarak kabul edilerek, katkıda bulunanlar projeye daha da büyük bir etki yapabilirler. Diğer katkı sağlayıcıları, katkılarını gözden geçirerek, sorunları sınıflandırarak ve projenin geleceğini şekillendirmede daha büyük bir rol alarak yardımcı olabilirler. Node.js topluluğu tarafından herhangi bir Node.js deposunda önemli ve değerli katkılar yapan bireyler İş birlikçi olarak belirlenebilir ve projeye taahhüt(commit) erişimi verilebilir. Dikkate alınan faaliyetler şunları içerir (ancak bunlarla sınırlı değildir): -- kod taahhütleri ve pull request istekleri -- kod taahhütleri ve pull request istekleri -- sorunlar ve pull request istekleri hakkında yorumlar -- node.js web sitesine katkılar -- son kullanıcılara ve acemi katılımcılara sağlanan yardım -- çalışma gruplarına destek +- kod taahhütleri ve çekme istekleri +- belge taahhütleri ve çekme istekleri +- sorunlar ve çekme istekleri hakkındaki yorumlar +- Node.js web sitesine katkılar +- son kullanıcılara ve acemi katkıda bulunanlara sağlanan yardım +- çalışma gruplarına katılım - daha geniş Node.js topluluklarında katkı sağlamak -Kişiler değerli katkılarının dikkate alınmadığını düşünürlerse, bunu sorun olarak bildirebilir veya bir TSC üyesi ile doğrudan iletişime geçebilir. +Değerli katkılarda bulunan kişiler dikkate alınmadıklarına inanıyorlarsa [bir sorun kaydedebilirler](https://github.com/nodejs/TSC/issues) veya [bir TSC üyesiyle iletişime geçebilirler](https://github.com/nodejs/node#tsc-technical-steering-committee). diff --git a/apps/site/pages/tr/about/get-involved/index.md b/apps/site/pages/tr/about/get-involved/index.md index e8b872f9cf709..a9b30b0b26f80 100644 --- a/apps/site/pages/tr/about/get-involved/index.md +++ b/apps/site/pages/tr/about/get-involved/index.md @@ -5,22 +5,32 @@ layout: about # Dahil Olun +Node.js topluluğuna dahil olmanın birden çok yolu vardır. Node.js projesi büyük ve çeşitliliğe sahip bir topluluktur, kod yazmanın ötesinde katkıda bulunmanın birçok yolu vardır. + ## Topluluk Tartışması -- [GitHub sorunlar listesi] (https\://github.com/nodejs/node/issues) Node.js temel özelliklerinin tartışıldığı yerdir. -- Node.js geliştirme hakkında gerçek zamanlı sohbet için aşağıdaki platformlardan birini kullanabilirsiniz - - IRC için, bir [IRC istemcisi](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ile `#node.js` kanalındaki `irc.libera.chat` adresine gidin veya [bir web istemcisi](https://kiwiirc.com/nextclient/) kullanarak web tarayıcınızdan kanala bağlanın - - Slack için iki seçenek vardır: - - OpenJSF Slack] (https\://slack-invite.openjsf.org/), birkaç Node.js kanalına sahip bir Vakıf tarafından işletilen Slack'tir (`#nodejs-` ile ön eklenmiş kanallar projeyle ilgilidir). - - [Node Slackers](https://www.nodeslackers.com/) Node.js odaklı bir Slack topluluğudur. -- Resmi Node.js Twitter hesabı [nodejs](https://twitter.com/nodejs) şeklindedir. -- Tüm genel ekip toplantılarını içeren [Node.js proje takvimi] (https\://nodejs.org/calendar). +- [GitHub sorunlar listesi](https://github.com/nodejs/node/issues), Node.js'in çekirdek özelliklerinin tartışıldığı yerdir ve Node.js hakkında sorularınız varsa [GitHub tartışmalarını](https://github.com/orgs/nodejs/discussions) kullanabilirsiniz. +- Node.js hakkında soru sormak için [`nodejs/help`](https://github.com/nodejs/help/issues) deposunu kullanabilirsiniz. +- Resmi Node.js X (eski adıyla Twitter) hesabı [nodejs](https://twitter.com/nodejs) şeklindedir. +- Tüm herkese açık ekip toplantılarını içeren [Node.js proje takvimi](https://nodejs.org/calendar). + +## Öğrenme Materyalleri -## Öğrenme +Node.js hakkında daha fazla bilgi edinmek istiyorsanız, sizin için birçok kaynak mevcuttur. -- Node.js web sitesinin [Resmi Öğrenme bölümü] (https\://nodejs.org/en/learn/). +- Node.js web sitesinin [Resmi Öğrenme bölümü](https://nodejs.org/en/learn/). - [Resmi API referans belgeleri](https://nodejs.org/api/). - [NodeSchool.io](https://nodeschool.io/) size Node.js kavramlarını etkileşimli komut satırı oyunları aracılığıyla öğretecek. -- [Stack Overflow Node.js etiketi] (https://stackoverflow.com/questions/tagged/node.js) her gün yeni bilgiler toplamaktadır. -- [DEV Topluluğu Node.js etiketi] (https://dev.to/t/node) Node.js projelerini, makalelerini ve eğitimlerini paylaşmanın yanı sıra Node.js ile ilgili konularda tartışmalar başlatmak ve geri bildirim istemek için bir yerdir. Tüm beceri seviyelerindeki geliştiriciler katılabilir. -- [Nodeiflux] (https://discordapp.com/invite/vUsrbjd), Discord'da birbirini destekleyen Node.js arka uç geliştiricilerinden oluşan samimi bir topluluktur. +- [Stack Overflow Node.js etiketi](https://stackoverflow.com/questions/tagged/node.js) her gün yeni bilgiler toplamaktadır. +- [DEV Topluluğu Node.js etiketi](https://dev.to/t/node) Node.js projelerini, makalelerini ve eğitimlerini paylaşmanın yanı sıra Node.js ile ilgili tartışmalar başlatıp ve geri bildirim isteyebileceğiniz bir yerdir. Tüm beceri seviyelerindeki geliştiriciler katılabilir. +- [Reddit'teki Node.js topluluğu](https://www.reddit.com/r/node), Node.js projelerini, makalelerini ve eğitimlerini paylaşabileceğin bir yer. Ayrıca Node.js ile ilgili tartışmalar başlatabilir ve geri bildirim isteyebilirsin. Her seviyeden geliştirici burada yer alabilir. + +## Resmi olmayan Tartışma Alanları + +Node.js hakkında daha samimi bir ortamda tartışmak istiyorsanız, birkaç tane resmi olmayan tartışma alanı var. Ancak, bunların Node.js projesi tarafından resmi olarak desteklenmediğini unutmayın.Ayrıca ilgili davranış kurallarına/kurallara uyun. + +- [Node Slackers](https://www.nodeslackers.com/) Node.js odaklı bir Slack topluluğudur. +- [OpenJSF Slack](https://slack-invite.openjsf.org/) OpenJS Kuruluşu için Slack çalışma alanıdır. Node.js ile ilgili birkaç kanal bulunuyor. _(#nodejs-’ ile başlayan kanallar projeyle ilgilidir)_ +- [Nodeiflux](https://discordapp.com/invite/vUsrbjd), Discord'da birbirini destekleyen Node.js arka uç geliştiricilerinden oluşan samimi bir topluluktur. +- [ES Topluluğu](https://discord.gg/zJsuc6vvhn), Fransızca konuşan JavaScript geliştiricileri için bir Discord topluluğudur. +- `#node.js` kanalındaki `irc.libera.chat`'e [IRC istemcisi](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ile bağlanın veya web tarayıcınızdan [web istemcisi](https://kiwiirc.com/nextclient/) kullanarak kanala bağlanın. diff --git a/apps/site/pages/tr/about/governance.md b/apps/site/pages/tr/about/governance.md new file mode 100644 index 0000000000000..0a1db1d9735fa --- /dev/null +++ b/apps/site/pages/tr/about/governance.md @@ -0,0 +1,31 @@ +--- +title: Proje Yönetimi +layout: about +--- + +# Proje Yönetimi + +## Uzlaşma Arama Süreci + +Node.js projesi bir [Uzlaşma Arayışı][consensus seeking] karar verme modeli izlemektedir. + +## İş birlikçiler + +[nodejs/node][] çekirdek GitHub deposu, mevcut diğer İş birlikçiler tarafından aday gösterilen İş birlikçiler tarafından sürdürülmektedir. + +Önemli ve değerli katkılarda bulunanlar İş birlikçi yapılır ve projeye taahhüt erişimi verilir. Bu kişiler diğer İş birlikçiler tarafından belirlenir ve adaylıkları mevcut İş birlikçilerle görüşülür. + +İş birlikçilerin güncel listesi için, projenin [README.md][] dosyasına bakın. + +İşbirlikçiler için bir rehber, [collaborator-guide.md][] dosyasında bulunmaktadır. + +## 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. + +[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/tr/about/index.mdx b/apps/site/pages/tr/about/index.mdx new file mode 100644 index 0000000000000..bc4e9683f1bf1 --- /dev/null +++ b/apps/site/pages/tr/about/index.mdx @@ -0,0 +1,60 @@ +--- +title: Node.js® Hakkında +layout: about +--- + +Node.js® Hakkında + +Asenkron olaya dayalı bir JavaScript çalıştırma ortamı olarak, Node.js, ölçeklenebilir ağ uygulamaları oluşturmak için tasarlanmıştır. Aşağıdaki "merhaba dünya" örneğinde, birçok bağlantı aynı anda işlenebilir. Her bağlantıda geri çağrı tetiklenir, ancak yapılacak iş yoksa, Node.js uyur. + +```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}/`); +}); +``` + +Bu, bugünün daha yaygın olan eş zamanlılık modeline karşı bir durumdur, bu modelde işletim sistemi iş parçacıkları kullanılır. İş parçacığı tabanlı ağ iletişimi nispeten verimsizdir ve çok zor kullanılır. Ayrıca, Node.js kullanıcıları, kilitlenme endişelerinden bağımsızdır, çünkü kilitler yoktur. Node.js'deki neredeyse hiçbir işlev doğrudan G/Ç yapmaz, bu nedenle işlem, Node.js standart kitaplığının senkron yöntemleri kullanılarak G/Ç gerçekleştirildiğinde dışında asla bloke olmaz. Hiçbir şey bloke olmadığı için, ölçeklenebilir sistemlerin Node.js'te geliştirilmesi çok mantıklıdır. + +Eğer bu dilin bir kısmı size yabancı geliyorsa, [Blokajlı ve Blokajlı Olmayan][] hakkında tam bir makale bulunmaktadır. + +--- + +Node.js, Ruby'nin [Event Machine][] ve Python'un [Twisted][] gibi sistemlere benzer şekilde tasarlanmış ve etkilenmiştir. Node.js, olay modelini biraz daha ileri götürür. Olay döngüsünü bir kütüphane olarak değil, bir çalışma zamanı yapısı olarak sunar. Diğer sistemlerde, olay döngüsünü başlatmak için her zaman bir blokajlı çağrı vardır. Tipik olarak, davranış, betiğin başında geri çağrılar aracılığıyla tanımlanır ve sonunda EventMachine::run() gibi bir blokajlı çağrı ile bir sunucu başlatılır. Node.js'te böyle bir olay-döngüsünü-başlatma çağrısı yoktur. Node.js, girdi betiğini yürüttükten sonra basitçe olay döngüsüne girer. Node.js, yapılacak başka geri çağrı kalmadığında olay döngüsünden çıkar. Bu davranış, tarayıcı JavaScript'iyle benzerdir - olay döngüsü kullanıcıdan gizlenir. + +HTTP, Node.js'de birinci sınıf bir vatandaştır ve akış ve düşük gecikme düşünülerek tasarlanmıştır. Bu, Node.js'in bir web kitaplığının veya çerçevesinin temeli için uygun olmasını sağlar. + +Node.js'in iş parçacıkları olmadan tasarlanmış olması, çevrenizdeki birden fazla çekirdeği kullanamayacağınız anlamına gelmez. Çocuk süreçler, [child\_process.fork()][] API'si kullanılarak oluşturulabilir ve iletişim kurmak için tasarlanmıştır. Aynı arayüz üzerine inşa edilmiş olan [`cluster`][] modülü, çekirdekleriniz üzerinde yük dengelemeyi etkinleştirmek için süreçler arasında soket paylaşmanıza izin verir. + +[blokajlı ve Blokajlı Olmayan]: /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/tr/about/previous-releases.mdx b/apps/site/pages/tr/about/previous-releases.mdx new file mode 100644 index 0000000000000..cbbcd9b271da3 --- /dev/null +++ b/apps/site/pages/tr/about/previous-releases.mdx @@ -0,0 +1,21 @@ +--- +title: Node.js Sürümleri +layout: about +--- + +Node.js Sürümleri + +Ana Node.js sürümleri altı ay boyunca Mevcut yayın durumuna girer, bu da kütüphane yazarlarına destek eklemeleri için zaman tanır. +Altı ayın ardından, tek sayılı sürümler (9, 11, vb.) desteklenmez hale gelir ve çift sayılı sürümler (10, 12, vb.) Etkin LTS durumuna geçer ve genel kullanıma hazırdır. +LTS yayın durumu "uzun vadeli destek" anlamına gelir ve genellikle kritik hataların toplamda 30 ay boyunca düzeltileceğini garanti eder. +Üretim uygulamaları yalnızca Etkin LTS veya Bakım LTS sürümlerini kullanmalıdır. + +## Yayın Takvimi + +![Yayınlar](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) + +Node.js sürüm takvimine ilişkin tüm ayrıntılar [GitHub'da](https://github.com/nodejs/release#release-schedule) mevcuttur. + +## Bir sürüm dalının en son sürümünü mü arıyorsunuz? + + diff --git a/apps/site/pages/tr/about/security-reporting.mdx b/apps/site/pages/tr/about/security-reporting.mdx new file mode 100644 index 0000000000000..8c5cf0326847d --- /dev/null +++ b/apps/site/pages/tr/about/security-reporting.mdx @@ -0,0 +1,66 @@ +--- +title: Güvenlik Raporlaması +layout: about +--- + +Güvenlik Raporlaması + +Aktif Güvenlik Politikaları hakkında daha fazla bilgi için [bu sayfaya](https://github.com/nodejs/node/security/policy) göz atın. + +## Node.js'de bir hata bildirme + +Node.js'deki güvenlik hatalarını [HackerOne](https://hackerone.com/nodejs) aracılığıyla bildirin. + +Raporunuz 5 gün içinde onaylanacak ve 10 gün içinde raporunuza, gönderiminizi ele alırken sonraki adımları belirten daha ayrıntılı bir yanıt alacaksınız. + +Raporunuza yapılan ilk yanıttan sonra, güvenlik ekibi sorunun düzeltilmesi ve tam bir duyuru yapılması için yapılan ilerlemeler hakkında sizi bilgilendirmeye çalışacaktır. Ayrıca, bildirilen sorun hakkında ek bilgi veya rehberlik talep edebilirler. + +### Node.js hata ödül programı + +Node.js projesi, güvenlik araştırmacıları ve sorumlu kamu açıklamaları için resmi bir hata ödül programı yürütmektedir. Program HackerOne platformu üzerinden yönetilmektedir. Daha fazla ayrıntı için [https://hackerone.com/nodejs](https://hackerone.com/nodejs) adresine bakın. + +## Üçüncü taraf bir modüldeki hatayı bildirme + +Üçüncü taraf modüllerdeki güvenlik hataları ilgili bakımcılara bildirilmelidir. + +## Bilgilendirme politikası + +Node.js için güvenlik açıklama politikası + +Güvenlik raporu alınır ve birincil bir işleyici atanır. Bu kişi düzeltme ve sürüm sürecini koordine edecektir. Sorun doğrulanır ve etkilenen tüm sürümlerin bir listesi belirlenir. Kod, olası benzer sorunları bulmak için denetlenir. Hala bakım altında olan tüm sürümler için düzeltmeler hazırlanır. Bu düzeltmeler genel depoya taahhüt edilmez, bunun yerine duyuruya kadar yerel olarak tutulur. + +Bu zafiyet için önerilen ambargo tarihi belirlenir ve bir CVE (Common Vulnerabilities and Exposures - Ortak Zayıflıklar ve Maruz Kalma) talep edilir. + +Ambargo tarihinde, Node.js güvenlik posta listesine duyurunun bir kopyası gönderilir. Değişiklikler genel depoya gönderilir ve yeni yapılar nodejs.org'a dağıtılır. Posta listesine bildirim yapıldıktan sonraki 6 saat içinde, duyurunun bir kopyası Node.js blogunda yayınlanır. + +Genellikle, zafiyetin yayınlandığı tarihten itibaren 72 saat sonra ambargo tarihi belirlenir. Ancak, bu, hatanın ciddiyetine veya bir düzeltmenin uygulanmasındaki zorluğa bağlı olarak değişebilir. + +Bu süreç, özellikle diğer projelerin bakımcılarıyla koordinasyon gerektiğinde biraz zaman alabilir. Hatanın mümkün olduğunca zamanında ele alınması için her türlü çaba gösterilecektir; ancak, ifşanın tutarlı bir şekilde ele alınmasını sağlamak için yukarıdaki yayın sürecini takip etmemiz önemlidir. + +## Güvenlik güncellemeleri almak + +Güvenlik bildirimleri aşağıdaki yöntemlerle dağıtılacaktır. + +[Google Grubu](https://groups.google.com/group/nodejs-sec) +[Node.js Bloğu](/blog) + +## Bu politikaya ilişkin yorumlar + +Bu sürecin nasıl geliştirilebileceğine dair önerileriniz varsa lütfen +[çekme isteği yapın](https://github.com/nodejs/nodejs.org) veya +Tartışmak için [bir konuyu dosyalayın](https://github.com/nodejs/security-wg/issues/new). + +## OpenSSF En İyi Uygulamaları + + + OpenSSF Rozeti + + +Açık Kaynak Güvenlik Vakfı (OpenSSF) [En İyi Uygulamalar rozeti](https://github.com/coreinfrastructure/best-practices-badge), Özgür/Kütüphane ve Açık Kaynak Yazılım (FLOSS) projelerinin en iyi uygulamaları takip ettiklerini göstermeleri için bir yoldur. Projeler gönüllü olarak her bir en iyi uygulamayı nasıl takip ettiklerini kendi kendilerine belgeleyebilirler. Rozetin tüketicileri, hangi FLOSS projelerinin en iyi uygulamaları takip ettiğini ve sonuç olarak daha yüksek kalitede güvenli yazılım üretme olasılığının daha yüksek olduğunu hızlı bir şekilde değerlendirebilirler. diff --git a/apps/site/pages/tr/download/package-manager/all.md b/apps/site/pages/tr/download/package-manager/all.md new file mode 100644 index 0000000000000..fd38a3884c4a2 --- /dev/null +++ b/apps/site/pages/tr/download/package-manager/all.md @@ -0,0 +1,398 @@ +--- +layout: article +title: Node.js'i paket yöneticisi aracılığıyla yüklemek +--- + +# Paket Yöneticileri Aracılığıyla Node.js Kurulumu + +> Bu sayfadaki paketler, ilgili paketleyiciler tarafından sürdürülür ve desteklenir, Node.js çekirdek ekibi tarafından **değil**. Karşılaştığınız herhangi bir sorunu paketin bakımını üstlenen kişiye bildirin. Sorununuzun Node.js'in kendisinde bir hata olduğu ortaya çıkarsa, bakımı üstlenen kişi bu sorunu yukarıya raporlayacaktır. + +## Alpine Linux + +Node.js LTS ve npm paketleri Ana Depo'da bulunmaktadır. + +```bash +apk add nodejs npm +``` + +Node.js Current, Topluluk Deposu'ndan kurulabilir. + +```bash +apk add nodejs-current +``` + +## Android + +Android desteği Node.js'de hala deneyseldir, bu nedenle önceden derlenmiş ikili (binary) dosyalar henüz Node.js geliştiricileri tarafından sağlanmamaktadır. + +Ancak, bazı üçüncü parti çözümler de mevcuttur. Örneğin, [Termux](https://termux.com/) topluluğu, Android için terminal emülatörü ve Linux ortamının yanı sıra kendi paket yöneticisini ve önceden derlenmiş birçok uygulamanın [kapsamlı koleksiyonunu](https://github.com/termux/termux-packages) sağlar. Termux uygulamasındaki bu komut mevcut son Node.js sürümünü yükleyecektir: + +```bash +pkg install nodejs +``` + +Şu anda, Termux Node.js ikili dosyaları system-icu'ya (`libicu` paketine bağlı olarak) bağlanmıştır. + +## Arch Linux + +Node.js ve npm paketleri Topluluk Deposu'nda bulunmaktadır. + +```bash +pacman -S nodejs npm +``` + +## CentOS, Fedora ve Red Hat Enterprise Linux + +CentOS/RHEL 8 ve Fedora'da, Node.js `nodejs` adında bir modül olarak mevcuttur. + +```bash +dnf module install nodejs: +``` + +`` düğümü, Node.js'in ana sürümüne karşılık gelir. +Kullanılabilir akışların listesini görmek için: + +```bash +dnf module list nodejs +``` + +Örneğin, Node.js 18'i yüklemek için: + +```bash +dnf module install nodejs:18/common +``` + +### Alternatifler + +Bu kaynaklar CentOS, Fedora ve RHEL ile uyumlu paketler sağlamaktadır. + +- [Node.js snapleri](#snap) https://github.com/nodejs/snap adresinde tutulmakta ve desteklenmektedir +- [Node.js ikili dağıtımları](#debian-and-ubuntu-based-linux-distributions) [NodeSource](https://github.com/nodesource/distributions) tarafından sürdürülür ve desteklenir + +## Debian ve Ubuntu tabanlı Linux dağıtımları + +[Node.js ikili dağıtımları](https://github.com/nodesource/distributions) NodeSource'tan temin edilebilir. + +### Alternatifler + +Debian ve Ubuntu tabanlı Linux dağıtımları ile uyumlu paketler [Node.js snapleri](#snap) üzerinden temin edilebilir. + +## Exherbo Linux + +Node.js ve npm paketleri [arbor deposunda](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node) mevcuttur. + +```bash +cave resolve -x node +``` + +## fnm + +Rust'ta yerleşik hızlı ve basit Node.js sürüm yöneticisi, birden fazla yayınlanan Node.js sürümünü yönetmek için kullanılır. Yükleme, kaldırma, geçerli dizine göre Node sürümlerini otomatik olarak değiştirme vb. işlemleri gerçekleştirmenize olanak tanır. +Fnm'yi yüklemek için bu [install script](https://github.com/Schniz/fnm#using-a-script-macoslinux) kullanın. + +fnm, macOS, Windows, Linux gibi çapraz platform desteği sunar ve tüm yaygın kabuklar (Bash, Zsh, Fish, PowerShell, Windows Komut İstemi) ile uyumludur. fnm, hızlı bir şekilde oluşturulmuştur ve.node-version ve.nvmrc dosyaları için uyumluluk desteği sunar. + +## FreeBSD + +Node.js'nin en güncel sürümü [www/node](https://www.freshports.org/www/node) bağlantısı üzerinden erişilebilir. + +[pkg](https://www.freebsd.org/cgi/man.cgi?pkg) aracılığıyla ikili bir paket yükleyin: + +```bash +pkg install node +``` + +Ya da [ports](https://www.freebsd.org/cgi/man.cgi?ports) kullanarak kendi başınıza derleyin: + +```bash +cd /usr/ports/www/node && make install +``` + +## Gentoo + +Node.js portage ağacında mevcuttur. + +```bash +emerge nodejs +``` + +## IBM i + +Node.js'nin LTS sürümleri IBM'den temin edilebilir ve [yum paket yöneticisi](https://ibm.biz/ibmi-rpms) aracılığıyla kullanılabilir. Paket adı `nodejs` ve ardından ana sürüm numarasıdır (örneğin, `nodejs18`, `nodejs20` vb.) + +Node.js 20.x'i komut satırından yüklemek için, \*ALLOBJ özel yetkisine sahip bir kullanıcı olarak aşağıdakileri çalıştırın: + +```bash +yum install nodejs20 +``` + +Node.js, IBM i Access Client Solutions ürünü ile de kurulabilir. Daha fazla ayrıntı için [bu destek belgesine](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) bakın + +## macOS + +MacOS Installer](/#home-downloadhead) doğrudan [nodejs.org](https://nodejs.org/) web sitesinden indirin. + +_Eğer paketi bash ile indirmek istiyorsanız:_ + +```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 "/" +``` + +### Alternatifler + +[Homebrew](https://brew.sh/)\*\* kullanarak: + +```bash +brew install node +``` + +[MacPorts](https://www.macports.org/)\*\* kullanarak: + +```bash +port install nodejs + +# Example +port install nodejs7 +``` + +**[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)** kullanılıyor: + +binary paketi yükleyin: + +```bash +pkgin -y install nodejs +``` + +Veya pkgsrc'den manuel olarak derleyin: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## n + +n\`, Mac ve Linux için kullanımı kolay bir Node.js sürüm yöneticisidir. Zengin bir sözdizimi kullanarak yüklemek için hedef sürümü belirtin, +veya önceden indirilmiş sürümlerden oluşan bir menüden seçim yapabilirsiniz. Sürümler sistem genelinde veya kullanıcı genelinde yüklenir ve daha fazlası için +Hedeflenen kullanım için bir sürümü doğrudan önbelleğe alınmış indirmelerden çalıştırabilirsiniz. + +Yükleme yöntemleri (bootstrap, npm, Homebrew, üçüncü taraf) ve tüm kullanım ayrıntıları için [homepage](https://github.com/tj/n) adresine bakın. + +Eğer zaten `npm` kullanıyorsanız, `n` ve ardından en yeni LTS `node` sürümünü yüklemek kadar basittir: + +``` +npm install -g n +n lts +``` + +## NetBSD + +Node.js pkgsrc ağacında mevcuttur: + +```bash +cd /usr/pkgsrc/lang/nodejs && make install +``` + +Veya pkgin kullanarak binary paket (platformunuz için mevcutsa) yükleyin: + +```bash +pkgin -y install nodejs +``` + +## Nodenv + +nodenv`, `nvm`ye benzer hafif bir node sürüm yöneticisidir. Basit ve öngörülebilirdir. Zengin bir eklenti ekosistemi, onu ihtiyaçlarınıza göre uyarlamanızı sağlar. Uygulamanız için bir Node sürümü seçmek ve geliştirme ortamınızın üretimle eşleşmesini garanti etmek için `nodenv\` kullanın. + +Nodenv kurulum talimatları [Github sayfasında](https://github.com/nodenv/nodenv#installation) tutulmaktadır. Kurulum adımlarının en son sürümünü takip ettiğinizden emin olmak için lütfen bu sayfayı ziyaret edin. + +## nvm + +Node Version Manager, birden fazla yayınlanmış Node.js sürümünü yönetmek için kullanılan bir bash betiğidir. İzin verir +yükleme, kaldırma, sürüm değiştirme vb. işlemleri gerçekleştirebilirsiniz. +Nvm yüklemek için bu [install script](https://github.com/nvm-sh/nvm#install--update-script) kullanın. + +Unix / OS X sistemlerinde kaynaktan oluşturulan Node.js şu şekilde kurulabilir +nvm'nin beklediği konuma yükleyerek [nvm](https://github.com/creationix/nvm): + +```bash +env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" +``` + +Bundan sonra, yayınlanan sürümler ve sürümler arasında geçiş yapmak için `nvm` kullanabilirsiniz +kaynaktan oluşturulmuştur. +Örneğin, Node.js sürümü v8.0.0-pre ise: + +```bash +nvm use 8 +``` + +Resmi sürüm çıktığında, oluşturulmuş sürümü kaldırmak isteyeceksiniz +Kaynaktan: + +```bash +nvm uninstall 8 +``` + +## nvs + +#### Windows + +`nvs` sürüm yöneticisi çapraz platformdur ve Windows, macOS ve Unix benzeri sistemlerde kullanılabilir + +Windows'a `nvs` yüklemek için buradan [sürüm sayfasına](https://github.com/jasongin/nvs/releases) gidin ve en son sürümün MSI yükleyici dosyasını indirin. + +Yüklemek için `chocolatey` de kullanabilirsiniz: + +```bash +choco install nvs +``` + +#### macos, Unix benzeri + +MacOS/Unix benzeri sistemlerde `nvs` kurulum adımlarına ilişkin belgelere [buradan](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) ulaşabilirsiniz + +#### Kullanım + +Bundan sonra farklı node sürümleri arasında geçiş yapmak için `nvs` kullanabilirsiniz. + +Node'un en son sürümünü eklemek için: + +```bash +nvs add latest +``` + +Veya node'un en son LTS sürümünü eklemek için: + +```bash +nvs add lts +``` + +Ardından, geçerli kabuk için `PATH`inize bir node sürümü eklemek için `nvs use` komutunu çalıştırın: + +```bash +$ nvs use lts +PATH -= %LOCALAPPDATA%\nvs\default +PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 +``` + +Then run the `nvs use` command to add a version of node to your `PATH` for the current shell: + +```bash +nvs link lts +``` + +## OpenBSD + +Node.js port sistemi aracılığıyla kullanılabilir. + +```bash +/usr/ports/lang/node +``` + +OpenBSD üzerinde [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) kullanımı: + +```bash +pkg_add node +``` + +## openSUSE ve SLE + +Node.js ana depolarda aşağıdaki paketler altında mevcuttur: + +- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` +- **openSUSE Tumbleweed**: `nodejs20` +- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12` ve `nodejs14` + ("Web ve Komut Dosyası Modülü" [etkin](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated) olmalıdır.) +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12` ve `nodejs14` + ("Web ve Komut Dosyası Modülü" [etkin](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module) olmalıdır.) + +Örneğin, openSUSE Leap 15.2 üzerinde Node.js 14.x yüklemek için aşağıdakileri root olarak çalıştırın: + +```bash +zypper install nodejs14 +``` + +Node'un farklı ana sürümleri aynı anda kurulabilir ve kullanılabilir. + +## SmartOS ve illumos + +SmartOS imajları pkgsrc önceden yüklenmiş olarak gelir. Diğer illumos dağıtımlarında, önce **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)** yükleyin, ardından ikili paketi normal şekilde yükleyebilirsiniz: + +```bash +pkgin -y install nodejs +``` + +Veya pkgsrc'den manuel olarak derleyin: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## Yakala + +[Node.js snaps](https://github.com/nodejs/snap), Snap deposunda [`node`](https://snapcraft.io/node) olarak mevcuttur. + +## Solus + +Solus, ana deposunda Node.js sağlar. + +```bash +sudo eopkg install nodejs +``` + +## vfox + +Platformlar arası (Windows, macOS, Linux) ve **genişletilebilir** bir sürüm yöneticisi. + +**Farklı projeler için farklı sürümler**, **farklı kabuklar için farklı sürümler** ve geçerli dizine göre Node sürümlerini otomatik olarak değiştirmenize vb. olanak tanır. + +Tüm popüler kabukları (Bash, Zsh, Fish, PowerShell, Clink, Cmder) destekler. + +Vfox'u hızlı bir şekilde kullanmak ve tüm kullanım ayrıntıları için [Hızlı Başlangıç](https://vfox.lhan.me/guides/quick-start.html) bölümüne bakın. + +## Void Linux + +Void Linux, Node.js'yi ana depoda kararlı olarak gönderir. + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +Windows Installer](/#home-downloadhead) doğrudan [nodejs.org](https://nodejs.org/) web sitesinden indirin. + +### Alternatifler + +[Winget](https://aka.ms/winget-cli)\*\* kullanarak: + +```bash +winget install OpenJS.NodeJS +# or for LTS +winget install OpenJS.NodeJS.LTS +``` + +Yukarıdaki iki komuttan birini çalıştırdıktan sonra, yeniden başlatmak gerekebilir +CLI komutu kullanılabilir hale gelmeden önce terminal emülatörü. + +[Chocolatey](https://chocolatey.org/)\*\* kullanarak: + +```bash +cinst nodejs +# or for full install with npm +cinst nodejs.install +``` + +[Scoop](https://scoop.sh/)\*\* kullanarak: + +```bash +scoop install nodejs +# or for LTS +scoop install nodejs-lts +``` + +## z/OS + +IBM® SDK for Node.js - z/OS® SMP/E ve PAX olarak iki kurulum formatında sunulur. Size uygun olan kurulum formatını seçin: + +- [z/OS üzerinde Node.js'nin SMP/E sürümünün kurulması ve yapılandırılması](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [z/OS üzerinde Node.js PAX sürümünün kurulması ve yapılandırılması](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/tr/download/package-manager/current.mdx b/apps/site/pages/tr/download/package-manager/current.mdx new file mode 100644 index 0000000000000..1d22f74b12455 --- /dev/null +++ b/apps/site/pages/tr/download/package-manager/current.mdx @@ -0,0 +1,24 @@ +--- +layout: download +title: Node.js® İndir +subtitle: Node.js'i istediğiniz şekilde indirin. +--- + +
+ kullanarak 'a Node.js yükleyin + + +
+ +
+Node.js içerir. + +Bu sürüm için değişiklik günlüğünü okuyun + +Bu sürüm için blog yazısını buradan okuyun + +İmzalı SHASUMS'u nasıl doğrulayacağınızı buradan öğrenin + +Diğer topluluk tarafından desteklenen paket yöneticilerine göz atın + +
diff --git a/apps/site/pages/tr/download/package-manager/index.mdx b/apps/site/pages/tr/download/package-manager/index.mdx new file mode 100644 index 0000000000000..9e4ff5cdf845f --- /dev/null +++ b/apps/site/pages/tr/download/package-manager/index.mdx @@ -0,0 +1,25 @@ +--- +layout: download +title: Node.js® İndir +subtitle: Node.js'i istediğiniz şekilde indirin. +--- + +
+ kullanarak üzerinde Node.js yükleyin + + +
+ +
+Node.js içerir. + +Bu sürüm için değişiklik +günlüğünü okuyun + + Bu sürüm için blog yazısını okuyun + +İmzalı SHASUMS'u nasıl doğrulayacağınızı buradan öğrenin + +Diğer topluluk tarafından desteklenen paket yöneticilerine göz atın + +
diff --git a/apps/site/pages/tr/download/prebuilt-binaries/current.mdx b/apps/site/pages/tr/download/prebuilt-binaries/current.mdx new file mode 100644 index 0000000000000..8c8033438df85 --- /dev/null +++ b/apps/site/pages/tr/download/prebuilt-binaries/current.mdx @@ -0,0 +1,24 @@ +--- +layout: download +title: Node.js® İndir +subtitle: Node.js'i istediğiniz şekilde indirin. +--- + +
+Node.js'ın işletim sistemi için çalışan sürümünü istiyorum + + +
+ +
+Node.js içerir. + +Bu sürüm için değişiklik günlüğünü okuyun + +Bu sürüm için blog yazısını buradan okuyun + +İmzalı SHASUMS'u nasıl doğrulayacağınızı buradan öğrenin + +Diğer platformlar için Nightly önceden oluşturulmuş ikili dosyalara veya Resmi Olmayan Derlemeler'e göz atın + +
diff --git a/apps/site/pages/tr/download/prebuilt-binaries/index.mdx b/apps/site/pages/tr/download/prebuilt-binaries/index.mdx new file mode 100644 index 0000000000000..5f0516b982eef --- /dev/null +++ b/apps/site/pages/tr/download/prebuilt-binaries/index.mdx @@ -0,0 +1,26 @@ +--- +layout: download +title: Node.js® İndir +subtitle: Node.js'i istediğiniz şekilde indirin. +--- + +
+Node.js'in işletim sistemi için çalışan sürümünü istiyorum + + +
+ +
+Node.js içerir. + +Bu sürüm için değişiklik +günlüğünü okuyun. + +Bu sürüm için blog yazısını buradan okuyun. + +imzalı SHASUMS doğrulamayı +öğrenin. + +Diğer platformlar için Nightly önceden oluşturulmuş ikili dosyalara, tüm Release önceden oluşturulmuş ikili dosyalarına veya Resmi Olmayan Derlemeler'e göz atın. + +
diff --git a/apps/site/pages/tr/download/prebuilt-installer/current.mdx b/apps/site/pages/tr/download/prebuilt-installer/current.mdx new file mode 100644 index 0000000000000..bc0f788a4fe04 --- /dev/null +++ b/apps/site/pages/tr/download/prebuilt-installer/current.mdx @@ -0,0 +1,26 @@ +--- +layout: download +title: Node.js® İndir +subtitle: Node.js'i istediğiniz şekilde indirin. +--- + +
+Node.js'in çalıştıran için sürümünü istiyorum + + +
+ +
+Node.js içerir. + +Bu sürüm için değişiklik +günlüğünü okuyun + +Bu sürüm için blog yazısını buradan okuyun + +İmzalı SHASUMS'u nasıl doğrulayacağınızı buradan öğrenin + +Mevcut tüm Node.js indirme seçeneklerine göz atın + +Node.js Sürümleri hakkında bilgi alın +
diff --git a/apps/site/pages/tr/download/prebuilt-installer/index.mdx b/apps/site/pages/tr/download/prebuilt-installer/index.mdx new file mode 100644 index 0000000000000..4aaca742f05a1 --- /dev/null +++ b/apps/site/pages/tr/download/prebuilt-installer/index.mdx @@ -0,0 +1,26 @@ +--- +layout: download +title: Node.js® İndir +subtitle: Node.js'i istediğiniz şekilde indirin. +--- + +
+Node.js'in çalıştıran için sürümünü istiyorum + + +
+ +
+Node.js içerir. + +Bu sürüm için değişiklik +günlüğünü okuyun + +Bu sürüm için blog yazısını buradan okuyun + +İmzalı SHASUMS'u nasıl doğrulayacağınızı buradan öğrenin + +Mevcut tüm Node.js indirme seçeneklerine göz atın + +Node.js Sürümleri hakkında bilgi alın +
diff --git a/apps/site/pages/tr/download/source-code/current.mdx b/apps/site/pages/tr/download/source-code/current.mdx new file mode 100644 index 0000000000000..b0e68f2b2598c --- /dev/null +++ b/apps/site/pages/tr/download/source-code/current.mdx @@ -0,0 +1,24 @@ +--- +layout: download +title: Node.js® İndir +subtitle: Node.js'i istediğiniz şekilde indirin. +--- + +
+Node.js kaynak kodunun sürümünü istiyorum. + + +
+ +
+Node.js içerir. + +Bu sürüm için değişiklik +günlüğünü okuyun + +Bu sürüm için blog yazısını buradan okuyun + +İmzalı SHASUMS'u nasıl doğrulayacağınızı buradan öğrenin + +Node.js'i kaynaktan 'nasıl oluşturacağınıza göz atın. +
diff --git a/apps/site/pages/tr/download/source-code/index.mdx b/apps/site/pages/tr/download/source-code/index.mdx new file mode 100644 index 0000000000000..fede6378b5d53 --- /dev/null +++ b/apps/site/pages/tr/download/source-code/index.mdx @@ -0,0 +1,24 @@ +--- +layout: download +title: Node.js® İndir +subtitle: Node.js'i istediğiniz şekilde indirin. +--- + +
+Node.js kaynak kodunun sürümünü istiyorum. + + +
+ +
+Node.js içerir. + +Bu sürüm için değişiklik +günlüğünü okuyun + +Bu sürüm için blog yazısını buradan okuyun + +İmzalı SHASUMS'u nasıl doğrulayacağınızı buradan öğrenin + +Node.js'i kaynaktan nasıl oluşturacağınıza göz atın. +
diff --git a/apps/site/pages/tr/index.mdx b/apps/site/pages/tr/index.mdx new file mode 100644 index 0000000000000..163b720e0a7d9 --- /dev/null +++ b/apps/site/pages/tr/index.mdx @@ -0,0 +1,143 @@ +--- +title: JavaScript'i Her Yerde Çalıştırın +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) + + 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 }) => ( + + 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. + +
diff --git a/apps/site/pages/uk/about/get-involved/index.md b/apps/site/pages/uk/about/get-involved/index.md index f5d772472c1c3..e3a63f171c4e6 100644 --- a/apps/site/pages/uk/about/get-involved/index.md +++ b/apps/site/pages/uk/about/get-involved/index.md @@ -5,22 +5,33 @@ layout: about # Долучитися +Якщо ви зацікавлені в участі в спільноті Node.js, ви можете долучитися до нас різними способами. Проєкт Node.js — це велика і різноманітна спільнота, якій можна допомогти не лише кодом. + ## Обговорення спільноти -- [Список проблем на GitHub](https://github.com/nodejs/node/issues) — це місце для обговорення основного функціонала Node.js. -- Для спілкування про розробку Node.js у реальному часі скористайтеся однією з наступних платформ: - - Для IRC перейдіть на `irc.libera.chat` у каналі `#node.js` через [клієнт IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) або під'єднайтеся до каналу з веббраузера [через вебклієнт](https://kiwiirc.com/nextclient/) - - Для Slack є два варіанти: - - [OpenJSF Slack](https://slack-invite.openjsf.org/) — Slack, запущений спільнотою OpenJS Foundation, із декількома каналами Node.js (канали з префіксом `#nodejs-` стосуються цього проєкту). - - [Node Slackers](https://www.nodeslackers.com/) — це спільнота Slack із фокусом на Node.js. +- [Список issue'ів на 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. - Офіційний Twitter Node.js: [nodejs](https://twitter.com/nodejs). - [Календар проєкту Node.js](https://nodejs.org/calendar) з усіма публічними командними зустрічами. -## Навчання +## Навчальні матеріали + +Якщо ви хочете дізнатися більше про Node.js, використовуйте наступні ресурси: - [Офіційний розділ навчання](https://nodejs.org/en/learn/) вебсайту Node.js. - [Офіційна документація з API](https://nodejs.org/api/). - [NodeSchool.io](https://nodeschool.io/) навчить вас концепцій Node.js за допомогою інтерактивних ігор у командному рядку. - [Тег Node.js у Stack Overflow](https://stackoverflow.com/questions/tagged/node.js) щодня збирає нову інформацію. - [Тег Node.js на DEV Community](https://dev.to/t/node) — це місце, де можна ділитися проєктами, статтями та посібниками з Node.js, а також почати обговорення та просити відгуки до тем, пов'язаних із Node.js. До участі запрошуються розробники всіх рівнів. +- [Спільнота Node.js у Reddit](https://www.reddit.com/r/node) — це місце, де можна ділитися проєктами, статтями та посібниками, а також починати обговорення та просити відгуки на тему Node.js. Запрошуються розробники всіх рівнів. + +## Неофіційні платформи + +Якщо вас цікавлять менш формальні місця для обговорення Node.js, ви можете відвідати наступні платформи. +Пам'ятайте: вони не є офіційно схваленими проєктом Node.js. Також дотримуйтеся їхніх правил та кодексів поведінки. + +- [Node Slackers](https://www.nodeslackers.com/) — це спільнота Slack із фокусом на Node.js. +- [OpenJSF Slack](https://slack-invite.openjsf.org/) — це робочий простір Slack для OpenJS Foundation. Там є кілька каналів, які стосуються Node.js. _(канали з префіксом `#nodejs-` стосуються проєкту)_ - [Nodeiflux](https://discordapp.com/invite/vUsrbjd) — це дружня спільнота бекенд-розробників Node.js, які підтримують один одного в Discord. +- [ES Community](https://discord.gg/zJsuc6vvhn) — це Discord-спільнота для французькомовних розробників на JavaScript. +- Для IRC перейдіть на `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/uk/about/index.mdx b/apps/site/pages/uk/about/index.mdx index 9f65526d7ebd9..8ace8ffa2c205 100644 --- a/apps/site/pages/uk/about/index.mdx +++ b/apps/site/pages/uk/about/index.mdx @@ -54,7 +54,7 @@ HTTP є повноцінною частиною Node.js, розроблений Те, що Node.js спроєктований без використання потоків, не означає, що ви не можете використовувати багато ядер у своєму середовищі. Дочірні процеси можна створити за допомогою нашого API [`child_process.fork()`][]. Вони спроєктовані так, що з ними можна легко взаємодіяти. Модуль [`cluster`][] побудований на такому самому інтерфейсі, що дозволяє ділити сокети на багато процесів, аби збалансувати навантаження на ядра. -[blocking vs. non-blocking]: /learn/asynchronous-work/overview-of-blocking-vs-non-blocking +[блокуючі vs неблокуючі методи]: /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 diff --git a/apps/site/pages/uk/download/package-manager/all.md b/apps/site/pages/uk/download/package-manager/all.md index e4993887e3353..f603bf86ddaf6 100644 --- a/apps/site/pages/uk/download/package-manager/all.md +++ b/apps/site/pages/uk/download/package-manager/all.md @@ -1,5 +1,5 @@ --- -layout: download +layout: article title: Установка Node.js через менеджер пакетів --- @@ -7,36 +7,6 @@ title: Установка Node.js через менеджер пакетів > Пакети на цій сторінці обслуговуються та підтримуються їхніми відповідними розробниками, **не** командою Node.js. Будь ласка, повідомляйте про проблеми цих пакетів їхнім розробникам. Якщо виявиться, що проблема є помилкою Node.js, то вони повідомлять нас про неї. ---- - -- [Alpine Linux](#alpine-linux) -- [Android](#android) -- [Arch Linux](#arch-linux) -- [CentOS, Fedora та Red Hat Enterprise Linux](#centos-fedora-та-red-hat-enterprise-linux) -- [Дистрибутиви Linux на базі Debian та Ubuntu](#дистрибутиви-linux-на-базі-debian-та-ubuntu) -- [Exherbo Linux](#exherbo-linux) -- [fnm](#fnm) -- [FreeBSD](#freebsd) -- [Gentoo](#gentoo) -- [IBM i](#ibm-i) -- [macOS](#macos) -- [n](#n) -- [NetBSD](#netbsd) -- [Nodenv](#nodenv) -- [nvm](#nvm) -- [nvs](#nvs) -- [OpenBSD](#openbsd) -- [openSUSE та SLE](#opensuse-та-sle) -- [SmartOS та illumos](#smartos-та-illumos) -- [Snap](#snap) -- [Solus](#solus) -- [vfox](#vfox) -- [Void Linux](#void-linux) -- [Windows](#windows-1) -- [z/OS](#zos) - ---- - ## Alpine Linux Node.js LTS та пакети npm доступні в головному репозиторії. diff --git a/apps/site/pages/uk/download/prebuilt-installer/index.mdx b/apps/site/pages/uk/download/prebuilt-installer/index.mdx index ee370f641fe1c..22e5b7ca74dc8 100644 --- a/apps/site/pages/uk/download/prebuilt-installer/index.mdx +++ b/apps/site/pages/uk/download/prebuilt-installer/index.mdx @@ -21,6 +21,6 @@ Node.js містить . Перегляньте всі доступні опції завантаження Node.js -Дізнайтеся більше про релізи Node.js +Дізнайтеся більше про релізи Node.js diff --git a/apps/site/pages/uk/download/source-code/index.mdx b/apps/site/pages/uk/download/source-code/index.mdx index 1493d3c29b2cb..298aa7b150d19 100644 --- a/apps/site/pages/uk/download/source-code/index.mdx +++ b/apps/site/pages/uk/download/source-code/index.mdx @@ -13,7 +13,7 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить . -Прочитайте список змін для цієї версії +Читайте список змін для цієї версії Читайте публікацію в блозі про цю версію diff --git a/apps/site/pages/zh-cn/download/package-manager/all.md b/apps/site/pages/zh-cn/download/package-manager/all.md index 242a5bbe7c916..e7eeeef51ecaa 100644 --- a/apps/site/pages/zh-cn/download/package-manager/all.md +++ b/apps/site/pages/zh-cn/download/package-manager/all.md @@ -1,5 +1,5 @@ --- -layout: download +layout: article title: 通过包管理器安装 Node.js --- @@ -7,36 +7,6 @@ title: 通过包管理器安装 Node.js > 这个页面上的软件包由各自的打包者维护和支持,而不是 Node.js 核心团队。当将您遇到的任何疑问时,请将问题报告给软件包维护者。如果问题最终是 Node.js 本身的 bug,则维护者将向上报告该问题。 ---- - -- [Alpine Linux](#alpine-linux) -- [Android](#android) -- [Arch Linux](#arch-linux) -- [CentOS, Fedora 和 Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux) -- [Debian 以及 Ubuntu based Linux 发行版](#debian-and-ubuntu-based-linux-distributions) -- [Exherbo Linux](#exherbo-linux) -- [fnm](#fnm) -- [FreeBSD](#freebsd) -- [Gentoo](#gentoo) -- [IBM i](#ibm-i) -- [macOS](#macos) -- [n](#n) -- [NetBSD](#netbsd) -- [Nodenv](#nodenv) -- [nvm](#nvm) -- [nvs](#nvs) -- [OpenBSD](#openbsd) -- [openSUSE 与 SLE](#opensused-sle) -- [SmartOS 和 illumos](#smartos-andillumos) -- [Snap](#snap) -- [Solus](#solus) -- [vfox](#vfox) -- [Void Linux](#void-linux) -- [Windows](#windows-1) -- [z/OS](#zos) - ---- - ## Alpine Linux Node.js LTS 和 npm 软件包可在主仓库中获得。 diff --git a/apps/site/pages/zh-tw/download/package-manager/all.md b/apps/site/pages/zh-tw/download/package-manager/all.md index 91ebc274fe5d8..1eca25ec8b5ea 100644 --- a/apps/site/pages/zh-tw/download/package-manager/all.md +++ b/apps/site/pages/zh-tw/download/package-manager/all.md @@ -1,5 +1,5 @@ --- -layout: download +layout: article title: 使用套件管理器安裝 Node.js --- @@ -7,36 +7,6 @@ title: 使用套件管理器安裝 Node.js > 本站上的套件皆由各自的套件管理器維護與支援,**並非**由 Node.js 的核心團隊維護。若遭遇任何問題,請向該套件的維護者回報。如果問題確實是 Node.js 本身的錯誤,將由維護者負責向上游回報。 ---- - -- [Alpine Linux](#alpine-linux) -- [Android](#android) -- [Arch Linux](#arch-linux) -- [CentOS, Fedora 與 Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux) -- [基於 Debian 與 Ubuntu 的 Linux 發行版](#debian-and-ubuntu-based-linux-distributions) -- [Exherbo Linux](#exherbo-linux) -- [fnm](#fnm) -- [FreeBSD](#freebsd) -- [Gentoo](#gentoo) -- [IBM i](#ibm-i) -- [macOS](#macos) -- [n](#n) -- [NetBSD](#netbsd) -- [Nodenv](#nodenv) -- [nvm](#nvm) -- [nvs](#nvs) -- [OpenBSD](#openbsd) -- [openSUSE 與 SLE](#opensuse-and-sle) -- [SmartOS 與 illumos](#smartos-and-illumos) -- [Snap](#snap) -- [Solus](#solus) -- [vfox](#vfox) -- [Void Linux](#void-linux) -- [Windows](#windows-1) -- [z/OS](#zos) - ---- - ## Alpine Linux Node.js LTS 與 npm 套件皆收錄於主儲存庫。 diff --git a/packages/i18n/config.json b/packages/i18n/config.json index bf68c630eab7f..88f551e5e1982 100644 --- a/packages/i18n/config.json +++ b/packages/i18n/config.json @@ -256,7 +256,7 @@ "langDir": "ltr", "dateFormat": "DD.MM.YYYY", "hrefLang": "tr", - "enabled": false, + "enabled": true, "default": false }, { diff --git a/packages/i18n/locales/pt.json b/packages/i18n/locales/pt.json index 20e3fbebb7dca..566eb15033b29 100644 --- a/packages/i18n/locales/pt.json +++ b/packages/i18n/locales/pt.json @@ -109,7 +109,8 @@ "links": { "testRunner": "Executor de Teste", "introduction": "Descobrir o executor de teste da Node.js", - "usingTestRunner": "Usar o executor de teste da Node.js" + "usingTestRunner": "Usar o executor de teste da Node.js", + "mocking": "Simulação em Testes" } } }, diff --git a/packages/i18n/locales/tr.json b/packages/i18n/locales/tr.json new file mode 100644 index 0000000000000..43d445e990a23 --- /dev/null +++ b/packages/i18n/locales/tr.json @@ -0,0 +1,329 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "Ticari Marka Politikası", + "privacyPolicy": "Gizlilik Politikası", + "codeOfConduct": "Davranış Kuralları", + "security": "Güvenlik Politikası" + } + }, + "navBar": { + "links": { + "about": "Hakkında", + "download": "İndir", + "docs": "Dokümanlar", + "guides": "Kılavuzlar", + "learn": "Öğrenmek", + "security": "Güvenlik", + "certification": "Sertifikasyon", + "blog": "Blog" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "Başlarken", + "introductionToNodejs": "Node.js'e Giriş", + "howToInstallNodejs": "Node.js nasıl kurulur", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Node.js kullanabilmek için ne kadar JavaScript bilmelisiniz?", + "differencesBetweenNodejsAndTheBrowser": "Node.js ile Tarayıcı Arasındaki Farklar", + "theV8JavascriptEngine": "V8 JavaScript Motoru", + "anIntroductionToTheNpmPackageManager": "Npm paket yöneticisine bir giriş", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) ve sonrası", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, geliştirme ve üretim arasındaki fark", + "nodejsWithWebassembly": "WebAssembly ile Node.js", + "debugging": "Node.js'te Hata Ayıklama", + "profiling": "Node.js Uygulamalarının Profilini Çıkarma", + "securityBestPractices": "En İyi Güvenlik Uygulamaları" + } + }, + "typescript": { + "links": { + "typescript": "TypeScript", + "introduction": "TypeScript'e Giriş", + "transpile": "Transpilasyon kullanarak TypeScript kodu çalıştırma", + "run": "TypeScript'i çalıştırıcı ile kullanma", + "runNatively": "TypeScript'i Yerel olarak çalıştırma" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "Asenkron Çalışma", + "asynchronousFlowControl": "Asenkron akış kontrolü", + "overviewOfBlockingVsNonBlocking": "Engellemeye ve Engellememeye Genel Bakış", + "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript Asenkron Programlama ve Geri Çağırmalar", + "discoverJavascriptTimers": "JavaScript Zamanlayıcılarını Keşfedin", + "eventLoopTimersAndNexttick": "Node.js Olay Döngüsü", + "theNodejsEventEmitter": "Node.js Olay Döngüsü", + "understandingProcessnexttick": "process.nextTick() anlamak", + "understandingSetimmediate": "setImmediate() Fonksiyonunu Anlama", + "dontBlockTheEventLoop": "Etkinlik Döngüsünü Engelleme" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "Dosyaları Değiştirme", + "nodejsFileStats": "Node.js dosya istatistikleri", + "nodejsFilePaths": "Node.js Dosya Yolları", + "workingWithFileDescriptorsInNodejs": "Node.js'de dosya tanımlayıcıları ile çalışma", + "readingFilesWithNodejs": "Node.js ile dosya okuma", + "writingFilesWithNodejs": "Node.js ile dosya yazma", + "workingWithFoldersInNodejs": "Node.js'de klasörlerle çalışma", + "workingWithDifferentFilesystems": "Farklı Dosya Sistemleri ile nasıl çalışılır" + } + }, + "commandLine": { + "links": { + "commandLine": "Komut Satırı", + "runNodejsScriptsFromTheCommandLine": "Node.js komut dosyalarını komut satırından çalıştırma", + "howToReadEnvironmentVariablesFromNodejs": "Node.js'den ortam değişkenleri nasıl okunur", + "howToUseTheNodejsRepl": "Node.js REPL nasıl kullanılır", + "outputToTheCommandLineUsingNodejs": "Node.js kullanarak komut satırına çıktı", + "acceptInputFromTheCommandLineInNodejs": "Node.js'de komut satırından girdi kabul etme" + } + }, + "modules": { + "links": { + "modules": "Modüller", + "publishingNodeApiModules": "Bir Node-API paketi nasıl yayımlanır", + "anatomyOfAnHttpTransaction": "Bir HTTP İşleminin Anatomisi", + "abiStability": "ABI İstikrarlılığı", + "backpressuringInStreams": "Akışlarda Geri Baskılama" + } + }, + "diagnostics": { + "links": { + "diagnostics": "Teşhisler", + "userJourney": "Kullanıcı Yolculuğu", + "memory": "Bellek", + "liveDebugging": "Canlı Hata Ayıklama", + "poorPerformance": "Düşük Performans", + "flameGraphs": "Alev Grafikleri" + } + }, + "testRunner": { + "links": { + "testRunner": "Test Çalıştırıcısı", + "introduction": "Node.js'in test çalıştırıcısını keşfet", + "usingTestRunner": "Node.js'in test çalıştırıcısını kullan", + "mocking": "Testlerde Mock Kullanımı" + } + } + }, + "about": { + "links": { + "about": "Node.js Hakkında", + "aboutSide": "Node.js® Hakkında", + "branding": "Node.js'in markalaşması", + "governance": "Proje Yönetimi", + "releases": "Node.js Sürümleri", + "security": "Güvenlik Raporlaması" + } + }, + "getInvolved": { + "links": { + "getInvolved": "Katılın", + "collabSummit": "İş Birliği Zirvesi", + "upcomingEvents": "Yaklaşan Etkinlikler", + "contribute": "Node.js'ye katkıda bulunun", + "codeOfConduct": "Davranış Kuralları" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Node.js Sürümleri", + "packageManager": "Node.js'i paket yöneticisi ile kurmak", + "shaSums": { + "title": "Sürüm dosyaları için İmzalı SHASUMS", + "howToVerify": " (Nasıl doğrulanır)" + }, + "allDownloads": "Tüm indirme seçenekleri", + "nightlyReleases": "Gecelik Sürümler", + "unofficialBuilds": "Resmi Olmayan Sürümler", + "buildingFromSource": "Desteklenen platformlarda kaynaktan Node.js oluşturma", + "installingOnLinux": "Node.js'yi ikili arşiv aracılığıyla yükleme", + "installingOnWsl": "Linux için Windows Alt Sistemine (WSL) yükleme" + } + }, + "downloadReleasesTable": { + "changelog": "Değişiklik Günlüğü", + "releases": "Sürümler", + "docs": "Dokümanlar" + }, + "pagination": { + "next": "Sonraki", + "previous": "Önceki" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "Ana Sayfaya Git" + }, + "crossLink": { + "previous": "Önceki", + "next": "Sonraki" + }, + "codebox": { + "copy": "Panoya kopyala", + "copied": "Panoya kopyalandı!" + }, + "pagination": { + "prev": "Önceki", + "prevAriaLabel": "Önceki sayfa", + "next": "Sonraki", + "nextAriaLabel": "Sonraki sayfa", + "defaultLabel": "Sayfalandırma", + "pageLabel": "{pageNumber}. sayfaya git" + }, + "sidebar": { + "title": "Sayfayı değiştir" + }, + "languageDropdown": { + "label": "Dil Seçiniz" + }, + "themeToggle": { + "label": "Karanlık Modu Aç / Kapat" + } + }, + "mdx": { + "upcomingEvents": { + "defaultTitle": "Yaklaşan Etkinlik Yok" + } + }, + "metabar": { + "lastUpdated": "Son Güncelleme", + "readingTime": "Okuma Süresi", + "addedIn": "Eklendi", + "author": "Yazar", + "authors": "Yazarlar", + "contribute": "Katkıda bulunun", + "contributeText": "Bu sayfayı düzenleyin", + "viewAs": "Olarak görüntüle", + "tableOfContents": "İçindekiler" + }, + "downloads": { + "changelogModal": { + "startContributing": "Katkıda Bulunmaya Başlayın" + } + }, + "search": { + "searchBox": { + "placeholder": "Yazmaya başla..." + }, + "seeAll": { + "text": "Tüm {count} sonuçları görün" + }, + "searchError": { + "text": "Arama sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyin." + }, + "poweredBy": { + "text": "Tarafından desteklenmektedir" + }, + "noResults": { + "text": "\"{query}\" için sonuç bulunamadı." + }, + "emptyState": { + "text": "Bir şey ara..." + }, + "searchPage": { + "title": "Aradığınız: {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "En son Node.js haberleri, vaka çalışmaları, eğitimler ve kaynaklar.", + "rssLink": "RSS beslemesi" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {{author} tarafından }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Blog} other {{category} Blog Gönderileri}}" + }, + "blog": { + "title": "Blog", + "selectCategory": "Kategoriler", + "categories": { + "all": "Her şey", + "announcements": "Duyurular", + "release": "Sürümler", + "vulnerability": "Güvenlik Açıkları", + "advisory-board": "Danışma Kurulu", + "community": "Topluluk", + "feature": "Özellik", + "module": "Modül", + "npm": "npm", + "uncategorized": "Kategorize Edilmemiş", + "video": "Video", + "weekly": "Haftalık Güncellemeler", + "wg": "Çalışma Grupları", + "events": "Etkinlikler" + } + }, + "error": { + "notFound": { + "title": "Sayfa bulunamadı", + "description": "Üzgünüz, aradığınız sayfayı bulamadık! Ana sayfadan tekrar başlamayı deneyin." + }, + "internalServerError": { + "title": "Dahili Sunucu Hatası", + "description": "Bu sayfa kurtarılamaz bir hata verdi." + }, + "backToHome": "Ana Sayfaya Geri Dön" + }, + "download": { + "selectCategory": "Kategoriler", + "categories": { + "prebuilt-installer": "Önceden Hazırlanmış Yükleyici", + "prebuilt-binaries": "Ön Derlenmiş İkili Dosyalar", + "package-manager": "Paket Yöneticisi", + "source-code": "Kaynak Kodu" + }, + "buttons": { + "prebuilt": "Node.js® İndir {version}", + "source": "Node.js {version} kaynağını indirin" + }, + "dropdown": { + "bitness": "Bitness", + "os": "İşletim Sistemi", + "version": "Versiyon", + "platform": "Platform" + }, + "codeBox": { + "fnmEnvSetup": "fnm ortamını yapılandırın", + "systemManagerWarning": "node.js paket yöneticisi değildir. Lütfen {packageManager}'ın zaten yüklü olduğundan emin olun.", + "communityWarning": "Paket yöneticileri ve bunların kurulum betikleri Node.js projesi tarafından bakımı yapılmamaktadır.", + "communityWarningReport": "Sorunlarla karşılaşırsanız, lütfen paket yöneticisi yetkilileriyle iletişime geçin.", + "installsNvm": "nvm (Node Version Manager) kurar", + "downloadAndInstallNodejsRestartTerminal": "Node.js indirip kurun (terminali yeniden başlatmanız gerekebilir)", + "verifiesRightNodejsVersion": "doğru Node.js sürümünün ortamda bulunduğunu doğrular", + "verifiesRightNpmVersion": "doğru npm sürümünün ortamda bulunduğunu doğrular", + "shouldPrint": "şu çıktıyı vermelidir: `{version}`", + "installsFnm": "fnm (Fast Node Manager) kurar", + "downloadAndInstallNodejs": "Node.js indirip kurun", + "activateFNM": "fnm'i etkinleştir", + "noteWithColon": "NOT:", + "dockerIsNotNodejsPackageManager": "Docker bir Node.js paket yöneticisi değildir.", + "PleaseEndureAlreadyInstallOnSystem": "Lütfen sisteminizde zaten yüklü olduğunu kontrol edin.", + "dockerInstructions": "Resmi talimatlar için https://docs.docker.com/desktop/ adresini takip edin.", + "dockerImagesLink": "Docker görüntüleri resmi olarak https://github.com/nodejs/docker-node/ adresinden sağlanmaktadır.", + "pullsNodejsDockerImage": "Node.js Docker görüntüsünü çeker", + "homebrewIsNotNodejsPackageManager": "Homebrew bir Node.js paket yöneticisi değildir.", + "homebrewInstructions": "Resmi talimatlar için https://brew.sh/ adresini takip edin.", + "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew yalnızca ana Node.js sürümlerinin kurulumunu destekler ve {version} sürüm satırındaki en son Node.js sürümünü desteklemeyebilir.", + "chocolateyIsNotNodejsPackageManager": "Chocolatey, Node.js paket yöneticisi değildir.", + "chocolateyInstructions": "Resmi talimatlar için https://chocolatey.org/ adresini takip edin.", + "chocolateyNotMaintanedByNodejs": "Chocolatey, Node.js projesi tarafından resmi olarak sürdürülmüyor ve Node.js'nin {version} sürümünü desteklemiyor olabilir" + } + } + } +} diff --git a/packages/i18n/locales/zh-cn.json b/packages/i18n/locales/zh-cn.json index d8aca36b09568..15133a7809814 100644 --- a/packages/i18n/locales/zh-cn.json +++ b/packages/i18n/locales/zh-cn.json @@ -35,13 +35,21 @@ "anIntroductionToTheNpmPackageManager": "Npm 包管理器简介", "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) 与未来", "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js 在开发与生产环境中的区别", - "nodejsWithTypescript": "Node.js 与 TypeScript", "nodejsWithWebassembly": "使用WebAssembly的Node.js", "debugging": "调试 Node.js", "profiling": "分析 Node.js 应用程序", "securityBestPractices": "安全最佳实践" } }, + "typescript": { + "links": { + "typescript": "TypeScript", + "introduction": "TypeScript 简介", + "transpile": "使用转译技术运行 TypeScript 代码", + "run": "使用运行程序运行 TypeScript", + "runNatively": "以原生方式运行 TypeScript" + } + }, "asynchronousWork": { "links": { "asynchronousWork": "异步工作", @@ -101,7 +109,8 @@ "links": { "testRunner": "测试运行程序", "introduction": "了解 Node.js 测试运行程序", - "usingTestRunner": "使用 Node.js 测试运行程序" + "usingTestRunner": "使用 Node.js 测试运行程序", + "mocking": "在测试中进行模拟" } } }, @@ -290,9 +299,30 @@ "platform": "平台" }, "codeBox": { + "fnmEnvSetup": "配置 fnm 环境", "systemManagerWarning": "不是一个 Node.js 包管理器。请确保您已安装好 {packageManager}。", "communityWarning": "包管理器与它们的安装脚本不由 Node.js 项目维护。", - "communityWarningReport": "如果您遇到问题,请联系包管理器的维护者。" + "communityWarningReport": "如果您遇到问题,请联系包管理器的维护者。", + "installsNvm": "安装 nvm (Node 版本管理器)", + "downloadAndInstallNodejsRestartTerminal": "下载并安装 Node.js(可能需要重启终端)", + "verifiesRightNodejsVersion": "验证环境中是否存在正确的 Node.js 版本", + "verifiesRightNpmVersion": "验证环境中是否存在正确的 npm 版本", + "shouldPrint": "应该打印 `{version}`", + "installsFnm": "安装 fnm (快速 Node 管理器)", + "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" } } } From af892b084f90bb8f44642d392c6604713e6ec69a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 08:39:38 -0500 Subject: [PATCH 0076/1385] meta: bump the storybook group across 1 directory with 6 updates (#7115) Bumps the storybook group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@storybook/addon-controls](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/controls) | `8.3.0` | `8.3.5` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.3.0` | `8.3.5` | | [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `8.3.0` | `8.3.5` | | [@storybook/addon-viewport](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/viewport) | `8.3.0` | `8.3.5` | | [@storybook/nextjs](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/nextjs) | `8.3.0` | `8.3.5` | Updates `@storybook/addon-controls` from 8.3.0 to 8.3.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.3.5/code/addons/controls) Updates `@storybook/addon-interactions` from 8.3.0 to 8.3.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.3.5/code/addons/interactions) Updates `@storybook/addon-themes` from 8.3.0 to 8.3.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.3.5/code/addons/themes) Updates `@storybook/addon-viewport` from 8.3.0 to 8.3.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.3.5/code/addons/viewport) Updates `@storybook/nextjs` from 8.3.0 to 8.3.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.3.5/code/frameworks/nextjs) Updates `storybook` from 8.3.0 to 8.3.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.3.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/nextjs" 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 | 492 ++++++++++++++++++----------------------- 2 files changed, 215 insertions(+), 287 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 0efdae5241b5d..8695c09740829 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -91,11 +91,11 @@ "devDependencies": { "@eslint/compat": "~1.2.0", "@next/eslint-plugin-next": "~14.2.14", - "@storybook/addon-controls": "~8.3.0", - "@storybook/addon-interactions": "~8.3.0", - "@storybook/addon-themes": "~8.3.0", - "@storybook/addon-viewport": "~8.3.0", - "@storybook/nextjs": "~8.3.0", + "@storybook/addon-controls": "~8.3.5", + "@storybook/addon-interactions": "~8.3.5", + "@storybook/addon-themes": "~8.3.5", + "@storybook/addon-viewport": "~8.3.5", + "@storybook/nextjs": "~8.3.5", "@testing-library/jest-dom": "~6.5.0", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", diff --git a/package-lock.json b/package-lock.json index 8bd46e6b5347b..f5b69e9dc868a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -84,11 +84,11 @@ "devDependencies": { "@eslint/compat": "~1.2.0", "@next/eslint-plugin-next": "~14.2.14", - "@storybook/addon-controls": "~8.3.0", - "@storybook/addon-interactions": "~8.3.0", - "@storybook/addon-themes": "~8.3.0", - "@storybook/addon-viewport": "~8.3.0", - "@storybook/nextjs": "~8.3.0", + "@storybook/addon-controls": "~8.3.5", + "@storybook/addon-interactions": "~8.3.5", + "@storybook/addon-themes": "~8.3.5", + "@storybook/addon-viewport": "~8.3.5", + "@storybook/nextjs": "~8.3.5", "@testing-library/jest-dom": "~6.5.0", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", @@ -2514,8 +2514,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", - "dev": true, - "license": "BSD-2-Clause" + "dev": true }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", @@ -2755,7 +2754,6 @@ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "aix" @@ -2772,7 +2770,6 @@ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -2789,7 +2786,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -2806,7 +2802,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -2823,7 +2818,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2840,7 +2834,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2857,7 +2850,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2874,7 +2866,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2891,7 +2882,6 @@ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2908,7 +2898,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2925,7 +2914,6 @@ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2942,7 +2930,6 @@ "loong64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2959,7 +2946,6 @@ "mips64el" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2976,7 +2962,6 @@ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2993,7 +2978,6 @@ "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3010,7 +2994,6 @@ "s390x" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3027,7 +3010,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3044,7 +3026,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "netbsd" @@ -3061,7 +3042,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -3078,7 +3058,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -3095,7 +3074,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "sunos" @@ -3112,7 +3090,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -3129,7 +3106,6 @@ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -3146,7 +3122,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -7565,11 +7540,10 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.0.tgz", - "integrity": "sha512-Id4j6Neimkdq0OyfQ3qkHpKLisbN08M8pXHDI/A0VeF91xEGBdc1bJgS/EU+ifa24tr5SRYwlAlcBDAWJbZMfA==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.5.tgz", + "integrity": "sha512-2eCVobUUvY1Rq7sp1U8Mx8t44VXwvi0E+hqyrsqOx5TTSC/FUQ+hNAX6GSYUcFIyQQ1ORpKNlUjAAdjxBv1ZHQ==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "dequal": "^2.0.2", @@ -7581,19 +7555,18 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.0.tgz", - "integrity": "sha512-nAVUFpt2kTaPMY7RxfZwiYipngxf76dfx1E/QP9n/333+/pe88UwXbUkmLKpyC8EWqZXDI0oSV5XDDzoI5x3dA==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.5.tgz", + "integrity": "sha512-GtTy/A+mG7vDOahQr2avT4dpWtCRiFDSYcWyuQOZm10y8VDDw157HQM+FuhxjV9Owrrohy9F24oBUwRG8H3b5A==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.3.0", - "@storybook/test": "8.3.0", + "@storybook/instrumenter": "8.3.5", + "@storybook/test": "8.3.5", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -7602,15 +7575,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/addon-themes": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.3.0.tgz", - "integrity": "sha512-kAvpsQBrIMe7u8zU5+WoYKPhSo/MzgYXHARjYKhJYpsFatCv/npg/hLOiBlKWV5FzEqjQx9dAZiehXDF3JsCZw==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.3.5.tgz", + "integrity": "sha512-kXHKAZvAtMoOR1XFGTo5/T8anE9x7W8Ddpof2wyi+du5HscFiEW7TesWdvNgBUR7wAaiR21aW2S4jC72a6gTCw==", "dev": true, - "license": "MIT", "dependencies": { "ts-dedent": "^2.0.0" }, @@ -7619,15 +7591,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.0.tgz", - "integrity": "sha512-6h/0mKipUG6w2o5IOzyhvC/2ifJlSNIA60hLkJ291g42+ilzkydpby9TBN7FcnrVL3Bv+oLgkDLBWVCqma/fyw==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.5.tgz", + "integrity": "sha512-FSWydoPiVWFXEittG7O1YgvuaqoU9Vb+qoq9XfP/hvQHHMDcMZvC40JaV8AnJeTXaM7ngIjcn9XDEfGbFfOzXw==", "dev": true, - "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" }, @@ -7636,17 +7607,16 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.0.tgz", - "integrity": "sha512-kJJjyWJ/ttUIRYJe6muMjWlXnH9nNmTvd4k5QY6AnblcxE/mXc1Z+D5lSzvStmZEAB/KaSHGrEuiSCReQrNTTQ==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.5.tgz", + "integrity": "sha512-rhmfdiSlDn3Arki7IMYk11PO29rYuYM4LZ8GlNqREU7VUl/8Vngo/jFIa4pKaIns3ql1RrwzO1wm9JvuL/4ydA==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.3.0", + "@storybook/core-webpack": "8.3.5", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -7679,7 +7649,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" }, "peerDependenciesMeta": { "typescript": { @@ -7688,11 +7658,10 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -7702,7 +7671,6 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -7713,32 +7681,32 @@ } }, "node_modules/@storybook/components": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.3.0.tgz", - "integrity": "sha512-SO/iTkmWp3aYCIy8DEhRMoOn6K7lcKTPNC/YjTvOFFzwq/CLq86WNqz6aX+wV5n6MvWTs7evSwMoz7lp4Lc4sw==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.3.5.tgz", + "integrity": "sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/core": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.0.tgz", - "integrity": "sha512-UeErpD0xRIP2nFA2TjPYxtEyv24O6VRfq2XXU5ki2QPYnxOxAPBbrMHCADjgBwNS4S2NUWTaVBYxybISVbrj+w==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.5.tgz", + "integrity": "sha512-GOGfTvdioNa/n+Huwg4u/dsyYyBcM+gEcdxi3B7i5x4yJ3I912KoVshumQAOF2myKSRdI8h8aGWdx7nnjd0+5Q==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@types/express": "^4.17.21", + "better-opn": "^3.0.2", "browser-assert": "^1.2.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0", "esbuild-register": "^3.5.0", "express": "^4.19.2", + "jsdoc-type-pratt-parser": "^4.0.0", "process": "^0.11.10", "recast": "^0.23.5", "semver": "^7.6.2", @@ -7751,11 +7719,10 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.0.tgz", - "integrity": "sha512-lCuuB0dD+SKjF17QVX+YoQIlW30Dv/zK0k3Gt3mXdvYqjFXTx1FqWRmt1YFeUWaBQ0XF8GC+PN699KgwGH73tA==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.5.tgz", + "integrity": "sha512-mN8BHNc6lSGUf/nKgDr6XoTt1cX+Tap9RnKMUiROCDzfVlJPeJBrG4qrTOok7AwObzeDl9DNFyun6+pVgXJe7A==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "^22.0.0", "ts-dedent": "^2.0.0" @@ -7765,15 +7732,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -7796,11 +7762,10 @@ "license": "MIT" }, "node_modules/@storybook/instrumenter": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.0.tgz", - "integrity": "sha512-oJmX8jbNKbPBlNMItRvEoaVAJWX1u6jsqXdIcNRCXo3PDdVnunVYz8vVkG8mbL8Cp/cKlsuQk7YBZA4IM5mRgg==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.5.tgz", + "integrity": "sha512-NLDXai5y2t1ITgHVK9chyL0rMFZbICCOGcnTbyWhkLbiEWZKPJ8FuB8+g+Ba6zwtCve1A1Cnb4O2LOWy7TgWQw==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "@vitest/utils": "^2.0.5", @@ -7811,29 +7776,27 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/manager-api": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.0.tgz", - "integrity": "sha512-5WBLEFHpe4H+9vZZLjNh7msIkyl9MPt4/C2nI+MXKZyU55xBBgiAy4fcD9aj02PcbhyR4JhLqbqmdeBe5Xafeg==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.5.tgz", + "integrity": "sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/nextjs": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.3.0.tgz", - "integrity": "sha512-W56LPdKtRtSfhV+W/yXTVPCHadyXt1KWCVIWWhafCY2qhgIQjDqcQfzFighvFPncsJVUarneDZksZAziMz5JEQ==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.3.5.tgz", + "integrity": "sha512-YMjDSVd7BHIvj6oLMEFMKRvfZ83INxZinxtrx4ZZXGe+5iP8j7rcV7D67lxKQKWNy36d9Foj4pjT85yYj5s+ZQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -7849,10 +7812,10 @@ "@babel/preset-typescript": "^7.24.1", "@babel/runtime": "^7.24.4", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@storybook/builder-webpack5": "8.3.0", - "@storybook/preset-react-webpack": "8.3.0", - "@storybook/react": "8.3.0", - "@storybook/test": "8.3.0", + "@storybook/builder-webpack5": "8.3.5", + "@storybook/preset-react-webpack": "8.3.5", + "@storybook/react": "8.3.5", + "@storybook/test": "8.3.5", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.1.3", @@ -7867,7 +7830,7 @@ "postcss-loader": "^8.1.1", "react-refresh": "^0.14.0", "resolve-url-loader": "^5.0.0", - "sass-loader": "^12.4.0", + "sass-loader": "^13.2.0", "semver": "^7.3.5", "style-loader": "^3.3.1", "styled-jsx": "^5.1.6", @@ -7889,7 +7852,7 @@ "next": "^13.5.0 || ^14.0.0", "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.3.0", + "storybook": "^8.3.5", "webpack": "^5.0.0" }, "peerDependenciesMeta": { @@ -7927,14 +7890,13 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.0.tgz", - "integrity": "sha512-Y0by9yzhKU7lNTQ/7ePJ8ki/Iv/ctG2TPziEQOIds0LWs511yF37VsTBwWG17rGo9U4hKPJ37IDBVo0el7kw3g==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.5.tgz", + "integrity": "sha512-laS9CiZrZ4CSnBTBfkBba3hmlDhzcjIfCvx8/rk3SZ+zh93NpqXixzRt6m0UH2po63dpdu21nXrsW5Cfs88Ypw==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.3.0", - "@storybook/react": "8.3.0", + "@storybook/core-webpack": "8.3.5", + "@storybook/react": "8.3.5", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", @@ -7957,7 +7919,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.3.0" + "storybook": "^8.3.5" }, "peerDependenciesMeta": { "typescript": { @@ -7966,11 +7928,10 @@ } }, "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -7980,7 +7941,6 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -7991,32 +7951,30 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.0.tgz", - "integrity": "sha512-pHq/T7oWBfzc9TCIPYyJQUXuiUiFfmdrcYvuZE1kf46i7wXh9Q2/Kd3BUJWSCpBXUMoYfAxg9YysGljMII8LWA==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.5.tgz", + "integrity": "sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/react": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.3.0.tgz", - "integrity": "sha512-qd8IKXqaOG9m0VK0QukFMmKpjmm7sy1R3T681dLet8s+AEAimLH/RiBzd+0dxWng2H/Ng6ldUmCtd3Cs6w/EFQ==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.3.5.tgz", + "integrity": "sha512-kuBPe/wBin10SWr4EWPKxiTRGQ4RD2etGEVWVQLqVpOuJp/J2hVvXQHtCfZXU4TZT5x4PBbPRswbr58+XlF+kQ==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/components": "^8.3.0", + "@storybook/components": "^8.3.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "^8.3.0", - "@storybook/preview-api": "^8.3.0", - "@storybook/react-dom-shim": "8.3.0", - "@storybook/theming": "^8.3.0", + "@storybook/manager-api": "^8.3.5", + "@storybook/preview-api": "^8.3.5", + "@storybook/react-dom-shim": "8.3.5", + "@storybook/theming": "^8.3.5", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^22.0.0", @@ -8040,10 +7998,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.3.0", + "@storybook/test": "8.3.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.3.0", + "storybook": "^8.3.5", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -8060,7 +8018,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", @@ -8076,11 +8033,10 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.0.tgz", - "integrity": "sha512-87X4cvgwFT1ll5SzXgQq6iGbkVCgxLBpBm58akF/hzpeRkwfJDncGi/A5hElOJrBg63IkznmSJE7tf9RkrboqQ==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.5.tgz", + "integrity": "sha512-Hf0UitJ/K0C7ajooooUK/PxOR4ihUWqsC7iCV1Gqth8U37dTeLMbaEO4PBwu0VQ+Ufg0N8BJLWfg7o6G4hrODw==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -8088,36 +8044,33 @@ "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.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/react/node_modules/@types/estree": { "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } }, "node_modules/@storybook/test": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.0.tgz", - "integrity": "sha512-d8y8ST8YY/pSjTxBcWitKM7YbbupN8D0obVlciZRt6WW3o8WUz6iwMuzuJuiUVwtxiRtdKL9jygC5M+aaCpFYQ==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.5.tgz", + "integrity": "sha512-1BXWsUGWk9FiKKelZZ55FDJdeoL8uRBHbjTYBRM2xJLhdNSvGzI4Tb3bkmxPpGn72Ua6AyldhlTxr2BpUFKOHA==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.3.0", + "@storybook/instrumenter": "8.3.5", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -8130,21 +8083,20 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@storybook/theming": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.0.tgz", - "integrity": "sha512-lJCarAzswZvUgBt/o1LMJp+07Io5G2VI1+Fw+bgn+92kRD8otCFwuMZIy0u7cEjHiEGqGnpzThlIki6vFjEXeA==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.5.tgz", + "integrity": "sha512-9HmDDyC691oqfg4RziIM9ElsS2HITaxmH7n/yeUPtuirkPdAQzqOzhvH/Sa0qOhifzs8VjR+Gd/a/ZQ+S38r7w==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.0" + "storybook": "^8.3.5" } }, "node_modules/@swc/counter": { @@ -8355,7 +8307,6 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, - "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -8404,15 +8355,13 @@ "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/escodegen": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz", "integrity": "sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/estree": { "version": "1.0.5", @@ -8434,7 +8383,6 @@ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -8443,11 +8391,10 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -8478,15 +8425,13 @@ "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/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/is-empty": { "version": "1.2.3", @@ -8611,8 +8556,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/ms": { "version": "0.7.34", @@ -8651,8 +8595,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/pg": { "version": "8.6.1", @@ -8689,8 +8632,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/react": { "version": "18.3.11", @@ -8716,8 +8658,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", @@ -8731,7 +8672,6 @@ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, - "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -8742,7 +8682,6 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, - "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -9653,7 +9592,6 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -10094,7 +10032,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" }, @@ -10588,6 +10525,18 @@ ], "license": "MIT" }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -10715,8 +10664,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", @@ -11034,7 +10982,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" @@ -11084,7 +11031,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" } @@ -11287,7 +11233,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" }, @@ -11300,7 +11245,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" } @@ -11551,7 +11495,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12" } @@ -11939,7 +11882,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", @@ -11975,7 +11917,6 @@ "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", @@ -12006,7 +11947,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" }, @@ -12375,6 +12315,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -12592,7 +12541,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" } @@ -12602,7 +12550,6 @@ "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", @@ -12617,7 +12564,6 @@ "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" } @@ -12645,8 +12591,7 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domexception": { "version": "4.0.0", @@ -12667,7 +12612,6 @@ "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" }, @@ -12683,7 +12627,6 @@ "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", @@ -12698,7 +12641,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" @@ -12802,7 +12744,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", @@ -13080,7 +13021,6 @@ "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -13119,7 +13059,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" }, @@ -14590,8 +14529,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", @@ -14784,7 +14722,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", @@ -14852,7 +14789,6 @@ "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", @@ -14900,7 +14836,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", @@ -14929,7 +14864,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", @@ -14946,7 +14880,6 @@ "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" } @@ -14956,7 +14889,6 @@ "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" @@ -14967,7 +14899,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" @@ -14984,7 +14915,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", @@ -15001,7 +14931,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", @@ -15015,15 +14944,13 @@ "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" + "dev": true }, "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" }, @@ -15036,7 +14963,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", @@ -15055,7 +14981,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } @@ -15155,8 +15080,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", @@ -15884,7 +15808,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" } @@ -15984,7 +15907,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", @@ -16029,7 +15951,6 @@ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, - "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -16069,7 +15990,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -16082,7 +16002,6 @@ "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" } @@ -16191,7 +16110,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" }, @@ -16709,6 +16627,21 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-empty": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", @@ -17114,6 +17047,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -18489,6 +18434,15 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.1.0", + "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, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/jsdom": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", @@ -18657,16 +18611,6 @@ "node": ">=6" } }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/known-css-properties": { "version": "0.34.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", @@ -19380,7 +19324,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" } @@ -19427,7 +19370,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" }, @@ -19443,7 +19385,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" } @@ -21103,7 +21044,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" }, @@ -22285,7 +22225,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" @@ -22295,8 +22234,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", @@ -22534,7 +22472,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" }, @@ -22681,8 +22618,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/on-finished": { "version": "2.4.1", @@ -22735,6 +22671,23 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/openai": { "version": "4.60.0", "resolved": "https://registry.npmjs.org/openai/-/openai-4.60.0.tgz", @@ -22912,7 +22865,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" @@ -23036,7 +22988,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" @@ -23580,7 +23531,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" }, @@ -23593,7 +23543,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -23611,7 +23560,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -23627,7 +23575,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" }, @@ -23886,7 +23833,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" @@ -24230,7 +24176,6 @@ "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.18.9", "@babel/traverse": "^7.18.9", @@ -24252,7 +24197,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" } @@ -24275,7 +24219,6 @@ "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", "dev": true, - "license": "MIT", "dependencies": { "@base2/pretty-print-object": "1.0.1", "is-plain-object": "5.0.0", @@ -24290,8 +24233,7 @@ "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/react-is": { "version": "16.13.1", @@ -24452,7 +24394,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", @@ -24469,7 +24410,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" } @@ -24672,7 +24612,6 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -26360,7 +26299,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", @@ -26585,7 +26523,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" }, @@ -26743,17 +26680,15 @@ "license": "MIT" }, "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", "dev": true, - "license": "MIT", "dependencies": { - "klona": "^2.0.4", "neo-async": "^2.6.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", @@ -26761,7 +26696,7 @@ }, "peerDependencies": { "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" @@ -27346,13 +27281,12 @@ } }, "node_modules/storybook": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.0.tgz", - "integrity": "sha512-XKU+nem9OKX/juvJPwka1Q7DTpSbOe0IMp8ZyLQWorhFKpquJdUjryl7Z9GiFZyyTykCqH4ItQ7h8PaOmqVMOw==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.5.tgz", + "integrity": "sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core": "8.3.0" + "@storybook/core": "8.3.5" }, "bin": { "getstorybook": "bin/index.cjs", @@ -27702,7 +27636,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" }, @@ -27731,7 +27664,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" }, @@ -28610,8 +28542,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.6", @@ -29961,8 +29892,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/utils-merge": { "version": "1.0.1", @@ -30388,7 +30318,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", @@ -30437,8 +30366,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/webpack/node_modules/acorn": { "version": "8.12.1", From 2801b5152a13e8d4f7aadb4c08da1599a959bb77 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga Date: Wed, 16 Oct 2024 11:36:18 -0300 Subject: [PATCH 0077/1385] Blog: v23.0.0 release post (#7125) * Blog: v23.0.0 release post Refs: https://github.com/nodejs/node/pull/55338 * fixup! Blog: v23.0.0 release post --- apps/site/pages/en/blog/release/v23.0.0.md | 487 +++++++++++++++++++++ 1 file changed, 487 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.0.0.md diff --git a/apps/site/pages/en/blog/release/v23.0.0.md b/apps/site/pages/en/blog/release/v23.0.0.md new file mode 100644 index 0000000000000..a420f351c4870 --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.0.0.md @@ -0,0 +1,487 @@ +--- +date: '2024-10-16T14:07:50.232Z' +category: release +title: Node v23.0.0 (Current) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2024-10-16, Version 23.0.0 (Current), @RafaelGSS + +We’re excited to announce the release of Node.js 23! Key highlights include: + +- Enabling `require(esm)` by default for Node.js applications +- Removing support for Windows 32-bit systems +- Stabilizing the `node --run` command +- Enhancements to the test runner, including glob pattern support for coverage files + +Node.js 23 will replace Node.js 22 as the ‘Current’ release line when Node.js 22 enters long-term support (LTS) later this month. +According to the release schedule, Node.js 23 will remain the ‘Current’ release for the next six months, until April 2025. + +### Other Notable Changes + +- \[[`7ad0cc3e57`](https://github.com/nodejs/node/commit/7ad0cc3e57)] - **(SEMVER-MAJOR)** **build**: remove support for 32-bit Windows (Michaël Zasso) [#53184](https://github.com/nodejs/node/pull/53184) +- \[[`83eb4f2855`](https://github.com/nodejs/node/commit/83eb4f2855)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick cd10ad7cdbe5 (Joyee Cheung) [#52535](https://github.com/nodejs/node/pull/52535) +- \[[`b8493a5789`](https://github.com/nodejs/node/commit/b8493a5789)] - **doc**: add abmusse to collaborators (Abdirahim Musse) [#55086](https://github.com/nodejs/node/pull/55086) +- \[[`7fab6e8885`](https://github.com/nodejs/node/commit/7fab6e8885)] - **(SEMVER-MAJOR)** **doc**: use gcc 12 on AIX for Node.js >=23 (Richard Lau) [#54338](https://github.com/nodejs/node/pull/54338) +- \[[`d473606040`](https://github.com/nodejs/node/commit/d473606040)] - **(SEMVER-MINOR)** **lib**: propagate aborted state to dependent signals before firing events (jazelly) [#54826](https://github.com/nodejs/node/pull/54826) +- \[[`06206af181`](https://github.com/nodejs/node/commit/06206af181)] - **(SEMVER-MINOR)** **module**: unflag --experimental-require-module (Joyee Cheung) [#55085](https://github.com/nodejs/node/pull/55085) +- \[[`0b9249e335`](https://github.com/nodejs/node/commit/0b9249e335)] - **(SEMVER-MINOR)** **module**: implement the "module-sync" exports condition (Joyee Cheung) [#54648](https://github.com/nodejs/node/pull/54648) +- \[[`92a25abca9`](https://github.com/nodejs/node/commit/92a25abca9)] - **(SEMVER-MINOR)** **path**: add `matchGlob` method (Aviv Keller) [#52881](https://github.com/nodejs/node/pull/52881) +- \[[`12dd4c7575`](https://github.com/nodejs/node/commit/12dd4c7575)] - **src**: mark node --run as stable (Yagiz Nizipli) [#53763](https://github.com/nodejs/node/pull/53763) +- \[[`4174b73153`](https://github.com/nodejs/node/commit/4174b73153)] - **test**: support glob matching coverage files (Aviv Keller) [#53553](https://github.com/nodejs/node/pull/53553) + +### Semver-Major Commits + +- \[[`764b13d75c`](https://github.com/nodejs/node/commit/764b13d75c)] - **(SEMVER-MAJOR)** **assert,util**: change WeakMap and WeakSet comparison handling (Cristian Barlutiu) [#53495](https://github.com/nodejs/node/pull/53495) +- \[[`3800d60c66`](https://github.com/nodejs/node/commit/3800d60c66)] - **(SEMVER-MAJOR)** **buffer**: throw when writing beyond buffer" (Robert Nagy) [#54588](https://github.com/nodejs/node/pull/54588) +- \[[`17fd32790a`](https://github.com/nodejs/node/commit/17fd32790a)] - **(SEMVER-MAJOR)** **buffer**: make File cloneable (Matthew Aitken) [#47613](https://github.com/nodejs/node/pull/47613) +- \[[`f68d7d2acc`](https://github.com/nodejs/node/commit/f68d7d2acc)] - **(SEMVER-MAJOR)** **build**: reset embedder string to "-node.0" (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`9d0748c5df`](https://github.com/nodejs/node/commit/9d0748c5df)] - **(SEMVER-MAJOR)** **build**: disable ICF for mksnapshot (Leszek Swirski) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`b7bcf3e121`](https://github.com/nodejs/node/commit/b7bcf3e121)] - **(SEMVER-MAJOR)** **build**: include v8-sandbox.h header in distribution (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`1dfa3b8255`](https://github.com/nodejs/node/commit/1dfa3b8255)] - **(SEMVER-MAJOR)** **build**: reset embedder string to "-node.0" (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`046343ea9d`](https://github.com/nodejs/node/commit/046343ea9d)] - **(SEMVER-MAJOR)** **build**: warn for GCC versions earlier than 12.2 (Michaël Zasso) [#54081](https://github.com/nodejs/node/pull/54081) +- \[[`a5decd4c8d`](https://github.com/nodejs/node/commit/a5decd4c8d)] - **(SEMVER-MAJOR)** **build**: drop experimental support for Windows <10 (Michaël Zasso) [#54079](https://github.com/nodejs/node/pull/54079) +- \[[`7ad0cc3e57`](https://github.com/nodejs/node/commit/7ad0cc3e57)] - **(SEMVER-MAJOR)** **build**: remove support for 32-bit Windows (Michaël Zasso) [#53184](https://github.com/nodejs/node/pull/53184) +- \[[`c7e42092f3`](https://github.com/nodejs/node/commit/c7e42092f3)] - **(SEMVER-MAJOR)** **build**: compile with C++20 support (Michaël Zasso) [#45427](https://github.com/nodejs/node/pull/45427) +- \[[`e2b7e41e23`](https://github.com/nodejs/node/commit/e2b7e41e23)] - **(SEMVER-MAJOR)** **child_process**: remove unused internal event (Rich Trott) [#53793](https://github.com/nodejs/node/pull/53793) +- \[[`4f1fe8a015`](https://github.com/nodejs/node/commit/4f1fe8a015)] - **(SEMVER-MAJOR)** **cli**: remove deprecated V8 flag (Omer Katz) [#54761](https://github.com/nodejs/node/pull/54761) +- \[[`8f37492b65`](https://github.com/nodejs/node/commit/8f37492b65)] - **(SEMVER-MAJOR)** **cli**: move --trace-atomics-wait to eol (Marco Ippolito) [#52747](https://github.com/nodejs/node/pull/52747) +- \[[`f7e73cd1f2`](https://github.com/nodejs/node/commit/f7e73cd1f2)] - **(SEMVER-MAJOR)** **cli**: remove --no-experimental-global-customevent flag (Daeyeon Jeong) [#52723](https://github.com/nodejs/node/pull/52723) +- \[[`311504125f`](https://github.com/nodejs/node/commit/311504125f)] - **(SEMVER-MAJOR)** **cli**: remove --no-experimental-fetch flag (Filip Skokan) [#52611](https://github.com/nodejs/node/pull/52611) +- \[[`a30ae50860`](https://github.com/nodejs/node/commit/a30ae50860)] - **(SEMVER-MAJOR)** **cli**: remove --no-experimental-global-webcrypto flag (Filip Skokan) [#52564](https://github.com/nodejs/node/pull/52564) +- \[[`afe56aa58b`](https://github.com/nodejs/node/commit/afe56aa58b)] - **(SEMVER-MAJOR)** **crypto**: runtime deprecate crypto.fips (Yagiz Nizipli) [#55019](https://github.com/nodejs/node/pull/55019) +- \[[`33a6d1fe3a`](https://github.com/nodejs/node/commit/33a6d1fe3a)] - **(SEMVER-MAJOR)** **crypto**: remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) [#53305](https://github.com/nodejs/node/pull/53305) +- \[[`ff826069a8`](https://github.com/nodejs/node/commit/ff826069a8)] - **(SEMVER-MAJOR)** **crypto**: move DEP0182 to runtime deprecation (Tobias Nießen) [#52552](https://github.com/nodejs/node/pull/52552) +- \[[`6e150f9527`](https://github.com/nodejs/node/commit/6e150f9527)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick 97199f686e2f (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`1e16779fa1`](https://github.com/nodejs/node/commit/1e16779fa1)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`762a440e68`](https://github.com/nodejs/node/commit/762a440e68)] - **(SEMVER-MAJOR)** **deps**: patch V8 to support older Clang versions (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`95f2213eed`](https://github.com/nodejs/node/commit/95f2213eed)] - **(SEMVER-MAJOR)** **deps**: always define V8_NODISCARD as no-op (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`09d997f181`](https://github.com/nodejs/node/commit/09d997f181)] - **(SEMVER-MAJOR)** **deps**: fix FP16 bitcasts.h (Stefan Stojanovic) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`1866363854`](https://github.com/nodejs/node/commit/1866363854)] - **(SEMVER-MAJOR)** **deps**: patch V8 to support compilation with MSVC (StefanStojanovic) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`6f4f22f84c`](https://github.com/nodejs/node/commit/6f4f22f84c)] - **(SEMVER-MAJOR)** **deps**: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`dfff61475e`](https://github.com/nodejs/node/commit/dfff61475e)] - **(SEMVER-MAJOR)** **deps**: disable V8 concurrent sparkplug compilation (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`69ad89f8eb`](https://github.com/nodejs/node/commit/69ad89f8eb)] - **(SEMVER-MAJOR)** **deps**: always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`5ab3140dfb`](https://github.com/nodejs/node/commit/5ab3140dfb)] - **(SEMVER-MAJOR)** **deps**: update V8 to 12.9.202.18 (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`fba06eb34a`](https://github.com/nodejs/node/commit/fba06eb34a)] - **(SEMVER-MAJOR)** **deps**: remove bogus V8 DCHECK (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`5355603fb5`](https://github.com/nodejs/node/commit/5355603fb5)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`bcc1e2716c`](https://github.com/nodejs/node/commit/bcc1e2716c)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick b1397772c70c (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`415bc750a5`](https://github.com/nodejs/node/commit/415bc750a5)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick 35888fee7bba (Joyee Cheung) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`28f3e5c9d1`](https://github.com/nodejs/node/commit/28f3e5c9d1)] - **(SEMVER-MAJOR)** **deps**: always define V8_NODISCARD as no-op (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`a41c381cde`](https://github.com/nodejs/node/commit/a41c381cde)] - **(SEMVER-MAJOR)** **deps**: fix FP16 bitcasts.h (Stefan Stojanovic) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`16c9348e60`](https://github.com/nodejs/node/commit/16c9348e60)] - **(SEMVER-MAJOR)** **deps**: V8: revert CL 5331688 (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`dc4e702a45`](https://github.com/nodejs/node/commit/dc4e702a45)] - **(SEMVER-MAJOR)** **deps**: patch V8 to support compilation with MSVC (StefanStojanovic) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`f626acc328`](https://github.com/nodejs/node/commit/f626acc328)] - **(SEMVER-MAJOR)** **deps**: silence internal V8 deprecation warning (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`ed187faa64`](https://github.com/nodejs/node/commit/ed187faa64)] - **(SEMVER-MAJOR)** **deps**: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`ed029bded7`](https://github.com/nodejs/node/commit/ed029bded7)] - **(SEMVER-MAJOR)** **deps**: avoid compilation error with ASan (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`e600de93cf`](https://github.com/nodejs/node/commit/e600de93cf)] - **(SEMVER-MAJOR)** **deps**: disable V8 concurrent sparkplug compilation (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`cc36db7c06`](https://github.com/nodejs/node/commit/cc36db7c06)] - **(SEMVER-MAJOR)** **deps**: always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`9d7cd9b864`](https://github.com/nodejs/node/commit/9d7cd9b864)] - **(SEMVER-MAJOR)** **deps**: update V8 to 12.8.374.13 (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`4f70132972`](https://github.com/nodejs/node/commit/4f70132972)] - **(SEMVER-MAJOR)** **doc**: reflect toolchains used for official binaries (Richard Lau) [#54967](https://github.com/nodejs/node/pull/54967) +- \[[`7fab6e8885`](https://github.com/nodejs/node/commit/7fab6e8885)] - **(SEMVER-MAJOR)** **doc**: use gcc 12 on AIX for Node.js >=23 (Richard Lau) [#54338](https://github.com/nodejs/node/pull/54338) +- \[[`1d5ed725e9`](https://github.com/nodejs/node/commit/1d5ed725e9)] - **(SEMVER-MAJOR)** **esm**: export 'module.exports' on ESM CJS wrapper (Guy Bedford) [#53848](https://github.com/nodejs/node/pull/53848) +- \[[`d5c29ba12d`](https://github.com/nodejs/node/commit/d5c29ba12d)] - **(SEMVER-MAJOR)** **events**: set EventEmitterAsyncResource fields private (Yagiz Nizipli) [#54889](https://github.com/nodejs/node/pull/54889) +- \[[`f202322ea4`](https://github.com/nodejs/node/commit/f202322ea4)] - **(SEMVER-MAJOR)** **fs**: adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) [#49741](https://github.com/nodejs/node/pull/49741) +- \[[`15e7563062`](https://github.com/nodejs/node/commit/15e7563062)] - **(SEMVER-MAJOR)** **fs**: runtime deprecate `dirent.path` (Antoine du Hamel) [#51050](https://github.com/nodejs/node/pull/51050) +- \[[`00b2f07f9d`](https://github.com/nodejs/node/commit/00b2f07f9d)] - **(SEMVER-MAJOR)** **fs,win**: fix bug in paths with trailing slashes (Hüseyin Açacak) [#54160](https://github.com/nodejs/node/pull/54160) +- \[[`e973c3e94b`](https://github.com/nodejs/node/commit/e973c3e94b)] - **(SEMVER-MAJOR)** **lib**: validate signals with interface converter (Jason Zhang) [#54965](https://github.com/nodejs/node/pull/54965) +- \[[`a5a946d8a5`](https://github.com/nodejs/node/commit/a5a946d8a5)] - **(SEMVER-MAJOR)** **lib**: implement interface converter in webidl (Jason Zhang) [#54965](https://github.com/nodejs/node/pull/54965) +- \[[`6ed93b4d69`](https://github.com/nodejs/node/commit/6ed93b4d69)] - **(SEMVER-MAJOR)** **lib**: expose global CloseEvent (Matthew Aitken) [#53355](https://github.com/nodejs/node/pull/53355) +- \[[`52322aa42a`](https://github.com/nodejs/node/commit/52322aa42a)] - **(SEMVER-MAJOR)** **net**: validate host name for server listen (Jason Zhang) [#54470](https://github.com/nodejs/node/pull/54470) +- \[[`efbba60e5b`](https://github.com/nodejs/node/commit/efbba60e5b)] - **(SEMVER-MAJOR)** **path**: fix bugs and inconsistencies (Hüseyin Açacak) [#54224](https://github.com/nodejs/node/pull/54224) +- \[[`c237eabf4c`](https://github.com/nodejs/node/commit/c237eabf4c)] - **(SEMVER-MAJOR)** **process**: remove `process.assert` (Aviv Keller) [#55035](https://github.com/nodejs/node/pull/55035) +- \[[`17a17164d6`](https://github.com/nodejs/node/commit/17a17164d6)] - **(SEMVER-MAJOR)** **src**: update NODE_MODULE_VERSION to 131 (Michaël Zasso) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`f0134fa6c3`](https://github.com/nodejs/node/commit/f0134fa6c3)] - **(SEMVER-MAJOR)** **src**: stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`0be79f4deb`](https://github.com/nodejs/node/commit/0be79f4deb)] - **(SEMVER-MAJOR)** **src**: remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`525b3f22d1`](https://github.com/nodejs/node/commit/525b3f22d1)] - **(SEMVER-MAJOR)** **src**: add source location to v8::TaskRunner (François Doray) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`e945bd9525`](https://github.com/nodejs/node/commit/e945bd9525)] - **(SEMVER-MAJOR)** **src**: update NODE_MODULE_VERSION to 129 (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`bb8d2936ab`](https://github.com/nodejs/node/commit/bb8d2936ab)] - **(SEMVER-MAJOR)** **src**: do not use soon-to-be-deprecated V8 API (Igor Sheludko) [#53174](https://github.com/nodejs/node/pull/53174) +- \[[`75884678d7`](https://github.com/nodejs/node/commit/75884678d7)] - **(SEMVER-MAJOR)** **src**: add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) [#52347](https://github.com/nodejs/node/pull/52347) +- \[[`922feb1ff5`](https://github.com/nodejs/node/commit/922feb1ff5)] - **(SEMVER-MAJOR)** **stream**: pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) [#53241](https://github.com/nodejs/node/pull/53241) +- \[[`ffe0dc5b87`](https://github.com/nodejs/node/commit/ffe0dc5b87)] - **(SEMVER-MAJOR)** **string_decoder**: refactor encoding validation (Yagiz Nizipli) [#54957](https://github.com/nodejs/node/pull/54957) +- \[[`df9efba2ce`](https://github.com/nodejs/node/commit/df9efba2ce)] - **(SEMVER-MAJOR)** **test**: update v8-stats test for V8 12.6 (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`dbaef339aa`](https://github.com/nodejs/node/commit/dbaef339aa)] - **(SEMVER-MAJOR)** **test_runner**: detect only tests when --test is not used (Colin Ihrig) [#54881](https://github.com/nodejs/node/pull/54881) +- \[[`eb7e18fe94`](https://github.com/nodejs/node/commit/eb7e18fe94)] - **(SEMVER-MAJOR)** **test_runner**: always make spec the default reporter (Colin Ihrig) [#54548](https://github.com/nodejs/node/pull/54548) +- \[[`0db38f0f99`](https://github.com/nodejs/node/commit/0db38f0f99)] - **(SEMVER-MAJOR)** **test_runner**: expose lcov reporter as newable function (Chemi Atlow) [#52403](https://github.com/nodejs/node/pull/52403) +- \[[`f5ed3386fd`](https://github.com/nodejs/node/commit/f5ed3386fd)] - **(SEMVER-MAJOR)** **timers**: emit warning if delay is negative or NaN (jakecastelli) [#46678](https://github.com/nodejs/node/pull/46678) +- \[[`f666a1b754`](https://github.com/nodejs/node/commit/f666a1b754)] - **(SEMVER-MAJOR)** **tls**: fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) [#52627](https://github.com/nodejs/node/pull/52627) +- \[[`c8c108f9b0`](https://github.com/nodejs/node/commit/c8c108f9b0)] - **(SEMVER-MAJOR)** **tools**: add additonal include dirs for V8 on AIX (Abdirahim Musse) [#54536](https://github.com/nodejs/node/pull/54536) +- \[[`64e8646618`](https://github.com/nodejs/node/commit/64e8646618)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 12.8 (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`dc352a5ff2`](https://github.com/nodejs/node/commit/dc352a5ff2)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 12.7 (Richard Lau) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`8044051ce3`](https://github.com/nodejs/node/commit/8044051ce3)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 12.6 (Michaël Zasso) [#54077](https://github.com/nodejs/node/pull/54077) +- \[[`982f6ad516`](https://github.com/nodejs/node/commit/982f6ad516)] - **(SEMVER-MAJOR)** **util**: move util.log to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`1d817dcb52`](https://github.com/nodejs/node/commit/1d817dcb52)] - **(SEMVER-MAJOR)** **util**: move util.isPrimitive to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`72240942ed`](https://github.com/nodejs/node/commit/72240942ed)] - **(SEMVER-MAJOR)** **util**: move util.isFunction to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`dc379626ab`](https://github.com/nodejs/node/commit/dc379626ab)] - **(SEMVER-MAJOR)** **util**: move util.isError to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`b5cae4fea6`](https://github.com/nodejs/node/commit/b5cae4fea6)] - **(SEMVER-MAJOR)** **util**: move util.isDate to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`bd559e3e5a`](https://github.com/nodejs/node/commit/bd559e3e5a)] - **(SEMVER-MAJOR)** **util**: move util.isObject to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`d3068b9cfa`](https://github.com/nodejs/node/commit/d3068b9cfa)] - **(SEMVER-MAJOR)** **util**: move util.isRegExp to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`a59c7aeb27`](https://github.com/nodejs/node/commit/a59c7aeb27)] - **(SEMVER-MAJOR)** **util**: move util.isUndefined to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`05e72c939a`](https://github.com/nodejs/node/commit/05e72c939a)] - **(SEMVER-MAJOR)** **util**: move util.isSymbol to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`832a77c003`](https://github.com/nodejs/node/commit/832a77c003)] - **(SEMVER-MAJOR)** **util**: move util.isString to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`708f57ea49`](https://github.com/nodejs/node/commit/708f57ea49)] - **(SEMVER-MAJOR)** **util**: move util.isNumber to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`6ec403fe91`](https://github.com/nodejs/node/commit/6ec403fe91)] - **(SEMVER-MAJOR)** **util**: move util.isNullOrUndefined to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`7cd8bb26d1`](https://github.com/nodejs/node/commit/7cd8bb26d1)] - **(SEMVER-MAJOR)** **util**: move util.isNull to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`e32b0c1eab`](https://github.com/nodejs/node/commit/e32b0c1eab)] - **(SEMVER-MAJOR)** **util**: move util.isBuffer to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`be528ab11e`](https://github.com/nodejs/node/commit/be528ab11e)] - **(SEMVER-MAJOR)** **util**: move util.isBoolean to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`ac97a532f5`](https://github.com/nodejs/node/commit/ac97a532f5)] - **(SEMVER-MAJOR)** **util**: move util.\_extend to eol (marco-ippolito) [#52744](https://github.com/nodejs/node/pull/52744) +- \[[`e225f00034`](https://github.com/nodejs/node/commit/e225f00034)] - **(SEMVER-MAJOR)** **zlib**: remove `zlib.bytesRead` (Yagiz Nizipli) [#55020](https://github.com/nodejs/node/pull/55020) + +### Semver-Minor Commits + +- \[[`90e3e5e173`](https://github.com/nodejs/node/commit/90e3e5e173)] - **(SEMVER-MINOR)** **crypto**: add KeyObject.prototype.toCryptoKey (Filip Skokan) [#55262](https://github.com/nodejs/node/pull/55262) +- \[[`29f31c6a76`](https://github.com/nodejs/node/commit/29f31c6a76)] - **(SEMVER-MINOR)** **crypto**: add Date fields for `validTo` and `validFrom` (Andrew Moon) [#54159](https://github.com/nodejs/node/pull/54159) +- \[[`83eb4f2855`](https://github.com/nodejs/node/commit/83eb4f2855)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick cd10ad7cdbe5 (Joyee Cheung) [#52535](https://github.com/nodejs/node/pull/52535) +- \[[`6c6562ce8b`](https://github.com/nodejs/node/commit/6c6562ce8b)] - **(SEMVER-MINOR)** **http2**: expose nghttp2_option_set_stream_reset_rate_limit as an option (Maël Nison) [#54875](https://github.com/nodejs/node/pull/54875) +- \[[`d473606040`](https://github.com/nodejs/node/commit/d473606040)] - **(SEMVER-MINOR)** **lib**: propagate aborted state to dependent signals before firing events (jazelly) [#54826](https://github.com/nodejs/node/pull/54826) +- \[[`772b35bdc4`](https://github.com/nodejs/node/commit/772b35bdc4)] - **(SEMVER-MINOR)** **module**: support loading entrypoint as url (RedYetiDev) [#54933](https://github.com/nodejs/node/pull/54933) +- \[[`06206af181`](https://github.com/nodejs/node/commit/06206af181)] - **(SEMVER-MINOR)** **module**: unflag --experimental-require-module (Joyee Cheung) [#55085](https://github.com/nodejs/node/pull/55085) +- \[[`0b9249e335`](https://github.com/nodejs/node/commit/0b9249e335)] - **(SEMVER-MINOR)** **module**: implement the "module-sync" exports condition (Joyee Cheung) [#54648](https://github.com/nodejs/node/pull/54648) +- \[[`62383cd113`](https://github.com/nodejs/node/commit/62383cd113)] - **(SEMVER-MINOR)** **module**: implement flushCompileCache() (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`4dfed556ba`](https://github.com/nodejs/node/commit/4dfed556ba)] - **(SEMVER-MINOR)** **module**: throw when invalid argument is passed to enableCompileCache() (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`9a73aa0d15`](https://github.com/nodejs/node/commit/9a73aa0d15)] - **(SEMVER-MINOR)** **module**: write compile cache to temporary file and then rename it (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`92a25abca9`](https://github.com/nodejs/node/commit/92a25abca9)] - **(SEMVER-MINOR)** **path**: add `matchGlob` method (Aviv Keller) [#52881](https://github.com/nodejs/node/pull/52881) +- \[[`b0f025208f`](https://github.com/nodejs/node/commit/b0f025208f)] - **(SEMVER-MINOR)** **process**: add process.features.require_module (Joyee Cheung) [#55241](https://github.com/nodejs/node/pull/55241) +- \[[`bf11e5793b`](https://github.com/nodejs/node/commit/bf11e5793b)] - **(SEMVER-MINOR)** **test_runner**: support custom arguments in `run()` (Aviv Keller) [#55126](https://github.com/nodejs/node/pull/55126) +- \[[`059e08bb21`](https://github.com/nodejs/node/commit/059e08bb21)] - **(SEMVER-MINOR)** **test_runner**: add 'test:summary' event (Colin Ihrig) [#54851](https://github.com/nodejs/node/pull/54851) +- \[[`f79fd03f41`](https://github.com/nodejs/node/commit/f79fd03f41)] - **(SEMVER-MINOR)** **test_runner**: add support for coverage via run() (Chemi Atlow) [#53937](https://github.com/nodejs/node/pull/53937) +- \[[`d2ad9b4fb6`](https://github.com/nodejs/node/commit/d2ad9b4fb6)] - **(SEMVER-MINOR)** **worker**: add `markAsUncloneable` api (Jason Zhang) [#55234](https://github.com/nodejs/node/pull/55234) + +### Semver-Patch Commits + +- \[[`e1d8b4f038`](https://github.com/nodejs/node/commit/e1d8b4f038)] - **assert**: show the diff when deep comparing data with a custom message (Giovanni) [#54759](https://github.com/nodejs/node/pull/54759) +- \[[`4eeeab09f0`](https://github.com/nodejs/node/commit/4eeeab09f0)] - **benchmark**: rewrite detect-esm-syntax benchmark (Joyee Cheung) [#55238](https://github.com/nodejs/node/pull/55238) +- \[[`834316d541`](https://github.com/nodejs/node/commit/834316d541)] - **benchmark**: add no-warnings to process.has bench (Rafael Gonzaga) [#55159](https://github.com/nodejs/node/pull/55159) +- \[[`00d4f8073c`](https://github.com/nodejs/node/commit/00d4f8073c)] - **benchmark**: create benchmark for typescript (Marco Ippolito) [#54904](https://github.com/nodejs/node/pull/54904) +- \[[`96ec7eede9`](https://github.com/nodejs/node/commit/96ec7eede9)] - **benchmark**: add webstorage benchmark (jakecastelli) [#55040](https://github.com/nodejs/node/pull/55040) +- \[[`29357cb0ef`](https://github.com/nodejs/node/commit/29357cb0ef)] - **benchmark**: include ascii to fs/readfile (Rafael Gonzaga) [#54988](https://github.com/nodejs/node/pull/54988) +- \[[`53cba82e55`](https://github.com/nodejs/node/commit/53cba82e55)] - **benchmark**: add dotenv benchmark (Aviv Keller) [#54278](https://github.com/nodejs/node/pull/54278) +- \[[`4062b3fb43`](https://github.com/nodejs/node/commit/4062b3fb43)] - **buffer**: coerce extrema to int in `blob.slice` (Antoine du Hamel) [#55141](https://github.com/nodejs/node/pull/55141) +- \[[`f805d0be95`](https://github.com/nodejs/node/commit/f805d0be95)] - **buffer**: correctly apply prototype to cloned `File` / `Blob` (Aviv Keller) [#55138](https://github.com/nodejs/node/pull/55138) +- \[[`da5887d8e9`](https://github.com/nodejs/node/commit/da5887d8e9)] - **buffer**: extract Blob's .arrayBuffer() & webidl changes (Matthew Aitken) [#53372](https://github.com/nodejs/node/pull/53372) +- \[[`0d4387ebe2`](https://github.com/nodejs/node/commit/0d4387ebe2)] - **buffer**: use simdutf convert_latin1_to_utf8_safe (Robert Nagy) [#54798](https://github.com/nodejs/node/pull/54798) +- \[[`ae1e2b53b7`](https://github.com/nodejs/node/commit/ae1e2b53b7)] - **build**: fix notify-on-review-wanted action (Rafael Gonzaga) [#55304](https://github.com/nodejs/node/pull/55304) +- \[[`22bc15764b`](https://github.com/nodejs/node/commit/22bc15764b)] - **build**: include `.nycrc` in coverage workflows (Wuli Zuo) [#55210](https://github.com/nodejs/node/pull/55210) +- \[[`28ffa4b751`](https://github.com/nodejs/node/commit/28ffa4b751)] - **build**: fix not valid json in coverage (jakecastelli) [#55179](https://github.com/nodejs/node/pull/55179) +- \[[`1398c04c47`](https://github.com/nodejs/node/commit/1398c04c47)] - **build**: notify via slack when review-wanted (Rafael Gonzaga) [#55102](https://github.com/nodejs/node/pull/55102) +- \[[`b2c42dbcbb`](https://github.com/nodejs/node/commit/b2c42dbcbb)] - **build**: add more information to Makefile help (Aviv Keller) [#53381](https://github.com/nodejs/node/pull/53381) +- \[[`a1cd3c8777`](https://github.com/nodejs/node/commit/a1cd3c8777)] - **build**: update ruff and add `lint-py-fix` (Aviv Keller) [#54410](https://github.com/nodejs/node/pull/54410) +- \[[`6a6c957be7`](https://github.com/nodejs/node/commit/6a6c957be7)] - **build**: remove -v flag to reduce noise (iwuliz) [#55025](https://github.com/nodejs/node/pull/55025) +- \[[`5f6bb7d007`](https://github.com/nodejs/node/commit/5f6bb7d007)] - **build**: display free disk space after build in the test-macOS workflow (iwuliz) [#55025](https://github.com/nodejs/node/pull/55025) +- \[[`415b82d8b8`](https://github.com/nodejs/node/commit/415b82d8b8)] - **build**: support up to python 3.13 in android-configure (Aviv Keller) [#54529](https://github.com/nodejs/node/pull/54529) +- \[[`beb1892036`](https://github.com/nodejs/node/commit/beb1892036)] - **build**: add the option to generate compile_commands.json in vcbuild.bat (Segev Finer) [#52279](https://github.com/nodejs/node/pull/52279) +- \[[`81cc72996a`](https://github.com/nodejs/node/commit/81cc72996a)] - **build**: fix eslint makefile target (Aviv Keller) [#54999](https://github.com/nodejs/node/pull/54999) +- \[[`7e00be7650`](https://github.com/nodejs/node/commit/7e00be7650)] - _**Revert**_ "**build**: upgrade clang-format to v18" (Chengzhong Wu) [#54994](https://github.com/nodejs/node/pull/54994) +- \[[`96e057093f`](https://github.com/nodejs/node/commit/96e057093f)] - **build**: print `Running XYZ linter...` for py and yml (Aviv Keller) [#54386](https://github.com/nodejs/node/pull/54386) +- \[[`ab5e58bf29`](https://github.com/nodejs/node/commit/ab5e58bf29)] - _**Revert**_ "**build**: only generate specified build type files" (Chengzhong Wu) [#53580](https://github.com/nodejs/node/pull/53580) +- \[[`6cb940a546`](https://github.com/nodejs/node/commit/6cb940a546)] - **build**: only generate specified build type files (Chengzhong Wu) [#53511](https://github.com/nodejs/node/pull/53511) +- \[[`27f8d9e9d2`](https://github.com/nodejs/node/commit/27f8d9e9d2)] - **build,win**: enable pch for clang-cl (Stefan Stojanovic) [#55249](https://github.com/nodejs/node/pull/55249) +- \[[`bbf08c6a1b`](https://github.com/nodejs/node/commit/bbf08c6a1b)] - **build,win**: add winget config to set up env (Hüseyin Açacak) [#54729](https://github.com/nodejs/node/pull/54729) +- \[[`653b96527a`](https://github.com/nodejs/node/commit/653b96527a)] - **build,win**: float VS 17.11 compilation patch (Stefan Stojanovic) [#54970](https://github.com/nodejs/node/pull/54970) +- \[[`0c5fa57bc7`](https://github.com/nodejs/node/commit/0c5fa57bc7)] - **cli**: ensure --run has proper pwd (Yagiz Nizipli) [#54949](https://github.com/nodejs/node/pull/54949) +- \[[`65768bca59`](https://github.com/nodejs/node/commit/65768bca59)] - **cli**: fix spacing for port range error (Aviv Keller) [#54495](https://github.com/nodejs/node/pull/54495) +- \[[`2d77ba5d30`](https://github.com/nodejs/node/commit/2d77ba5d30)] - _**Revert**_ "**console**: colorize console error and warn" (Aviv Keller) [#54677](https://github.com/nodejs/node/pull/54677) +- \[[`b64006c0ed`](https://github.com/nodejs/node/commit/b64006c0ed)] - **crypto**: ensure invalid SubtleCrypto JWK data import results in DataError (Filip Skokan) [#55041](https://github.com/nodejs/node/pull/55041) +- \[[`7a3027d563`](https://github.com/nodejs/node/commit/7a3027d563)] - **deps**: update undici to 6.20.0 (Node.js GitHub Bot) [#55329](https://github.com/nodejs/node/pull/55329) +- \[[`54b5ec94e0`](https://github.com/nodejs/node/commit/54b5ec94e0)] - **deps**: patch V8 to 12.9.202.26 (Node.js GitHub Bot) [#55161](https://github.com/nodejs/node/pull/55161) +- \[[`20d8b85d34`](https://github.com/nodejs/node/commit/20d8b85d34)] - **deps**: upgrade npm to 10.9.0 (npm team) [#55255](https://github.com/nodejs/node/pull/55255) +- \[[`fe45be207b`](https://github.com/nodejs/node/commit/fe45be207b)] - **deps**: V8: backport 0d5d6e71bbb0 (Yagiz Nizipli) [#55115](https://github.com/nodejs/node/pull/55115) +- \[[`5ff9b072b2`](https://github.com/nodejs/node/commit/5ff9b072b2)] - **deps**: update archs files for openssl-3.0.15+quic1 (Node.js GitHub Bot) [#55184](https://github.com/nodejs/node/pull/55184) +- \[[`302e6afe8c`](https://github.com/nodejs/node/commit/302e6afe8c)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.15+quic1 (Node.js GitHub Bot) [#55184](https://github.com/nodejs/node/pull/55184) +- \[[`5f78e2c880`](https://github.com/nodejs/node/commit/5f78e2c880)] - **deps**: update timezone to 2024b (Node.js GitHub Bot) [#55056](https://github.com/nodejs/node/pull/55056) +- \[[`5ed3296051`](https://github.com/nodejs/node/commit/5ed3296051)] - **deps**: patch V8 to 12.9.202.19 (Node.js GitHub Bot) [#55057](https://github.com/nodejs/node/pull/55057) +- \[[`a6ece28604`](https://github.com/nodejs/node/commit/a6ece28604)] - **deps**: update acorn-walk to 8.3.4 (Node.js GitHub Bot) [#54950](https://github.com/nodejs/node/pull/54950) +- \[[`a428b21066`](https://github.com/nodejs/node/commit/a428b21066)] - **deps**: update corepack to 0.29.4 (Node.js GitHub Bot) [#54845](https://github.com/nodejs/node/pull/54845) +- \[[`260f1f4608`](https://github.com/nodejs/node/commit/260f1f4608)] - **deps**: patch V8 to 12.8.374.33 (Node.js GitHub Bot) [#54952](https://github.com/nodejs/node/pull/54952) +- \[[`b887942e6b`](https://github.com/nodejs/node/commit/b887942e6b)] - **deps**: patch V8 to 12.8.374.32 (Node.js GitHub Bot) [#54884](https://github.com/nodejs/node/pull/54884) +- \[[`9087056060`](https://github.com/nodejs/node/commit/9087056060)] - **deps**: patch V8 to 12.8.374.31 (Michaël Zasso) [#54682](https://github.com/nodejs/node/pull/54682) +- \[[`6bce6f69c6`](https://github.com/nodejs/node/commit/6bce6f69c6)] - _**Revert**_ "**deps**: remove bogus V8 DCHECK" (Michaël Zasso) [#54682](https://github.com/nodejs/node/pull/54682) +- \[[`0c771c35fa`](https://github.com/nodejs/node/commit/0c771c35fa)] - **deps**: patch V8 to 12.8.374.22 (Node.js GitHub Bot) [#54435](https://github.com/nodejs/node/pull/54435) +- \[[`543d1a9cb9`](https://github.com/nodejs/node/commit/543d1a9cb9)] - **deps**: update archs files for openssl-3.0.14+quic1 (Node.js GitHub Bot) [#54336](https://github.com/nodejs/node/pull/54336) +- \[[`94d062bc78`](https://github.com/nodejs/node/commit/94d062bc78)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.14+quic1 (Node.js GitHub Bot) [#54336](https://github.com/nodejs/node/pull/54336) +- \[[`8e33f20a64`](https://github.com/nodejs/node/commit/8e33f20a64)] - _**Revert**_ "**deps**: V8: cherry-pick 9ebca66a5740" (Joyee Cheung) [#53582](https://github.com/nodejs/node/pull/53582) +- \[[`4c730aed7f`](https://github.com/nodejs/node/commit/4c730aed7f)] - **deps**: V8: cherry-pick 9ebca66a5740 (Chengzhong Wu) [#53522](https://github.com/nodejs/node/pull/53522) +- \[[`e9904fe49a`](https://github.com/nodejs/node/commit/e9904fe49a)] - **doc**: edit onboarding guide to clarify when mailmap addition is needed (Antoine du Hamel) [#55334](https://github.com/nodejs/node/pull/55334) +- \[[`acd698a5c8`](https://github.com/nodejs/node/commit/acd698a5c8)] - **doc**: fix the return type of outgoingMessage.setHeaders() (Jimmy Leung) [#55290](https://github.com/nodejs/node/pull/55290) +- \[[`d620755661`](https://github.com/nodejs/node/commit/d620755661)] - **doc**: add release key for aduh95 (Antoine du Hamel) [#55349](https://github.com/nodejs/node/pull/55349) +- \[[`4a3fffaf58`](https://github.com/nodejs/node/commit/4a3fffaf58)] - **doc**: move `ERR_INVALID_PERFORMANCE_MARK` to legacy errors (Antoine du Hamel) [#55247](https://github.com/nodejs/node/pull/55247) +- \[[`e79ae1bf0c`](https://github.com/nodejs/node/commit/e79ae1bf0c)] - **doc**: reserve 132 for Electron 34 (Michaela Laurencin) [#55306](https://github.com/nodejs/node/pull/55306) +- \[[`33fe88a0b3`](https://github.com/nodejs/node/commit/33fe88a0b3)] - **doc**: add pmarchini to collaborators (Pietro Marchini) [#55331](https://github.com/nodejs/node/pull/55331) +- \[[`755b89772d`](https://github.com/nodejs/node/commit/755b89772d)] - **doc**: fix `events.once()` example using `AbortSignal` (Ivo Janssen) [#55144](https://github.com/nodejs/node/pull/55144) +- \[[`accb239272`](https://github.com/nodejs/node/commit/accb239272)] - **doc**: add onboarding details for ambassador program (Marco Ippolito) [#55284](https://github.com/nodejs/node/pull/55284) +- \[[`a301596c41`](https://github.com/nodejs/node/commit/a301596c41)] - **doc**: move `ERR_NAPI_TSFN_START/STOP_IDLE_LOOP` to legacy errors (Antoine du Hamel) [#55248](https://github.com/nodejs/node/pull/55248) +- \[[`32efeea0c0`](https://github.com/nodejs/node/commit/32efeea0c0)] - **doc**: fix initial default value of autoSelectFamily (Ihor Rohovets) [#55245](https://github.com/nodejs/node/pull/55245) +- \[[`cc9b9a7f70`](https://github.com/nodejs/node/commit/cc9b9a7f70)] - **doc**: tweak onboarding instructions (Michael Dawson) [#55212](https://github.com/nodejs/node/pull/55212) +- \[[`c9cffb73b3`](https://github.com/nodejs/node/commit/c9cffb73b3)] - **doc**: update test context.assert (Pietro Marchini) [#55186](https://github.com/nodejs/node/pull/55186) +- \[[`348d865652`](https://github.com/nodejs/node/commit/348d865652)] - **doc**: update `require(ESM)` history and stability status (Antoine du Hamel) [#55199](https://github.com/nodejs/node/pull/55199) +- \[[`14b53df33c`](https://github.com/nodejs/node/commit/14b53df33c)] - **doc**: fix unordered error anchors (Antoine du Hamel) [#55242](https://github.com/nodejs/node/pull/55242) +- \[[`dec10991e7`](https://github.com/nodejs/node/commit/dec10991e7)] - **doc**: mention addons to experimental permission (Rafael Gonzaga) [#55166](https://github.com/nodejs/node/pull/55166) +- \[[`cebf21dfa5`](https://github.com/nodejs/node/commit/cebf21dfa5)] - **doc**: use correct dash in stability status (Antoine du Hamel) [#55200](https://github.com/nodejs/node/pull/55200) +- \[[`0f02810fc9`](https://github.com/nodejs/node/commit/0f02810fc9)] - **doc**: fix link in `test/README.md` (Livia Medeiros) [#55165](https://github.com/nodejs/node/pull/55165) +- \[[`22b4b7c626`](https://github.com/nodejs/node/commit/22b4b7c626)] - **doc**: fix typos (Nathan Baulch) [#55066](https://github.com/nodejs/node/pull/55066) +- \[[`e6427e1d87`](https://github.com/nodejs/node/commit/e6427e1d87)] - **doc**: add esm examples to node:net (Alfredo González) [#55134](https://github.com/nodejs/node/pull/55134) +- \[[`6d1cd506b5`](https://github.com/nodejs/node/commit/6d1cd506b5)] - **doc**: remove outdated https import reference (Edigleysson Silva (Edy)) [#55111](https://github.com/nodejs/node/pull/55111) +- \[[`5368cdcf8a`](https://github.com/nodejs/node/commit/5368cdcf8a)] - **doc**: move the YAML changes element (sendoru) [#55112](https://github.com/nodejs/node/pull/55112) +- \[[`23743f63fb`](https://github.com/nodejs/node/commit/23743f63fb)] - **doc**: remove random horizontal separators in `process.md` (Antoine du Hamel) [#55149](https://github.com/nodejs/node/pull/55149) +- \[[`18acff0d01`](https://github.com/nodejs/node/commit/18acff0d01)] - **doc**: put --env-file-if-exists=config right under --env-file=config (Edigleysson Silva (Edy)) [#55131](https://github.com/nodejs/node/pull/55131) +- \[[`fd787c96e1`](https://github.com/nodejs/node/commit/fd787c96e1)] - **doc**: fix the require resolve algorithm in `modules.md` (chirsz) [#55117](https://github.com/nodejs/node/pull/55117) +- \[[`668e523392`](https://github.com/nodejs/node/commit/668e523392)] - **doc**: update style guide (Aviv Keller) [#53223](https://github.com/nodejs/node/pull/53223) +- \[[`ae82b455d1`](https://github.com/nodejs/node/commit/ae82b455d1)] - **doc**: add missing `:` to `run()`'s `globPatterns` (Aviv Keller) [#55135](https://github.com/nodejs/node/pull/55135) +- \[[`7f480818b7`](https://github.com/nodejs/node/commit/7f480818b7)] - **doc**: correct `cleanup` option in stream.(promises.)finished (René) [#55043](https://github.com/nodejs/node/pull/55043) +- \[[`b8493a5789`](https://github.com/nodejs/node/commit/b8493a5789)] - **doc**: add abmusse to collaborators (Abdirahim Musse) [#55086](https://github.com/nodejs/node/pull/55086) +- \[[`f20c42e964`](https://github.com/nodejs/node/commit/f20c42e964)] - **doc**: add note about `--expose-internals` (Aviv Keller) [#52861](https://github.com/nodejs/node/pull/52861) +- \[[`1c61a83444`](https://github.com/nodejs/node/commit/1c61a83444)] - **doc**: remove `parseREPLKeyword` from REPL documentation (Aviv Keller) [#54749](https://github.com/nodejs/node/pull/54749) +- \[[`65362f0181`](https://github.com/nodejs/node/commit/65362f0181)] - **doc**: add missing EventSource docs to globals (Matthew Aitken) [#55022](https://github.com/nodejs/node/pull/55022) +- \[[`5e25c2a79a`](https://github.com/nodejs/node/commit/5e25c2a79a)] - **doc**: cover --experimental-test-module-mocks flag (Jonathan Sharpe) [#55021](https://github.com/nodejs/node/pull/55021) +- \[[`99433a2d7a`](https://github.com/nodejs/node/commit/99433a2d7a)] - **doc**: add more details for localStorage and sessionStorage (Batuhan Tomo) [#53881](https://github.com/nodejs/node/pull/53881) +- \[[`b446a587ba`](https://github.com/nodejs/node/commit/b446a587ba)] - **doc**: mark v21 as End-of-Life (Aviv Keller) [#54984](https://github.com/nodejs/node/pull/54984) +- \[[`5e87577b4f`](https://github.com/nodejs/node/commit/5e87577b4f)] - **doc**: change backporting guide with updated info (Aviv Keller) [#53746](https://github.com/nodejs/node/pull/53746) +- \[[`de47b3122a`](https://github.com/nodejs/node/commit/de47b3122a)] - **doc**: add missing definitions to `internal-api.md` (Aviv Keller) [#53303](https://github.com/nodejs/node/pull/53303) +- \[[`421977cd48`](https://github.com/nodejs/node/commit/421977cd48)] - **doc**: fix history of `process.features` (Antoine du Hamel) [#54982](https://github.com/nodejs/node/pull/54982) +- \[[`305137faae`](https://github.com/nodejs/node/commit/305137faae)] - **doc**: fix typo callsite.lineNumber (Rafael Gonzaga) [#54969](https://github.com/nodejs/node/pull/54969) +- \[[`7feff2434d`](https://github.com/nodejs/node/commit/7feff2434d)] - **doc**: update documentation for externalizing deps (Michael Dawson) [#54792](https://github.com/nodejs/node/pull/54792) +- \[[`cb20c5b9f4`](https://github.com/nodejs/node/commit/cb20c5b9f4)] - **doc**: add documentation for process.features (Marco Ippolito) [#54897](https://github.com/nodejs/node/pull/54897) +- \[[`24302c9fe9`](https://github.com/nodejs/node/commit/24302c9fe9)] - **doc**: fix typo in CppgcMixin docs (Joyee Cheung) [#54762](https://github.com/nodejs/node/pull/54762) +- \[[`7327e44a05`](https://github.com/nodejs/node/commit/7327e44a05)] - **doc**: sort versions to fix the linter error (Rafael Gonzaga) [#54229](https://github.com/nodejs/node/pull/54229) +- \[[`fb852798dc`](https://github.com/nodejs/node/commit/fb852798dc)] - **esm**: do not interpret `"main"` as a URL (Antoine du Hamel) [#55003](https://github.com/nodejs/node/pull/55003) +- \[[`8fd90938f9`](https://github.com/nodejs/node/commit/8fd90938f9)] - **esm**: remove --no-import-harmony-assertions (Shu-yu Guo) [#54890](https://github.com/nodejs/node/pull/54890) +- \[[`a9081b5391`](https://github.com/nodejs/node/commit/a9081b5391)] - **events**: allow null/undefined eventInitDict (Matthew Aitken) [#54643](https://github.com/nodejs/node/pull/54643) +- \[[`0de1cf004c`](https://github.com/nodejs/node/commit/0de1cf004c)] - **events**: return `currentTarget` when dispatching (Matthew Aitken) [#54642](https://github.com/nodejs/node/pull/54642) +- \[[`9f9069d313`](https://github.com/nodejs/node/commit/9f9069d313)] - **fs**: fix linter issue (Antoine du Hamel) [#55353](https://github.com/nodejs/node/pull/55353) +- \[[`36ca010bef`](https://github.com/nodejs/node/commit/36ca010bef)] - **fs**: acknowledge `signal` option in `filehandle.createReadStream()` (Livia Medeiros) [#55148](https://github.com/nodejs/node/pull/55148) +- \[[`7fe5bcd29e`](https://github.com/nodejs/node/commit/7fe5bcd29e)] - **fs**: check subdir correctly in cpSync (Jason Zhang) [#55033](https://github.com/nodejs/node/pull/55033) +- \[[`090add7864`](https://github.com/nodejs/node/commit/090add7864)] - **fs**: refactoring declaratively with `Array.fromAsync` (Sonny) [#54644](https://github.com/nodejs/node/pull/54644) +- \[[`77ca5ca075`](https://github.com/nodejs/node/commit/77ca5ca075)] - **fs**: convert to u8 string for filesystem path (Jason Zhang) [#54653](https://github.com/nodejs/node/pull/54653) +- \[[`cf2bce6386`](https://github.com/nodejs/node/commit/cf2bce6386)] - **fs**: fix regression on rmsync (Yagiz Nizipli) [#53982](https://github.com/nodejs/node/pull/53982) +- \[[`7168295e7a`](https://github.com/nodejs/node/commit/7168295e7a)] - **fs**: move `rmSync` implementation to c++ (Yagiz Nizipli) [#53617](https://github.com/nodejs/node/pull/53617) +- \[[`71785889c8`](https://github.com/nodejs/node/commit/71785889c8)] - **lib**: prefer logical assignment (Aviv Keller) [#55044](https://github.com/nodejs/node/pull/55044) +- \[[`78f421de88`](https://github.com/nodejs/node/commit/78f421de88)] - **lib**: fix module print timing when specifier includes `"` (Antoine du Hamel) [#55150](https://github.com/nodejs/node/pull/55150) +- \[[`d5eb9a378e`](https://github.com/nodejs/node/commit/d5eb9a378e)] - **lib**: remove `Symbol[Async]Dispose` polyfills (Michaël Zasso) [#55276](https://github.com/nodejs/node/pull/55276) +- \[[`4c045351c1`](https://github.com/nodejs/node/commit/4c045351c1)] - **lib**: fix typos (Nathan Baulch) [#55065](https://github.com/nodejs/node/pull/55065) +- \[[`574f2dd517`](https://github.com/nodejs/node/commit/574f2dd517)] - **lib**: prefer optional chaining (Aviv Keller) [#55045](https://github.com/nodejs/node/pull/55045) +- \[[`76edde5cd0`](https://github.com/nodejs/node/commit/76edde5cd0)] - **lib**: remove lib/internal/idna.js (Yagiz Nizipli) [#55050](https://github.com/nodejs/node/pull/55050) +- \[[`7014e50ca3`](https://github.com/nodejs/node/commit/7014e50ca3)] - **lib**: the REPL should survive deletion of Array.prototype methods (Jordan Harband) [#31457](https://github.com/nodejs/node/pull/31457) +- \[[`5c22d19f44`](https://github.com/nodejs/node/commit/5c22d19f44)] - **lib, tools**: remove duplicate requires (Aviv Keller) [#54987](https://github.com/nodejs/node/pull/54987) +- \[[`24648b5769`](https://github.com/nodejs/node/commit/24648b5769)] - **lib,esm**: handle bypass network-import via data: (Rafael Gonzaga) [#53764](https://github.com/nodejs/node/pull/53764) +- \[[`1d38bd1122`](https://github.com/nodejs/node/commit/1d38bd1122)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#55300](https://github.com/nodejs/node/pull/55300) +- \[[`98788dace6`](https://github.com/nodejs/node/commit/98788dace6)] - **meta**: bump mozilla-actions/sccache-action from 0.0.5 to 0.0.6 (dependabot\[bot]) [#55225](https://github.com/nodejs/node/pull/55225) +- \[[`8de2695fe5`](https://github.com/nodejs/node/commit/8de2695fe5)] - **meta**: bump actions/checkout from 4.1.7 to 4.2.0 (dependabot\[bot]) [#55224](https://github.com/nodejs/node/pull/55224) +- \[[`ccae9c0fef`](https://github.com/nodejs/node/commit/ccae9c0fef)] - **meta**: bump actions/setup-node from 4.0.3 to 4.0.4 (dependabot\[bot]) [#55223](https://github.com/nodejs/node/pull/55223) +- \[[`fd4959c67a`](https://github.com/nodejs/node/commit/fd4959c67a)] - **meta**: bump peter-evans/create-pull-request from 7.0.1 to 7.0.5 (dependabot\[bot]) [#55219](https://github.com/nodejs/node/pull/55219) +- \[[`c08bb75618`](https://github.com/nodejs/node/commit/c08bb75618)] - **meta**: add mailmap entry for abmusse (Abdirahim Musse) [#55182](https://github.com/nodejs/node/pull/55182) +- \[[`18800da280`](https://github.com/nodejs/node/commit/18800da280)] - **meta**: add more information about nightly releases (Aviv Keller) [#55084](https://github.com/nodejs/node/pull/55084) +- \[[`eda98728da`](https://github.com/nodejs/node/commit/eda98728da)] - **meta**: add `linux` to OS labels in collaborator guide (Aviv Keller) [#54986](https://github.com/nodejs/node/pull/54986) +- \[[`8aa57918c2`](https://github.com/nodejs/node/commit/8aa57918c2)] - **meta**: remove never-used workflow trigger (Aviv Keller) [#54983](https://github.com/nodejs/node/pull/54983) +- \[[`c6ae161237`](https://github.com/nodejs/node/commit/c6ae161237)] - **meta**: remove unneeded ignore rules from ruff (Aviv Keller) [#54360](https://github.com/nodejs/node/pull/54360) +- \[[`ccc7ce09f2`](https://github.com/nodejs/node/commit/ccc7ce09f2)] - **meta**: remove `build-windows.yml` (Aviv Keller) [#54662](https://github.com/nodejs/node/pull/54662) +- \[[`f88fe776ef`](https://github.com/nodejs/node/commit/f88fe776ef)] - **meta**: add links to alternative issue trackers (Aviv Keller) [#54401](https://github.com/nodejs/node/pull/54401) +- \[[`90f56dbad9`](https://github.com/nodejs/node/commit/90f56dbad9)] - **module**: throw ERR_NO_TYPESCRIPT when compiled without amaro (Marco Ippolito) [#55332](https://github.com/nodejs/node/pull/55332) +- \[[`31a37e777d`](https://github.com/nodejs/node/commit/31a37e777d)] - **module**: wrap swc error in ERR_INVALID_TYPESCRIPT_SYNTAX (Marco Ippolito) [#55316](https://github.com/nodejs/node/pull/55316) +- \[[`3fb7426f83`](https://github.com/nodejs/node/commit/3fb7426f83)] - **module**: check --experimental-require-module separately from detection (Joyee Cheung) [#55250](https://github.com/nodejs/node/pull/55250) +- \[[`bdd590be73`](https://github.com/nodejs/node/commit/bdd590be73)] - **module**: use kNodeModulesRE to detect node_modules (Joyee Cheung) [#55243](https://github.com/nodejs/node/pull/55243) +- \[[`5e4da33d97`](https://github.com/nodejs/node/commit/5e4da33d97)] - **module**: add internal type def for `flushCompileCache` (Jacob Smith) [#55226](https://github.com/nodejs/node/pull/55226) +- \[[`d24c7313f7`](https://github.com/nodejs/node/commit/d24c7313f7)] - **module**: support 'module.exports' interop export in require(esm) (Guy Bedford) [#54563](https://github.com/nodejs/node/pull/54563) +- \[[`12f92b04f4`](https://github.com/nodejs/node/commit/12f92b04f4)] - **module**: remove duplicated import (Aviv Keller) [#54942](https://github.com/nodejs/node/pull/54942) +- \[[`be4babb3c2`](https://github.com/nodejs/node/commit/be4babb3c2)] - **module**: report unfinished TLA in ambiguous modules (Antoine du Hamel) [#54980](https://github.com/nodejs/node/pull/54980) +- \[[`3ac5b49d85`](https://github.com/nodejs/node/commit/3ac5b49d85)] - **module**: refator ESM loader for adding future synchronous hooks (Joyee Cheung) [#54769](https://github.com/nodejs/node/pull/54769) +- \[[`3c4ef343ee`](https://github.com/nodejs/node/commit/3c4ef343ee)] - **module**: remove bogus assertion in CJS entrypoint handling with --import (Joyee Cheung) [#54592](https://github.com/nodejs/node/pull/54592) +- \[[`e35902cddb`](https://github.com/nodejs/node/commit/e35902cddb)] - **module**: fix discrepancy between .ts and .js (Marco Ippolito) [#54461](https://github.com/nodejs/node/pull/54461) +- \[[`fdf838aee6`](https://github.com/nodejs/node/commit/fdf838aee6)] - **node-api**: add napi_create_buffer_from_arraybuffer method (Mert Can Altin) [#54505](https://github.com/nodejs/node/pull/54505) +- \[[`87e7aeb672`](https://github.com/nodejs/node/commit/87e7aeb672)] - **os**: use const with early return for path (Trivikram Kamat) [#54959](https://github.com/nodejs/node/pull/54959) +- \[[`e42ca5c1a9`](https://github.com/nodejs/node/commit/e42ca5c1a9)] - **path**: remove repetitive conditional operator in `posix.resolve` (Wiyeong Seo) [#54835](https://github.com/nodejs/node/pull/54835) +- \[[`04750afb1e`](https://github.com/nodejs/node/commit/04750afb1e)] - **perf_hooks**: add missing type argument to getEntriesByName (Luke Taher) [#54767](https://github.com/nodejs/node/pull/54767) +- \[[`f98d9c125c`](https://github.com/nodejs/node/commit/f98d9c125c)] - **process**: fix `process.features.typescript` when Amaro is unavailable (Antoine du Hamel) [#55323](https://github.com/nodejs/node/pull/55323) +- \[[`bbdfeebd9e`](https://github.com/nodejs/node/commit/bbdfeebd9e)] - **process**: add `process.features.typescript` (Aviv Keller) [#54295](https://github.com/nodejs/node/pull/54295) +- \[[`cdae315706`](https://github.com/nodejs/node/commit/cdae315706)] - **quic**: start adding in the internal quic js api (James M Snell) [#53256](https://github.com/nodejs/node/pull/53256) +- \[[`c6d20a034d`](https://github.com/nodejs/node/commit/c6d20a034d)] - **repl**: catch `\v` and `\r` in new-line detection (Aviv Keller) [#54512](https://github.com/nodejs/node/pull/54512) +- \[[`09d10b50dc`](https://github.com/nodejs/node/commit/09d10b50dc)] - **sqlite**: disable DQS misfeature by default (Tobias Nießen) [#55297](https://github.com/nodejs/node/pull/55297) +- \[[`7af434fc19`](https://github.com/nodejs/node/commit/7af434fc19)] - **sqlite**: make sourceSQL and expandedSQL string-valued properties (Tobias Nießen) [#54721](https://github.com/nodejs/node/pull/54721) +- \[[`a49abec6c3`](https://github.com/nodejs/node/commit/a49abec6c3)] - **sqlite**: enable foreign key constraints by default (Tobias Nießen) [#54777](https://github.com/nodejs/node/pull/54777) +- \[[`14353387eb`](https://github.com/nodejs/node/commit/14353387eb)] - **src**: implement IsInsideNodeModules() in C++ (Joyee Cheung) [#55286](https://github.com/nodejs/node/pull/55286) +- \[[`18536d95e2`](https://github.com/nodejs/node/commit/18536d95e2)] - **src**: apply getCallSite optimization (RafaelGSS) [#55174](https://github.com/nodejs/node/pull/55174) +- \[[`317d2450f9`](https://github.com/nodejs/node/commit/317d2450f9)] - **src**: modernize likely/unlikely hints (Yagiz Nizipli) [#55155](https://github.com/nodejs/node/pull/55155) +- \[[`33bbf3751b`](https://github.com/nodejs/node/commit/33bbf3751b)] - **src**: fixup Error.stackTraceLimit during snapshot building (Joyee Cheung) [#55121](https://github.com/nodejs/node/pull/55121) +- \[[`65fbc95949`](https://github.com/nodejs/node/commit/65fbc95949)] - **src**: parse --stack-trace-limit and use it in --trace-\* flags (Joyee Cheung) [#55121](https://github.com/nodejs/node/pull/55121) +- \[[`858bce5698`](https://github.com/nodejs/node/commit/858bce5698)] - **src**: make minor tweaks to quic c++ for c++20 (James M Snell) [#53256](https://github.com/nodejs/node/pull/53256) +- \[[`ac53a5b29d`](https://github.com/nodejs/node/commit/ac53a5b29d)] - **src**: move more key handling to ncrypto (James M Snell) [#55108](https://github.com/nodejs/node/pull/55108) +- \[[`f5d454ac7e`](https://github.com/nodejs/node/commit/f5d454ac7e)] - **src**: add receiver to fast api callback methods (Carlos Espa) [#54408](https://github.com/nodejs/node/pull/54408) +- \[[`b5fb2ff81e`](https://github.com/nodejs/node/commit/b5fb2ff81e)] - **src**: fix typos (Nathan Baulch) [#55064](https://github.com/nodejs/node/pull/55064) +- \[[`812806a757`](https://github.com/nodejs/node/commit/812806a757)] - **src**: move more stuff over to use Maybe\ (James M Snell) [#54831](https://github.com/nodejs/node/pull/54831) +- \[[`84966703e0`](https://github.com/nodejs/node/commit/84966703e0)] - **src**: track BaseObjects with an efficient list (Chengzhong Wu) [#55104](https://github.com/nodejs/node/pull/55104) +- \[[`02cdf7b809`](https://github.com/nodejs/node/commit/02cdf7b809)] - **src**: decode native error messages as UTF-8 (Joyee Cheung) [#55024](https://github.com/nodejs/node/pull/55024) +- \[[`6fb9f56994`](https://github.com/nodejs/node/commit/6fb9f56994)] - **src**: update clang-tidy and focus on modernization (Yagiz Nizipli) [#53757](https://github.com/nodejs/node/pull/53757) +- \[[`773e7c67cf`](https://github.com/nodejs/node/commit/773e7c67cf)] - **src**: do not call path.back() when it is empty (Cheng) [#55072](https://github.com/nodejs/node/pull/55072) +- \[[`c4681d55ae`](https://github.com/nodejs/node/commit/c4681d55ae)] - **src**: move evp stuff to ncrypto (James M Snell) [#54911](https://github.com/nodejs/node/pull/54911) +- \[[`5a966714c1`](https://github.com/nodejs/node/commit/5a966714c1)] - **src**: revert filesystem::path changes (Yagiz Nizipli) [#55015](https://github.com/nodejs/node/pull/55015) +- \[[`12dd4c7575`](https://github.com/nodejs/node/commit/12dd4c7575)] - **src**: mark node --run as stable (Yagiz Nizipli) [#53763](https://github.com/nodejs/node/pull/53763) +- \[[`8b8fc53c9a`](https://github.com/nodejs/node/commit/8b8fc53c9a)] - **src**: cleanup per env handles directly without a list (Chengzhong Wu) [#54993](https://github.com/nodejs/node/pull/54993) +- \[[`fd8c762fab`](https://github.com/nodejs/node/commit/fd8c762fab)] - **src**: add unistd.h import if node posix credentials is defined (Jonas) [#54528](https://github.com/nodejs/node/pull/54528) +- \[[`d496d44145`](https://github.com/nodejs/node/commit/d496d44145)] - **src**: remove duplicate code setting AF_INET (He Yang) [#54939](https://github.com/nodejs/node/pull/54939) +- \[[`d2a4f92920`](https://github.com/nodejs/node/commit/d2a4f92920)] - **src**: use `Maybe` where bool isn't needed (Michaël Zasso) [#54575](https://github.com/nodejs/node/pull/54575) +- \[[`8191e1f575`](https://github.com/nodejs/node/commit/8191e1f575)] - **src**: improve utf8 string generation performance (Yagiz Nizipli) [#54873](https://github.com/nodejs/node/pull/54873) +- \[[`9f5977fdac`](https://github.com/nodejs/node/commit/9f5977fdac)] - **src**: simplify string_bytes with views (Daniel Lemire) [#54876](https://github.com/nodejs/node/pull/54876) +- \[[`849db10fb3`](https://github.com/nodejs/node/commit/849db10fb3)] - **src**: add helpers for creating cppgc-managed wrappers (Joyee Cheung) [#52295](https://github.com/nodejs/node/pull/52295) +- \[[`4568df4c6d`](https://github.com/nodejs/node/commit/4568df4c6d)] - **src**: support v8::Data in heap utils (Joyee Cheung) [#52295](https://github.com/nodejs/node/pull/52295) +- \[[`4f1c27af8c`](https://github.com/nodejs/node/commit/4f1c27af8c)] - **src**: handle errors correctly in webstorage (Michaël Zasso) [#54544](https://github.com/nodejs/node/pull/54544) +- \[[`c062b5242a`](https://github.com/nodejs/node/commit/c062b5242a)] - **src**: use correct way to signal interceptor error (Michaël Zasso) [#54418](https://github.com/nodejs/node/pull/54418) +- \[[`097a52848e`](https://github.com/nodejs/node/commit/097a52848e)] - **src**: do not save c_str of a temp string (Cheng) [#53941](https://github.com/nodejs/node/pull/53941) +- \[[`3111ed7011`](https://github.com/nodejs/node/commit/3111ed7011)] - **stream**: handle undefined chunks correctly in decode stream (devstone) [#55153](https://github.com/nodejs/node/pull/55153) +- \[[`87a79cd8a1`](https://github.com/nodejs/node/commit/87a79cd8a1)] - **stream**: treat null asyncIterator as undefined (Jason Zhang) [#55119](https://github.com/nodejs/node/pull/55119) +- \[[`0e52836c35`](https://github.com/nodejs/node/commit/0e52836c35)] - **stream**: set stream prototype to closest transferable superclass (Jason Zhang) [#55067](https://github.com/nodejs/node/pull/55067) +- \[[`82dab76d63`](https://github.com/nodejs/node/commit/82dab76d63)] - **test**: fix tests when Amaro is unavailable (Richard Lau) [#55320](https://github.com/nodejs/node/pull/55320) +- \[[`fdc23b2f6b`](https://github.com/nodejs/node/commit/fdc23b2f6b)] - **test**: use more informative errors in `test-runner-cli` (Antoine du Hamel) [#55321](https://github.com/nodejs/node/pull/55321) +- \[[`a05cb0d1b0`](https://github.com/nodejs/node/commit/a05cb0d1b0)] - **test**: make `test-loaders-workers-spawned` less flaky (Antoine du Hamel) [#55172](https://github.com/nodejs/node/pull/55172) +- \[[`6c92c1391a`](https://github.com/nodejs/node/commit/6c92c1391a)] - **test**: add resource to internal module stat test (RafaelGSS) [#55157](https://github.com/nodejs/node/pull/55157) +- \[[`1d95b79b66`](https://github.com/nodejs/node/commit/1d95b79b66)] - **test**: move coverage source map tests to new file (Aviv Keller) [#55123](https://github.com/nodejs/node/pull/55123) +- \[[`2755551c3c`](https://github.com/nodejs/node/commit/2755551c3c)] - **test**: adding more tests for strip-types (Kevin Toshihiro Uehara) [#54929](https://github.com/nodejs/node/pull/54929) +- \[[`371ed85e4e`](https://github.com/nodejs/node/commit/371ed85e4e)] - **test**: update wpt test for encoding (devstone) [#55151](https://github.com/nodejs/node/pull/55151) +- \[[`99e0d0d218`](https://github.com/nodejs/node/commit/99e0d0d218)] - **test**: add `escapePOSIXShell` util (Antoine du Hamel) [#55125](https://github.com/nodejs/node/pull/55125) +- \[[`56c1786475`](https://github.com/nodejs/node/commit/56c1786475)] - **test**: remove unnecessary `await` in test-watch-mode (Wuli) [#55142](https://github.com/nodejs/node/pull/55142) +- \[[`28c7394319`](https://github.com/nodejs/node/commit/28c7394319)] - **test**: fix typos (Nathan Baulch) [#55063](https://github.com/nodejs/node/pull/55063) +- \[[`fbc6fcb018`](https://github.com/nodejs/node/commit/fbc6fcb018)] - **test**: remove duplicated test descriptions (Christos Koutsiaris) [#54140](https://github.com/nodejs/node/pull/54140) +- \[[`66a2cb210a`](https://github.com/nodejs/node/commit/66a2cb210a)] - **test**: deflake test/pummel/test-timers.js (jakecastelli) [#55098](https://github.com/nodejs/node/pull/55098) +- \[[`9bb6a1a790`](https://github.com/nodejs/node/commit/9bb6a1a790)] - **test**: deflake test-http-remove-header-stays-removed (Luigi Pinca) [#55004](https://github.com/nodejs/node/pull/55004) +- \[[`0f7bdcc17f`](https://github.com/nodejs/node/commit/0f7bdcc17f)] - **test**: fix test-tls-junk-closes-server (Michael Dawson) [#55089](https://github.com/nodejs/node/pull/55089) +- \[[`2118e32d9b`](https://github.com/nodejs/node/commit/2118e32d9b)] - **test**: fix more tests that fail when path contains a space (Antoine du Hamel) [#55088](https://github.com/nodejs/node/pull/55088) +- \[[`bdddc04dff`](https://github.com/nodejs/node/commit/bdddc04dff)] - **test**: fix `assertSnapshot` when path contains a quote (Antoine du Hamel) [#55087](https://github.com/nodejs/node/pull/55087) +- \[[`7d0ce254e8`](https://github.com/nodejs/node/commit/7d0ce254e8)] - **test**: fix some tests when path contains `%` (Antoine du Hamel) [#55082](https://github.com/nodejs/node/pull/55082) +- \[[`61ad74fb0f`](https://github.com/nodejs/node/commit/61ad74fb0f)] - _**Revert**_ "**test**: mark test-fs-watch-non-recursive flaky on Windows" (Luigi Pinca) [#55079](https://github.com/nodejs/node/pull/55079) +- \[[`02e8972169`](https://github.com/nodejs/node/commit/02e8972169)] - **test**: remove interval and give more time to unsync (Pietro Marchini) [#55006](https://github.com/nodejs/node/pull/55006) +- \[[`3c5ceff85f`](https://github.com/nodejs/node/commit/3c5ceff85f)] - **test**: deflake test-inspector-strip-types (Luigi Pinca) [#55058](https://github.com/nodejs/node/pull/55058) +- \[[`8b70e6bdee`](https://github.com/nodejs/node/commit/8b70e6bdee)] - **test**: make `test-runner-assert` more robust (Aviv Keller) [#55036](https://github.com/nodejs/node/pull/55036) +- \[[`2cec716c48`](https://github.com/nodejs/node/commit/2cec716c48)] - **test**: update tls test to support OpenSSL32 (Michael Dawson) [#55030](https://github.com/nodejs/node/pull/55030) +- \[[`1fcb128771`](https://github.com/nodejs/node/commit/1fcb128771)] - **test**: do not assume `process.execPath` contains no spaces (Antoine du Hamel) [#55028](https://github.com/nodejs/node/pull/55028) +- \[[`7ecc48d061`](https://github.com/nodejs/node/commit/7ecc48d061)] - **test**: fix `test-vm-context-dont-contextify` when path contains a space (Antoine du Hamel) [#55026](https://github.com/nodejs/node/pull/55026) +- \[[`cfe58cfdc4`](https://github.com/nodejs/node/commit/cfe58cfdc4)] - **test**: adjust tls-set-ciphers for OpenSSL32 (Michael Dawson) [#55016](https://github.com/nodejs/node/pull/55016) +- \[[`941635473d`](https://github.com/nodejs/node/commit/941635473d)] - **test**: add `util.stripVTControlCharacters` test (RedYetiDev) [#54865](https://github.com/nodejs/node/pull/54865) +- \[[`b23d1c37b9`](https://github.com/nodejs/node/commit/b23d1c37b9)] - **test**: improve coverage for timer promises schedular (Aviv Keller) [#53370](https://github.com/nodejs/node/pull/53370) +- \[[`a65e4418e5`](https://github.com/nodejs/node/commit/a65e4418e5)] - **test**: remove `getCallSite` from common (RedYetiDev) [#54947](https://github.com/nodejs/node/pull/54947) +- \[[`5116578b8a`](https://github.com/nodejs/node/commit/5116578b8a)] - **test**: remove unused common utilities (RedYetiDev) [#54825](https://github.com/nodejs/node/pull/54825) +- \[[`a9677db91b`](https://github.com/nodejs/node/commit/a9677db91b)] - **test**: deflake test-http-header-overflow (Luigi Pinca) [#54978](https://github.com/nodejs/node/pull/54978) +- \[[`9be0057859`](https://github.com/nodejs/node/commit/9be0057859)] - **test**: fix `soucre` to `source` (Aviv Keller) [#55038](https://github.com/nodejs/node/pull/55038) +- \[[`29b9c72b05`](https://github.com/nodejs/node/commit/29b9c72b05)] - **test**: add asserts to validate test assumptions (Michael Dawson) [#54997](https://github.com/nodejs/node/pull/54997) +- \[[`e35299ae62`](https://github.com/nodejs/node/commit/e35299ae62)] - **test**: add runner watch mode isolation tests (Pietro Marchini) [#54888](https://github.com/nodejs/node/pull/54888) +- \[[`2a1607cc2e`](https://github.com/nodejs/node/commit/2a1607cc2e)] - **test**: fix invalid wasm test (Aviv Keller) [#54935](https://github.com/nodejs/node/pull/54935) +- \[[`a6ed2148a0`](https://github.com/nodejs/node/commit/a6ed2148a0)] - **test**: move test-http-max-sockets to parallel (Luigi Pinca) [#54977](https://github.com/nodejs/node/pull/54977) +- \[[`636b3432d3`](https://github.com/nodejs/node/commit/636b3432d3)] - **test**: remove test-http-max-sockets flaky designation (Luigi Pinca) [#54976](https://github.com/nodejs/node/pull/54976) +- \[[`291d90acbc`](https://github.com/nodejs/node/commit/291d90acbc)] - **test**: refactor test-whatwg-webstreams-encoding to be shorter (David Dong) [#54569](https://github.com/nodejs/node/pull/54569) +- \[[`6dfa3e46d3`](https://github.com/nodejs/node/commit/6dfa3e46d3)] - **test**: adjust key sizes to support OpenSSL32 (Michael Dawson) [#54972](https://github.com/nodejs/node/pull/54972) +- \[[`f8b7a17146`](https://github.com/nodejs/node/commit/f8b7a17146)] - **test**: update test to support OpenSSL32 (Michael Dawson) [#54968](https://github.com/nodejs/node/pull/54968) +- \[[`b470e2fcb2`](https://github.com/nodejs/node/commit/b470e2fcb2)] - **test**: update DOM events web platform tests (Matthew Aitken) [#54642](https://github.com/nodejs/node/pull/54642) +- \[[`9cbef482df`](https://github.com/nodejs/node/commit/9cbef482df)] - **test**: update multiple assert tests to use node:test (James M Snell) [#54585](https://github.com/nodejs/node/pull/54585) +- \[[`259163802c`](https://github.com/nodejs/node/commit/259163802c)] - **test**: validate promise-version `setTimeout` behavior with `NaN` (Benjamin Gruenbaum) [#53622](https://github.com/nodejs/node/pull/53622) +- \[[`4174b73153`](https://github.com/nodejs/node/commit/4174b73153)] - **test**: support glob matching coverage files (Aviv Keller) [#53553](https://github.com/nodejs/node/pull/53553) +- \[[`0e187e4a21`](https://github.com/nodejs/node/commit/0e187e4a21)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55029](https://github.com/nodejs/node/pull/55029) +- \[[`ccd4faf4bf`](https://github.com/nodejs/node/commit/ccd4faf4bf)] - _**Revert**_ "**test_runner**: ignore unmapped lines for coverage" (Aviv Keller) [#55339](https://github.com/nodejs/node/pull/55339) +- \[[`3a42085ee4`](https://github.com/nodejs/node/commit/3a42085ee4)] - **test_runner**: ignore unmapped lines for coverage (Edigleysson Silva (Edy)) [#55228](https://github.com/nodejs/node/pull/55228) +- \[[`9a9409ff1f`](https://github.com/nodejs/node/commit/9a9409ff1f)] - **test_runner**: throw on invalid source map (Aviv Keller) [#55055](https://github.com/nodejs/node/pull/55055) +- \[[`980b91a1ef`](https://github.com/nodejs/node/commit/980b91a1ef)] - **test_runner**: assert entry is a valid object (Edigleysson Silva (Edy)) [#55231](https://github.com/nodejs/node/pull/55231) +- \[[`1c7795e52e`](https://github.com/nodejs/node/commit/1c7795e52e)] - **test_runner**: add cwd option to run (Pietro Marchini) [#54705](https://github.com/nodejs/node/pull/54705) +- \[[`103b8439ca`](https://github.com/nodejs/node/commit/103b8439ca)] - **test_runner**: avoid spread operator on arrays (Antoine du Hamel) [#55143](https://github.com/nodejs/node/pull/55143) +- \[[`27dab9d916`](https://github.com/nodejs/node/commit/27dab9d916)] - **test_runner**: support typescript files in default glob (Aviv Keller) [#55081](https://github.com/nodejs/node/pull/55081) +- \[[`e32521a7b9`](https://github.com/nodejs/node/commit/e32521a7b9)] - **test_runner**: close and flush destinations on forced exit (Colin Ihrig) [#55099](https://github.com/nodejs/node/pull/55099) +- \[[`aac8ba7bd7`](https://github.com/nodejs/node/commit/aac8ba7bd7)] - **test_runner**: fix mocking modules with quote in their URL (Antoine du Hamel) [#55083](https://github.com/nodejs/node/pull/55083) +- \[[`4f881790e9`](https://github.com/nodejs/node/commit/4f881790e9)] - **test_runner**: report error on missing sourcemap source (Aviv Keller) [#55037](https://github.com/nodejs/node/pull/55037) +- \[[`b264cbe5e8`](https://github.com/nodejs/node/commit/b264cbe5e8)] - **test_runner**: use `test:` symbol on second print of parent test (RedYetiDev) [#54956](https://github.com/nodejs/node/pull/54956) +- \[[`0c8c107aaa`](https://github.com/nodejs/node/commit/0c8c107aaa)] - **test_runner**: replace ansi clear with ansi reset (Pietro Marchini) [#55013](https://github.com/nodejs/node/pull/55013) +- \[[`bb405210c5`](https://github.com/nodejs/node/commit/bb405210c5)] - **test_runner**: support typescript module mocking (Marco Ippolito) [#54878](https://github.com/nodejs/node/pull/54878) +- \[[`50136a167d`](https://github.com/nodejs/node/commit/50136a167d)] - **test_runner**: avoid coverage report partial file names (Pietro Marchini) [#54379](https://github.com/nodejs/node/pull/54379) +- \[[`4988bb549e`](https://github.com/nodejs/node/commit/4988bb549e)] - **tools**: enforce ordering of error codes in `errors.md` (Antoine du Hamel) [#55324](https://github.com/nodejs/node/pull/55324) +- \[[`5a3da7b4e4`](https://github.com/nodejs/node/commit/5a3da7b4e4)] - **tools**: enforce errors to not be documented in legacy section (Aviv Keller) [#55218](https://github.com/nodejs/node/pull/55218) +- \[[`8dbca2d35b`](https://github.com/nodejs/node/commit/8dbca2d35b)] - **tools**: update gyp-next to 0.18.2 (Node.js GitHub Bot) [#55160](https://github.com/nodejs/node/pull/55160) +- \[[`b2161d3a13`](https://github.com/nodejs/node/commit/b2161d3a13)] - **tools**: bump the eslint group in /tools/eslint with 4 updates (dependabot\[bot]) [#55227](https://github.com/nodejs/node/pull/55227) +- \[[`e7d27320c3`](https://github.com/nodejs/node/commit/e7d27320c3)] - **tools**: only check teams on the default branch (Antoine du Hamel) [#55124](https://github.com/nodejs/node/pull/55124) +- \[[`e8127db032`](https://github.com/nodejs/node/commit/e8127db032)] - **tools**: make `choco install` script more readable (Aviv Keller) [#54002](https://github.com/nodejs/node/pull/54002) +- \[[`779e6bdd5e`](https://github.com/nodejs/node/commit/779e6bdd5e)] - **tools**: bump Rollup from 4.18.1 to 4.22.4 for `lint-md` (dependabot\[bot]) [#55093](https://github.com/nodejs/node/pull/55093) +- \[[`0257102299`](https://github.com/nodejs/node/commit/0257102299)] - **tools**: unlock versions of irrelevant DB deps (Michaël Zasso) [#55042](https://github.com/nodejs/node/pull/55042) +- \[[`f43424ac2d`](https://github.com/nodejs/node/commit/f43424ac2d)] - **tools**: remove redudant code from eslint require rule (Aviv Keller) [#54892](https://github.com/nodejs/node/pull/54892) +- \[[`6a52e81260`](https://github.com/nodejs/node/commit/6a52e81260)] - **tools**: update error message for ICU in license-builder (Aviv Keller) [#54742](https://github.com/nodejs/node/pull/54742) +- \[[`cde6dccb65`](https://github.com/nodejs/node/commit/cde6dccb65)] - **tools**: refactor js2c.cc to use c++20 (Yagiz Nizipli) [#54849](https://github.com/nodejs/node/pull/54849) +- \[[`59c7c55aad`](https://github.com/nodejs/node/commit/59c7c55aad)] - **tools**: bump the eslint group in /tools/eslint with 7 updates (dependabot\[bot]) [#54821](https://github.com/nodejs/node/pull/54821) +- \[[`c6269cb069`](https://github.com/nodejs/node/commit/c6269cb069)] - **tools**: fix path of abseil file in v8.gyp (Michaël Zasso) [#54659](https://github.com/nodejs/node/pull/54659) +- \[[`d17fefcd71`](https://github.com/nodejs/node/commit/d17fefcd71)] - **tools**: update github_reporter to 1.7.1 (Node.js GitHub Bot) [#54951](https://github.com/nodejs/node/pull/54951) +- \[[`29a4fcf918`](https://github.com/nodejs/node/commit/29a4fcf918)] - **tty**: fix links for terminal colors (Aviv Keller) [#54596](https://github.com/nodejs/node/pull/54596) +- \[[`e42ad5e80c`](https://github.com/nodejs/node/commit/e42ad5e80c)] - **util**: update ansi regex (Aviv Keller) [#54865](https://github.com/nodejs/node/pull/54865) +- \[[`b5aae52c71`](https://github.com/nodejs/node/commit/b5aae52c71)] - _**Revert**_ "**util**: move util.\_extend to eol" (Marco Ippolito) [#53429](https://github.com/nodejs/node/pull/53429) +- \[[`deb5effe01`](https://github.com/nodejs/node/commit/deb5effe01)] - **v8**: out of bounds copy (Robert Nagy) [#55261](https://github.com/nodejs/node/pull/55261) +- \[[`3b0617dd19`](https://github.com/nodejs/node/commit/3b0617dd19)] - **vm**: migrate ContextifyScript to cppgc (Joyee Cheung) [#52295](https://github.com/nodejs/node/pull/52295) +- \[[`35b8e5cb0c`](https://github.com/nodejs/node/commit/35b8e5cb0c)] - _**Revert**_ "**vm,src**: add property query interceptors" (Michaël Zasso) [#53348](https://github.com/nodejs/node/pull/53348) +- \[[`d1f18b0bf1`](https://github.com/nodejs/node/commit/d1f18b0bf1)] - **vm,src**: add property query interceptors (Michaël Zasso) [#53172](https://github.com/nodejs/node/pull/53172) +- \[[`89a2f565b7`](https://github.com/nodejs/node/commit/89a2f565b7)] - **watch**: preserve output when gracefully restarted (Théo LUDWIG) [#54323](https://github.com/nodejs/node/pull/54323) +- \[[`6b9413e41a`](https://github.com/nodejs/node/commit/6b9413e41a)] - **worker**: throw InvalidStateError in postMessage after close (devstone) [#55206](https://github.com/nodejs/node/pull/55206) +- \[[`6031a4bc7c`](https://github.com/nodejs/node/commit/6031a4bc7c)] - **worker**: handle `--input-type` more consistently (Antoine du Hamel) [#54979](https://github.com/nodejs/node/pull/54979) +- \[[`5b3f3c5a3b`](https://github.com/nodejs/node/commit/5b3f3c5a3b)] - **zlib**: throw brotli initialization error from c++ (Yagiz Nizipli) [#54698](https://github.com/nodejs/node/pull/54698) +- \[[`c42d8461b0`](https://github.com/nodejs/node/commit/c42d8461b0)] - **zlib**: remove prototype primordials usage (Yagiz Nizipli) [#54695](https://github.com/nodejs/node/pull/54695) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.0.0/node-v23.0.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.0.0/node-v23.0.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.0.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.0.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.0.0/node-v23.0.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.0.0/node-v23.0.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.0.0/node-v23.0.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.0.0/node-v23.0.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.0.0/node-v23.0.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.0.0/node-v23.0.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.0.0/node-v23.0.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.0.0/node-v23.0.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.0.0/node-v23.0.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.0.0/node-v23.0.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.0.0/ \ +Documentation: https://nodejs.org/docs/v23.0.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +1dd33c1cf52d16829283af113e90b5d1e8813ba6c8e1bef3f2808160fa078d93 node-v23.0.0-aix-ppc64.tar.gz +f058272692a954458be42a5a4cfe5234e39471cd9cc459ec4123d34fb437f08d node-v23.0.0-arm64.msi +72ce7905b83f9499b92501675cf76e53b545cb9d0a42dca497fa80c8eb5fbcf9 node-v23.0.0-darwin-arm64.tar.gz +4e8d821e046f2af7712c7f1a0f42be095bb920bc039643cdf1cf3698b7b1ea17 node-v23.0.0-darwin-arm64.tar.xz +13915842f15bc32f76a24f8ea17fd43d650898d12d21c7b676b01d0e00dcb7fd node-v23.0.0-darwin-x64.tar.gz +1c4ae0c9cb11dea40aceb11bd622ce1c2e4f12c076316150f7709dbd016882dc node-v23.0.0-darwin-x64.tar.xz +ac1328fb5d5d1a58b7591a230dc63f46f1d3ec0e10fa371edbef3a67b45f1a58 node-v23.0.0-headers.tar.gz +d83e313738988ad49809c10815ce3d16f52ff374f6781a9014cfa3e80d9b1f9b node-v23.0.0-headers.tar.xz +d908fc167d2242a50394e894d4ba258757a8a12b7bef29bd360f4f55c25acf3f node-v23.0.0-linux-arm64.tar.gz +6140e29a66da2e57b5e561209de8f9c61e560305480d8c739d82f997df20599f node-v23.0.0-linux-arm64.tar.xz +a37a90d903c30d757deaac78bd78e31c7a20b0244fe0f925535dddefb7ca1efc node-v23.0.0-linux-armv7l.tar.gz +3bcc293201769317841128ae5049e0562ea5c29a27d64b65abb02dbad4ecb50e node-v23.0.0-linux-armv7l.tar.xz +4f2ac682752c904cb142e2585ec957a711cdb11f9268c1227863129e3c7c7421 node-v23.0.0-linux-ppc64le.tar.gz +877b54081a5a3e074c8fdae46c5d0bcf03a8cd44ac6c5d70c9df977b4c3ed57e node-v23.0.0-linux-ppc64le.tar.xz +41448aced57e51e91e914849d41a758303c130ae30033fb6352eb6754c5e9df8 node-v23.0.0-linux-s390x.tar.gz +de56f8823dd5a98b440a32ac2491df2427bca21b65d3f2bbfa43761a4635f5fc node-v23.0.0-linux-s390x.tar.xz +702cbc710fcf1102cef1aced74443fee34eff8df4827de30ec970d377ce31d9e node-v23.0.0-linux-x64.tar.gz +705857276700e61f9d141ac05681e4bd666bcd7f5461575fe60d2467d3722a12 node-v23.0.0-linux-x64.tar.xz +d384f7792812fdfdbbcce22da17684a65b21012e9644aec8eac986503723be57 node-v23.0.0-win-arm64.7z +749971643ec19ebedcb15e2fca2c842a3832a964bec3943f2600bf6761275a60 node-v23.0.0-win-arm64.zip +3978724c1ca71e18e0f2791c29ea8429a8586d253f41f503d71539294316c2ea node-v23.0.0-win-x64.7z +d3dfb7e64c314b887832165966adf7f199c8f280ef38e66922e00221c47f182e node-v23.0.0-win-x64.zip +b9323180d10cf565840a5976411cb6b6db5c11702fcebc95a6a5c64c0b0e111c node-v23.0.0-x64.msi +6ee135d9ac5a3116085aaac709aeee80a76f9e09c290cbd7d493257badef3a34 node-v23.0.0.pkg +f686cd4be4994416e099ce23f9fe6ef3983f37c917d8d36963e17e4634a5edd1 node-v23.0.0.tar.gz +79c800b2c97c497bf7de21ac7435dc5f587c7d4735f750056ac6310d43b79eca node-v23.0.0.tar.xz +cf9112e30e5556f0a1253374cceba4801086aa01a7d2fd6ff32ae82d98b1ede3 win-arm64/node.exe +10c78fa0a77d6dc065c381089a17845a81f87fa6547a5b645807e3bd36b0f33f win-arm64/node.lib +b1227da5d51a99f09682016837a14f7ff8020080e8c9d839adca289790cd9f5d win-arm64/node_pdb.7z +b2646fc94045b75fc3f9af59e3538bb61295601ad24e5abe02a5b400cbaf9017 win-arm64/node_pdb.zip +c86aca1f8d5b76c048233c9d90d6aa0d32a35f692bde4f088fdc2f963b4eeb11 win-x64/node.exe +d86a8d40cb8a3c23b1e7f1d5756d719da4c40f9998c5eb106eb9ae92fe00296b win-x64/node.lib +c12dc932caa89d4dc4d8f32688e46cfc4f6a2efd327190c606e9becfc8fb7548 win-x64/node_pdb.7z +b8175d1a32d68fbf396b4ddb43c8091b6437464b7668800eec8555c2888eb2cb win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmcPyJwACgkQi+q0389V +XvTqkgv/dkNgstURAHu/pBghDJjUmS6F6A2pAkb5Pe1+Jq7vAYtcm4KgKwqVSnOi +Yche6DH4fkMwyjUEgTbjKQ023IgZPd0TGs3pHn0qe0NK2qf+11LhTHIaRbPf/E60 +rF7plV5zVzS/TE3SYF+akoxw/TAs0hFBt22g/H0W4YMRmiIidBfoRn+kkb3iWIA3 +Dvk/mQBwXQZ6+1MvkzS4fVxGCASZHKECa9UTHbCsEhV3t5dWqqZYXSyZZGIlOpTU +kQ7n0mXrtK822NCTpGgjPzSZr1U/agwPHs3swuk4Zv95l2MLC2UFYwdh7QD1+xVx +VYC8XCq16zrHDVg6lsHmf3eIKh36YcHPSLtxrYHhWmTd62V3NnhWU2KoKnauRjfb +lP4XbtidWriT3yNQJCgaKgkPYic86QOFHeZqexn/Tqstt88VQCzALEqKfUIXrgoE +nIN3K+aA4awE6baFHEya6xCP6U8fpkWZVdLStWErUYG891YVCpo+0En2N2gYM6kK +6gLUSbl0 +=sluh +-----END PGP SIGNATURE----- +``` From 0b345d80bf4c8c97b95aa28ff3d41c474ca79080 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 16 Oct 2024 17:33:10 +0200 Subject: [PATCH 0078/1385] Blog: add more information about require(esm) in v23 (#7126) * Blog: add more information about require(esm) in v23 * Update apps/site/pages/en/blog/release/v23.0.0.md Co-authored-by: Antoine du Hamel Signed-off-by: Rafael Gonzaga --------- Signed-off-by: Rafael Gonzaga Co-authored-by: Rafael Gonzaga Co-authored-by: Antoine du Hamel --- apps/site/pages/en/blog/release/v23.0.0.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/apps/site/pages/en/blog/release/v23.0.0.md b/apps/site/pages/en/blog/release/v23.0.0.md index a420f351c4870..e17c87c636ae1 100644 --- a/apps/site/pages/en/blog/release/v23.0.0.md +++ b/apps/site/pages/en/blog/release/v23.0.0.md @@ -18,6 +18,16 @@ We’re excited to announce the release of Node.js 23! Key highlights include: Node.js 23 will replace Node.js 22 as the ‘Current’ release line when Node.js 22 enters long-term support (LTS) later this month. According to the release schedule, Node.js 23 will remain the ‘Current’ release for the next six months, until April 2025. +### `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`. In v23.x, this feature is now enabled by default. 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. + +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. We expect to test this feature using v23.x, find out any potential regressions and make adjustments accordingly, before backporting the unflagging to v22.x. This will likely happen in a later semver-minor release after the the LTS promotion at the end of October. + +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 be a ES module namespace object similar to what's returned by `import()`, and can be checked using `util.isModuleNamespaceObject()`. + +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. + ### Other Notable Changes - \[[`7ad0cc3e57`](https://github.com/nodejs/node/commit/7ad0cc3e57)] - **(SEMVER-MAJOR)** **build**: remove support for 32-bit Windows (Michaël Zasso) [#53184](https://github.com/nodejs/node/pull/53184) From 3164cd7f0a6c409f9266d82ae184305593157cdc Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 17 Oct 2024 10:05:00 +0200 Subject: [PATCH 0079/1385] Blog: v22.10.0 release post (#7128) * Blog: v22.10.0 release post Refs: https://github.com/nodejs/node/pull/55343 * Update apps/site/pages/en/blog/release/v22.10.0.md Co-authored-by: Rafael Gonzaga Signed-off-by: Antoine du Hamel --------- Signed-off-by: Antoine du Hamel Co-authored-by: Rafael Gonzaga --- apps/site/pages/en/blog/release/v22.10.0.md | 446 ++++++++++++++++++++ 1 file changed, 446 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v22.10.0.md diff --git a/apps/site/pages/en/blog/release/v22.10.0.md b/apps/site/pages/en/blog/release/v22.10.0.md new file mode 100644 index 0000000000000..03e64b1ebc295 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.10.0.md @@ -0,0 +1,446 @@ +--- +date: '2024-10-16T22:44:34.400Z' +category: release +title: Node v22.10.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2024-10-16, Version 22.10.0 (Current), @aduh95 + +### Notable Changes + +#### New `"module-sync"` exports condition + +This release introduces a `"module-sync"` exports condition that's enabled when +`require(esm)` is enabled, so packages can supply a synchronous ES module to the +Node.js module loader, no matter if it's being required or imported. This is +similar to the `"module"` condition that bundlers have been using to support +`require(esm)` in Node.js, and allows dual-package authors to opt into ESM-first +only on newer versions of Node.js that supports `require(esm)` to avoid the +dual-package hazard. + +```json +{ + "type": "module", + "exports": { + "node": { + // On new version of Node.js, both require() and import get + // the ESM version + "module-sync": "./index.js", + // On older version of Node.js, where "module-sync" and require(esm) are + // not supported, use the CJS version to avoid dual-package hazard. + // When package authors think it's time to drop support for older versions of + // Node.js, they can remove the exports conditions and just use "main": "index.js". + "default": "./dist/index.cjs" + }, + // On any other environment, use the ESM version. + "default": "./index.js" + } +} +``` + +Or if the package is only meant to be run on Node.js and wants to fallback to +CJS on older versions that don't have `require(esm)`: + +```json +{ + "type": "module", + "exports": { + // On new version of Node.js, both require() and import get the ESM version + "module-sync": "./index.js", + // On older version of Node.js, where "module-sync" and require(esm) are + // not supported, use the CJS version to avoid dual-package hazard. + // When package authors think it's time to drop support for older versions of + // Node.js, they can remove the exports conditions and just use "main": "index.js". + "default": "./dist/index.cjs" + } +} +``` + +**For package authors**: this only serves as a feature-detection mechanism for +packages that wish to support both CJS and ESM users during the period when some +active Node.js LTS versions support `require(esm)` while some older ones don't. +When all active Node.js LTS lines support `require(esm)`, packages can simplify +their distributions by bumping the major version, dropping their CJS exports, +and removing the `module-sync` exports condition (with only `main` or `default` +targetting the ESM exports). If the package needs to support both bundlers and +being run unbundled on Node.js during the transition period, use both +`module-sync` and `module` and point them to the same ESM file. If the package +already doesn't want to support older versions of Node.js that doesn't support +`require(esm)`, don't use this export condition. + +**For bundlers/tools**: they should avoid implementing this stop-gap condition. +Most existing bundlers implement the de-facto bundler standard +[`module`](https://webpack.js.org/guides/package-exports/#providing-commonjs-and-esm-version-stateless) +exports condition, and that should be enough to support users who want to bundle +ESM from CJS consumers. Users who want both bundlers and Node.js to recognize +the ESM exports can use both `module`/`module-sync` conditions during the +transition period, and can drop `module-sync`+`module` when they no longer need +to support older versions of Node.js. If tools do want to support this +condition, it's recommended to make the resolution rules in the graph pointed by +this condition match the Node.js native ESM rules to avoid divergence. + +We ended up implementing a condition with a different name instead of reusing +`"module"`, because existing code in the ecosystem using the `"module"` +condition sometimes also expect the module resolution for these ESM files to +work in CJS style, which is supported by bundlers, but the native Node.js loader +has intentionally made ESM resolution different from CJS resolution (e.g. +forbidding `import './noext'` or `import './directory'`), so it would be +breaking to implement a `"module"` condition without implementing the forbidden +ESM resolution rules. For now, this just implements a new condition as +semver-minor so it can be backported to older LTS. + +Contributed by Joyee Cheung in [#54648](https://github.com/nodejs/node/pull/54648). + +#### `node --run` is now stable + +This CLI flag runs a specified command from a `package.json`'s `"scripts"` object. + +For the following `package.json`: + +```json +{ + "scripts": { + "test": "node --test-reporter junit --test ./test" + } +} +``` + +You can run `node --run test` and that would start the test suite. + +Contributed by Yagiz Nizipli in [#53763](https://github.com/nodejs/node/pull/53763). + +#### Other notable changes + +- \[[`f0b441230a`](https://github.com/nodejs/node/commit/f0b441230a)] - **(SEMVER-MINOR)** **crypto**: add `KeyObject.prototype.toCryptoKey` (Filip Skokan) [#55262](https://github.com/nodejs/node/pull/55262) +- \[[`349d2ed07b`](https://github.com/nodejs/node/commit/349d2ed07b)] - **(SEMVER-MINOR)** **crypto**: add Date fields for `validTo` and `validFrom` (Andrew Moon) [#54159](https://github.com/nodejs/node/pull/54159) +- \[[`bebc95ed58`](https://github.com/nodejs/node/commit/bebc95ed58)] - **doc**: add abmusse to collaborators (Abdirahim Musse) [#55086](https://github.com/nodejs/node/pull/55086) +- \[[`914db60159`](https://github.com/nodejs/node/commit/914db60159)] - **(SEMVER-MINOR)** **http2**: expose `nghttp2_option_set_stream_reset_rate_limit` as an option (Maël Nison) [#54875](https://github.com/nodejs/node/pull/54875) +- \[[`f7c3b03759`](https://github.com/nodejs/node/commit/f7c3b03759)] - **(SEMVER-MINOR)** **lib**: propagate aborted state to dependent signals before firing events (jazelly) [#54826](https://github.com/nodejs/node/pull/54826) +- \[[`32261fc98a`](https://github.com/nodejs/node/commit/32261fc98a)] - **(SEMVER-MINOR)** **module**: support loading entrypoint as url (RedYetiDev) [#54933](https://github.com/nodejs/node/pull/54933) +- \[[`06957ff355`](https://github.com/nodejs/node/commit/06957ff355)] - **(SEMVER-MINOR)** **module**: implement `flushCompileCache()` (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`2dcf70c347`](https://github.com/nodejs/node/commit/2dcf70c347)] - **(SEMVER-MINOR)** **module**: throw when invalid argument is passed to `enableCompileCache()` (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`f9b19d7c44`](https://github.com/nodejs/node/commit/f9b19d7c44)] - **(SEMVER-MINOR)** **module**: write compile cache to temporary file and then rename it (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`e95163b170`](https://github.com/nodejs/node/commit/e95163b170)] - **(SEMVER-MINOR)** **process**: add `process.features.require_module` (Joyee Cheung) [#55241](https://github.com/nodejs/node/pull/55241) +- \[[`4050f68e5d`](https://github.com/nodejs/node/commit/4050f68e5d)] - **(SEMVER-MINOR)** **process**: add `process.features.typescript` (Aviv Keller) [#54295](https://github.com/nodejs/node/pull/54295) +- \[[`86f7cb802d`](https://github.com/nodejs/node/commit/86f7cb802d)] - **(SEMVER-MINOR)** **test_runner**: support custom arguments in `run()` (Aviv Keller) [#55126](https://github.com/nodejs/node/pull/55126) +- \[[`b62f2f8259`](https://github.com/nodejs/node/commit/b62f2f8259)] - **(SEMVER-MINOR)** **test_runner**: add `'test:summary'` event (Colin Ihrig) [#54851](https://github.com/nodejs/node/pull/54851) +- \[[`d7c708aec5`](https://github.com/nodejs/node/commit/d7c708aec5)] - **(SEMVER-MINOR)** **test_runner**: add support for coverage via `run()` (Chemi Atlow) [#53937](https://github.com/nodejs/node/pull/53937) +- \[[`5fda4a1498`](https://github.com/nodejs/node/commit/5fda4a1498)] - **(SEMVER-MINOR)** **worker**: add `markAsUncloneable` api (Jason Zhang) [#55234](https://github.com/nodejs/node/pull/55234) + +### Commits + +- \[[`e3619510c8`](https://github.com/nodejs/node/commit/e3619510c8)] - **assert**: show the diff when deep comparing data with a custom message (Giovanni) [#54759](https://github.com/nodejs/node/pull/54759) +- \[[`39c7a9e70c`](https://github.com/nodejs/node/commit/39c7a9e70c)] - **benchmark**: adjust config for deepEqual object (Rafael Gonzaga) [#55254](https://github.com/nodejs/node/pull/55254) +- \[[`263526d5d0`](https://github.com/nodejs/node/commit/263526d5d0)] - **benchmark**: rewrite detect-esm-syntax benchmark (Joyee Cheung) [#55238](https://github.com/nodejs/node/pull/55238) +- \[[`cd0795fb00`](https://github.com/nodejs/node/commit/cd0795fb00)] - **benchmark**: add no-warnings to process.has bench (Rafael Gonzaga) [#55159](https://github.com/nodejs/node/pull/55159) +- \[[`4352d9cc31`](https://github.com/nodejs/node/commit/4352d9cc31)] - **benchmark**: create benchmark for typescript (Marco Ippolito) [#54904](https://github.com/nodejs/node/pull/54904) +- \[[`452bc9b48d`](https://github.com/nodejs/node/commit/452bc9b48d)] - **benchmark**: add webstorage benchmark (jakecastelli) [#55040](https://github.com/nodejs/node/pull/55040) +- \[[`d4d5ba3a9b`](https://github.com/nodejs/node/commit/d4d5ba3a9b)] - **benchmark**: include ascii to fs/readfile (Rafael Gonzaga) [#54988](https://github.com/nodejs/node/pull/54988) +- \[[`23b628db65`](https://github.com/nodejs/node/commit/23b628db65)] - **benchmark**: add dotenv benchmark (Aviv Keller) [#54278](https://github.com/nodejs/node/pull/54278) +- \[[`b1ebb0d8ca`](https://github.com/nodejs/node/commit/b1ebb0d8ca)] - **buffer**: coerce extrema to int in `blob.slice` (Antoine du Hamel) [#55141](https://github.com/nodejs/node/pull/55141) +- \[[`3a6e72483f`](https://github.com/nodejs/node/commit/3a6e72483f)] - **buffer**: extract Blob's .arrayBuffer() & webidl changes (Matthew Aitken) [#53372](https://github.com/nodejs/node/pull/53372) +- \[[`d109f1c4ff`](https://github.com/nodejs/node/commit/d109f1c4ff)] - **buffer**: use simdutf convert_latin1_to_utf8_safe (Robert Nagy) [#54798](https://github.com/nodejs/node/pull/54798) +- \[[`77f8a3f9c2`](https://github.com/nodejs/node/commit/77f8a3f9c2)] - **build**: fix notify-on-review-wanted action (Rafael Gonzaga) [#55304](https://github.com/nodejs/node/pull/55304) +- \[[`0d93b1ed0c`](https://github.com/nodejs/node/commit/0d93b1ed0c)] - **build**: fix not valid json in coverage (jakecastelli) [#55179](https://github.com/nodejs/node/pull/55179) +- \[[`f89664d890`](https://github.com/nodejs/node/commit/f89664d890)] - **build**: include `.nycrc` in coverage workflows (Wuli Zuo) [#55210](https://github.com/nodejs/node/pull/55210) +- \[[`d7a9df6417`](https://github.com/nodejs/node/commit/d7a9df6417)] - **build**: notify via slack when review-wanted (Rafael Gonzaga) [#55102](https://github.com/nodejs/node/pull/55102) +- \[[`68822cc861`](https://github.com/nodejs/node/commit/68822cc861)] - **build**: add more information to Makefile help (Aviv Keller) [#53381](https://github.com/nodejs/node/pull/53381) +- \[[`f3ca9c669b`](https://github.com/nodejs/node/commit/f3ca9c669b)] - **build**: update ruff and add `lint-py-fix` (Aviv Keller) [#54410](https://github.com/nodejs/node/pull/54410) +- \[[`d99ae548d7`](https://github.com/nodejs/node/commit/d99ae548d7)] - **build**: remove -v flag to reduce noise (iwuliz) [#55025](https://github.com/nodejs/node/pull/55025) +- \[[`d3dfbe7ff9`](https://github.com/nodejs/node/commit/d3dfbe7ff9)] - **build**: display free disk space after build in the test-macOS workflow (iwuliz) [#55025](https://github.com/nodejs/node/pull/55025) +- \[[`3077f6a5b7`](https://github.com/nodejs/node/commit/3077f6a5b7)] - **build**: support up to python 3.13 in android-configure (Aviv Keller) [#54529](https://github.com/nodejs/node/pull/54529) +- \[[`a929c71281`](https://github.com/nodejs/node/commit/a929c71281)] - **build**: add the option to generate compile_commands.json in vcbuild.bat (Segev Finer) [#52279](https://github.com/nodejs/node/pull/52279) +- \[[`a81f368b99`](https://github.com/nodejs/node/commit/a81f368b99)] - **build**: fix eslint makefile target (Aviv Keller) [#54999](https://github.com/nodejs/node/pull/54999) +- \[[`c8b7a645ae`](https://github.com/nodejs/node/commit/c8b7a645ae)] - _**Revert**_ "**build**: upgrade clang-format to v18" (Chengzhong Wu) [#54994](https://github.com/nodejs/node/pull/54994) +- \[[`7861ca5dc3`](https://github.com/nodejs/node/commit/7861ca5dc3)] - **build**: print `Running XYZ linter...` for py and yml (Aviv Keller) [#54386](https://github.com/nodejs/node/pull/54386) +- \[[`aaea3944e5`](https://github.com/nodejs/node/commit/aaea3944e5)] - **build,win**: add winget config to set up env (Hüseyin Açacak) [#54729](https://github.com/nodejs/node/pull/54729) +- \[[`30d47220bb`](https://github.com/nodejs/node/commit/30d47220bb)] - **build,win**: float VS 17.11 compilation patch (Stefan Stojanovic) [#54970](https://github.com/nodejs/node/pull/54970) +- \[[`048a1ab350`](https://github.com/nodejs/node/commit/048a1ab350)] - **cli**: ensure --run has proper pwd (Yagiz Nizipli) [#54949](https://github.com/nodejs/node/pull/54949) +- \[[`a97841ee10`](https://github.com/nodejs/node/commit/a97841ee10)] - **cli**: fix spacing for port range error (Aviv Keller) [#54495](https://github.com/nodejs/node/pull/54495) +- \[[`1dcc5eedff`](https://github.com/nodejs/node/commit/1dcc5eedff)] - _**Revert**_ "**console**: colorize console error and warn" (Aviv Keller) [#54677](https://github.com/nodejs/node/pull/54677) +- \[[`f0b441230a`](https://github.com/nodejs/node/commit/f0b441230a)] - **(SEMVER-MINOR)** **crypto**: add KeyObject.prototype.toCryptoKey (Filip Skokan) [#55262](https://github.com/nodejs/node/pull/55262) +- \[[`d3f8c35320`](https://github.com/nodejs/node/commit/d3f8c35320)] - **crypto**: ensure invalid SubtleCrypto JWK data import results in DataError (Filip Skokan) [#55041](https://github.com/nodejs/node/pull/55041) +- \[[`349d2ed07b`](https://github.com/nodejs/node/commit/349d2ed07b)] - **(SEMVER-MINOR)** **crypto**: add Date fields for `validTo` and `validFrom` (Andrew Moon) [#54159](https://github.com/nodejs/node/pull/54159) +- \[[`34ca36a397`](https://github.com/nodejs/node/commit/34ca36a397)] - **deps**: update undici to 6.20.0 (Node.js GitHub Bot) [#55329](https://github.com/nodejs/node/pull/55329) +- \[[`f703652e84`](https://github.com/nodejs/node/commit/f703652e84)] - **deps**: upgrade npm to 10.9.0 (npm team) [#55255](https://github.com/nodejs/node/pull/55255) +- \[[`b533a51856`](https://github.com/nodejs/node/commit/b533a51856)] - **deps**: V8: backport 0d5d6e71bbb0 (Yagiz Nizipli) [#55115](https://github.com/nodejs/node/pull/55115) +- \[[`2f65b3fd07`](https://github.com/nodejs/node/commit/2f65b3fd07)] - **deps**: V8: partially cherry-pick 8953e49478 (Ben Noordhuis) [#55274](https://github.com/nodejs/node/pull/55274) +- \[[`bb9f77d53a`](https://github.com/nodejs/node/commit/bb9f77d53a)] - **deps**: update archs files for openssl-3.0.15+quic1 (Node.js GitHub Bot) [#55184](https://github.com/nodejs/node/pull/55184) +- \[[`63d51c82fe`](https://github.com/nodejs/node/commit/63d51c82fe)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.15+quic1 (Node.js GitHub Bot) [#55184](https://github.com/nodejs/node/pull/55184) +- \[[`29e6484f3c`](https://github.com/nodejs/node/commit/29e6484f3c)] - **deps**: update archs files for openssl-3.0.14+quic1 (Node.js GitHub Bot) [#54336](https://github.com/nodejs/node/pull/54336) +- \[[`283927ec88`](https://github.com/nodejs/node/commit/283927ec88)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.14+quic1 (Node.js GitHub Bot) [#54336](https://github.com/nodejs/node/pull/54336) +- \[[`b0636a1e88`](https://github.com/nodejs/node/commit/b0636a1e88)] - **deps**: update timezone to 2024b (Node.js GitHub Bot) [#55056](https://github.com/nodejs/node/pull/55056) +- \[[`173464d76f`](https://github.com/nodejs/node/commit/173464d76f)] - **deps**: update acorn-walk to 8.3.4 (Node.js GitHub Bot) [#54950](https://github.com/nodejs/node/pull/54950) +- \[[`0d4536543b`](https://github.com/nodejs/node/commit/0d4536543b)] - **deps**: update corepack to 0.29.4 (Node.js GitHub Bot) [#54845](https://github.com/nodejs/node/pull/54845) +- \[[`1de5512383`](https://github.com/nodejs/node/commit/1de5512383)] - **deps**: V8: cherry-pick 217457d0a560 (Michaël Zasso) [#54883](https://github.com/nodejs/node/pull/54883) +- \[[`1921d7a37c`](https://github.com/nodejs/node/commit/1921d7a37c)] - **doc**: add release key for aduh95 (Antoine du Hamel) [#55349](https://github.com/nodejs/node/pull/55349) +- \[[`d8e42be1b2`](https://github.com/nodejs/node/commit/d8e42be1b2)] - **doc**: move `ERR_INVALID_PERFORMANCE_MARK` to legacy errors (Antoine du Hamel) [#55247](https://github.com/nodejs/node/pull/55247) +- \[[`5ea8aa183c`](https://github.com/nodejs/node/commit/5ea8aa183c)] - **doc**: fix Markdown linter (Antoine du Hamel) [#55344](https://github.com/nodejs/node/pull/55344) +- \[[`873588888d`](https://github.com/nodejs/node/commit/873588888d)] - _**Revert**_ "**doc**: update test context.assert" (Antoine du Hamel) [#55344](https://github.com/nodejs/node/pull/55344) +- \[[`707e7cc702`](https://github.com/nodejs/node/commit/707e7cc702)] - **doc**: add pmarchini to collaborators (Pietro Marchini) [#55331](https://github.com/nodejs/node/pull/55331) +- \[[`b03272b9a1`](https://github.com/nodejs/node/commit/b03272b9a1)] - **doc**: fix `events.once()` example using `AbortSignal` (Ivo Janssen) [#55144](https://github.com/nodejs/node/pull/55144) +- \[[`85b765953d`](https://github.com/nodejs/node/commit/85b765953d)] - **doc**: add onboarding details for ambassador program (Marco Ippolito) [#55284](https://github.com/nodejs/node/pull/55284) +- \[[`5d41b8a8b0`](https://github.com/nodejs/node/commit/5d41b8a8b0)] - **doc**: update `require(ESM)` history and stability status (Antoine du Hamel) [#55199](https://github.com/nodejs/node/pull/55199) +- \[[`195df659e9`](https://github.com/nodejs/node/commit/195df659e9)] - **doc**: move `ERR_NAPI_TSFN_START/STOP_IDLE_LOOP` to legacy errors (Antoine du Hamel) [#55248](https://github.com/nodejs/node/pull/55248) +- \[[`8eae0d3f3c`](https://github.com/nodejs/node/commit/8eae0d3f3c)] - **doc**: fix initial default value of autoSelectFamily (Ihor Rohovets) [#55245](https://github.com/nodejs/node/pull/55245) +- \[[`297cb0da5a`](https://github.com/nodejs/node/commit/297cb0da5a)] - **doc**: tweak onboarding instructions (Michael Dawson) [#55212](https://github.com/nodejs/node/pull/55212) +- \[[`7ddbfe8c2b`](https://github.com/nodejs/node/commit/7ddbfe8c2b)] - **doc**: update test context.assert (Pietro Marchini) [#55186](https://github.com/nodejs/node/pull/55186) +- \[[`8a57550d20`](https://github.com/nodejs/node/commit/8a57550d20)] - **doc**: fix unordered error anchors (Antoine du Hamel) [#55242](https://github.com/nodejs/node/pull/55242) +- \[[`286ea4ed3d`](https://github.com/nodejs/node/commit/286ea4ed3d)] - **doc**: mention addons to experimental permission (Rafael Gonzaga) [#55166](https://github.com/nodejs/node/pull/55166) +- \[[`7c9ceabf38`](https://github.com/nodejs/node/commit/7c9ceabf38)] - **doc**: use correct dash in stability status (Antoine du Hamel) [#55200](https://github.com/nodejs/node/pull/55200) +- \[[`781ffd8ba1`](https://github.com/nodejs/node/commit/781ffd8ba1)] - **doc**: fix link in `test/README.md` (Livia Medeiros) [#55165](https://github.com/nodejs/node/pull/55165) +- \[[`61b9ed3bf2`](https://github.com/nodejs/node/commit/61b9ed3bf2)] - **doc**: add esm examples to node:net (Alfredo González) [#55134](https://github.com/nodejs/node/pull/55134) +- \[[`bb3499038d`](https://github.com/nodejs/node/commit/bb3499038d)] - **doc**: remove outdated https import reference (Edigleysson Silva (Edy)) [#55111](https://github.com/nodejs/node/pull/55111) +- \[[`6cc49518c7`](https://github.com/nodejs/node/commit/6cc49518c7)] - **doc**: move the YAML changes element (sendoru) [#55112](https://github.com/nodejs/node/pull/55112) +- \[[`b12b4a23e4`](https://github.com/nodejs/node/commit/b12b4a23e4)] - **doc**: remove random horizontal separators in `process.md` (Antoine du Hamel) [#55149](https://github.com/nodejs/node/pull/55149) +- \[[`7186ede388`](https://github.com/nodejs/node/commit/7186ede388)] - **doc**: put --env-file-if-exists=config right under --env-file=config (Edigleysson Silva (Edy)) [#55131](https://github.com/nodejs/node/pull/55131) +- \[[`8ad0dfff10`](https://github.com/nodejs/node/commit/8ad0dfff10)] - **doc**: fix the require resolve algorithm in `modules.md` (chirsz) [#55117](https://github.com/nodejs/node/pull/55117) +- \[[`fd40f0873f`](https://github.com/nodejs/node/commit/fd40f0873f)] - **doc**: update style guide (Aviv Keller) [#53223](https://github.com/nodejs/node/pull/53223) +- \[[`12c9d9780f`](https://github.com/nodejs/node/commit/12c9d9780f)] - **doc**: add missing `:` to `run()`'s `globPatterns` (Aviv Keller) [#55135](https://github.com/nodejs/node/pull/55135) +- \[[`73b05cfb04`](https://github.com/nodejs/node/commit/73b05cfb04)] - **doc**: correct `cleanup` option in stream.(promises.)finished (René) [#55043](https://github.com/nodejs/node/pull/55043) +- \[[`bebc95ed58`](https://github.com/nodejs/node/commit/bebc95ed58)] - **doc**: add abmusse to collaborators (Abdirahim Musse) [#55086](https://github.com/nodejs/node/pull/55086) +- \[[`a97c80c6ae`](https://github.com/nodejs/node/commit/a97c80c6ae)] - **doc**: add note about `--expose-internals` (Aviv Keller) [#52861](https://github.com/nodejs/node/pull/52861) +- \[[`89aeae63bd`](https://github.com/nodejs/node/commit/89aeae63bd)] - **doc**: remove `parseREPLKeyword` from REPL documentation (Aviv Keller) [#54749](https://github.com/nodejs/node/pull/54749) +- \[[`b3e0490b8b`](https://github.com/nodejs/node/commit/b3e0490b8b)] - **doc**: add missing EventSource docs to globals (Matthew Aitken) [#55022](https://github.com/nodejs/node/pull/55022) +- \[[`516c775fa5`](https://github.com/nodejs/node/commit/516c775fa5)] - **doc**: cover --experimental-test-module-mocks flag (Jonathan Sharpe) [#55021](https://github.com/nodejs/node/pull/55021) +- \[[`4244f1a269`](https://github.com/nodejs/node/commit/4244f1a269)] - **doc**: add more details for localStorage and sessionStorage (Batuhan Tomo) [#53881](https://github.com/nodejs/node/pull/53881) +- \[[`39a728c2e3`](https://github.com/nodejs/node/commit/39a728c2e3)] - **doc**: change backporting guide with updated info (Aviv Keller) [#53746](https://github.com/nodejs/node/pull/53746) +- \[[`3a5fe95ad7`](https://github.com/nodejs/node/commit/3a5fe95ad7)] - **doc**: add missing definitions to `internal-api.md` (Aviv Keller) [#53303](https://github.com/nodejs/node/pull/53303) +- \[[`f2d74a26a3`](https://github.com/nodejs/node/commit/f2d74a26a3)] - **doc**: fix history of `process.features` (Antoine du Hamel) [#54982](https://github.com/nodejs/node/pull/54982) +- \[[`29866ca438`](https://github.com/nodejs/node/commit/29866ca438)] - **doc**: fix typo callsite.lineNumber (Rafael Gonzaga) [#54969](https://github.com/nodejs/node/pull/54969) +- \[[`c1d73abd29`](https://github.com/nodejs/node/commit/c1d73abd29)] - **doc**: update documentation for externalizing deps (Michael Dawson) [#54792](https://github.com/nodejs/node/pull/54792) +- \[[`eca9668231`](https://github.com/nodejs/node/commit/eca9668231)] - **doc**: add documentation for process.features (Marco Ippolito) [#54897](https://github.com/nodejs/node/pull/54897) +- \[[`0fb446e207`](https://github.com/nodejs/node/commit/0fb446e207)] - **esm**: do not interpret `"main"` as a URL (Antoine du Hamel) [#55003](https://github.com/nodejs/node/pull/55003) +- \[[`be2fe4b249`](https://github.com/nodejs/node/commit/be2fe4b249)] - **events**: allow null/undefined eventInitDict (Matthew Aitken) [#54643](https://github.com/nodejs/node/pull/54643) +- \[[`cb47e169a0`](https://github.com/nodejs/node/commit/cb47e169a0)] - **events**: return `currentTarget` when dispatching (Matthew Aitken) [#54642](https://github.com/nodejs/node/pull/54642) +- \[[`dbfae3fe14`](https://github.com/nodejs/node/commit/dbfae3fe14)] - **fs**: acknowledge `signal` option in `filehandle.createReadStream()` (Livia Medeiros) [#55148](https://github.com/nodejs/node/pull/55148) +- \[[`1c94725c07`](https://github.com/nodejs/node/commit/1c94725c07)] - **fs**: check subdir correctly in cpSync (Jason Zhang) [#55033](https://github.com/nodejs/node/pull/55033) +- \[[`79ffefab2a`](https://github.com/nodejs/node/commit/79ffefab2a)] - **fs**: convert to u8 string for filesystem path (Jason Zhang) [#54653](https://github.com/nodejs/node/pull/54653) +- \[[`914db60159`](https://github.com/nodejs/node/commit/914db60159)] - **(SEMVER-MINOR)** **http2**: expose nghttp2_option_set_stream_reset_rate_limit as an option (Maël Nison) [#54875](https://github.com/nodejs/node/pull/54875) +- \[[`08b5e6c794`](https://github.com/nodejs/node/commit/08b5e6c794)] - **lib**: fix module print timing when specifier includes `"` (Antoine du Hamel) [#55150](https://github.com/nodejs/node/pull/55150) +- \[[`bf7d7aef4b`](https://github.com/nodejs/node/commit/bf7d7aef4b)] - **lib**: fix typos (Nathan Baulch) [#55065](https://github.com/nodejs/node/pull/55065) +- \[[`d803355d92`](https://github.com/nodejs/node/commit/d803355d92)] - **lib**: prefer optional chaining (Aviv Keller) [#55045](https://github.com/nodejs/node/pull/55045) +- \[[`d4873bcd6d`](https://github.com/nodejs/node/commit/d4873bcd6d)] - **lib**: remove lib/internal/idna.js (Yagiz Nizipli) [#55050](https://github.com/nodejs/node/pull/55050) +- \[[`f7c3b03759`](https://github.com/nodejs/node/commit/f7c3b03759)] - **(SEMVER-MINOR)** **lib**: propagate aborted state to dependent signals before firing events (jazelly) [#54826](https://github.com/nodejs/node/pull/54826) +- \[[`397ae418db`](https://github.com/nodejs/node/commit/397ae418db)] - **lib**: the REPL should survive deletion of Array.prototype methods (Jordan Harband) [#31457](https://github.com/nodejs/node/pull/31457) +- \[[`566179c9ec`](https://github.com/nodejs/node/commit/566179c9ec)] - **lib, tools**: remove duplicate requires (Aviv Keller) [#54987](https://github.com/nodejs/node/pull/54987) +- \[[`c9a1bbbef2`](https://github.com/nodejs/node/commit/c9a1bbbef2)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#55300](https://github.com/nodejs/node/pull/55300) +- \[[`d7b73bbd1d`](https://github.com/nodejs/node/commit/d7b73bbd1d)] - **meta**: bump mozilla-actions/sccache-action from 0.0.5 to 0.0.6 (dependabot\[bot]) [#55225](https://github.com/nodejs/node/pull/55225) +- \[[`0f4269faa9`](https://github.com/nodejs/node/commit/0f4269faa9)] - **meta**: bump actions/checkout from 4.1.7 to 4.2.0 (dependabot\[bot]) [#55224](https://github.com/nodejs/node/pull/55224) +- \[[`33be1990d8`](https://github.com/nodejs/node/commit/33be1990d8)] - **meta**: bump actions/setup-node from 4.0.3 to 4.0.4 (dependabot\[bot]) [#55223](https://github.com/nodejs/node/pull/55223) +- \[[`f5b4ae5bf8`](https://github.com/nodejs/node/commit/f5b4ae5bf8)] - **meta**: bump peter-evans/create-pull-request from 7.0.1 to 7.0.5 (dependabot\[bot]) [#55219](https://github.com/nodejs/node/pull/55219) +- \[[`1985d9016e`](https://github.com/nodejs/node/commit/1985d9016e)] - **meta**: add mailmap entry for abmusse (Abdirahim Musse) [#55182](https://github.com/nodejs/node/pull/55182) +- \[[`93b215d5e6`](https://github.com/nodejs/node/commit/93b215d5e6)] - **meta**: add more information about nightly releases (Aviv Keller) [#55084](https://github.com/nodejs/node/pull/55084) +- \[[`aeae5973c3`](https://github.com/nodejs/node/commit/aeae5973c3)] - **meta**: add `linux` to OS labels in collaborator guide (Aviv Keller) [#54986](https://github.com/nodejs/node/pull/54986) +- \[[`4fb2c3baa8`](https://github.com/nodejs/node/commit/4fb2c3baa8)] - **meta**: remove never-used workflow trigger (Aviv Keller) [#54983](https://github.com/nodejs/node/pull/54983) +- \[[`e1f36d0da8`](https://github.com/nodejs/node/commit/e1f36d0da8)] - **meta**: remove unneeded ignore rules from ruff (Aviv Keller) [#54360](https://github.com/nodejs/node/pull/54360) +- \[[`ce0d0c1ec8`](https://github.com/nodejs/node/commit/ce0d0c1ec8)] - **meta**: remove `build-windows.yml` (Aviv Keller) [#54662](https://github.com/nodejs/node/pull/54662) +- \[[`ca67c97f33`](https://github.com/nodejs/node/commit/ca67c97f33)] - **meta**: add links to alternative issue trackers (Aviv Keller) [#54401](https://github.com/nodejs/node/pull/54401) +- \[[`6fcac73738`](https://github.com/nodejs/node/commit/6fcac73738)] - **module**: wrap swc error in ERR_INVALID_TYPESCRIPT_SYNTAX (Marco Ippolito) [#55316](https://github.com/nodejs/node/pull/55316) +- \[[`0412ac8bf3`](https://github.com/nodejs/node/commit/0412ac8bf3)] - **module**: add internal type def for `flushCompileCache` (Jacob Smith) [#55226](https://github.com/nodejs/node/pull/55226) +- \[[`32261fc98a`](https://github.com/nodejs/node/commit/32261fc98a)] - **(SEMVER-MINOR)** **module**: support loading entrypoint as url (RedYetiDev) [#54933](https://github.com/nodejs/node/pull/54933) +- \[[`111261e245`](https://github.com/nodejs/node/commit/111261e245)] - **(SEMVER-MINOR)** **module**: implement the "module-sync" exports condition (Joyee Cheung) [#54648](https://github.com/nodejs/node/pull/54648) +- \[[`b6fc9adf5b`](https://github.com/nodejs/node/commit/b6fc9adf5b)] - **module**: remove duplicated import (Aviv Keller) [#54942](https://github.com/nodejs/node/pull/54942) +- \[[`06957ff355`](https://github.com/nodejs/node/commit/06957ff355)] - **(SEMVER-MINOR)** **module**: implement flushCompileCache() (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`2dcf70c347`](https://github.com/nodejs/node/commit/2dcf70c347)] - **(SEMVER-MINOR)** **module**: throw when invalid argument is passed to enableCompileCache() (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`f9b19d7c44`](https://github.com/nodejs/node/commit/f9b19d7c44)] - **(SEMVER-MINOR)** **module**: write compile cache to temporary file and then rename it (Joyee Cheung) [#54971](https://github.com/nodejs/node/pull/54971) +- \[[`1d169764db`](https://github.com/nodejs/node/commit/1d169764db)] - **module**: report unfinished TLA in ambiguous modules (Antoine du Hamel) [#54980](https://github.com/nodejs/node/pull/54980) +- \[[`c89c93496d`](https://github.com/nodejs/node/commit/c89c93496d)] - **module**: refator ESM loader for adding future synchronous hooks (Joyee Cheung) [#54769](https://github.com/nodejs/node/pull/54769) +- \[[`108cef22e6`](https://github.com/nodejs/node/commit/108cef22e6)] - **module**: remove bogus assertion in CJS entrypoint handling with --import (Joyee Cheung) [#54592](https://github.com/nodejs/node/pull/54592) +- \[[`67ecb10c78`](https://github.com/nodejs/node/commit/67ecb10c78)] - **module**: fix discrepancy between .ts and .js (Marco Ippolito) [#54461](https://github.com/nodejs/node/pull/54461) +- \[[`3300d5990f`](https://github.com/nodejs/node/commit/3300d5990f)] - **os**: use const with early return for path (Trivikram Kamat) [#54959](https://github.com/nodejs/node/pull/54959) +- \[[`90cce6ec7c`](https://github.com/nodejs/node/commit/90cce6ec7c)] - **path**: remove repetitive conditional operator in `posix.resolve` (Wiyeong Seo) [#54835](https://github.com/nodejs/node/pull/54835) +- \[[`cbfc980f89`](https://github.com/nodejs/node/commit/cbfc980f89)] - **perf_hooks**: add missing type argument to getEntriesByName (Luke Taher) [#54767](https://github.com/nodejs/node/pull/54767) +- \[[`e95163b170`](https://github.com/nodejs/node/commit/e95163b170)] - **(SEMVER-MINOR)** **process**: add process.features.require_module (Joyee Cheung) [#55241](https://github.com/nodejs/node/pull/55241) +- \[[`0655d3a384`](https://github.com/nodejs/node/commit/0655d3a384)] - **process**: fix `process.features.typescript` when Amaro is unavailable (Antoine du Hamel) [#55323](https://github.com/nodejs/node/pull/55323) +- \[[`4050f68e5d`](https://github.com/nodejs/node/commit/4050f68e5d)] - **(SEMVER-MINOR)** **process**: add `process.features.typescript` (Aviv Keller) [#54295](https://github.com/nodejs/node/pull/54295) +- \[[`75073c50ae`](https://github.com/nodejs/node/commit/75073c50ae)] - **quic**: start adding in the internal quic js api (James M Snell) [#53256](https://github.com/nodejs/node/pull/53256) +- \[[`538b1eb5b0`](https://github.com/nodejs/node/commit/538b1eb5b0)] - **repl**: catch `\v` and `\r` in new-line detection (Aviv Keller) [#54512](https://github.com/nodejs/node/pull/54512) +- \[[`57a9d3f15e`](https://github.com/nodejs/node/commit/57a9d3f15e)] - **sqlite**: disable DQS misfeature by default (Tobias Nießen) [#55297](https://github.com/nodejs/node/pull/55297) +- \[[`c126543374`](https://github.com/nodejs/node/commit/c126543374)] - **sqlite**: make sourceSQL and expandedSQL string-valued properties (Tobias Nießen) [#54721](https://github.com/nodejs/node/pull/54721) +- \[[`67f5f46c56`](https://github.com/nodejs/node/commit/67f5f46c56)] - **sqlite**: enable foreign key constraints by default (Tobias Nießen) [#54777](https://github.com/nodejs/node/pull/54777) +- \[[`09999491bf`](https://github.com/nodejs/node/commit/09999491bf)] - **src**: handle errors correctly in webstorage (Michaël Zasso) [#54544](https://github.com/nodejs/node/pull/54544) +- \[[`295c17c4ea`](https://github.com/nodejs/node/commit/295c17c4ea)] - **src**: make minor tweaks to quic c++ for c++20 (James M Snell) [#53256](https://github.com/nodejs/node/pull/53256) +- \[[`b1d47d06f9`](https://github.com/nodejs/node/commit/b1d47d06f9)] - **src**: apply getCallSite optimization (RafaelGSS) [#55174](https://github.com/nodejs/node/pull/55174) +- \[[`d6bcc44829`](https://github.com/nodejs/node/commit/d6bcc44829)] - **src**: modernize likely/unlikely hints (Yagiz Nizipli) [#55155](https://github.com/nodejs/node/pull/55155) +- \[[`1af5ad61ca`](https://github.com/nodejs/node/commit/1af5ad61ca)] - **src**: fixup Error.stackTraceLimit during snapshot building (Joyee Cheung) [#55121](https://github.com/nodejs/node/pull/55121) +- \[[`b229083235`](https://github.com/nodejs/node/commit/b229083235)] - **src**: parse --stack-trace-limit and use it in --trace-\* flags (Joyee Cheung) [#55121](https://github.com/nodejs/node/pull/55121) +- \[[`942ad54e08`](https://github.com/nodejs/node/commit/942ad54e08)] - **src**: move more key handling to ncrypto (James M Snell) [#55108](https://github.com/nodejs/node/pull/55108) +- \[[`0bb5584288`](https://github.com/nodejs/node/commit/0bb5584288)] - **src**: add receiver to fast api callback methods (Carlos Espa) [#54408](https://github.com/nodejs/node/pull/54408) +- \[[`706e9611f0`](https://github.com/nodejs/node/commit/706e9611f0)] - **src**: fix typos (Nathan Baulch) [#55064](https://github.com/nodejs/node/pull/55064) +- \[[`a96d5d1bcc`](https://github.com/nodejs/node/commit/a96d5d1bcc)] - **src**: move more stuff over to use Maybe\ (James M Snell) [#54831](https://github.com/nodejs/node/pull/54831) +- \[[`ee0a98b5a2`](https://github.com/nodejs/node/commit/ee0a98b5a2)] - **src**: decode native error messages as UTF-8 (Joyee Cheung) [#55024](https://github.com/nodejs/node/pull/55024) +- \[[`1fc8edecf8`](https://github.com/nodejs/node/commit/1fc8edecf8)] - **src**: update clang-tidy and focus on modernization (Yagiz Nizipli) [#53757](https://github.com/nodejs/node/pull/53757) +- \[[`3a1485a1a3`](https://github.com/nodejs/node/commit/3a1485a1a3)] - **src**: move evp stuff to ncrypto (James M Snell) [#54911](https://github.com/nodejs/node/pull/54911) +- \[[`9ae80e1e4d`](https://github.com/nodejs/node/commit/9ae80e1e4d)] - **src**: revert filesystem::path changes (Yagiz Nizipli) [#55015](https://github.com/nodejs/node/pull/55015) +- \[[`465d05018a`](https://github.com/nodejs/node/commit/465d05018a)] - **src**: mark node --run as stable (Yagiz Nizipli) [#53763](https://github.com/nodejs/node/pull/53763) +- \[[`ef546c872c`](https://github.com/nodejs/node/commit/ef546c872c)] - **src**: cleanup per env handles directly without a list (Chengzhong Wu) [#54993](https://github.com/nodejs/node/pull/54993) +- \[[`0876f78411`](https://github.com/nodejs/node/commit/0876f78411)] - **src**: add unistd.h import if node posix credentials is defined (Jonas) [#54528](https://github.com/nodejs/node/pull/54528) +- \[[`284db53866`](https://github.com/nodejs/node/commit/284db53866)] - **src**: remove duplicate code setting AF_INET (He Yang) [#54939](https://github.com/nodejs/node/pull/54939) +- \[[`f332c4c4fc`](https://github.com/nodejs/node/commit/f332c4c4fc)] - **src**: use `Maybe` where bool isn't needed (Michaël Zasso) [#54575](https://github.com/nodejs/node/pull/54575) +- \[[`c7ed2ff920`](https://github.com/nodejs/node/commit/c7ed2ff920)] - **stream**: handle undefined chunks correctly in decode stream (devstone) [#55153](https://github.com/nodejs/node/pull/55153) +- \[[`a9675a0cbc`](https://github.com/nodejs/node/commit/a9675a0cbc)] - **stream**: treat null asyncIterator as undefined (Jason Zhang) [#55119](https://github.com/nodejs/node/pull/55119) +- \[[`bf69ae1406`](https://github.com/nodejs/node/commit/bf69ae1406)] - **stream**: set stream prototype to closest transferable superclass (Jason Zhang) [#55067](https://github.com/nodejs/node/pull/55067) +- \[[`3273707a3a`](https://github.com/nodejs/node/commit/3273707a3a)] - **test**: fix tests when Amaro is unavailable (Richard Lau) [#55320](https://github.com/nodejs/node/pull/55320) +- \[[`ff3cc3b2ab`](https://github.com/nodejs/node/commit/ff3cc3b2ab)] - **test**: use more informative errors in `test-runner-cli` (Antoine du Hamel) [#55321](https://github.com/nodejs/node/pull/55321) +- \[[`17d2f9de6d`](https://github.com/nodejs/node/commit/17d2f9de6d)] - **test**: make `test-loaders-workers-spawned` less flaky (Antoine du Hamel) [#55172](https://github.com/nodejs/node/pull/55172) +- \[[`1b1104e69b`](https://github.com/nodejs/node/commit/1b1104e69b)] - **test**: add resource to internal module stat test (RafaelGSS) [#55157](https://github.com/nodejs/node/pull/55157) +- \[[`b36f8c2146`](https://github.com/nodejs/node/commit/b36f8c2146)] - **test**: update multiple assert tests to use node:test (James M Snell) [#54585](https://github.com/nodejs/node/pull/54585) +- \[[`1b30f7fdd6`](https://github.com/nodejs/node/commit/1b30f7fdd6)] - **test**: move coverage source map tests to new file (Aviv Keller) [#55123](https://github.com/nodejs/node/pull/55123) +- \[[`ce67e7b5b3`](https://github.com/nodejs/node/commit/ce67e7b5b3)] - **test**: adding more tests for strip-types (Kevin Toshihiro Uehara) [#54929](https://github.com/nodejs/node/pull/54929) +- \[[`a57c8ba3ef`](https://github.com/nodejs/node/commit/a57c8ba3ef)] - **test**: update wpt test for encoding (devstone) [#55151](https://github.com/nodejs/node/pull/55151) +- \[[`65fbe94d45`](https://github.com/nodejs/node/commit/65fbe94d45)] - **test**: add `escapePOSIXShell` util (Antoine du Hamel) [#55125](https://github.com/nodejs/node/pull/55125) +- \[[`cc8838252e`](https://github.com/nodejs/node/commit/cc8838252e)] - **test**: remove unnecessary `await` in test-watch-mode (Wuli) [#55142](https://github.com/nodejs/node/pull/55142) +- \[[`9aeba48bf0`](https://github.com/nodejs/node/commit/9aeba48bf0)] - **test**: fix typos (Nathan Baulch) [#55063](https://github.com/nodejs/node/pull/55063) +- \[[`0999b5e493`](https://github.com/nodejs/node/commit/0999b5e493)] - **test**: remove duplicated test descriptions (Christos Koutsiaris) [#54140](https://github.com/nodejs/node/pull/54140) +- \[[`e99d4a4cb8`](https://github.com/nodejs/node/commit/e99d4a4cb8)] - **test**: deflake test/pummel/test-timers.js (jakecastelli) [#55098](https://github.com/nodejs/node/pull/55098) +- \[[`fb8470afd7`](https://github.com/nodejs/node/commit/fb8470afd7)] - **test**: deflake test-http-remove-header-stays-removed (Luigi Pinca) [#55004](https://github.com/nodejs/node/pull/55004) +- \[[`e879c5edf2`](https://github.com/nodejs/node/commit/e879c5edf2)] - **test**: fix test-tls-junk-closes-server (Michael Dawson) [#55089](https://github.com/nodejs/node/pull/55089) +- \[[`b885f0583c`](https://github.com/nodejs/node/commit/b885f0583c)] - **test**: fix more tests that fail when path contains a space (Antoine du Hamel) [#55088](https://github.com/nodejs/node/pull/55088) +- \[[`85f1187942`](https://github.com/nodejs/node/commit/85f1187942)] - **test**: fix `assertSnapshot` when path contains a quote (Antoine du Hamel) [#55087](https://github.com/nodejs/node/pull/55087) +- \[[`fdae57f1e1`](https://github.com/nodejs/node/commit/fdae57f1e1)] - **test**: fix some tests when path contains `%` (Antoine du Hamel) [#55082](https://github.com/nodejs/node/pull/55082) +- \[[`36c9ea8912`](https://github.com/nodejs/node/commit/36c9ea8912)] - _**Revert**_ "**test**: mark test-fs-watch-non-recursive flaky on Windows" (Luigi Pinca) [#55079](https://github.com/nodejs/node/pull/55079) +- \[[`80da5993cc`](https://github.com/nodejs/node/commit/80da5993cc)] - **test**: remove interval and give more time to unsync (Pietro Marchini) [#55006](https://github.com/nodejs/node/pull/55006) +- \[[`93c23e74b3`](https://github.com/nodejs/node/commit/93c23e74b3)] - **test**: deflake test-inspector-strip-types (Luigi Pinca) [#55058](https://github.com/nodejs/node/pull/55058) +- \[[`43bbca2c08`](https://github.com/nodejs/node/commit/43bbca2c08)] - **test**: make `test-runner-assert` more robust (Aviv Keller) [#55036](https://github.com/nodejs/node/pull/55036) +- \[[`268f1ec08f`](https://github.com/nodejs/node/commit/268f1ec08f)] - **test**: update tls test to support OpenSSL32 (Michael Dawson) [#55030](https://github.com/nodejs/node/pull/55030) +- \[[`a50dd21423`](https://github.com/nodejs/node/commit/a50dd21423)] - **test**: do not assume `process.execPath` contains no spaces (Antoine du Hamel) [#55028](https://github.com/nodejs/node/pull/55028) +- \[[`c56e324cb8`](https://github.com/nodejs/node/commit/c56e324cb8)] - **test**: fix `test-vm-context-dont-contextify` when path contains a space (Antoine du Hamel) [#55026](https://github.com/nodejs/node/pull/55026) +- \[[`6d42e44264`](https://github.com/nodejs/node/commit/6d42e44264)] - **test**: adjust tls-set-ciphers for OpenSSL32 (Michael Dawson) [#55016](https://github.com/nodejs/node/pull/55016) +- \[[`22e601a76c`](https://github.com/nodejs/node/commit/22e601a76c)] - **test**: add `util.stripVTControlCharacters` test (RedYetiDev) [#54865](https://github.com/nodejs/node/pull/54865) +- \[[`a6796696d7`](https://github.com/nodejs/node/commit/a6796696d7)] - **test**: improve coverage for timer promises schedular (Aviv Keller) [#53370](https://github.com/nodejs/node/pull/53370) +- \[[`9506f77b3e`](https://github.com/nodejs/node/commit/9506f77b3e)] - **test**: remove `getCallSite` from common (RedYetiDev) [#54947](https://github.com/nodejs/node/pull/54947) +- \[[`20d3a806ea`](https://github.com/nodejs/node/commit/20d3a806ea)] - **test**: remove unused common utilities (RedYetiDev) [#54825](https://github.com/nodejs/node/pull/54825) +- \[[`341b6d9b94`](https://github.com/nodejs/node/commit/341b6d9b94)] - **test**: deflake test-http-header-overflow (Luigi Pinca) [#54978](https://github.com/nodejs/node/pull/54978) +- \[[`1e53c10853`](https://github.com/nodejs/node/commit/1e53c10853)] - **test**: fix `soucre` to `source` (Aviv Keller) [#55038](https://github.com/nodejs/node/pull/55038) +- \[[`6843ca7e0d`](https://github.com/nodejs/node/commit/6843ca7e0d)] - **test**: add asserts to validate test assumptions (Michael Dawson) [#54997](https://github.com/nodejs/node/pull/54997) +- \[[`98ff615c5e`](https://github.com/nodejs/node/commit/98ff615c5e)] - **test**: add runner watch mode isolation tests (Pietro Marchini) [#54888](https://github.com/nodejs/node/pull/54888) +- \[[`327a8f7b59`](https://github.com/nodejs/node/commit/327a8f7b59)] - **test**: fix invalid wasm test (Aviv Keller) [#54935](https://github.com/nodejs/node/pull/54935) +- \[[`5b012f544c`](https://github.com/nodejs/node/commit/5b012f544c)] - **test**: move test-http-max-sockets to parallel (Luigi Pinca) [#54977](https://github.com/nodejs/node/pull/54977) +- \[[`22b413910e`](https://github.com/nodejs/node/commit/22b413910e)] - **test**: remove test-http-max-sockets flaky designation (Luigi Pinca) [#54976](https://github.com/nodejs/node/pull/54976) +- \[[`62b8640550`](https://github.com/nodejs/node/commit/62b8640550)] - **test**: refactor test-whatwg-webstreams-encoding to be shorter (David Dong) [#54569](https://github.com/nodejs/node/pull/54569) +- \[[`1f11d68173`](https://github.com/nodejs/node/commit/1f11d68173)] - **test**: adjust key sizes to support OpenSSL32 (Michael Dawson) [#54972](https://github.com/nodejs/node/pull/54972) +- \[[`90a87ca8f7`](https://github.com/nodejs/node/commit/90a87ca8f7)] - **test**: update test to support OpenSSL32 (Michael Dawson) [#54968](https://github.com/nodejs/node/pull/54968) +- \[[`9b7834536a`](https://github.com/nodejs/node/commit/9b7834536a)] - **test**: update DOM events web platform tests (Matthew Aitken) [#54642](https://github.com/nodejs/node/pull/54642) +- \[[`1c001550a2`](https://github.com/nodejs/node/commit/1c001550a2)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55029](https://github.com/nodejs/node/pull/55029) +- \[[`800f7c44ed`](https://github.com/nodejs/node/commit/800f7c44ed)] - **test_runner**: throw on invalid source map (Aviv Keller) [#55055](https://github.com/nodejs/node/pull/55055) +- \[[`0f7e3f017f`](https://github.com/nodejs/node/commit/0f7e3f017f)] - **test_runner**: assert entry is a valid object (Edigleysson Silva (Edy)) [#55231](https://github.com/nodejs/node/pull/55231) +- \[[`c308862d2e`](https://github.com/nodejs/node/commit/c308862d2e)] - **test_runner**: avoid spread operator on arrays (Antoine du Hamel) [#55143](https://github.com/nodejs/node/pull/55143) +- \[[`12401972b7`](https://github.com/nodejs/node/commit/12401972b7)] - **test_runner**: support typescript files in default glob (Aviv Keller) [#55081](https://github.com/nodejs/node/pull/55081) +- \[[`19cfa3140f`](https://github.com/nodejs/node/commit/19cfa3140f)] - **test_runner**: close and flush destinations on forced exit (Colin Ihrig) [#55099](https://github.com/nodejs/node/pull/55099) +- \[[`86f7cb802d`](https://github.com/nodejs/node/commit/86f7cb802d)] - **(SEMVER-MINOR)** **test_runner**: support custom arguments in `run()` (Aviv Keller) [#55126](https://github.com/nodejs/node/pull/55126) +- \[[`7eaeba499a`](https://github.com/nodejs/node/commit/7eaeba499a)] - **test_runner**: fix mocking modules with quote in their URL (Antoine du Hamel) [#55083](https://github.com/nodejs/node/pull/55083) +- \[[`8818c6c88a`](https://github.com/nodejs/node/commit/8818c6c88a)] - **test_runner**: report error on missing sourcemap source (Aviv Keller) [#55037](https://github.com/nodejs/node/pull/55037) +- \[[`b62f2f8259`](https://github.com/nodejs/node/commit/b62f2f8259)] - **(SEMVER-MINOR)** **test_runner**: add 'test:summary' event (Colin Ihrig) [#54851](https://github.com/nodejs/node/pull/54851) +- \[[`449dad0db0`](https://github.com/nodejs/node/commit/449dad0db0)] - **test_runner**: use `test:` symbol on second print of parent test (RedYetiDev) [#54956](https://github.com/nodejs/node/pull/54956) +- \[[`4b962a78c7`](https://github.com/nodejs/node/commit/4b962a78c7)] - **test_runner**: replace ansi clear with ansi reset (Pietro Marchini) [#55013](https://github.com/nodejs/node/pull/55013) +- \[[`d7c708aec5`](https://github.com/nodejs/node/commit/d7c708aec5)] - **(SEMVER-MINOR)** **test_runner**: add support for coverage via run() (Chemi Atlow) [#53937](https://github.com/nodejs/node/pull/53937) +- \[[`93c6c90219`](https://github.com/nodejs/node/commit/93c6c90219)] - **test_runner**: support typescript module mocking (Marco Ippolito) [#54878](https://github.com/nodejs/node/pull/54878) +- \[[`1daec9a63f`](https://github.com/nodejs/node/commit/1daec9a63f)] - **test_runner**: avoid coverage report partial file names (Pietro Marchini) [#54379](https://github.com/nodejs/node/pull/54379) +- \[[`d51e5a8667`](https://github.com/nodejs/node/commit/d51e5a8667)] - **tools**: enforce errors to not be documented in legacy section (Aviv Keller) [#55218](https://github.com/nodejs/node/pull/55218) +- \[[`6a7d201b80`](https://github.com/nodejs/node/commit/6a7d201b80)] - **tools**: update gyp-next to 0.18.2 (Node.js GitHub Bot) [#55160](https://github.com/nodejs/node/pull/55160) +- \[[`c988e7e2e5`](https://github.com/nodejs/node/commit/c988e7e2e5)] - **tools**: bump the eslint group in /tools/eslint with 4 updates (dependabot\[bot]) [#55227](https://github.com/nodejs/node/pull/55227) +- \[[`7982d3d4ed`](https://github.com/nodejs/node/commit/7982d3d4ed)] - **tools**: only check teams on the default branch (Antoine du Hamel) [#55124](https://github.com/nodejs/node/pull/55124) +- \[[`60a35eddb0`](https://github.com/nodejs/node/commit/60a35eddb0)] - **tools**: make `choco install` script more readable (Aviv Keller) [#54002](https://github.com/nodejs/node/pull/54002) +- \[[`b7b1fa6dd3`](https://github.com/nodejs/node/commit/b7b1fa6dd3)] - **tools**: bump Rollup from 4.18.1 to 4.22.4 for `lint-md` (dependabot\[bot]) [#55093](https://github.com/nodejs/node/pull/55093) +- \[[`3304bf387f`](https://github.com/nodejs/node/commit/3304bf387f)] - **tools**: unlock versions of irrelevant DB deps (Michaël Zasso) [#55042](https://github.com/nodejs/node/pull/55042) +- \[[`65c376a819`](https://github.com/nodejs/node/commit/65c376a819)] - **tools**: remove redudant code from eslint require rule (Aviv Keller) [#54892](https://github.com/nodejs/node/pull/54892) +- \[[`295f684b69`](https://github.com/nodejs/node/commit/295f684b69)] - **tools**: update error message for ICU in license-builder (Aviv Keller) [#54742](https://github.com/nodejs/node/pull/54742) +- \[[`ce4b6e403d`](https://github.com/nodejs/node/commit/ce4b6e403d)] - **tools**: refactor js2c.cc to use c++20 (Yagiz Nizipli) [#54849](https://github.com/nodejs/node/pull/54849) +- \[[`31f0ef6ea3`](https://github.com/nodejs/node/commit/31f0ef6ea3)] - **tools**: bump the eslint group in /tools/eslint with 7 updates (dependabot\[bot]) [#54821](https://github.com/nodejs/node/pull/54821) +- \[[`676d0a09a0`](https://github.com/nodejs/node/commit/676d0a09a0)] - **tools**: update github_reporter to 1.7.1 (Node.js GitHub Bot) [#54951](https://github.com/nodejs/node/pull/54951) +- \[[`0f01f38aea`](https://github.com/nodejs/node/commit/0f01f38aea)] - **tty**: fix links for terminal colors (Aviv Keller) [#54596](https://github.com/nodejs/node/pull/54596) +- \[[`d264639f5f`](https://github.com/nodejs/node/commit/d264639f5f)] - **util**: update ansi regex (Aviv Keller) [#54865](https://github.com/nodejs/node/pull/54865) +- \[[`ea7aaf37bf`](https://github.com/nodejs/node/commit/ea7aaf37bf)] - **v8**: out of bounds copy (Robert Nagy) [#55261](https://github.com/nodejs/node/pull/55261) +- \[[`fa695facf5`](https://github.com/nodejs/node/commit/fa695facf5)] - **watch**: preserve output when gracefully restarted (Théo LUDWIG) [#54323](https://github.com/nodejs/node/pull/54323) +- \[[`5fda4a1498`](https://github.com/nodejs/node/commit/5fda4a1498)] - **(SEMVER-MINOR)** **worker**: add `markAsUncloneable` api (Jason Zhang) [#55234](https://github.com/nodejs/node/pull/55234) +- \[[`d65334c454`](https://github.com/nodejs/node/commit/d65334c454)] - **worker**: throw InvalidStateError in postMessage after close (devstone) [#55206](https://github.com/nodejs/node/pull/55206) +- \[[`fc90d7c63a`](https://github.com/nodejs/node/commit/fc90d7c63a)] - **worker**: handle `--input-type` more consistently (Antoine du Hamel) [#54979](https://github.com/nodejs/node/pull/54979) +- \[[`a9fa2da870`](https://github.com/nodejs/node/commit/a9fa2da870)] - **zlib**: throw brotli initialization error from c++ (Yagiz Nizipli) [#54698](https://github.com/nodejs/node/pull/54698) +- \[[`9abd1c7288`](https://github.com/nodejs/node/commit/9abd1c7288)] - **zlib**: remove prototype primordials usage (Yagiz Nizipli) [#54695](https://github.com/nodejs/node/pull/54695) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.10.0/node-v22.10.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.10.0/node-v22.10.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.10.0/node-v22.10.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.10.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.10.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.10.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.10.0/node-v22.10.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.10.0/node-v22.10.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.10.0/node-v22.10.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.10.0/node-v22.10.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.10.0/node-v22.10.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.10.0/node-v22.10.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.10.0/node-v22.10.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.10.0/node-v22.10.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.10.0/node-v22.10.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.10.0/node-v22.10.0.tar.gz \ +Other release files: https://nodejs.org/dist/v22.10.0/ \ +Documentation: https://nodejs.org/docs/v22.10.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +9fe24a08564eca8ce7e6ea3dfa58bc91ec5512f194e6871a388254c3ebe4f0a4 node-v22.10.0-aix-ppc64.tar.gz +fa56d6db05ce3909025d75fac8cf32a054c4a74291b4748fae544d4ff935c25e node-v22.10.0-arm64.msi +75e5b78d59187ca936e67f0b88a6db913f4ab8bb83a27a1d0a34f98089cb4f77 node-v22.10.0-darwin-arm64.tar.gz +1e075186b54bac99434c5a41f5bf526e9729c8010dc05cb0da426fb0d5b97170 node-v22.10.0-darwin-arm64.tar.xz +f8d4a064d3edd49900187e301424a7d7d30f75b60f618811d2aad80b665b42d5 node-v22.10.0-darwin-x64.tar.gz +a50a35778fd57ddd90eb1ecbf56ea3a640d932c7d31a0bc2bb164df34f889156 node-v22.10.0-darwin-x64.tar.xz +8e82810f179f82016f75e6259a6d53b26674268cb074c544780ec3819157d1d0 node-v22.10.0-headers.tar.gz +f588b2f9fade83d56cd9965d52ae91b32de0f35393c8e889a52870746940b3b6 node-v22.10.0-headers.tar.xz +17abee3dfe6ffcda95cab08bb5f43de7f88d04e9607c517e701c6e623358dc7c node-v22.10.0-linux-arm64.tar.gz +53f51efe5bf4cd6b7745e910d9a33216b6be5a89b107226862f4a6f27aab84fd node-v22.10.0-linux-arm64.tar.xz +cd0bd2cd4098db1dde29314a60287661484e18df708ac94532e5a34f99eb6fd4 node-v22.10.0-linux-armv7l.tar.gz +cea813eba9b5d43911414c9df03119c47e53c3f303c42bd5f2960aedfcf7df10 node-v22.10.0-linux-armv7l.tar.xz +52fb8ae36061e64d39499be50a1193fc1f10fa667b4211b651576db65b5558da node-v22.10.0-linux-ppc64le.tar.gz +7a83a0f9a674fe0c4b0405d4ba704bafe339fc520873b9260d752436bf1f268e node-v22.10.0-linux-ppc64le.tar.xz +6e976e9278f66e654f208fdca1bae80f49705f51ab4c47ef1acb5bd59b16e640 node-v22.10.0-linux-s390x.tar.gz +caad0bef82f163be6c8d19a6d79bb7a443b3676266fa67bb0325cbc61a1df136 node-v22.10.0-linux-s390x.tar.xz +674fef1891cc9927b5dc2b0ee2399b77f6621e6b3157f563a9e9491ad3db107b node-v22.10.0-linux-x64.tar.gz +406791658a8bce3bc21fab786f45877adad391ea20badc87e1d65c7478b75062 node-v22.10.0-linux-x64.tar.xz +afc49ad90023d7809e7ed0d6b86167e476c21e6482c202e71b49a369302bcedf node-v22.10.0-win-arm64.7z +2a9ffdc69df610821b5fb8b7e19cb0c627a2576c0af5b327ba2cdf9149db4f96 node-v22.10.0-win-arm64.zip +c5105910002a7cf89eaacc27fb85cb2f8551c0f7797ac52118f2398210d6135e node-v22.10.0-win-x64.7z +d68dce8f7a73305a496e719485ca6647387d9410cb7eb5933b5d9b4afc5593bd node-v22.10.0-win-x64.zip +b0149ff0fa094cc765c2e373b1010776bab18a2eac6a7d3800e0599f11da1aa3 node-v22.10.0-win-x86.7z +dff73b6fd3545addabafd453b61ca5d50d2454d05d53a6094bcc428a0aa22de3 node-v22.10.0-win-x86.zip +9d8fad0dc2da2c57e6fdf38fc85a23dc5ebcd5c414d8dd2948b3c45bd2398895 node-v22.10.0-x64.msi +daca38d494c4d6d023ea0cc4d5f7974173256b80a5e485bf7fcaace62c36df85 node-v22.10.0-x86.msi +af7ec12e66beae77b8f4090e7560d53f953ace17af0c6fc658a8453221de2f85 node-v22.10.0.pkg +42e4ab4ce34383488185cef6f06f8d1267bf91ebc5c6596fc3786efb0f8b5aaa node-v22.10.0.tar.gz +3180710d3130ad9df01466abf010e408d41b374be54301d1480d10eca73558e0 node-v22.10.0.tar.xz +d4f4462472ae44f6b804d729bc6e09fbecdb95994be8af35584297b637cd8af1 win-arm64/node.exe +ad65afe5b192644fec9d599c77f0e38a8421d0d7ad2389679882a288c8df444b win-arm64/node.lib +5cb82d77cebf4c82acb9123827d1ada295dce4907bd9f75966f989e112e9f7a2 win-arm64/node_pdb.7z +b551a239370533dcb1f595d35b9540cb906a926387d373f4e0dde8de424267a0 win-arm64/node_pdb.zip +741a6d3a636ccb3290fc3141e3604913d89e430e0c1bd098734cc3380a7c6b3b win-x64/node.exe +3581a06b68c4584d146372113eaa8c4d102127222e5041195ba38f185eef419c win-x64/node.lib +40e2dbf9fb9c66f579d348e2ecd30a4ffadc3b00f9895107f915b82323cd1096 win-x64/node_pdb.7z +1c478d40aadaeb0ad173ba01983a3bb6909777d1b35497b8e4f508acea02a26b win-x64/node_pdb.zip +ca29a0d009d4e39ebca9bc84a859f30ccddeb31f31573d2d62be579d7c3daef0 win-x86/node.exe +45399070d1d247cf223d12e80d3e638635af24d2f7a4714bc8e38a6a918f162a win-x86/node.lib +a35f8ad5b3ebfe652ffba108e3220115088d4a755af0305bdd6ece0295e4c07d win-x86/node_pdb.7z +e985894dd6ae194ef302f831a10268aa33412db046b670a121603184dbacbb04 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmcQQKEACgkQIdkA/9sj +N1YldRAAjB69PJc6s3OvgDHn6gr98Dap8WGQBjOt6Mb2/qR1C/9TcJRueN73+Fpc +9jW66o3QmHEjci1Ii0JDuvL7iObAMMQlJyctcsGVSyW+Pq5j9MEuEbAQVJ5/uzrS +innKmPNnMtVcr/1IspCR1I/Q71nupDU+amrR2TUcabCdHryKI8HAWJ+PRjsUChAy +22QvopbjG97NA3cWffUUuEYlMw/jgNdOQEIcxC1/xMd1ofL9rQVMqXeQAMKa+BBm +gZN1sLJGU88K+QPEkfZ1G3yQUmYyBxMcL5OH0KM/EngKu1siocj/m5OgCIW2OT14 +qedHd5/uxjKUJAR9DT/g5EBgXrZvz4J8Rv5ewPi9E8O/Ce3oS/Y0v3WvPvIaQCcO +MCvIAD7FQu0Eqn2ODKKBZepoqOneZCt7IKa+Pvt/qly2cKxD7aJfWsvilxUFu69x +hTnMK7HRTKk8BgfzpMlRENvSuRqVnlvny/8A+WgELX/9JT0DgF8n1TJ0mkVbJwRG +aSneG0MEcGHqG2ALJ6A5l13SoBTerRnjlwGuobyMfxCg66AP04k/ZR24m0db9d9R +RYQpgTtyee99a1yr92pzzwUcSgS9J0YPMMfsVCpO2lyyQ1Es8tN69Atf+Hby35Vz +HPg/0beMGvnM++UDik2hHKDqNs1Li6SXNVozxJy0qWPug3GNYEA= +=n1uK +-----END PGP SIGNATURE----- +``` From 851b085af21fe74612eccae9094803574c50e39c Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Thu, 17 Oct 2024 23:42:17 -0500 Subject: [PATCH 0080/1385] hotfix: fix brittle date-based unit test --- apps/site/next-data/generators/__tests__/releaseData.test.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/next-data/generators/__tests__/releaseData.test.mjs b/apps/site/next-data/generators/__tests__/releaseData.test.mjs index 0cdfb5b47b0f9..0082f03560d5a 100644 --- a/apps/site/next-data/generators/__tests__/releaseData.test.mjs +++ b/apps/site/next-data/generators/__tests__/releaseData.test.mjs @@ -43,11 +43,11 @@ describe('generateReleaseData', () => { expect(release.version).toBe('14.0.0'); expect(release.versionWithPrefix).toBe('v14.0.0'); expect(release.codename).toBe(''); - expect(release.isLts).toBe(true); + expect(release.isLts).toBe(false); expect(release.npm).toBe('6.14.10'); expect(release.v8).toBe('8.0.276.20'); expect(release.releaseDate).toBe('2021-04-20'); expect(release.modules).toBe('83'); - expect(release.status).toBe('LTS'); + expect(release.status).toBe('End-of-life'); }); }); From 98b9e42443cef9f53e6c08a0f2fa38f76c895946 Mon Sep 17 00:00:00 2001 From: Joe Eames Date: Fri, 18 Oct 2024 09:08:18 -0600 Subject: [PATCH 0081/1385] Esp participation (#7086) * added support for the OpenJS ESP program, and links to HeroDevs * feat: added support for the OpenJS ESP program and HeroDevs Links * fixed issues identified by maintainers * removed comments that didn't get cleaned * fix(nav): prevent double-highlight in nav, use constants * added unit tests --------- Co-authored-by: Brian Muenzenmeyer --- .../ActiveLink/__tests__/index.test.mjs | 65 +++++++++++++++++++ .../components/Common/ActiveLink/index.tsx | 5 +- .../Downloads/Release/ReleaseCodeBox.tsx | 10 ++- apps/site/jest.config.mjs | 1 + apps/site/navigation.json | 4 ++ apps/site/next.constants.mjs | 15 +++++ .../site/pages/en/about/previous-releases.mdx | 4 ++ packages/i18n/locales/en.json | 2 + 8 files changed, 103 insertions(+), 3 deletions(-) diff --git a/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs b/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs index 2ce5778f60b63..31d25c633fe36 100644 --- a/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs +++ b/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs @@ -1,7 +1,15 @@ import { render, screen } from '@testing-library/react'; +import { VERSION_SUPPORT_SHORTCUT } from '@/next.constants.mjs'; + import ActiveLink from '..'; +// mock usePathname, but retain all the other imports +jest.mock('@/navigation.mjs', () => ({ + ...jest.requireActual('@/navigation.mjs'), + usePathname: jest.fn(), +})); + describe('ActiveLink', () => { it('renders as localized link', () => { render( @@ -38,4 +46,61 @@ describe('ActiveLink', () => { 'link active' ); }); + + it('does not set active class when href base does not match', () => { + const { usePathname } = require('@/navigation.mjs'); + usePathname.mockReturnValue('/not-link/sublink'); + + render( + + Link + + ); + + expect(screen.findByText('Link')).resolves.toHaveAttribute('class', 'link'); + }); + + it('sets active class when href is other than VERSION_SUPPORT_SHORTCUT', () => { + const { usePathname } = require('@/navigation.mjs'); + usePathname.mockReturnValue('/link/sublink'); + + render( + + Link + + ); + + expect(screen.findByText('Link')).resolves.toHaveAttribute( + 'class', + 'link active' + ); + }); + + it('does not set active class when href is VERSION_SUPPORT_SHORTCUT', () => { + const { usePathname } = require('@/navigation.mjs'); + usePathname.mockReturnValue(VERSION_SUPPORT_SHORTCUT); + + render( + + Link + + ); + + expect(screen.findByText('Link')).resolves.toHaveAttribute('class', 'link'); + }); }); diff --git a/apps/site/components/Common/ActiveLink/index.tsx b/apps/site/components/Common/ActiveLink/index.tsx index bdf566d87dc71..b1aaf220de125 100644 --- a/apps/site/components/Common/ActiveLink/index.tsx +++ b/apps/site/components/Common/ActiveLink/index.tsx @@ -5,6 +5,7 @@ import type { ComponentProps, FC } from 'react'; import Link from '@/components/Link'; import { usePathname } from '@/navigation.mjs'; +import { VERSION_SUPPORT_SHORTCUT } from '@/next.constants.mjs'; type ActiveLocalizedLinkProps = ComponentProps & { activeClassName?: string; @@ -26,7 +27,9 @@ const ActiveLink: FC = ({ ? // When using allowSubPath we want only to check if // the current pathname starts with the utmost upper level // of an href (e.g. /docs/...) - pathname.startsWith(`/${href.toString().split('/')[1]}`) + pathname.startsWith(`/${href.toString().split('/')[1]}`) && + // but not when this link is for the deep link shortcut to previous releases + href.toString() !== VERSION_SUPPORT_SHORTCUT : href.toString() === pathname, }); diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 3b446074f61e9..ca465eb90aaf0 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -3,8 +3,11 @@ import { useTranslations } from 'next-intl'; import { useContext, useEffect, useState } from 'react'; import type { FC } from 'react'; +import semVer from 'semver'; +import Banner from '@/components/Common/Banner'; import CodeBox from '@/components/Common/CodeBox'; +import { ESP_SUPPORT_THRESHOLD_VERSION } from '@/next.constants.mjs'; import { ReleaseContext } from '@/providers/releaseProvider'; import { shikiPromise, highlightToHtml } from '@/util/getHighlighter'; import { getNodeDownloadSnippet } from '@/util/getNodeDownloadSnippet'; @@ -29,13 +32,16 @@ const ReleaseCodeBox: FC = () => { }, [release.versionWithPrefix, os, platform]); const codeLanguage = os === 'WIN' ? 'PowerShell' : 'Bash'; - return (
+ {semVer.lt(release.versionWithPrefix, ESP_SUPPORT_THRESHOLD_VERSION) && ( + + {t('layouts.download.codeBox.unsupportedVersionWarning')}  + + )} - {t('layouts.download.codeBox.communityWarning')}
diff --git a/apps/site/jest.config.mjs b/apps/site/jest.config.mjs index 6065ec5018b2c..bdf0030a1a391 100644 --- a/apps/site/jest.config.mjs +++ b/apps/site/jest.config.mjs @@ -16,6 +16,7 @@ const customJestConfig = { 'next/router': '/components/__mocks__/next-router.mjs', 'next-intl': '/components/__mocks__/next-intl.mjs', 'github-slugger': '/components/__mocks__/github-slugger.mjs', + '^@/(.*)$': '/$1', }, }; diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 307ab6eb73d80..c365d851c7852 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -20,6 +20,10 @@ "link": "https://nodejs.org/docs/latest/api/", "label": "components.containers.navBar.links.docs" }, + "support": { + "link": "/about/previous-releases", + "label": "components.containers.navBar.links.support" + }, "certification": { "link": "https://training.linuxfoundation.org/openjs/", "label": "components.containers.navBar.links.certification", diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index 488af1fe4b225..e3a9120ae45c7 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -168,3 +168,18 @@ export const ORAMA_CLOUD_API_KEY = process.env.NEXT_PUBLIC_ORAMA_API_KEY || ''; * Note: This has no NEXT_PUBLIC prefix as it should not be exposed to the Browser. */ export const GITHUB_API_KEY = process.env.NEXT_GITHUB_API_KEY || ''; + +/** + * OpenJS Ecosystem Support Program (ESP) partners provide security updates and support for end-of-life and unsupported versions + * + * See https://openjsf.org/ecosystem-sustainability-program + * + * This is the minimum version Node.js support according to https://nodejs.org/en/about/previous-releases + */ +export const ESP_SUPPORT_THRESHOLD_VERSION = + process.env.ESP_SUPPORT_THRESHOLD_VERSION || '18.0.0'; + +/** + * This deep link into the app is repeated in the top nav, but we want to ignore it for active-link highlighting, since it will be covered by About + */ +export const VERSION_SUPPORT_SHORTCUT = '/about/previous-releases'; diff --git a/apps/site/pages/en/about/previous-releases.mdx b/apps/site/pages/en/about/previous-releases.mdx index 3e0014c64dc3d..14488ef23cf68 100644 --- a/apps/site/pages/en/about/previous-releases.mdx +++ b/apps/site/pages/en/about/previous-releases.mdx @@ -16,6 +16,10 @@ Production applications should only use _Active LTS_ or _Maintenance LTS_ releas Full details regarding Node.js release schedule are available [on GitHub](https://github.com/nodejs/release#release-schedule). +### Commercial Support + +Commercial support for versions past Maintenance phase is available through our OpenJS Ecosystem Sustainability Program partner [HeroDevs](https://herodevs.com/). + ## Looking for latest release of a version branch? diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index df74ef6caeb7d..771f9f3a18fbd 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -14,6 +14,7 @@ "about": "About", "download": "Download", "docs": "Docs", + "support": "Version Support", "guides": "Guides", "learn": "Learn", "security": "Security", @@ -299,6 +300,7 @@ "platform": "Platform" }, "codeBox": { + "unsupportedVersionWarning": "This version is out of maintenance. Find more information here:", "fnmEnvSetup": "configure fnm environment", "systemManagerWarning": "is not a Node.js package manager. Please ensure you already have {packageManager} installed.", "communityWarning": "Package managers and their installation scripts are not maintained by the Node.js project.", From 834b69d3c177b69e70bc294f741d13becc0d2645 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 19 Oct 2024 17:40:05 -0700 Subject: [PATCH 0082/1385] chore: remove unused file (#7131) --- apps/site/layouts/Centered.tsx | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/site/layouts/Centered.tsx diff --git a/apps/site/layouts/Centered.tsx b/apps/site/layouts/Centered.tsx deleted file mode 100644 index e69de29bb2d1d..0000000000000 From f69a421ce0ac3df4da9fed7d62978651dbbb2fe9 Mon Sep 17 00:00:00 2001 From: Alex Schwartz Date: Mon, 21 Oct 2024 01:12:38 -0400 Subject: [PATCH 0083/1385] block Windows 32 bit on v23 and up (#7133) * block Windows 32 bit on v23 and up Signed-off-by: Alex Schwartz * Update BitnessDropdown.tsx Signed-off-by: Alex Schwartz --------- Signed-off-by: Alex Schwartz --- .../site/components/Downloads/Release/BitnessDropdown.tsx | 4 ++++ apps/site/scripts/release-post/downloadsTable.mjs | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/apps/site/components/Downloads/Release/BitnessDropdown.tsx b/apps/site/components/Downloads/Release/BitnessDropdown.tsx index 1d0e25d0b6841..789885635addd 100644 --- a/apps/site/components/Downloads/Release/BitnessDropdown.tsx +++ b/apps/site/components/Downloads/Release/BitnessDropdown.tsx @@ -39,6 +39,10 @@ const BitnessDropdown: FC = () => { disabledItems.push('arm64'); } + if (os === 'WIN' && semVer.satisfies(release.version, '>= 23.0.0')) { + disabledItems.push('86'); + } + if (os === 'LINUX' && semVer.satisfies(release.version, '< 4.0.0')) { disabledItems.push('arm64', 'armv7l'); } diff --git a/apps/site/scripts/release-post/downloadsTable.mjs b/apps/site/scripts/release-post/downloadsTable.mjs index 5b64290338e8d..8de6f88d1726f 100644 --- a/apps/site/scripts/release-post/downloadsTable.mjs +++ b/apps/site/scripts/release-post/downloadsTable.mjs @@ -99,6 +99,14 @@ const resolveDownloads = version => { ); } + if (semVer.satisfies(version, '>= 23.0.0')) { + downloads = downloads.filter( + ver => + ver.title !== 'Windows 32-bit Installer' && + ver.title !== 'Windows 32-bit Binary' + ); + } + return downloads; }; From 64db5a2149652b0c3d6338822fda6d693b76edfc Mon Sep 17 00:00:00 2001 From: Claudio W Date: Mon, 21 Oct 2024 17:06:52 +0200 Subject: [PATCH 0084/1385] hotfix: minor changes (#7127) * hotfix: minor changes * Delete apps/site/.eslintignore Signed-off-by: Claudio W * Delete packages/i18n/.eslintignore Signed-off-by: Claudio W --------- Signed-off-by: Claudio W --- apps/site/.storybook/main.ts | 5 +- apps/site/package.json | 10 +- package-lock.json | 4736 ++++++++++++++++++---------------- package.json | 7 - 4 files changed, 2494 insertions(+), 2264 deletions(-) diff --git a/apps/site/.storybook/main.ts b/apps/site/.storybook/main.ts index ec7ca5c3fd5fe..174f47be55331 100644 --- a/apps/site/.storybook/main.ts +++ b/apps/site/.storybook/main.ts @@ -34,7 +34,7 @@ const config: StorybookConfig = { webpack: async config => ({ ...config, // We want to conform as much as possible with our target settings - target: 'browserslist', + 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 @@ -52,7 +52,8 @@ const config: StorybookConfig = { ignoreWarnings: [ e => e.message.includes('Critical dep') || - e.message.includes('was not found in'), + e.message.includes('was not found in') || + e.message.includes('generated code contains'), ], }), }; diff --git a/apps/site/package.json b/apps/site/package.json index 8695c09740829..88a5f69d0927d 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -17,7 +17,7 @@ }, "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 --turbo", + "dev": "cross-env SENTRY_SUPPRESS_TURBOPACK_WARNING=1 NODE_NO_WARNINGS=1 next dev --turbo", "serve": "npm run dev", "build": "cross-env NODE_NO_WARNINGS=1 next build", "start": "cross-env NODE_NO_WARNINGS=1 next start", @@ -68,7 +68,7 @@ "glob": "~11.0.0", "gray-matter": "~4.0.3", "next": "~14.2.14", - "next-intl": "~3.20.0", + "next-intl": "~3.21.1", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", @@ -104,14 +104,14 @@ "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint": "~9.10.0", - "eslint-config-next": "~14.2.14", + "eslint-config-next": "15.0.0-rc.1", "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-import-x": "~4.3.1", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-no-relative-import-paths": "~1.5.5", "eslint-plugin-react": "~7.37.1", - "eslint-plugin-react-hooks": "5.1.0-rc.0", - "eslint-plugin-storybook": "0.9.0--canary.156.26b630a.0", + "eslint-plugin-react-hooks": "5.0.0", + "eslint-plugin-storybook": "0.10.0--canary.156.ce8985b.0", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", diff --git a/package-lock.json b/package-lock.json index f5b69e9dc868a..6586d4174f52f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,7 +61,7 @@ "glob": "~11.0.0", "gray-matter": "~4.0.3", "next": "~14.2.14", - "next-intl": "~3.20.0", + "next-intl": "~3.21.1", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", @@ -97,14 +97,14 @@ "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint": "~9.10.0", - "eslint-config-next": "~14.2.14", + "eslint-config-next": "15.0.0-rc.1", "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-import-x": "~4.3.1", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-no-relative-import-paths": "~1.5.5", "eslint-plugin-react": "~7.37.1", - "eslint-plugin-react-hooks": "5.1.0-rc.0", - "eslint-plugin-storybook": "0.9.0--canary.156.26b630a.0", + "eslint-plugin-react-hooks": "5.0.0", + "eslint-plugin-storybook": "0.10.0--canary.156.ce8985b.0", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", @@ -124,264 +124,149 @@ "node": "v20" } }, - "apps/site/node_modules/@sentry-internal/browser-utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.33.1.tgz", - "integrity": "sha512-TW6/r+Gl5jiXv54iK1xZ3mlVgTS/jaBp4vcQ0xGMdgiQ3WchEPcFSeYovL+YHT3tSud0GZqVtDQCz+5i76puqA==", - "license": "MIT", - "dependencies": { - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" - }, - "engines": { - "node": ">=14.18" - } - }, - "apps/site/node_modules/@sentry-internal/feedback": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.33.1.tgz", - "integrity": "sha512-qauMRTm3qDaLqZ3ibI03cj4gLF40y0ij65nj+cns6iWxGCtPrO8tjvXFWuQsE7Aye9dGMnBgmv7uN+NTUtC3RA==", - "license": "MIT", - "dependencies": { - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" - }, - "engines": { - "node": ">=14.18" - } - }, - "apps/site/node_modules/@sentry-internal/replay": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.33.1.tgz", - "integrity": "sha512-fm4coIOjmanU29NOVN9MyaP4fUCOYytbtFqVSKRFNZQ/xAgNeySiBIbUd6IjujMmnOk9bY0WEUMcdm3Uotjdog==", + "apps/site/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": { - "@sentry-internal/browser-utils": "8.33.1", - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=14.18" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "apps/site/node_modules/@sentry-internal/replay-canvas": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.33.1.tgz", - "integrity": "sha512-nsxTFTPCT10Ty/v6+AiST3+yotGP1sUb8xqfKB9fPnS1hZHFryp0NnEls7xFjBsBbZPU1GpFkzrk/E6JFzixDQ==", + "apps/site/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": { - "@sentry-internal/replay": "8.33.1", - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" - }, - "engines": { - "node": ">=14.18" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "apps/site/node_modules/@sentry/browser": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.33.1.tgz", - "integrity": "sha512-c6zI/igexkLwZuGk+u8Rj26ChjxGgkhe6ZbKFsXCYaKAp5ep5X7HQRkkqgbxApiqlC0LduHdd/ymzh139JLg8w==", + "apps/site/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": { - "@sentry-internal/browser-utils": "8.33.1", - "@sentry-internal/feedback": "8.33.1", - "@sentry-internal/replay": "8.33.1", - "@sentry-internal/replay-canvas": "8.33.1", - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14.18" - } - }, - "apps/site/node_modules/@sentry/core": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.33.1.tgz", - "integrity": "sha512-3SS41suXLFzxL3OQvTMZ6q92ZapELVq2l2SoWlZopcamWhog2Ru0dp2vkunq97kFHb2TzKRTlFH4+4gbT8SJug==", - "license": "MIT", - "dependencies": { - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "node": ">=10" }, - "engines": { - "node": ">=14.18" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "apps/site/node_modules/@sentry/nextjs": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.33.1.tgz", - "integrity": "sha512-XLUyib6bCv2iynKaoYIotVKzLsGc9lr6QI4ZV3/PstiiXKwtTm1TPdBfIlrDJMGIMxH7Z/DmkvJNSESV19Ui6Q==", + "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", - "dependencies": { - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@rollup/plugin-commonjs": "26.0.1", - "@sentry-internal/browser-utils": "8.33.1", - "@sentry/core": "8.33.1", - "@sentry/node": "8.33.1", - "@sentry/opentelemetry": "8.33.1", - "@sentry/react": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1", - "@sentry/vercel-edge": "8.33.1", - "@sentry/webpack-plugin": "2.22.3", - "chalk": "3.0.0", - "resolve": "1.22.8", - "rollup": "3.29.5", - "stacktrace-parser": "^0.1.10" - }, - "engines": { - "node": ">=14.18" - }, "peerDependencies": { - "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0", - "webpack": ">=5.0.0" + "babel-plugin-macros": "^3.1.0" }, "peerDependenciesMeta": { - "webpack": { + "babel-plugin-macros": { "optional": true } } }, - "apps/site/node_modules/@sentry/node": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.33.1.tgz", - "integrity": "sha512-0Xmlrl5nU5Bx6YybaIfztyOIiIXW5X64vcK0u94Sg4uHcDO7YvEbhflKjp669ds2I6ZQ/czqxnaAY8gM6P2SCA==", + "apps/site/node_modules/eslint": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "dev": true, "license": "MIT", "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.25.1", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/instrumentation-amqplib": "^0.42.0", - "@opentelemetry/instrumentation-connect": "0.39.0", - "@opentelemetry/instrumentation-dataloader": "0.12.0", - "@opentelemetry/instrumentation-express": "0.42.0", - "@opentelemetry/instrumentation-fastify": "0.39.0", - "@opentelemetry/instrumentation-fs": "0.15.0", - "@opentelemetry/instrumentation-generic-pool": "0.39.0", - "@opentelemetry/instrumentation-graphql": "0.43.0", - "@opentelemetry/instrumentation-hapi": "0.41.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/instrumentation-ioredis": "0.43.0", - "@opentelemetry/instrumentation-kafkajs": "0.3.0", - "@opentelemetry/instrumentation-koa": "0.43.0", - "@opentelemetry/instrumentation-lru-memoizer": "0.40.0", - "@opentelemetry/instrumentation-mongodb": "0.47.0", - "@opentelemetry/instrumentation-mongoose": "0.42.0", - "@opentelemetry/instrumentation-mysql": "0.41.0", - "@opentelemetry/instrumentation-mysql2": "0.41.0", - "@opentelemetry/instrumentation-nestjs-core": "0.40.0", - "@opentelemetry/instrumentation-pg": "0.44.0", - "@opentelemetry/instrumentation-redis-4": "0.42.0", - "@opentelemetry/instrumentation-undici": "0.6.0", - "@opentelemetry/resources": "^1.26.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.33.1", - "@sentry/opentelemetry": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1", - "import-in-the-middle": "^1.11.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, - "engines": { - "node": ">=14.18" - } - }, - "apps/site/node_modules/@sentry/opentelemetry": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.33.1.tgz", - "integrity": "sha512-D2aE2G0DUHLLnfbOXrTjiNJKAs/RZfOBJMidI4fC2AIwqCmrp55Aex4dRq4hxd8MPLR92Kt/ikHeJxlzWB15KA==", - "license": "MIT", - "dependencies": { - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=14.18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - } - }, - "apps/site/node_modules/@sentry/react": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.33.1.tgz", - "integrity": "sha512-SsEX05xfcfOvo7/pK1UyeyTAYWH8iSIsXXlsjvnSRsbuJkjb0c+q6yiZpj3A2PRdbcx43nTVE1n0lSpgaqj2HA==", - "license": "MIT", - "dependencies": { - "@sentry/browser": "8.33.1", - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1", - "hoist-non-react-statics": "^3.3.2" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "engines": { - "node": ">=14.18" + "funding": { + "url": "https://eslint.org/donate" }, "peerDependencies": { - "react": "^16.14.0 || 17.x || 18.x || 19.x" + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "apps/site/node_modules/@sentry/types": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.33.1.tgz", - "integrity": "sha512-GjoAMvwtpIemoF/IiwZ7A60g4nQv3qwzR21GvJqDVUoKD0e8pv9OLX+HyXoUat4wEDGSuDUcUyUKD2G+od73QA==", + "apps/site/node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", + "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=14.18" - } - }, - "apps/site/node_modules/@sentry/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-uzuYpiiJuFY3N4WNHMBWUQX5oNv2t/TbG0OHRp3Rr7yeu+HSfD542TIp9/gMZ+G0Cxd8AmVO3wkKIFbk0TL4Qg==", - "license": "MIT", - "dependencies": { - "@sentry/types": "8.33.1" + "node": ">=10" }, - "engines": { - "node": ">=14.18" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "apps/site/node_modules/@sentry/vercel-edge": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.33.1.tgz", - "integrity": "sha512-YKAsFAm4ctsKRdoS3LkYF4oG5BD1chT4Uqy4AaBhlz0s5iHxBI7YzZFbcW4YiNnDWT80tdF+FS7AvUAjy+npoA==", - "license": "MIT", + "apps/site/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": "ISC", "dependencies": { - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=14.18" - } - }, - "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 - } + "node": "*" } }, "apps/site/node_modules/glob": { @@ -407,6 +292,13 @@ "url": "https://github.com/sponsors/isaacs" } }, + "apps/site/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" + }, "node_modules/@adobe/css-tools": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", @@ -440,12 +332,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/highlight": "^7.25.7", "picocolors": "^1.0.0" }, "engines": { @@ -453,30 +345,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", + "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", + "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.8", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.8", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -501,56 +393,56 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6", + "@babel/types": "^7.25.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz", + "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -568,18 +460,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", - "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", + "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/traverse": "^7.25.4", + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-member-expression-to-functions": "^7.25.7", + "@babel/helper-optimise-call-expression": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/traverse": "^7.25.7", "semver": "^6.3.1" }, "engines": { @@ -600,14 +492,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", - "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz", + "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.7", + "regexpu-core": "^6.1.1", "semver": "^6.3.1" }, "engines": { @@ -645,42 +537,42 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", - "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", + "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -690,22 +582,22 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", + "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", "dev": true, "license": "MIT", "engines": { @@ -713,15 +605,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", - "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz", + "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-wrap-function": "^7.25.0", - "@babel/traverse": "^7.25.0" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-wrap-function": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -731,15 +623,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", - "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", + "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/helper-member-expression-to-functions": "^7.25.7", + "@babel/helper-optimise-call-expression": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -749,94 +641,94 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", + "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", - "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz", + "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", "license": "MIT", "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -917,12 +809,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6" + "@babel/types": "^7.25.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -932,14 +824,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", - "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz", + "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.3" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -949,13 +841,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", - "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz", + "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -965,13 +857,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", - "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz", + "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -981,15 +873,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz", + "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/plugin-transform-optional-chaining": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -999,14 +891,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", - "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz", + "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1096,27 +988,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", - "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", + "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1126,13 +1005,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", + "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1168,13 +1047,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", + "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1294,13 +1173,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", - "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz", + "integrity": "sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1327,13 +1206,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz", + "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1343,16 +1222,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", - "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz", + "integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-remap-async-to-generator": "^7.25.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/traverse": "^7.25.4" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-remap-async-to-generator": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1362,15 +1240,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz", + "integrity": "sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-remap-async-to-generator": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1380,13 +1258,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz", + "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1396,13 +1274,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", - "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz", + "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1412,14 +1290,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", - "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", + "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.4", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1429,15 +1307,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz", + "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1447,17 +1324,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", - "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz", + "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/traverse": "^7.25.4", + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7", + "@babel/traverse": "^7.25.7", "globals": "^11.1.0" }, "engines": { @@ -1468,14 +1345,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz", + "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/template": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1485,13 +1362,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", - "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz", + "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1501,14 +1378,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz", + "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1518,13 +1395,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz", + "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1534,14 +1411,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", - "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz", + "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1551,14 +1428,13 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz", + "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1568,14 +1444,14 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz", + "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1585,14 +1461,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz", + "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1602,14 +1477,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz", + "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1619,15 +1494,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", - "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz", + "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.1" + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1637,14 +1512,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz", + "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1654,13 +1528,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", - "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz", + "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1670,14 +1544,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz", + "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1687,13 +1560,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz", + "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1703,14 +1576,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz", + "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1720,15 +1593,15 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", + "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1738,16 +1611,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", - "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz", + "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1757,14 +1630,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz", + "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1774,14 +1647,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz", + "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1791,13 +1664,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz", + "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1807,14 +1680,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", + "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1824,14 +1696,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz", + "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1841,16 +1712,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz", + "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-transform-parameters": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1860,14 +1730,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz", + "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1877,14 +1747,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz", + "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1894,15 +1763,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", - "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", + "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1912,13 +1780,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz", + "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1928,14 +1796,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", - "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", + "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.4", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1945,16 +1813,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz", + "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1964,13 +1831,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz", + "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1980,13 +1847,13 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", - "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.7.tgz", + "integrity": "sha512-r0QY7NVU8OnrwE+w2IWiRom0wwsTbjx4+xH2RTd7AVdof3uurXOF+/mXHQDRk+2jIvWgSaCHKMgggfvM4dyUGA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1996,17 +1863,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", - "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", + "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/types": "^7.25.2" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2016,13 +1883,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", - "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.7.tgz", + "integrity": "sha512-5yd3lH1PWxzW6IZj+p+Y4OLQzz0/LzlOG8vGqonHfVR3euf1vyzyMUJk9Ac+m97BH46mFc/98t9PmYLyvgL3qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.24.7" + "@babel/plugin-transform-react-jsx": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2032,14 +1899,14 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", - "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.7.tgz", + "integrity": "sha512-6YTHJ7yjjgYqGc8S+CbEXhLICODk0Tn92j+vNJo07HFk9t3bjFgAKxPLFhHwF2NjmQVSI1zBRfBWUeVBa2osfA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2049,13 +1916,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz", + "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.25.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -2066,13 +1933,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz", + "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2082,14 +1949,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz", - "integrity": "sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz", + "integrity": "sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", @@ -2113,13 +1980,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz", + "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2129,14 +1996,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz", + "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2146,13 +2013,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz", + "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2162,13 +2029,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz", + "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2178,13 +2045,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", - "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz", + "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2194,17 +2061,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", - "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz", + "integrity": "sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-typescript": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/plugin-syntax-typescript": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2214,13 +2081,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", + "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2230,14 +2097,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz", + "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2247,14 +2114,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz", + "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2264,14 +2131,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", - "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz", + "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2281,94 +2148,79 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", - "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz", + "integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.4", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "@babel/compat-data": "^7.25.8", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.4", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.25.4", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.25.0", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.25.4", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.8", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", + "@babel/plugin-transform-arrow-functions": "^7.25.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.8", + "@babel/plugin-transform-async-to-generator": "^7.25.7", + "@babel/plugin-transform-block-scoped-functions": "^7.25.7", + "@babel/plugin-transform-block-scoping": "^7.25.7", + "@babel/plugin-transform-class-properties": "^7.25.7", + "@babel/plugin-transform-class-static-block": "^7.25.8", + "@babel/plugin-transform-classes": "^7.25.7", + "@babel/plugin-transform-computed-properties": "^7.25.7", + "@babel/plugin-transform-destructuring": "^7.25.7", + "@babel/plugin-transform-dotall-regex": "^7.25.7", + "@babel/plugin-transform-duplicate-keys": "^7.25.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-dynamic-import": "^7.25.8", + "@babel/plugin-transform-exponentiation-operator": "^7.25.7", + "@babel/plugin-transform-export-namespace-from": "^7.25.8", + "@babel/plugin-transform-for-of": "^7.25.7", + "@babel/plugin-transform-function-name": "^7.25.7", + "@babel/plugin-transform-json-strings": "^7.25.8", + "@babel/plugin-transform-literals": "^7.25.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.8", + "@babel/plugin-transform-member-expression-literals": "^7.25.7", + "@babel/plugin-transform-modules-amd": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.7", + "@babel/plugin-transform-modules-umd": "^7.25.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-new-target": "^7.25.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8", + "@babel/plugin-transform-numeric-separator": "^7.25.8", + "@babel/plugin-transform-object-rest-spread": "^7.25.8", + "@babel/plugin-transform-object-super": "^7.25.7", + "@babel/plugin-transform-optional-catch-binding": "^7.25.8", + "@babel/plugin-transform-optional-chaining": "^7.25.8", + "@babel/plugin-transform-parameters": "^7.25.7", + "@babel/plugin-transform-private-methods": "^7.25.7", + "@babel/plugin-transform-private-property-in-object": "^7.25.8", + "@babel/plugin-transform-property-literals": "^7.25.7", + "@babel/plugin-transform-regenerator": "^7.25.7", + "@babel/plugin-transform-reserved-words": "^7.25.7", + "@babel/plugin-transform-shorthand-properties": "^7.25.7", + "@babel/plugin-transform-spread": "^7.25.7", + "@babel/plugin-transform-sticky-regex": "^7.25.7", + "@babel/plugin-transform-template-literals": "^7.25.7", + "@babel/plugin-transform-typeof-symbol": "^7.25.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.7", + "@babel/plugin-transform-unicode-property-regex": "^7.25.7", + "@babel/plugin-transform-unicode-regex": "^7.25.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.37.1", + "core-js-compat": "^3.38.1", "semver": "^6.3.1" }, "engines": { @@ -2404,18 +2256,18 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", - "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.7.tgz", + "integrity": "sha512-GjV0/mUEEXpi1U5ZgDprMRRgajGMRW3G5FjMr5KLKD8nT2fTG8+h/klV3+6Dm5739QE+K5+2e91qFKAYI3pmRg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "@babel/plugin-transform-react-display-name": "^7.24.7", - "@babel/plugin-transform-react-jsx": "^7.24.7", - "@babel/plugin-transform-react-jsx-development": "^7.24.7", - "@babel/plugin-transform-react-pure-annotations": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-transform-react-display-name": "^7.25.7", + "@babel/plugin-transform-react-jsx": "^7.25.7", + "@babel/plugin-transform-react-jsx-development": "^7.25.7", + "@babel/plugin-transform-react-pure-annotations": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2425,17 +2277,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", - "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz", + "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-typescript": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2444,17 +2296,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/runtime": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", - "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", "dev": true, "license": "MIT", "dependencies": { @@ -2465,30 +2310,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2497,13 +2342,13 @@ } }, "node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2514,7 +2359,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", @@ -2635,9 +2481,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", - "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.2.tgz", + "integrity": "sha512-6tC/MnlEvs5suR4Ahef4YlBccJDHZuxGsAlxXmybWjZ5jPxlzLSMlRZ9mVHSRvlD+CmtE7+hJ+UQbfXrws/rUQ==", "dev": true, "funding": [ { @@ -2654,13 +2500,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.1" + "@csstools/css-tokenizer": "^3.0.2" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", - "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.2.tgz", + "integrity": "sha512-IuTRcD53WHsXPCZ6W7ubfGqReTJ9Ra0yRRFmXYP/Re8hFYYfoIYIK4080X5luslVLWimhIeFq0hj09urVMQzTw==", "dev": true, "funding": [ { @@ -2736,9 +2582,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", - "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", + "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", "dev": true, "license": "MIT", "optional": true, @@ -2754,6 +2600,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -2770,6 +2617,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2786,6 +2634,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2802,6 +2651,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2818,6 +2668,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2834,6 +2685,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2850,6 +2702,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2866,6 +2719,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2882,6 +2736,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2898,6 +2753,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2914,6 +2770,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2930,6 +2787,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2946,6 +2804,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2962,6 +2821,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2978,6 +2838,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2994,6 +2855,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3010,6 +2872,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3026,6 +2889,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -3042,6 +2906,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -3058,6 +2923,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -3074,6 +2940,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -3090,6 +2957,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3106,6 +2974,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3122,6 +2991,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3160,9 +3030,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "dev": true, "license": "MIT", "engines": { @@ -3174,6 +3044,7 @@ "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.0.tgz", "integrity": "sha512-CkPWddN7J9JPrQedEr2X7AjK9y1jaMJtxZ4A/+jTMFA2+n5BWhcKHW/EbJyARqg2zzQfgtWUtVmG3hrG6+nGpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3353,28 +3224,28 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", - "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.7" + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", - "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", + "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.7" + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", - "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.0.0" @@ -3385,53 +3256,59 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", - "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", - "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.0.tgz", + "integrity": "sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==", + "license": "MIT", "dependencies": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" + "@formatjs/fast-memoize": "2.2.1", + "@formatjs/intl-localematcher": "0.5.5", + "tslib": "^2.7.0" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.1.tgz", + "integrity": "sha512-XS2RcOSyWxmUB7BUjj3mlPH0exsUzlf6QfhhijgI941WaJhVxXQ6mEWkdUFIdnKi3TuTYxRdelsgv3mjieIGIA==", + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.7.0" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.8", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", - "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", + "version": "2.7.10", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.10.tgz", + "integrity": "sha512-wlQfqCZ7PURkUNL2+8VTEFavPovtADU/isSKLFvDbdFmV7QPZIYqFMkhklaDYgMyLSBJa/h2MVQ2aFvoEJhxgg==", + "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/icu-skeleton-parser": "1.8.2", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.0", + "@formatjs/icu-skeleton-parser": "1.8.4", + "tslib": "^2.7.0" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", - "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.4.tgz", + "integrity": "sha512-LMQ1+Wk1QSzU4zpd5aSu7+w5oeYhupRwZnMQckLPRYhSjf2/8JWQ882BauY9NyHxs5igpuQIXZDgfkaH3PoATg==", + "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.0", + "tslib": "^2.7.0" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.5.tgz", + "integrity": "sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==", + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.7.0" } }, "node_modules/@heroicons/react": { @@ -3443,6 +3320,49 @@ "react": ">= 16" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/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", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/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": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -3457,10 +3377,19 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, "node_modules/@humanwhocodes/retry": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", - "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4554,15 +4483,17 @@ } }, "node_modules/@next/env": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.14.tgz", - "integrity": "sha512-/0hWQfiaD5//LvGNgc8PjvyqV50vGK0cADYzaoOOGN8fxzBn3iAiaq3S0tCRnFBldq0LVveLcxCTi41ZoYgAgg==" + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.15.tgz", + "integrity": "sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==", + "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.14.tgz", - "integrity": "sha512-kV+OsZ56xhj0rnTn6HegyTGkoa16Mxjrpk7pjWumyB2P8JVQb8S9qtkjy/ye0GnTr4JWtWG4x/2qN40lKZ3iVQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.15.tgz", + "integrity": "sha512-pKU0iqKRBlFB/ocOI1Ip2CkKePZpYpnw5bEItEkuZ/Nr9FQP1+p7VDWr4VfOdff4i9bFmrOaeaU1bFEyAcxiMQ==", "dev": true, + "license": "MIT", "dependencies": { "glob": "10.3.10" } @@ -4650,12 +4581,13 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.14.tgz", - "integrity": "sha512-bsxbSAUodM1cjYeA4o6y7sp9wslvwjSkWw57t8DtC8Zig8aG8V6r+Yc05/9mDzLKcybb6EN85k1rJDnMKBd9Gw==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz", + "integrity": "sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4665,12 +4597,13 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.14.tgz", - "integrity": "sha512-cC9/I+0+SK5L1k9J8CInahduTVWGMXhQoXFeNvF0uNs3Bt1Ub0Azb8JzTU9vNCr0hnaMqiWu/Z0S1hfKc3+dww==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz", + "integrity": "sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4680,12 +4613,13 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.14.tgz", - "integrity": "sha512-RMLOdA2NU4O7w1PQ3Z9ft3PxD6Htl4uB2TJpocm+4jcllHySPkFaUIFacQ3Jekcg6w+LBaFvjSPthZHiPmiAUg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz", + "integrity": "sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -4695,12 +4629,13 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.14.tgz", - "integrity": "sha512-WgLOA4hT9EIP7jhlkPnvz49iSOMdZgDJVvbpb8WWzJv5wBD07M2wdJXLkDYIpZmCFfo/wPqFsFR4JS4V9KkQ2A==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz", + "integrity": "sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -4710,12 +4645,13 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.14.tgz", - "integrity": "sha512-lbn7svjUps1kmCettV/R9oAvEW+eUI0lo0LJNFOXoQM5NGNxloAyFRNByYeZKL3+1bF5YE0h0irIJfzXBq9Y6w==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz", + "integrity": "sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -4725,12 +4661,13 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.14.tgz", - "integrity": "sha512-7TcQCvLQ/hKfQRgjxMN4TZ2BRB0P7HwrGAYL+p+m3u3XcKTraUFerVbV3jkNZNwDeQDa8zdxkKkw2els/S5onQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz", + "integrity": "sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -4740,12 +4677,13 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.14.tgz", - "integrity": "sha512-8i0Ou5XjTLEje0oj0JiI0Xo9L/93ghFtAUYZ24jARSeTMXLUx8yFIdhS55mTExq5Tj4/dC2fJuaT4e3ySvXU1A==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz", + "integrity": "sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -4755,12 +4693,13 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.14.tgz", - "integrity": "sha512-2u2XcSaDEOj+96eXpyjHjtVPLhkAFw2nlaz83EPeuK4obF+HmtDJHqgR1dZB7Gb6V/d55FL26/lYVd0TwMgcOQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz", + "integrity": "sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -4770,12 +4709,13 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.14.tgz", - "integrity": "sha512-MZom+OvZ1NZxuRovKt1ApevjiUJTcU2PmdJKL66xUPaJeRywnbGGRWUlaAOwunD6dX+pm83vj979NTC8QXjGWg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz", + "integrity": "sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -5081,9 +5021,9 @@ } }, "node_modules/@npmcli/package-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", - "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", "dev": true, "license": "ISC", "dependencies": { @@ -5238,6 +5178,7 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -5249,6 +5190,7 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.26.0.tgz", "integrity": "sha512-HedpXXYzzbaoutw6DFLWLDket2FwLkLpil4hGCZ1xYEIMTcivdfwEOISgdbLEWyG3HW52gTq2V9mOVJrONgiwg==", + "license": "Apache-2.0", "engines": { "node": ">=14" }, @@ -5260,6 +5202,7 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, @@ -5274,6 +5217,7 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "^1.2.0", @@ -5293,6 +5237,7 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.42.0.tgz", "integrity": "sha512-fiuU6OKsqHJiydHWgTRQ7MnIrJ2lEqsdgFtNIH4LbAUJl/5XmrIeoDzDnox+hfkgWK65jsleFuQDtYb5hW1koQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5309,6 +5254,7 @@ "version": "0.39.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.39.0.tgz", "integrity": "sha512-pGBiKevLq7NNglMgqzmeKczF4XQMTOUOTkK8afRHMZMnrK3fcETyTH7lVaSozwiOM3Ws+SuEmXZT7DYrrhxGlg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5326,6 +5272,7 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.12.0.tgz", "integrity": "sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5340,6 +5287,7 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.42.0.tgz", "integrity": "sha512-YNcy7ZfGnLsVEqGXQPT+S0G1AE46N21ORY7i7yUQyfhGAL4RBjnZUqefMI0NwqIl6nGbr1IpF0rZGoN8Q7x12Q==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5356,6 +5304,7 @@ "version": "0.39.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.39.0.tgz", "integrity": "sha512-SS9uSlKcsWZabhBp2szErkeuuBDgxOUlllwkS92dVaWRnMmwysPhcEgHKB8rUe3BHg/GnZC1eo1hbTZv4YhfoA==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5372,6 +5321,7 @@ "version": "0.15.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.15.0.tgz", "integrity": "sha512-JWVKdNLpu1skqZQA//jKOcKdJC66TWKqa2FUFq70rKohvaSq47pmXlnabNO+B/BvLfmidfiaN35XakT5RyMl2Q==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0" @@ -5387,6 +5337,7 @@ "version": "0.39.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz", "integrity": "sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5401,6 +5352,7 @@ "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.43.0.tgz", "integrity": "sha512-aI3YMmC2McGd8KW5du1a2gBA0iOMOGLqg4s9YjzwbjFwjlmMNFSK1P3AIg374GWg823RPUGfVTIgZ/juk9CVOA==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5415,6 +5367,7 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz", "integrity": "sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5431,6 +5384,7 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz", "integrity": "sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/instrumentation": "0.53.0", @@ -5448,6 +5402,7 @@ "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz", "integrity": "sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/redis-common": "^0.36.2", @@ -5464,6 +5419,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.3.0.tgz", "integrity": "sha512-UnkZueYK1ise8FXQeKlpBd7YYUtC7mM8J0wzUSccEfc/G8UqHQqAzIyYCUOUPUKp8GsjLnWOOK/3hJc4owb7Jg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0" @@ -5479,6 +5435,7 @@ "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz", "integrity": "sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5510,6 +5467,7 @@ "version": "0.47.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz", "integrity": "sha512-yqyXRx2SulEURjgOQyJzhCECSh5i1uM49NUaq9TqLd6fA7g26OahyJfsr9NE38HFqGRHpi4loyrnfYGdrsoVjQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/sdk-metrics": "^1.9.1", @@ -5526,6 +5484,7 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz", "integrity": "sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5542,6 +5501,7 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz", "integrity": "sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5558,6 +5518,7 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz", "integrity": "sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5574,6 +5535,7 @@ "version": "0.40.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz", "integrity": "sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0" @@ -5589,6 +5551,7 @@ "version": "0.44.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz", "integrity": "sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5607,6 +5570,7 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz", "integrity": "sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/redis-common": "^0.36.2", @@ -5623,6 +5587,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz", "integrity": "sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0" @@ -5638,6 +5603,7 @@ "version": "0.36.2", "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", + "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -5646,6 +5612,7 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/semantic-conventions": "1.27.0" @@ -5661,6 +5628,7 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/resources": "1.26.0" @@ -5676,6 +5644,7 @@ "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.26.0.tgz", "integrity": "sha512-olWQldtvbK4v22ymrKLbIcBi9L2SpMO84sCPY54IVsJhP9fRsxJT194C/AVaAuJzLE30EdhhM1VmvVYR7az+cw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/resources": "1.26.0", @@ -5692,6 +5661,7 @@ "version": "1.27.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -5700,6 +5670,7 @@ "version": "0.40.1", "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.1.0" }, @@ -5720,18 +5691,19 @@ } }, "node_modules/@orama/orama": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-2.1.0.tgz", - "integrity": "sha512-6Z6acBHmXGhp2Dom0ZvGJsJ1tkCwvs+uqNZUnhBbUTDvX4U1EMSGiTZt3fJFXy1enLKse6lOpG+E76/MnQIdBw==", + "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", "engines": { "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==", + "version": "1.3.17", + "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.17.tgz", + "integrity": "sha512-6o2NmRwaKwog39/9KEKVait1P3vRL/9sKMviewLBv+GD+av3MJQ+3yC6SPil7Ti354S2DizmFh3xScgon6TyXg==", + "license": "ISC", "dependencies": { "@orama/orama": "^2.0.16", "@paralleldrive/cuid2": "^2.2.1", @@ -5841,6 +5813,7 @@ "version": "5.19.1", "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.19.1.tgz", "integrity": "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.8", "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0", @@ -5851,6 +5824,7 @@ "version": "0.52.1", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -5862,6 +5836,7 @@ "version": "0.52.1", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.52.1", "@types/shimmer": "^1.0.2", @@ -5939,6 +5914,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", + "license": "MIT", "dependencies": { "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.0", @@ -5960,20 +5936,6 @@ } } }, - "node_modules/@radix-ui/react-avatar/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-collection": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", @@ -6000,6 +5962,21 @@ } } }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "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-compose-refs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", @@ -6016,9 +5993,9 @@ } }, "node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "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": "*", @@ -6034,6 +6011,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", + "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", @@ -6065,10 +6043,11 @@ } } }, - "node_modules/@radix-ui/react-dialog/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==", + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -6079,10 +6058,11 @@ } } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "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", @@ -6105,10 +6085,40 @@ } } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards": { + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", + "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "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-id": "1.1.0", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.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-focus-guards": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -6119,13 +6129,15 @@ } } }, - "node_modules/@radix-ui/react-dialog/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-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "license": "MIT", "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", "@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" }, "peerDependencies": { "@types/react": "*", @@ -6142,229 +6154,71 @@ } } }, - "node_modules/@radix-ui/react-dialog/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-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", "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" + "react": "^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-dialog/node_modules/react-remove-scroll": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", - "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "node_modules/@radix-ui/react-label": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", + "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", + "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.6", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@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 - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", - "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", - "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-dismissable-layer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", - "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", - "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" - }, - "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-dropdown-menu": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz", - "integrity": "sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.1", - "@radix-ui/react-primitive": "2.0.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-focus-guards": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", - "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", - "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-focus-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", - "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "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-id": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "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-label": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", - "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.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 + }, + "@types/react-dom": { "optional": true } } }, "node_modules/@radix-ui/react-menu": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.1.tgz", - "integrity": "sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", + "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", "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.0", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "1.1.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-roving-focus": "1.1.0", "@radix-ui/react-slot": "1.1.0", "@radix-ui/react-use-callback-ref": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" + "react-remove-scroll": "2.6.0" }, "peerDependencies": { "@types/react": "*", @@ -6413,10 +6267,25 @@ } } }, + "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "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-portal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", - "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", + "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", "license": "MIT", "dependencies": { "@radix-ui/react-primitive": "2.0.0", @@ -6438,9 +6307,9 @@ } }, "node_modules/@radix-ui/react-presence": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", - "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.0", @@ -6515,10 +6384,26 @@ } } }, + "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "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-scroll-area": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz", "integrity": "sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==", + "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.0", @@ -6545,47 +6430,11 @@ } } }, - "node_modules/@radix-ui/react-scroll-area/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-scroll-area/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-select": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", + "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.0", @@ -6604,192 +6453,10 @@ "@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-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.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-select/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-select/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-select/node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", - "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", - "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-select/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-select/node_modules/react-remove-scroll": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", - "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", - "dependencies": { - "react-remove-scroll-bar": "^2.3.6", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", - "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0" - }, - "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-tabs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.0.tgz", - "integrity": "sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.0", - "@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==", - "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" + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" }, "peerDependencies": { "@types/react": "*", @@ -6806,10 +6473,14 @@ } } }, - "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==", + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -6820,39 +6491,20 @@ } } }, - "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-dismissable-layer": { + "node_modules/@radix-ui/react-tabs": { "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==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", + "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", + "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" - }, - "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-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@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-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -6869,13 +6521,24 @@ } } }, - "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==", + "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-use-layout-effect": "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": "*", @@ -7142,9 +6805,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -7169,6 +6832,13 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@rushstack/eslint-patch": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", @@ -7188,6 +6858,64 @@ "tailwindcss": "^3.0.1" } }, + "node_modules/@sentry-internal/browser-utils": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.34.0.tgz", + "integrity": "sha512-4AcYOzPzD1tL5eSRQ/GpKv5enquZf4dMVUez99/Bh3va8qiJrNP55AcM7UzZ7WZLTqKygIYruJTU5Zu2SpEAPQ==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/feedback": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.34.0.tgz", + "integrity": "sha512-aYSM2KPUs0FLPxxbJCFSwCYG70VMzlT04xepD1Y/tTlPPOja/02tSv2tyOdZbv8Uw7xslZs3/8Lhj74oYcTBxw==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/replay": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.34.0.tgz", + "integrity": "sha512-EoMh9NYljNewZK1quY23YILgtNdGgrkzJ9TPsj6jXUG0LZ0Q7N7eFWd0xOEDBvFxrmI3cSXF1i4d1sBb+eyKRw==", + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "8.34.0", + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/replay-canvas": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.34.0.tgz", + "integrity": "sha512-x8KhZcCDpbKHqFOykYXiamX6x0LRxv6N1OJHoH+XCrMtiDBZr4Yo30d/MaS6rjmKGMtSRij30v+Uq+YWIgxUrg==", + "license": "MIT", + "dependencies": { + "@sentry-internal/replay": "8.34.0", + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" + }, + "engines": { + "node": ">=14.18" + } + }, "node_modules/@sentry/babel-plugin-component-annotate": { "version": "2.22.3", "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.3.tgz", @@ -7197,6 +6925,24 @@ "node": ">= 14" } }, + "node_modules/@sentry/browser": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.34.0.tgz", + "integrity": "sha512-3HHG2NXxzHq1lVmDy2uRjYjGNf9NsJsTPlOC70vbQdOb+S49EdH/XMPy+J3ruIoyv6Cu0LwvA6bMOM6rHZOgNQ==", + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "8.34.0", + "@sentry-internal/feedback": "8.34.0", + "@sentry-internal/replay": "8.34.0", + "@sentry-internal/replay-canvas": "8.34.0", + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" + }, + "engines": { + "node": ">=14.18" + } + }, "node_modules/@sentry/bundler-plugin-core": { "version": "2.22.3", "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.3.tgz", @@ -7302,9 +7048,9 @@ } }, "node_modules/@sentry/cli": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.36.1.tgz", - "integrity": "sha512-gzK5uQKDWKhyH5udoB5+oaUNrS//urWyaXgKvHKz4gFfl744HuKY9dpLPP2nMnf0zLGmGM6xJnMXLqILq0mtxw==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.37.0.tgz", + "integrity": "sha512-fM3V4gZRJR/s8lafc3O07hhOYRnvkySdPkvL/0e0XW0r+xRwqIAgQ5ECbsZO16A5weUiXVSf03ztDL1FcmbJCQ==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -7321,19 +7067,19 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.36.1", - "@sentry/cli-linux-arm": "2.36.1", - "@sentry/cli-linux-arm64": "2.36.1", - "@sentry/cli-linux-i686": "2.36.1", - "@sentry/cli-linux-x64": "2.36.1", - "@sentry/cli-win32-i686": "2.36.1", - "@sentry/cli-win32-x64": "2.36.1" + "@sentry/cli-darwin": "2.37.0", + "@sentry/cli-linux-arm": "2.37.0", + "@sentry/cli-linux-arm64": "2.37.0", + "@sentry/cli-linux-i686": "2.37.0", + "@sentry/cli-linux-x64": "2.37.0", + "@sentry/cli-win32-i686": "2.37.0", + "@sentry/cli-win32-x64": "2.37.0" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.36.1.tgz", - "integrity": "sha512-JOHQjVD8Kqxm1jUKioAP5ohLOITf+Dh6+DBz4gQjCNdotsvNW5m63TKROwq2oB811p+Jzv5304ujmN4cAqW1Ww==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.37.0.tgz", + "integrity": "sha512-CsusyMvO0eCPSN7H+sKHXS1pf637PWbS4rZak/7giz/z31/6qiXmeMlcL3f9lLZKtFPJmXVFO9uprn1wbBVF8A==", "license": "BSD-3-Clause", "optional": true, "os": [ @@ -7344,9 +7090,9 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.36.1.tgz", - "integrity": "sha512-gvEOKN0fWL2AVqUBKHNXPRZfJNvKTs8kQhS8cQqahZGgZHiPCI4BqW45cKMq+ZTt1UUbLmt6khx5Dz7wi+0i5A==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.37.0.tgz", + "integrity": "sha512-Dz0qH4Yt+gGUgoVsqVt72oDj4VQynRF1QB1/Sr8g76Vbi+WxWZmUh0iFwivYVwWxdQGu/OQrE0tx946HToCRyA==", "cpu": [ "arm" ], @@ -7361,9 +7107,9 @@ } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.36.1.tgz", - "integrity": "sha512-R//3ZEkbzvoStr3IA7nxBZNiBYyxOljOqAhgiTnejXHmnuwDzM3TBA2n5vKPE/kBFxboEBEw0UTzTIRb1T0bgw==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.37.0.tgz", + "integrity": "sha512-2vzUWHLZ3Ct5gpcIlfd/2Qsha+y9M8LXvbZE26VxzYrIkRoLAWcnClBv8m4XsHLMURYvz3J9QSZHMZHSO7kAzw==", "cpu": [ "arm64" ], @@ -7378,9 +7124,9 @@ } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.36.1.tgz", - "integrity": "sha512-R7sW5Vk/HacVy2YgQoQB+PwccvFYf2CZVPSFSFm2z7MEfNe77UYHWUq+sjJ4vxWG6HDWGVmaX0fjxyDkE01JRA==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.37.0.tgz", + "integrity": "sha512-MHRLGs4t/CQE1pG+mZBQixyWL6xDZfNalCjO8GMcTTbZFm44S3XRHfYJZNVCgdtnUP7b6OHGcu1v3SWE10LcwQ==", "cpu": [ "x86", "ia32" @@ -7396,9 +7142,9 @@ } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.36.1.tgz", - "integrity": "sha512-UMr3ik8ksA7zQfbzsfwCb+ztenLnaeAbX94Gp+bzANZwPfi/vVHf2bLyqsBs4OyVt9SPlN1bbM/RTGfMjZ3JOw==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.37.0.tgz", + "integrity": "sha512-k76ClefKZaDNJZU/H3mGeR8uAzAGPzDRG/A7grzKfBeyhP3JW09L7Nz9IQcSjCK+xr399qLhM2HFCaPWQ6dlMw==", "cpu": [ "x64" ], @@ -7413,9 +7159,9 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.36.1.tgz", - "integrity": "sha512-CflvhnvxPEs5GWQuuDtYSLqPrBaPbcSJFlBuUIb+8WNzRxvVfjgw1qzfZmkQqABqiy/YEsEekllOoMFZAvCcVA==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.37.0.tgz", + "integrity": "sha512-FFyi5RNYQQkEg4GkP2f3BJcgQn0F4fjFDMiWkjCkftNPXQG+HFUEtrGsWr6mnHPdFouwbYg3tEPUWNxAoypvTw==", "cpu": [ "x86", "ia32" @@ -7430,9 +7176,9 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.36.1.tgz", - "integrity": "sha512-wWqht2xghcK3TGnooHZSzA3WSjdtno/xFjZLvWmw38rblGwgKMxLZnlxV6uDyS+OJ6CbfDTlCRay/0TIqA0N8g==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.37.0.tgz", + "integrity": "sha512-nSMj4OcfQmyL+Tu/jWCJwhKCXFsCZW1MUk6wjjQlRt9SDLfgeapaMlK1ZvT1eZv5ZH6bj3qJfefwj4U8160uOA==", "cpu": [ "x64" ], @@ -7445,6 +7191,176 @@ "node": ">=10" } }, + "node_modules/@sentry/core": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.34.0.tgz", + "integrity": "sha512-adrXCTK/zsg5pJ67lgtZqdqHvyx6etMjQW3P82NgWdj83c8fb+zH+K79Z47pD4zQjX0ou2Ws5nwwi4wJbz4bfA==", + "license": "MIT", + "dependencies": { + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/nextjs": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.34.0.tgz", + "integrity": "sha512-REHE3E21Mnm92B3BfJz3GTMsaZM8vaDJAe7RlAMDltESRECv+ELJ5qVRLgAp8Bd6w4mG8IRNINmK2UwHrAIi9g==", + "license": "MIT", + "dependencies": { + "@opentelemetry/instrumentation-http": "0.53.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@rollup/plugin-commonjs": "26.0.1", + "@sentry-internal/browser-utils": "8.34.0", + "@sentry/core": "8.34.0", + "@sentry/node": "8.34.0", + "@sentry/opentelemetry": "8.34.0", + "@sentry/react": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0", + "@sentry/vercel-edge": "8.34.0", + "@sentry/webpack-plugin": "2.22.3", + "chalk": "3.0.0", + "resolve": "1.22.8", + "rollup": "3.29.5", + "stacktrace-parser": "^0.1.10" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0", + "webpack": ">=5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/@sentry/node": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.34.0.tgz", + "integrity": "sha512-Q7BPp7Y8yCcwD620xoziWSOuPi/PCIdttkczvB0BGzBRYh2s702h+qNusRijRpVNZmzmYOo9m1x7Y1O/b8/v2A==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.25.1", + "@opentelemetry/core": "^1.25.1", + "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation-amqplib": "^0.42.0", + "@opentelemetry/instrumentation-connect": "0.39.0", + "@opentelemetry/instrumentation-dataloader": "0.12.0", + "@opentelemetry/instrumentation-express": "0.42.0", + "@opentelemetry/instrumentation-fastify": "0.39.0", + "@opentelemetry/instrumentation-fs": "0.15.0", + "@opentelemetry/instrumentation-generic-pool": "0.39.0", + "@opentelemetry/instrumentation-graphql": "0.43.0", + "@opentelemetry/instrumentation-hapi": "0.41.0", + "@opentelemetry/instrumentation-http": "0.53.0", + "@opentelemetry/instrumentation-ioredis": "0.43.0", + "@opentelemetry/instrumentation-kafkajs": "0.3.0", + "@opentelemetry/instrumentation-koa": "0.43.0", + "@opentelemetry/instrumentation-lru-memoizer": "0.40.0", + "@opentelemetry/instrumentation-mongodb": "0.47.0", + "@opentelemetry/instrumentation-mongoose": "0.42.0", + "@opentelemetry/instrumentation-mysql": "0.41.0", + "@opentelemetry/instrumentation-mysql2": "0.41.0", + "@opentelemetry/instrumentation-nestjs-core": "0.40.0", + "@opentelemetry/instrumentation-pg": "0.44.0", + "@opentelemetry/instrumentation-redis-4": "0.42.0", + "@opentelemetry/instrumentation-undici": "0.6.0", + "@opentelemetry/resources": "^1.26.0", + "@opentelemetry/sdk-trace-base": "^1.26.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@prisma/instrumentation": "5.19.1", + "@sentry/core": "8.34.0", + "@sentry/opentelemetry": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0", + "import-in-the-middle": "^1.11.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/opentelemetry": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.34.0.tgz", + "integrity": "sha512-WS91L+HVKGVIzOgt0szGp+24iKOs86BZsAHGt0HWnMR4kqWP6Ak+TLvqWDCxnuzniZMxdewDGA8p5hrBAPsmsA==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/core": "^1.25.1", + "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/sdk-trace-base": "^1.26.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "node_modules/@sentry/react": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.34.0.tgz", + "integrity": "sha512-gIgzhj7h67C+Sdq2ul4fOSK142Gf0uV99bqHRdtIiUlXw9yjzZQY5TKTtzbOaevn7qBJ0xrRKtIRUbOBMl0clw==", + "license": "MIT", + "dependencies": { + "@sentry/browser": "8.34.0", + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0", + "hoist-non-react-statics": "^3.3.2" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "react": "^16.14.0 || 17.x || 18.x || 19.x" + } + }, + "node_modules/@sentry/types": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.34.0.tgz", + "integrity": "sha512-zLRc60CzohGCo6zNsNeQ9JF3SiEeRE4aDCP9fDDdIVCOKovS+mn1rtSip0qd0Vp2fidOu0+2yY0ALCz1A3PJSQ==", + "license": "MIT", + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/utils": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.34.0.tgz", + "integrity": "sha512-W1KoRlFUjprlh3t86DZPFxLfM6mzjRzshVfMY7vRlJFymBelJsnJ3A1lPeBZM9nCraOSiw6GtOWu6k5BAkiGIg==", + "license": "MIT", + "dependencies": { + "@sentry/types": "8.34.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/vercel-edge": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.34.0.tgz", + "integrity": "sha512-yF6043FcVO9GqPawCJZp0psEL8iF9+5bOlAdQydCyaj2BtDgFvAeBVI19qlDeAHhqsXNfTD0JsIox2aJPNupwg==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" + }, + "engines": { + "node": ">=14.18" + } + }, "node_modules/@sentry/webpack-plugin": { "version": "2.22.3", "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.3.tgz", @@ -7463,43 +7379,44 @@ } }, "node_modules/@shikijs/core": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.5.tgz", - "integrity": "sha512-JDgFZbJvfZ1g0lRVHtPTv6n2MwWnbTSGwncL/Qmlg7BZBzHCcDY2CxYGkNUm7k+lljOrFzXFGh38s8CRRZH+TQ==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.7.tgz", + "integrity": "sha512-ZnIDxFu/yvje3Q8owSHaEHd+bu/jdWhHAaJ17ggjXofHx5rc4bhpCSW+OjC6smUBi5s5dd023jWtZ1gzMu/yrw==", "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.17.5", - "@shikijs/engine-oniguruma": "1.17.5", - "@shikijs/types": "1.17.5", + "@shikijs/engine-javascript": "1.17.7", + "@shikijs/engine-oniguruma": "1.17.7", + "@shikijs/types": "1.17.7", "@shikijs/vscode-textmate": "^9.2.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.2" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.5.tgz", - "integrity": "sha512-129knB7yGxq51i5f9ci1lsrC/9rJwo7yzOmHVjQIRk+e1C0caaSwzm4mhLJ506ui0vEmQZ9LzY6a/crW1UsReA==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.7.tgz", + "integrity": "sha512-wwSf7lKPsm+hiYQdX+1WfOXujtnUG6fnN4rCmExxa4vo+OTmvZ9B1eKauilvol/LHUPrQgW12G3gzem7pY5ckw==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.17.5", - "oniguruma-to-js": "0.4.0" + "@shikijs/types": "1.17.7", + "@shikijs/vscode-textmate": "^9.2.2", + "oniguruma-to-js": "0.4.3" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.5.tgz", - "integrity": "sha512-GcuDWdUcs06sCoRS/JwbcO8M55MOvirTs3wIR7E6pMoePJWgAxhIYDQHURvSrgKgyUrTl3EKwujHljivS5BJVA==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.7.tgz", + "integrity": "sha512-pvSYGnVeEIconU28NEzBXqSQC/GILbuNbAHwMoSfdTBrobKAsV1vq2K4cAgiaW1TJceLV9QMGGh18hi7cCzbVQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.17.5", + "@shikijs/types": "1.17.7", "@shikijs/vscode-textmate": "^9.2.2" } }, "node_modules/@shikijs/types": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.5.tgz", - "integrity": "sha512-xDIczjZ7QB6opNrCObX/6/78Jb/BFglRPo7E7f9swd1TCabhumOLsv23103pNUOMZrJYARUkHJpEx7ryFLM3FA==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.7.tgz", + "integrity": "sha512-+qA4UyhWLH2q4EFd+0z4K7GpERDU+c+CN2XYD3sC+zjvAr5iuwD1nToXZMt1YODshjkEGEDV86G7j66bKjqDdg==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^9.2.2", @@ -7507,9 +7424,9 @@ } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz", - "integrity": "sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", + "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==", "license": "MIT" }, "node_modules/@sinclair/typebox": { @@ -7544,6 +7461,7 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.5.tgz", "integrity": "sha512-2eCVobUUvY1Rq7sp1U8Mx8t44VXwvi0E+hqyrsqOx5TTSC/FUQ+hNAX6GSYUcFIyQQ1ORpKNlUjAAdjxBv1ZHQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "dequal": "^2.0.2", @@ -7563,6 +7481,7 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.5.tgz", "integrity": "sha512-GtTy/A+mG7vDOahQr2avT4dpWtCRiFDSYcWyuQOZm10y8VDDw157HQM+FuhxjV9Owrrohy9F24oBUwRG8H3b5A==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "@storybook/instrumenter": "8.3.5", @@ -7583,6 +7502,7 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.3.5.tgz", "integrity": "sha512-kXHKAZvAtMoOR1XFGTo5/T8anE9x7W8Ddpof2wyi+du5HscFiEW7TesWdvNgBUR7wAaiR21aW2S4jC72a6gTCw==", "dev": true, + "license": "MIT", "dependencies": { "ts-dedent": "^2.0.0" }, @@ -7599,6 +7519,7 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.5.tgz", "integrity": "sha512-FSWydoPiVWFXEittG7O1YgvuaqoU9Vb+qoq9XfP/hvQHHMDcMZvC40JaV8AnJeTXaM7ngIjcn9XDEfGbFfOzXw==", "dev": true, + "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" }, @@ -7615,6 +7536,7 @@ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.5.tgz", "integrity": "sha512-rhmfdiSlDn3Arki7IMYk11PO29rYuYM4LZ8GlNqREU7VUl/8Vngo/jFIa4pKaIns3ql1RrwzO1wm9JvuL/4ydA==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/core-webpack": "8.3.5", "@types/node": "^22.0.0", @@ -7662,6 +7584,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -7671,6 +7594,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -7685,6 +7609,7 @@ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.3.5.tgz", "integrity": "sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7698,6 +7623,7 @@ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.5.tgz", "integrity": "sha512-GOGfTvdioNa/n+Huwg4u/dsyYyBcM+gEcdxi3B7i5x4yJ3I912KoVshumQAOF2myKSRdI8h8aGWdx7nnjd0+5Q==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@types/express": "^4.17.21", @@ -7723,6 +7649,7 @@ "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.5.tgz", "integrity": "sha512-mN8BHNc6lSGUf/nKgDr6XoTt1cX+Tap9RnKMUiROCDzfVlJPeJBrG4qrTOok7AwObzeDl9DNFyun6+pVgXJe7A==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^22.0.0", "ts-dedent": "^2.0.0" @@ -7740,6 +7667,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -7766,6 +7694,7 @@ "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.5.tgz", "integrity": "sha512-NLDXai5y2t1ITgHVK9chyL0rMFZbICCOGcnTbyWhkLbiEWZKPJ8FuB8+g+Ba6zwtCve1A1Cnb4O2LOWy7TgWQw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "@vitest/utils": "^2.0.5", @@ -7784,6 +7713,7 @@ "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.5.tgz", "integrity": "sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7797,6 +7727,7 @@ "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.3.5.tgz", "integrity": "sha512-YMjDSVd7BHIvj6oLMEFMKRvfZ83INxZinxtrx4ZZXGe+5iP8j7rcV7D67lxKQKWNy36d9Foj4pjT85yYj5s+ZQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -7865,9 +7796,9 @@ } }, "node_modules/@storybook/nextjs/node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7894,6 +7825,7 @@ "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.5.tgz", "integrity": "sha512-laS9CiZrZ4CSnBTBfkBba3hmlDhzcjIfCvx8/rk3SZ+zh93NpqXixzRt6m0UH2po63dpdu21nXrsW5Cfs88Ypw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/core-webpack": "8.3.5", "@storybook/react": "8.3.5", @@ -7932,6 +7864,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -7941,6 +7874,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -7955,6 +7889,7 @@ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.5.tgz", "integrity": "sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7968,6 +7903,7 @@ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.3.5.tgz", "integrity": "sha512-kuBPe/wBin10SWr4EWPKxiTRGQ4RD2etGEVWVQLqVpOuJp/J2hVvXQHtCfZXU4TZT5x4PBbPRswbr58+XlF+kQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/components": "^8.3.5", "@storybook/global": "^5.0.0", @@ -8018,6 +7954,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", @@ -8037,6 +7974,7 @@ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.5.tgz", "integrity": "sha512-Hf0UitJ/K0C7ajooooUK/PxOR4ihUWqsC7iCV1Gqth8U37dTeLMbaEO4PBwu0VQ+Ufg0N8BJLWfg7o6G4hrODw==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -8051,13 +7989,15 @@ "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@storybook/react/node_modules/@types/node": { "version": "22.7.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -8067,6 +8007,7 @@ "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.5.tgz", "integrity": "sha512-1BXWsUGWk9FiKKelZZ55FDJdeoL8uRBHbjTYBRM2xJLhdNSvGzI4Tb3bkmxPpGn72Ua6AyldhlTxr2BpUFKOHA==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@storybook/global": "^5.0.0", @@ -8091,6 +8032,7 @@ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.5.tgz", "integrity": "sha512-9HmDDyC691oqfg4RziIM9ElsS2HITaxmH7n/yeUPtuirkPdAQzqOzhvH/Sa0qOhifzs8VjR+Gd/a/ZQ+S38r7w==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -8307,6 +8249,7 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -8355,18 +8298,20 @@ "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/escodegen": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz", "integrity": "sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "license": "MIT" }, "node_modules/@types/estree-jsx": { @@ -8383,6 +8328,7 @@ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -8395,6 +8341,7 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -8425,13 +8372,15 @@ "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/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/is-empty": { "version": "1.2.3", @@ -8531,6 +8480,13 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/mdast": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", @@ -8556,7 +8512,8 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", @@ -8568,6 +8525,7 @@ "version": "2.15.26", "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8595,12 +8553,14 @@ "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/pg": { "version": "8.6.1", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", + "license": "MIT", "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -8611,43 +8571,47 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", + "license": "MIT", "dependencies": { "@types/pg": "*" } }, "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", "devOptional": true, "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", + "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.11", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", "devOptional": true, + "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -8658,7 +8622,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", @@ -8672,6 +8637,7 @@ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -8682,6 +8648,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -8691,7 +8658,8 @@ "node_modules/@types/shimmer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", + "license": "MIT" }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -8738,34 +8706,32 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz", - "integrity": "sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.9.0.tgz", + "integrity": "sha512-Y1n621OCy4m7/vTXNlCbMVp87zSd7NH0L9cXD8aIpOaNlzeWxIK4+Q19A68gSmTNRZn92UjocVUWDthGxtqHFg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/type-utils": "7.2.0", - "@typescript-eslint/utils": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.9.0", + "@typescript-eslint/type-utils": "8.9.0", + "@typescript-eslint/utils": "8.9.0", + "@typescript-eslint/visitor-keys": "8.9.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -8774,27 +8740,27 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", - "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.9.0.tgz", + "integrity": "sha512-U+BLn2rqTTHnc4FL3FJjxaXptTxmf9sNftJK62XLz4+GxG3hLHm/SUNaaXP5Y4uTiuYoL5YLy4JBCJe3+t8awQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", + "@typescript-eslint/scope-manager": "8.9.0", + "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/typescript-estree": "8.9.0", + "@typescript-eslint/visitor-keys": "8.9.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -8803,17 +8769,17 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", - "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.9.0.tgz", + "integrity": "sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0" + "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/visitor-keys": "8.9.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -8821,27 +8787,24 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz", - "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.9.0.tgz", + "integrity": "sha512-JD+/pCqlKqAk5961vxCluK+clkppHY07IbV3vett97KOV+8C6l+CPEPwpUuiMwgbOz/qrN3Ke4zzjqbT+ls+1Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/utils": "7.2.0", + "@typescript-eslint/typescript-estree": "8.9.0", + "@typescript-eslint/utils": "8.9.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -8849,13 +8812,13 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", - "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.9.0.tgz", + "integrity": "sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==", "dev": true, "license": "MIT", "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -8863,14 +8826,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", - "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.9.0.tgz", + "integrity": "sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/visitor-keys": "8.9.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8891,51 +8854,6 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", - "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/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.5.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/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -8953,43 +8871,40 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz", - "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-PKgMmaSo/Yg/F7kIZvrgrWa1+Vwn036CdNUvYFEkYbPwOH4i8xvkaRlu148W3vtheWK9ckKRIz7PBP5oUlkrvQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "8.9.0", + "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/typescript-estree": "8.9.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", - "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.9.0.tgz", + "integrity": "sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.2.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "8.9.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -9175,9 +9090,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.0.tgz", - "integrity": "sha512-7sxf2F3DNYatgmzXXcTh6cq+/fxwB47RIQqZJFoSH883wnVAoccSRT6g+dTKemUBo8Q5N4OYYj1EBXLuRKvp3Q==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz", + "integrity": "sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9201,13 +9116,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.0.tgz", - "integrity": "sha512-rreyfVe0PuNqJfKYUwfPDfi6rrp0VSu0Wgvp5WBqJonP+4NvXHk48X6oBam1Lj47Hy6jbJtnMj3OcRdrkTP0tA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.3.tgz", + "integrity": "sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.0", + "@vitest/pretty-format": "2.1.3", "loupe": "^3.1.1", "tinyrainbow": "^1.2.0" }, @@ -9216,13 +9131,13 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.4.tgz", - "integrity": "sha512-oNwn+BAt3n9dK9uAYvI+XGlutwuTq/wfj4xCBaZCqwwVIGtD7D6ViihEbyYZrDHIHTDE3Q6oL3/hqmAyFEy9DQ==", + "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.4", + "@vue/shared": "3.5.12", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" @@ -9235,29 +9150,29 @@ "license": "MIT" }, "node_modules/@vue/compiler-dom": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.4.tgz", - "integrity": "sha512-yP9RRs4BDLOLfldn6ah+AGCNovGjMbL9uHvhDHf5wan4dAHLnFGOkqtfE7PPe4HTXIqE7l/NILdYw53bo1C8jw==", + "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.4", - "@vue/shared": "3.5.4" + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.4.tgz", - "integrity": "sha512-P+yiPhL+NYH7m0ZgCq7AQR2q7OIE+mpAEgtkqEeH9oHSdIRvUO+4X6MPvblJIWcoe4YC5a2Gdf/RsoyP8FFiPQ==", + "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.4", - "@vue/compiler-dom": "3.5.4", - "@vue/compiler-ssr": "3.5.4", - "@vue/shared": "3.5.4", + "@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.44", + "postcss": "^8.4.47", "source-map-js": "^1.2.0" } }, @@ -9268,63 +9183,63 @@ "license": "MIT" }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.4.tgz", - "integrity": "sha512-acESdTXsxPnYr2C4Blv0ggx5zIFMgOzZmYU2UgvIff9POdRGbRNBHRyzHAnizcItvpgerSKQbllUc9USp3V7eg==", + "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.4", - "@vue/shared": "3.5.4" + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/reactivity": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.4.tgz", - "integrity": "sha512-HKKbEuP7tYSGCq4e4nK6ZW6l5hyG66OUetefBp4budUyjvAYsnQDf+bgFzg2RAgnH0CInyqXwD9y47jwJEHrQw==", + "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.4" + "@vue/shared": "3.5.12" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.4.tgz", - "integrity": "sha512-f3ek2sTA0AFu0n+w+kCtz567Euqqa3eHewvo4klwS7mWfSj/A+UmYTwsnUFo35KeyAFY60JgrCGvEBsu1n/3LA==", + "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.4", - "@vue/shared": "3.5.4" + "@vue/reactivity": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.4.tgz", - "integrity": "sha512-ofyc0w6rbD5KtjhP1i9hGOKdxGpvmuB1jprP7Djlj0X7R5J/oLwuNuE98GJ8WW31Hu2VxQHtk/LYTAlW8xrJdw==", + "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.4", - "@vue/runtime-core": "3.5.4", - "@vue/shared": "3.5.4", + "@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.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.4.tgz", - "integrity": "sha512-FbjV6DJLgKRetMYFBA1UXCroCiED/Ckr53/ba9wivyd7D/Xw9fpo0T6zXzCnxQwyvkyrL7y6plgYhWhNjGxY5g==", + "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.4", - "@vue/shared": "3.5.4" + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12" }, "peerDependencies": { - "vue": "3.5.4" + "vue": "3.5.12" } }, "node_modules/@vue/shared": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.4.tgz", - "integrity": "sha512-L2MCDD8l7yC62Te5UUyPVpmexhL9ipVnYRw9CsWfm/BGRL5FwDX4a25bcJ/OJSD3+Hx+k/a8LDKcG2AFdJV3BA==", + "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": { @@ -9553,9 +9468,9 @@ } }, "node_modules/acorn-globals/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "dev": true, "license": "MIT", "bin": { @@ -9592,6 +9507,7 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -9906,6 +9822,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", @@ -10032,6 +9969,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" }, @@ -10194,9 +10132,9 @@ } }, "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dev": true, "license": "MIT", "dependencies": { @@ -10530,6 +10468,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" }, @@ -10664,7 +10603,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", @@ -10741,14 +10681,18 @@ } }, "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/browserify-sign": { @@ -10831,9 +10775,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "funding": [ { "type": "opencollective", @@ -10850,8 +10794,8 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", "node-releases": "^2.0.18", "update-browserslist-db": "^1.1.0" }, @@ -10952,6 +10896,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -10982,6 +10927,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" @@ -11007,9 +10953,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001660", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", - "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", "funding": [ { "type": "opencollective", @@ -11031,6 +10977,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" } @@ -11233,6 +11180,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" }, @@ -11245,6 +11193,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" } @@ -11495,6 +11444,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } @@ -11631,9 +11581,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "license": "MIT", "engines": { @@ -11868,9 +11818,9 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, "license": "MIT", "engines": { @@ -11882,6 +11832,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", @@ -11917,6 +11868,7 @@ "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", @@ -11947,6 +11899,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" }, @@ -12302,6 +12255,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -12320,6 +12274,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" } @@ -12517,16 +12472,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": { @@ -12541,6 +12496,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" } @@ -12550,6 +12506,7 @@ "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", @@ -12564,6 +12521,7 @@ "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" } @@ -12591,7 +12549,8 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "4.0.0", @@ -12612,6 +12571,7 @@ "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" }, @@ -12627,6 +12587,7 @@ "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", @@ -12641,6 +12602,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" @@ -12672,9 +12634,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.22", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.22.tgz", - "integrity": "sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==", + "version": "1.5.39", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.39.tgz", + "integrity": "sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==", "license": "ISC" }, "node_modules/elliptic": { @@ -12744,6 +12706,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", @@ -12889,6 +12852,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" @@ -12901,6 +12865,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -12928,9 +12893,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", + "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", "dev": true, "license": "MIT", "dependencies": { @@ -12941,12 +12906,12 @@ "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", "has-symbols": "^1.0.3", "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", + "iterator.prototype": "^1.1.3", "safe-array-concat": "^1.1.2" }, "engines": { @@ -13021,6 +12986,7 @@ "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -13059,6 +13025,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" }, @@ -13129,40 +13096,46 @@ } }, "node_modules/eslint": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", - "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.18.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.10.0", - "@eslint/plugin-kit": "^0.1.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", + "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.2", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", - "esquery": "^1.5.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", + "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", @@ -13174,39 +13147,32 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-next": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.14.tgz", - "integrity": "sha512-TXwyjGICAlWC9O0OufS3koTsBKQH8l1xt3SY/aDuvtKHIwjTHplJKWVb1WOEX0OsDaxGbFXmfD2EY1sNfG0Y/w==", + "version": "15.0.0-rc.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.0.0-rc.1.tgz", + "integrity": "sha512-RhOlMP/dWBYBBzYjh6ya4OYSxUhkzsoQmbkLvifZgBflD/XCQ+WUd/D1qdSTI9BBkUEeDZ7GOaN5UaIACkQeRA==", "dev": true, + "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "14.2.14", - "@rushstack/eslint-patch": "^1.3.3", + "@next/eslint-plugin-next": "15.0.0-rc.1", + "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", "typescript": ">=3.3.1" }, "peerDependenciesMeta": { @@ -13215,17 +13181,57 @@ } } }, + "node_modules/eslint-config-next/node_modules/@next/eslint-plugin-next": { + "version": "15.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.0-rc.1.tgz", + "integrity": "sha512-Nz/tMHzuGPYR0uK57+mxLhVFDTKtCK8HeVnPmDp/L1nrgcgICFZUCYHnKDUM9IUQ1XalzYhrLOlizOadpOosIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, "node_modules/eslint-config-next/node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", + "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "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-config-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/eslint-config-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/eslint-import-resolver-node": { @@ -13320,9 +13326,9 @@ } }, "node_modules/eslint-mdx/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "dev": true, "license": "MIT", "bin": { @@ -13364,9 +13370,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", - "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, "license": "MIT", "dependencies": { @@ -13392,29 +13398,37 @@ } }, "node_modules/eslint-plugin-import": { - "name": "eslint-plugin-import-x", - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz", - "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.1.0", - "debug": "^4.3.4", - "doctrine": "^3.0.0", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "get-tsconfig": "^4.7.3", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", - "minimatch": "^9.0.3", - "semver": "^7.6.3", - "stable-hash": "^0.0.4", - "tslib": "^2.6.3" + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=4" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import-x": { @@ -13422,6 +13436,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.3.1.tgz", "integrity": "sha512-5TriWkXulDl486XnYYRgsL+VQoS/7mhN/2ci02iLCuL7gdhbiWxnsuL/NTcaKY9fpMgsMFjWZBtIGW7pb+RX0g==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.1.0", "debug": "^4.3.4", @@ -13441,90 +13456,17 @@ "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/scope-manager": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", - "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", - "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/eslint-plugin-import-x/node_modules/@typescript-eslint/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.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/eslint-plugin-import-x/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", + "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": { - "@typescript-eslint/types": "8.5.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "esutils": "^2.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-import-x/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": ">=6.0.0" } }, "node_modules/eslint-plugin-import-x/node_modules/minimatch": { @@ -13543,106 +13485,84 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-plugin-import/node_modules/@typescript-eslint/scope-manager": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", - "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", + "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": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-import/node_modules/@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/@typescript-eslint/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "minimist": "^1.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/eslint-plugin-import/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", + "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": "MIT", + "license": "ISC", "dependencies": { - "@typescript-eslint/types": "8.5.0", - "eslint-visitor-keys": "^3.4.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "*" } }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "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": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=4" } }, - "node_modules/eslint-plugin-import/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/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, "node_modules/eslint-plugin-jsx-a11y": { @@ -13765,6 +13685,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -13792,18 +13713,6 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0-rc.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc.0.tgz", - "integrity": "sha512-xBc+mRT2KSyzKm78GyaOFPyF4EnSRfTSmre88Ak8jG1HnpNGEiHETbCuXih8Xl796DryrJej/8IdW4oQ+m5kPg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "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/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -13815,19 +13724,6 @@ "concat-map": "0.0.1" } }, - "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==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint-plugin-react/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -13870,14 +13766,14 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.9.0--canary.156.26b630a.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.9.0--canary.156.26b630a.0.tgz", - "integrity": "sha512-DKeYmn75Z4rltmd+sRRX+wJQKuhPkkepxDvNQhqnXG1bqJhWWh5SYSvsAxW8YMSSG8MWh8lPH8OSvcTgE+u8kA==", + "version": "0.10.0--canary.156.ce8985b.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.10.0--canary.156.ce8985b.0.tgz", + "integrity": "sha512-8nFmjhVr4nVKshjsyXVatrLNJt0A6UhIXZqXN8HcRUAlxa03ehHywMif3D2HRRo5Po3Ztmxz+//PeCG4VqOGXg==", "dev": true, "license": "MIT", "dependencies": { "@storybook/csf": "^0.0.1", - "@typescript-eslint/utils": "^5.62.0", + "@typescript-eslint/utils": "^8.8.1", "ts-dedent": "^2.2.0" }, "engines": { @@ -13897,103 +13793,173 @@ "lodash": "^4.17.15" } }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/eslint-scope": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "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/eslint/node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/acorn": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/eslint/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", + "peer": true, + "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": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "node_modules/eslint/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", + "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/eslint/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", + "peer": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "esutils": "^2.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6.0.0" } }, - "node_modules/eslint-plugin-storybook/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-plugin-storybook/node_modules/eslint-visitor-keys": { + "node_modules/eslint/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", + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -14001,89 +13967,54 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-plugin-storybook/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-scope": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", - "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "node_modules/eslint/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", - "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" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/eslint/node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", + "peer": true, "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" + "flat-cache": "^3.0.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -14091,7 +14022,8 @@ "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", + "peer": true }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", @@ -14099,6 +14031,7 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14106,16 +14039,30 @@ "node": "*" } }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", - "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" + "eslint-visitor-keys": "^4.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -14125,9 +14072,9 @@ } }, "node_modules/espree/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "dev": true, "license": "MIT", "bin": { @@ -14399,9 +14346,9 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14410,7 +14357,7 @@ "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -14529,7 +14476,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", @@ -14545,11 +14493,11 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", @@ -14722,6 +14670,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", @@ -14789,6 +14738,7 @@ "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", @@ -14836,6 +14786,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", @@ -14864,6 +14815,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", @@ -14880,6 +14832,7 @@ "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" } @@ -14889,6 +14842,7 @@ "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" @@ -14899,6 +14853,7 @@ "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" @@ -14915,6 +14870,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", @@ -14931,6 +14887,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", @@ -14944,13 +14901,15 @@ "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 + "dev": true, + "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" }, @@ -14963,6 +14922,7 @@ "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", @@ -14981,14 +14941,15 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -15080,7 +15041,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", @@ -15160,9 +15122,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "license": "MIT", "engines": { "node": ">=18" @@ -15171,20 +15133,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -15460,6 +15413,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" @@ -15573,6 +15527,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -15585,6 +15540,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -15597,6 +15553,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -15713,9 +15670,9 @@ } }, "node_modules/hast-util-to-html": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.2.tgz", - "integrity": "sha512-RP5wNpj5nm1Z8cloDv4Sl4RS8jH5HYa0v93YB6Wb4poEzgMo/dAAL0KcT4974dCjcNG5pkLqTImeFHHCwwfY3g==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", + "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -15736,9 +15693,9 @@ } }, "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", - "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz", + "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -15778,9 +15735,9 @@ } }, "node_modules/hast-util-to-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", - "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -15808,6 +15765,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" } @@ -15828,6 +15786,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } @@ -15907,6 +15866,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", @@ -15951,6 +15911,7 @@ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, + "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -15990,6 +15951,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -16002,6 +15964,7 @@ "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" } @@ -16110,6 +16073,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" }, @@ -16195,6 +16159,7 @@ "version": "1.11.2", "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", + "license": "Apache-2.0", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -16203,9 +16168,10 @@ } }, "node_modules/import-in-the-middle/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -16217,6 +16183,7 @@ "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -16368,14 +16335,15 @@ } }, "node_modules/intl-messageformat": { - "version": "10.5.14", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", - "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.0.tgz", + "integrity": "sha512-2P06M9jFTqJnEQzE072VGPjbAx6ZG1YysgopAwc8ui0ajSjtwX1MeQ6bXFXIzKcNENJTizKkcJIcZ0zlpl1zSg==", + "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.8", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.0", + "@formatjs/fast-memoize": "2.2.1", + "@formatjs/icu-messageformat-parser": "2.7.10", + "tslib": "^2.7.0" } }, "node_modules/invariant": { @@ -16632,6 +16600,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" }, @@ -17052,6 +17021,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" }, @@ -17170,9 +17140,9 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17181,12 +17151,15 @@ "has-symbols": "^1.0.3", "reflect.getprototypeof": "^1.0.4", "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/jackspeak": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", - "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", + "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" @@ -17196,9 +17169,6 @@ }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jest": { @@ -18439,6 +18409,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" } @@ -18490,9 +18461,9 @@ } }, "node_modules/jsdom/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "dev": true, "license": "MIT", "bin": { @@ -18503,15 +18474,15 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -18851,9 +18822,9 @@ } }, "node_modules/listr2": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", - "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", "license": "MIT", "dependencies": { "cli-truncate": "^4.0.0", @@ -19310,20 +19281,18 @@ } }, "node_modules/loupe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lower-case": { "version": "2.0.2", "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" } @@ -19357,9 +19326,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "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==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -19370,6 +19339,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" }, @@ -19385,6 +19355,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" } @@ -21044,6 +21015,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" }, @@ -21413,9 +21385,9 @@ } }, "node_modules/micromark-extension-mdxjs/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -22014,7 +21986,8 @@ "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", + "license": "MIT" }, "node_modules/mri": { "version": "1.2.0", @@ -22091,11 +22064,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.14.tgz", - "integrity": "sha512-Q1coZG17MW0Ly5x76shJ4dkC23woLAhhnDnw+DfTc7EpZSGuWrlsZ3bZaO8t6u1Yu8FVfhkqJE+U8GC7E0GLPQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.15.tgz", + "integrity": "sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==", + "license": "MIT", "dependencies": { - "@next/env": "14.2.14", + "@next/env": "14.2.15", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -22110,15 +22084,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.14", - "@next/swc-darwin-x64": "14.2.14", - "@next/swc-linux-arm64-gnu": "14.2.14", - "@next/swc-linux-arm64-musl": "14.2.14", - "@next/swc-linux-x64-gnu": "14.2.14", - "@next/swc-linux-x64-musl": "14.2.14", - "@next/swc-win32-arm64-msvc": "14.2.14", - "@next/swc-win32-ia32-msvc": "14.2.14", - "@next/swc-win32-x64-msvc": "14.2.14" + "@next/swc-darwin-arm64": "14.2.15", + "@next/swc-darwin-x64": "14.2.15", + "@next/swc-linux-arm64-gnu": "14.2.15", + "@next/swc-linux-arm64-musl": "14.2.15", + "@next/swc-linux-x64-gnu": "14.2.15", + "@next/swc-linux-x64-musl": "14.2.15", + "@next/swc-win32-arm64-msvc": "14.2.15", + "@next/swc-win32-ia32-msvc": "14.2.15", + "@next/swc-win32-x64-msvc": "14.2.15" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -22140,19 +22114,20 @@ } }, "node_modules/next-intl": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.20.0.tgz", - "integrity": "sha512-0bCZcc38HfAZk/T+PNNcnJZknC+caS5rBK+WYRd1HsOL5O6puEu2H3kya8oT9s8piHjrTf7P0UHeahOFleOnrw==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.21.1.tgz", + "integrity": "sha512-hQm4Wgq5i1lfOHAWmXBVl5d2/XAeddcjsrUmjotXEESzPSvW5j2t0Pr8AV8WorTILgqU748aXuenBhz5P78tdw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/amannn" } ], + "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "negotiator": "^0.6.3", - "use-intl": "^3.20.0" + "use-intl": "^3.21.1" }, "peerDependencies": { "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0", @@ -22225,6 +22200,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" @@ -22234,7 +22210,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", @@ -22472,6 +22449,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" }, @@ -22480,9 +22458,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", - "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", + "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", "dev": true, "license": "MIT" }, @@ -22508,6 +22486,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -22596,6 +22575,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.values": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", @@ -22618,7 +22612,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/on-finished": { "version": "2.4.1", @@ -22660,9 +22655,9 @@ } }, "node_modules/oniguruma-to-js": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.0.tgz", - "integrity": "sha512-GwNFPQygkpDjO9MOr54Rqi01dGS+h9VAS//Qxz9lTN5B09CxqiIc7rydvdV+Ex2Z8Vk+zqfHH7hU6ePn8uf+Mg==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", + "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", "license": "MIT", "dependencies": { "regex": "^4.3.2" @@ -22676,6 +22671,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", @@ -22689,20 +22685,18 @@ } }, "node_modules/openai": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.60.0.tgz", - "integrity": "sha512-U/wNmrUPdfsvU1GrKRP5mY5YHR3ev6vtdfNID6Sauz+oquWD8r+cXPL1xiUlYniosPKajy33muVHhGS/9/t6KA==", + "version": "4.67.3", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.67.3.tgz", + "integrity": "sha512-HT2tZgjLgRqbLQNKmYtjdF/4TQuiBvg1oGvTDhwpSEQzxo6/oM1us8VQ53vBK2BiKvCxFuq6gKGG70qfwrNhKg==", "license": "Apache-2.0", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", - "@types/qs": "^6.9.15", "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", - "qs": "^6.10.3" + "node-fetch": "^2.6.7" }, "bin": { "openai": "bin/cli" @@ -22717,9 +22711,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.50", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.50.tgz", - "integrity": "sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==", + "version": "18.19.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.55.tgz", + "integrity": "sha512-zzw5Vw52205Zr/nmErSEkN5FLqXPuKX/k5d1D7RKHATGqU7y6YfX9QxZraUzUrFGqH6XzOzG196BC35ltJC4Cw==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -22848,9 +22842,9 @@ } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, "node_modules/pako": { @@ -22865,6 +22859,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" @@ -22961,13 +22956,13 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.0.tgz", + "integrity": "sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -22988,6 +22983,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" @@ -23127,6 +23123,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", "engines": { "node": ">=4.0.0" } @@ -23134,12 +23131,14 @@ "node_modules/pg-protocol": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", - "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", + "license": "MIT" }, "node_modules/pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -23332,6 +23331,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -23499,9 +23499,9 @@ } }, "node_modules/postcss-mixins": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-11.0.1.tgz", - "integrity": "sha512-jM9F8bdfP6v/2kCV6Z1PbRribZqB7gh+grtgLnWayQLDo/nLLyEZtmMZ/od6n2YNkyWJo/CAKLHqWNmef0SMVA==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-11.0.3.tgz", + "integrity": "sha512-HZa6DHlN7uCkp7GTFNvhpyK/Gi9+vrVG7FPl2oQdj+sXUuYo4ri9OsWBseTnvnLfWxRWOq8/VwcHcixtZPrRRg==", "funding": [ { "type": "opencollective", @@ -23517,7 +23517,7 @@ "postcss-js": "^4.0.1", "postcss-simple-vars": "^7.0.1", "sugarss": "^4.0.1", - "tinyglobby": "^0.2.6" + "tinyglobby": "^0.2.7" }, "engines": { "node": "^18.0 || ^ 20.0 || >= 22.0" @@ -23531,6 +23531,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" }, @@ -23543,6 +23544,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -23560,6 +23562,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, + "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -23575,6 +23578,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" }, @@ -23618,9 +23622,9 @@ "license": "MIT" }, "node_modules/postcss-safe-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", - "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, "funding": [ { @@ -23693,6 +23697,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -23701,6 +23706,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23709,6 +23715,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23717,6 +23724,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", "dependencies": { "xtend": "^4.0.0" }, @@ -23755,6 +23763,7 @@ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.8.tgz", "integrity": "sha512-dGu3kdm7SXPkiW4nzeWKCl3uoImdd5CTZEJGxyypEPL37Wj0HT2pLqjrvSei1nTeuQfO4PUfjeW5cTUNRLZ4sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.21.3" }, @@ -23833,6 +23842,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" @@ -24045,6 +24055,7 @@ "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" @@ -24176,6 +24187,7 @@ "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.18.9", "@babel/traverse": "^7.18.9", @@ -24197,10 +24209,24 @@ "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" } }, + "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", @@ -24219,6 +24245,7 @@ "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", "dev": true, + "license": "MIT", "dependencies": { "@base2/pretty-print-object": "1.0.1", "is-plain-object": "5.0.0", @@ -24233,7 +24260,8 @@ "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/react-is": { "version": "16.13.1", @@ -24252,12 +24280,12 @@ } }, "node_modules/react-remove-scroll": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", - "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.4", + "react-remove-scroll-bar": "^2.3.6", "react-style-singleton": "^2.2.1", "tslib": "^2.1.0", "use-callback-ref": "^1.3.0", @@ -24394,6 +24422,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", @@ -24410,6 +24439,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" } @@ -24501,9 +24531,9 @@ } }, "node_modules/regex": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.2.tgz", - "integrity": "sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz", + "integrity": "sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==", "license": "MIT" }, "node_modules/regex-parser": { @@ -24514,16 +24544,16 @@ "license": "MIT" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -24533,16 +24563,16 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", + "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.11.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -24550,28 +24580,26 @@ "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz", + "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/rehype-autolink-headings": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz", @@ -24612,6 +24640,7 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -26245,9 +26274,9 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", - "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", + "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -26299,6 +26328,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", @@ -26331,6 +26361,7 @@ "version": "7.4.0", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "license": "MIT", "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", @@ -26523,6 +26554,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" }, @@ -26548,6 +26580,7 @@ "version": "3.29.5", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -26684,6 +26717,7 @@ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", "dev": true, + "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -26876,6 +26910,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -26996,15 +27031,15 @@ } }, "node_modules/shiki": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.5.tgz", - "integrity": "sha512-8i4+fbTlnJPUYkgBEZ92QKmK3Gr23n2YVwqwyz0e+VmXqKpJZuV6P/CY00gSGHDXXjXT5l0BLwsMfO2Pe52TLQ==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.7.tgz", + "integrity": "sha512-Zf6hNtWhFyF4XP5OOsXkBTEx9JFPiN0TQx4wSe+Vqeuczewgk2vT4IZhF4gka55uelm052BD5BaHavNqUNZd+A==", "license": "MIT", "dependencies": { - "@shikijs/core": "1.17.5", - "@shikijs/engine-javascript": "1.17.5", - "@shikijs/engine-oniguruma": "1.17.5", - "@shikijs/types": "1.17.5", + "@shikijs/core": "1.17.7", + "@shikijs/engine-javascript": "1.17.7", + "@shikijs/engine-oniguruma": "1.17.7", + "@shikijs/types": "1.17.7", "@shikijs/vscode-textmate": "^9.2.2", "@types/hast": "^3.0.4" } @@ -27012,12 +27047,14 @@ "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "license": "BSD-2-Clause" }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -27285,6 +27322,7 @@ "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.5.tgz", "integrity": "sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/core": "8.3.5" }, @@ -27453,14 +27491,18 @@ } }, "node_modules/string.prototype.includes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", - "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/string.prototype.matchall": { @@ -27636,6 +27678,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" }, @@ -27664,6 +27707,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" }, @@ -28152,9 +28196,9 @@ "license": "MIT" }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "dev": true, "license": "MIT", "dependencies": { @@ -28214,9 +28258,10 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz", - "integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==", + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", + "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -28285,9 +28330,9 @@ } }, "node_modules/terser": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.32.0.tgz", - "integrity": "sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==", + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.35.0.tgz", + "integrity": "sha512-TmYbQnzVfrx3RQsPoItoPplymixIAtp2R2xlpyVBYmFmvI34IzLhCLj8SimRb/kZXlq4t1gA+vbcTqLQ3+5Q5g==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -28415,9 +28460,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -28542,15 +28587,16 @@ "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.6", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.6.tgz", - "integrity": "sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==", - "license": "ISC", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.9.tgz", + "integrity": "sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==", + "license": "MIT", "dependencies": { - "fdir": "^6.3.0", + "fdir": "^6.4.0", "picomatch": "^4.0.2" }, "engines": { @@ -28558,9 +28604,9 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.3.0.tgz", - "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz", + "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==", "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -28815,9 +28861,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", "license": "0BSD" }, "node_modules/tty-browserify": { @@ -28831,6 +28877,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.3.tgz", "integrity": "sha512-lY0yj2GH2a2a3NExZ3rGe+rHUVeFE2aXuRAue57n+08E7Z7N7YCmynju0kPC1grAQzERmoLpKrmzmWd+PNiADw==", + "license": "MIT", "bin": { "turbo": "bin/turbo" }, @@ -28850,6 +28897,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -28862,6 +28910,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -28874,6 +28923,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -28886,6 +28936,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -28898,6 +28949,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -28910,6 +28962,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -29068,6 +29121,7 @@ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.1.tgz", "integrity": "sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "8.8.1", "@typescript-eslint/parser": "8.8.1", @@ -29091,6 +29145,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", @@ -29124,6 +29179,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", @@ -29152,6 +29208,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" @@ -29169,6 +29226,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", @@ -29193,12 +29251,42 @@ "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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "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.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", + "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/utils": { @@ -29206,6 +29294,7 @@ "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", @@ -29228,6 +29317,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz", "integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.8.1", "eslint-visitor-keys": "^3.4.3" @@ -29245,6 +29335,7 @@ "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" }, @@ -29252,6 +29343,22 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/typescript-eslint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -29718,9 +29825,9 @@ } }, "node_modules/unplugin/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -29736,9 +29843,9 @@ "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -29755,8 +29862,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -29828,9 +29935,10 @@ } }, "node_modules/use-intl": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.20.0.tgz", - "integrity": "sha512-5WQs6yZVWI9K7vw3134P0bhKNp4mi8NbmqKOCuhD9nQUMTKdmpBXwjk62+axwvEbj4XrZxj4X93mQMLXU5ZsCg==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.21.1.tgz", + "integrity": "sha512-52kYgcydYkG9SX0ZZGt7W6WD2Va01hwe15bDgkXuaTdSxrF9fDu6hHTV5DxIuSmSSf/FEcBo/nodpw3ZhY31Lw==", + "license": "MIT", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "intl-messageformat": "^10.5.14" @@ -29892,7 +30000,8 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", @@ -30175,16 +30284,16 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.4.tgz", - "integrity": "sha512-3yAj2gkmiY+i7+22A1PWM+kjOVXjU74UPINcTiN7grIVPyFFI0lpGwHlV/4xydDmobaBn7/xmi+YG8HeSlCTcg==", + "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.4", - "@vue/compiler-sfc": "3.5.4", - "@vue/runtime-dom": "3.5.4", - "@vue/server-renderer": "3.5.4", - "@vue/shared": "3.5.4" + "@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": "*" @@ -30268,9 +30377,9 @@ } }, "node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "version": "5.95.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", + "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.5", @@ -30318,6 +30427,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", @@ -30366,12 +30476,13 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -30847,6 +30958,131 @@ "engines": { "node": ">=20" } + }, + "packages/i18n/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" + } + }, + "packages/i18n/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" + } + }, + "packages/i18n/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" + } + }, + "packages/i18n/node_modules/eslint": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "packages/i18n/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" + }, + "packages/i18n/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": "*" + } } } } diff --git a/package.json b/package.json index c5b811dedcc9f..202499570c900 100644 --- a/package.json +++ b/package.json @@ -45,12 +45,5 @@ "cz-conventional-changelog": "3.3.0", "prettier": "3.3.3", "prettier-plugin-tailwindcss": "0.6.8" - }, - "overrides": { - "eslint": "9.10.0", - "@typescript-eslint/typescript-estree": "8.5.0", - "eslint-config-next": { - "eslint-plugin-import": "npm:eslint-plugin-import-x@4.2.1" - } } } From d6d445d80fefbc3b96aedc1cdfa588c03d5417a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= Date: Mon, 21 Oct 2024 19:45:03 -0300 Subject: [PATCH 0085/1385] chore: create base eslint config (#7057) * chore: create base eslint config * chore(eslint): remove typescript from base config * fix: ts parser * chore: remove typescript-eslint from root * chore: update package-lock.json --- apps/site/eslint.config.js | 53 +- apps/site/package.json | 3 - eslint.config.js | 53 + package-lock.json | 6921 +++++++++++++++----------------- package.json | 5 + packages/i18n/eslint.config.js | 61 +- packages/i18n/package.json | 2 - 7 files changed, 3363 insertions(+), 3735 deletions(-) create mode 100644 eslint.config.js diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index 5ac5bb2196eb7..c4f873a2ae4ad 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -1,12 +1,13 @@ import { FlatCompat } from '@eslint/eslintrc'; -import js from '@eslint/js'; import importX from 'eslint-plugin-import-x'; import * as mdx from 'eslint-plugin-mdx'; -import noRelativeImportPaths from 'eslint-plugin-no-relative-import-paths'; 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'; + const compat = new FlatCompat(); const compatConfig = compat.config({ @@ -20,62 +21,20 @@ const compatConfig = compat.config({ }); export default tseslint.config( - { - ignores: [ - 'node_modules', - '.next', - '.swc', - '.turbo', - 'build', - 'coverage', - 'global.d.ts', - 'junit.xml', - 'storybook-static/**', - ], - }, + ...baseConfig, { extends: [ - js.configs.recommended, - importX.flatConfigs.recommended, - importX.flatConfigs.typescript, react.configs.flat['jsx-runtime'], ...tseslint.configs.recommended, + importX.flatConfigs.typescript, ...compatConfig, ], files: ['**/*.{js,md,mdx,mjs,ts,tsx}'], - plugins: { - 'no-relative-import-paths': noRelativeImportPaths, - }, rules: { - '@next/next/no-duplicate-head': 'off', '@typescript-eslint/array-type': ['error', { default: 'generic' }], '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/no-require-imports': 'off', - 'import-x/namespace': 'off', - 'import-x/no-named-as-default-member': 'off', - 'import-x/no-unresolved': 'off', - 'import-x/order': [ - 'error', - { - groups: [ - 'builtin', - 'external', - 'internal', - ['sibling', 'parent'], - 'index', - 'unknown', - ], - 'newlines-between': 'always', - alphabetize: { - order: 'asc', - caseInsensitive: true, - }, - }, - ], - 'no-relative-import-paths/no-relative-import-paths': [ - 'warn', - { allowSameFolder: true, prefix: '@' }, - ], + '@next/next/no-duplicate-head': 'off', }, settings: { react: { diff --git a/apps/site/package.json b/apps/site/package.json index 88a5f69d0927d..2b8643d89aab7 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -103,12 +103,9 @@ "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", - "eslint": "~9.10.0", "eslint-config-next": "15.0.0-rc.1", "eslint-import-resolver-typescript": "~3.6.3", - "eslint-plugin-import-x": "~4.3.1", "eslint-plugin-mdx": "~3.1.5", - "eslint-plugin-no-relative-import-paths": "~1.5.5", "eslint-plugin-react": "~7.37.1", "eslint-plugin-react-hooks": "5.0.0", "eslint-plugin-storybook": "0.10.0--canary.156.ce8985b.0", diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000000000..04fd1eda5a466 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,53 @@ +import js from '@eslint/js'; +import importX from 'eslint-plugin-import-x'; +import noRelativeImportPaths from 'eslint-plugin-no-relative-import-paths'; + +export default [ + js.configs.recommended, + importX.flatConfigs.recommended, + { + ignores: [ + 'node_modules', + '.turbo', + '.next', + 'build', + 'coverage', + 'global.d.ts', + 'junit.xml', + 'storybook-static/**', + ], + }, + { + files: ['**/*.{js,mjs,ts,tsx}'], + plugins: { + 'no-relative-import-paths': noRelativeImportPaths, + }, + rules: { + 'import-x/namespace': 'off', + 'import-x/no-named-as-default-member': 'off', + 'import-x/no-unresolved': 'off', + 'import-x/order': [ + 'error', + { + groups: [ + 'builtin', + 'external', + 'internal', + ['sibling', 'parent'], + 'index', + 'unknown', + ], + 'newlines-between': 'always', + alphabetize: { + order: 'asc', + caseInsensitive: true, + }, + }, + ], + 'no-relative-import-paths/no-relative-import-paths': [ + 'warn', + { allowSameFolder: true, prefix: '@' }, + ], + }, + }, +]; diff --git a/package-lock.json b/package-lock.json index 6586d4174f52f..89ff6408690f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,8 +16,13 @@ "turbo": "2.1.3" }, "devDependencies": { + "@eslint/js": "~9.10.0", + "@types/eslint__js": "~8.42.3", "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", + "eslint": "~9.10.0", + "eslint-plugin-import-x": "~4.2.1", + "eslint-plugin-no-relative-import-paths": "~1.5.5", "prettier": "3.3.3", "prettier-plugin-tailwindcss": "0.6.8" }, @@ -96,12 +101,9 @@ "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", - "eslint": "~9.10.0", "eslint-config-next": "15.0.0-rc.1", "eslint-import-resolver-typescript": "~3.6.3", - "eslint-plugin-import-x": "~4.3.1", "eslint-plugin-mdx": "~3.1.5", - "eslint-plugin-no-relative-import-paths": "~1.5.5", "eslint-plugin-react": "~7.37.1", "eslint-plugin-react-hooks": "5.0.0", "eslint-plugin-storybook": "0.10.0--canary.156.ce8985b.0", @@ -124,55 +126,24 @@ "node": "v20" } }, - "apps/site/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, + "apps/site/node_modules/@types/node": { + "version": "20.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", + "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", "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" + "undici-types": "~6.19.2" } }, "apps/site/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" - } - }, - "apps/site/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, + "version": "2.0.1", "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" + "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" @@ -183,107 +154,72 @@ } } }, - "apps/site/node_modules/eslint": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", - "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", - "dev": true, - "license": "MIT", + "apps/site/node_modules/glob": { + "version": "11.0.0", + "license": "ISC", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.18.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.10.0", - "@eslint/plugin-kit": "^0.1.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.0", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.2", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.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": { - "eslint": "bin/eslint.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "20 || >=22" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "url": "https://github.com/sponsors/isaacs" } }, - "apps/site/node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", - "dev": true, - "license": "MIT", + "apps/site/node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "apps/site/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": "ISC", + "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": { - "brace-expansion": "^1.1.7" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": "*" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "apps/site/node_modules/glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "apps/site/node_modules/lru-cache": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", + "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==", "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "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": { - "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" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { "node": "20 || >=22" @@ -292,12 +228,19 @@ "url": "https://github.com/sponsors/isaacs" } }, - "apps/site/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==", + "apps/site/node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } }, "node_modules/@adobe/css-tools": { "version": "4.4.0", @@ -737,77 +680,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/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==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/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==", - "license": "MIT" - }, - "node_modules/@babel/highlight/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==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/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==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { "version": "7.25.8", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", @@ -3040,9 +2912,9 @@ } }, "node_modules/@eslint/compat": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.0.tgz", - "integrity": "sha512-CkPWddN7J9JPrQedEr2X7AjK9y1jaMJtxZ4A/+jTMFA2+n5BWhcKHW/EbJyARqg2zzQfgtWUtVmG3hrG6+nGpg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.1.tgz", + "integrity": "sha512-JbHG2TWuCeNzh87fXo+/46Z1LEo9DBA9T188d0fZgGxAD+cNyS6sx9fdiyxjGPBMyQVRlCutTByZ6a5+YMkF7g==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3072,34 +2944,10 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "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", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "node_modules/@eslint/eslintrc": { + "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": { @@ -3137,17 +2985,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "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", @@ -3168,19 +3005,6 @@ "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.10.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", @@ -3282,9 +3106,9 @@ } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.10", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.10.tgz", - "integrity": "sha512-wlQfqCZ7PURkUNL2+8VTEFavPovtADU/isSKLFvDbdFmV7QPZIYqFMkhklaDYgMyLSBJa/h2MVQ2aFvoEJhxgg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.8.0.tgz", + "integrity": "sha512-r2un3fmF9oJv3mOkH+wwQZ037VpqmdfahbcCZ9Lh+p6Sx+sNsonI7Zcr6jNMm1s+Si7ejQORS4Ezlh05mMPAXA==", "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "2.2.0", @@ -3320,49 +3144,6 @@ "react": ">= 16" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/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", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/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": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -3377,15 +3158,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, "node_modules/@humanwhocodes/retry": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", @@ -3995,6 +3767,22 @@ "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", @@ -4012,6 +3800,49 @@ "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", @@ -4060,6 +3891,22 @@ } } }, + "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", @@ -4077,6 +3924,36 @@ "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_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -4112,6 +3989,19 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -4233,6 +4123,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==", + "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/reporters/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4250,6 +4156,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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -4337,6 +4286,22 @@ "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", @@ -4354,6 +4319,49 @@ "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", @@ -4372,6 +4380,22 @@ "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", @@ -4389,6 +4413,49 @@ "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", @@ -4448,9 +4515,9 @@ } }, "node_modules/@mdx-js/mdx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", - "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -4459,14 +4526,15 @@ "@types/mdx": "^2.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", - "estree-util-build-jsx": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", - "estree-util-to-js": "^2.0.0", + "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", - "hast-util-to-estree": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", - "periscopic": "^3.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", @@ -4498,6 +4566,16 @@ "glob": "10.3.10" } }, + "node_modules/@next/eslint-plugin-next/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/@next/eslint-plugin-next/node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -4521,32 +4599,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@next/eslint-plugin-next/node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/@next/eslint-plugin-next/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" - }, "node_modules/@next/eslint-plugin-next/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -4563,23 +4615,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@next/eslint-plugin-next/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/@next/swc-darwin-arm64": { "version": "14.2.15", "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz", @@ -4933,6 +4968,16 @@ "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", @@ -4970,13 +5015,6 @@ "@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" - }, "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -4993,23 +5031,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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": { - "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/@npmcli/name-from-folder": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", @@ -5039,6 +5060,16 @@ "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", @@ -5086,13 +5117,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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" - }, "node_modules/@npmcli/package-json/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -5109,23 +5133,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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": { - "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/@npmcli/promise-spawn": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", @@ -5284,9 +5291,9 @@ } }, "node_modules/@opentelemetry/instrumentation-express": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.42.0.tgz", - "integrity": "sha512-YNcy7ZfGnLsVEqGXQPT+S0G1AE46N21ORY7i7yUQyfhGAL4RBjnZUqefMI0NwqIl6nGbr1IpF0rZGoN8Q7x12Q==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.43.0.tgz", + "integrity": "sha512-bxTIlzn9qPXJgrhz8/Do5Q3jIlqfpoJrSUtVGqH+90eM1v2PkPHc+SdE+zSqe4q9Y1UQJosmZ4N4bm7Zj/++MA==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -5301,9 +5308,9 @@ } }, "node_modules/@opentelemetry/instrumentation-fastify": { - "version": "0.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.39.0.tgz", - "integrity": "sha512-SS9uSlKcsWZabhBp2szErkeuuBDgxOUlllwkS92dVaWRnMmwysPhcEgHKB8rUe3BHg/GnZC1eo1hbTZv4YhfoA==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.40.0.tgz", + "integrity": "sha512-74qj4nG3zPtU7g2x4sm2T4R3/pBMyrYstTsqSZwdlhQk1SD4l8OSY9sPRX1qkhfxOuW3U4KZQAV/Cymb3fB6hg==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -5681,6 +5688,15 @@ "@opentelemetry/api": "^1.1.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": { + "@noble/hashes": "^1.1.5" + } + }, "node_modules/@orama/highlight": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/@orama/highlight/-/highlight-0.1.6.tgz", @@ -5700,28 +5716,19 @@ } }, "node_modules/@oramacloud/client": { - "version": "1.3.17", - "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.17.tgz", - "integrity": "sha512-6o2NmRwaKwog39/9KEKVait1P3vRL/9sKMviewLBv+GD+av3MJQ+3yC6SPil7Ti354S2DizmFh3xScgon6TyXg==", + "version": "1.3.18", + "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.18.tgz", + "integrity": "sha512-rlr4ckSjkik3ueMZT+BMiNhu0KRLGWPw/MNyw6AgHccz39nQHOS7O81iFCLViV+Y6KlMmQaiPsjlORfigcEdyQ==", "license": "ISC", "dependencies": { + "@orama/cuid2": "^2.2.3", "@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/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -6726,6 +6733,15 @@ } } }, + "node_modules/@rollup/plugin-commonjs/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/@rollup/plugin-commonjs/node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -6767,12 +6783,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@rollup/plugin-commonjs/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/@rollup/plugin-commonjs/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -6788,22 +6798,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@rollup/plugin-commonjs/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.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@rollup/pluginutils": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", @@ -6859,58 +6853,58 @@ } }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.34.0.tgz", - "integrity": "sha512-4AcYOzPzD1tL5eSRQ/GpKv5enquZf4dMVUez99/Bh3va8qiJrNP55AcM7UzZ7WZLTqKygIYruJTU5Zu2SpEAPQ==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.35.0.tgz", + "integrity": "sha512-uj9nwERm7HIS13f/Q52hF/NUS5Al8Ma6jkgpfYGeppYvU0uSjPkwMogtqoJQNbOoZg973tV8qUScbcWY616wNA==", "license": "MIT", "dependencies": { - "@sentry/core": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0" + "@sentry/core": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.34.0.tgz", - "integrity": "sha512-aYSM2KPUs0FLPxxbJCFSwCYG70VMzlT04xepD1Y/tTlPPOja/02tSv2tyOdZbv8Uw7xslZs3/8Lhj74oYcTBxw==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.35.0.tgz", + "integrity": "sha512-7bjSaUhL0bDArozre6EiIhhdWdT/1AWNWBC1Wc5w1IxEi5xF7nvF/FfvjQYrONQzZAI3HRxc45J2qhLUzHBmoQ==", "license": "MIT", "dependencies": { - "@sentry/core": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0" + "@sentry/core": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.34.0.tgz", - "integrity": "sha512-EoMh9NYljNewZK1quY23YILgtNdGgrkzJ9TPsj6jXUG0LZ0Q7N7eFWd0xOEDBvFxrmI3cSXF1i4d1sBb+eyKRw==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.35.0.tgz", + "integrity": "sha512-3wkW03vXYMyWtTLxl9yrtkV+qxbnKFgfASdoGWhXzfLjycgT6o4/04eb3Gn71q9aXqRwH17ISVQbVswnRqMcmA==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.34.0", - "@sentry/core": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0" + "@sentry-internal/browser-utils": "8.35.0", + "@sentry/core": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.34.0.tgz", - "integrity": "sha512-x8KhZcCDpbKHqFOykYXiamX6x0LRxv6N1OJHoH+XCrMtiDBZr4Yo30d/MaS6rjmKGMtSRij30v+Uq+YWIgxUrg==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.35.0.tgz", + "integrity": "sha512-TUrH6Piv19kvHIiRyIuapLdnuwxk/Un/l1WDCQfq7mK9p1Pac0FkQ7Uufjp6zY3lyhDDZQ8qvCS4ioCMibCwQg==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "8.34.0", - "@sentry/core": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0" + "@sentry-internal/replay": "8.35.0", + "@sentry/core": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0" }, "engines": { "node": ">=14.18" @@ -6926,18 +6920,18 @@ } }, "node_modules/@sentry/browser": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.34.0.tgz", - "integrity": "sha512-3HHG2NXxzHq1lVmDy2uRjYjGNf9NsJsTPlOC70vbQdOb+S49EdH/XMPy+J3ruIoyv6Cu0LwvA6bMOM6rHZOgNQ==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.35.0.tgz", + "integrity": "sha512-WHfI+NoZzpCsmIvtr6ChOe7yWPLQyMchPnVhY3Z4UeC70bkYNdKcoj/4XZbX3m0D8+71JAsm0mJ9s9OC3Ue6MQ==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.34.0", - "@sentry-internal/feedback": "8.34.0", - "@sentry-internal/replay": "8.34.0", - "@sentry-internal/replay-canvas": "8.34.0", - "@sentry/core": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0" + "@sentry-internal/browser-utils": "8.35.0", + "@sentry-internal/feedback": "8.35.0", + "@sentry-internal/replay": "8.35.0", + "@sentry-internal/replay-canvas": "8.35.0", + "@sentry/core": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0" }, "engines": { "node": ">=14.18" @@ -6962,10 +6956,19 @@ "node": ">= 14" } }, - "node_modules/@sentry/bundler-plugin-core/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "node_modules/@sentry/bundler-plugin-core/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/@sentry/bundler-plugin-core/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -6980,12 +6983,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@sentry/bundler-plugin-core/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/@sentry/bundler-plugin-core/node_modules/magic-string": { "version": "0.30.8", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", @@ -7022,31 +7019,6 @@ "node": ">=8" } }, - "node_modules/@sentry/bundler-plugin-core/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.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/@sentry/cli": { "version": "2.37.0", "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.37.0.tgz", @@ -7192,35 +7164,35 @@ } }, "node_modules/@sentry/core": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.34.0.tgz", - "integrity": "sha512-adrXCTK/zsg5pJ67lgtZqdqHvyx6etMjQW3P82NgWdj83c8fb+zH+K79Z47pD4zQjX0ou2Ws5nwwi4wJbz4bfA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.35.0.tgz", + "integrity": "sha512-Ci0Nmtw5ETWLqQJGY4dyF+iWh7PWKy6k303fCEoEmqj2czDrKJCp7yHBNV0XYbo00prj2ZTbCr6I7albYiyONA==", "license": "MIT", "dependencies": { - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0" + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/nextjs": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.34.0.tgz", - "integrity": "sha512-REHE3E21Mnm92B3BfJz3GTMsaZM8vaDJAe7RlAMDltESRECv+ELJ5qVRLgAp8Bd6w4mG8IRNINmK2UwHrAIi9g==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.35.0.tgz", + "integrity": "sha512-7V6Yd0llWvarebVhtK2UyIqkfw/BzKn/hQxJAob/FQ6V9wKFjF5W0EFtE2n/T0RCetL2JPF8iHu3/b4/TVREmg==", "license": "MIT", "dependencies": { "@opentelemetry/instrumentation-http": "0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@rollup/plugin-commonjs": "26.0.1", - "@sentry-internal/browser-utils": "8.34.0", - "@sentry/core": "8.34.0", - "@sentry/node": "8.34.0", - "@sentry/opentelemetry": "8.34.0", - "@sentry/react": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0", - "@sentry/vercel-edge": "8.34.0", + "@sentry-internal/browser-utils": "8.35.0", + "@sentry/core": "8.35.0", + "@sentry/node": "8.35.0", + "@sentry/opentelemetry": "8.35.0", + "@sentry/react": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0", + "@sentry/vercel-edge": "8.35.0", "@sentry/webpack-plugin": "2.22.3", "chalk": "3.0.0", "resolve": "1.22.8", @@ -7240,10 +7212,77 @@ } } }, + "node_modules/@sentry/nextjs/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@sentry/nextjs/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/nextjs/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/@sentry/nextjs/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/@sentry/nextjs/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/nextjs/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@sentry/node": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.34.0.tgz", - "integrity": "sha512-Q7BPp7Y8yCcwD620xoziWSOuPi/PCIdttkczvB0BGzBRYh2s702h+qNusRijRpVNZmzmYOo9m1x7Y1O/b8/v2A==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.35.0.tgz", + "integrity": "sha512-B0FLOcZEfYe3CJ2t0l1N0HJcHXcIrLlGENQ2kf5HqR2zcOcOzRxyITJTSV5brCnmzVNgkz9PG8VWo3w0HXZQpA==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -7253,8 +7292,8 @@ "@opentelemetry/instrumentation-amqplib": "^0.42.0", "@opentelemetry/instrumentation-connect": "0.39.0", "@opentelemetry/instrumentation-dataloader": "0.12.0", - "@opentelemetry/instrumentation-express": "0.42.0", - "@opentelemetry/instrumentation-fastify": "0.39.0", + "@opentelemetry/instrumentation-express": "0.43.0", + "@opentelemetry/instrumentation-fastify": "0.40.0", "@opentelemetry/instrumentation-fs": "0.15.0", "@opentelemetry/instrumentation-generic-pool": "0.39.0", "@opentelemetry/instrumentation-graphql": "0.43.0", @@ -7276,25 +7315,25 @@ "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.34.0", - "@sentry/opentelemetry": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0", - "import-in-the-middle": "^1.11.0" + "@sentry/core": "8.35.0", + "@sentry/opentelemetry": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0", + "import-in-the-middle": "^1.11.2" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/opentelemetry": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.34.0.tgz", - "integrity": "sha512-WS91L+HVKGVIzOgt0szGp+24iKOs86BZsAHGt0HWnMR4kqWP6Ak+TLvqWDCxnuzniZMxdewDGA8p5hrBAPsmsA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.35.0.tgz", + "integrity": "sha512-2mWMpEiIFop/omia9BqTJa+0Khe+tSsiZSUrxbnSpxM0zgw8DFIzJMHbiqw/I7Qaluz9pnO2HZXqgUTwNPsU8A==", "license": "MIT", "dependencies": { - "@sentry/core": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0" + "@sentry/core": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0" }, "engines": { "node": ">=14.18" @@ -7308,15 +7347,15 @@ } }, "node_modules/@sentry/react": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.34.0.tgz", - "integrity": "sha512-gIgzhj7h67C+Sdq2ul4fOSK142Gf0uV99bqHRdtIiUlXw9yjzZQY5TKTtzbOaevn7qBJ0xrRKtIRUbOBMl0clw==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.35.0.tgz", + "integrity": "sha512-8Y+s4pE9hvT2TwSo5JS/Enw2cNFlwiLcJDNGCj/Hho+FePFYA59hbN06ouTHWARnO+swANHKZQj24Wp57p1/tg==", "license": "MIT", "dependencies": { - "@sentry/browser": "8.34.0", - "@sentry/core": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0", + "@sentry/browser": "8.35.0", + "@sentry/core": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -7327,35 +7366,35 @@ } }, "node_modules/@sentry/types": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.34.0.tgz", - "integrity": "sha512-zLRc60CzohGCo6zNsNeQ9JF3SiEeRE4aDCP9fDDdIVCOKovS+mn1rtSip0qd0Vp2fidOu0+2yY0ALCz1A3PJSQ==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.35.0.tgz", + "integrity": "sha512-AVEZjb16MlYPifiDDvJ19dPQyDn0jlrtC1PHs6ZKO+Rzyz+2EX2BRdszvanqArldexPoU1p5Bn2w81XZNXThBA==", "license": "MIT", "engines": { "node": ">=14.18" } }, "node_modules/@sentry/utils": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.34.0.tgz", - "integrity": "sha512-W1KoRlFUjprlh3t86DZPFxLfM6mzjRzshVfMY7vRlJFymBelJsnJ3A1lPeBZM9nCraOSiw6GtOWu6k5BAkiGIg==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.35.0.tgz", + "integrity": "sha512-MdMb6+uXjqND7qIPWhulubpSeHzia6HtxeJa8jYI09OCvIcmNGPydv/Gx/LZBwosfMHrLdTWcFH7Y7aCxrq7cg==", "license": "MIT", "dependencies": { - "@sentry/types": "8.34.0" + "@sentry/types": "8.35.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/vercel-edge": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.34.0.tgz", - "integrity": "sha512-yF6043FcVO9GqPawCJZp0psEL8iF9+5bOlAdQydCyaj2BtDgFvAeBVI19qlDeAHhqsXNfTD0JsIox2aJPNupwg==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.35.0.tgz", + "integrity": "sha512-Wp5HCkBb6hA1oE4gETzi4laMsPsc7UBqKCMY4H/UOkuD6HzgpyWuHZeS6nrs2A3MJWcoNoFZ2sJD1hdo4apzGQ==", "license": "MIT", "dependencies": { - "@sentry/core": "8.34.0", - "@sentry/types": "8.34.0", - "@sentry/utils": "8.34.0" + "@sentry/core": "8.35.0", + "@sentry/types": "8.35.0", + "@sentry/utils": "8.35.0" }, "engines": { "node": ">=14.18" @@ -7457,9 +7496,9 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.5.tgz", - "integrity": "sha512-2eCVobUUvY1Rq7sp1U8Mx8t44VXwvi0E+hqyrsqOx5TTSC/FUQ+hNAX6GSYUcFIyQQ1ORpKNlUjAAdjxBv1ZHQ==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.6.tgz", + "integrity": "sha512-9IMLHgtWPuFoRCt3hDsIk1FbkK5SlCMDW1DDwtTBIeWYYZLvptS42+vGVTeQ8v5SejmVzZkzuUdzu3p4sb3IcA==", "dev": true, "license": "MIT", "dependencies": { @@ -7473,19 +7512,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.5.tgz", - "integrity": "sha512-GtTy/A+mG7vDOahQr2avT4dpWtCRiFDSYcWyuQOZm10y8VDDw157HQM+FuhxjV9Owrrohy9F24oBUwRG8H3b5A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.6.tgz", + "integrity": "sha512-Y0YUJj0oE1+6DFkaTPXM/8+dwTSoy0ltj2Sn2KOTJYzxKQYXBp8TlUv0QOQiGH7o/GKXIWek/VlTuvG/JEeiWw==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.3.5", - "@storybook/test": "8.3.5", + "@storybook/instrumenter": "8.3.6", + "@storybook/test": "8.3.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -7494,13 +7533,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/addon-themes": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.3.5.tgz", - "integrity": "sha512-kXHKAZvAtMoOR1XFGTo5/T8anE9x7W8Ddpof2wyi+du5HscFiEW7TesWdvNgBUR7wAaiR21aW2S4jC72a6gTCw==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.3.6.tgz", + "integrity": "sha512-NX6zVWs0JVUg0xICL2v1zlb6eTAQYlE/vd6ATA4bNUNL5sabWGEd1w2ArQaHC9nTnfV60JuRQ8o3SvD7Gg0xMg==", "dev": true, "license": "MIT", "dependencies": { @@ -7511,13 +7550,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.5.tgz", - "integrity": "sha512-FSWydoPiVWFXEittG7O1YgvuaqoU9Vb+qoq9XfP/hvQHHMDcMZvC40JaV8AnJeTXaM7ngIjcn9XDEfGbFfOzXw==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.6.tgz", + "integrity": "sha512-bL51v837W1cng/+0pypkoLsWKWmvux96zLOzqLCpcWAQ4OSMhW3foIWpCiFwMG/KY+GanoOocTx6i7j5hLtuTA==", "dev": true, "license": "MIT", "dependencies": { @@ -7528,17 +7567,17 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.5.tgz", - "integrity": "sha512-rhmfdiSlDn3Arki7IMYk11PO29rYuYM4LZ8GlNqREU7VUl/8Vngo/jFIa4pKaIns3ql1RrwzO1wm9JvuL/4ydA==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.6.tgz", + "integrity": "sha512-Eqn2k8aA9f0o6IMQNAxGAMfSDeTP3YYCQAtOL5Gt5lgrqLV5JMTbZOfmaRBZ82ej/BBSAopnQKIJjQBBFx6kAQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.3.5", + "@storybook/core-webpack": "8.3.6", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -7571,7 +7610,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" }, "peerDependenciesMeta": { "typescript": { @@ -7579,16 +7618,6 @@ } } }, - "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -7605,9 +7634,9 @@ } }, "node_modules/@storybook/components": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.3.5.tgz", - "integrity": "sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.3.6.tgz", + "integrity": "sha512-TXuoGZY7X3iixF45lXkYOFk8k2q9OHcqHyHyem1gATLLQXgyOvDgzm+VB7uKBNzssRQPEE+La70nfG8bq/viRw==", "dev": true, "license": "MIT", "funding": { @@ -7615,13 +7644,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/core": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.5.tgz", - "integrity": "sha512-GOGfTvdioNa/n+Huwg4u/dsyYyBcM+gEcdxi3B7i5x4yJ3I912KoVshumQAOF2myKSRdI8h8aGWdx7nnjd0+5Q==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.6.tgz", + "integrity": "sha512-frwfgf0EJ7QL29DWZ5bla/g0eOOWqJGd14t+VUBlpP920zB6sdDfo7+p9JoCjD9u08lGeFDqbPNKayUk+0qDag==", "dev": true, "license": "MIT", "dependencies": { @@ -7645,9 +7674,9 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.5.tgz", - "integrity": "sha512-mN8BHNc6lSGUf/nKgDr6XoTt1cX+Tap9RnKMUiROCDzfVlJPeJBrG4qrTOok7AwObzeDl9DNFyun6+pVgXJe7A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.6.tgz", + "integrity": "sha512-ks306CFKD7FePQzRYyTjddiLsSriceblzv4rI+IjVtftkJvcEbxub2yWkV27kPP/e9kSd4Li3M34bX5mkiwkZA==", "dev": true, "license": "MIT", "dependencies": { @@ -7659,17 +7688,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" - } - }, - "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" + "storybook": "^8.3.6" } }, "node_modules/@storybook/csf": { @@ -7690,9 +7709,9 @@ "license": "MIT" }, "node_modules/@storybook/instrumenter": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.5.tgz", - "integrity": "sha512-NLDXai5y2t1ITgHVK9chyL0rMFZbICCOGcnTbyWhkLbiEWZKPJ8FuB8+g+Ba6zwtCve1A1Cnb4O2LOWy7TgWQw==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.6.tgz", + "integrity": "sha512-0RowbKwoB/s7rtymlnKNiyWN1Z3ZK5mwgzVjlRmzxDL8hrdi5KDjTNExuJTRR3ZaBP2RR0/I3m/n0p9JhHAZvg==", "dev": true, "license": "MIT", "dependencies": { @@ -7705,13 +7724,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/manager-api": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.5.tgz", - "integrity": "sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.6.tgz", + "integrity": "sha512-Xt5VFZcL+G/9uzaHjzWFhxRNrP+4rPhSRKEvCZorAbC9+Hv+ZDs1JSZS5wMb4WKpXBZ0rwDVOLwngqbVtfRHuQ==", "dev": true, "license": "MIT", "funding": { @@ -7719,13 +7738,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/nextjs": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.3.5.tgz", - "integrity": "sha512-YMjDSVd7BHIvj6oLMEFMKRvfZ83INxZinxtrx4ZZXGe+5iP8j7rcV7D67lxKQKWNy36d9Foj4pjT85yYj5s+ZQ==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.3.6.tgz", + "integrity": "sha512-jNrEcS26OER645kJ3nMuSSgu8BWJhEY8MM9rDlE/133A/hojTBc2vZXwSfgZ22tAc7ckrbyw2gygEUPI2rHImA==", "dev": true, "license": "MIT", "dependencies": { @@ -7743,10 +7762,10 @@ "@babel/preset-typescript": "^7.24.1", "@babel/runtime": "^7.24.4", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@storybook/builder-webpack5": "8.3.5", - "@storybook/preset-react-webpack": "8.3.5", - "@storybook/react": "8.3.5", - "@storybook/test": "8.3.5", + "@storybook/builder-webpack5": "8.3.6", + "@storybook/preset-react-webpack": "8.3.6", + "@storybook/react": "8.3.6", + "@storybook/test": "8.3.6", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.1.3", @@ -7783,7 +7802,7 @@ "next": "^13.5.0 || ^14.0.0", "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.3.5", + "storybook": "^8.3.6", "webpack": "^5.0.0" }, "peerDependenciesMeta": { @@ -7795,16 +7814,6 @@ } } }, - "node_modules/@storybook/nextjs/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, "node_modules/@storybook/nextjs/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -7821,14 +7830,14 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.5.tgz", - "integrity": "sha512-laS9CiZrZ4CSnBTBfkBba3hmlDhzcjIfCvx8/rk3SZ+zh93NpqXixzRt6m0UH2po63dpdu21nXrsW5Cfs88Ypw==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.6.tgz", + "integrity": "sha512-Ar0vhJITXa4xsXT3RdgYZ2mhXxE3jfUisQzsITey5a2RVgnSBIENggmRZ/6j1oVgEXFthbarNEsebGiA+2vDZg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.3.5", - "@storybook/react": "8.3.5", + "@storybook/core-webpack": "8.3.6", + "@storybook/react": "8.3.6", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", @@ -7851,7 +7860,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.3.5" + "storybook": "^8.3.6" }, "peerDependenciesMeta": { "typescript": { @@ -7859,16 +7868,6 @@ } } }, - "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -7885,9 +7884,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.5.tgz", - "integrity": "sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.6.tgz", + "integrity": "sha512-/Wxvb7wbI2O2iH63arRQQyyojA630vibdshkFjuC/u1nYdptEV1jkxa0OYmbZbKCn4/ze6uH4hfsKOpDPV9SWg==", "dev": true, "license": "MIT", "funding": { @@ -7895,22 +7894,22 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/react": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.3.5.tgz", - "integrity": "sha512-kuBPe/wBin10SWr4EWPKxiTRGQ4RD2etGEVWVQLqVpOuJp/J2hVvXQHtCfZXU4TZT5x4PBbPRswbr58+XlF+kQ==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.3.6.tgz", + "integrity": "sha512-s3COryqIOYK7urgZaCPb77zlxGjPKr6dIsYmblQJcsFY2ZlG2x0Ysm8b5oRgD8Pv71hCJ0PKYA4RzDgBVYJS9A==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "^8.3.5", + "@storybook/components": "^8.3.6", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "^8.3.5", - "@storybook/preview-api": "^8.3.5", - "@storybook/react-dom-shim": "8.3.5", - "@storybook/theming": "^8.3.5", + "@storybook/manager-api": "^8.3.6", + "@storybook/preview-api": "^8.3.6", + "@storybook/react-dom-shim": "8.3.6", + "@storybook/theming": "^8.3.6", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^22.0.0", @@ -7934,10 +7933,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.3.5", + "@storybook/test": "8.3.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.3.5", + "storybook": "^8.3.6", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -7970,9 +7969,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.5.tgz", - "integrity": "sha512-Hf0UitJ/K0C7ajooooUK/PxOR4ihUWqsC7iCV1Gqth8U37dTeLMbaEO4PBwu0VQ+Ufg0N8BJLWfg7o6G4hrODw==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.6.tgz", + "integrity": "sha512-9BO6VXIdli4GHSfiP/Z0gwAf7oQig3D/yWK2U1+91UWDV8nIAgnNBAi76U4ORC6MiK5MdkDfIikIxnLLeLnahA==", "dev": true, "license": "MIT", "funding": { @@ -7982,7 +7981,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.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/react/node_modules/@types/estree": { @@ -7992,26 +7991,16 @@ "dev": true, "license": "MIT" }, - "node_modules/@storybook/react/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, "node_modules/@storybook/test": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.5.tgz", - "integrity": "sha512-1BXWsUGWk9FiKKelZZ55FDJdeoL8uRBHbjTYBRM2xJLhdNSvGzI4Tb3bkmxPpGn72Ua6AyldhlTxr2BpUFKOHA==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.6.tgz", + "integrity": "sha512-WIc8LzK9jaEw+e3OiweEM2j3cppPzsWod59swuf6gDBf176EQLIyjtVc+Kh3qO4NNkcL+lwmqaLPjOxlBLaDbg==", "dev": true, "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.3.5", + "@storybook/instrumenter": "8.3.6", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -8024,13 +8013,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@storybook/theming": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.5.tgz", - "integrity": "sha512-9HmDDyC691oqfg4RziIM9ElsS2HITaxmH7n/yeUPtuirkPdAQzqOzhvH/Sa0qOhifzs8VjR+Gd/a/ZQ+S38r7w==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.6.tgz", + "integrity": "sha512-LQjUk6GXRW9ELkoBKuqzQKFUW+ajfGPfVELcfs3/VQX61VhthJ4olov4bGPc04wsmmFMgN/qODxT485IwOHfPQ==", "dev": true, "license": "MIT", "funding": { @@ -8038,7 +8027,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.5" + "storybook": "^8.3.6" } }, "node_modules/@swc/counter": { @@ -8086,6 +8075,22 @@ "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@testing-library/dom/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8103,6 +8108,49 @@ "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.5.0", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", @@ -8124,6 +8172,56 @@ "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", @@ -8131,6 +8229,29 @@ "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", @@ -8308,10 +8429,31 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint__js": { + "version": "8.42.3", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", + "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "license": "MIT" }, "node_modules/@types/estree-jsx": { @@ -8488,20 +8630,14 @@ "license": "MIT" }, "node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "license": "MIT", "dependencies": { - "@types/unist": "^2" + "@types/unist": "*" } }, - "node_modules/@types/mdast/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", @@ -8531,9 +8667,9 @@ } }, "node_modules/@types/node": { - "version": "20.16.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", - "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", + "version": "22.7.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", + "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", "license": "MIT", "dependencies": { "undici-types": "~6.19.2" @@ -8706,17 +8842,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.9.0.tgz", - "integrity": "sha512-Y1n621OCy4m7/vTXNlCbMVp87zSd7NH0L9cXD8aIpOaNlzeWxIK4+Q19A68gSmTNRZn92UjocVUWDthGxtqHFg==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz", + "integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.9.0", - "@typescript-eslint/type-utils": "8.9.0", - "@typescript-eslint/utils": "8.9.0", - "@typescript-eslint/visitor-keys": "8.9.0", + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/type-utils": "8.11.0", + "@typescript-eslint/utils": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -8740,16 +8876,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.9.0.tgz", - "integrity": "sha512-U+BLn2rqTTHnc4FL3FJjxaXptTxmf9sNftJK62XLz4+GxG3hLHm/SUNaaXP5Y4uTiuYoL5YLy4JBCJe3+t8awQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz", + "integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.9.0", - "@typescript-eslint/types": "8.9.0", - "@typescript-eslint/typescript-estree": "8.9.0", - "@typescript-eslint/visitor-keys": "8.9.0", + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/typescript-estree": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", "debug": "^4.3.4" }, "engines": { @@ -8769,14 +8905,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.9.0.tgz", - "integrity": "sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz", + "integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.9.0", - "@typescript-eslint/visitor-keys": "8.9.0" + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8787,14 +8923,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.9.0.tgz", - "integrity": "sha512-JD+/pCqlKqAk5961vxCluK+clkppHY07IbV3vett97KOV+8C6l+CPEPwpUuiMwgbOz/qrN3Ke4zzjqbT+ls+1Q==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz", + "integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.9.0", - "@typescript-eslint/utils": "8.9.0", + "@typescript-eslint/typescript-estree": "8.11.0", + "@typescript-eslint/utils": "8.11.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -8812,9 +8948,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.9.0.tgz", - "integrity": "sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz", + "integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==", "dev": true, "license": "MIT", "engines": { @@ -8826,14 +8962,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.9.0.tgz", - "integrity": "sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz", + "integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.9.0", - "@typescript-eslint/visitor-keys": "8.9.0", + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8854,6 +8990,16 @@ } } }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.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", @@ -8871,16 +9017,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.9.0.tgz", - "integrity": "sha512-PKgMmaSo/Yg/F7kIZvrgrWa1+Vwn036CdNUvYFEkYbPwOH4i8xvkaRlu148W3vtheWK9ckKRIz7PBP5oUlkrvQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz", + "integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.9.0", - "@typescript-eslint/types": "8.9.0", - "@typescript-eslint/typescript-estree": "8.9.0" + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/typescript-estree": "8.11.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8894,13 +9040,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.9.0.tgz", - "integrity": "sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz", + "integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/types": "8.11.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -9678,18 +9824,15 @@ } }, "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==", + "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==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, "node_modules/any-promise": { @@ -10073,9 +10216,9 @@ } }, "node_modules/axe-core": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", - "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.1.tgz", + "integrity": "sha512-qPC9o+kD8Tir0lzNGLeghbOrWMr3ZJpaRlCIb6Uobt/7N4FiEDvqUMnxzCHRHmg8vOg14kr5gVNyScRmbMaJ9g==", "dev": true, "license": "MPL-2.0", "engines": { @@ -10114,6 +10257,22 @@ "@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", @@ -10131,6 +10290,49 @@ "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-loader": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", @@ -10607,12 +10809,14 @@ "license": "ISC" }, "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==", + "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" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -10775,9 +10979,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "version": "4.24.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.1.tgz", + "integrity": "sha512-1p6HVUoq1POlayfJXpDBZ0YbvAbcRpMz/QgX0wzbCcPRMwvmiWDaRGgWqELv6ugiloCT3lSiWf9fJblXGB90Gw==", "funding": [ { "type": "opencollective", @@ -10794,10 +10998,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -11010,16 +11214,17 @@ } }, "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/char-regex": { @@ -11053,10 +11258,9 @@ } }, "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "license": "MIT", "funding": { "type": "github", @@ -11064,10 +11268,9 @@ } }, "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", "license": "MIT", "funding": { "type": "github", @@ -11375,21 +11578,18 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "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==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, "node_modules/color-string": { @@ -11404,6 +11604,28 @@ "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==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/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", + "optional": true + }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", @@ -11658,14 +11880,14 @@ } }, "node_modules/cosmiconfig-typescript-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", - "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.1.0.tgz", + "integrity": "sha512-7PtBB+6FdsOvZyJtlF3hEPpACq7RQX6BVGsgC7/lfVXnKMvNCu/XY3ykreqG5w/rBNdu2z8LCIKoF3kpHHdHlA==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "jiti": "^1.19.1" + "jiti": "^1.21.6" }, "engines": { "node": ">=v16" @@ -11745,6 +11967,22 @@ "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", @@ -11762,6 +12000,49 @@ "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", @@ -11980,101 +12261,23 @@ "@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==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "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/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/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", - "engines": { - "node": ">=0.8.0" - } - }, - "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", - "engines": { - "node": ">=4" - } - }, - "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": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" }, "engines": { "node": ">=12" @@ -12188,39 +12391,6 @@ "node": ">=6" } }, - "node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -12634,9 +12804,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.39", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.39.tgz", - "integrity": "sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==", + "version": "1.5.41", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz", + "integrity": "sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==", "license": "ISC" }, "node_modules/elliptic": { @@ -12871,27 +13041,6 @@ "node": ">= 0.4" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-iterator-helpers": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", @@ -12980,6 +13129,50 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js/node_modules/acorn": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/esbuild": { "version": "0.23.1", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", @@ -13050,16 +13243,12 @@ "license": "MIT" }, "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==", - "dev": true, + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/escodegen": { @@ -13096,46 +13285,40 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", @@ -13147,10 +13330,18 @@ "eslint": "bin/eslint.js" }, "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" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-next": { @@ -13191,19 +13382,6 @@ "fast-glob": "3.3.1" } }, - "node_modules/eslint-config-next/node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "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-config-next/node_modules/fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", @@ -13432,9 +13610,9 @@ } }, "node_modules/eslint-plugin-import-x": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.3.1.tgz", - "integrity": "sha512-5TriWkXulDl486XnYYRgsL+VQoS/7mhN/2ci02iLCuL7gdhbiWxnsuL/NTcaKY9fpMgsMFjWZBtIGW7pb+RX0g==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz", + "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==", "dev": true, "license": "MIT", "dependencies": { @@ -13456,6 +13634,16 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/eslint-plugin-import-x/node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -13485,17 +13673,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -13519,19 +13696,6 @@ "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", @@ -13566,13 +13730,13 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", - "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.1.tgz", + "integrity": "sha512-zHByM9WTUMnfsDTafGXRiqxp6lFtNoSOWBY6FonVRn3A+BUwN1L/tdBXT40BcBJi0cZjOGTXZ0eD/rTG9fEJ0g==", "dev": true, "license": "MIT", "dependencies": { - "aria-query": "~5.1.3", + "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", @@ -13580,14 +13744,14 @@ "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.19", + "es-iterator-helpers": "^1.1.0", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.0" + "string.prototype.includes": "^2.0.1" }, "engines": { "node": ">=4.0" @@ -13597,40 +13761,93 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "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", - "dependencies": { - "deep-equal": "^2.0.5" + "engines": { + "node": ">= 0.4" } }, - "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==", + "node_modules/eslint-plugin-mdx": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz", + "integrity": "sha512-lUE7tP7IrIRHU3gTtASDe5u4YM2SvQveYVJfuo82yn3MLh/B/v05FNySURCK4aIxIYF1QYo3IRemQG/lyQzpAg==", "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": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" + "eslint-mdx": "^3.1.5", + "eslint-plugin-markdown": "^3.0.1", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "tslib": "^2.6.2", + "unified": "^11.0.4", + "vfile": "^6.0.1" }, "engines": { - "node": "*" + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=8.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-mdx/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint-plugin-markdown": { + "node_modules/eslint-plugin-mdx/node_modules/eslint-plugin-markdown": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", @@ -13646,31 +13863,135 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/eslint-plugin-mdx": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz", - "integrity": "sha512-lUE7tP7IrIRHU3gTtASDe5u4YM2SvQveYVJfuo82yn3MLh/B/v05FNySURCK4aIxIYF1QYo3IRemQG/lyQzpAg==", + "node_modules/eslint-plugin-mdx/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, "license": "MIT", "dependencies": { - "eslint-mdx": "^3.1.5", - "eslint-plugin-markdown": "^3.0.1", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "tslib": "^2.6.2", - "unified": "^11.0.4", - "vfile": "^6.0.1" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" }, - "engines": { - "node": ">=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" }, - "peerDependencies": { - "eslint": ">=8.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/eslint-plugin-no-relative-import-paths": { @@ -13713,28 +14034,17 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "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==", + "node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", + "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", "dev": true, "license": "MIT", - "dependencies": { - "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": "*" + "node": ">=10" + }, + "peerDependencies": { + "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/resolve": { @@ -13823,84 +14133,37 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/eslint/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", - "peer": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "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": { - "url": "https://opencollective.com/eslint" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "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==", "dev": true, "license": "MIT", - "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/eslint/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", - "peer": true, - "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/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", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/eslint/node_modules/chalk": { @@ -13909,7 +14172,6 @@ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13921,100 +14183,47 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/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", - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "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==", "dev": true, - "license": "BSD-2-Clause", - "peer": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=7.0.0" } }, - "node_modules/eslint/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/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": "Apache-2.0", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "license": "MIT" }, - "node_modules/eslint/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "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==", "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "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==", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -14022,35 +14231,19 @@ "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", - "peer": true + "license": "MIT" }, - "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==", + "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==", "dev": true, - "license": "ISC", - "peer": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/espree": { @@ -14170,6 +14363,20 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-util-to-js": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", @@ -14299,13 +14506,6 @@ "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", @@ -14570,16 +14770,6 @@ "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", @@ -14781,6 +14971,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", @@ -14837,15 +15039,20 @@ "ajv": "^6.9.1" } }, - "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==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { @@ -14865,6 +15072,26 @@ "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", @@ -14897,6 +15124,16 @@ "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "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", @@ -14904,19 +15141,6 @@ "dev": true, "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": "*" - } - }, "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", @@ -14936,6 +15160,19 @@ "url": "https://opencollective.com/webpack" } }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", @@ -15262,37 +15499,13 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "license": "BSD-2-Clause" }, - "node_modules/glob/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==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/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/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", - "dev": true, - "license": "MIT", - "optional": true, + "optional": true, "dependencies": { "ini": "4.1.1" }, @@ -15515,12 +15728,12 @@ } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/has-property-descriptors": { @@ -15669,6 +15882,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-estree/node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "license": "MIT" + }, + "node_modules/hast-util-to-estree/node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, "node_modules/hast-util-to-html": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", @@ -15719,21 +15947,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", - "license": "MIT" - }, - "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", - "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.2.4" - } - }, "node_modules/hast-util-to-string": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", @@ -15907,9 +16120,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.2.tgz", + "integrity": "sha512-q7xp/FO9RGBVoTKNItkdX1jKLscLFkgn/dLVFNYbHVbfHLBk6DYW5nsQ8kCzIWcgKP/kUBocetjvav6lD8YfCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16270,9 +16483,9 @@ } }, "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", "license": "MIT" }, "node_modules/inquirer": { @@ -16302,6 +16515,22 @@ "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" + } + }, "node_modules/inquirer/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -16319,6 +16548,49 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -16335,14 +16607,14 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.0.tgz", - "integrity": "sha512-2P06M9jFTqJnEQzE072VGPjbAx6ZG1YysgopAwc8ui0ajSjtwX1MeQ6bXFXIzKcNENJTizKkcJIcZ0zlpl1zSg==", + "version": "10.7.1", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.1.tgz", + "integrity": "sha512-xQuJW2WcyzNJZWUu5xTVPOmNSA1Sowuu/NKFdUid5Fxx/Yl6/s4DefTU/y7zy+irZLDmFGmTLtnM8FqpN05wlA==", "license": "BSD-3-Clause", "dependencies": { "@formatjs/ecma402-abstract": "2.2.0", "@formatjs/fast-memoize": "2.2.1", - "@formatjs/icu-messageformat-parser": "2.7.10", + "@formatjs/icu-messageformat-parser": "2.8.0", "tslib": "^2.7.0" } }, @@ -16366,10 +16638,9 @@ } }, "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", "license": "MIT", "funding": { "type": "github", @@ -16377,14 +16648,13 @@ } }, "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", "license": "MIT", "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, "funding": { "type": "github", @@ -16585,10 +16855,9 @@ } }, "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", "license": "MIT", "funding": { "type": "github", @@ -16700,10 +16969,9 @@ } }, "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", "license": "MIT", "funding": { "type": "github", @@ -17084,6 +17352,16 @@ "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", @@ -17100,6 +17378,19 @@ "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", @@ -17157,18 +17448,22 @@ } }, "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==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": "20 || >=22" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jest": { @@ -17245,6 +17540,22 @@ "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", @@ -17262,6 +17573,26 @@ "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", @@ -17277,6 +17608,16 @@ } } }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -17312,6 +17653,19 @@ "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", @@ -17346,6 +17700,22 @@ } } }, + "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", @@ -17363,12 +17733,55 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "license": "MIT", + "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", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.7.0", @@ -17409,6 +17822,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==", + "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-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -17426,6 +17855,36 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -17461,6 +17920,19 @@ "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", @@ -17477,6 +17949,22 @@ "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", @@ -17494,6 +17982,36 @@ "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", @@ -17529,6 +18047,19 @@ "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", @@ -17559,6 +18090,22 @@ "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", @@ -17576,6 +18123,36 @@ "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" + } + }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -17611,6 +18188,19 @@ "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", @@ -17784,6 +18374,22 @@ "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", @@ -17801,6 +18407,36 @@ "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", @@ -17836,10 +18472,23 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "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", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { @@ -17857,6 +18506,22 @@ "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", @@ -17874,6 +18539,36 @@ "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", @@ -17909,6 +18604,19 @@ "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", @@ -17987,6 +18695,22 @@ "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", @@ -18004,6 +18728,49 @@ "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", @@ -18037,6 +18804,22 @@ "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", @@ -18054,6 +18837,49 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runtime": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", @@ -18088,6 +18914,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==", + "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-runtime/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -18105,6 +18947,49 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "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_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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -18137,6 +19022,22 @@ "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", @@ -18154,19 +19055,49 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "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": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "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", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { @@ -18189,6 +19120,19 @@ "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", @@ -18207,6 +19151,22 @@ "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", @@ -18224,6 +19184,49 @@ "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==", + "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" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-validate": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", @@ -18242,6 +19245,22 @@ "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", @@ -18272,6 +19291,36 @@ "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", @@ -18307,6 +19356,19 @@ "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", @@ -18327,6 +19389,22 @@ "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", @@ -18344,6 +19422,49 @@ "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", @@ -18360,6 +19481,16 @@ "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", @@ -18809,6 +19940,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lint-staged/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "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", @@ -19041,6 +20184,22 @@ "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", @@ -19058,21 +20217,64 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "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": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=18" - }, + "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" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -19183,6 +20385,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-update/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/log-update/node_modules/slice-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", @@ -19437,16 +20651,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-comment-marker/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-directive": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", @@ -19468,91 +20672,38 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-directive/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-directive/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-directive/node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-directive/node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-directive/node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dev": true, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", "license": "MIT", "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-directive/node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-directive/node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "dev": true, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "license": "MIT", + "engines": { + "node": ">=12" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-directive/node_modules/mdast-util-from-markdown": { + "node_modules/mdast-util-from-markdown": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -19573,11 +20724,10 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-directive/node_modules/mdast-util-to-string": { + "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" @@ -19587,99 +20737,30 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-directive/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-directive/node_modules/parse-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-directive/node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", "dev": true, - "license": "MIT" - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", - "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-find-and-replace/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -19688,127 +20769,111 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-from-markdown/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-from-markdown/node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", "license": "MIT", "dependencies": { - "@types/unist": "^2.0.2" + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", - "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", - "dev": true, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0" + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "license": "MIT", "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dev": true, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "node_modules/mdast-util-heading-style": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-3.0.0.tgz", + "integrity": "sha512-tsUfM9Kj9msjlemA/38Z3pvraQay880E3zP2NgIthMoGcpU9bcPX9oSM6QC/+eFXGGB4ba+VCB1dKAPHB7Veug==", "dev": true, "license": "MIT", "dependencies": { @@ -19819,54 +20884,16 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm": { + "node_modules/mdast-util-mdx": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", - "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", - "mdast-util-gfm-autolink-literal": "^2.0.0", - "mdast-util-gfm-footnote": "^2.0.0", - "mdast-util-gfm-strikethrough": "^2.0.0", - "mdast-util-gfm-table": "^2.0.0", - "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { @@ -19874,1068 +20901,99 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-gfm-autolink-literal": { + "node_modules/mdast-util-mdx-expression": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", - "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", "license": "MIT", "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", - "ccount": "^2.0.0", "devlop": "^1.0.0", - "mdast-util-find-and-replace": "^3.0.0", - "micromark-util-character": "^2.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-gfm-autolink-literal/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", "license": "MIT", "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0" + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-gfm-footnote/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-from-markdown": { + "node_modules/mdast-util-mdxjs-esm": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", "license": "MIT", "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", "license": "MIT", "dependencies": { - "@types/mdast": "^4.0.0" + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", "license": "MIT", "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-heading-style": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-3.0.0.tgz", - "integrity": "sha512-tsUfM9Kj9msjlemA/38Z3pvraQay880E3zP2NgIthMoGcpU9bcPX9oSM6QC/+eFXGGB4ba+VCB1dKAPHB7Veug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-heading-style/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-mdx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", - "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", - "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", - "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/mdast-util-mdx/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-mdx/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-to-markdown": { @@ -20958,15 +21016,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", @@ -20993,6 +21042,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-to-string/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/mdast-util-to-string/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", @@ -21089,10 +21153,9 @@ } }, "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", "funding": [ { "type": "GitHub Sponsors", @@ -21105,8 +21168,23 @@ ], "license": "MIT", "dependencies": { + "@types/debug": "^4.0.0", "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-core-commonmark": { @@ -21937,18 +22015,16 @@ "license": "MIT" }, "node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "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": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/minimist": { @@ -22685,9 +22761,9 @@ } }, "node_modules/openai": { - "version": "4.67.3", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.67.3.tgz", - "integrity": "sha512-HT2tZgjLgRqbLQNKmYtjdF/4TQuiBvg1oGvTDhwpSEQzxo6/oM1us8VQ53vBK2BiKvCxFuq6gKGG70qfwrNhKg==", + "version": "4.68.1", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.68.1.tgz", + "integrity": "sha512-C9XmYRHgra1U1G4GGFNqRHQEjxhoOWbQYR85IibfJ0jpHUhOm4/lARiKaC/h3zThvikwH9Dx/XOKWPNVygIS3g==", "license": "Apache-2.0", "dependencies": { "@types/node": "^18.11.18", @@ -22711,9 +22787,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.55.tgz", - "integrity": "sha512-zzw5Vw52205Zr/nmErSEkN5FLqXPuKX/k5d1D7RKHATGqU7y6YfX9QxZraUzUrFGqH6XzOzG196BC35ltJC4Cw==", + "version": "18.19.57", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.57.tgz", + "integrity": "sha512-I2ioBd/IPrYDMv9UNR5NlPElOZ68QB7yY5V2EsLtSrTO0LM0PnCEFF9biLWHf5k+sIy4ohueCV9t4gk1AEdlVA==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -22767,6 +22843,22 @@ "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", @@ -22784,6 +22876,49 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -22897,34 +23032,30 @@ } }, "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", "license": "MIT", "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/parse-entities/node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" }, "node_modules/parse-json": { "version": "5.2.0", @@ -23031,29 +23162,26 @@ "license": "MIT" }, "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==", + "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": "^11.0.0", - "minipass": "^7.1.2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", - "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } + "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-to-regexp": { "version": "0.1.10", @@ -23099,26 +23227,6 @@ "node": ">=0.12" } }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "node_modules/periscopic/node_modules/is-reference": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", - "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", @@ -23151,9 +23259,9 @@ } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, "node_modules/picomatch": { @@ -23355,30 +23463,6 @@ "postcss": "^8.4.21" } }, - "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", @@ -24183,9 +24267,9 @@ } }, "node_modules/react-docgen": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", - "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.0.tgz", + "integrity": "sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==", "dev": true, "license": "MIT", "dependencies": { @@ -24430,18 +24514,82 @@ "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" }, - "engines": { - "node": ">= 4" + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/source-map": { + "version": "0.6.1", + "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" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", + "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/recast/node_modules/source-map": { - "version": "0.6.1", - "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" + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/redent": { @@ -24618,6 +24766,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/rehype-slug": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", @@ -24662,16 +24825,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-frontmatter/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-gfm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", @@ -24690,15 +24843,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-gfm/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.0.tgz", @@ -24734,16 +24878,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-blockquote-indentation/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-checkbox-character-style": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.0.tgz", @@ -24763,16 +24897,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-checkbox-character-style/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-checkbox-content-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.0.tgz", @@ -24792,16 +24916,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-checkbox-content-indent/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-code-block-style": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.0.tgz", @@ -24821,16 +24935,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-code-block-style/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-definition-spacing": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.0.tgz", @@ -24850,16 +24954,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-definition-spacing/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-fenced-code-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.0.0.tgz", @@ -24879,16 +24973,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-fenced-code-flag/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-fenced-code-marker": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.0.tgz", @@ -24908,16 +24992,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-fenced-code-marker/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-file-extension": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.0.tgz", @@ -24934,16 +25008,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-file-extension/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-final-definition": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.1.tgz", @@ -24965,16 +25029,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-final-definition/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.0.tgz", @@ -24992,16 +25046,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-final-newline/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-first-heading-level": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-first-heading-level/-/remark-lint-first-heading-level-4.0.0.tgz", @@ -25019,16 +25063,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-first-heading-level/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-hard-break-spaces": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.0.0.tgz", @@ -25046,16 +25080,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-hard-break-spaces/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-heading-style": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.0.tgz", @@ -25076,16 +25100,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-heading-style/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-list-item-bullet-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.0.tgz", @@ -25103,16 +25117,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-list-item-bullet-indent/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-list-item-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.0.tgz", @@ -25132,16 +25136,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-list-item-indent/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-maximum-line-length": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-4.0.1.tgz", @@ -25161,16 +25155,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-maximum-line-length/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-blockquote-without-marker": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.0.tgz", @@ -25193,16 +25177,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-blockquote-without-marker/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-consecutive-blank-lines": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.0.tgz", @@ -25224,16 +25198,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-duplicate-definitions": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.0.tgz", @@ -25253,16 +25217,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-duplicate-definitions/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-file-name-articles": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.0.tgz", @@ -25278,16 +25232,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-file-name-articles/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-file-name-consecutive-dashes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.0.tgz", @@ -25303,16 +25247,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-file-name-outer-dashes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.0.tgz", @@ -25320,22 +25254,12 @@ "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/remark-lint-no-heading-content-indent": { @@ -25357,16 +25281,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-heading-content-indent/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-heading-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.0.tgz", @@ -25386,16 +25300,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-heading-indent/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-literal-urls": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.0.tgz", @@ -25415,16 +25319,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-literal-urls/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-literal-urls/node_modules/mdast-util-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", @@ -25458,16 +25352,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-shell-dollars": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.0.tgz", @@ -25486,16 +25370,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-shell-dollars/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-shortcut-reference-image": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.0.tgz", @@ -25512,16 +25386,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-shortcut-reference-image/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-shortcut-reference-link": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-4.0.0.tgz", @@ -25538,16 +25402,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-shortcut-reference-link/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-table-indentation": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.0.tgz", @@ -25569,16 +25423,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-table-indentation/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-tabs": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.0.tgz", @@ -25595,16 +25439,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-tabs/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-trailing-spaces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/remark-lint-no-trailing-spaces/-/remark-lint-no-trailing-spaces-3.0.2.tgz", @@ -25637,16 +25471,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-undefined-references/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-no-unused-definitions": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.0.tgz", @@ -25664,16 +25488,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-unused-definitions/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-ordered-list-marker-style": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.0.tgz", @@ -25694,16 +25508,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-ordered-list-marker-style/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-prohibited-strings": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-prohibited-strings/-/remark-lint-prohibited-strings-4.0.0.tgz", @@ -25853,16 +25657,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-rule-style/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-strong-marker": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.0.tgz", @@ -25881,16 +25675,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-strong-marker/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-table-cell-padding": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.0.0.tgz", @@ -25913,16 +25697,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-table-cell-padding/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-table-pipes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.0.tgz", @@ -25942,16 +25716,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-table-pipes/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-lint-unordered-list-marker-style": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.0.tgz", @@ -25971,30 +25735,10 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-unordered-list-marker-style/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/remark-lint/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-mdx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", - "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", "license": "MIT", "dependencies": { "mdast-util-mdx": "^3.0.0", @@ -26022,16 +25766,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-message-control/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-parse": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", @@ -26048,87 +25782,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/remark-parse/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, "node_modules/remark-preset-lint-node": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-5.1.2.tgz", @@ -26290,15 +25943,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-stringify": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", @@ -26314,15 +25958,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -26515,13 +26150,6 @@ "node": ">=8" } }, - "node_modules/restore-cursor/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/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -27070,16 +26698,11 @@ } }, "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "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/simple-swizzle": { "version": "0.2.2", @@ -27304,27 +26927,14 @@ "node": ">= 0.8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/storybook": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.5.tgz", - "integrity": "sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.6.tgz", + "integrity": "sha512-9GVbtej6ZzPRUM7KRQ7848506FfHrUiJGqPuIQdoSJd09EmuEoLjmLAgEOmrHBQKgGYMaM7Vh9GsTLim6vwZTQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.3.5" + "@storybook/core": "8.3.6" }, "bin": { "getstorybook": "bin/index.cjs", @@ -27609,16 +27219,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/stringify-entities/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -27720,12 +27320,12 @@ } }, "node_modules/style-to-object": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", - "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", "license": "MIT", "dependencies": { - "inline-style-parser": "0.1.1" + "inline-style-parser": "0.2.4" } }, "node_modules/styled-jsx": { @@ -27979,6 +27579,19 @@ "dev": true, "license": "ISC" }, + "node_modules/stylelint/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/stylelint/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -28044,6 +27657,15 @@ "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", @@ -28088,12 +27710,6 @@ "@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/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -28109,22 +27725,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sugarss": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", @@ -28142,15 +27742,15 @@ } }, "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==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/supports-hyperlinks": { @@ -28170,6 +27770,29 @@ "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", @@ -28229,6 +27852,42 @@ "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", @@ -28330,9 +27989,9 @@ } }, "node_modules/terser": { - "version": "5.35.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.35.0.tgz", - "integrity": "sha512-TmYbQnzVfrx3RQsPoItoPplymixIAtp2R2xlpyVBYmFmvI34IzLhCLj8SimRb/kZXlq4t1gA+vbcTqLQ3+5Q5g==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -28406,6 +28065,15 @@ "ajv": "^6.9.1" } }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -28511,30 +28179,6 @@ "node": ">=8" } }, - "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/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": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -28604,9 +28248,9 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz", - "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==", + "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" @@ -28833,21 +28477,80 @@ "node": ">=10.13.0" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/tsconfig-paths-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==", + "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/tsconfig-paths-webpack-plugin/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/tsconfig-paths-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/tsconfig-paths-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/tsconfig-paths-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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths-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==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, "node_modules/tsconfig-paths/node_modules/strip-bom": { @@ -29103,11 +28806,12 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29330,6 +29034,16 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/typescript-eslint/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/typescript-eslint/node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -29504,6 +29218,26 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unified-engine/node_modules/@types/node": { + "version": "20.16.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.13.tgz", + "integrity": "sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "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" + } + }, "node_modules/unified-engine/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -29574,13 +29308,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "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" - }, "node_modules/unified-engine/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -29617,23 +29344,6 @@ "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", @@ -29935,9 +29645,9 @@ } }, "node_modules/use-intl": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.21.1.tgz", - "integrity": "sha512-52kYgcydYkG9SX0ZZGt7W6WD2Va01hwe15bDgkXuaTdSxrF9fDu6hHTV5DxIuSmSSf/FEcBo/nodpw3ZhY31Lw==", + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.22.0.tgz", + "integrity": "sha512-SoiPcyLJODhenrbDkcYJuOImgrBFN7Z8keLSHe7ffsNkIJtjdjet/RmqAv5Ym9TVxPpCs+fH2cl1J3YzFJSkWw==", "license": "MIT", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", @@ -30772,6 +30482,75 @@ "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.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==", + "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/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", @@ -30793,13 +30572,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.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", @@ -30949,9 +30721,7 @@ "packages/i18n": { "name": "@node-core/website-i18n", "devDependencies": { - "eslint": "~9.10.0", "eslint-import-resolver-typescript": "~3.6.3", - "eslint-plugin-import-x": "~4.3.1", "typescript": "~5.5.4", "typescript-eslint": "~8.8.1" }, @@ -30959,129 +30729,18 @@ "node": ">=20" } }, - "packages/i18n/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" - } - }, - "packages/i18n/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" - } - }, - "packages/i18n/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" - } - }, - "packages/i18n/node_modules/eslint": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", - "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "packages/i18n/node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.18.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.10.0", - "@eslint/plugin-kit": "^0.1.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.0", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.2", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, + "license": "Apache-2.0", "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "packages/i18n/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" - }, - "packages/i18n/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" + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": "*" + "node": ">=14.17" } } } diff --git a/package.json b/package.json index 202499570c900..ce12e0277b638 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,13 @@ "turbo": "2.1.3" }, "devDependencies": { + "@eslint/js": "~9.10.0", + "@types/eslint__js": "~8.42.3", "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", + "eslint": "~9.10.0", + "eslint-plugin-import-x": "~4.2.1", + "eslint-plugin-no-relative-import-paths": "~1.5.5", "prettier": "3.3.3", "prettier-plugin-tailwindcss": "0.6.8" } diff --git a/packages/i18n/eslint.config.js b/packages/i18n/eslint.config.js index 727c2fbc1a061..d5146991db352 100644 --- a/packages/i18n/eslint.config.js +++ b/packages/i18n/eslint.config.js @@ -1,60 +1,17 @@ -import js from '@eslint/js'; import importX from 'eslint-plugin-import-x'; -import noRelativeImportPaths from 'eslint-plugin-no-relative-import-paths'; import tseslint from 'typescript-eslint'; -export default tseslint.config( - { - ignores: [ - 'node_modules', - '.turbo', - 'build', - 'coverage', - 'global.d.ts', - 'junit.xml', - 'storybook-static/**', - ], - }, +// eslint-disable-next-line no-relative-import-paths/no-relative-import-paths +import baseConfig from '../../eslint.config.js'; + +export default [ + ...baseConfig, + ...tseslint.configs.recommended, + importX.flatConfigs.typescript, { - extends: [ - js.configs.recommended, - importX.flatConfigs.recommended, - importX.flatConfigs.typescript, - ...tseslint.configs.recommended, - ], - files: ['**/*.{js,mjs,ts}'], - plugins: { - 'no-relative-import-paths': noRelativeImportPaths, - }, rules: { '@typescript-eslint/array-type': ['error', { default: 'generic' }], '@typescript-eslint/consistent-type-imports': 'error', - '@typescript-eslint/no-require-imports': 'off', - 'import-x/namespace': 'off', - 'import-x/no-named-as-default-member': 'off', - 'import-x/no-unresolved': 'off', - 'import-x/order': [ - 'error', - { - groups: [ - 'builtin', - 'external', - 'internal', - ['sibling', 'parent'], - 'index', - 'unknown', - ], - 'newlines-between': 'always', - alphabetize: { - order: 'asc', - caseInsensitive: true, - }, - }, - ], - 'no-relative-import-paths/no-relative-import-paths': [ - 'warn', - { allowSameFolder: true, prefix: '@' }, - ], }, - } -); + }, +]; diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 9fa17a30a0311..88b0030bae723 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -19,9 +19,7 @@ "node": ">=20" }, "devDependencies": { - "eslint": "~9.10.0", "eslint-import-resolver-typescript": "~3.6.3", - "eslint-plugin-import-x": "~4.3.1", "typescript": "~5.5.4", "typescript-eslint": "~8.8.1" } From cbff663e782f754d2aa36105a6e49e978721d0f8 Mon Sep 17 00:00:00 2001 From: Ole Herman Schumacher Elgesem <4048546+olehermanse@users.noreply.github.com> Date: Tue, 22 Oct 2024 05:56:41 +0200 Subject: [PATCH 0086/1385] fix: 404 on the 'package managers' link on home page (#7134) Signed-off-by: Ole Herman Schumacher Elgesem --- apps/site/next.mdx.use.client.mjs | 2 ++ apps/site/pages/en/index.mdx | 2 +- apps/site/pages/es/index.mdx | 2 +- apps/site/pages/fa/index.mdx | 2 +- apps/site/pages/fr/index.mdx | 2 +- apps/site/pages/id/index.mdx | 2 +- apps/site/pages/ja/index.mdx | 2 +- apps/site/pages/ko/index.mdx | 2 +- apps/site/pages/pt/index.mdx | 2 +- apps/site/pages/tr/index.mdx | 2 +- apps/site/pages/uk/index.mdx | 2 +- apps/site/pages/zh-cn/index.mdx | 2 +- apps/site/pages/zh-tw/index.mdx | 2 +- apps/site/redirects.json | 4 ++++ 14 files changed, 18 insertions(+), 12 deletions(-) diff --git a/apps/site/next.mdx.use.client.mjs b/apps/site/next.mdx.use.client.mjs index 9c75bf92355ff..bff703e1c72d4 100644 --- a/apps/site/next.mdx.use.client.mjs +++ b/apps/site/next.mdx.use.client.mjs @@ -20,6 +20,8 @@ export const clientMdxComponents = { Button: Button, // Links with External Arrow LinkWithArrow: LinkWithArrow, + // Regular links (without arrow) + Link: Link, }; /** diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index ada1f5fa052d7..3e28f190a40aa 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -23,7 +23,7 @@ layout: home Downloads Node.js {release.versionWithPrefix} 1 with long-term support. - Node.js can also be installed via package managers. + Node.js can also be installed via package managers. )} diff --git a/apps/site/pages/es/index.mdx b/apps/site/pages/es/index.mdx index ba26804287fcc..9dff1c26f04d9 100644 --- a/apps/site/pages/es/index.mdx +++ b/apps/site/pages/es/index.mdx @@ -21,7 +21,7 @@ Node.js® es un entorno de ejecución de JavaScript multiplataforma, de código 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. + Node.js también puede ser instalado a través de gestores de paquetes. )} diff --git a/apps/site/pages/fa/index.mdx b/apps/site/pages/fa/index.mdx index 57634d9833d1b..9d3fe4caa073b 100644 --- a/apps/site/pages/fa/index.mdx +++ b/apps/site/pages/fa/index.mdx @@ -23,7 +23,7 @@ Node.js یک محیط اجرای جاوااسکریپت متن‌باز، رای دانلود Node.js {release.versionWithPrefix} 1 با پشتیبانی بلندمدت. - Node.js همچنین از طریق package managers نیز قابل نصب است. + Node.js همچنین از طریق package managers نیز قابل نصب است. )} diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx index 54262c84798a6..a397a26bda193 100644 --- a/apps/site/pages/fr/index.mdx +++ b/apps/site/pages/fr/index.mdx @@ -22,7 +22,7 @@ qui permet aux développeurs de créer des serveurs, des applications web, des o Télécharger Node.js {release.versionWithPrefix} 1 avec un support à long terme. - Node.js peut également être installé via gestionnaires de paquets. + Node.js peut également être installé via gestionnaires de paquets. )} diff --git a/apps/site/pages/id/index.mdx b/apps/site/pages/id/index.mdx index b7ca646a0b6ab..530b6a53daf62 100644 --- a/apps/site/pages/id/index.mdx +++ b/apps/site/pages/id/index.mdx @@ -21,7 +21,7 @@ Node.js® adalah lingkungan runtime JavaScript gratis dan sumber terbuka yang li Unduhan Node.js {release.versionWithPrefix} 1 dengan dukungan jangka panjang (LTS). - Node.js juga dapat diinstal melalui manajer paket. + Node.js juga dapat diinstal melalui manajer paket. )} diff --git a/apps/site/pages/ja/index.mdx b/apps/site/pages/ja/index.mdx index ba34b86b0c6c4..0853e6b7bfa6d 100644 --- a/apps/site/pages/ja/index.mdx +++ b/apps/site/pages/ja/index.mdx @@ -21,7 +21,7 @@ Node.js®は自由かつオープンソースでクロスプラットフォー 長期サポート版Node.js {release.versionWithPrefix} 1をダウンロードする。 - パッケージマネージャーを利用したインストール方法もあります。 + パッケージマネージャーを利用したインストール方法もあります。 )} diff --git a/apps/site/pages/ko/index.mdx b/apps/site/pages/ko/index.mdx index 7fb3d0a27bbed..6e5d2141a6fcc 100644 --- a/apps/site/pages/ko/index.mdx +++ b/apps/site/pages/ko/index.mdx @@ -21,7 +21,7 @@ Node.js®는 무료, 오픈소스, 크로스플랫폼 JavaSript 런타임 환경 Node.js 다운로드 {release.versionWithPrefix} 1 LTS. - Node.js는 package managers를 통해서도 다운로드 할 수 있습니다.. + Node.js는 package managers를 통해서도 다운로드 할 수 있습니다.. )} diff --git a/apps/site/pages/pt/index.mdx b/apps/site/pages/pt/index.mdx index 3b0d913dfe3cd..a1ca7594dc92b 100644 --- a/apps/site/pages/pt/index.mdx +++ b/apps/site/pages/pt/index.mdx @@ -21,7 +21,7 @@ Node.js® é uma ambiente de execução de JavaScript disponível para várias p 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. + A Node.js também pode ser instalada através dos gestores de pacotes. )} diff --git a/apps/site/pages/tr/index.mdx b/apps/site/pages/tr/index.mdx index 163b720e0a7d9..d8e43069cd368 100644 --- a/apps/site/pages/tr/index.mdx +++ b/apps/site/pages/tr/index.mdx @@ -21,7 +21,7 @@ Node.js®, ücretsiz, açık kaynaklı, çapraz platform JavaScript çalıştır Node.js'i indir {release.versionWithPrefix} 1 uzun vadeli destek ile indirin. - Node.js ayrıca paket yöneticileri aracılığıyla da kurulabilir. + Node.js ayrıca paket yöneticileri aracılığıyla da kurulabilir. )} diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx index 4e4bf73d5184a..5566b99b83752 100644 --- a/apps/site/pages/uk/index.mdx +++ b/apps/site/pages/uk/index.mdx @@ -21,7 +21,7 @@ Node.js® — це безплатне, кросплатформне середо Завантажує Node.js {release.versionWithPrefix} 1 із довгостроковою підтримкою. - Node.js також можна встановити через менеджери пакетів. + Node.js також можна встановити через менеджери пакетів. )} diff --git a/apps/site/pages/zh-cn/index.mdx b/apps/site/pages/zh-cn/index.mdx index 8b6a9ad0caa30..5c5e83cab6ec5 100644 --- a/apps/site/pages/zh-cn/index.mdx +++ b/apps/site/pages/zh-cn/index.mdx @@ -21,7 +21,7 @@ Node.js® 是一个免费、开源、跨平台的 JavaScript 运行时环境, 下载 Node.js {release.versionWithPrefix} 1 长期支持版本。 - Node.js 也可以通过 软件包管理器 进行安装。 + Node.js 也可以通过 软件包管理器 进行安装。 )} diff --git a/apps/site/pages/zh-tw/index.mdx b/apps/site/pages/zh-tw/index.mdx index 0a9fac05cf65a..e310b30c2bdce 100644 --- a/apps/site/pages/zh-tw/index.mdx +++ b/apps/site/pages/zh-tw/index.mdx @@ -21,7 +21,7 @@ Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發 下載享有長期支援功能的 Node.js {release.versionWithPrefix} 1。 - Node.js 也可以透過 套件管理器 安裝。 + Node.js 也可以透過 套件管理器 安裝。 )} diff --git a/apps/site/redirects.json b/apps/site/redirects.json index 8b751766c6355..737a924e747a1 100644 --- a/apps/site/redirects.json +++ b/apps/site/redirects.json @@ -284,6 +284,10 @@ "source": "/:locale/download", "destination": "/:locale/download/package-manager" }, + { + "source": "/download/package-manager", + "destination": "/en/download/package-manager" + }, { "source": "/:locale/download/current", "destination": "/:locale/download/package-manager/current" From 227308bb8501f3db998ea4718f841f5c53c70c75 Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Wed, 23 Oct 2024 07:17:42 +0200 Subject: [PATCH 0087/1385] [automated]: crowdin sync (#7124) * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: automated format of translated files Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: automated format of translated files Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Brian Muenzenmeyer * 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> Signed-off-by: Brian Muenzenmeyer Co-authored-by: nodejs-crowdin Co-authored-by: Brian Muenzenmeyer Co-authored-by: bmuenzenmeyer --- packages/i18n/locales/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index e1c120f2e4079..0c92090a25825 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -109,7 +109,8 @@ "links": { "testRunner": "Exécuteur de test", "introduction": "Découverte de l'exécuteur de tests de Node.js", - "usingTestRunner": "Utilisation de l'exécuteur de tests de Node.js" + "usingTestRunner": "Utilisation de l'exécuteur de tests de Node.js", + "mocking": "Mocking dans les tests" } } }, From 9b63b5fa3074c798d653ec59fdd71c58336e85dd Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 24 Oct 2024 23:55:47 +0200 Subject: [PATCH 0088/1385] Blog: v23.1.0 release post (#7140) Refs: https://github.com/nodejs/node/pull/55513 --- apps/site/pages/en/blog/release/v23.1.0.md | 234 +++++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.1.0.md diff --git a/apps/site/pages/en/blog/release/v23.1.0.md b/apps/site/pages/en/blog/release/v23.1.0.md new file mode 100644 index 0000000000000..98c083dae5ca1 --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.1.0.md @@ -0,0 +1,234 @@ +--- +date: '2024-10-24T21:32:29.579Z' +category: release +title: Node v23.1.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2024-10-24, Version 23.1.0 (Current), @aduh95 + +### Notable Changes + +#### `Buffer` now work with resizable `ArrayBuffer` + +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 M Snell in [#55377](https://github.com/nodejs/node/pull/55377). + +#### `MockTimers` test runner API is now stable + +`MockTimers`, introduced in April 2023, has just reached **stable status**. This +API provides comprehensive support for mocking `Date` and all major timers in +Node.js, including `setTimeout`, `setInterval`, and `setImmediate`, both from +the `node:timers`, `node:timers/promises` modules and global objects. After +months of refinement, developers can now fully rely on `MockTimers` for testing +time-based operations with confidence, ensuring better control over asynchronous +behavior in their Node.js applications. + +Example usage with initial `Date` object as time set: + +```mjs +import { mock } from 'node:test'; +mock.timers.enable({ apis: ['Date'], now: new Date('1970-01-01') }); +``` + +Contributed by Erick Wendel in [#55398](https://github.com/nodejs/node/pull/55398). + +#### JSON modules and import attributes are now stable + +The two proposals reached stage 4 of the TC39 process, at the October 2024 +meeting. The Node.js implementation already matches exactly the semantics +required by the proposals. + +Contributed by Nicolò Ribaudo by [#55333](https://github.com/nodejs/node/pull/55333). + +#### Other Notable Changes + +- \[[`4ba31b7f20`](https://github.com/nodejs/node/commit/4ba31b7f20)] - **(SEMVER-MINOR)** **assert**: make `assertion_error` use Myers diff algorithm (Giovanni Bucci) [#54862](https://github.com/nodejs/node/pull/54862) +- \[[`dcbc5fbe65`](https://github.com/nodejs/node/commit/dcbc5fbe65)] - **(SEMVER-MINOR)** **lib**: add `UV_UDP_REUSEPORT` for udp (theanarkh) [#55403](https://github.com/nodejs/node/pull/55403) +- \[[`ec867ac7ce`](https://github.com/nodejs/node/commit/ec867ac7ce)] - **(SEMVER-MINOR)** **net**: add `UV_TCP_REUSEPORT` for tcp (theanarkh) [#55408](https://github.com/nodejs/node/pull/55408) + +### Commits + +- \[[`4ba31b7f20`](https://github.com/nodejs/node/commit/4ba31b7f20)] - **(SEMVER-MINOR)** **assert**: make assertion_error use Myers diff algorithm (Giovanni Bucci) [#54862](https://github.com/nodejs/node/pull/54862) +- \[[`fe667bea28`](https://github.com/nodejs/node/commit/fe667bea28)] - **assert**: fix deepEqual always return true on URL (Xuguang Mei) [#50853](https://github.com/nodejs/node/pull/50853) +- \[[`aca03d9083`](https://github.com/nodejs/node/commit/aca03d9083)] - **benchmark**: add --runs support to run.js (Rafael Gonzaga) [#55158](https://github.com/nodejs/node/pull/55158) +- \[[`c5abf50692`](https://github.com/nodejs/node/commit/c5abf50692)] - **benchmark**: adjust byte size for buffer-copy (Rafael Gonzaga) [#55295](https://github.com/nodejs/node/pull/55295) +- \[[`d3618b2334`](https://github.com/nodejs/node/commit/d3618b2334)] - **benchmark**: adjust config for deepEqual object (Rafael Gonzaga) [#55254](https://github.com/nodejs/node/pull/55254) +- \[[`c05582da3d`](https://github.com/nodejs/node/commit/c05582da3d)] - **(SEMVER-MINOR)** **buffer**: make Buffer work with resizable ArrayBuffer (James M Snell) [#55377](https://github.com/nodejs/node/pull/55377) +- \[[`194bb0fca5`](https://github.com/nodejs/node/commit/194bb0fca5)] - **build**: fix GN build for cares/uv deps (Cheng) [#55477](https://github.com/nodejs/node/pull/55477) +- \[[`8eb5359592`](https://github.com/nodejs/node/commit/8eb5359592)] - **build**: fix uninstall script for AIX 7.1 (Cloorc) [#55438](https://github.com/nodejs/node/pull/55438) +- \[[`32f7d5ad1c`](https://github.com/nodejs/node/commit/32f7d5ad1c)] - **build**: conditionally compile bundled sqlite (Richard Lau) [#55409](https://github.com/nodejs/node/pull/55409) +- \[[`2147e496e7`](https://github.com/nodejs/node/commit/2147e496e7)] - **build**: tidy up cares.gyp (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445) +- \[[`2beae50c77`](https://github.com/nodejs/node/commit/2beae50c77)] - **build**: synchronize list of c-ares source files (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445) +- \[[`f48d30eb9f`](https://github.com/nodejs/node/commit/f48d30eb9f)] - **build**: fix path concatenation (Mohammed Keyvanzadeh) [#55387](https://github.com/nodejs/node/pull/55387) +- \[[`d42522eec5`](https://github.com/nodejs/node/commit/d42522eec5)] - **build**: fix make errors that occur in Makefile (minkyu_kim) [#55287](https://github.com/nodejs/node/pull/55287) +- \[[`52da293471`](https://github.com/nodejs/node/commit/52da293471)] - **cli**: add `--heap-prof` flag available to `NODE_OPTIONS` (Juan José) [#54259](https://github.com/nodejs/node/pull/54259) +- \[[`adead26815`](https://github.com/nodejs/node/commit/adead26815)] - **crypto**: include openssl/rand.h explicitly (Shelley Vohr) [#55425](https://github.com/nodejs/node/pull/55425) +- \[[`df2f1adf9e`](https://github.com/nodejs/node/commit/df2f1adf9e)] - **deps**: V8: cherry-pick f915fa4c9f41 (Chengzhong Wu) [#55484](https://github.com/nodejs/node/pull/55484) +- \[[`bfc10a975f`](https://github.com/nodejs/node/commit/bfc10a975f)] - **deps**: update googletest to df1544b (Node.js GitHub Bot) [#55465](https://github.com/nodejs/node/pull/55465) +- \[[`45ef1809bd`](https://github.com/nodejs/node/commit/45ef1809bd)] - **deps**: update c-ares to v1.34.2 (Node.js GitHub Bot) [#55463](https://github.com/nodejs/node/pull/55463) +- \[[`c2b5ebfeca`](https://github.com/nodejs/node/commit/c2b5ebfeca)] - **deps**: update ada to 2.9.1 (Node.js GitHub Bot) [#54679](https://github.com/nodejs/node/pull/54679) +- \[[`903863cafa`](https://github.com/nodejs/node/commit/903863cafa)] - **deps**: update simdutf to 5.6.0 (Node.js GitHub Bot) [#55379](https://github.com/nodejs/node/pull/55379) +- \[[`008fb5f7f4`](https://github.com/nodejs/node/commit/008fb5f7f4)] - **deps**: patch V8 to 12.9.202.28 (Node.js GitHub Bot) [#55371](https://github.com/nodejs/node/pull/55371) +- \[[`8b282228ae`](https://github.com/nodejs/node/commit/8b282228ae)] - **deps**: update c-ares to v1.34.1 (Node.js GitHub Bot) [#55369](https://github.com/nodejs/node/pull/55369) +- \[[`54d55f2337`](https://github.com/nodejs/node/commit/54d55f2337)] - _**Revert**_ "**deps**: disable io_uring support in libuv by default" (Santiago Gimeno) [#55114](https://github.com/nodejs/node/pull/55114) +- \[[`bfb3c621c4`](https://github.com/nodejs/node/commit/bfb3c621c4)] - **deps**: update libuv to 1.49.1 (Santiago Gimeno) [#55114](https://github.com/nodejs/node/pull/55114) +- \[[`055d2b8919`](https://github.com/nodejs/node/commit/055d2b8919)] - **deps**: update amaro to 0.1.9 (Node.js GitHub Bot) [#55348](https://github.com/nodejs/node/pull/55348) +- \[[`c028d21b44`](https://github.com/nodejs/node/commit/c028d21b44)] - **diagnostics_channel**: fix unsubscribe during publish (simon-id) [#55116](https://github.com/nodejs/node/pull/55116) +- \[[`b4b6ddb777`](https://github.com/nodejs/node/commit/b4b6ddb777)] - **dns**: honor the order option (Luigi Pinca) [#55392](https://github.com/nodejs/node/pull/55392) +- \[[`37352cef7f`](https://github.com/nodejs/node/commit/37352cef7f)] - **doc**: changed the command used to verify SHASUMS256 (adriancuadrado) [#55420](https://github.com/nodejs/node/pull/55420) +- \[[`66bcf4c065`](https://github.com/nodejs/node/commit/66bcf4c065)] - **doc**: move dual package shipping docs to separate repo (Joyee Cheung) [#55444](https://github.com/nodejs/node/pull/55444) +- \[[`04b41bda03`](https://github.com/nodejs/node/commit/04b41bda03)] - **doc**: add note about stdio streams in child_process (Ederin (Ed) Igharoro) [#55322](https://github.com/nodejs/node/pull/55322) +- \[[`689d3a3e41`](https://github.com/nodejs/node/commit/689d3a3e41)] - **doc**: add `isBigIntObject` to documentation (leviscar) [#55450](https://github.com/nodejs/node/pull/55450) +- \[[`784c825a27`](https://github.com/nodejs/node/commit/784c825a27)] - **doc**: remove outdated remarks about `highWaterMark` in fs (Ian Kerins) [#55462](https://github.com/nodejs/node/pull/55462) +- \[[`1ec25e8573`](https://github.com/nodejs/node/commit/1ec25e8573)] - **doc**: move Danielle Adams key to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399) +- \[[`7d5bb097eb`](https://github.com/nodejs/node/commit/7d5bb097eb)] - **doc**: move Bryan English key to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399) +- \[[`2967471f67`](https://github.com/nodejs/node/commit/2967471f67)] - **doc**: move Beth Griggs keys to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399) +- \[[`0be3a7505f`](https://github.com/nodejs/node/commit/0be3a7505f)] - **doc**: add changelog for mocktimers (Erick Wendel) [#55398](https://github.com/nodejs/node/pull/55398) +- \[[`e15f779794`](https://github.com/nodejs/node/commit/e15f779794)] - **doc**: spell out condition restrictions (Jan Martin) [#55187](https://github.com/nodejs/node/pull/55187) +- \[[`c3f2216a7d`](https://github.com/nodejs/node/commit/c3f2216a7d)] - **doc**: add instructions for WinGet build (Hüseyin Açacak) [#55356](https://github.com/nodejs/node/pull/55356) +- \[[`bdc2c3bb94`](https://github.com/nodejs/node/commit/bdc2c3bb94)] - **doc**: add missing return values in buffer docs (Karl Horky) [#55273](https://github.com/nodejs/node/pull/55273) +- \[[`41f68f59af`](https://github.com/nodejs/node/commit/41f68f59af)] - **doc**: fix ambasador markdown list (Rafael Gonzaga) [#55361](https://github.com/nodejs/node/pull/55361) +- \[[`bbd5318729`](https://github.com/nodejs/node/commit/bbd5318729)] - **esm**: add a fallback when importer in not a file (Antoine du Hamel) [#55471](https://github.com/nodejs/node/pull/55471) +- \[[`22d77773fd`](https://github.com/nodejs/node/commit/22d77773fd)] - **esm**: fix inconsistency with `importAssertion` in `resolve` hook (Wei Zhu) [#55365](https://github.com/nodejs/node/pull/55365) +- \[[`48bb87b059`](https://github.com/nodejs/node/commit/48bb87b059)] - **esm**: mark import attributes and JSON module as stable (Nicolò Ribaudo) [#55333](https://github.com/nodejs/node/pull/55333) +- \[[`8ceefebaf2`](https://github.com/nodejs/node/commit/8ceefebaf2)] - **events**: optimize EventTarget.addEventListener (Robert Nagy) [#55312](https://github.com/nodejs/node/pull/55312) +- \[[`45f960cab6`](https://github.com/nodejs/node/commit/45f960cab6)] - **fs**: pass correct path to `DirentFromStats` during `glob` (Aviv Keller) [#55071](https://github.com/nodejs/node/pull/55071) +- \[[`d9494a7641`](https://github.com/nodejs/node/commit/d9494a7641)] - **fs**: use `wstring` on Windows paths (jazelly) [#55171](https://github.com/nodejs/node/pull/55171) +- \[[`0f1d13e359`](https://github.com/nodejs/node/commit/0f1d13e359)] - **lib**: ensure FORCE_COLOR forces color output in non-TTY environments (Pietro Marchini) [#55404](https://github.com/nodejs/node/pull/55404) +- \[[`dcbc5fbe65`](https://github.com/nodejs/node/commit/dcbc5fbe65)] - **(SEMVER-MINOR)** **lib**: add UV_UDP_REUSEPORT for udp (theanarkh) [#55403](https://github.com/nodejs/node/pull/55403) +- \[[`714f272423`](https://github.com/nodejs/node/commit/714f272423)] - **lib**: remove startsWith/endsWith primordials for char checks (Gürgün Dayıoğlu) [#55407](https://github.com/nodejs/node/pull/55407) +- \[[`4e5c90bb41`](https://github.com/nodejs/node/commit/4e5c90bb41)] - **lib**: replace `createDeferredPromise` util with `Promise.withResolvers` (Yagiz Nizipli) [#54836](https://github.com/nodejs/node/pull/54836) +- \[[`db18aca47a`](https://github.com/nodejs/node/commit/db18aca47a)] - **lib**: add flag to drop connection when running in cluster mode (theanarkh) [#54927](https://github.com/nodejs/node/pull/54927) +- \[[`dd848f2d1e`](https://github.com/nodejs/node/commit/dd848f2d1e)] - **lib**: test_runner#mock:timers respeced timeout_max behaviour (BadKey) [#55375](https://github.com/nodejs/node/pull/55375) +- \[[`a9473bb8e3`](https://github.com/nodejs/node/commit/a9473bb8e3)] - **lib**: remove settled dependant signals when they are GCed (Edigleysson Silva (Edy)) [#55354](https://github.com/nodejs/node/pull/55354) +- \[[`07ad987aa1`](https://github.com/nodejs/node/commit/07ad987aa1)] - **lib**: convert transfer sequence to array in js (Jason Zhang) [#55317](https://github.com/nodejs/node/pull/55317) +- \[[`d54d3b24c3`](https://github.com/nodejs/node/commit/d54d3b24c3)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#55381](https://github.com/nodejs/node/pull/55381) +- \[[`12d709bd27`](https://github.com/nodejs/node/commit/12d709bd27)] - **meta**: assign CODEOWNERS for /deps/ncrypto/\* (Filip Skokan) [#55426](https://github.com/nodejs/node/pull/55426) +- \[[`0130780eec`](https://github.com/nodejs/node/commit/0130780eec)] - **meta**: change color to blue notify review-wanted (Rafael Gonzaga) [#55423](https://github.com/nodejs/node/pull/55423) +- \[[`335a507027`](https://github.com/nodejs/node/commit/335a507027)] - **meta**: bump codecov/codecov-action from 4.5.0 to 4.6.0 (dependabot\[bot]) [#55222](https://github.com/nodejs/node/pull/55222) +- \[[`5ffc721d09`](https://github.com/nodejs/node/commit/5ffc721d09)] - **meta**: bump github/codeql-action from 3.26.6 to 3.26.10 (dependabot\[bot]) [#55221](https://github.com/nodejs/node/pull/55221) +- \[[`d9fde2c45b`](https://github.com/nodejs/node/commit/d9fde2c45b)] - **meta**: bump step-security/harden-runner from 2.9.1 to 2.10.1 (dependabot\[bot]) [#55220](https://github.com/nodejs/node/pull/55220) +- \[[`2c960a212e`](https://github.com/nodejs/node/commit/2c960a212e)] - **module**: include module information in require(esm) warning (Joyee Cheung) [#55397](https://github.com/nodejs/node/pull/55397) +- \[[`a12dbf03d9`](https://github.com/nodejs/node/commit/a12dbf03d9)] - **module**: simplify ts under node_modules check (Marco Ippolito) [#55440](https://github.com/nodejs/node/pull/55440) +- \[[`ec867ac7ce`](https://github.com/nodejs/node/commit/ec867ac7ce)] - **(SEMVER-MINOR)** **net**: add UV_TCP_REUSEPORT for tcp (theanarkh) [#55408](https://github.com/nodejs/node/pull/55408) +- \[[`9e320279a2`](https://github.com/nodejs/node/commit/9e320279a2)] - _**Revert**_ "**path**: fix bugs and inconsistencies" (Aviv Keller) [#55414](https://github.com/nodejs/node/pull/55414) +- \[[`1ce8928db3`](https://github.com/nodejs/node/commit/1ce8928db3)] - **sqlite**: cache column names in stmt.all() (Fedor Indutny) [#55373](https://github.com/nodejs/node/pull/55373) +- \[[`cc775d314a`](https://github.com/nodejs/node/commit/cc775d314a)] - **src**: switch from `Get/SetPrototype` to `Get/SetPrototypeV2` (Aviv Keller) [#55453](https://github.com/nodejs/node/pull/55453) +- \[[`89c96ade53`](https://github.com/nodejs/node/commit/89c96ade53)] - **src**: remove icu based `ToASCII` and `ToUnicode` (Yagiz Nizipli) [#55156](https://github.com/nodejs/node/pull/55156) +- \[[`57dbbf8402`](https://github.com/nodejs/node/commit/57dbbf8402)] - **src**: fix winapi_strerror error string (Hüseyin Açacak) [#55207](https://github.com/nodejs/node/pull/55207) +- \[[`a490bb8745`](https://github.com/nodejs/node/commit/a490bb8745)] - **src**: remove uv\_\_node_patch_is_using_io_uring (Santiago Gimeno) [#55114](https://github.com/nodejs/node/pull/55114) +- \[[`0da1632937`](https://github.com/nodejs/node/commit/0da1632937)] - **src,lib**: introduce `util.getSystemErrorMessage(err)` (Juan José) [#54075](https://github.com/nodejs/node/pull/54075) +- \[[`6764273127`](https://github.com/nodejs/node/commit/6764273127)] - **stream**: propagate AbortSignal reason (Marvin ROGER) [#55473](https://github.com/nodejs/node/pull/55473) +- \[[`4dc2791cdd`](https://github.com/nodejs/node/commit/4dc2791cdd)] - **test**: add repl preview timeout test (Chengzhong Wu) [#55484](https://github.com/nodejs/node/pull/55484) +- \[[`8634e054d4`](https://github.com/nodejs/node/commit/8634e054d4)] - **test**: make test-node-output-v8-warning more flexible (Shelley Vohr) [#55401](https://github.com/nodejs/node/pull/55401) +- \[[`6c8564b55d`](https://github.com/nodejs/node/commit/6c8564b55d)] - **test**: fix addons and node-api test assumptions (Antoine du Hamel) [#55441](https://github.com/nodejs/node/pull/55441) +- \[[`94e863cdb7`](https://github.com/nodejs/node/commit/94e863cdb7)] - **test**: update wpt test for webmessaging/broadcastchannel (devstone) [#55205](https://github.com/nodejs/node/pull/55205) +- \[[`c10c6715cd`](https://github.com/nodejs/node/commit/c10c6715cd)] - **test**: deflake `test-cluster-shared-handle-bind-privileged-port` (Aviv Keller) [#55378](https://github.com/nodejs/node/pull/55378) +- \[[`6f7379a048`](https://github.com/nodejs/node/commit/6f7379a048)] - **test**: fix invalid `file:` URL in `test-fs-path-dir` (Antoine du Hamel) [#55454](https://github.com/nodejs/node/pull/55454) +- \[[`dd5a08d022`](https://github.com/nodejs/node/commit/dd5a08d022)] - **test**: update `console` wpt (Aviv Keller) [#55192](https://github.com/nodejs/node/pull/55192) +- \[[`9b7b4a6b25`](https://github.com/nodejs/node/commit/9b7b4a6b25)] - **test**: remove duplicate tests (Luigi Pinca) [#55393](https://github.com/nodejs/node/pull/55393) +- \[[`eb2fab3da1`](https://github.com/nodejs/node/commit/eb2fab3da1)] - **test**: update test_util.cc for coverage (minkyu_kim) [#55291](https://github.com/nodejs/node/pull/55291) +- \[[`59923d137e`](https://github.com/nodejs/node/commit/59923d137e)] - **test**: update `compression` wpt (Aviv Keller) [#55191](https://github.com/nodejs/node/pull/55191) +- \[[`1b63a822ac`](https://github.com/nodejs/node/commit/1b63a822ac)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55427](https://github.com/nodejs/node/pull/55427) +- \[[`97c6448f63`](https://github.com/nodejs/node/commit/97c6448f63)] - **test_runner**: mark mockTimers as stable (Erick Wendel) [#55398](https://github.com/nodejs/node/pull/55398) +- \[[`69ee56aacd`](https://github.com/nodejs/node/commit/69ee56aacd)] - **test_runner**: add support for scheduler.wait on mock timers (Erick Wendel) [#55244](https://github.com/nodejs/node/pull/55244) +- \[[`d9f0407cf6`](https://github.com/nodejs/node/commit/d9f0407cf6)] - **test_runner**: require `--enable-source-maps` for sourcemap coverage (Aviv Keller) [#55359](https://github.com/nodejs/node/pull/55359) +- \[[`2ac2c5a7e7`](https://github.com/nodejs/node/commit/2ac2c5a7e7)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#55470](https://github.com/nodejs/node/pull/55470) +- \[[`10f6b90f7d`](https://github.com/nodejs/node/commit/10f6b90f7d)] - **tools**: update gyp-next to 0.18.3 (Node.js GitHub Bot) [#55464](https://github.com/nodejs/node/pull/55464) +- \[[`65936a8bb6`](https://github.com/nodejs/node/commit/65936a8bb6)] - **tools**: add script to synch c-ares source lists (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445) +- \[[`1da4168486`](https://github.com/nodejs/node/commit/1da4168486)] - **tools**: add `polyfilled` option to `prefer-primordials` rule (Antoine du Hamel) [#55318](https://github.com/nodejs/node/pull/55318) +- \[[`3b2b3a8df2`](https://github.com/nodejs/node/commit/3b2b3a8df2)] - **tools**: fix typos (Nathan Baulch) [#55061](https://github.com/nodejs/node/pull/55061) +- \[[`736c085a5d`](https://github.com/nodejs/node/commit/736c085a5d)] - **typings**: add missing type of `ArrayBufferPrototypeGetByteLength` (Wuli Zuo) [#55439](https://github.com/nodejs/node/pull/55439) +- \[[`7b3e38b855`](https://github.com/nodejs/node/commit/7b3e38b855)] - **url**: handle "unsafe" characters properly in `pathToFileURL` (Antoine du Hamel) [#54545](https://github.com/nodejs/node/pull/54545) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.1.0/node-v23.1.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.1.0/node-v23.1.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.1.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.1.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.1.0/node-v23.1.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.1.0/node-v23.1.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.1.0/ \ +Documentation: https://nodejs.org/docs/v23.1.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +e153fef6a3e71d92b2314d2f56c4a9ca0699e8614493c246cf6be6a09f6197b1 node-v23.1.0-aix-ppc64.tar.gz +468a5d028cf09ab7dbf72e35acf892f801efca8f5aa0d8e4ca9c6b01b4b2b2b4 node-v23.1.0-arm64.msi +414d4b68299be0cbccfabfac59e53d0726151320e9ff71457ab0bb507fc0592d node-v23.1.0-darwin-arm64.tar.gz +16e6ed0cdf81d4f93e05b8287f89799be87033ff2eca7956daa1d3d1ea2ae680 node-v23.1.0-darwin-arm64.tar.xz +cb84bd83064ff75f63dd95f1a53b6f7f2d2d36c67e03e9e9c87cfa2b977511b6 node-v23.1.0-darwin-x64.tar.gz +2d4e9c12ed17c3fffff601cd042804636bddbc90f5455ca92576bf9760dbe52d node-v23.1.0-darwin-x64.tar.xz +53ac3b2d5375e5daa089176d5eeacfb0f842c7003cccdf4dcfc01b5ce795fcaa node-v23.1.0-headers.tar.gz +42df72bd7391d404887581e6d96ea18b6f328a42e502c0f3bdb97eb3ecbfaaaa node-v23.1.0-headers.tar.xz +21e20e961eb2f6ab3fcc24421d3975d1714b6a4525c8ecd4f3dbbee3938a95cc node-v23.1.0-linux-arm64.tar.gz +fde280a7fdf9dcf0ce827caed750d8a0d7f82a352df1f98c1830614c27718cad node-v23.1.0-linux-arm64.tar.xz +960287c96b4a13a7c2ba7eb71686550d1281aae0caf5d80afbd76f0c72044ae3 node-v23.1.0-linux-armv7l.tar.gz +b270287ed2a7e6235214b3d2e6ad76f0a6fb1269af8c1dac6d8aca34f5c6b22e node-v23.1.0-linux-armv7l.tar.xz +51911fe95abce0d3866f436b3ba553252de1acf264369f3bcdd9aad4aad7454d node-v23.1.0-linux-ppc64le.tar.gz +0950991435d69662e5d9ce1c352a28b008ae41704fbce36955439f61483422b8 node-v23.1.0-linux-ppc64le.tar.xz +b38024a98852e16476351ce0258b0cf2a35e408e9cf50c2cfa2b361687bb16f1 node-v23.1.0-linux-s390x.tar.gz +5e40a0540785c885fc399313aad4dd2a0a4757228010d95bd5ececa3d753ad3b node-v23.1.0-linux-s390x.tar.xz +1c436b2ac33a4fef7cf08c08b8a33362325c0c8ac8d05d4054a79628d5d0b5ae node-v23.1.0-linux-x64.tar.gz +ccacff4f32e3c3729f5094d20e4089a16a3b8f1381e9730b19f1c16f7cf64da9 node-v23.1.0-linux-x64.tar.xz +7d4132d56bb852ddb2e85f51dbd10f8f2b0da363f992ef60a094dd88954c0a46 node-v23.1.0-win-arm64.7z +8209ccbcdb73395453c0f1065247a0d780bedbec95a6f79aa87692b5412fcc5a node-v23.1.0-win-arm64.zip +3af98fb098d8801a93cc178a95cee2bb828cdac5f680413b7e43fd9a42824a73 node-v23.1.0-win-x64.7z +0e904430fa560b7666b48b0f7b9a6dddbb5a70613c00ea3f386edd64726ade70 node-v23.1.0-win-x64.zip +5836348cc939c43d6a520b57c52c69d744e86f777436535586cb4961e92c192c node-v23.1.0-x64.msi +5a686bd558cd9cdb0992f593103c46c9a90930f77b07f93de0bed298b358f21a node-v23.1.0.pkg +4ccf155c703d53caf4e56624004782f106fce2b6935496b3ff29c6da4d6b6674 node-v23.1.0.tar.gz +57cbfd3dd51f9300ea2b8e60a8ed215b1eaa71fbde4c3903a7d31a443a4a4423 node-v23.1.0.tar.xz +f3491ab76eeb76c675199d53d31f756e6b8de56e24dd77de59ac942c597b9b41 win-arm64/node.exe +26f2d9ca9ec82df85c3cadee0de373a4836e46293149eec718ab716acbe4e1ab win-arm64/node.lib +715c13e2459a7ff9fc7eeaed8efda7f42a30dee031eb3227da474f5f77030714 win-arm64/node_pdb.7z +4ac413502bc5d1a380f9a854f4986635c0a4f0aa7b53a697f6d70a9a8d3324a7 win-arm64/node_pdb.zip +60b05e773fd1c2e589e8e20af540ab17894dcae6482cfa0955fb36900efdad68 win-x64/node.exe +7ef14cabb18518a70e04ca067134d9a51beee11590ea3114e1baf68054124c62 win-x64/node.lib +b9f393f2d3e72a0a2af20db517458c4525981ce2e9fc2cf7df4bf28a5bd4822b win-x64/node_pdb.7z +8c487589b9bad1c83e8f0d04fae57ea5e70862c68354063925fcc026bb8d79f7 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmcavBIACgkQIdkA/9sj +N1bCVxAAux/68iV9NgaXXran5rsSvgFL0Kdyo1L/45KBLkwmXfLFg7RpMEU+AjoS +cuFm4PmWrYmgFb3eUmZLEsBtj+kC/IxUX/oO5ZiYiSlBXqnryOh4twBdxDSM999m +/B2FgVxk3uvyYJtRHD4a2odgB9u7JWXYTmquhgIa2FqvVX6CPHQEFlZr2RogohhX +bxkXe3gsLikHYZ+L3FIJcNwWPPDm2+R5twxad0WeyRTI5sTD21y+9Brv2AxCOrV+ +kk8tzsJU9Kn2CX4kJEJ1ERwZZeGoF0tHgilIm81z9ljvORFOn81YBT99Jz6qP8Dq +u0wErVPaqrHRHWGoIMBEfHotVrG92CioeX0ei4oGCJxBVihxTiTAOFDmBlbAE2Dp +iKNe1wCObsih2rAzqWv9N/cVEVDljrtrRpe/sFVFwg+WMWioHcK5uXPpdvY1ldWC +nGZplD5pbqAmbj2D7fo4Fe/GxQX2rAmWZNk4lpM/YbgVJePqLaLBjpPqMlEkaEM5 +QcTFN5vz2zGx1/6ZVRf+LqbBEW6rBq2ktJe2ZXVPsADNjhxzQVHUk1wpXYcKHDyx +JnnpCuEHfhEpZA0oQueEbgml9rb2EeRDzfHKO8DLlkzRd0UDR99iadg7KwjX0yhB +M5weTtX6qVeNH3KMOkYYsFPE4ZM2n9Hhnp+bJ/urvZQmrt8aXAg= +=kfDn +-----END PGP SIGNATURE----- +``` From d0ca997a7c9457e3f408a072ba9d5f7cecf0288d Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Sat, 26 Oct 2024 00:20:53 +0200 Subject: [PATCH 0089/1385] feat(blog): enable events (#7137) --- apps/site/layouts/Blog.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/site/layouts/Blog.tsx b/apps/site/layouts/Blog.tsx index 3684c929ace34..1b3e1084e8191 100644 --- a/apps/site/layouts/Blog.tsx +++ b/apps/site/layouts/Blog.tsx @@ -51,6 +51,7 @@ const BlogLayout: FC = async () => { 'announcements', 'release', 'vulnerability', + 'events', ])} />
From 0a4a99fa23dd247aa2ae449bac38596db0d5ef9b Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Sat, 26 Oct 2024 03:09:00 +0200 Subject: [PATCH 0090/1385] fix: remove unused i18n key (#7138) --- packages/i18n/locales/en.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 771f9f3a18fbd..90507781bbab6 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -190,11 +190,6 @@ "label": "Toggle Dark Mode" } }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "No Upcoming Event" - } - }, "metabar": { "lastUpdated": "Last Updated", "readingTime": "Reading Time", From 32fd063698eec845dc86f1330fc5aee44affcdb7 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Sun, 27 Oct 2024 02:06:28 +0100 Subject: [PATCH 0091/1385] content/chore(learn): give visibility to the status page (#7139) * content/chore(learn): give visibility to the status page * Update contribute.md Co-authored-by: Brian Muenzenmeyer Signed-off-by: Augustin Mauroy --------- Signed-off-by: Augustin Mauroy Co-authored-by: Brian Muenzenmeyer --- README.md | 2 ++ apps/site/pages/en/about/get-involved/contribute.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7d354096d580a..a5d4cde858f9e 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,8 @@ These are maintained in different repositories and we urge users to open **issue [Translation Guidelines][] +[Status Page](https://status.nodejs.org/) of the Node.js web infrastructure. + ## Thanks - Thanks to all contributors and collaborators that make this project possible. diff --git a/apps/site/pages/en/about/get-involved/contribute.md b/apps/site/pages/en/about/get-involved/contribute.md index 6392c5fe32cb5..06408837cbe86 100644 --- a/apps/site/pages/en/about/get-involved/contribute.md +++ b/apps/site/pages/en/about/get-involved/contribute.md @@ -24,7 +24,7 @@ When reporting an issue we also need as much information about your environment 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) +- 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 From 3d144f74e57067f3a966cc8794634130c8e61eae Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Mon, 28 Oct 2024 08:53:40 -0500 Subject: [PATCH 0092/1385] hotfix: fix prettier:fix script to pass --write argument Signed-off-by: Brian Muenzenmeyer --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ce12e0277b638..9288768964e9d 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "lint": "turbo run lint", "lint:fix": "turbo run lint --force", "prettier": "prettier \"**/*.{js,mjs,ts,tsx,md,mdx,json,yml,css}\" --check --cache --cache-strategy=content --cache-location=.prettiercache", - "prettier:fix": "npm run prettier --write", + "prettier:fix": "npm run prettier -- --write", "format": "npm run lint:fix && npm run prettier:fix", "test": "turbo test:unit", "prepare": "husky" From ccfd4b37d99967e8654acaeb2c894793e9ecab80 Mon Sep 17 00:00:00 2001 From: Alicia Makena <140601003+Makena-Wambui@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:11:23 +0300 Subject: [PATCH 0093/1385] Improve npm documentation for dependency management (#7146) * Added a more descriptive explanation as to what npm does, and what dependencies are. * Added a more descriptive explanation as to what npm does, and what dependencies are, including punctuation. * Update apps/site/pages/en/learn/getting-started/an-introduction-to-the-npm-package-manager.md Signed-off-by: Brian Muenzenmeyer --------- Signed-off-by: Brian Muenzenmeyer Co-authored-by: Brian Muenzenmeyer --- .../an-introduction-to-the-npm-package-manager.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 44056b3357070..103d50ca710dc 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 @@ -18,7 +18,7 @@ It started as a way to download and manage dependencies of Node.js packages, but ## Packages -`npm` manages downloads of dependencies of your project. +`npm` installs, updates and manages downloads of dependencies of your project. Dependencies are pre-built pieces of code, such as libraries and packages, that your Node.js application needs to work. ### Installing all dependencies From 89ff7a34f9fc367c488569f536e41ba43eaf29b2 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Mon, 28 Oct 2024 22:39:06 +0100 Subject: [PATCH 0094/1385] Meta: adding docs about how to add/modify learn page (#7116) * first draft * improve * update with feedback * Apply suggestions from code review Co-authored-by: Brian Muenzenmeyer Signed-off-by: Claudio W --------- Signed-off-by: Claudio W Co-authored-by: Claudio W Co-authored-by: Brian Muenzenmeyer --- CONTRIBUTING.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8faae1e317af5..2a820032a6715 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,6 +10,7 @@ Thank you for your interest in contributing to the Node.js Website. Before you p - [Commit Guidelines](#commit-guidelines) - [Pull Request Policy](#pull-request-policy) - [Developer's Certificate of Origin 1.1](#developers-certificate-of-origin-11) +- [Adding a Learn Page](#adding-a-learn-page) ## Contributing @@ -241,3 +242,99 @@ By contributing to this project, I certify that: [Conventional Commits]: https://www.conventionalcommits.org/ [Commit Signing]: https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits [Husky]: https://typicode.github.io/husky/ + +## Adding a Learn Page + +Since the redesign of the website, we have a new section called 'Learn'. This is intended to provide a more explanatory set of resources than the API docs, which are designed purely to explain the available APIs. + +The Learn section is separate from the API docs and is intended to provide a more narrative, tutorial style set of resources. This is a place where we can provide more context and guidance on how to use the APIs and how to build applications with them. + +The Learn section is also divided into several sub-categories. Note that the sub-categories must be on the same topic. + +### Structure of the Learn section + +The file structure of the Learn section is as follows: + +``` +site/ +├─ pages/ +│ ├─ en/ +│ │ ├─ learn/ +│ │ │ ├─ sub-categories/ +│ │ │ │ ├─ article.md +``` + +The frontmatter of the `article.md` file should look like this: + +```yaml +title: A super cool title +layout: learn +authors: github_username, another_github_username +``` + +A little bit of explanation about the frontmatter: + +- `title`: The title of the article. This will be displayed as the title of the page. We recommend that you use the same title as the navigation entry. How to enter navigation entries is explained later in this document. +- `layout`: This must be set to `learn` so that the new article has the same style as other Learn pages. +- `authors`: A list of the GitHub usernames of the authors of the article. This is used to display the authors' profile pictures on the page. The frontmatter must always have the `github_username` followed by `, `. The comma and space is important. + +### Modify the navigation + +The data of the navigation is stored in app/site/navigation.json. To add a new entry to the navigation, you need to add a new object to the sideNavigation.learn. + +```json +{ + "sideNavigation": { + "learn": [ + { + "label": "Sub-category", + "items": { + "article": { + "link": "/learn/sub-category/article", + "label": "components.navigation.learn.sub-category.article" + } + } + } + ] + } +} +``` + +The `label` key is used to display the title of the article in the navigation. To add a new i18n key we recommend you to read [the translation guide](./TRANSLATION.md#adding-new-translation-keys). + +### Add the article + +To add a new article, you need to create a new markdown file in the `site/pages/en/learn/your-sub-category` directory. + +1. Create your new markdown file in the `site/pages/en/learn/your-sub-category` directory. +2. Add the frontmatter to the file. +3. Write your article. +4. Add the navigation entry to `app/site/navigation.json`. +5. Add the translation key to the translation files. + +DONE! + +### Edit the article + +To edit an existing article, you need to find the markdown file in the `site/pages/en/learn/your-sub-category` directory. + +> [!NOTE] +> If you rewrite a big part of the article you can add yourself as an author in the frontmatter. **But** if you only fix a typo or a small part of the article, you don't need to add yourself as an author. + +### Accessible MDX components + +#### Codebox + +The codebox component is used to display code snippets. If two code snippets follow without any text between them, they will be displayed in the same codebox, but with two tabs. + +```md +'''cjs +const http = require('node:http'); +''' + +'''mjs +import http from 'node:http'; +''' +``` + +`cjs` and `mjs` are variants of `js`, it's just to display the correct language in the codebox (cjs = CommonJS, mjs = ES Module). From 90afad3ed29f24f8ed849d6d6cb80680c1e1d7c2 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Tue, 29 Oct 2024 15:13:04 +0000 Subject: [PATCH 0095/1385] Blog: v22.11.0 release post (#7152) Refs: https://github.com/nodejs/node/pull/55504 --- apps/site/pages/en/blog/release/v22.11.0.md | 115 ++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v22.11.0.md diff --git a/apps/site/pages/en/blog/release/v22.11.0.md b/apps/site/pages/en/blog/release/v22.11.0.md new file mode 100644 index 0000000000000..e8d0c676ef4c8 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.11.0.md @@ -0,0 +1,115 @@ +--- +date: '2024-10-29T14:28:44.535Z' +category: release +title: Node v22.11.0 (LTS) +layout: blog-post +author: Richard Lau +--- + +## 2024-10-29, Version 22.11.0 'Jod' (LTS), @richardlau + +### Notable Changes + +This release marks the transition of Node.js 22.x into Long Term Support (LTS) +with the codename 'Jod'. The 22.x release line now moves into "Active LTS" +and will remain so until October 2025. After that time, it will move into +"Maintenance" until end of life in April 2027. + +Other than updating metadata, such as the `process.release` object, to reflect +that the release is LTS, no further changes from Node.js 22.10.0 are included. + +### OpenSSL 3.x + +Official binaries for Node.js 22.x currently include OpenSSL 3.0.x (more +specifically, the [quictls OpenSSL fork](https://github.com/quictls/openssl)). +OpenSSL 3.0.x is the currently designated long term support version that is +scheduled to be supported until 7th September 2026, which is within the expected +lifetime of Node.js 22.x. We are expecting upstream OpenSSL to announce a +successor long term support version prior to that date and since OpenSSL now +follows a semantic versioning-like versioning scheme we expect to be able to +update to the next long term supported version of OpenSSL during the lifetime of +Node.js 22.x. + +Windows 32-bit Installer: https://nodejs.org/dist/v22.11.0/node-v22.11.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.11.0/node-v22.11.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.11.0/node-v22.11.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.11.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.11.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.11.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.11.0/node-v22.11.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.11.0/node-v22.11.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.11.0/node-v22.11.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.11.0/node-v22.11.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.11.0/node-v22.11.0.tar.gz \ +Other release files: https://nodejs.org/dist/v22.11.0/ \ +Documentation: https://nodejs.org/docs/v22.11.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +1bbf7e632ea55eabf920e8e27bb3e73ca4923eca78a300e5767635e9b2c0c603 node-v22.11.0-aix-ppc64.tar.gz +de6cd4db461b6dc3b3eab31a36b58e30d8af074183bcb13ceca6fd162a579ba6 node-v22.11.0-arm64.msi +2e89afe6f4e3aa6c7e21c560d8a0453d84807e97850bbb819b998531a22bdfde node-v22.11.0-darwin-arm64.tar.gz +c379a90c6aa605b74042a233ddcda4247b347ba5732007d280e44422cc8f9ecb node-v22.11.0-darwin-arm64.tar.xz +668d30b9512137b5f5baeef6c1bb4c46efff9a761ba990a034fb6b28b9da2465 node-v22.11.0-darwin-x64.tar.gz +ab28d1784625d151e3f608a9412a009118f376118ed842ae643f8c2efdfb0af6 node-v22.11.0-darwin-x64.tar.xz +0d42dc3b3377f49e495976dc0e4f5c3a7ffb1d714050d2f247afdbbc0898dae5 node-v22.11.0-headers.tar.gz +7eddf759cd3d1a0113c1a0ac7c080e5c0e458bca34a064c62dc8ce613ff5efdd node-v22.11.0-headers.tar.xz +27453f7a0dd6b9e6738f1f6ea6a09b102ec7aa484de1e39d6a1c3608ad47aa6a node-v22.11.0-linux-arm64.tar.gz +6031d04b98f59ff0f7cb98566f65b115ecd893d3b7870821171708cdbaf7ae6e node-v22.11.0-linux-arm64.tar.xz +f85ced095b17e2535859fd2a5641370c3fca12dd72147f93d2696e2909fe1e9d node-v22.11.0-linux-armv7l.tar.gz +9de0fdcfb1cccbe03f72f939e4e6f03867aef3da8223f90606cd93757704dae0 node-v22.11.0-linux-armv7l.tar.xz +0532965a717d3996302a111703c007dac2763e01795730d488dadbc2fcfac2fa node-v22.11.0-linux-ppc64le.tar.gz +d1d49d7d611b104b6d616e18ac439479d8296aa20e3741432de0e85f4735a81e node-v22.11.0-linux-ppc64le.tar.xz +64f691400ffe3a84be930e0cb03607d0b95bef122a679f7893d8e2972e90c521 node-v22.11.0-linux-s390x.tar.gz +f474ed77d6b13d66d07589aee1c2b9175be4c1b165483e608ac1674643064a99 node-v22.11.0-linux-s390x.tar.xz +4f862bab52039835efbe613b532238b6e4dde98d139a34e6923193e073438b13 node-v22.11.0-linux-x64.tar.gz +83bf07dd343002a26211cf1fcd46a9d9534219aad42ee02847816940bf610a72 node-v22.11.0-linux-x64.tar.xz +8d658eda7699d580ccc268ca8a40ced5aeecef5bb4d19c4187e92eebac5d68ec node-v22.11.0.pkg +24e5130fa7bc1eaab218a0c9cb05e03168fa381bb9e3babddc6a11f655799222 node-v22.11.0.tar.gz +bbf0297761d53aefda9d7855c57c7d2c272b83a7b5bad4fea9cb29006d8e1d35 node-v22.11.0.tar.xz +55b491f3d73fdacf8cf43a2199e824abadda2c43a94780310baa526dc1d679e2 node-v22.11.0-win-arm64.7z +b9ff5a6b6ffb68a0ffec82cc5664ed48247dabbd25ee6d129facd2f65a8ca80d node-v22.11.0-win-arm64.zip +d2a4fadb1f5e4abc634b6ac16c44cae7c73ffc3dbfe8b92b011d85f2df90f6c1 node-v22.11.0-win-x64.7z +905373a059aecaf7f48c1ce10ffbd5334457ca00f678747f19db5ea7d256c236 node-v22.11.0-win-x64.zip +ca0a274f1edc90005b1dc7ec22ec55dad1acc21320bc0be853065d69db2a5152 node-v22.11.0-win-x86.7z +700e0b1bcaca8b1a04c929ce29b0f07e099b4a34a7facab74fda71764d16f71c node-v22.11.0-win-x86.zip +9eea480bd30c98ae11a97cb89a9278235cbbbd03c171ee5e5198bd86b7965b4b node-v22.11.0-x64.msi +ab19f02c4b0d9f578928b67d2a652496aa31729a8cc9771ffc9cc6d3b8afe7e3 node-v22.11.0-x86.msi +b4e5e2821aeb518c0c55f02d4fcd9182c57f97bcce50341998333dba38e34ea4 win-arm64/node.exe +ad65afe5b192644fec9d599c77f0e38a8421d0d7ad2389679882a288c8df444b win-arm64/node.lib +0861cf0f1ff6135a21eb26279fc6a6f7dc9d9c0ac926a17553f387c32945eea5 win-arm64/node_pdb.7z +f35c2d1a967080b0a1e288b891cb9300a04d0b90042bac8c965c9ebcfc3749bf win-arm64/node_pdb.zip +7447c4ece014aa41fb2ff866c993c708e5a8213a00913cc2ac5049ea3ffc230d win-x64/node.exe +3581a06b68c4584d146372113eaa8c4d102127222e5041195ba38f185eef419c win-x64/node.lib +171d80aeedbe43bd70b3539de6f845a359d8dd97a684df2cbb4f49d8946f4991 win-x64/node_pdb.7z +7c3fa0149b17d9ff4b5af2f3e19e768b6ab684a9dd8dcf35ea204a90d3f56903 win-x64/node_pdb.zip +e54a4559dafd56562a45b50000831d28ee2f7f1ac4ff98b38165871f31f64ab8 win-x86/node.exe +45399070d1d247cf223d12e80d3e638635af24d2f7a4714bc8e38a6a918f162a win-x86/node.lib +a78040dbb0e7296eebe90c235091ee46a8a01587a226bf4e5a01f5b399e153d7 win-x86/node_pdb.7z +9fb300178536e8243ad55207ee85990731e77299c9e670cec0b54e10dc971713 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEyC+jrhy+3Gvka5NgxDzsRcF6uTwFAmcg6xMACgkQxDzsRcF6 +uTxlMA//ZNN160yPi2ADkTGgVmcoskVTzIrU/eIHdmXRxw1JdhXcu/8IE0gMlfUV +pwu/ZuqiEvT9ZUEj0W1pWF8JP3goK57wHv0fj0hpWYyNhOKstN5KUI+hxcNk96KY +qz51Y2fsK/hRCeMFwO5Z6ZzGNlObdeiETGs+jLIPdNEe+6Pp8oXkDqR8IGJRt6ug +l9fNQ/RxpRqat2CjdMOQ/NDMbX7oReJhRCgh/15BB8SoBhTCpKFQZ5ueAApFZ4Za +wwPRXZDzq3HLtxfobcdzqZttacq1iKNPC7qSDlk8dZAeuwLB5dCjZfcnHvEBB6EA ++So+dkCYqaBbxx48VZ+QKrPDlOVoTn1urUTYTti95qtZYkH2MVmFk9oMgRPXDoVP +Do278eTNqDEIQfOFKz5vq7D54jfRmu+tTH4/JpSwnrtYIYnM9bEIMXgfoEuZtO0z +zsjy7I/5ZMEMQh7BGbUN8O7IxiJ4W3dG4kS2c9ZcXnNMIOK3OT8AjxQVS3fVffkw +Xj7g2ossVMXiLzQPv82oZEFcUoKApBjAmyvwMZyOg7CorJCSN4v6bnHhcpUqge2a +iPijFuRnflEDzdK6y/ASQkiYS3Xf1HfXBDk0vJuf5TBp0Jy+FR5Y/FJGFn2JxFxp +mLz4hxcg1IN0wTODmuk9voi9qtMGHBwKwrGo/TT7UZmWNf+Zd5Q= +=orQh +-----END PGP SIGNATURE----- +``` From 63e12e745f3f18917084492f7ac2bb52b04d89d6 Mon Sep 17 00:00:00 2001 From: Alicia Makena <140601003+Makena-Wambui@users.noreply.github.com> Date: Thu, 31 Oct 2024 10:59:37 +0300 Subject: [PATCH 0096/1385] Docs: add .mjs example to WebAssembly usage section (#7147) * docs: add .mjs example to WebAssembly usage section * chore: run prettier * chore: punctuation nit --------- Co-authored-by: Michael Esteban --- .../nodejs-with-webassembly.md | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) 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 dfc40e76b843b..05a8dcadfe300 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 @@ -49,15 +49,36 @@ Once you have a WebAssembly module, you can use the Node.js `WebAssembly` object // Assume add.wasm file exists that contains a single function adding 2 provided arguments const fs = require('node:fs'); +// Use the readFileSync function to read the contents of the "add.wasm" file const wasmBuffer = fs.readFileSync('/path/to/add.wasm'); + +// Use the WebAssembly.instantiate method to instantiate the WebAssembly module WebAssembly.instantiate(wasmBuffer).then(wasmModule => { - // Exported function live under instance.exports + // Exported function lives under instance.exports object const { add } = wasmModule.instance.exports; const sum = add(5, 6); console.log(sum); // Outputs: 11 }); ``` +```mjs +// Assume add.wasm file exists that contains a single function adding 2 provided arguments +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'); + +// Use the WebAssembly.instantiate method to instantiate the WebAssembly module +const wasmModule = await WebAssembly.instantiate(wasmBuffer); + +// Exported function lives under instance.exports object +const { add } = wasmModule.instance.exports; + +const sum = add(5, 6); + +console.log(sum); // Outputs 11 +``` + ## Interacting with the OS WebAssembly modules cannot directly access OS functionality on its own. A third-party tool [Wasmtime](https://docs.wasmtime.dev/) can be used to access this functionality. `Wasmtime` utilizes the [WASI](https://wasi.dev/) API to access the OS functionality. From d97bede39158be8f7411ffdbf6f6a3f926c94341 Mon Sep 17 00:00:00 2001 From: Rakesh Kumar Singh <52422856+rakeshkumar1019@users.noreply.github.com> Date: Thu, 31 Oct 2024 17:31:48 +0530 Subject: [PATCH 0097/1385] test: release data coverage (7130) (#7150) --- .../next-data/generators/__tests__/releaseData.test.mjs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/site/next-data/generators/__tests__/releaseData.test.mjs b/apps/site/next-data/generators/__tests__/releaseData.test.mjs index 0082f03560d5a..5c92881e5c7a1 100644 --- a/apps/site/next-data/generators/__tests__/releaseData.test.mjs +++ b/apps/site/next-data/generators/__tests__/releaseData.test.mjs @@ -10,6 +10,15 @@ import generateReleaseData from '@/next-data/generators/releaseData.mjs'; jest.mock('@nodevu/core'); describe('generateReleaseData', () => { + beforeAll(() => { + jest.useFakeTimers(); + jest.setSystemTime(new Date('2024-10-18')); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + test('generates release data with correct status', async () => { const mockNodevuOutput = { 14: { From f64f547a4e20092d6d52104f21a307c1c910e829 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 31 Oct 2024 19:14:30 -0400 Subject: [PATCH 0098/1385] style: make sidebars sticky (#7132) * style: make sidebars sticky * style: only make metabar sticky, not sidebar --- apps/site/components/Containers/MetaBar/index.module.css | 4 ++++ apps/site/layouts/layouts.module.css | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/site/components/Containers/MetaBar/index.module.css b/apps/site/components/Containers/MetaBar/index.module.css index e8b649d5f554c..8d867a2b2e0d1 100644 --- a/apps/site/components/Containers/MetaBar/index.module.css +++ b/apps/site/components/Containers/MetaBar/index.module.css @@ -9,6 +9,10 @@ px-4 py-6 [overflow-wrap:anywhere] + lg:sticky + lg:top-0 + lg:h-max + lg:min-h-screen lg:px-6 dark:border-neutral-900; diff --git a/apps/site/layouts/layouts.module.css b/apps/site/layouts/layouts.module.css index 2f07379ef9723..9300fc91cfe8d 100644 --- a/apps/site/layouts/layouts.module.css +++ b/apps/site/layouts/layouts.module.css @@ -18,7 +18,7 @@ sm:grid sm:grid-cols-[theme(spacing.52)_1fr] sm:grid-rows-[1fr] - sm:overflow-hidden + sm:overflow-visible md:grid-cols-[theme(spacing.64)_1fr] lg:grid-cols-[theme(spacing.52)_1fr_theme(spacing.52)] xl:grid-cols-[theme(spacing.80)_1fr_theme(spacing.80)]; From 1756a08194b8523dbccc784d4fe3acc053842cf8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 14:07:48 -0500 Subject: [PATCH 0099/1385] meta: bump actions/cache from 4.1.0 to 4.1.2 (#7162) Bumps [actions/cache](https://github.com/actions/cache) from 4.1.0 to 4.1.2. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2...6849a6489940f00c2f30c0fb92c6274307ccb58a) --- updated-dependencies: - dependency-name: actions/cache 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> --- .github/workflows/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-pr.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bbe81722e9a24..2cd2100345868 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: # regardless of having code changes or not fetch-depth: 1 - - uses: actions/cache@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 + - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: # See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node path: | diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 99d34f77b7209..48e540486d599 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -76,7 +76,7 @@ jobs: ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }} - name: Restore Lint Cache - uses: actions/cache/restore@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 + uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: | .turbo/cache @@ -129,7 +129,7 @@ jobs: (github.event_name == 'pull_request_target' && startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') - uses: actions/cache/save@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 + uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: | .turbo/cache diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index fd286fb7a9066..edc88b5ac927c 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -81,7 +81,7 @@ jobs: ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }} - name: Restore Lint Cache - uses: actions/cache/restore@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 + uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: | apps/site/.eslintmdcache @@ -125,7 +125,7 @@ jobs: commit_message: 'chore: automated format of translated files' - name: Save Lint Cache - uses: actions/cache/save@2cdf405574d6ef1f33a1d12acccd3ae82f47b3f2 # v4.1.0 + uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: | apps/site/.eslintmdcache From 33c6599cc9379b485e9ae197de4a3e417de85157 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 17:36:36 -0500 Subject: [PATCH 0100/1385] meta: bump actions/checkout from 4.2.1 to 4.2.2 (#7163) Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.1 to 4.2.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871...11bd71901bbe5b1630ceea73d27597364c9af683) --- updated-dependencies: - dependency-name: actions/checkout 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> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr.yml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2cd2100345868..f462231cbe47d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,7 +65,7 @@ jobs: run: echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%" - name: Git Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + 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 }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index bdf17331276f3..3ffa4277a06b7 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -46,7 +46,7 @@ jobs: egress-policy: audit - name: Checkout repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 99ea3ba5e90a9..529547ca8b973 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -31,7 +31,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Review Dependencies uses: actions/dependency-review-action@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4 diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index d2f8deb504c7e..c07054f976a72 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -43,7 +43,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + 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 }} diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 48e540486d599..1660f07c15568 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -70,7 +70,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + 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 }} @@ -164,7 +164,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + 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 }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a76bb51a149b7..fe5fe99442f23 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index edc88b5ac927c..e3c9c1844d258 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -75,7 +75,7 @@ jobs: egress-policy: audit - name: Git Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + 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 }} From fcff96f66764abf374739ef725141ace45058be3 Mon Sep 17 00:00:00 2001 From: Caner Akdas Date: Sat, 2 Nov 2024 01:45:32 +0300 Subject: [PATCH 0101/1385] refactor: Moving the version support button to the footer (#7156) refactor: moving the version support button to the footer --- .../ActiveLink/__tests__/index.test.mjs | 41 ------------------- .../components/Common/ActiveLink/index.tsx | 5 +-- apps/site/navigation.json | 8 ++-- apps/site/next.constants.mjs | 5 --- packages/i18n/locales/en.json | 2 +- 5 files changed, 6 insertions(+), 55 deletions(-) diff --git a/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs b/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs index 31d25c633fe36..8ba0755b294c6 100644 --- a/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs +++ b/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs @@ -1,7 +1,5 @@ import { render, screen } from '@testing-library/react'; -import { VERSION_SUPPORT_SHORTCUT } from '@/next.constants.mjs'; - import ActiveLink from '..'; // mock usePathname, but retain all the other imports @@ -64,43 +62,4 @@ describe('ActiveLink', () => { expect(screen.findByText('Link')).resolves.toHaveAttribute('class', 'link'); }); - - it('sets active class when href is other than VERSION_SUPPORT_SHORTCUT', () => { - const { usePathname } = require('@/navigation.mjs'); - usePathname.mockReturnValue('/link/sublink'); - - render( - - Link - - ); - - expect(screen.findByText('Link')).resolves.toHaveAttribute( - 'class', - 'link active' - ); - }); - - it('does not set active class when href is VERSION_SUPPORT_SHORTCUT', () => { - const { usePathname } = require('@/navigation.mjs'); - usePathname.mockReturnValue(VERSION_SUPPORT_SHORTCUT); - - render( - - Link - - ); - - expect(screen.findByText('Link')).resolves.toHaveAttribute('class', 'link'); - }); }); diff --git a/apps/site/components/Common/ActiveLink/index.tsx b/apps/site/components/Common/ActiveLink/index.tsx index b1aaf220de125..bdf566d87dc71 100644 --- a/apps/site/components/Common/ActiveLink/index.tsx +++ b/apps/site/components/Common/ActiveLink/index.tsx @@ -5,7 +5,6 @@ import type { ComponentProps, FC } from 'react'; import Link from '@/components/Link'; import { usePathname } from '@/navigation.mjs'; -import { VERSION_SUPPORT_SHORTCUT } from '@/next.constants.mjs'; type ActiveLocalizedLinkProps = ComponentProps & { activeClassName?: string; @@ -27,9 +26,7 @@ const ActiveLink: FC = ({ ? // When using allowSubPath we want only to check if // the current pathname starts with the utmost upper level // of an href (e.g. /docs/...) - pathname.startsWith(`/${href.toString().split('/')[1]}`) && - // but not when this link is for the deep link shortcut to previous releases - href.toString() !== VERSION_SUPPORT_SHORTCUT + pathname.startsWith(`/${href.toString().split('/')[1]}`) : href.toString() === pathname, }); diff --git a/apps/site/navigation.json b/apps/site/navigation.json index c365d851c7852..6168c078438d5 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -20,10 +20,6 @@ "link": "https://nodejs.org/docs/latest/api/", "label": "components.containers.navBar.links.docs" }, - "support": { - "link": "/about/previous-releases", - "label": "components.containers.navBar.links.support" - }, "certification": { "link": "https://training.linuxfoundation.org/openjs/", "label": "components.containers.navBar.links.certification", @@ -39,6 +35,10 @@ "link": "https://privacy-policy.openjsf.org/", "text": "components.containers.footer.links.privacyPolicy" }, + { + "link": "/about/previous-releases", + "text": "components.containers.footer.links.versionSupport" + }, { "link": "https://github.com/openjs-foundation/cross-project-council/blob/main/CODE_OF_CONDUCT.md", "text": "components.containers.footer.links.codeOfConduct" diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index e3a9120ae45c7..33607db710f30 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -178,8 +178,3 @@ export const GITHUB_API_KEY = process.env.NEXT_GITHUB_API_KEY || ''; */ export const ESP_SUPPORT_THRESHOLD_VERSION = process.env.ESP_SUPPORT_THRESHOLD_VERSION || '18.0.0'; - -/** - * This deep link into the app is repeated in the top nav, but we want to ignore it for active-link highlighting, since it will be covered by About - */ -export const VERSION_SUPPORT_SHORTCUT = '/about/previous-releases'; diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 90507781bbab6..025560058e919 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -5,6 +5,7 @@ "links": { "trademarkPolicy": "Trademark Policy", "privacyPolicy": "Privacy Policy", + "versionSupport": "Version Support", "codeOfConduct": "Code of Conduct", "security": "Security Policy" } @@ -14,7 +15,6 @@ "about": "About", "download": "Download", "docs": "Docs", - "support": "Version Support", "guides": "Guides", "learn": "Learn", "security": "Security", From 5b51d174f28538e090a420127a345f35a4dd5973 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 18:00:10 -0500 Subject: [PATCH 0102/1385] meta: bump thollander/actions-comment-pull-request from 2.5.0 to 3.0.0 (#7164) * meta: bump thollander/actions-comment-pull-request from 2.5.0 to 3.0.0 Bumps [thollander/actions-comment-pull-request](https://github.com/thollander/actions-comment-pull-request) from 2.5.0 to 3.0.0. - [Release notes](https://github.com/thollander/actions-comment-pull-request/releases) - [Commits](https://github.com/thollander/actions-comment-pull-request/compare/fabd468d3a1a0b97feee5f6b9e499eab0dd903f6...e2c37e53a7d2227b61585343765f73a9ca57eda9) --- updated-dependencies: - dependency-name: thollander/actions-comment-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * mitigate breaking change Signed-off-by: Brian Muenzenmeyer * mitigate breaking change Signed-off-by: Brian Muenzenmeyer --------- Signed-off-by: dependabot[bot] Signed-off-by: Brian Muenzenmeyer Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer --- .github/workflows/lighthouse.yml | 8 ++++---- .github/workflows/translations-pr.yml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index c07054f976a72..dfacbe3a5e268 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -50,12 +50,12 @@ jobs: - name: Add Comment to PR # Signal that a lighthouse run is about to start - uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 # v2.5.0 + uses: thollander/actions-comment-pull-request@e2c37e53a7d2227b61585343765f73a9ca57eda9 # v3.0.0 with: message: | Running Lighthouse audit... # Used later to edit the existing comment - comment_tag: 'lighthouse_audit' + comment-tag: 'lighthouse_audit' - name: Capture Vercel Preview uses: patrickedqvist/wait-for-vercel-preview@06c79330064b0e6ef7a2574603b62d3c98789125 # v1.3.2 @@ -103,9 +103,9 @@ jobs: - name: Add Comment to PR # Replace the previous message with our formatted lighthouse results - uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 # v2.5.0 + uses: thollander/actions-comment-pull-request@e2c37e53a7d2227b61585343765f73a9ca57eda9 # v3.0.0 with: # Reference the previously created comment - comment_tag: 'lighthouse_audit' + comment-tag: 'lighthouse_audit' message: | ${{ steps.format_lighthouse_score.outputs.comment }} diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index e3c9c1844d258..d1655964abfe4 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -43,7 +43,7 @@ jobs: with: egress-policy: audit - - uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 # v2.5.0 + - uses: thollander/actions-comment-pull-request@e2c37e53a7d2227b61585343765f73a9ca57eda9 # v3.0.0 with: message: | > [!NOTE]\ @@ -53,7 +53,7 @@ jobs: > 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 + comment-tag: use_crowdin format_crowdin_pull_request: # We should only run the automated Format Command on Crowdin-based Pull Requests From 6fccb38d8679fe42d627dd97892c4dcd5a3ebdcc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 18:06:16 -0500 Subject: [PATCH 0103/1385] meta: bump actions/upload-artifact from 4.4.1 to 4.4.3 (#7161) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.1 to 4.4.3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/604373da6381bf24206979c74d06a550515601b9...b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882) --- updated-dependencies: - dependency-name: actions/upload-artifact 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> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index fe5fe99442f23..2508e4d6787e9 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -51,7 +51,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: Upload Artifacts - uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4.4.1 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: SARIF file path: results.sarif From c3efd768527c03d9ca0bdbec570c9030f8965407 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 23:16:02 +0000 Subject: [PATCH 0104/1385] meta: bump actions/dependency-review-action from 4.3.4 to 4.4.0 (#7160) Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.3.4 to 4.4.0. - [Release notes](https://github.com/actions/dependency-review-action/releases) - [Commits](https://github.com/actions/dependency-review-action/compare/5a2ce3f5b92ee19cbb1541a4984c76d921601d7c...4081bf99e2866ebe428fc0477b69eb4fcda7220a) --- 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 529547ca8b973..7cb0e7a46608c 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@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4 + uses: actions/dependency-review-action@4081bf99e2866ebe428fc0477b69eb4fcda7220a # v4.4.0 From e430fa1a5b91b4ab4f537803546571403d05c543 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 08:55:04 +1000 Subject: [PATCH 0105/1385] meta: bump the testing group with 2 updates (#7168) Bumps the testing group with 2 updates: [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). Updates `@testing-library/jest-dom` from 6.5.0 to 6.6.3 - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v6.5.0...v6.6.3) Updates `@types/jest` from 29.5.13 to 29.5.14 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest) --- updated-dependencies: - dependency-name: "@testing-library/jest-dom" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing - dependency-name: "@types/jest" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: testing ... 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 | 111 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 103 insertions(+), 12 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 2b8643d89aab7..4244ff9d992dc 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -96,10 +96,10 @@ "@storybook/addon-themes": "~8.3.5", "@storybook/addon-viewport": "~8.3.5", "@storybook/nextjs": "~8.3.5", - "@testing-library/jest-dom": "~6.5.0", + "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", - "@types/jest": "29.5.13", + "@types/jest": "29.5.14", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", diff --git a/package-lock.json b/package-lock.json index 89ff6408690f1..21ed77f12c55a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,10 +94,10 @@ "@storybook/addon-themes": "~8.3.5", "@storybook/addon-viewport": "~8.3.5", "@storybook/nextjs": "~8.3.5", - "@testing-library/jest-dom": "~6.5.0", + "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", - "@types/jest": "29.5.13", + "@types/jest": "29.5.14", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", @@ -8016,6 +8016,99 @@ "storybook": "^8.3.6" } }, + "node_modules/@storybook/test/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/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, + "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, + "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, + "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 + }, + "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", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true + }, + "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, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/theming": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.6.tgz", @@ -8152,11 +8245,10 @@ } }, "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==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", + "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", "dev": true, - "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", @@ -8559,11 +8651,10 @@ } }, "node_modules/@types/jest": { - "version": "29.5.13", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz", - "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, - "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" From e5936be46ec0bfbf838e498db1303de61d1d21b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 22:56:03 +0000 Subject: [PATCH 0106/1385] meta: bump shiki from 1.17.7 to 1.22.2 (#7175) Bumps [shiki](https://github.com/shikijs/shiki/tree/HEAD/packages/shiki) from 1.17.7 to 1.22.2. - [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.22.2/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 | 84 +++++++++++++++++++----------------------- 2 files changed, 38 insertions(+), 48 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 4244ff9d992dc..b5fddd707282f 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -82,7 +82,7 @@ "remark-gfm": "~4.0.0", "remark-reading-time": "~2.0.1", "semver": "~7.6.3", - "shiki": "~1.17.5", + "shiki": "~1.22.2", "tailwindcss": "^3.4.13", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", diff --git a/package-lock.json b/package-lock.json index 21ed77f12c55a..3d875d3859b77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,7 +80,7 @@ "remark-gfm": "~4.0.0", "remark-reading-time": "~2.0.1", "semver": "~7.6.3", - "shiki": "~1.17.5", + "shiki": "~1.22.2", "tailwindcss": "^3.4.13", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", @@ -7418,55 +7418,50 @@ } }, "node_modules/@shikijs/core": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.7.tgz", - "integrity": "sha512-ZnIDxFu/yvje3Q8owSHaEHd+bu/jdWhHAaJ17ggjXofHx5rc4bhpCSW+OjC6smUBi5s5dd023jWtZ1gzMu/yrw==", - "license": "MIT", - "dependencies": { - "@shikijs/engine-javascript": "1.17.7", - "@shikijs/engine-oniguruma": "1.17.7", - "@shikijs/types": "1.17.7", - "@shikijs/vscode-textmate": "^9.2.2", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.22.2.tgz", + "integrity": "sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==", + "dependencies": { + "@shikijs/engine-javascript": "1.22.2", + "@shikijs/engine-oniguruma": "1.22.2", + "@shikijs/types": "1.22.2", + "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.2" + "hast-util-to-html": "^9.0.3" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.7.tgz", - "integrity": "sha512-wwSf7lKPsm+hiYQdX+1WfOXujtnUG6fnN4rCmExxa4vo+OTmvZ9B1eKauilvol/LHUPrQgW12G3gzem7pY5ckw==", - "license": "MIT", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.2.tgz", + "integrity": "sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==", "dependencies": { - "@shikijs/types": "1.17.7", - "@shikijs/vscode-textmate": "^9.2.2", + "@shikijs/types": "1.22.2", + "@shikijs/vscode-textmate": "^9.3.0", "oniguruma-to-js": "0.4.3" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.7.tgz", - "integrity": "sha512-pvSYGnVeEIconU28NEzBXqSQC/GILbuNbAHwMoSfdTBrobKAsV1vq2K4cAgiaW1TJceLV9QMGGh18hi7cCzbVQ==", - "license": "MIT", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.2.tgz", + "integrity": "sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==", "dependencies": { - "@shikijs/types": "1.17.7", - "@shikijs/vscode-textmate": "^9.2.2" + "@shikijs/types": "1.22.2", + "@shikijs/vscode-textmate": "^9.3.0" } }, "node_modules/@shikijs/types": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.7.tgz", - "integrity": "sha512-+qA4UyhWLH2q4EFd+0z4K7GpERDU+c+CN2XYD3sC+zjvAr5iuwD1nToXZMt1YODshjkEGEDV86G7j66bKjqDdg==", - "license": "MIT", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.22.2.tgz", + "integrity": "sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==", "dependencies": { - "@shikijs/vscode-textmate": "^9.2.2", + "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", - "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==", - "license": "MIT" + "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -15992,7 +15987,6 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -16204,7 +16198,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -22825,7 +22818,6 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", - "license": "MIT", "dependencies": { "regex": "^4.3.2" }, @@ -24770,10 +24762,9 @@ } }, "node_modules/regex": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz", - "integrity": "sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==", - "license": "MIT" + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-4.4.0.tgz", + "integrity": "sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==" }, "node_modules/regex-parser": { "version": "2.3.0", @@ -26750,16 +26741,15 @@ } }, "node_modules/shiki": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.7.tgz", - "integrity": "sha512-Zf6hNtWhFyF4XP5OOsXkBTEx9JFPiN0TQx4wSe+Vqeuczewgk2vT4IZhF4gka55uelm052BD5BaHavNqUNZd+A==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "1.17.7", - "@shikijs/engine-javascript": "1.17.7", - "@shikijs/engine-oniguruma": "1.17.7", - "@shikijs/types": "1.17.7", - "@shikijs/vscode-textmate": "^9.2.2", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.2.tgz", + "integrity": "sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==", + "dependencies": { + "@shikijs/core": "1.22.2", + "@shikijs/engine-javascript": "1.22.2", + "@shikijs/engine-oniguruma": "1.22.2", + "@shikijs/types": "1.22.2", + "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } }, From e2e6c332cee5ac63b1ea4980766b3f568ce34b38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 08:57:42 +1000 Subject: [PATCH 0107/1385] meta: bump @types/node from 20.16.5 to 20.17.5 (#7174) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.16.5 to 20.17.5. - [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: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 | 73 ++++++++++++++++++++++++++++-------------- 2 files changed, 50 insertions(+), 25 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index b5fddd707282f..b816a93afc7d6 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -55,7 +55,7 @@ "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@sentry/nextjs": "^8.33.1", "@tailwindcss/container-queries": "~0.1.1", - "@types/node": "20.16.5", + "@types/node": "20.17.5", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.3.1", "@vercel/speed-insights": "~1.0.12", diff --git a/package-lock.json b/package-lock.json index 3d875d3859b77..801b250f25619 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@sentry/nextjs": "^8.33.1", "@tailwindcss/container-queries": "~0.1.1", - "@types/node": "20.16.5", + "@types/node": "20.17.5", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.3.1", "@vercel/speed-insights": "~1.0.12", @@ -126,15 +126,6 @@ "node": "v20" } }, - "apps/site/node_modules/@types/node": { - "version": "20.16.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", - "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, "apps/site/node_modules/brace-expansion": { "version": "2.0.1", "license": "MIT", @@ -7613,6 +7604,15 @@ } } }, + "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { + "version": "22.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", + "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -7686,6 +7686,15 @@ "storybook": "^8.3.6" } }, + "node_modules/@storybook/core-webpack/node_modules/@types/node": { + "version": "22.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", + "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, "node_modules/@storybook/csf": { "version": "0.1.11", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", @@ -7809,6 +7818,15 @@ } } }, + "node_modules/@storybook/nextjs/node_modules/@types/node": { + "version": "22.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", + "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, "node_modules/@storybook/nextjs/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -7863,6 +7881,15 @@ } } }, + "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { + "version": "22.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", + "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -7986,6 +8013,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@storybook/react/node_modules/@types/node": { + "version": "22.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", + "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, "node_modules/@storybook/test": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.6.tgz", @@ -8753,10 +8789,9 @@ } }, "node_modules/@types/node": { - "version": "22.7.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", - "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", - "license": "MIT", + "version": "20.17.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.5.tgz", + "integrity": "sha512-n8FYY/pRxu496441gIcAQFZPKXbhsd6VZygcq+PTSZ75eMh/Ke0hCAROdUa21qiFqKNsPPYic46yXDO1JGiPBQ==", "dependencies": { "undici-types": "~6.19.2" } @@ -29299,16 +29334,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified-engine/node_modules/@types/node": { - "version": "20.16.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.13.tgz", - "integrity": "sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, "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", From cd077a15b148f684eb06ae590ca55f2b3cc9efa7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 08:58:14 +1000 Subject: [PATCH 0108/1385] meta: bump typescript from 5.5.4 to 5.6.3 (#7172) Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.5.4 to 5.6.3. - [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.5.4...v5.6.3) --- 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 | 34 ++-------------------------------- packages/i18n/package.json | 2 +- 3 files changed, 4 insertions(+), 34 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index b816a93afc7d6..4a9903073737f 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -120,7 +120,7 @@ "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", - "typescript": "~5.5.4", + "typescript": "~5.6.3", "typescript-eslint": "~8.8.1", "user-agent-data-types": "0.4.2" } diff --git a/package-lock.json b/package-lock.json index 801b250f25619..d3de2830a97d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -118,7 +118,7 @@ "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", - "typescript": "~5.5.4", + "typescript": "~5.6.3", "typescript-eslint": "~8.8.1", "user-agent-data-types": "0.4.2" }, @@ -219,20 +219,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "apps/site/node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/@adobe/css-tools": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", @@ -28926,8 +28912,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "devOptional": true, - "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -30828,26 +30812,12 @@ "name": "@node-core/website-i18n", "devDependencies": { "eslint-import-resolver-typescript": "~3.6.3", - "typescript": "~5.5.4", + "typescript": "~5.6.3", "typescript-eslint": "~8.8.1" }, "engines": { "node": ">=20" } - }, - "packages/i18n/node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } } } } diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 88b0030bae723..32b232d9500ec 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "eslint-import-resolver-typescript": "~3.6.3", - "typescript": "~5.5.4", + "typescript": "~5.6.3", "typescript-eslint": "~8.8.1" } } From 914b960f577c165821bc310da348686422f767a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 23:02:20 +0000 Subject: [PATCH 0109/1385] meta: bump actions/setup-node from 4.0.4 to 4.1.0 (#7165) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.0.4 to 4.1.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/0a44ba7841725637a19e28fa30b79a866c81b0a6...39370e3970a6d050c480ffad4ff0ed4d3fdee5af) --- updated-dependencies: - dependency-name: actions/setup-node 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/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-pr.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f462231cbe47d..8738b23c96949 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,7 +89,7 @@ jobs: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- - name: Set up Node.js - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + 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' diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 1660f07c15568..4d5aec6f53ffa 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -95,7 +95,7 @@ jobs: cache-lint- - name: Set up Node.js - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + 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' @@ -173,7 +173,7 @@ jobs: fetch-depth: 0 - name: Set up Node.js - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + 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' diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index d1655964abfe4..1697b65bd74e7 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -97,7 +97,7 @@ jobs: cache-lint- - name: Set up Node.js - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + 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' From 845a142f2f84328d4b73f13c9a319a20966b20e6 Mon Sep 17 00:00:00 2001 From: Alicia Makena <140601003+Makena-Wambui@users.noreply.github.com> Date: Mon, 4 Nov 2024 02:08:03 +0300 Subject: [PATCH 0110/1385] content(learn): Profiling a Node.js application (#7158) * Added a more descriptive explanation as to what npm does, and what dependencies are. * Added a more descriptive explanation as to what npm does, and what dependencies are, including punctuation. * Update apps/site/pages/en/learn/getting-started/an-introduction-to-the-npm-package-manager.md Signed-off-by: Brian Muenzenmeyer * Docs: Added an exaplanation as to what Profiling a Node.js application is. --------- Signed-off-by: Brian Muenzenmeyer Co-authored-by: Brian Muenzenmeyer --- apps/site/pages/en/learn/getting-started/profiling.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/site/pages/en/learn/getting-started/profiling.md b/apps/site/pages/en/learn/getting-started/profiling.md index 00d977ef87740..3ac8a481ea5ce 100644 --- a/apps/site/pages/en/learn/getting-started/profiling.md +++ b/apps/site/pages/en/learn/getting-started/profiling.md @@ -5,6 +5,12 @@ layout: learn # Profiling Node.js Applications +Profiling a Node.js application involves measuring its performance by analyzing +the CPU, memory, and other runtime metrics while the application is running. +This helps in identifying bottlenecks, high CPU usage, memory leaks, or slow +function calls that may impact the application's efficiency, responsiveness +and scalability. + There are many third party tools available for profiling Node.js applications but, in many cases, the easiest option is to use the Node.js built-in profiler. The built-in profiler uses the [profiler inside V8][] which samples the stack at From 8cf21b0bb642254ebfe3225d1dcf34a3d896e19a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 23:11:45 +0000 Subject: [PATCH 0111/1385] meta: bump @types/react from 18.3.11 to 18.3.12 in the react group (#7170) Bumps the react group with 1 update: [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). Updates `@types/react` from 18.3.11 to 18.3.12 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: react ... 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 4a9903073737f..e90ae58cd8ce4 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -100,7 +100,7 @@ "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.14", - "@types/react": "^18.3.11", + "@types/react": "^18.3.12", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint-config-next": "15.0.0-rc.1", diff --git a/package-lock.json b/package-lock.json index d3de2830a97d9..84f8282f8f42d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -98,7 +98,7 @@ "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.14", - "@types/react": "^18.3.11", + "@types/react": "^18.3.12", "@types/react-dom": "^18.3.0", "@types/semver": "~7.5.8", "eslint-config-next": "15.0.0-rc.1", @@ -8841,11 +8841,10 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", - "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", + "version": "18.3.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", "devOptional": true, - "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" From ac593bdfd2d05b279c2b8b49cff53cbd574594c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 06:17:07 -0600 Subject: [PATCH 0112/1385] meta: bump @eslint/js from 9.10.0 to 9.14.0 (#7173) Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.10.0 to 9.14.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/HEAD/packages/js) --- updated-dependencies: - dependency-name: "@eslint/js" 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 | 18 +++++++++++++----- package.json | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 84f8282f8f42d..27a448dc780f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "turbo": "2.1.3" }, "devDependencies": { - "@eslint/js": "~9.10.0", + "@eslint/js": "~9.14.0", "@types/eslint__js": "~8.42.3", "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", @@ -2983,11 +2983,10 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", - "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", + "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -14239,6 +14238,15 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", diff --git a/package.json b/package.json index 9288768964e9d..8b4c4e3b320a3 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "turbo": "2.1.3" }, "devDependencies": { - "@eslint/js": "~9.10.0", + "@eslint/js": "~9.14.0", "@types/eslint__js": "~8.42.3", "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", From 30619f609d9a2f12bdfa1f610c07233d177b5eff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 06:24:31 -0600 Subject: [PATCH 0113/1385] meta: bump github/codeql-action from 3.26.12 to 3.27.0 (#7159) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.12 to 3.27.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/c36620d31ac7c881962c3d9dd939c40ec9434f2b...662472033e021d55d94146f66f6058822b0b39fd) --- updated-dependencies: - dependency-name: github/codeql-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/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3ffa4277a06b7..3e8b62d99b80a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2508e4d6787e9..88bcb7d67c41d 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 with: sarif_file: results.sarif From cb43b6473ea31bbf841bafc799fb6bcd51a60cba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 16:46:15 +0000 Subject: [PATCH 0114/1385] meta: bump the storybook group with 6 updates (#7167) Bumps the storybook group with 6 updates: | Package | From | To | | --- | --- | --- | | [@storybook/addon-controls](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/controls) | `8.3.6` | `8.4.1` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.3.6` | `8.4.1` | | [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `8.3.6` | `8.4.1` | | [@storybook/addon-viewport](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/viewport) | `8.3.6` | `8.4.1` | | [@storybook/nextjs](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/nextjs) | `8.3.6` | `8.4.1` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.3.6` | `8.4.1` | Updates `@storybook/addon-controls` from 8.3.6 to 8.4.1 - [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.1/code/addons/controls) Updates `@storybook/addon-interactions` from 8.3.6 to 8.4.1 - [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.1/code/addons/interactions) Updates `@storybook/addon-themes` from 8.3.6 to 8.4.1 - [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.1/code/addons/themes) Updates `@storybook/addon-viewport` from 8.3.6 to 8.4.1 - [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.1/code/addons/viewport) Updates `@storybook/nextjs` from 8.3.6 to 8.4.1 - [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.1/code/frameworks/nextjs) Updates `storybook` from 8.3.6 to 8.4.1 - [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.1/code/lib/cli) --- updated-dependencies: - dependency-name: "@storybook/addon-controls" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: "@storybook/addon-interactions" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: "@storybook/addon-themes" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: "@storybook/addon-viewport" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: "@storybook/nextjs" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: storybook dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 12 +- package-lock.json | 1205 ++++++---------------------------------- 2 files changed, 168 insertions(+), 1049 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index e90ae58cd8ce4..94d0a2a4fa8c3 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -91,11 +91,11 @@ "devDependencies": { "@eslint/compat": "~1.2.0", "@next/eslint-plugin-next": "~14.2.14", - "@storybook/addon-controls": "~8.3.5", - "@storybook/addon-interactions": "~8.3.5", - "@storybook/addon-themes": "~8.3.5", - "@storybook/addon-viewport": "~8.3.5", - "@storybook/nextjs": "~8.3.5", + "@storybook/addon-controls": "~8.4.1", + "@storybook/addon-interactions": "~8.4.1", + "@storybook/addon-themes": "~8.4.1", + "@storybook/addon-viewport": "~8.4.1", + "@storybook/nextjs": "~8.4.1", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", @@ -115,7 +115,7 @@ "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "storybook": "~8.3.0", + "storybook": "~8.4.1", "stylelint": "16.9.0", "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", diff --git a/package-lock.json b/package-lock.json index 27a448dc780f4..164730ed3287a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,11 +89,11 @@ "devDependencies": { "@eslint/compat": "~1.2.0", "@next/eslint-plugin-next": "~14.2.14", - "@storybook/addon-controls": "~8.3.5", - "@storybook/addon-interactions": "~8.3.5", - "@storybook/addon-themes": "~8.3.5", - "@storybook/addon-viewport": "~8.3.5", - "@storybook/nextjs": "~8.3.5", + "@storybook/addon-controls": "~8.4.1", + "@storybook/addon-interactions": "~8.4.1", + "@storybook/addon-themes": "~8.4.1", + "@storybook/addon-viewport": "~8.4.1", + "@storybook/nextjs": "~8.4.1", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", @@ -113,7 +113,7 @@ "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "storybook": "~8.3.0", + "storybook": "~8.4.1", "stylelint": "16.9.0", "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", @@ -2204,13 +2204,6 @@ "node": ">=6.9.0" } }, - "node_modules/@base2/pretty-print-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", - "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -2449,7 +2442,6 @@ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "aix" @@ -2466,7 +2458,6 @@ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -2483,7 +2474,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -2500,7 +2490,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -2517,7 +2506,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2534,7 +2522,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2551,7 +2538,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2568,7 +2554,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2585,7 +2570,6 @@ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2602,7 +2586,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2619,7 +2602,6 @@ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2636,7 +2618,6 @@ "loong64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2653,7 +2634,6 @@ "mips64el" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2670,7 +2650,6 @@ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2687,7 +2666,6 @@ "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2704,7 +2682,6 @@ "s390x" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2721,7 +2698,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -2738,7 +2714,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "netbsd" @@ -2755,7 +2730,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2772,7 +2746,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2789,7 +2762,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "sunos" @@ -2806,7 +2778,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -2823,7 +2794,6 @@ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -2840,7 +2810,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -7467,15 +7436,13 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.6.tgz", - "integrity": "sha512-9IMLHgtWPuFoRCt3hDsIk1FbkK5SlCMDW1DDwtTBIeWYYZLvptS42+vGVTeQ8v5SejmVzZkzuUdzu3p4sb3IcA==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.1.tgz", + "integrity": "sha512-3ahbYdDx7iFUd4X1KelMSuPqVnladc0bH4m6DQZyN+wkRxdRlOD6iOGuOe2qi1Gv0b2VuVAt253i75tK/TPNLw==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "dequal": "^2.0.2", - "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, "funding": { @@ -7483,19 +7450,18 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.4.1" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.6.tgz", - "integrity": "sha512-Y0YUJj0oE1+6DFkaTPXM/8+dwTSoy0ltj2Sn2KOTJYzxKQYXBp8TlUv0QOQiGH7o/GKXIWek/VlTuvG/JEeiWw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.1.tgz", + "integrity": "sha512-rMxKehtQogV6Scjb/oqMFM0Mwn8NJRuGFDRJE3TBijNSJ2HPJms+xXp8KVZJengadlsF5HFwQBbnZzIeFDQRLw==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.3.6", - "@storybook/test": "8.3.6", + "@storybook/instrumenter": "8.4.1", + "@storybook/test": "8.4.1", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -7504,15 +7470,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.4.1" } }, "node_modules/@storybook/addon-themes": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.3.6.tgz", - "integrity": "sha512-NX6zVWs0JVUg0xICL2v1zlb6eTAQYlE/vd6ATA4bNUNL5sabWGEd1w2ArQaHC9nTnfV60JuRQ8o3SvD7Gg0xMg==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.1.tgz", + "integrity": "sha512-yfJ0NbXdLGGM0dUSJNPtSvHznTFSfsyAEJwpslJfqJ9q03Z/mMct8SfXesg7VFLNP0Uxgv+KG4+E0+Dcjv/V1g==", "dev": true, - "license": "MIT", "dependencies": { "ts-dedent": "^2.0.0" }, @@ -7521,15 +7486,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.4.1" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.6.tgz", - "integrity": "sha512-bL51v837W1cng/+0pypkoLsWKWmvux96zLOzqLCpcWAQ4OSMhW3foIWpCiFwMG/KY+GanoOocTx6i7j5hLtuTA==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.1.tgz", + "integrity": "sha512-O6DcuUfXQTytjl7mj4ld4ZX9x2pUUWKUx1TxiuMuH0EKb612RyYcdpXpDQQwsIzLV/f2BOetk9jmO2/MymfbWQ==", "dev": true, - "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" }, @@ -7538,17 +7502,16 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.4.1" } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.6.tgz", - "integrity": "sha512-Eqn2k8aA9f0o6IMQNAxGAMfSDeTP3YYCQAtOL5Gt5lgrqLV5JMTbZOfmaRBZ82ej/BBSAopnQKIJjQBBFx6kAQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.1.tgz", + "integrity": "sha512-rqSJcxcYiQyceNFSrT9qnI6hrW4/petb1n+oN8nG5HrRsl0zxOVzamMVyNzZxrAMKvq+VMJtLe1rQi8FnJNunw==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.3.6", + "@storybook/core-webpack": "8.4.1", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -7557,9 +7520,7 @@ "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", "es-module-lexer": "^1.5.0", - "express": "^4.19.2", "fork-ts-checker-webpack-plugin": "^8.0.0", - "fs-extra": "^11.1.0", "html-webpack-plugin": "^5.5.0", "magic-string": "^0.30.5", "path-browserify": "^1.0.1", @@ -7581,7 +7542,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.4.1" }, "peerDependenciesMeta": { "typescript": { @@ -7590,75 +7551,32 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "22.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", - "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", + "version": "22.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", + "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", "dev": true, "dependencies": { "undici-types": "~6.19.8" } }, - "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/@storybook/components": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.3.6.tgz", - "integrity": "sha512-TXuoGZY7X3iixF45lXkYOFk8k2q9OHcqHyHyem1gATLLQXgyOvDgzm+VB7uKBNzssRQPEE+La70nfG8bq/viRw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.1.tgz", + "integrity": "sha512-bMPclbBhrWxhFlwqrC/h4fPLl05ouoi5D8SkQTHjeVxWN9eDnMVi76xM0YDct302Z3f0x5S3plIulp+4XRxrvg==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" - } - }, - "node_modules/@storybook/core": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.6.tgz", - "integrity": "sha512-frwfgf0EJ7QL29DWZ5bla/g0eOOWqJGd14t+VUBlpP920zB6sdDfo7+p9JoCjD9u08lGeFDqbPNKayUk+0qDag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf": "^0.1.11", - "@types/express": "^4.17.21", - "better-opn": "^3.0.2", - "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0", - "esbuild-register": "^3.5.0", - "express": "^4.19.2", - "jsdoc-type-pratt-parser": "^4.0.0", - "process": "^0.11.10", - "recast": "^0.23.5", - "semver": "^7.6.2", - "util": "^0.12.5", - "ws": "^8.2.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, "node_modules/@storybook/core-webpack": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.6.tgz", - "integrity": "sha512-ks306CFKD7FePQzRYyTjddiLsSriceblzv4rI+IjVtftkJvcEbxub2yWkV27kPP/e9kSd4Li3M34bX5mkiwkZA==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.1.tgz", + "integrity": "sha512-TptbDGaj9a8wJMF4g+C8t02CXl4BSd0BA/qGWBvzn3j4FJqeQ/m8elOXLYZrPbQKI6PjP0J4ayHkXdX2h0/tUw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "^22.0.0", "ts-dedent": "^2.0.0" @@ -7668,13 +7586,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.4.1" } }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "22.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", - "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", + "version": "22.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", + "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", "dev": true, "dependencies": { "undici-types": "~6.19.8" @@ -7698,44 +7616,40 @@ "license": "MIT" }, "node_modules/@storybook/instrumenter": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.6.tgz", - "integrity": "sha512-0RowbKwoB/s7rtymlnKNiyWN1Z3ZK5mwgzVjlRmzxDL8hrdi5KDjTNExuJTRR3ZaBP2RR0/I3m/n0p9JhHAZvg==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.1.tgz", + "integrity": "sha512-MgrhrLVW78jqno+Dh9h9Es06Ja3867TlrIUd8B3K3U1hsCFUQuFKXJBuGjNJF8U0QJY/aSIRnAgUBurHdVkPcw==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@vitest/utils": "^2.0.5", - "util": "^0.12.4" + "@vitest/utils": "^2.1.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.4.1" } }, "node_modules/@storybook/manager-api": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.6.tgz", - "integrity": "sha512-Xt5VFZcL+G/9uzaHjzWFhxRNrP+4rPhSRKEvCZorAbC9+Hv+ZDs1JSZS5wMb4WKpXBZ0rwDVOLwngqbVtfRHuQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.1.tgz", + "integrity": "sha512-7hb2k4zsp6lREGZbQ85QOlsC8EIMZXuY9Pg12VUgaZd+LmLjLuaqtrxRz3SwIgIWsRpFun9AHO0X37DmYNGTSw==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, "node_modules/@storybook/nextjs": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.3.6.tgz", - "integrity": "sha512-jNrEcS26OER645kJ3nMuSSgu8BWJhEY8MM9rDlE/133A/hojTBc2vZXwSfgZ22tAc7ckrbyw2gygEUPI2rHImA==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.4.1.tgz", + "integrity": "sha512-SOEI8qOY+yLsRsvjokSevqtA+E+cXHDBObwPUJKmRxIAEwbP1uJEFnbvpZULs1pQl1gYsZQxEndbkTmM5pwtoQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -7751,16 +7665,15 @@ "@babel/preset-typescript": "^7.24.1", "@babel/runtime": "^7.24.4", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@storybook/builder-webpack5": "8.3.6", - "@storybook/preset-react-webpack": "8.3.6", - "@storybook/react": "8.3.6", - "@storybook/test": "8.3.6", + "@storybook/builder-webpack5": "8.4.1", + "@storybook/preset-react-webpack": "8.4.1", + "@storybook/react": "8.4.1", + "@storybook/test": "8.4.1", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.1.3", "css-loader": "^6.7.3", "find-up": "^5.0.0", - "fs-extra": "^11.1.0", "image-size": "^1.0.0", "loader-utils": "^3.2.1", "node-polyfill-webpack-plugin": "^2.0.1", @@ -7791,7 +7704,7 @@ "next": "^13.5.0 || ^14.0.0", "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.3.6", + "storybook": "^8.4.1", "webpack": "^5.0.0" }, "peerDependenciesMeta": { @@ -7812,35 +7725,18 @@ "undici-types": "~6.19.8" } }, - "node_modules/@storybook/nextjs/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.6.tgz", - "integrity": "sha512-Ar0vhJITXa4xsXT3RdgYZ2mhXxE3jfUisQzsITey5a2RVgnSBIENggmRZ/6j1oVgEXFthbarNEsebGiA+2vDZg==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.1.tgz", + "integrity": "sha512-Cm+u3/avHdoneEFHnvFRMPAElWtxyyOkcVsWHkM0rVhj7bxkzOyrBrenm1GiB8NamRosumsEnhREYFo2lthU2A==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.3.6", - "@storybook/react": "8.3.6", + "@storybook/core-webpack": "8.4.1", + "@storybook/react": "8.4.1", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "find-up": "^5.0.0", - "fs-extra": "^11.1.0", "magic-string": "^0.30.5", "react-docgen": "^7.0.0", "resolve": "^1.22.8", @@ -7858,7 +7754,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.3.6" + "storybook": "^8.4.1" }, "peerDependenciesMeta": { "typescript": { @@ -7867,70 +7763,39 @@ } }, "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "22.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", - "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", + "version": "22.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", + "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", "dev": true, "dependencies": { "undici-types": "~6.19.8" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/@storybook/preview-api": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.6.tgz", - "integrity": "sha512-/Wxvb7wbI2O2iH63arRQQyyojA630vibdshkFjuC/u1nYdptEV1jkxa0OYmbZbKCn4/ze6uH4hfsKOpDPV9SWg==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.1.tgz", + "integrity": "sha512-VdnESYfXCUasNtMd5s1Q8DPqMnAUdpROn8mE8UAD79Cy7DSNesI1q0SATuJqh5iYCT/+3Tpjfghsr2zC/mOh8w==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, "node_modules/@storybook/react": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.3.6.tgz", - "integrity": "sha512-s3COryqIOYK7urgZaCPb77zlxGjPKr6dIsYmblQJcsFY2ZlG2x0Ysm8b5oRgD8Pv71hCJ0PKYA4RzDgBVYJS9A==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.1.tgz", + "integrity": "sha512-ZwszrzV47nWQEZ0X4LyNgv5OFq4iy/7LpmxW6IncIO7PWm70OWG2BVtKFNsNQx0LY+hOtllWZbvg06mPQzahFA==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/components": "^8.3.6", + "@storybook/components": "8.4.1", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "^8.3.6", - "@storybook/preview-api": "^8.3.6", - "@storybook/react-dom-shim": "8.3.6", - "@storybook/theming": "^8.3.6", - "@types/escodegen": "^0.0.6", - "@types/estree": "^0.0.51", - "@types/node": "^22.0.0", - "acorn": "^7.4.1", - "acorn-jsx": "^5.3.1", - "acorn-walk": "^7.2.0", - "escodegen": "^2.1.0", - "html-tags": "^3.1.0", - "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^15.0.0", - "semver": "^7.3.7", - "ts-dedent": "^2.0.0", - "type-fest": "~2.19", - "util-deprecate": "^1.0.2" + "@storybook/manager-api": "8.4.1", + "@storybook/preview-api": "8.4.1", + "@storybook/react-dom-shim": "8.4.1", + "@storybook/theming": "8.4.1" }, "engines": { "node": ">=18.0.0" @@ -7940,10 +7805,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.3.6", + "@storybook/test": "8.4.1", "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.3.6", + "storybook": "^8.4.1", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -7960,7 +7825,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", @@ -7976,11 +7840,10 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.6.tgz", - "integrity": "sha512-9BO6VXIdli4GHSfiP/Z0gwAf7oQig3D/yWK2U1+91UWDV8nIAgnNBAi76U4ORC6MiK5MdkDfIikIxnLLeLnahA==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.1.tgz", + "integrity": "sha512-XhvuqkpqtcUjDA8XE4osq140SCddX3VHMdj+IwlrMdoSl32CAya01TH5YDDx6YMy6hM/QQbyVKaemG7RB/oU4Q==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7988,48 +7851,30 @@ "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.3.6" - } - }, - "node_modules/@storybook/react/node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/react/node_modules/@types/node": { - "version": "22.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", - "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", - "dev": true, - "dependencies": { - "undici-types": "~6.19.8" + "storybook": "^8.4.1" } }, "node_modules/@storybook/test": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.6.tgz", - "integrity": "sha512-WIc8LzK9jaEw+e3OiweEM2j3cppPzsWod59swuf6gDBf176EQLIyjtVc+Kh3qO4NNkcL+lwmqaLPjOxlBLaDbg==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.1.tgz", + "integrity": "sha512-najn9kCxB8NaHykhD7Fv+Iq0FnxmIJYOJlYiI8NMgVLwaSDFf6gnqAY6HHVPRqkhej8TuT1L2e2RxKqzWEB+mA==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.3.6", + "@storybook/instrumenter": "8.4.1", "@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", - "util": "^0.12.4" + "@vitest/spy": "2.0.5" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.4.1" } }, "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { @@ -8126,17 +7971,16 @@ } }, "node_modules/@storybook/theming": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.6.tgz", - "integrity": "sha512-LQjUk6GXRW9ELkoBKuqzQKFUW+ajfGPfVELcfs3/VQX61VhthJ4olov4bGPc04wsmmFMgN/qODxT485IwOHfPQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.1.tgz", + "integrity": "sha512-Sz24isryVFZaVahXkjgnCsMAQqQeeKg41AtLsldlYdesIo6fr5tc6/SkTUy+CYadK4Dkhqp+vVRDnwToYYRGhA==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.6" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, "node_modules/@swc/counter": { @@ -8473,17 +8317,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, "node_modules/@types/concat-stream": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", @@ -8527,15 +8360,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" - }, - "node_modules/@types/escodegen": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz", - "integrity": "sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/eslint": { "version": "9.6.1", @@ -8573,32 +8398,6 @@ "@types/estree": "*" } }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -8622,15 +8421,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" - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/is-empty": { "version": "1.2.3", @@ -8751,13 +8542,6 @@ "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", "license": "MIT" }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -8795,8 +8579,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/pg": { "version": "8.6.1", @@ -8825,20 +8608,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/@types/qs": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", - "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/react": { "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", @@ -8863,8 +8632,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", @@ -8873,29 +8641,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, "node_modules/@types/shimmer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", @@ -9681,25 +9426,12 @@ "node": ">=6.5" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -9753,16 +9485,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", @@ -10011,13 +9733,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, "node_modules/array-includes": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", @@ -10217,7 +9932,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" }, @@ -10775,7 +10489,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" }, @@ -10864,54 +10577,11 @@ "dev": true, "license": "MIT" }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/boolbase": { "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": "1.1.11", @@ -11181,16 +10851,6 @@ "node": ">=10.16.0" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -11236,7 +10896,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" @@ -11286,7 +10945,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" } @@ -11488,7 +11146,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" }, @@ -11501,7 +11158,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" } @@ -11771,7 +11427,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12" } @@ -11871,29 +11526,6 @@ "dev": true, "license": "MIT" }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/conventional-commit-types": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", @@ -11907,23 +11539,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true, - "license": "MIT" - }, "node_modules/core-js-compat": { "version": "3.38.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", @@ -12218,7 +11833,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", @@ -12254,7 +11868,6 @@ "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", @@ -12285,7 +11898,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" }, @@ -12549,7 +12161,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" } @@ -12581,16 +12192,6 @@ "node": ">=0.4.0" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -12611,17 +12212,6 @@ "minimalistic-assert": "^1.0.0" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -12771,7 +12361,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" } @@ -12781,7 +12370,6 @@ "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", @@ -12796,7 +12384,6 @@ "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" } @@ -12824,8 +12411,7 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domexception": { "version": "4.0.0", @@ -12846,7 +12432,6 @@ "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" }, @@ -12862,7 +12447,6 @@ "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", @@ -12877,7 +12461,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" @@ -12901,13 +12484,6 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, "node_modules/electron-to-chromium": { "version": "1.5.41", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz", @@ -12966,22 +12542,11 @@ "node": ">= 4" } }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/endent": { "version": "2.1.0", "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", @@ -13284,7 +12849,6 @@ "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -13323,7 +12887,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" }, @@ -13340,13 +12903,6 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -14551,16 +14107,6 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", @@ -14659,66 +14205,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -14790,8 +14276,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", @@ -14933,48 +14418,11 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/find-cache-dir": { "version": "3.3.2", "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", @@ -15042,7 +14490,6 @@ "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", @@ -15102,7 +14549,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", @@ -15131,7 +14577,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", @@ -15148,7 +14593,6 @@ "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" } @@ -15158,7 +14602,6 @@ "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" }, @@ -15174,7 +14617,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" @@ -15191,7 +14633,6 @@ "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" }, @@ -15203,15 +14644,13 @@ "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" + "dev": true }, "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", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -15228,7 +14667,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", @@ -15243,7 +14681,6 @@ "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" } @@ -15252,15 +14689,13 @@ "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" + "dev": true }, "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": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -15279,7 +14714,6 @@ "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" }, @@ -15292,7 +14726,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } @@ -15339,16 +14772,6 @@ "node": ">= 12.20" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -15357,19 +14780,9 @@ "engines": { "node": "*" }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fs-extra": { @@ -15392,8 +14805,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", @@ -16091,7 +15503,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" } @@ -16192,7 +15603,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", @@ -16232,11 +15642,10 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.2.tgz", - "integrity": "sha512-q7xp/FO9RGBVoTKNItkdX1jKLscLFkgn/dLVFNYbHVbfHLBk6DYW5nsQ8kCzIWcgKP/kUBocetjvav6lD8YfCQ==", + "version": "5.6.3", + "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", @@ -16276,7 +15685,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -16289,28 +15697,10 @@ "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-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -16398,7 +15788,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" }, @@ -16739,16 +16128,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -16981,7 +16360,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" }, @@ -17401,7 +16779,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" }, @@ -19652,7 +19029,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" } @@ -20618,7 +19994,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" } @@ -20665,7 +20040,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" }, @@ -20681,7 +20055,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" } @@ -21176,22 +20549,11 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/memfs": { "version": "3.5.3", "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" }, @@ -21229,16 +20591,6 @@ "dev": true, "license": "MIT" }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -21254,16 +20606,6 @@ "node": ">= 8" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromark": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", @@ -22046,19 +21388,6 @@ "dev": true, "license": "MIT" }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -22388,7 +21717,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" @@ -22398,8 +21726,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", @@ -22637,7 +21964,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" }, @@ -22800,21 +22126,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" - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } + "dev": true }, "node_modules/once": { "version": "1.4.0", @@ -22858,7 +22170,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", @@ -23105,7 +22416,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" @@ -23210,22 +22520,11 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/pascal-case": { "version": "3.1.2", "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" @@ -23294,13 +22593,6 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, - "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", - "dev": true, - "license": "MIT" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -23726,7 +23018,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" }, @@ -23739,7 +23030,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -23757,7 +23047,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -23773,7 +23062,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" }, @@ -24037,7 +23325,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" @@ -24171,20 +23458,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -24349,22 +23622,6 @@ "node": ">= 0.6" } }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -24382,7 +23639,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", @@ -24404,7 +23660,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" } @@ -24414,7 +23669,6 @@ "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" }, @@ -24435,29 +23689,6 @@ "react": "^18.3.1" } }, - "node_modules/react-element-to-jsx-string": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", - "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@base2/pretty-print-object": "1.0.1", - "is-plain-object": "5.0.0", - "react-is": "18.1.0" - }, - "peerDependencies": { - "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", - "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0" - } - }, - "node_modules/react-element-to-jsx-string/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true, - "license": "MIT" - }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -24617,7 +23848,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", @@ -24634,7 +23864,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" } @@ -24913,7 +24142,6 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -26073,7 +25301,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", @@ -26292,7 +25519,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" }, @@ -26561,58 +25787,6 @@ "node": ">=10" } }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -26622,22 +25796,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/server-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", @@ -26685,13 +25843,6 @@ "dev": true, "license": "MIT" }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -27026,24 +26177,13 @@ "node": ">=8" } }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/storybook": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.6.tgz", - "integrity": "sha512-9GVbtej6ZzPRUM7KRQ7848506FfHrUiJGqPuIQdoSJd09EmuEoLjmLAgEOmrHBQKgGYMaM7Vh9GsTLim6vwZTQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.1.tgz", + "integrity": "sha512-0tfFIFghjho9FtnFoiJMoxhcs2iIdvEF81GTSVnTsDVJrYA84nB+FxN3UY1fT0BcQ8BFlbf+OhSjZL7ufqqWKA==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core": "8.3.6" + "@storybook/core": "8.4.1" }, "bin": { "getstorybook": "bin/index.cjs", @@ -27053,6 +26193,45 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, + "node_modules/storybook/node_modules/@storybook/core": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.1.tgz", + "integrity": "sha512-q3Q4OFBj7MHHbIFYk/Beejlqv5j7CC3+VWhGcr0TK3SGvdCIZ7EliYuc5JIOgDlEPsnTIk+lkgWI4LAA9mLzSw==", + "dev": true, + "dependencies": { + "@storybook/csf": "^0.1.11", + "better-opn": "^3.0.2", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", + "esbuild-register": "^3.5.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "process": "^0.11.10", + "recast": "^0.23.5", + "semver": "^7.6.2", + "util": "^0.12.5", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, "node_modules/stream-browserify": { @@ -27387,7 +26566,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" }, @@ -27416,7 +26594,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" }, @@ -28340,8 +27517,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.9", @@ -28443,16 +27619,6 @@ "node": ">=8.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, "node_modules/tough-cookie": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", @@ -28816,20 +27982,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", @@ -29609,16 +28761,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/unplugin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", @@ -29807,18 +28949,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" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } + "dev": true }, "node_modules/uuid": { "version": "9.0.1", @@ -29898,16 +29029,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -30234,7 +29355,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", @@ -30283,8 +29403,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/webpack/node_modules/acorn": { "version": "8.13.0", From 9017bea593ec5f80d26d6e1d4b19efbc5eaa4e5b Mon Sep 17 00:00:00 2001 From: Caner Akdas Date: Wed, 6 Nov 2024 16:07:58 +0300 Subject: [PATCH 0115/1385] fix: Consistent color transitions and Tailwind updates (#7179) fix: color transitions and tailwind updates --- .../Common/Breadcrumbs/BreadcrumbItem/index.module.css | 9 +++++---- .../Common/Breadcrumbs/BreadcrumbLink/index.module.css | 3 ++- apps/site/components/Common/Button/index.module.css | 3 ++- apps/site/components/Common/CodeTabs/index.module.css | 1 + .../components/Common/LanguageDropDown/index.module.css | 1 + .../Pagination/PaginationListItem/index.module.css | 1 + .../ProgressionSidebarItem/index.module.css | 3 ++- apps/site/components/Common/ThemeToggle/index.module.css | 1 + .../Containers/NavBar/NavItem/index.module.css | 3 ++- apps/site/styles/base.css | 3 +-- apps/site/tailwind.config.ts | 2 +- 11 files changed, 19 insertions(+), 11 deletions(-) diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css b/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css index 8edfa1fb194b1..eca19df43f8ef 100644 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css +++ b/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css @@ -12,14 +12,15 @@ } a { - @apply flex-shrink - flex-grow; + @apply shrink + grow; } &, > a, > a:hover { @apply text-neutral-800 + motion-safe:transition-colors dark:text-neutral-200; } @@ -30,8 +31,8 @@ .separator { @apply size-4 max-w-fit - flex-shrink-0 - flex-grow + shrink-0 + grow text-neutral-600 dark:text-neutral-400; } diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.module.css b/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.module.css index b23a220ff8147..ea0d6b9db96b5 100644 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.module.css +++ b/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.module.css @@ -1,5 +1,5 @@ .link { - @apply max-w-fit + @apply max-w-fit truncate; &.active { @@ -9,6 +9,7 @@ py-1 font-semibold text-white + motion-safe:transition-colors dark:text-white; &:hover { diff --git a/apps/site/components/Common/Button/index.module.css b/apps/site/components/Common/Button/index.module.css index 1c12b1040b718..9bd34cb96ae97 100644 --- a/apps/site/components/Common/Button/index.module.css +++ b/apps/site/components/Common/Button/index.module.css @@ -6,7 +6,8 @@ gap-2 py-2.5 text-center - font-semibold; + font-semibold + motion-safe:transition-colors; svg { @apply size-5; diff --git a/apps/site/components/Common/CodeTabs/index.module.css b/apps/site/components/Common/CodeTabs/index.module.css index e6e0110ad45d1..5c79f7ecd4fd4 100644 --- a/apps/site/components/Common/CodeTabs/index.module.css +++ b/apps/site/components/Common/CodeTabs/index.module.css @@ -32,6 +32,7 @@ gap-2 text-center text-neutral-200 + motion-safe:transition-colors lg:flex; & > .icon { diff --git a/apps/site/components/Common/LanguageDropDown/index.module.css b/apps/site/components/Common/LanguageDropDown/index.module.css index 50b8e6b5fb5ed..7f1a0d1052106 100644 --- a/apps/site/components/Common/LanguageDropDown/index.module.css +++ b/apps/site/components/Common/LanguageDropDown/index.module.css @@ -4,6 +4,7 @@ rounded-md p-2 text-neutral-700 + motion-safe:transition-colors dark:text-neutral-300; &:hover { diff --git a/apps/site/components/Common/Pagination/PaginationListItem/index.module.css b/apps/site/components/Common/Pagination/PaginationListItem/index.module.css index bcc57af3fe933..ca629ffce0a31 100644 --- a/apps/site/components/Common/Pagination/PaginationListItem/index.module.css +++ b/apps/site/components/Common/Pagination/PaginationListItem/index.module.css @@ -11,6 +11,7 @@ px-3 py-2.5 text-neutral-800 + motion-safe:transition-colors dark:text-neutral-200; &:hover { diff --git a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css b/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css index 60342f4abb796..1783a37464340 100644 --- a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css +++ b/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css @@ -13,11 +13,12 @@ a.item { &:hover { @apply text-neutral-900 + motion-safe:transition-colors dark:text-white; } svg { - @apply flex-shrink-0 + @apply shrink-0 fill-neutral-200 stroke-white stroke-[4] diff --git a/apps/site/components/Common/ThemeToggle/index.module.css b/apps/site/components/Common/ThemeToggle/index.module.css index 3daab7785cfb3..c2cd6bb230a91 100644 --- a/apps/site/components/Common/ThemeToggle/index.module.css +++ b/apps/site/components/Common/ThemeToggle/index.module.css @@ -3,6 +3,7 @@ rounded-md p-2 text-neutral-700 + motion-safe:transition-colors dark:text-neutral-300; &:hover { diff --git a/apps/site/components/Containers/NavBar/NavItem/index.module.css b/apps/site/components/Containers/NavBar/NavItem/index.module.css index b639699d08463..17ccfee6aab58 100644 --- a/apps/site/components/Containers/NavBar/NavItem/index.module.css +++ b/apps/site/components/Containers/NavBar/NavItem/index.module.css @@ -4,7 +4,8 @@ gap-2 rounded px-3 - py-2; + py-2 + motion-safe:transition-colors; .label { @apply text-base diff --git a/apps/site/styles/base.css b/apps/site/styles/base.css index a894edaa37811..ebab370edd929 100644 --- a/apps/site/styles/base.css +++ b/apps/site/styles/base.css @@ -1,6 +1,5 @@ * { - @apply subpixel-antialiased - motion-safe:transition-colors; + @apply subpixel-antialiased; } html, diff --git a/apps/site/tailwind.config.ts b/apps/site/tailwind.config.ts index 4ea21ba1b8050..b2aa693bad259 100644 --- a/apps/site/tailwind.config.ts +++ b/apps/site/tailwind.config.ts @@ -153,7 +153,7 @@ export default { }, }, }, - darkMode: ['class', '[data-theme="dark"]'], + darkMode: ['selector', '[data-theme="dark"]'], plugins: [ require('@savvywombat/tailwindcss-grid-areas'), require('@tailwindcss/container-queries'), From 18ab585c6f62234717f619e1525a0534380c7d8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 23:19:50 +0000 Subject: [PATCH 0116/1385] meta: bump @sentry/nextjs from 8.35.0 to 8.36.0 (#7171) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 8.35.0 to 8.36.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.35.0...8.36.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" 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 | 599 ++++++++++++++++++++++------------------- 2 files changed, 321 insertions(+), 280 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 94d0a2a4fa8c3..06ddf031da8df 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -53,7 +53,7 @@ "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@sentry/nextjs": "^8.33.1", + "@sentry/nextjs": "^8.36.0", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.17.5", "@vcarl/remark-headings": "~0.1.0", diff --git a/package-lock.json b/package-lock.json index 164730ed3287a..b79be4f9d634b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@sentry/nextjs": "^8.33.1", + "@sentry/nextjs": "^8.36.0", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.17.5", "@vcarl/remark-headings": "~0.1.0", @@ -5130,7 +5130,6 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -5139,10 +5138,9 @@ } }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.26.0.tgz", - "integrity": "sha512-HedpXXYzzbaoutw6DFLWLDket2FwLkLpil4hGCZ1xYEIMTcivdfwEOISgdbLEWyG3HW52gTq2V9mOVJrONgiwg==", - "license": "Apache-2.0", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.27.0.tgz", + "integrity": "sha512-CdZ3qmHCwNhFAzjTgHqrDQ44Qxcpz43cVxZRhOs+Ns/79ug+Mr84Bkb626bkJLkA3+BLimA5YAEVRlJC6pFb7g==", "engines": { "node": ">=14" }, @@ -5151,10 +5149,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", - "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", - "license": "Apache-2.0", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, @@ -5169,7 +5166,6 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "^1.2.0", @@ -5189,7 +5185,6 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.42.0.tgz", "integrity": "sha512-fiuU6OKsqHJiydHWgTRQ7MnIrJ2lEqsdgFtNIH4LbAUJl/5XmrIeoDzDnox+hfkgWK65jsleFuQDtYb5hW1koQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5203,13 +5198,12 @@ } }, "node_modules/@opentelemetry/instrumentation-connect": { - "version": "0.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.39.0.tgz", - "integrity": "sha512-pGBiKevLq7NNglMgqzmeKczF4XQMTOUOTkK8afRHMZMnrK3fcETyTH7lVaSozwiOM3Ws+SuEmXZT7DYrrhxGlg==", - "license": "Apache-2.0", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.40.0.tgz", + "integrity": "sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.54.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.36" }, @@ -5220,11 +5214,40 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-connect/node_modules/@opentelemetry/api-logs": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.0.tgz", + "integrity": "sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-connect/node_modules/@opentelemetry/instrumentation": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.0.tgz", + "integrity": "sha512-B0Ydo9g9ehgNHwtpc97XivEzjz0XBKR6iQ83NTENIxEEf5NHE0otZQuZLgDdey1XNk+bP1cfRpIkSFWM5YlSyg==", + "dependencies": { + "@opentelemetry/api-logs": "0.54.0", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, "node_modules/@opentelemetry/instrumentation-dataloader": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.12.0.tgz", "integrity": "sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5236,13 +5259,12 @@ } }, "node_modules/@opentelemetry/instrumentation-express": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.43.0.tgz", - "integrity": "sha512-bxTIlzn9qPXJgrhz8/Do5Q3jIlqfpoJrSUtVGqH+90eM1v2PkPHc+SdE+zSqe4q9Y1UQJosmZ4N4bm7Zj/++MA==", - "license": "Apache-2.0", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.44.0.tgz", + "integrity": "sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.54.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5252,11 +5274,40 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-express/node_modules/@opentelemetry/api-logs": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.0.tgz", + "integrity": "sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-express/node_modules/@opentelemetry/instrumentation": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.0.tgz", + "integrity": "sha512-B0Ydo9g9ehgNHwtpc97XivEzjz0XBKR6iQ83NTENIxEEf5NHE0otZQuZLgDdey1XNk+bP1cfRpIkSFWM5YlSyg==", + "dependencies": { + "@opentelemetry/api-logs": "0.54.0", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, "node_modules/@opentelemetry/instrumentation-fastify": { "version": "0.40.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.40.0.tgz", "integrity": "sha512-74qj4nG3zPtU7g2x4sm2T4R3/pBMyrYstTsqSZwdlhQk1SD4l8OSY9sPRX1qkhfxOuW3U4KZQAV/Cymb3fB6hg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5270,13 +5321,42 @@ } }, "node_modules/@opentelemetry/instrumentation-fs": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.15.0.tgz", - "integrity": "sha512-JWVKdNLpu1skqZQA//jKOcKdJC66TWKqa2FUFq70rKohvaSq47pmXlnabNO+B/BvLfmidfiaN35XakT5RyMl2Q==", - "license": "Apache-2.0", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.16.0.tgz", + "integrity": "sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0" + "@opentelemetry/instrumentation": "^0.54.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fs/node_modules/@opentelemetry/api-logs": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.0.tgz", + "integrity": "sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-fs/node_modules/@opentelemetry/instrumentation": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.0.tgz", + "integrity": "sha512-B0Ydo9g9ehgNHwtpc97XivEzjz0XBKR6iQ83NTENIxEEf5NHE0otZQuZLgDdey1XNk+bP1cfRpIkSFWM5YlSyg==", + "dependencies": { + "@opentelemetry/api-logs": "0.54.0", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" }, "engines": { "node": ">=14" @@ -5289,7 +5369,6 @@ "version": "0.39.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz", "integrity": "sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5304,7 +5383,6 @@ "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.43.0.tgz", "integrity": "sha512-aI3YMmC2McGd8KW5du1a2gBA0iOMOGLqg4s9YjzwbjFwjlmMNFSK1P3AIg374GWg823RPUGfVTIgZ/juk9CVOA==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5319,7 +5397,6 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz", "integrity": "sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5336,7 +5413,6 @@ "version": "0.53.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz", "integrity": "sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/instrumentation": "0.53.0", @@ -5350,11 +5426,24 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", + "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/instrumentation-ioredis": { "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz", "integrity": "sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/redis-common": "^0.36.2", @@ -5368,12 +5457,11 @@ } }, "node_modules/@opentelemetry/instrumentation-kafkajs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.3.0.tgz", - "integrity": "sha512-UnkZueYK1ise8FXQeKlpBd7YYUtC7mM8J0wzUSccEfc/G8UqHQqAzIyYCUOUPUKp8GsjLnWOOK/3hJc4owb7Jg==", - "license": "Apache-2.0", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.4.0.tgz", + "integrity": "sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==", "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.54.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5383,11 +5471,40 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-kafkajs/node_modules/@opentelemetry/api-logs": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.0.tgz", + "integrity": "sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-kafkajs/node_modules/@opentelemetry/instrumentation": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.0.tgz", + "integrity": "sha512-B0Ydo9g9ehgNHwtpc97XivEzjz0XBKR6iQ83NTENIxEEf5NHE0otZQuZLgDdey1XNk+bP1cfRpIkSFWM5YlSyg==", + "dependencies": { + "@opentelemetry/api-logs": "0.54.0", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, "node_modules/@opentelemetry/instrumentation-koa": { "version": "0.43.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz", "integrity": "sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5404,7 +5521,6 @@ "version": "0.40.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.40.0.tgz", "integrity": "sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0" }, @@ -5419,7 +5535,6 @@ "version": "0.47.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz", "integrity": "sha512-yqyXRx2SulEURjgOQyJzhCECSh5i1uM49NUaq9TqLd6fA7g26OahyJfsr9NE38HFqGRHpi4loyrnfYGdrsoVjQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/sdk-metrics": "^1.9.1", @@ -5436,7 +5551,6 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz", "integrity": "sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0", @@ -5453,7 +5567,6 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz", "integrity": "sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5470,7 +5583,6 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz", "integrity": "sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5487,7 +5599,6 @@ "version": "0.40.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz", "integrity": "sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0" @@ -5503,7 +5614,6 @@ "version": "0.44.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz", "integrity": "sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -5522,7 +5632,6 @@ "version": "0.42.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz", "integrity": "sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/redis-common": "^0.36.2", @@ -5539,7 +5648,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz", "integrity": "sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.53.0" @@ -5555,18 +5663,16 @@ "version": "0.36.2", "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", - "license": "Apache-2.0", "engines": { "node": ">=14" } }, "node_modules/@opentelemetry/resources": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", - "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", - "license": "Apache-2.0", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", + "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", "dependencies": { - "@opentelemetry/core": "1.26.0", + "@opentelemetry/core": "1.27.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { @@ -5577,13 +5683,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", - "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", - "license": "Apache-2.0", + "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==", "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0" }, "engines": { "node": ">=14" @@ -5593,13 +5698,12 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.26.0.tgz", - "integrity": "sha512-olWQldtvbK4v22ymrKLbIcBi9L2SpMO84sCPY54IVsJhP9fRsxJT194C/AVaAuJzLE30EdhhM1VmvVYR7az+cw==", - "license": "Apache-2.0", + "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==", "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0", + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { @@ -5613,7 +5717,6 @@ "version": "1.27.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -5622,7 +5725,6 @@ "version": "0.40.1", "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.1.0" }, @@ -5765,7 +5867,6 @@ "version": "5.19.1", "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.19.1.tgz", "integrity": "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.8", "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0", @@ -5776,7 +5877,6 @@ "version": "0.52.1", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -5788,7 +5888,6 @@ "version": "0.52.1", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", - "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.52.1", "@types/shimmer": "^1.0.2", @@ -6798,99 +6897,92 @@ } }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.35.0.tgz", - "integrity": "sha512-uj9nwERm7HIS13f/Q52hF/NUS5Al8Ma6jkgpfYGeppYvU0uSjPkwMogtqoJQNbOoZg973tV8qUScbcWY616wNA==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.36.0.tgz", + "integrity": "sha512-AVJ9GmQW7jYxaal6hjQnnktsDNype01ajVC4q1RyOn1SfzSnXg6mXwj4xm4ovuJV+aBI7fAZJ55vEX5ASuP0ZA==", "dependencies": { - "@sentry/core": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0" + "@sentry/core": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.35.0.tgz", - "integrity": "sha512-7bjSaUhL0bDArozre6EiIhhdWdT/1AWNWBC1Wc5w1IxEi5xF7nvF/FfvjQYrONQzZAI3HRxc45J2qhLUzHBmoQ==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.36.0.tgz", + "integrity": "sha512-aAMTm3uDBj8Ta7FwoohpLmJOpWzpWXvvtTbtmSgkeCtPJLUS8DZDCTZ9uCILUkpuYrv2savRUHsdPkxNjgL8FA==", "dependencies": { - "@sentry/core": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0" + "@sentry/core": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.35.0.tgz", - "integrity": "sha512-3wkW03vXYMyWtTLxl9yrtkV+qxbnKFgfASdoGWhXzfLjycgT6o4/04eb3Gn71q9aXqRwH17ISVQbVswnRqMcmA==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.36.0.tgz", + "integrity": "sha512-lbic98GsSkDeinQDix54tBFEgHUlmBtO+HjXECk9jIE0vOzR4As20/s5ta46t1rKMLlnxOtJuT5jKXeUYogBUw==", "dependencies": { - "@sentry-internal/browser-utils": "8.35.0", - "@sentry/core": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0" + "@sentry-internal/browser-utils": "8.36.0", + "@sentry/core": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.35.0.tgz", - "integrity": "sha512-TUrH6Piv19kvHIiRyIuapLdnuwxk/Un/l1WDCQfq7mK9p1Pac0FkQ7Uufjp6zY3lyhDDZQ8qvCS4ioCMibCwQg==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.36.0.tgz", + "integrity": "sha512-KJPLf+qYdrQdmouoAqIPZ2KeapIBlHWbzNdQqNxJFWLHFFjpLUtt0b+87ruvbA/q3NYy2fDwD7EB0tGS1RHBaA==", "dependencies": { - "@sentry-internal/replay": "8.35.0", - "@sentry/core": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0" + "@sentry-internal/replay": "8.36.0", + "@sentry/core": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "2.22.3", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.3.tgz", - "integrity": "sha512-OlHA+i+vnQHRIdry4glpiS/xTOtgjmpXOt6IBOUqynx5Jd/iK1+fj+t8CckqOx9wRacO/hru2wfW/jFq0iViLg==", - "license": "MIT", + "version": "2.22.6", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.6.tgz", + "integrity": "sha512-V2g1Y1I5eSe7dtUVMBvAJr8BaLRr4CLrgNgtPaZyMT4Rnps82SrZ5zqmEkLXPumlXhLUWR6qzoMNN2u+RXVXfQ==", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.35.0.tgz", - "integrity": "sha512-WHfI+NoZzpCsmIvtr6ChOe7yWPLQyMchPnVhY3Z4UeC70bkYNdKcoj/4XZbX3m0D8+71JAsm0mJ9s9OC3Ue6MQ==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.36.0.tgz", + "integrity": "sha512-bLrQNe+wD4DkCfB8OD5TF3Rr8KA2+aTo5wF3t3Bf6KVn8//iX1ia1hhtptYiRnbRkG/0AEPxlqL6XfPZYVPQ5A==", "dependencies": { - "@sentry-internal/browser-utils": "8.35.0", - "@sentry-internal/feedback": "8.35.0", - "@sentry-internal/replay": "8.35.0", - "@sentry-internal/replay-canvas": "8.35.0", - "@sentry/core": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0" + "@sentry-internal/browser-utils": "8.36.0", + "@sentry-internal/feedback": "8.36.0", + "@sentry-internal/replay": "8.36.0", + "@sentry-internal/replay-canvas": "8.36.0", + "@sentry/core": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "2.22.3", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.3.tgz", - "integrity": "sha512-DeoUl0WffcqZZRl5Wy9aHvX4WfZbbWt0QbJ7NJrcEViq+dRAI2FQTYECFLwdZi5Gtb3oyqZICO+P7k8wDnzsjQ==", - "license": "MIT", + "version": "2.22.6", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.6.tgz", + "integrity": "sha512-1esQdgSUCww9XAntO4pr7uAM5cfGhLsgTK9MEwAKNfvpMYJi9NUTYa3A7AZmdA8V6107Lo4OD7peIPrDRbaDCg==", "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.3", - "@sentry/cli": "^2.33.1", + "@sentry/babel-plugin-component-annotate": "2.22.6", + "@sentry/cli": "^2.36.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", @@ -6905,7 +6997,6 @@ "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" } @@ -6914,7 +7005,6 @@ "version": "9.3.5", "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", @@ -6932,7 +7022,6 @@ "version": "0.30.8", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", - "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -6944,7 +7033,6 @@ "version": "8.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6959,17 +7047,15 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/@sentry/cli": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.37.0.tgz", - "integrity": "sha512-fM3V4gZRJR/s8lafc3O07hhOYRnvkySdPkvL/0e0XW0r+xRwqIAgQ5ECbsZO16A5weUiXVSf03ztDL1FcmbJCQ==", + "version": "2.38.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.38.1.tgz", + "integrity": "sha512-XFO04nP7cn0tboMQ4ALR81QRF/6xoWAFzNld7Io6jHbaFzihqewjxAqy7pSvVPaieepUjqe7m/Ippt00kKOACg==", "hasInstallScript": true, - "license": "BSD-3-Clause", "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.7", @@ -6984,20 +7070,19 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.37.0", - "@sentry/cli-linux-arm": "2.37.0", - "@sentry/cli-linux-arm64": "2.37.0", - "@sentry/cli-linux-i686": "2.37.0", - "@sentry/cli-linux-x64": "2.37.0", - "@sentry/cli-win32-i686": "2.37.0", - "@sentry/cli-win32-x64": "2.37.0" + "@sentry/cli-darwin": "2.38.1", + "@sentry/cli-linux-arm": "2.38.1", + "@sentry/cli-linux-arm64": "2.38.1", + "@sentry/cli-linux-i686": "2.38.1", + "@sentry/cli-linux-x64": "2.38.1", + "@sentry/cli-win32-i686": "2.38.1", + "@sentry/cli-win32-x64": "2.38.1" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.37.0.tgz", - "integrity": "sha512-CsusyMvO0eCPSN7H+sKHXS1pf637PWbS4rZak/7giz/z31/6qiXmeMlcL3f9lLZKtFPJmXVFO9uprn1wbBVF8A==", - "license": "BSD-3-Clause", + "version": "2.38.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.38.1.tgz", + "integrity": "sha512-IHuxm072aSTAvwuHtLg065cF00Pxm2wprnrRr2lkyWp8nLOoO7DmumWZ4pjHvhB8yZXsAbM/PSxLRBoDIRDPzQ==", "optional": true, "os": [ "darwin" @@ -7007,13 +7092,12 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.37.0.tgz", - "integrity": "sha512-Dz0qH4Yt+gGUgoVsqVt72oDj4VQynRF1QB1/Sr8g76Vbi+WxWZmUh0iFwivYVwWxdQGu/OQrE0tx946HToCRyA==", + "version": "2.38.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.38.1.tgz", + "integrity": "sha512-xyf4f56O4/eeirol8t1tTQw0cwF34b3v69zn6wHtKfx2lW5IEBGO+agVNdOdosnCx6j3UadgdRXUJlSyM9kx/w==", "cpu": [ "arm" ], - "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -7024,13 +7108,12 @@ } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.37.0.tgz", - "integrity": "sha512-2vzUWHLZ3Ct5gpcIlfd/2Qsha+y9M8LXvbZE26VxzYrIkRoLAWcnClBv8m4XsHLMURYvz3J9QSZHMZHSO7kAzw==", + "version": "2.38.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.38.1.tgz", + "integrity": "sha512-3bj5DS4wDusL0YHwG5qeI+O19kz4N4KDDmnWqIew56MmSSAEM5B0qKk5Hivu1vRU5vPKFwVn8BVjLnKXu9idjg==", "cpu": [ "arm64" ], - "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -7041,14 +7124,13 @@ } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.37.0.tgz", - "integrity": "sha512-MHRLGs4t/CQE1pG+mZBQixyWL6xDZfNalCjO8GMcTTbZFm44S3XRHfYJZNVCgdtnUP7b6OHGcu1v3SWE10LcwQ==", + "version": "2.38.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.38.1.tgz", + "integrity": "sha512-VygJO2oTc6GfiqqmPYNpO2bW1hzszuNyn37SSmeRuuhq1/kRwD+ZQj4OmXYEASjSLg+8mDPoWOurPjHEPKNtNw==", "cpu": [ "x86", "ia32" ], - "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -7059,13 +7141,12 @@ } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.37.0.tgz", - "integrity": "sha512-k76ClefKZaDNJZU/H3mGeR8uAzAGPzDRG/A7grzKfBeyhP3JW09L7Nz9IQcSjCK+xr399qLhM2HFCaPWQ6dlMw==", + "version": "2.38.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.38.1.tgz", + "integrity": "sha512-9SaPJK5yAGR7qGsDubTT9O7VpNQG9KIolCOov4xJU7scbmjGaFyYBm9c7ZIqbq6B+56YchPbtD0RewZC6CiF2w==", "cpu": [ "x64" ], - "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -7076,14 +7157,13 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.37.0.tgz", - "integrity": "sha512-FFyi5RNYQQkEg4GkP2f3BJcgQn0F4fjFDMiWkjCkftNPXQG+HFUEtrGsWr6mnHPdFouwbYg3tEPUWNxAoypvTw==", + "version": "2.38.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.38.1.tgz", + "integrity": "sha512-BVUM5y+ZDBK/LqyVvt0C7oolmg8aq7PI/u04/Pp6FLRExySqwyQim0vNyL2FRjIeX1yhbk7x4Z79UjEKqJBltA==", "cpu": [ "x86", "ia32" ], - "license": "BSD-3-Clause", "optional": true, "os": [ "win32" @@ -7093,13 +7173,12 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.37.0.tgz", - "integrity": "sha512-nSMj4OcfQmyL+Tu/jWCJwhKCXFsCZW1MUk6wjjQlRt9SDLfgeapaMlK1ZvT1eZv5ZH6bj3qJfefwj4U8160uOA==", + "version": "2.38.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.38.1.tgz", + "integrity": "sha512-+HgsdM3LFSzUNlDpicPRdTKfr5u+nJ2C5p4aDYPb2G+qoYW+66FI4NxgWSyzJsj3nVQ8lW5/6AoMP6U5z/e/0A==", "cpu": [ "x64" ], - "license": "BSD-3-Clause", "optional": true, "os": [ "win32" @@ -7109,36 +7188,35 @@ } }, "node_modules/@sentry/core": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.35.0.tgz", - "integrity": "sha512-Ci0Nmtw5ETWLqQJGY4dyF+iWh7PWKy6k303fCEoEmqj2czDrKJCp7yHBNV0XYbo00prj2ZTbCr6I7albYiyONA==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.36.0.tgz", + "integrity": "sha512-cbq1WQyRqc/+YpPhjwQxfniUM3ZxmO3Pm1oisTB8dw6mlbgQfGD6aznEIjXWWJY6k6acewJlMUx09N7DnprtBw==", "dependencies": { - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0" + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/nextjs": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.35.0.tgz", - "integrity": "sha512-7V6Yd0llWvarebVhtK2UyIqkfw/BzKn/hQxJAob/FQ6V9wKFjF5W0EFtE2n/T0RCetL2JPF8iHu3/b4/TVREmg==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.36.0.tgz", + "integrity": "sha512-JLPK5ZSZdGyIPVx40qnOomHV04TB3p+HymYvfQwX7C7/Ocm8U0Q7v+0164IXHu0FVR/BfqhbE84s+mpAEnHvig==", "dependencies": { + "@opentelemetry/api": "^1.9.0", "@opentelemetry/instrumentation-http": "0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@rollup/plugin-commonjs": "26.0.1", - "@sentry-internal/browser-utils": "8.35.0", - "@sentry/core": "8.35.0", - "@sentry/node": "8.35.0", - "@sentry/opentelemetry": "8.35.0", - "@sentry/react": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0", - "@sentry/vercel-edge": "8.35.0", - "@sentry/webpack-plugin": "2.22.3", + "@sentry-internal/browser-utils": "8.36.0", + "@sentry/core": "8.36.0", + "@sentry/node": "8.36.0", + "@sentry/opentelemetry": "8.36.0", + "@sentry/react": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0", + "@sentry/vercel-edge": "8.36.0", + "@sentry/webpack-plugin": "2.22.6", "chalk": "3.0.0", "resolve": "1.22.8", "rollup": "3.29.5", @@ -7148,13 +7226,7 @@ "node": ">=14.18" }, "peerDependencies": { - "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0", - "webpack": ">=5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - } + "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0" } }, "node_modules/@sentry/nextjs/node_modules/ansi-styles": { @@ -7225,27 +7297,26 @@ } }, "node_modules/@sentry/node": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.35.0.tgz", - "integrity": "sha512-B0FLOcZEfYe3CJ2t0l1N0HJcHXcIrLlGENQ2kf5HqR2zcOcOzRxyITJTSV5brCnmzVNgkz9PG8VWo3w0HXZQpA==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.36.0.tgz", + "integrity": "sha512-2RRbSck90TGpVz8F3OaNbq5Q9RXgeRlq5leGWHU7NfQOl3LmkG+vkzTbOqPDPZLtiYcw5KQ3G5G+vybrDS6AGg==", "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.25.1", "@opentelemetry/core": "^1.25.1", "@opentelemetry/instrumentation": "^0.53.0", "@opentelemetry/instrumentation-amqplib": "^0.42.0", - "@opentelemetry/instrumentation-connect": "0.39.0", + "@opentelemetry/instrumentation-connect": "0.40.0", "@opentelemetry/instrumentation-dataloader": "0.12.0", - "@opentelemetry/instrumentation-express": "0.43.0", + "@opentelemetry/instrumentation-express": "0.44.0", "@opentelemetry/instrumentation-fastify": "0.40.0", - "@opentelemetry/instrumentation-fs": "0.15.0", + "@opentelemetry/instrumentation-fs": "0.16.0", "@opentelemetry/instrumentation-generic-pool": "0.39.0", "@opentelemetry/instrumentation-graphql": "0.43.0", "@opentelemetry/instrumentation-hapi": "0.41.0", "@opentelemetry/instrumentation-http": "0.53.0", "@opentelemetry/instrumentation-ioredis": "0.43.0", - "@opentelemetry/instrumentation-kafkajs": "0.3.0", + "@opentelemetry/instrumentation-kafkajs": "0.4.0", "@opentelemetry/instrumentation-koa": "0.43.0", "@opentelemetry/instrumentation-lru-memoizer": "0.40.0", "@opentelemetry/instrumentation-mongodb": "0.47.0", @@ -7260,10 +7331,10 @@ "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.35.0", - "@sentry/opentelemetry": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0", + "@sentry/core": "8.36.0", + "@sentry/opentelemetry": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0", "import-in-the-middle": "^1.11.2" }, "engines": { @@ -7271,14 +7342,13 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.35.0.tgz", - "integrity": "sha512-2mWMpEiIFop/omia9BqTJa+0Khe+tSsiZSUrxbnSpxM0zgw8DFIzJMHbiqw/I7Qaluz9pnO2HZXqgUTwNPsU8A==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.36.0.tgz", + "integrity": "sha512-pMKMphH0j1Mh8zknLWEEUaaaxeYn76rniGOxKLoQVk1pCUhhzkFEJdxKC41aR8yin/uN8X3CGWQb9vp/przwSg==", "dependencies": { - "@sentry/core": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0" + "@sentry/core": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0" }, "engines": { "node": ">=14.18" @@ -7292,15 +7362,14 @@ } }, "node_modules/@sentry/react": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.35.0.tgz", - "integrity": "sha512-8Y+s4pE9hvT2TwSo5JS/Enw2cNFlwiLcJDNGCj/Hho+FePFYA59hbN06ouTHWARnO+swANHKZQj24Wp57p1/tg==", - "license": "MIT", - "dependencies": { - "@sentry/browser": "8.35.0", - "@sentry/core": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.36.0.tgz", + "integrity": "sha512-YIJZUx7Q5aulK034cRri0p/7MeP3tdLfdP6vMJMwrVlqoWQI9gKZXikmLIqHUQegZdMRYX5tr03gTWJu3dhYwg==", + "dependencies": { + "@sentry/browser": "8.36.0", + "@sentry/core": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -7311,47 +7380,44 @@ } }, "node_modules/@sentry/types": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.35.0.tgz", - "integrity": "sha512-AVEZjb16MlYPifiDDvJ19dPQyDn0jlrtC1PHs6ZKO+Rzyz+2EX2BRdszvanqArldexPoU1p5Bn2w81XZNXThBA==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.36.0.tgz", + "integrity": "sha512-K1pVFfdGHw115RzGHpwSOqoEPeayn4N1F9IfM0kxrYpQSbFT1X29eak88GBfC8gPiLEF0iFGlSaQ4ERmF7oRcA==", "engines": { "node": ">=14.18" } }, "node_modules/@sentry/utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.35.0.tgz", - "integrity": "sha512-MdMb6+uXjqND7qIPWhulubpSeHzia6HtxeJa8jYI09OCvIcmNGPydv/Gx/LZBwosfMHrLdTWcFH7Y7aCxrq7cg==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.36.0.tgz", + "integrity": "sha512-oJ3EDPj0I00z+AwC3EWBpSidXYUoKW0Id8MfMQP5Hflniz3gif7UEReblT+FJgPEVo6+6uNzAncY0MuNMxmDKQ==", "dependencies": { - "@sentry/types": "8.35.0" + "@sentry/types": "8.36.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/vercel-edge": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.35.0.tgz", - "integrity": "sha512-Wp5HCkBb6hA1oE4gETzi4laMsPsc7UBqKCMY4H/UOkuD6HzgpyWuHZeS6nrs2A3MJWcoNoFZ2sJD1hdo4apzGQ==", - "license": "MIT", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.36.0.tgz", + "integrity": "sha512-5zSw+5JniztTkiOXU4pUXypD9opPVf91Gd71/khrFfDbDBT8gF/LlClp21ACt/c3jc1Bbk79j+lyYEXVe8/jIg==", "dependencies": { - "@sentry/core": "8.35.0", - "@sentry/types": "8.35.0", - "@sentry/utils": "8.35.0" + "@opentelemetry/api": "^1.9.0", + "@sentry/core": "8.36.0", + "@sentry/types": "8.36.0", + "@sentry/utils": "8.36.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/webpack-plugin": { - "version": "2.22.3", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.3.tgz", - "integrity": "sha512-Sq1S6bL3nuoTP5typkj+HPjQ13dqftIE8kACAq4tKkXOpWO9bf6HtqcruEQCxMekbWDTdljsrknQ17ZBx2q66Q==", - "license": "MIT", + "version": "2.22.6", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.6.tgz", + "integrity": "sha512-BiLhAzQYAz/9kCXKj2LeUKWf/9GBVn2dD0DeYK89s+sjDEaxjbcLBBiLlLrzT7eC9QVj2tUZRKOi6puCfc8ysw==", "dependencies": { - "@sentry/bundler-plugin-core": "2.22.3", + "@sentry/bundler-plugin-core": "2.22.6", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -8552,7 +8618,6 @@ "version": "2.15.26", "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8585,7 +8650,6 @@ "version": "8.6.1", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", - "license": "MIT", "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -8596,7 +8660,6 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", - "license": "MIT", "dependencies": { "@types/pg": "*" } @@ -8644,8 +8707,7 @@ "node_modules/@types/shimmer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", - "license": "MIT" + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -12470,7 +12532,6 @@ "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -15523,7 +15584,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } @@ -15873,7 +15933,6 @@ "version": "1.11.2", "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", - "license": "Apache-2.0", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -15882,10 +15941,9 @@ } }, "node_modules/import-in-the-middle/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "license": "MIT", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": { "acorn": "bin/acorn" }, @@ -15897,7 +15955,6 @@ "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -21503,8 +21560,7 @@ "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", - "license": "MIT" + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" }, "node_modules/mri": { "version": "1.2.0", @@ -22634,7 +22690,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "license": "ISC", "engines": { "node": ">=4.0.0" } @@ -22642,14 +22697,12 @@ "node_modules/pg-protocol": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", - "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", - "license": "MIT" + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" }, "node_modules/pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -23180,7 +23233,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -23189,7 +23241,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23198,7 +23249,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23207,7 +23257,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", "dependencies": { "xtend": "^4.0.0" }, @@ -23396,7 +23445,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -23461,8 +23509,7 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/psl": { "version": "1.9.0", @@ -25333,7 +25380,6 @@ "version": "7.4.0", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", - "license": "MIT", "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", @@ -25935,8 +25981,7 @@ "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", - "license": "BSD-2-Clause" + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, "node_modules/side-channel": { "version": "1.0.6", @@ -28765,7 +28810,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", "integrity": "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==", - "license": "MIT", "dependencies": { "acorn": "^8.8.1", "chokidar": "^3.5.3", @@ -28774,10 +28818,9 @@ } }, "node_modules/unplugin/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "license": "MIT", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": { "acorn": "bin/acorn" }, @@ -28788,8 +28831,7 @@ "node_modules/unplugin/node_modules/webpack-virtual-modules": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", - "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", - "license": "MIT" + "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==" }, "node_modules/update-browserslist-db": { "version": "1.1.1", @@ -28959,7 +29001,6 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } From 270a37a89f7bf033598b87ae07f92ff8080a5ab5 Mon Sep 17 00:00:00 2001 From: Michael Esteban Date: Thu, 7 Nov 2024 19:43:41 +1000 Subject: [PATCH 0117/1385] chore: Update dependabot lint group to include @eslint/* packages (#7183) chore: update dependabot lint group to include @eslint/* packages --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 034e03b176f8f..135a13bfe048d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -25,6 +25,7 @@ updates: - 'eslint' - 'typescript-eslint' - 'eslint-*' + - '@eslint/*' - 'stylelint' - 'stylelint-*' exclude-patterns: From edfa6fcce9a45e94b87e3c54c78c39ad6752de6a Mon Sep 17 00:00:00 2001 From: Caner Akdas Date: Thu, 7 Nov 2024 14:49:37 +0300 Subject: [PATCH 0118/1385] fix: Select component highlighted text color (#7196) --- apps/site/components/Common/Select/index.module.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/site/components/Common/Select/index.module.css b/apps/site/components/Common/Select/index.module.css index b669ea3239f66..346ee8ee1ef1d 100644 --- a/apps/site/components/Common/Select/index.module.css +++ b/apps/site/components/Common/Select/index.module.css @@ -86,7 +86,8 @@ data-[highlighted]:text-white data-[highlighted]:outline-none dark:text-neutral-200 - dark:data-[highlighted]:bg-green-600; + dark:data-[highlighted]:bg-green-600 + dark:data-[highlighted]:text-white; } .text > span { @@ -132,7 +133,8 @@ data-[highlighted]:text-neutral-900 dark:text-white dark:data-[highlighted]:bg-neutral-900 - dark:data-[disabled]:text-neutral-700; + dark:data-[disabled]:text-neutral-700 + dark:data-[highlighted]:text-white; } &.dropdown { From f5db266d5ce181ee5a65200bbdc03efed6317908 Mon Sep 17 00:00:00 2001 From: Shahan Arshad <68821506+sazk07@users.noreply.github.com> Date: Sat, 9 Nov 2024 06:11:52 +0500 Subject: [PATCH 0119/1385] Fix typo: Update anatomy-of-an-http-transaction.md (#7182) Fix typo on code block type. Signed-off-by: Shahan Arshad <68821506+sazk07@users.noreply.github.com> --- .../pages/en/learn/modules/anatomy-of-an-http-transaction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/learn/modules/anatomy-of-an-http-transaction.md b/apps/site/pages/en/learn/modules/anatomy-of-an-http-transaction.md index 614557282f403..687fa2a19c891 100644 --- a/apps/site/pages/en/learn/modules/anatomy-of-an-http-transaction.md +++ b/apps/site/pages/en/learn/modules/anatomy-of-an-http-transaction.md @@ -515,7 +515,7 @@ and message would be. As usual with errors, you should consult the On the response, we'll just log the error to `stderr`. -```js +```cjs const http = require('node:http'); http @@ -538,7 +538,7 @@ http .listen(8080); ``` -```js +```mjs import http from 'node:http'; http From 9ad96f47afc3fd9751dbe4bf94facb34fb63691a Mon Sep 17 00:00:00 2001 From: Thomas Chetwin Date: Sun, 10 Nov 2024 02:04:31 +0000 Subject: [PATCH 0120/1385] content(learn): Add TypeScript transform docs (#7202) Signed-off-by: tchetwin --- .../pages/en/learn/typescript/run-natively.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/site/pages/en/learn/typescript/run-natively.md b/apps/site/pages/en/learn/typescript/run-natively.md index 6a101ad176012..e16a1bf38c85b 100644 --- a/apps/site/pages/en/learn/typescript/run-natively.md +++ b/apps/site/pages/en/learn/typescript/run-natively.md @@ -12,24 +12,29 @@ In the previous articles, we learned how to run TypeScript code using transpilat ## Running TypeScript code with Node.js -Since V22.6.0, Node.js has experimental support for some TypeScript syntax. You can write code that's valid TypeScript directly in Node.js without the need to transpile it first. +Since V22.6.0, Node.js has experimental support for some TypeScript syntax via "type stripping". You can write code that's valid TypeScript directly in Node.js without the need to transpile it first. -So how do you run TypeScript code with Node.js? +The `--experimental-strip-types` flag tells Node.js to strip the type annotations from the TypeScript code before running it. ```bash node --experimental-strip-types example.ts ``` -The `--experimental-strip-types` flag tells Node.js to strip the type annotations from the TypeScript code before running it. - And that's it! You can now run TypeScript code directly in Node.js without the need to transpile it first, and use TypeScript to catch type-related errors. + +In V22.7.0 this experimental support was extended to transform TypeScript-only syntax, like `enum`s and `namespace`, with the addition of the `--experimental-transform-types` flag. + +```bash +node --experimental-strip-types --experimental-transform-types another-example.ts +``` + Future versions of Node.js will include support for TypeScript without the need for a command line flag. ## Limitations -At the time of writing, the experimental support for TypeScript in Node.js has some limitations. To allow TypeScript to run in node.js, our collaborators have chosen to only strip types from the code. +At the time of writing, the experimental support for TypeScript in Node.js has some limitations. -You can get more information on the [API docs](https://nodejs.org/docs/latest/api/typescript.html#unsupported-typescript-features) +You can get more information on the [API docs](https://nodejs.org/docs/latest/api/typescript.html#typescript-features). ## Important notes From 344da5bc268df2b2362beff72eac89f6ab376ab8 Mon Sep 17 00:00:00 2001 From: Jan Amann Date: Mon, 11 Nov 2024 17:38:53 +0100 Subject: [PATCH 0121/1385] chore: Upgrade `next-intl` to 3.24, migrate deprecated APIs (#7177) * chore: Upgrade next-intl to 3.24, migrate deprecated APIs * reduce changes * revert another change * fix: Read locale from params in layout * address review points --------- Co-authored-by: Claudio W --- apps/site/app/[locale]/[[...path]]/page.tsx | 6 +- apps/site/app/[locale]/layout.tsx | 11 +- apps/site/components/__mocks__/next-intl.mjs | 2 +- .../hooks/react-generic/useSiteNavigation.ts | 2 +- apps/site/i18n.tsx | 27 +++-- apps/site/navigation.mjs | 7 +- apps/site/package.json | 2 +- package-lock.json | 105 +++++++++--------- 8 files changed, 90 insertions(+), 72 deletions(-) diff --git a/apps/site/app/[locale]/[[...path]]/page.tsx b/apps/site/app/[locale]/[[...path]]/page.tsx index 14aff4e2d41b4..f847b487c9b7f 100644 --- a/apps/site/app/[locale]/[[...path]]/page.tsx +++ b/apps/site/app/[locale]/[[...path]]/page.tsx @@ -1,6 +1,6 @@ import { setContext, setTags } from '@sentry/nextjs'; import { notFound, redirect } from 'next/navigation'; -import { unstable_setRequestLocale } from 'next-intl/server'; +import { setRequestLocale } from 'next-intl/server'; import type { FC } from 'react'; import { setClientContext } from '@/client-context'; @@ -69,7 +69,7 @@ const getPage: FC = async ({ params }) => { if (!availableLocaleCodes.includes(locale)) { // Forces the current locale to be the Default Locale - unstable_setRequestLocale(defaultLocale.code); + setRequestLocale(defaultLocale.code); if (!allLocaleCodes.includes(locale)) { // when the locale is not listed in the locales, return NotFound @@ -82,7 +82,7 @@ const getPage: FC = async ({ params }) => { } // Configures the current Locale to be the given Locale of the Request - unstable_setRequestLocale(locale); + setRequestLocale(locale); // Gets the current full pathname for a given path const pathname = dynamicRouter.getPathname(path); diff --git a/apps/site/app/[locale]/layout.tsx b/apps/site/app/[locale]/layout.tsx index 87d0f28dd1801..6ab90c90b3f87 100644 --- a/apps/site/app/[locale]/layout.tsx +++ b/apps/site/app/[locale]/layout.tsx @@ -1,7 +1,6 @@ import { Analytics } from '@vercel/analytics/react'; import { SpeedInsights } from '@vercel/speed-insights/next'; import classNames from 'classnames'; -import { getLocale } from 'next-intl/server'; import type { FC, PropsWithChildren } from 'react'; import BaseLayout from '@/layouts/Base'; @@ -15,8 +14,14 @@ import '@/styles/index.css'; const fontClasses = classNames(IBM_PLEX_MONO.variable, OPEN_SANS.variable); -const RootLayout: FC = async ({ children }) => { - const locale = await getLocale(); +const RootLayout: FC< + PropsWithChildren<{ + params: Promise<{ + locale: string; + }>; + }> +> = async ({ children, params }) => { + const { locale } = await params; const { langDir, hrefLang } = availableLocalesMap[locale] || defaultLocale; diff --git a/apps/site/components/__mocks__/next-intl.mjs b/apps/site/components/__mocks__/next-intl.mjs index a84400384381c..04af07d5abbac 100644 --- a/apps/site/components/__mocks__/next-intl.mjs +++ b/apps/site/components/__mocks__/next-intl.mjs @@ -27,7 +27,7 @@ export const useFormatter = () => { export const NextIntlClientProvider = ({ children }) => children; -export const createSharedPathnamesNavigation = () => ({ +export const createNavigation = () => ({ Link: Link, redirect: redirect, usePathname: usePathname, diff --git a/apps/site/hooks/react-generic/useSiteNavigation.ts b/apps/site/hooks/react-generic/useSiteNavigation.ts index 83b5403a4a883..4b11af46f0dd2 100644 --- a/apps/site/hooks/react-generic/useSiteNavigation.ts +++ b/apps/site/hooks/react-generic/useSiteNavigation.ts @@ -39,7 +39,7 @@ const useSiteNavigation = () => { const mapNavigationEntries = (entries: Navigation, context: Context = {}) => { const getFormattedMessage = (label: string, key: string) => - t.rich(label, context[key] || {}); + t.rich(label, context[key] || {}) as FormattedMessage; return Object.entries(entries).map( ([key, { label, link, items, target }]): [ diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index efed3f4d9c6fd..88cd1cf3e9341 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -1,7 +1,7 @@ import { importLocale } from '@node-core/website-i18n'; import { getRequestConfig } from 'next-intl/server'; -import { availableLocaleCodes } from '@/next.locales.mjs'; +import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; import deepMerge from './util/deepMerge'; @@ -13,7 +13,7 @@ const loadLocaleDictionary = async (locale: string) => { '@node-core/website-i18n/locales/en.json' ).then(f => f.default); - if (locale === 'en') { + if (locale === defaultLocale.code) { return defaultMessages; } @@ -30,9 +30,20 @@ const loadLocaleDictionary = async (locale: string) => { }; // Provides `next-intl` configuration for RSC/SSR -export default getRequestConfig(async ({ locale }) => ({ - // This is the dictionary of messages to be loaded - messages: await loadLocaleDictionary(locale), - // We always define the App timezone as UTC - timeZone: 'Etc/UTC', -})); +export default getRequestConfig(async ({ requestLocale }) => { + // This typically corresponds to the `[locale]` segment + let locale = await requestLocale; + + // Ensure that the incoming locale is valid + if (!locale || !availableLocaleCodes.includes(locale)) { + locale = defaultLocale.code; + } + + return { + locale, + // This is the dictionary of messages to be loaded + messages: await loadLocaleDictionary(locale), + // We always define the App timezone as UTC + timeZone: 'Etc/UTC', + }; +}); diff --git a/apps/site/navigation.mjs b/apps/site/navigation.mjs index edff2d9a0c197..b551ea2bcc390 100644 --- a/apps/site/navigation.mjs +++ b/apps/site/navigation.mjs @@ -1,8 +1,9 @@ 'use strict'; -import { createSharedPathnamesNavigation } from 'next-intl/navigation'; +import { createNavigation } from 'next-intl/navigation'; import { availableLocaleCodes } from './next.locales.mjs'; -export const { Link, redirect, usePathname, useRouter } = - createSharedPathnamesNavigation({ locales: availableLocaleCodes }); +export const { Link, redirect, usePathname, useRouter } = createNavigation({ + locales: availableLocaleCodes, +}); diff --git a/apps/site/package.json b/apps/site/package.json index 06ddf031da8df..5d59740ae6221 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -68,7 +68,7 @@ "glob": "~11.0.0", "gray-matter": "~4.0.3", "next": "~14.2.14", - "next-intl": "~3.21.1", + "next-intl": "~3.24.0", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", diff --git a/package-lock.json b/package-lock.json index b79be4f9d634b..22977e34ec1fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,7 +66,7 @@ "glob": "~11.0.0", "gray-matter": "~4.0.3", "next": "~14.2.14", - "next-intl": "~3.21.1", + "next-intl": "~3.24.0", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", @@ -3031,53 +3031,48 @@ "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.0.tgz", - "integrity": "sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==", - "license": "MIT", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.3.tgz", + "integrity": "sha512-aElGmleuReGnk2wtYOzYFmNWYoiWWmf1pPPCYg0oiIQSJj0mjc4eUfzUXaSOJ4S8WzI/cLqnCTWjqz904FT2OQ==", "dependencies": { - "@formatjs/fast-memoize": "2.2.1", - "@formatjs/intl-localematcher": "0.5.5", - "tslib": "^2.7.0" + "@formatjs/fast-memoize": "2.2.3", + "@formatjs/intl-localematcher": "0.5.7", + "tslib": "2" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.1.tgz", - "integrity": "sha512-XS2RcOSyWxmUB7BUjj3mlPH0exsUzlf6QfhhijgI941WaJhVxXQ6mEWkdUFIdnKi3TuTYxRdelsgv3mjieIGIA==", - "license": "MIT", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz", + "integrity": "sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==", "dependencies": { - "tslib": "^2.7.0" + "tslib": "2" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.8.0.tgz", - "integrity": "sha512-r2un3fmF9oJv3mOkH+wwQZ037VpqmdfahbcCZ9Lh+p6Sx+sNsonI7Zcr6jNMm1s+Si7ejQORS4Ezlh05mMPAXA==", - "license": "MIT", + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.3.tgz", + "integrity": "sha512-9L99QsH14XjOCIp4TmbT8wxuffJxGK8uLNO1zNhLtcZaVXvv626N0s4A2qgRCKG3dfYWx9psvGlFmvyVBa6u/w==", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.0", - "@formatjs/icu-skeleton-parser": "1.8.4", - "tslib": "^2.7.0" + "@formatjs/ecma402-abstract": "2.2.3", + "@formatjs/icu-skeleton-parser": "1.8.7", + "tslib": "2" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.4.tgz", - "integrity": "sha512-LMQ1+Wk1QSzU4zpd5aSu7+w5oeYhupRwZnMQckLPRYhSjf2/8JWQ882BauY9NyHxs5igpuQIXZDgfkaH3PoATg==", - "license": "MIT", + "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==", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.0", - "tslib": "^2.7.0" + "@formatjs/ecma402-abstract": "2.2.3", + "tslib": "2" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.5.tgz", - "integrity": "sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==", - "license": "MIT", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.7.tgz", + "integrity": "sha512-GGFtfHGQVFe/niOZp24Kal5b2i36eE2bNL0xi9Sg/yd0TR8aLjcteApZdHmismP5QQax1cMnZM9yWySUUjJteA==", "dependencies": { - "tslib": "^2.7.0" + "tslib": "2" } }, "node_modules/@heroicons/react": { @@ -16165,15 +16160,14 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.1.tgz", - "integrity": "sha512-xQuJW2WcyzNJZWUu5xTVPOmNSA1Sowuu/NKFdUid5Fxx/Yl6/s4DefTU/y7zy+irZLDmFGmTLtnM8FqpN05wlA==", - "license": "BSD-3-Clause", + "version": "10.7.5", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.5.tgz", + "integrity": "sha512-CflbRvJiahVmnfxq/lO+DCM1/8ji4vC4rTnz6ZJEKKodViB+EWgY9M4EqXVRQ+3K0Ng5qwSyqybPP+KSfS4KZw==", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.0", - "@formatjs/fast-memoize": "2.2.1", - "@formatjs/icu-messageformat-parser": "2.8.0", - "tslib": "^2.7.0" + "@formatjs/ecma402-abstract": "2.2.3", + "@formatjs/fast-memoize": "2.2.3", + "@formatjs/icu-messageformat-parser": "2.9.3", + "tslib": "2" } }, "node_modules/invariant": { @@ -21625,6 +21619,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -21687,24 +21682,31 @@ } }, "node_modules/next-intl": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.21.1.tgz", - "integrity": "sha512-hQm4Wgq5i1lfOHAWmXBVl5d2/XAeddcjsrUmjotXEESzPSvW5j2t0Pr8AV8WorTILgqU748aXuenBhz5P78tdw==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.24.0.tgz", + "integrity": "sha512-48X68QsI92grir2dH1W15yhyVnEjW4c9qmwNt+du+k6mI1QtlE6GyANWHoL4/leTixHv8knZ1y9B/Ys06gmKLg==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/amannn" } ], - "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", - "negotiator": "^0.6.3", - "use-intl": "^3.21.1" + "negotiator": "^1.0.0", + "use-intl": "^3.24.0" }, "peerDependencies": { - "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" + } + }, + "node_modules/next-intl/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" } }, "node_modules/next-themes": { @@ -28926,16 +28928,15 @@ } }, "node_modules/use-intl": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.22.0.tgz", - "integrity": "sha512-SoiPcyLJODhenrbDkcYJuOImgrBFN7Z8keLSHe7ffsNkIJtjdjet/RmqAv5Ym9TVxPpCs+fH2cl1J3YzFJSkWw==", - "license": "MIT", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.24.0.tgz", + "integrity": "sha512-lmrARod7yjMYehbyY9xBLjjgnlNcJsl1UAltAPlgspRG7RH6H0JYaGo4C3PZW/BTy0Dgmcvcl8rH/VemzGIhgQ==", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "intl-messageformat": "^10.5.14" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" } }, "node_modules/use-sidecar": { From 2db91dc9c342f92ab10b0548c8d651de1917e3a6 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Mon, 11 Nov 2024 21:51:00 +0000 Subject: [PATCH 0122/1385] Blog: v23.2.0 release post (#7213) Refs: https://github.com/nodejs/node/pull/55741 --- apps/site/pages/en/blog/release/v23.2.0.md | 202 +++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.2.0.md diff --git a/apps/site/pages/en/blog/release/v23.2.0.md b/apps/site/pages/en/blog/release/v23.2.0.md new file mode 100644 index 0000000000000..e8d8c6bbda78f --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.2.0.md @@ -0,0 +1,202 @@ +--- +date: '2024-11-11T21:24:21.692Z' +category: release +title: Node v23.2.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2024-11-11, Version 23.2.0 (Current), @aduh95 + +### Notable Changes + +#### 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 + +#### Other notable changes + +- \[[`fa61dced44`](https://github.com/nodejs/node/commit/fa61dced44)] - **doc**: move typescript support to active development (Marco Ippolito) [#55536](https://github.com/nodejs/node/pull/55536) +- \[[`9dcca5441b`](https://github.com/nodejs/node/commit/9dcca5441b)] - **doc**: add jazelly to collaborators (Jason Zhang) [#55531](https://github.com/nodejs/node/pull/55531) +- \[[`f628fc43cb`](https://github.com/nodejs/node/commit/f628fc43cb)] - **(SEMVER-MINOR)** **fs**: make `dirent.path` writable (Antoine du Hamel) [#55547](https://github.com/nodejs/node/pull/55547) +- \[[`25b1422337`](https://github.com/nodejs/node/commit/25b1422337)] - **(SEMVER-MINOR)** **http**: add diagnostic channel `http.client.request.created` (Marco Ippolito) [#55586](https://github.com/nodejs/node/pull/55586) +- \[[`adda37f00c`](https://github.com/nodejs/node/commit/adda37f00c)] - **(SEMVER-MINOR)** **module**: add `findPackageJSON` util (Jacob Smith) [#55412](https://github.com/nodejs/node/pull/55412) +- \[[`69dd1e13c3`](https://github.com/nodejs/node/commit/69dd1e13c3)] - **(SEMVER-MINOR)** **module**: add `module.stripTypeScriptTypes` (Marco Ippolito) [#55282](https://github.com/nodejs/node/pull/55282) + +### Commits + +- \[[`9dbb255efb`](https://github.com/nodejs/node/commit/9dbb255efb)] - **assert**: fix `deepStrictEqual` on errors when `cause` is not undefined (Edigleysson Silva (Edy)) [#55406](https://github.com/nodejs/node/pull/55406) +- \[[`7af76ef0b3`](https://github.com/nodejs/node/commit/7af76ef0b3)] - **assert**: fix the string length check for printing the simple diff (Giovanni Bucci) [#55474](https://github.com/nodejs/node/pull/55474) +- \[[`34483a299b`](https://github.com/nodejs/node/commit/34483a299b)] - **benchmark**: add nodeTiming.uvmetricsinfo bench (RafaelGSS) [#55614](https://github.com/nodejs/node/pull/55614) +- \[[`b79e4835ab`](https://github.com/nodejs/node/commit/b79e4835ab)] - **build**: use rclone instead of aws CLI (Michaël Zasso) [#55617](https://github.com/nodejs/node/pull/55617) +- \[[`7ab1f46b8a`](https://github.com/nodejs/node/commit/7ab1f46b8a)] - **build**: stop pre-compiling `lint-md` (Aviv Keller) [#55266](https://github.com/nodejs/node/pull/55266) +- \[[`4887214e23`](https://github.com/nodejs/node/commit/4887214e23)] - **build**: fix building with system icu 76 (Michael Cho) [#55563](https://github.com/nodejs/node/pull/55563) +- \[[`f8df27aa5a`](https://github.com/nodejs/node/commit/f8df27aa5a)] - **build**: fix GN arg used in generate_config_gypi.py (Shelley Vohr) [#55530](https://github.com/nodejs/node/pull/55530) +- \[[`bb78904548`](https://github.com/nodejs/node/commit/bb78904548)] - **build**: fix GN build for sqlite and nghttp2 (Shelley Vohr) [#55529](https://github.com/nodejs/node/pull/55529) +- \[[`535f1b0d4c`](https://github.com/nodejs/node/commit/535f1b0d4c)] - **crypto**: update root certificates to NSS 3.104 (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681) +- \[[`9b351b0749`](https://github.com/nodejs/node/commit/9b351b0749)] - **crypto**: fix `RSA_PKCS1_PADDING` error message (Richard Lau) [#55629](https://github.com/nodejs/node/pull/55629) +- \[[`4b192daac0`](https://github.com/nodejs/node/commit/4b192daac0)] - **deps**: update acorn to 8.14.0 (Node.js GitHub Bot) [#55699](https://github.com/nodejs/node/pull/55699) +- \[[`dfb764cbc6`](https://github.com/nodejs/node/commit/dfb764cbc6)] - **deps**: update sqlite to 3.47.0 (Node.js GitHub Bot) [#55557](https://github.com/nodejs/node/pull/55557) +- \[[`3477492588`](https://github.com/nodejs/node/commit/3477492588)] - **deps**: update amaro to 0.2.0 (Node.js GitHub Bot) [#55601](https://github.com/nodejs/node/pull/55601) +- \[[`3a1d490535`](https://github.com/nodejs/node/commit/3a1d490535)] - **deps**: update nghttp2 to 1.64.0 (Node.js GitHub Bot) [#55559](https://github.com/nodejs/node/pull/55559) +- \[[`50552fdc92`](https://github.com/nodejs/node/commit/50552fdc92)] - **deps**: update acorn to 8.13.0 (Node.js GitHub Bot) [#55558](https://github.com/nodejs/node/pull/55558) +- \[[`1b82013f06`](https://github.com/nodejs/node/commit/1b82013f06)] - **deps**: update undici to 6.20.1 (Node.js GitHub Bot) [#55503](https://github.com/nodejs/node/pull/55503) +- \[[`09060045b1`](https://github.com/nodejs/node/commit/09060045b1)] - **dns**: stop using deprecated `ares_query` (Aviv Keller) [#55430](https://github.com/nodejs/node/pull/55430) +- \[[`2d0914f337`](https://github.com/nodejs/node/commit/2d0914f337)] - **doc**: consolidate history table of `CustomEvent` (Edigleysson Silva) [#55758](https://github.com/nodejs/node/pull/55758) +- \[[`cbe09b579f`](https://github.com/nodejs/node/commit/cbe09b579f)] - **doc**: add path aliases typescript doc (Carlos Espa) [#55766](https://github.com/nodejs/node/pull/55766) +- \[[`89aa83842a`](https://github.com/nodejs/node/commit/89aa83842a)] - **doc**: add esm example in `path.md` (Aviv Keller) [#55745](https://github.com/nodejs/node/pull/55745) +- \[[`ee12431298`](https://github.com/nodejs/node/commit/ee12431298)] - **doc**: consistent use of word child process (Gireesh Punathil) [#55654](https://github.com/nodejs/node/pull/55654) +- \[[`20cb52d1d8`](https://github.com/nodejs/node/commit/20cb52d1d8)] - **doc**: clarity to available addon options (Preveen P) [#55715](https://github.com/nodejs/node/pull/55715) +- \[[`bffbaa13a2`](https://github.com/nodejs/node/commit/bffbaa13a2)] - **doc**: update `--max-semi-space-size` description (Joe Bowbeer) [#55495](https://github.com/nodejs/node/pull/55495) +- \[[`505ff199b6`](https://github.com/nodejs/node/commit/505ff199b6)] - **doc**: broken `PerformanceObserver` code sample (Dom Harrington) [#54227](https://github.com/nodejs/node/pull/54227) +- \[[`b8ca9d89f4`](https://github.com/nodejs/node/commit/b8ca9d89f4)] - **doc**: add write flag when open file as the demo code's intention (robberfree) [#54626](https://github.com/nodejs/node/pull/54626) +- \[[`6662752b62`](https://github.com/nodejs/node/commit/6662752b62)] - **doc**: add a note on console stream behavior (Gireesh Punathil) [#55616](https://github.com/nodejs/node/pull/55616) +- \[[`9743fa44ed`](https://github.com/nodejs/node/commit/9743fa44ed)] - **doc**: remove mention of ECDH-ES in crypto.diffieHellman (Filip Skokan) [#55611](https://github.com/nodejs/node/pull/55611) +- \[[`5de2567644`](https://github.com/nodejs/node/commit/5de2567644)] - **doc**: improve c++ embedder API doc (Gireesh Punathil) [#55597](https://github.com/nodejs/node/pull/55597) +- \[[`f355054ec7`](https://github.com/nodejs/node/commit/f355054ec7)] - **doc**: capitalize "MIT License" (Aviv Keller) [#55575](https://github.com/nodejs/node/pull/55575) +- \[[`fa61dced44`](https://github.com/nodejs/node/commit/fa61dced44)] - **doc**: move typescript support to active development (Marco Ippolito) [#55536](https://github.com/nodejs/node/pull/55536) +- \[[`f77bf65059`](https://github.com/nodejs/node/commit/f77bf65059)] - **doc**: add suggested tsconfig for type stripping (Marco Ippolito) [#55534](https://github.com/nodejs/node/pull/55534) +- \[[`f00ad27132`](https://github.com/nodejs/node/commit/f00ad27132)] - **doc**: add esm examples to node:string_decoder (Alfredo González) [#55507](https://github.com/nodejs/node/pull/55507) +- \[[`9dcca5441b`](https://github.com/nodejs/node/commit/9dcca5441b)] - **doc**: add jazelly to collaborators (Jason Zhang) [#55531](https://github.com/nodejs/node/pull/55531) +- \[[`f628fc43cb`](https://github.com/nodejs/node/commit/f628fc43cb)] - **(SEMVER-MINOR)** **fs**: make `dirent.path` writable (Antoine du Hamel) [#55547](https://github.com/nodejs/node/pull/55547) +- \[[`dd9b6833c7`](https://github.com/nodejs/node/commit/dd9b6833c7)] - _**Revert**_ "**fs,win**: fix bug in paths with trailing slashes" (Rod Vagg) [#55527](https://github.com/nodejs/node/pull/55527) +- \[[`8d0526f1f4`](https://github.com/nodejs/node/commit/8d0526f1f4)] - **http**: add diagnostic channel `http.server.response.created` (Marco Ippolito) [#55622](https://github.com/nodejs/node/pull/55622) +- \[[`25b1422337`](https://github.com/nodejs/node/commit/25b1422337)] - **(SEMVER-MINOR)** **http**: add diagnostic channel `http.client.request.created` (Marco Ippolito) [#55586](https://github.com/nodejs/node/pull/55586) +- \[[`f92f20b930`](https://github.com/nodejs/node/commit/f92f20b930)] - **http**: don't emit error after destroy (Robert Nagy) [#55457](https://github.com/nodejs/node/pull/55457) +- \[[`137aa5c9f6`](https://github.com/nodejs/node/commit/137aa5c9f6)] - **http2**: fix client async storage persistence (Orgad Shaneh) [#55460](https://github.com/nodejs/node/pull/55460) +- \[[`d1965f9f5b`](https://github.com/nodejs/node/commit/d1965f9f5b)] - **lib**: implement webidl dictionary converter and use it in structuredClone (Jason Zhang) [#55489](https://github.com/nodejs/node/pull/55489) +- \[[`bf552fa3cc`](https://github.com/nodejs/node/commit/bf552fa3cc)] - **lib**: prefer number to string in webidl `type` function (Jason Zhang) [#55489](https://github.com/nodejs/node/pull/55489) +- \[[`7bfd295416`](https://github.com/nodejs/node/commit/7bfd295416)] - **meta**: bump actions/setup-python from 5.2.0 to 5.3.0 (dependabot\[bot]) [#55688](https://github.com/nodejs/node/pull/55688) +- \[[`21e3b7b2f4`](https://github.com/nodejs/node/commit/21e3b7b2f4)] - **meta**: bump actions/setup-node from 4.0.4 to 4.1.0 (dependabot\[bot]) [#55687](https://github.com/nodejs/node/pull/55687) +- \[[`2ae8d3b2ff`](https://github.com/nodejs/node/commit/2ae8d3b2ff)] - **meta**: bump rtCamp/action-slack-notify from 2.3.0 to 2.3.2 (dependabot\[bot]) [#55686](https://github.com/nodejs/node/pull/55686) +- \[[`42e6c47086`](https://github.com/nodejs/node/commit/42e6c47086)] - **meta**: bump actions/upload-artifact from 4.4.0 to 4.4.3 (dependabot\[bot]) [#55685](https://github.com/nodejs/node/pull/55685) +- \[[`9042e9acc9`](https://github.com/nodejs/node/commit/9042e9acc9)] - **meta**: bump actions/cache from 4.0.2 to 4.1.2 (dependabot\[bot]) [#55684](https://github.com/nodejs/node/pull/55684) +- \[[`5c2e4729cc`](https://github.com/nodejs/node/commit/5c2e4729cc)] - **meta**: bump actions/checkout from 4.2.0 to 4.2.2 (dependabot\[bot]) [#55683](https://github.com/nodejs/node/pull/55683) +- \[[`d79c8bf7a1`](https://github.com/nodejs/node/commit/d79c8bf7a1)] - **meta**: bump github/codeql-action from 3.26.10 to 3.27.0 (dependabot\[bot]) [#55682](https://github.com/nodejs/node/pull/55682) +- \[[`d0ea9815f6`](https://github.com/nodejs/node/commit/d0ea9815f6)] - **meta**: make review-wanted message minimal (Aviv Keller) [#55607](https://github.com/nodejs/node/pull/55607) +- \[[`b1ca7ab0a1`](https://github.com/nodejs/node/commit/b1ca7ab0a1)] - **meta**: show PR/issue title on review-wanted (Aviv Keller) [#55606](https://github.com/nodejs/node/pull/55606) +- \[[`19b1edfc5c`](https://github.com/nodejs/node/commit/19b1edfc5c)] - **module**: simplify --inspect-brk handling (Joyee Cheung) [#55679](https://github.com/nodejs/node/pull/55679) +- \[[`869e88c6a8`](https://github.com/nodejs/node/commit/869e88c6a8)] - **module**: simplify `findPackageJSON` implementation (Antoine du Hamel) [#55543](https://github.com/nodejs/node/pull/55543) +- \[[`56c46ab686`](https://github.com/nodejs/node/commit/56c46ab686)] - **module**: unify TypeScript and .mjs handling in CommonJS (Joyee Cheung) [#55590](https://github.com/nodejs/node/pull/55590) +- \[[`d3be3da6f8`](https://github.com/nodejs/node/commit/d3be3da6f8)] - **module**: fix error thrown from require(esm) hitting TLA repeatedly (Joyee Cheung) [#55520](https://github.com/nodejs/node/pull/55520) +- \[[`b3971bbf13`](https://github.com/nodejs/node/commit/b3971bbf13)] - **module**: trim off internal stack frames for require(esm) warnings (Joyee Cheung) [#55496](https://github.com/nodejs/node/pull/55496) +- \[[`a9e08cfe6d`](https://github.com/nodejs/node/commit/a9e08cfe6d)] - **module**: allow ESM that failed to be required to be re-imported (Joyee Cheung) [#55502](https://github.com/nodejs/node/pull/55502) +- \[[`adda37f00c`](https://github.com/nodejs/node/commit/adda37f00c)] - **(SEMVER-MINOR)** **module**: add `findPackageJSON` util (Jacob Smith) [#55412](https://github.com/nodejs/node/pull/55412) +- \[[`69dd1e13c3`](https://github.com/nodejs/node/commit/69dd1e13c3)] - **(SEMVER-MINOR)** **module**: add module.stripTypeScriptTypes (Marco Ippolito) [#55282](https://github.com/nodejs/node/pull/55282) +- \[[`6ab59c81b6`](https://github.com/nodejs/node/commit/6ab59c81b6)] - **os**: improve path check with direct index access (Mert Can Altin) [#55434](https://github.com/nodejs/node/pull/55434) +- \[[`038ac01d26`](https://github.com/nodejs/node/commit/038ac01d26)] - **path,win**: fix bug in resolve and normalize (Hüseyin Açacak) [#55623](https://github.com/nodejs/node/pull/55623) +- \[[`7aa250afda`](https://github.com/nodejs/node/commit/7aa250afda)] - **sqlite**: improve error handling using MaybeLocal (Tobias Nießen) [#55571](https://github.com/nodejs/node/pull/55571) +- \[[`2ec4ae7c16`](https://github.com/nodejs/node/commit/2ec4ae7c16)] - **sqlite**: add readOnly option (Tobias Nießen) [#55567](https://github.com/nodejs/node/pull/55567) +- \[[`88c7f5b489`](https://github.com/nodejs/node/commit/88c7f5b489)] - **sqlite**: refactor open options (Tobias Nießen) [#55442](https://github.com/nodejs/node/pull/55442) +- \[[`7853462a61`](https://github.com/nodejs/node/commit/7853462a61)] - **src**: provide workaround for container-overflow (Daniel Lemire) [#55591](https://github.com/nodejs/node/pull/55591) +- \[[`0302efe4b2`](https://github.com/nodejs/node/commit/0302efe4b2)] - **src**: move more key related stuff to ncrypto (James M Snell) [#55368](https://github.com/nodejs/node/pull/55368) +- \[[`d26dedf41d`](https://github.com/nodejs/node/commit/d26dedf41d)] - **src**: refactor ECDHBitsJob signature (Filip Skokan) [#55610](https://github.com/nodejs/node/pull/55610) +- \[[`4c34891454`](https://github.com/nodejs/node/commit/4c34891454)] - **src**: fix dns crash when failed to create NodeAresTask (theanarkh) [#55521](https://github.com/nodejs/node/pull/55521) +- \[[`467618418a`](https://github.com/nodejs/node/commit/467618418a)] - **src**: use NewFromUtf8Literal in NODE_DEFINE_CONSTANT (Charles Kerr) [#55581](https://github.com/nodejs/node/pull/55581) +- \[[`016baaebbe`](https://github.com/nodejs/node/commit/016baaebbe)] - **src**: do not run IsWindowsBatchFile on non-windows (Yagiz Nizipli) [#55560](https://github.com/nodejs/node/pull/55560) +- \[[`efa142c108`](https://github.com/nodejs/node/commit/efa142c108)] - **src**: migrate `String::Value` to `String::ValueView` (Aviv Keller) [#55458](https://github.com/nodejs/node/pull/55458) +- \[[`cfa4d960c8`](https://github.com/nodejs/node/commit/cfa4d960c8)] - **src,lib**: optimize nodeTiming.uvMetricsInfo (RafaelGSS) [#55614](https://github.com/nodejs/node/pull/55614) +- \[[`19da4de475`](https://github.com/nodejs/node/commit/19da4de475)] - **test**: update `performance-timeline` wpt (RedYetiDev) [#55197](https://github.com/nodejs/node/pull/55197) +- \[[`10b68ed975`](https://github.com/nodejs/node/commit/10b68ed975)] - **test**: ignore unrelated events in FW watch tests (Carlos Espa) [#55605](https://github.com/nodejs/node/pull/55605) +- \[[`7d93c0c3ae`](https://github.com/nodejs/node/commit/7d93c0c3ae)] - **test**: refactor some esm tests (Antoine du Hamel) [#55472](https://github.com/nodejs/node/pull/55472) +- \[[`815e2524a6`](https://github.com/nodejs/node/commit/815e2524a6)] - **test**: split up test-runner-mock-timers test (Julian Gassner) [#55506](https://github.com/nodejs/node/pull/55506) +- \[[`6aa797de4e`](https://github.com/nodejs/node/commit/6aa797de4e)] - **test**: remove unneeded listeners (Luigi Pinca) [#55486](https://github.com/nodejs/node/pull/55486) +- \[[`649d767a40`](https://github.com/nodejs/node/commit/649d767a40)] - **test**: increase coverage of `pathToFileURL` (Antoine du Hamel) [#55493](https://github.com/nodejs/node/pull/55493) +- \[[`71cc20a3a5`](https://github.com/nodejs/node/commit/71cc20a3a5)] - **test**: avoid `apply()` calls with large amount of elements (Livia Medeiros) [#55501](https://github.com/nodejs/node/pull/55501) +- \[[`2d19614020`](https://github.com/nodejs/node/commit/2d19614020)] - **test**: increase test coverage for `http.OutgoingMessage.appendHeader()` (Juan José) [#55467](https://github.com/nodejs/node/pull/55467) +- \[[`aebf676569`](https://github.com/nodejs/node/commit/aebf676569)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55703](https://github.com/nodejs/node/pull/55703) +- \[[`53a7d8e75b`](https://github.com/nodejs/node/commit/53a7d8e75b)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55512](https://github.com/nodejs/node/pull/55512) +- \[[`0ea74f3d02`](https://github.com/nodejs/node/commit/0ea74f3d02)] - **test,crypto**: make crypto tests work with BoringSSL (Shelley Vohr) [#55491](https://github.com/nodejs/node/pull/55491) +- \[[`3234dc6100`](https://github.com/nodejs/node/commit/3234dc6100)] - **test_runner**: pass `options` directly to `TestCoverage` (Aviv Keller) [#55578](https://github.com/nodejs/node/pull/55578) +- \[[`15028dd073`](https://github.com/nodejs/node/commit/15028dd073)] - **tools**: update ESLint to 9.14.0 (dependabot\[bot]) [#55689](https://github.com/nodejs/node/pull/55689) +- \[[`961cbc9c0f`](https://github.com/nodejs/node/commit/961cbc9c0f)] - **tools**: use `util.parseArgs` in `lint-md` (Aviv Keller) [#55694](https://github.com/nodejs/node/pull/55694) +- \[[`8fc962f1af`](https://github.com/nodejs/node/commit/8fc962f1af)] - **tools**: fix root certificate updater (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681) +- \[[`d0b2d6be84`](https://github.com/nodejs/node/commit/d0b2d6be84)] - **tools**: compact jq output in daily-wpt-fyi.yml action (Filip Skokan) [#55695](https://github.com/nodejs/node/pull/55695) +- \[[`cba05cda38`](https://github.com/nodejs/node/commit/cba05cda38)] - **tools**: run daily WPT.fyi report on all supported releases (Filip Skokan) [#55619](https://github.com/nodejs/node/pull/55619) +- \[[`7ce7eab324`](https://github.com/nodejs/node/commit/7ce7eab324)] - **tools**: lint README lists more strictly (Antoine du Hamel) [#55625](https://github.com/nodejs/node/pull/55625) +- \[[`c2fcda45ca`](https://github.com/nodejs/node/commit/c2fcda45ca)] - **typings**: fix `ModulesBinding` types (Antoine du Hamel) [#55549](https://github.com/nodejs/node/pull/55549) +- \[[`2b9928561d`](https://github.com/nodejs/node/commit/2b9928561d)] - **url**: refactor `pathToFileURL` to native (Antoine du Hamel) [#55476](https://github.com/nodejs/node/pull/55476) +- \[[`4129bc72e2`](https://github.com/nodejs/node/commit/4129bc72e2)] - **util**: do not catch on circular `@@toStringTag` errors (Aviv Keller) [#55544](https://github.com/nodejs/node/pull/55544) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.2.0/node-v23.2.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.2.0/node-v23.2.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.2.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.2.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.2.0/node-v23.2.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.2.0/node-v23.2.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.2.0/node-v23.2.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.2.0/node-v23.2.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.2.0/node-v23.2.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.2.0/node-v23.2.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.2.0/node-v23.2.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.2.0/node-v23.2.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.2.0/node-v23.2.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.2.0/node-v23.2.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.2.0/ \ +Documentation: https://nodejs.org/docs/v23.2.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +43e0c6a6ef0c123e33a9af2f055516c4170a58e26b473fff273c8bdbf0518c6b node-v23.2.0-aix-ppc64.tar.gz +ce70e41b0c12935864980b025f7de1b2a465c154e9cf92c0b9c2957e095a6ccd node-v23.2.0-arm64.msi +0a4c1379f81b02cb724b7f69b7e2fdf8a4765d98710ae8e05c4ee2da85a54f94 node-v23.2.0-darwin-arm64.tar.gz +95b51f1f70cddf5b0b4c1386edf1c788837b216ab7770cad89ac51963946d698 node-v23.2.0-darwin-arm64.tar.xz +5d5c8150b5b8dd31930f029535ccee06b259c2d75db8c78f7f33a7fa8b8152a7 node-v23.2.0-darwin-x64.tar.gz +b7eafd1152a4a263216eb8ef66ef4c4c8f76ab79e8d2718983c0426250496ac2 node-v23.2.0-darwin-x64.tar.xz +deee32988406bcd0fc6800a5863644f5d053e5ec663309a7a5fc148e00bafc04 node-v23.2.0-headers.tar.gz +9a9eb725dd42f020d4ed256be69689a4bffab0299e7b5b0a45994719d9d22163 node-v23.2.0-headers.tar.xz +987045f6b23dc9c6514ecae89bc5d116851992812698558d9641fd9bc34645ff node-v23.2.0-linux-arm64.tar.gz +f0bd2891886445447f4d69078e48916b4f631bc76ae05695ec8b225e5cb7217a node-v23.2.0-linux-arm64.tar.xz +9fb13ca5c47d30cfc67d51d6d38315f31c63a11653d0b08418ba61e09549024f node-v23.2.0-linux-armv7l.tar.gz +0bd30ec2b5dab4bcdd555b50295fc0a549f10c88743b5ce3a4a1dc2527bc5e9b node-v23.2.0-linux-armv7l.tar.xz +eafde03bccadf18e848f327a1d4766f935e3c1df05c5bb88fd20a3574d68ea1c node-v23.2.0-linux-ppc64le.tar.gz +2f875cec3661bb464ec4d1718bacce36d29b99ba86f7bad50617d88d596d5321 node-v23.2.0-linux-ppc64le.tar.xz +d9f602acfacdfad261062a1e5fac90aa29e82da0221cb809af24041e5d7e3b8c node-v23.2.0-linux-s390x.tar.gz +7b7f79f934d4ac4e00e8b421159ee3c83be6c5f28b6ee9f0c753a85f8fa0df43 node-v23.2.0-linux-s390x.tar.xz +b88f5d5b6f9a17818a85b7afbf325700434fc8755cec105c7709c6fd363b17ca node-v23.2.0-linux-x64.tar.gz +acafc5dd2254534b93f7c661948e3f5c49707fbd7d87f2c23e2be7be46c69bb0 node-v23.2.0-linux-x64.tar.xz +d15c79d34460104f9666f6da8a0b9fd3a223670b17bad90fb40d0d61764f9b6d node-v23.2.0-win-arm64.7z +e6977b48b5f39ea91c83bec0d21c60c476b214bd1e2276f1bf0d81b18d08b7bd node-v23.2.0-win-arm64.zip +72bd48c3b115d081be360e8fff0e9c377eaf51980e4b152198583ae0adcbc767 node-v23.2.0-win-x64.7z +67e037253c7550db9adad9647e9b330d0d75ec2685c0eecbe8aec7abe6921183 node-v23.2.0-win-x64.zip +875c4c1c7e96f546316627e65eaf16d6bf6ea6a39d3fe1492402b159870519f9 node-v23.2.0-x64.msi +433af0c46f4e417c7591de96b0b694e523da5b19ec8d3644416d880c9bf4411f node-v23.2.0.pkg +79900219d5f835cbfdc9092a9d3d60c5bf2f9f94eb8e19dccd327a6d15f560af node-v23.2.0.tar.gz +3cf7a8a36682775693691f1de901bb5973ad3c0ae2aa87b1add9de515e7b2fc7 node-v23.2.0.tar.xz +877ce8017b1bd46a41cbe9fc889e98757c35c036eea32bb90b3b6ae968a77bb5 win-arm64/node.exe +26f2d9ca9ec82df85c3cadee0de373a4836e46293149eec718ab716acbe4e1ab win-arm64/node.lib +68df4d79ee2010c8bbd63cf3a306ded68c34719cdb863dcf18c3d7316cb00e28 win-arm64/node_pdb.7z +db9fa5a803283a4f79d298b9739c02854d35d33ca0d44c0369cda127487f4be8 win-arm64/node_pdb.zip +29acdfb068df2aef03d8186f16666d7e24edaabb6922471136dd133403581be6 win-x64/node.exe +7ef14cabb18518a70e04ca067134d9a51beee11590ea3114e1baf68054124c62 win-x64/node.lib +d65afa1aa613d4f68b7897b8b962b6965937604525229d6de6cf1af4648a134b win-x64/node_pdb.7z +7d1c272a9f62673b6fe964c501ee952ab8d4f2cf73e913039ce808a1b48bee12 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmcybCMACgkQIdkA/9sj +N1aSlg//XqGbfFuPb/W6OCBrb0NJhi4umHcW/gx1XgsnV7DBTm+Cn5Efze2pD3nD +kIBBZ18AOd0/YbfIEgxqCizP9aHfGixTfc8ZyG58DtdxTqUcUnoLkxTJIO+SVc9S +lOYKKCt1QIrNHiAQy/Axc81wHhENSssxqyh42MVt1akw3tlBZIY1aJpVVS4KVA6U +JIypYTp1wcwUS88UKNr/9jG7KqfI+GZQBsT7nRGcpyL3kRakjKjYyJWigB4cnIQl +Zt3QMLeSKyyuZmwdg0axiQJYHI5sw/RAPvfjdadmLQ8OpgKJA0IyRT9O+kbMZDIq +1m8W4I+L8EK4SZ+0KAVkLebZNEJm7Nz4D1p1kNIXg9aqWWXz/d61TXOAG9GRH7v0 +Xdi+qJv62kMD+zwdsh8WTz+3/44eK9b3uSubnnddTOL6LGPtKRJ0uXx104Ld+ND4 +YXJCQK35h5/w3LehZHp5t4tjRb8KxznZipA97VVB53a8itaIoIx7ljiEMYEZP5RR +rw+kifiT3gV3vrI7j+N4bwkAMJeNMbVFNoB/FPqF4zAeqcnbgzR88lr2uUmwW5iK +2IuFpbwE0EphGCUQNtTEKIFHuEq3MeldHk8CS09Jd3fkra4qd6HmBZg35ukE3OxO +79bzWaB/hI6kzSjkx5SvMZUCwcQocEgBqi5AD25RES9xTf0fUtA= +=ekkW +-----END PGP SIGNATURE----- +``` From 37290ad6b5b35a1f01f505e1711101ac6b03c0f3 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Mon, 11 Nov 2024 16:23:23 -0600 Subject: [PATCH 0123/1385] Update CODEOWNERS (#7216) --- CODEOWNERS | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 0978d490b386e..5949e894a60eb 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -6,12 +6,12 @@ .husky @nodejs/web-infra # Framework -app/site/next.config.mjs @nodejs/web-infra -app/site/next.dynamic.mjs @nodejs/web-infra +apps/site/next.config.mjs @nodejs/web-infra +apps/site/next.dynamic.mjs @nodejs/web-infra # Node.js Release Blog Posts -app/site/pages/en/blog/release @nodejs/releasers -app/site/pages/en/blog/announcements @nodejs/releasers +apps/site/pages/en/blog/release @nodejs/releasers +apps/site/pages/en/blog/announcements @nodejs/releasers # Package Ecosystem package.json @nodejs/nodejs-website @@ -19,5 +19,5 @@ turbo.json @nodejs/nodejs-website @nodejs/web-infra # Web Infrastructure crowdin.yml @nodejs/web-infra -app/site/redirects.json @nodejs/web-infra -app/site/site.json @nodejs/web-infra +apps/site/redirects.json @nodejs/web-infra +apps/site/site.json @nodejs/web-infra From 4f13306052218749564c8bb79fa04d5b8df72e08 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Tue, 12 Nov 2024 08:09:22 -0500 Subject: [PATCH 0124/1385] chore: fix typo (to see if Copilot Review works) (#7212) Signed-off-by: Aviv Keller --- TRANSLATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TRANSLATION.md b/TRANSLATION.md index 710edf3281332..8f5ccd89efaf3 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -1,6 +1,6 @@ # Node.js Website Translation Policy -Node.js is a global platform and so this site has many translations. We use [Crowdin](https://crowdin.com) to translate the Node.js Website +Node.js is a global platform, so this site has many translations. We use [Crowdin](https://crowdin.com) to translate the Node.js Website The site's translation into languages other than English is handled by [Crowdin translators](https://support.crowdin.com/translation-process-overview/). From 4f5fbae75ef7b3c0391bdd2f6b1bbf4263d2a3ac Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Tue, 12 Nov 2024 07:09:35 -0600 Subject: [PATCH 0125/1385] docs: fixing a random typo to see if copilot triggers on the PR (#7211) --- COLLABORATOR_GUIDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index be844b55769b7..ac5160ed08558 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -299,7 +299,7 @@ import NameOfComponent from '@components/PathTo/YourComponent'; type Story = StoryObj; type Meta = MetaObj; -// If the component has any props that are interactable, they should be passed here +// If the component has any props that are interactive, they should be passed here // We recommend reading Storybook docs for args: https://storybook.js.org/docs/react/writing-stories/args export const Default: Story = {}; From 24925de35dc6fd1a585ba6ec8c433193cb37916c Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 13 Nov 2024 01:10:13 +0000 Subject: [PATCH 0126/1385] Blog: v18.20.5 release post (#7221) Refs: https://github.com/nodejs/node/pull/55768 --- apps/site/pages/en/blog/release/v18.20.5.md | 166 ++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v18.20.5.md diff --git a/apps/site/pages/en/blog/release/v18.20.5.md b/apps/site/pages/en/blog/release/v18.20.5.md new file mode 100644 index 0000000000000..332da1c9ad6ef --- /dev/null +++ b/apps/site/pages/en/blog/release/v18.20.5.md @@ -0,0 +1,166 @@ +--- +date: '2024-11-12T21:44:18.665Z' +category: release +title: Node v18.20.5 (LTS) +layout: blog-post +author: Antoine du Hamel +--- + +## 2024-11-12, Version 18.20.5 'Hydrogen' (LTS), @aduh95 + +### Notable Changes + +- \[[`ac37e554a5`](https://github.com/nodejs/node/commit/ac37e554a5)] - **esm**: mark import attributes and JSON module as stable (Nicolò Ribaudo) [#55333](https://github.com/nodejs/node/pull/55333) + +### Commits + +- \[[`c2e6a8f215`](https://github.com/nodejs/node/commit/c2e6a8f215)] - **benchmark**: fix napi/ref addon (Michaël Zasso) [#53233](https://github.com/nodejs/node/pull/53233) +- \[[`4c2e07aaac`](https://github.com/nodejs/node/commit/4c2e07aaac)] - **build**: pin doc workflow to Node.js 20 (Richard Lau) [#55755](https://github.com/nodejs/node/pull/55755) +- \[[`6ba4ebd060`](https://github.com/nodejs/node/commit/6ba4ebd060)] - **build**: fix build with Python 3.12 (Luigi Pinca) [#50582](https://github.com/nodejs/node/pull/50582) +- \[[`c50f01399e`](https://github.com/nodejs/node/commit/c50f01399e)] - **crypto**: ensure invalid SubtleCrypto JWK data import results in DataError (Filip Skokan) [#55041](https://github.com/nodejs/node/pull/55041) +- \[[`5c46782137`](https://github.com/nodejs/node/commit/5c46782137)] - **crypto**: make deriveBits length parameter optional and nullable (Filip Skokan) [#53601](https://github.com/nodejs/node/pull/53601) +- \[[`6e7274fa53`](https://github.com/nodejs/node/commit/6e7274fa53)] - **crypto**: reject dh,x25519,x448 in {Sign,Verify}Final (Huáng Jùnliàng) [#53774](https://github.com/nodejs/node/pull/53774) +- \[[`d2442044db`](https://github.com/nodejs/node/commit/d2442044db)] - **crypto**: reject Ed25519/Ed448 in Sign/Verify prototypes (Filip Skokan) [#52340](https://github.com/nodejs/node/pull/52340) +- \[[`93670de499`](https://github.com/nodejs/node/commit/93670de499)] - **deps**: upgrade npm to 10.8.2 (npm team) [#53799](https://github.com/nodejs/node/pull/53799) +- \[[`8531c95587`](https://github.com/nodejs/node/commit/8531c95587)] - **deps**: upgrade npm to 10.8.1 (npm team) [#53207](https://github.com/nodejs/node/pull/53207) +- \[[`fd9933ea0f`](https://github.com/nodejs/node/commit/fd9933ea0f)] - **deps**: upgrade npm to 10.8.0 (npm team) [#53014](https://github.com/nodejs/node/pull/53014) +- \[[`03852495d7`](https://github.com/nodejs/node/commit/03852495d7)] - **deps**: update simdutf to 5.6.0 (Node.js GitHub Bot) [#55379](https://github.com/nodejs/node/pull/55379) +- \[[`3597be4146`](https://github.com/nodejs/node/commit/3597be4146)] - **deps**: update simdutf to 5.5.0 (Node.js GitHub Bot) [#54434](https://github.com/nodejs/node/pull/54434) +- \[[`52d2c03738`](https://github.com/nodejs/node/commit/52d2c03738)] - **deps**: update simdutf to 5.3.4 (Node.js GitHub Bot) [#54312](https://github.com/nodejs/node/pull/54312) +- \[[`dd882ac483`](https://github.com/nodejs/node/commit/dd882ac483)] - **deps**: update simdutf to 5.3.1 (Node.js GitHub Bot) [#54196](https://github.com/nodejs/node/pull/54196) +- \[[`5fb8e1b428`](https://github.com/nodejs/node/commit/5fb8e1b428)] - **deps**: update simdutf to 5.3.0 (Node.js GitHub Bot) [#53837](https://github.com/nodejs/node/pull/53837) +- \[[`c952fd886d`](https://github.com/nodejs/node/commit/c952fd886d)] - **deps**: update simdutf to 5.2.8 (Node.js GitHub Bot) [#52727](https://github.com/nodejs/node/pull/52727) +- \[[`a1ae050ed5`](https://github.com/nodejs/node/commit/a1ae050ed5)] - **deps**: update simdutf to 5.2.6 (Node.js GitHub Bot) [#52727](https://github.com/nodejs/node/pull/52727) +- \[[`96ec48da7f`](https://github.com/nodejs/node/commit/96ec48da7f)] - **deps**: update brotli to 1.1.0 (Node.js GitHub Bot) [#50804](https://github.com/nodejs/node/pull/50804) +- \[[`11242bcfb4`](https://github.com/nodejs/node/commit/11242bcfb4)] - **deps**: update zlib to 1.3.0.1-motley-71660e1 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`64f98a9869`](https://github.com/nodejs/node/commit/64f98a9869)] - **deps**: update zlib to 1.3.0.1-motley-c2469fd (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`4b815550e0`](https://github.com/nodejs/node/commit/4b815550e0)] - **deps**: update zlib to 1.3.0.1-motley-68e57e6 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`f6b2f68ce7`](https://github.com/nodejs/node/commit/f6b2f68ce7)] - **deps**: update zlib to 1.3.0.1-motley-8b7eff8 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`e151ebef86`](https://github.com/nodejs/node/commit/e151ebef86)] - **deps**: update zlib to 1.3.0.1-motley-e432200 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`637a306e02`](https://github.com/nodejs/node/commit/637a306e02)] - **deps**: update zlib to 1.3.0.1-motley-887bb57 (Node.js GitHub Bot) [#53464](https://github.com/nodejs/node/pull/53464) +- \[[`569a739569`](https://github.com/nodejs/node/commit/569a739569)] - **deps**: update zlib to 1.3.0.1-motley-209717d (Node.js GitHub Bot) [#53156](https://github.com/nodejs/node/pull/53156) +- \[[`033f1e2ba5`](https://github.com/nodejs/node/commit/033f1e2ba5)] - **deps**: update zlib to 1.3.0.1-motley-4f653ff (Node.js GitHub Bot) [#53052](https://github.com/nodejs/node/pull/53052) +- \[[`aaa857fc01`](https://github.com/nodejs/node/commit/aaa857fc01)] - **deps**: update ada to 2.8.0 (Node.js GitHub Bot) [#53254](https://github.com/nodejs/node/pull/53254) +- \[[`d577321877`](https://github.com/nodejs/node/commit/d577321877)] - **deps**: update acorn to 8.13.0 (Node.js GitHub Bot) [#55558](https://github.com/nodejs/node/pull/55558) +- \[[`55b3c8a41f`](https://github.com/nodejs/node/commit/55b3c8a41f)] - **deps**: update acorn-walk to 8.3.4 (Node.js GitHub Bot) [#54950](https://github.com/nodejs/node/pull/54950) +- \[[`50a9456f1e`](https://github.com/nodejs/node/commit/50a9456f1e)] - **deps**: update acorn-walk to 8.3.3 (Node.js GitHub Bot) [#53466](https://github.com/nodejs/node/pull/53466) +- \[[`f56cfe776b`](https://github.com/nodejs/node/commit/f56cfe776b)] - **deps**: update acorn to 8.12.1 (Node.js GitHub Bot) [#53465](https://github.com/nodejs/node/pull/53465) +- \[[`fce3ab686d`](https://github.com/nodejs/node/commit/fce3ab686d)] - **deps**: update archs files for openssl-3.0.15+quic1 (Node.js GitHub Bot) [#55184](https://github.com/nodejs/node/pull/55184) +- \[[`46c782486e`](https://github.com/nodejs/node/commit/46c782486e)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.15+quic1 (Node.js GitHub Bot) [#55184](https://github.com/nodejs/node/pull/55184) +- \[[`4a18581dc3`](https://github.com/nodejs/node/commit/4a18581dc3)] - **deps**: update corepack to 0.29.4 (Node.js GitHub Bot) [#54845](https://github.com/nodejs/node/pull/54845) +- \[[`67e98831ab`](https://github.com/nodejs/node/commit/67e98831ab)] - **deps**: update archs files for openssl-3.0.14+quic1 (Node.js GitHub Bot) [#54336](https://github.com/nodejs/node/pull/54336) +- \[[`c60c6630af`](https://github.com/nodejs/node/commit/c60c6630af)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.14+quic1 (Node.js GitHub Bot) [#54336](https://github.com/nodejs/node/pull/54336) +- \[[`935a506377`](https://github.com/nodejs/node/commit/935a506377)] - **deps**: update corepack to 0.29.3 (Node.js GitHub Bot) [#54072](https://github.com/nodejs/node/pull/54072) +- \[[`dbdfdd0226`](https://github.com/nodejs/node/commit/dbdfdd0226)] - **deps**: update corepack to 0.29.2 (Node.js GitHub Bot) [#53838](https://github.com/nodejs/node/pull/53838) +- \[[`395ee44608`](https://github.com/nodejs/node/commit/395ee44608)] - **deps**: update corepack to 0.28.2 (Node.js GitHub Bot) [#53253](https://github.com/nodejs/node/pull/53253) +- \[[`6ba8bc0618`](https://github.com/nodejs/node/commit/6ba8bc0618)] - **deps**: update c-ares to 1.29.0 (Node.js GitHub Bot) [#53155](https://github.com/nodejs/node/pull/53155) +- \[[`81c3260cd2`](https://github.com/nodejs/node/commit/81c3260cd2)] - **deps**: update corepack to 0.28.1 (Node.js GitHub Bot) [#52946](https://github.com/nodejs/node/pull/52946) +- \[[`e4739e9aa6`](https://github.com/nodejs/node/commit/e4739e9aa6)] - **doc**: only apply content-visibility on all.html (Filip Skokan) [#53510](https://github.com/nodejs/node/pull/53510) +- \[[`4d2ac5d98f`](https://github.com/nodejs/node/commit/4d2ac5d98f)] - **doc**: move release key for Myles Borins (Richard Lau) [#54059](https://github.com/nodejs/node/pull/54059) +- \[[`1c4decc998`](https://github.com/nodejs/node/commit/1c4decc998)] - **doc**: add release key for aduh95 (Antoine du Hamel) [#55349](https://github.com/nodejs/node/pull/55349) +- \[[`a4f6f0918f`](https://github.com/nodejs/node/commit/a4f6f0918f)] - **doc**: add names next to release key bash commands (Aviv Keller) [#52878](https://github.com/nodejs/node/pull/52878) +- \[[`c679348f83`](https://github.com/nodejs/node/commit/c679348f83)] - **errors**: use `determineSpecificType` in more error messages (Antoine du Hamel) [#49580](https://github.com/nodejs/node/pull/49580) +- \[[`3059262185`](https://github.com/nodejs/node/commit/3059262185)] - **esm**: fix broken assertion in `legacyMainResolve` (Antoine du Hamel) [#55708](https://github.com/nodejs/node/pull/55708) +- \[[`ac37e554a5`](https://github.com/nodejs/node/commit/ac37e554a5)] - **esm**: mark import attributes and JSON module as stable (Nicolò Ribaudo) [#55333](https://github.com/nodejs/node/pull/55333) +- \[[`84b0ead758`](https://github.com/nodejs/node/commit/84b0ead758)] - **esm**: fix hook name in error message (Bruce MacNaughton) [#50466](https://github.com/nodejs/node/pull/50466) +- \[[`0092358d00`](https://github.com/nodejs/node/commit/0092358d00)] - **http**: handle multi-value content-disposition header (Arsalan Ahmad) [#50977](https://github.com/nodejs/node/pull/50977) +- \[[`d814fe935c`](https://github.com/nodejs/node/commit/d814fe935c)] - **src**: account for OpenSSL unexpected version (Shelley Vohr) [#54038](https://github.com/nodejs/node/pull/54038) +- \[[`6615fe5db1`](https://github.com/nodejs/node/commit/6615fe5db1)] - **src**: fix dynamically linked OpenSSL version (Richard Lau) [#53456](https://github.com/nodejs/node/pull/53456) +- \[[`d6114cb2e2`](https://github.com/nodejs/node/commit/d6114cb2e2)] - **test**: fix test when compiled without engine support (Richard Lau) [#53232](https://github.com/nodejs/node/pull/53232) +- \[[`ac3a39051c`](https://github.com/nodejs/node/commit/ac3a39051c)] - **test**: fix test-tls-junk-closes-server (Michael Dawson) [#55089](https://github.com/nodejs/node/pull/55089) +- \[[`c8520ff7d2`](https://github.com/nodejs/node/commit/c8520ff7d2)] - **test**: fix OpenSSL version checks (Richard Lau) [#53503](https://github.com/nodejs/node/pull/53503) +- \[[`9824827937`](https://github.com/nodejs/node/commit/9824827937)] - **test**: update tls test to support OpenSSL32 (Michael Dawson) [#55030](https://github.com/nodejs/node/pull/55030) +- \[[`1a4d497936`](https://github.com/nodejs/node/commit/1a4d497936)] - **test**: adjust tls-set-ciphers for OpenSSL32 (Michael Dawson) [#55016](https://github.com/nodejs/node/pull/55016) +- \[[`341496a5a2`](https://github.com/nodejs/node/commit/341496a5a2)] - **test**: add asserts to validate test assumptions (Michael Dawson) [#54997](https://github.com/nodejs/node/pull/54997) +- \[[`37a2f7eaa4`](https://github.com/nodejs/node/commit/37a2f7eaa4)] - **test**: adjust key sizes to support OpenSSL32 (Michael Dawson) [#54972](https://github.com/nodejs/node/pull/54972) +- \[[`75ff0cdf66`](https://github.com/nodejs/node/commit/75ff0cdf66)] - **test**: update test to support OpenSSL32 (Michael Dawson) [#54968](https://github.com/nodejs/node/pull/54968) +- \[[`b097d85dfe`](https://github.com/nodejs/node/commit/b097d85dfe)] - **test**: adjust test-tls-junk-server for OpenSSL32 (Michael Dawson) [#54926](https://github.com/nodejs/node/pull/54926) +- \[[`e9997388a6`](https://github.com/nodejs/node/commit/e9997388a6)] - **test**: adjust tls test for OpenSSL32 (Michael Dawson) [#54909](https://github.com/nodejs/node/pull/54909) +- \[[`c7de027adb`](https://github.com/nodejs/node/commit/c7de027adb)] - **test**: fix test test-tls-dhe for OpenSSL32 (Michael Dawson) [#54903](https://github.com/nodejs/node/pull/54903) +- \[[`68156cbae1`](https://github.com/nodejs/node/commit/68156cbae1)] - **test**: fix test-tls-client-mindhsize for OpenSSL32 (Michael Dawson) [#54739](https://github.com/nodejs/node/pull/54739) +- \[[`d5b73e5683`](https://github.com/nodejs/node/commit/d5b73e5683)] - **test**: increase key size for ca2-cert.pem (Michael Dawson) [#54599](https://github.com/nodejs/node/pull/54599) +- \[[`5316314755`](https://github.com/nodejs/node/commit/5316314755)] - **test**: update TLS test for OpenSSL 3.2 (Richard Lau) [#54612](https://github.com/nodejs/node/pull/54612) +- \[[`a1f0c87859`](https://github.com/nodejs/node/commit/a1f0c87859)] - **test**: fix test-tls-client-auth test for OpenSSL32 (Michael Dawson) [#54610](https://github.com/nodejs/node/pull/54610) +- \[[`e9e3306426`](https://github.com/nodejs/node/commit/e9e3306426)] - **test**: use assert.{s,deepS}trictEqual() (Sonny) [#54208](https://github.com/nodejs/node/pull/54208) +- \[[`1320fb9475`](https://github.com/nodejs/node/commit/1320fb9475)] - **test**: update TLS trace tests for OpenSSL >= 3.2 (Richard Lau) [#53229](https://github.com/nodejs/node/pull/53229) +- \[[`cc3cdf7cc0`](https://github.com/nodejs/node/commit/cc3cdf7cc0)] - **test**: check against run-time OpenSSL version (Richard Lau) [#53456](https://github.com/nodejs/node/pull/53456) +- \[[`fc43c6803e`](https://github.com/nodejs/node/commit/fc43c6803e)] - **test**: update TLS tests for OpenSSL 3.2 (Richard Lau) [#53384](https://github.com/nodejs/node/pull/53384) +- \[[`627d3993f0`](https://github.com/nodejs/node/commit/627d3993f0)] - **test**: fix unreliable assumption in js-native-api/test_cannot_run_js (Joyee Cheung) [#51898](https://github.com/nodejs/node/pull/51898) +- \[[`9f521f456e`](https://github.com/nodejs/node/commit/9f521f456e)] - **test**: update tests for OpenSSL 3.0.14 (Richard Lau) [#53373](https://github.com/nodejs/node/pull/53373) +- \[[`0fb652eba9`](https://github.com/nodejs/node/commit/0fb652eba9)] - **tools**: update gyp-next to v0.16.1 (Michaël Zasso) [#50380](https://github.com/nodejs/node/pull/50380) +- \[[`fa72b2c2de`](https://github.com/nodejs/node/commit/fa72b2c2de)] - **tools**: skip ruff on tools/gyp (Michaël Zasso) [#50380](https://github.com/nodejs/node/pull/50380) + +Windows 32-bit Installer: https://nodejs.org/dist/v18.20.5/node-v18.20.5-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v18.20.5/node-v18.20.5-x64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v18.20.5/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v18.20.5/win-x64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v18.20.5/node-v18.20.5.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v18.20.5/node-v18.20.5-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v18.20.5/node-v18.20.5-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v18.20.5/node-v18.20.5-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v18.20.5/node-v18.20.5-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v18.20.5/node-v18.20.5-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v18.20.5/node-v18.20.5-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v18.20.5/node-v18.20.5-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v18.20.5/node-v18.20.5-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v18.20.5/node-v18.20.5.tar.gz \ +Other release files: https://nodejs.org/dist/v18.20.5/ \ +Documentation: https://nodejs.org/docs/v18.20.5/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +b01bc9ce5911152d2bedafb47b7dab868e2102907304162f54ebc93573f27b06 node-v18.20.5-aix-ppc64.tar.gz +bdfeaf59dbf29aec08c0c66130edf0a8a17014b4f2997727641dfd0b58b51f48 node-v18.20.5-darwin-arm64.tar.gz +9410da838c8bffd3e4c6a7b6765ebf6386c5144ff63ef5919af56b5efc2f6e3e node-v18.20.5-darwin-arm64.tar.xz +dff01068da7d3fe7b515f72a3903dca96a34dc377f6f426b6a813901274b6441 node-v18.20.5-darwin-x64.tar.gz +88c457ebad31436e448f7896ee6fd7054468d3eff790f26629710f01f6b28818 node-v18.20.5-darwin-x64.tar.xz +43f88591366ee21f7ef36f157ae101b9a8177c255e124b849e1241f7372793a4 node-v18.20.5-headers.tar.gz +87b8218bcbe6ca9934d91e28bad4cf19db37cac017f8c2be43c0bfcc470c0569 node-v18.20.5-headers.tar.xz +759cfb9f76a1019daf65db9c2e5e43074ee660ec9b9ff3f31dcc4a88cca671e9 node-v18.20.5-linux-arm64.tar.gz +a77db6ab34267f3bc80e02ed68abf51b7065eb5c82fcd69adc4b40e390d9b116 node-v18.20.5-linux-arm64.tar.xz +8d358452e4fcf34b0dcf51a441ec8cf192f8ff83bdd4488708dcab18e8007621 node-v18.20.5-linux-armv7l.tar.gz +8a5c4842ee0a516490e3c5d8b16a554b7ea54aa9cd2e2505276b83d390245915 node-v18.20.5-linux-armv7l.tar.xz +1f916c66f96d9265394e3145bfa92be918abbb45ac9711a441cce99d76618f4a node-v18.20.5-linux-ppc64le.tar.gz +63b4c6801c96fb452e3bd8125e8b5b195ecacc4fa2505e47a128e94587999aeb node-v18.20.5-linux-ppc64le.tar.xz +e9ca8239a1256ff66ecd156bf42e88eaad7a1276c421c1c5fd0d6936dcc59300 node-v18.20.5-linux-s390x.tar.gz +617d7456e16534a4b4e03f5285cc8d13581f39cdad9196efff2516d6588de319 node-v18.20.5-linux-s390x.tar.xz +e7b80346bb586790ac6b29aa25c96716fcdf6039a6929c2ed506cec09cebc3c0 node-v18.20.5-linux-x64.tar.gz +e4a3a21e5ac7e074ed50d2533dd0087d8460647ab567464867141a2b643f3fb3 node-v18.20.5-linux-x64.tar.xz +5f1adee2851f91fc4d6c4363f3e095b0b1ec29334cb2f7397af538784d732461 node-v18.20.5.pkg +938735364745b7d4cd650b9325df6f2d2ec4240c56f9318e38638af910a820c6 node-v18.20.5.tar.gz +76037b9bad0ab9396349282dbfcec1b872ff7bd8c8d698853bebd982940858bf node-v18.20.5.tar.xz +dda01ff5872579af06e81d7fd6a0ef8c7252f4901ebd7acde1ddc4a6c213633f node-v18.20.5-win-x64.7z +910237449895b4de61026568dc076fa6c3ffcd667563ed03112a4a77e1f1556b node-v18.20.5-win-x64.zip +f7c09403342618f7c6a6944b563fe7a64e363dd7d3e4046bd91fd8a5be3a5e55 node-v18.20.5-win-x86.7z +67c51107afe9aab134cb3f9289ea0eb9b7a074fcf210402e7ef5f6e5f91f529f node-v18.20.5-win-x86.zip +4df34632cc0966c014cd9d09761c5acbd6494fb886af1cbabfe16add91446f55 node-v18.20.5-x64.msi +2c0dccf04728ec7969870874a8e3fe9f6d96e87bd84a305b14f3b35cefca3388 node-v18.20.5-x86.msi +e1e41dd1c48e8f64e8273e1203af0f3db8f58327ca07676416c483533eb42fa5 win-x64/node.exe +1583793ddf300cc96dcc9068644eaead2188eda31ee9b6f7a8a07fdef920091d win-x64/node.lib +f0f145762137a0bbbb3267f16a414e7048434575cfbf9679a53b69ff196222b3 win-x64/node_pdb.7z +50d624f5a07bc1d1c2b1fcd0927037ed330850794b0e71bd9fda6b7c0793ac63 win-x64/node_pdb.zip +dfd1d08c8af29ba1c93e2f1774b4ba4e416e53d878574aadf395e9620e3016cb win-x86/node.exe +3442ac0d3ad2c5e840f0f2ae84a1c7abe1736a315d83a161b843c5c31a986f83 win-x86/node.lib +26436e70a9e586e4756de09ad518024b3d391b2c896ea23a7f9c1637151a707f win-x86/node_pdb.7z +bd6b96c7784f25e66cba7358208533ad92127933e6663587063f8d4a8ae157e5 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmczy1oACgkQIdkA/9sj +N1ZX7Q/8D4QtAw1iajJx/9izpuXsfD/l66ZBG3X3Pks2MSp1vsiz8+2gVqFR270I +0L6fz3e2u4v6N5VWO06AmUSdKXY1A4bfadGP8vpfqFgeG29ExKPXxutUrvnpTAqB +YGgJymHfDEZOhqHmlkiBvXhM4QXjDKNjCRDJQYArrka7ZIhVd/JA5+X6NittFPEK +0efcWyKPPaFcI8DAWBLoylowACsq7FD6WrjQBe2XaTStRje7mTH3eotlE/z9wdto +eTPhDU0o+GpauC54G8Hm/aN2gTdOx98Ii6Sc5nOn3ZYhhDDeM3aZ9JWCd6R0WD0l +n6f+kbyv+0Cyl2tCAwbE7rLAyXUeNhhy8vhQVD/MwnwshBPXaJDuatwGOOV/0UdG +sRWErCv1hoPulWpAB/Kctm1h/++R7+xNhsf/CJy9l8zz2CvQ2mTELXBdfStfoosi +C7R0JgjoEpw0VEUzSpFDj9cq6obpGLgngfwkpb+Oyf/pWQylSQ3c+MjppCcxj9tg +DvActNGIOHMnDZTprZ7Is7GX1css+SZEvUOamDyQnL4h/FvsJ5jaCtC3av7/gh5/ +f256hcda9Cpe9mHJxWLA+UbehwdDEVbN0H41FDejYnJ3QhDRkwt+XdynxrIMwu8V +8Jqrc5zoncO/fPeRazBBJ1y6IsAMx99eMwxIrsY3O2eYu1iprGM= +=Kdg8 +-----END PGP SIGNATURE----- +``` From fa6fbd9a853ff904fa409d6a27ce572f90c5ff9c Mon Sep 17 00:00:00 2001 From: Claudio W Date: Thu, 14 Nov 2024 16:56:08 +0000 Subject: [PATCH 0127/1385] Revert "chore: Upgrade `next-intl` to 3.24, migrate deprecated APIs" (#7228) --- apps/site/app/[locale]/[[...path]]/page.tsx | 6 +- apps/site/app/[locale]/layout.tsx | 11 +- apps/site/components/__mocks__/next-intl.mjs | 2 +- .../hooks/react-generic/useSiteNavigation.ts | 2 +- apps/site/i18n.tsx | 27 ++--- apps/site/navigation.mjs | 7 +- apps/site/package.json | 2 +- package-lock.json | 105 +++++++++--------- 8 files changed, 72 insertions(+), 90 deletions(-) diff --git a/apps/site/app/[locale]/[[...path]]/page.tsx b/apps/site/app/[locale]/[[...path]]/page.tsx index f847b487c9b7f..14aff4e2d41b4 100644 --- a/apps/site/app/[locale]/[[...path]]/page.tsx +++ b/apps/site/app/[locale]/[[...path]]/page.tsx @@ -1,6 +1,6 @@ import { setContext, setTags } from '@sentry/nextjs'; import { notFound, redirect } from 'next/navigation'; -import { setRequestLocale } from 'next-intl/server'; +import { unstable_setRequestLocale } from 'next-intl/server'; import type { FC } from 'react'; import { setClientContext } from '@/client-context'; @@ -69,7 +69,7 @@ const getPage: FC = async ({ params }) => { if (!availableLocaleCodes.includes(locale)) { // Forces the current locale to be the Default Locale - setRequestLocale(defaultLocale.code); + unstable_setRequestLocale(defaultLocale.code); if (!allLocaleCodes.includes(locale)) { // when the locale is not listed in the locales, return NotFound @@ -82,7 +82,7 @@ const getPage: FC = async ({ params }) => { } // Configures the current Locale to be the given Locale of the Request - setRequestLocale(locale); + unstable_setRequestLocale(locale); // Gets the current full pathname for a given path const pathname = dynamicRouter.getPathname(path); diff --git a/apps/site/app/[locale]/layout.tsx b/apps/site/app/[locale]/layout.tsx index 6ab90c90b3f87..87d0f28dd1801 100644 --- a/apps/site/app/[locale]/layout.tsx +++ b/apps/site/app/[locale]/layout.tsx @@ -1,6 +1,7 @@ import { Analytics } from '@vercel/analytics/react'; import { SpeedInsights } from '@vercel/speed-insights/next'; import classNames from 'classnames'; +import { getLocale } from 'next-intl/server'; import type { FC, PropsWithChildren } from 'react'; import BaseLayout from '@/layouts/Base'; @@ -14,14 +15,8 @@ import '@/styles/index.css'; const fontClasses = classNames(IBM_PLEX_MONO.variable, OPEN_SANS.variable); -const RootLayout: FC< - PropsWithChildren<{ - params: Promise<{ - locale: string; - }>; - }> -> = async ({ children, params }) => { - const { locale } = await params; +const RootLayout: FC = async ({ children }) => { + const locale = await getLocale(); const { langDir, hrefLang } = availableLocalesMap[locale] || defaultLocale; diff --git a/apps/site/components/__mocks__/next-intl.mjs b/apps/site/components/__mocks__/next-intl.mjs index 04af07d5abbac..a84400384381c 100644 --- a/apps/site/components/__mocks__/next-intl.mjs +++ b/apps/site/components/__mocks__/next-intl.mjs @@ -27,7 +27,7 @@ export const useFormatter = () => { export const NextIntlClientProvider = ({ children }) => children; -export const createNavigation = () => ({ +export const createSharedPathnamesNavigation = () => ({ Link: Link, redirect: redirect, usePathname: usePathname, diff --git a/apps/site/hooks/react-generic/useSiteNavigation.ts b/apps/site/hooks/react-generic/useSiteNavigation.ts index 4b11af46f0dd2..83b5403a4a883 100644 --- a/apps/site/hooks/react-generic/useSiteNavigation.ts +++ b/apps/site/hooks/react-generic/useSiteNavigation.ts @@ -39,7 +39,7 @@ const useSiteNavigation = () => { const mapNavigationEntries = (entries: Navigation, context: Context = {}) => { const getFormattedMessage = (label: string, key: string) => - t.rich(label, context[key] || {}) as FormattedMessage; + t.rich(label, context[key] || {}); return Object.entries(entries).map( ([key, { label, link, items, target }]): [ diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index 88cd1cf3e9341..efed3f4d9c6fd 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -1,7 +1,7 @@ import { importLocale } from '@node-core/website-i18n'; import { getRequestConfig } from 'next-intl/server'; -import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; +import { availableLocaleCodes } from '@/next.locales.mjs'; import deepMerge from './util/deepMerge'; @@ -13,7 +13,7 @@ const loadLocaleDictionary = async (locale: string) => { '@node-core/website-i18n/locales/en.json' ).then(f => f.default); - if (locale === defaultLocale.code) { + if (locale === 'en') { return defaultMessages; } @@ -30,20 +30,9 @@ const loadLocaleDictionary = async (locale: string) => { }; // Provides `next-intl` configuration for RSC/SSR -export default getRequestConfig(async ({ requestLocale }) => { - // This typically corresponds to the `[locale]` segment - let locale = await requestLocale; - - // Ensure that the incoming locale is valid - if (!locale || !availableLocaleCodes.includes(locale)) { - locale = defaultLocale.code; - } - - return { - locale, - // This is the dictionary of messages to be loaded - messages: await loadLocaleDictionary(locale), - // We always define the App timezone as UTC - timeZone: 'Etc/UTC', - }; -}); +export default getRequestConfig(async ({ locale }) => ({ + // This is the dictionary of messages to be loaded + messages: await loadLocaleDictionary(locale), + // We always define the App timezone as UTC + timeZone: 'Etc/UTC', +})); diff --git a/apps/site/navigation.mjs b/apps/site/navigation.mjs index b551ea2bcc390..edff2d9a0c197 100644 --- a/apps/site/navigation.mjs +++ b/apps/site/navigation.mjs @@ -1,9 +1,8 @@ 'use strict'; -import { createNavigation } from 'next-intl/navigation'; +import { createSharedPathnamesNavigation } from 'next-intl/navigation'; import { availableLocaleCodes } from './next.locales.mjs'; -export const { Link, redirect, usePathname, useRouter } = createNavigation({ - locales: availableLocaleCodes, -}); +export const { Link, redirect, usePathname, useRouter } = + createSharedPathnamesNavigation({ locales: availableLocaleCodes }); diff --git a/apps/site/package.json b/apps/site/package.json index 5d59740ae6221..06ddf031da8df 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -68,7 +68,7 @@ "glob": "~11.0.0", "gray-matter": "~4.0.3", "next": "~14.2.14", - "next-intl": "~3.24.0", + "next-intl": "~3.21.1", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", diff --git a/package-lock.json b/package-lock.json index 22977e34ec1fd..b79be4f9d634b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,7 +66,7 @@ "glob": "~11.0.0", "gray-matter": "~4.0.3", "next": "~14.2.14", - "next-intl": "~3.24.0", + "next-intl": "~3.21.1", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", @@ -3031,48 +3031,53 @@ "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.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.0.tgz", + "integrity": "sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==", + "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "2.2.3", - "@formatjs/intl-localematcher": "0.5.7", - "tslib": "2" + "@formatjs/fast-memoize": "2.2.1", + "@formatjs/intl-localematcher": "0.5.5", + "tslib": "^2.7.0" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz", - "integrity": "sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.1.tgz", + "integrity": "sha512-XS2RcOSyWxmUB7BUjj3mlPH0exsUzlf6QfhhijgI941WaJhVxXQ6mEWkdUFIdnKi3TuTYxRdelsgv3mjieIGIA==", + "license": "MIT", "dependencies": { - "tslib": "2" + "tslib": "^2.7.0" } }, "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.8.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.8.0.tgz", + "integrity": "sha512-r2un3fmF9oJv3mOkH+wwQZ037VpqmdfahbcCZ9Lh+p6Sx+sNsonI7Zcr6jNMm1s+Si7ejQORS4Ezlh05mMPAXA==", + "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.3", - "@formatjs/icu-skeleton-parser": "1.8.7", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.2.0", + "@formatjs/icu-skeleton-parser": "1.8.4", + "tslib": "^2.7.0" } }, "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.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.4.tgz", + "integrity": "sha512-LMQ1+Wk1QSzU4zpd5aSu7+w5oeYhupRwZnMQckLPRYhSjf2/8JWQ882BauY9NyHxs5igpuQIXZDgfkaH3PoATg==", + "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.3", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.2.0", + "tslib": "^2.7.0" } }, "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.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.5.tgz", + "integrity": "sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==", + "license": "MIT", "dependencies": { - "tslib": "2" + "tslib": "^2.7.0" } }, "node_modules/@heroicons/react": { @@ -16160,14 +16165,15 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.5", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.5.tgz", - "integrity": "sha512-CflbRvJiahVmnfxq/lO+DCM1/8ji4vC4rTnz6ZJEKKodViB+EWgY9M4EqXVRQ+3K0Ng5qwSyqybPP+KSfS4KZw==", + "version": "10.7.1", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.1.tgz", + "integrity": "sha512-xQuJW2WcyzNJZWUu5xTVPOmNSA1Sowuu/NKFdUid5Fxx/Yl6/s4DefTU/y7zy+irZLDmFGmTLtnM8FqpN05wlA==", + "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.3", - "@formatjs/fast-memoize": "2.2.3", - "@formatjs/icu-messageformat-parser": "2.9.3", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.2.0", + "@formatjs/fast-memoize": "2.2.1", + "@formatjs/icu-messageformat-parser": "2.8.0", + "tslib": "^2.7.0" } }, "node_modules/invariant": { @@ -21619,7 +21625,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -21682,31 +21687,24 @@ } }, "node_modules/next-intl": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.24.0.tgz", - "integrity": "sha512-48X68QsI92grir2dH1W15yhyVnEjW4c9qmwNt+du+k6mI1QtlE6GyANWHoL4/leTixHv8knZ1y9B/Ys06gmKLg==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.21.1.tgz", + "integrity": "sha512-hQm4Wgq5i1lfOHAWmXBVl5d2/XAeddcjsrUmjotXEESzPSvW5j2t0Pr8AV8WorTILgqU748aXuenBhz5P78tdw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/amannn" } ], + "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", - "negotiator": "^1.0.0", - "use-intl": "^3.24.0" + "negotiator": "^0.6.3", + "use-intl": "^3.21.1" }, "peerDependencies": { - "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" - } - }, - "node_modules/next-intl/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "engines": { - "node": ">= 0.6" + "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/next-themes": { @@ -28928,15 +28926,16 @@ } }, "node_modules/use-intl": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.24.0.tgz", - "integrity": "sha512-lmrARod7yjMYehbyY9xBLjjgnlNcJsl1UAltAPlgspRG7RH6H0JYaGo4C3PZW/BTy0Dgmcvcl8rH/VemzGIhgQ==", + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.22.0.tgz", + "integrity": "sha512-SoiPcyLJODhenrbDkcYJuOImgrBFN7Z8keLSHe7ffsNkIJtjdjet/RmqAv5Ym9TVxPpCs+fH2cl1J3YzFJSkWw==", + "license": "MIT", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "intl-messageformat": "^10.5.14" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/use-sidecar": { From 7f751fd90250b503db82001e9d1d73bc63b88fec Mon Sep 17 00:00:00 2001 From: Claudio W Date: Sat, 16 Nov 2024 00:47:58 +0000 Subject: [PATCH 0128/1385] chore: upgrade to next 15 (#7155) Co-authored-by: Claudio Wunder Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: RedYetiDev <38299977+RedYetiDev@users.noreply.github.com> Co-authored-by: Jan Amann Co-authored-by: Brian Muenzenmeyer --- .gitignore | 3 - .vscode/settings.json | 3 +- COLLABORATOR_GUIDE.md | 1 - apps/site/.storybook/main.ts | 51 +- apps/site/.storybook/preview-head.html | 20 + apps/site/.storybook/preview.tsx | 2 - apps/site/app/[locale]/[...path]/page.tsx | 50 + apps/site/app/[locale]/error.tsx | 4 +- apps/site/app/[locale]/feed/[feed]/route.ts | 15 +- apps/site/app/[locale]/layout.tsx | 14 +- .../app/[locale]/next-data/api-data/route.ts | 12 +- .../blog-data/[category]/[page]/route.ts | 47 +- .../changelog-data/[version]/route.ts | 44 - .../next-data/og/[category]/[title]/route.tsx | 67 + apps/site/app/[locale]/next-data/og/route.tsx | 79 - .../app/[locale]/next-data/page-data/route.ts | 3 +- .../[locale]/next-data/release-data/route.ts | 3 +- .../app/[locale]/{[[...path]] => }/page.tsx | 89 +- apps/site/app/global-error.tsx | 43 +- .../Common/Tabs/__tests__/index.test.mjs | 3 +- .../Downloads/ChangelogModal/index.module.css | 99 - .../ChangelogModal/index.stories.tsx | 210 - .../Downloads/ChangelogModal/index.tsx | 65 - .../Downloads/Release/ChangelogLink.tsx | 11 +- .../Downloads/Release/ReleaseStatus.tsx | 2 +- .../Downloads/Release/ReleaseVersion.tsx | 2 +- .../components/MDX/CodeBox/index.stories.tsx | 7 +- .../components/MDX/CodeTabs/index.stories.tsx | 7 +- .../components/__mocks__/client-context.mjs | 9 + apps/site/components/__mocks__/next-intl.mjs | 13 +- apps/site/components/mdxRenderer.tsx | 16 - apps/site/components/withChangelogModal.tsx | 97 - apps/site/components/withNavBar.tsx | 6 +- apps/site/eslint.config.js | 1 + .../hooks/react-client/useClickOutside.ts | 2 +- .../hooks/react-client/useNavigationState.ts | 2 +- .../hooks/react-generic/useSiteNavigation.ts | 4 +- apps/site/i18n.tsx | 27 +- apps/site/instrumentation.ts | 19 +- apps/site/navigation.mjs | 7 +- apps/site/next-data/blogData.ts | 9 +- apps/site/next-data/changelogData.ts | 25 - .../next-data/generators/changelogData.mjs | 18 - .../site/next-data/providers/changelogData.ts | 9 - apps/site/next-data/releaseData.ts | 8 +- apps/site/next.calendar.mjs | 2 +- apps/site/next.config.mjs | 113 +- apps/site/next.constants.mjs | 21 +- apps/site/next.dynamic.constants.mjs | 2 + apps/site/next.dynamic.mjs | 92 +- apps/site/next.json.mjs | 8 +- apps/site/next.mdx.compiler.mjs | 45 +- apps/site/next.mdx.components.mjs | 15 + apps/site/next.mdx.evaluater.mjs | 26 + .../{next.mdx.mjs => next.mdx.plugins.mjs} | 11 +- apps/site/package.json | 63 +- .../__tests__/localeProvider.test.mjs | 2 +- apps/site/providers/releaseProvider.tsx | 11 - apps/site/sentry.constants.mjs | 45 - apps/site/tsconfig.json | 3 +- apps/site/turbo.json | 4 - apps/site/types/release.ts | 5 +- apps/site/util/downloadUtils.ts | 2 + apps/site/util/fetchNodeJsChangelog.ts | 24 - package-lock.json | 15372 +++++----------- package.json | 3 +- packages/i18n/lib/index.mjs | 2 +- turbo.json | 1 + 68 files changed, 5391 insertions(+), 11709 deletions(-) create mode 100644 apps/site/.storybook/preview-head.html create mode 100644 apps/site/app/[locale]/[...path]/page.tsx delete mode 100644 apps/site/app/[locale]/next-data/changelog-data/[version]/route.ts create mode 100644 apps/site/app/[locale]/next-data/og/[category]/[title]/route.tsx delete mode 100644 apps/site/app/[locale]/next-data/og/route.tsx rename apps/site/app/[locale]/{[[...path]] => }/page.tsx (67%) delete mode 100644 apps/site/components/Downloads/ChangelogModal/index.module.css delete mode 100644 apps/site/components/Downloads/ChangelogModal/index.stories.tsx delete mode 100644 apps/site/components/Downloads/ChangelogModal/index.tsx create mode 100644 apps/site/components/__mocks__/client-context.mjs delete mode 100644 apps/site/components/mdxRenderer.tsx delete mode 100644 apps/site/components/withChangelogModal.tsx delete mode 100644 apps/site/next-data/changelogData.ts delete mode 100644 apps/site/next-data/generators/changelogData.mjs delete mode 100644 apps/site/next-data/providers/changelogData.ts create mode 100644 apps/site/next.mdx.components.mjs create mode 100644 apps/site/next.mdx.evaluater.mjs rename apps/site/{next.mdx.mjs => next.mdx.plugins.mjs} (76%) delete mode 100644 apps/site/sentry.constants.mjs delete mode 100644 apps/site/util/fetchNodeJsChangelog.ts diff --git a/.gitignore b/.gitignore index 2c2b5b1273b34..313580c9bb716 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,4 @@ cache # TypeScript tsconfig.tsbuildinfo -# Sentry Config File -.sentryclirc - dist/ diff --git a/.vscode/settings.json b/.vscode/settings.json index a7e0023eb6be3..f45e0fc02c2f8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,5 +3,6 @@ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "javascript.updateImportsOnFileMove.enabled": "always", - "typescript.updateImportsOnFileMove.enabled": "always" + "typescript.updateImportsOnFileMove.enabled": "always", + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index ac5160ed08558..c4842f7e3e029 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -90,7 +90,6 @@ The Website also uses several other Open Source libraries (not limited to) liste - We use [Rehype](https://github.com/rehypejs/rehype) and [Remark](https://github.com/remarkjs/remark) to extend MDX functionality - We use [Storybook](https://storybook.js.org/) for Manual Testing and Visual Regression Tests of our React Components - Storybook also provides a sandboxed environment, which is very useful whilst for crafting React Components -- We use [Sentry](https://sentry.io/about) for reporting Exceptions and monitoring the performance and reliability of the application ## Code Editing diff --git a/apps/site/.storybook/main.ts b/apps/site/.storybook/main.ts index 174f47be55331..33db0069c6ee6 100644 --- a/apps/site/.storybook/main.ts +++ b/apps/site/.storybook/main.ts @@ -1,12 +1,8 @@ -import type { StorybookConfig } from '@storybook/nextjs'; -import classNames from 'classnames'; +import { join } from 'node:path'; -const rootClasses = classNames( - // note: this is hard-coded sadly as next/font can only be loaded within next.js context - '__variable_open-sans-normal', - // note: this is hard-coded sadly as next/font can only be loaded within next.js context - '__variable_ibm-plex-mono-normal' -); +import type { StorybookConfig } from '@storybook/react-webpack5'; + +const mocksFolder = join(__dirname, '../components/__mocks__'); const config: StorybookConfig = { stories: ['../components/**/*.stories.tsx'], @@ -14,22 +10,29 @@ const config: StorybookConfig = { staticDirs: ['../public'], typescript: { reactDocgen: false, check: false }, core: { disableTelemetry: true, disableWhatsNewNotifications: true }, - framework: { - name: '@storybook/nextjs', - options: { builder: { useSWC: true } }, - }, - previewBody: - // This `' + - // This adds the base styling for dark/light themes within Storybook. This is a Storybook-only style - ``, + 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, @@ -39,7 +42,15 @@ const config: StorybookConfig = { 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: { '@nodevu/core': false } }, + 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: { diff --git a/apps/site/.storybook/preview-head.html b/apps/site/.storybook/preview-head.html new file mode 100644 index 0000000000000..f33e88387634f --- /dev/null +++ b/apps/site/.storybook/preview-head.html @@ -0,0 +1,20 @@ + + + + + + diff --git a/apps/site/.storybook/preview.tsx b/apps/site/.storybook/preview.tsx index 43e68629f1c56..1cc9e387dce32 100644 --- a/apps/site/.storybook/preview.tsx +++ b/apps/site/.storybook/preview.tsx @@ -6,12 +6,10 @@ import { NextIntlClientProvider } from 'next-intl'; import { STORYBOOK_MODES, STORYBOOK_SIZES } from '@/.storybook/constants'; import { NotificationProvider } from '@/providers/notificationProvider'; -import '../next.fonts'; import '../styles/index.css'; const preview: Preview = { parameters: { - nextjs: { router: { basePath: '' }, appDirectory: true }, chromatic: { modes: STORYBOOK_MODES }, viewport: { defaultViewport: 'large', viewports: STORYBOOK_SIZES }, }, diff --git a/apps/site/app/[locale]/[...path]/page.tsx b/apps/site/app/[locale]/[...path]/page.tsx new file mode 100644 index 0000000000000..89bb335d8f427 --- /dev/null +++ b/apps/site/app/[locale]/[...path]/page.tsx @@ -0,0 +1,50 @@ +/** + * This file extends on the `page.tsx` file, which is the default file that is used to render + * the entry points for each locale and then also reused within the [...path] route to render the + * and contains all logic for rendering our dynamic and static routes within the Node.js Website. + * + * Note: that each `page.tsx` should have its own `generateStaticParams` to prevent clash of + * dynamic params, which will lead on static export errors and other sort of issues. + */ + +import * as basePage from '@/app/[locale]/page'; +import { ENABLE_STATIC_EXPORT } from '@/next.constants.mjs'; +import { dynamicRouter } from '@/next.dynamic.mjs'; +import { availableLocaleCodes } from '@/next.locales.mjs'; + +// This is the default Viewport Metadata +// @see https://nextjs.org/docs/app/api-reference/functions/generate-viewport#generateviewport-function +export const generateViewport = basePage.generateViewport; + +// This generates each page's HTML Metadata +// @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata +export const generateMetadata = basePage.generateMetadata; + +// This provides all the possible paths that can be generated statically +// + provides all the paths that we support on the Node.js Website +export const generateStaticParams = async () => { + const allAvailableRoutes = await Promise.all( + // Gets all mapped routes to the Next.js Routing Engine by Locale + availableLocaleCodes.map(async (locale: string) => { + const routesForLanguage = await dynamicRouter.getRoutesByLanguage(locale); + + return routesForLanguage.map(pathname => + dynamicRouter.mapPathToRoute(locale, pathname) + ); + }) + ); + + return ENABLE_STATIC_EXPORT ? allAvailableRoutes.flat().sort() : []; +}; + +// Enforces that this route is used as static rendering +// Except whenever on the Development mode as we want instant-refresh when making changes +// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic +export const dynamic = 'force-static'; + +// Ensures that this endpoint is invalidated and re-executed every X minutes +// so that when new deployments happen, the data is refreshed +// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate +export const revalidate = 300; + +export default basePage.default; diff --git a/apps/site/app/[locale]/error.tsx b/apps/site/app/[locale]/error.tsx index f7c05407a2508..2a4d2e3431e71 100644 --- a/apps/site/app/[locale]/error.tsx +++ b/apps/site/app/[locale]/error.tsx @@ -1,15 +1,13 @@ 'use client'; import { ArrowRightIcon } from '@heroicons/react/24/solid'; -import { captureException } from '@sentry/nextjs'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import Button from '@/components/Common/Button'; import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; -const ErrorPage: FC<{ error: Error }> = ({ error }) => { - captureException(error); +const ErrorPage: FC<{ error: Error }> = () => { const t = useTranslations(); return ( diff --git a/apps/site/app/[locale]/feed/[feed]/route.ts b/apps/site/app/[locale]/feed/[feed]/route.ts index a77e9d9ccd3b4..96d371d4f21a8 100644 --- a/apps/site/app/[locale]/feed/[feed]/route.ts +++ b/apps/site/app/[locale]/feed/[feed]/route.ts @@ -1,19 +1,20 @@ import { NextResponse } from 'next/server'; import provideWebsiteFeeds from '@/next-data/providers/websiteFeeds'; -import { VERCEL_REVALIDATE } from '@/next.constants.mjs'; import { siteConfig } from '@/next.json.mjs'; import { defaultLocale } from '@/next.locales.mjs'; // We only support fetching these pages from the /en/ locale code const locale = defaultLocale.code; -type StaticParams = { params: { feed: string; locale: string } }; +type StaticParams = { params: Promise<{ feed: string; locale: string }> }; // This is the Route Handler for the `GET` method which handles the request // for the Node.js Website Blog Feeds (RSS) // @see https://nextjs.org/docs/app/building-your-application/routing/router-handlers -export const GET = async (_: Request, { params }: StaticParams) => { +export const GET = async (_: Request, props: StaticParams) => { + const params = await props.params; + // Generate the Feed for the given feed type (blog, releases, etc) const websiteFeed = provideWebsiteFeeds(params.feed); @@ -29,11 +30,9 @@ export const GET = async (_: Request, { params }: StaticParams) => { export const generateStaticParams = async () => siteConfig.rssFeeds.map(feed => ({ feed: feed.file, locale })); -// In this case we want to catch-all possible requests. This is so that if a non defined feed is -// requested we can manually return a 404 response for it instead of having Next.js handle it -// and return our top level custom 404 html page instead +// Enforces that only the paths from `generateStaticParams` are allowed, giving 404 on the contrary // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamicparams -export const dynamicParams = true; +export const dynamicParams = false; // Enforces that this route is cached and static as much as possible // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic @@ -42,4 +41,4 @@ export const dynamic = 'force-static'; // Ensures that this endpoint is invalidated and re-executed every X minutes // so that when new deployments happen, the data is refreshed // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = VERCEL_REVALIDATE; +export const revalidate = 300; diff --git a/apps/site/app/[locale]/layout.tsx b/apps/site/app/[locale]/layout.tsx index 87d0f28dd1801..b1887eea5c80e 100644 --- a/apps/site/app/[locale]/layout.tsx +++ b/apps/site/app/[locale]/layout.tsx @@ -1,7 +1,6 @@ import { Analytics } from '@vercel/analytics/react'; import { SpeedInsights } from '@vercel/speed-insights/next'; import classNames from 'classnames'; -import { getLocale } from 'next-intl/server'; import type { FC, PropsWithChildren } from 'react'; import BaseLayout from '@/layouts/Base'; @@ -15,13 +14,20 @@ import '@/styles/index.css'; const fontClasses = classNames(IBM_PLEX_MONO.variable, OPEN_SANS.variable); -const RootLayout: FC = async ({ children }) => { - const locale = await getLocale(); +type RotLayoutProps = PropsWithChildren<{ params: { locale: string } }>; + +const RootLayout: FC = async ({ children, params }) => { + const { locale } = await params; const { langDir, hrefLang } = availableLocalesMap[locale] || defaultLocale; return ( - + 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 880c596144636..ae07d205cdb11 100644 --- a/apps/site/app/[locale]/next-data/api-data/route.ts +++ b/apps/site/app/[locale]/next-data/api-data/route.ts @@ -1,7 +1,7 @@ import { deflateSync } from 'node:zlib'; import provideReleaseData from '@/next-data/providers/releaseData'; -import { GITHUB_API_KEY, VERCEL_REVALIDATE } from '@/next.constants.mjs'; +import { GITHUB_API_KEY } from '@/next.constants.mjs'; import { defaultLocale } from '@/next.locales.mjs'; import type { GitHubApiFile } from '@/types'; import { getGitHubApiDocsUrl } from '@/util/gitHubUtils'; @@ -29,14 +29,16 @@ export const GET = async () => { const gitHubApiResponse = await fetch( getGitHubApiDocsUrl(versionWithPrefix), - authorizationHeaders + { ...authorizationHeaders, cache: 'force-cache' } ); 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); + const apiFileResponse = await fetch(download_url, { + cache: 'force-cache', + }); // Retrieves the content as a raw text string const source = await apiFileResponse.text(); @@ -72,9 +74,9 @@ export const dynamicParams = false; // Enforces that this route is used as static rendering // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic -export const dynamic = 'error'; +export const dynamic = 'force-static'; // Ensures that this endpoint is invalidated and re-executed every X minutes // so that when new deployments happen, the data is refreshed // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = VERCEL_REVALIDATE; +export const revalidate = 300; diff --git a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts index e00c2305a10c8..efd8706d84f93 100644 --- a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts +++ b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts @@ -1,19 +1,19 @@ import { - provideBlogCategories, provideBlogPosts, providePaginatedBlogPosts, } from '@/next-data/providers/blogData'; -import { VERCEL_REVALIDATE } from '@/next.constants.mjs'; import { defaultLocale } from '@/next.locales.mjs'; type StaticParams = { - params: { locale: string; category: string; page: string }; + params: Promise<{ locale: string; category: string; page: string }>; }; // This is the Route Handler for the `GET` method which handles the request // for providing Blog Posts for Blog Categories and Pagination Metadata // @see https://nextjs.org/docs/app/building-your-application/routing/router-handlers -export const GET = async (_: Request, { params }: StaticParams) => { +export const GET = async (_: Request, props: StaticParams) => { + const params = await props.params; + const requestedPage = Number(params.page); const data = @@ -27,41 +27,18 @@ export const GET = async (_: Request, { params }: StaticParams) => { }; // This function generates the static paths that come from the dynamic segments -// `[locale]/next-data/blog-data/[category]` and returns an array of all available static paths -// This is used for ISR static validation and generation -export const generateStaticParams = async () => { - // This metadata is the original list of all available categories and all available years - // within the Node.js Website Blog Posts (2011, 2012...) - const categories = provideBlogCategories(); - - const mappedCategories = categories.map(category => { - // gets the current pagination meta for a given category - const { pagination } = provideBlogPosts(category); - - // creates a sequential array containing each page number - const pages = [...Array(pagination.pages).keys()].map((_, key) => key + 1); - - // maps the data into valid Next.js Route Engine routes with all required params - // notice that we add an extra 0 in the beginning in case we want a non-paginated route - return [0, ...pages].map(page => ({ - locale: defaultLocale.code, - page: String(page), - category, - })); - }); - - return mappedCategories.flat(); -}; - -// Enforces that only the paths from `generateStaticParams` are allowed, giving 404 on the contrary -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamicparams -export const dynamicParams = false; +// `[locale]/next-data/blog-data/[category]/[page]` this will return a default value as we don't want to +// statically generate this route as it is compute-expensive. +// Hence we generate a "fake" OG image during build just to satisfy Next.js requirements. +export const generateStaticParams = async () => [ + { locale: defaultLocale.code, category: 'all', page: '0' }, +]; // Enforces that this route is cached and static as much as possible // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic -export const dynamic = 'error'; +export const dynamic = 'force-static'; // Ensures that this endpoint is invalidated and re-executed every X minutes // so that when new deployments happen, the data is refreshed // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = VERCEL_REVALIDATE; +export const revalidate = 300; diff --git a/apps/site/app/[locale]/next-data/changelog-data/[version]/route.ts b/apps/site/app/[locale]/next-data/changelog-data/[version]/route.ts deleted file mode 100644 index 9184ee68af578..0000000000000 --- a/apps/site/app/[locale]/next-data/changelog-data/[version]/route.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { provideChangelogData } from '@/next-data/providers/changelogData'; -import provideReleaseData from '@/next-data/providers/releaseData'; -import { VERCEL_REVALIDATE } from '@/next.constants.mjs'; -import { defaultLocale } from '@/next.locales.mjs'; - -type StaticParams = { - params: { version: string }; -}; - -// This is the Route Handler for the `GET` method which handles the request -// for generating static data related to the Node.js Changelog Data -// @see https://nextjs.org/docs/app/building-your-application/routing/router-handlers -export const GET = async (_: Request, { params }: StaticParams) => { - const changelogData = await provideChangelogData(params.version); - - return Response.json(changelogData); -}; - -// This function generates the static paths that come from the dynamic segments -// `[locale]/next-data/changelog-data/[version]` and returns an array of all available static paths -// This is used for ISR static validation and generation -export const generateStaticParams = async () => { - const releases = provideReleaseData(); - - const mappedParams = releases.map(release => ({ - locale: defaultLocale.code, - version: String(release.versionWithPrefix), - })); - - return mappedParams; -}; - -// Enforces that only the paths from `generateStaticParams` are allowed, giving 404 on the contrary -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamicparams -export const dynamicParams = false; - -// Enforces that this route is used as static rendering -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic -export const dynamic = 'error'; - -// Ensures that this endpoint is invalidated and re-executed every X minutes -// so that when new deployments happen, the data is refreshed -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = VERCEL_REVALIDATE; 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 new file mode 100644 index 0000000000000..9df04e144b735 --- /dev/null +++ b/apps/site/app/[locale]/next-data/og/[category]/[title]/route.tsx @@ -0,0 +1,67 @@ +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'; +import { hexToRGBA } from '@/util/hexToRGBA'; + +const CATEGORY_TO_THEME_COLOUR_MAP = { + announcement: tailwindConfig.theme.colors.green['700'], + release: tailwindConfig.theme.colors.info['600'], + vulnerability: tailwindConfig.theme.colors.warning['600'], +}; + +type StaticParams = { + params: Promise<{ + locale: string; + category: keyof typeof CATEGORY_TO_THEME_COLOUR_MAP; + title: string; + }>; +}; + +// This is the Route Handler for the `GET` method which handles the request +// for generating OpenGraph images for Blog Posts and Pages +// @see https://nextjs.org/docs/app/building-your-application/routing/router-handlers +export const GET = async (_: Request, props: StaticParams) => { + const params = await props.params; + + const categoryColour = + params.category in CATEGORY_TO_THEME_COLOUR_MAP + ? CATEGORY_TO_THEME_COLOUR_MAP[params.category] + : CATEGORY_TO_THEME_COLOUR_MAP[DEFAULT_CATEGORY_OG_TYPE]; + + const gridBackground = `radial-gradient(circle, ${hexToRGBA(categoryColour)}, transparent)`; + + return new ImageResponse( + ( +
+ + +
+ + +

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

+
+
+ ), + { width: 1200, height: 600 } + ); +}; + +// This function generates the static paths that come from the dynamic segments +// `[locale]/next-data/og/[category]/[title]` this will return a default value as we don't want to +// statically generate this route as it is compute-expensive. +// Hence we generate a "fake" OG image during build just to satisfy Next.js requirements. +export const generateStaticParams = async () => [ + { + locale: defaultLocale.code, + category: 'announcement', + title: 'Run JavaScript Everywhere', + }, +]; + +// Enforces that this route is cached and static as much as possible +// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic +export const dynamic = 'force-static'; diff --git a/apps/site/app/[locale]/next-data/og/route.tsx b/apps/site/app/[locale]/next-data/og/route.tsx deleted file mode 100644 index 481826099722c..0000000000000 --- a/apps/site/app/[locale]/next-data/og/route.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { ImageResponse } from 'next/og'; - -import HexagonGrid from '@/components/Icons/HexagonGrid'; -import JsIconWhite from '@/components/Icons/Logos/JsIconWhite'; -import { - ENABLE_STATIC_EXPORT, - VERCEL_ENV, - VERCEL_REVALIDATE, -} from '@/next.constants.mjs'; -import { defaultLocale } from '@/next.locales.mjs'; -import tailwindConfig from '@/tailwind.config'; -import { hexToRGBA } from '@/util/hexToRGBA'; - -// This is the default type of blog post type that we use for OG -const defaultTypeParam = 'announcement'; - -// This is the Route Handler for the `GET` method which handles the request -// for generating OpenGrapgh images for Blog Posts and Pages -// @see https://nextjs.org/docs/app/building-your-application/routing/router-handlers -export const GET = async (request: Request) => { - const { searchParams } = new URL(request.url); - - // ?title= - const hasTitle = searchParams.has('title'); - const title = hasTitle ? searchParams.get('title')?.slice(0, 100) : undefined; - - // ?type=<type> - if undefined default to announcement - const typeParam = searchParams.get('type') ?? defaultTypeParam; - - const typeAttributes: { [key: string]: string } = { - announcement: tailwindConfig.theme.colors.green['700'], - release: tailwindConfig.theme.colors.info['600'], - vulnerability: tailwindConfig.theme.colors.warning['600'], - }; - - // use the mapped value, or if not found use announcement - const type = typeAttributes[typeParam] ?? typeAttributes[defaultTypeParam]; - - const gridBackground = `radial-gradient(circle, ${hexToRGBA(type)}, transparent)`; - - return new ImageResponse( - ( - <div tw="relative flex items-center justify-center bg-black w-[1200px] h-[600px]"> - <HexagonGrid style={{ background: gridBackground }} /> - - <div tw="absolute mx-auto flex max-w-xl flex-col text-center text-3xl font-semibold text-white"> - <JsIconWhite width={71} height={80} tw="mx-auto" /> - - <h2>{title}</h2> - </div> - </div> - ), - { width: 1200, height: 600 } - ); -}; - -// This route is fully dynamic hence there shouldn't be any static param -// available to ensure that the route is not statically generated -export const generateStaticParams = async () => [ - { locale: defaultLocale.code }, -]; - -// We want to use `edge` runtime when using Vercel -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#runtime -export const runtime = VERCEL_ENV ? 'edge' : 'nodejs'; - -// In this case we want to catch-all possible requests. This ensures that we always generate and -// serve the OpenGrapgh images independently on the locale -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamicparams -export const dynamicParams = true; - -// Enforces that this route is used as static rendering -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic -export const dynamic = ENABLE_STATIC_EXPORT ? 'force-static' : 'auto'; - -// Ensures that this endpoint is invalidated and re-executed every X minutes -// so that when new deployments happen, the data is refreshed -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = VERCEL_REVALIDATE; diff --git a/apps/site/app/[locale]/next-data/page-data/route.ts b/apps/site/app/[locale]/next-data/page-data/route.ts index b779e64569224..4259685cfecf3 100644 --- a/apps/site/app/[locale]/next-data/page-data/route.ts +++ b/apps/site/app/[locale]/next-data/page-data/route.ts @@ -2,7 +2,6 @@ import { deflateSync } from 'node:zlib'; import matter from 'gray-matter'; -import { VERCEL_REVALIDATE } from '@/next.constants.mjs'; import { dynamicRouter } from '@/next.dynamic.mjs'; import { defaultLocale } from '@/next.locales.mjs'; import { parseRichTextIntoPlainText } from '@/util/stringUtils'; @@ -69,4 +68,4 @@ export const dynamic = 'error'; // Ensures that this endpoint is invalidated and re-executed every X minutes // so that when new deployments happen, the data is refreshed // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = VERCEL_REVALIDATE; +export const revalidate = 300; diff --git a/apps/site/app/[locale]/next-data/release-data/route.ts b/apps/site/app/[locale]/next-data/release-data/route.ts index a664ad9cf3ef6..6d72572315f39 100644 --- a/apps/site/app/[locale]/next-data/release-data/route.ts +++ b/apps/site/app/[locale]/next-data/release-data/route.ts @@ -1,5 +1,4 @@ import provideReleaseData from '@/next-data/providers/releaseData'; -import { VERCEL_REVALIDATE } from '@/next.constants.mjs'; import { defaultLocale } from '@/next.locales.mjs'; // This is the Route Handler for the `GET` method which handles the request @@ -29,4 +28,4 @@ export const dynamic = 'error'; // Ensures that this endpoint is invalidated and re-executed every X minutes // so that when new deployments happen, the data is refreshed // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = VERCEL_REVALIDATE; +export const revalidate = 300; diff --git a/apps/site/app/[locale]/[[...path]]/page.tsx b/apps/site/app/[locale]/page.tsx similarity index 67% rename from apps/site/app/[locale]/[[...path]]/page.tsx rename to apps/site/app/[locale]/page.tsx index 14aff4e2d41b4..75d023daf9cf7 100644 --- a/apps/site/app/[locale]/[[...path]]/page.tsx +++ b/apps/site/app/[locale]/page.tsx @@ -1,23 +1,27 @@ -import { setContext, setTags } from '@sentry/nextjs'; +/** + * This file contains the logic for rendering our dynamic and static routes within the Node.js Website + * this page route template is used to render the entry points for each locale and then also reused within + * the [...path] route to render the individual pages under each locale of the Website. + * + * Note: that each `page.tsx` should have its own `generateStaticParams` to prevent clash of + * dynamic params, which will lead on static export errors and other sort of issues. + */ + import { notFound, redirect } from 'next/navigation'; -import { unstable_setRequestLocale } from 'next-intl/server'; +import { setRequestLocale } from 'next-intl/server'; import type { FC } from 'react'; import { setClientContext } from '@/client-context'; -import { MDXRenderer } from '@/components/mdxRenderer'; import WithLayout from '@/components/withLayout'; -import { ENABLE_STATIC_EXPORT, VERCEL_REVALIDATE } from '@/next.constants.mjs'; +import { ENABLE_STATIC_EXPORT } from '@/next.constants.mjs'; import { PAGE_VIEWPORT, DYNAMIC_ROUTES } from '@/next.dynamic.constants.mjs'; import { dynamicRouter } from '@/next.dynamic.mjs'; -import { - allLocaleCodes, - availableLocaleCodes, - defaultLocale, -} from '@/next.locales.mjs'; +import { allLocaleCodes, availableLocaleCodes } from '@/next.locales.mjs'; +import { defaultLocale } from '@/next.locales.mjs'; import { MatterProvider } from '@/providers/matterProvider'; type DynamicStaticPaths = { path: Array<string>; locale: string }; -type DynamicParams = { params: DynamicStaticPaths }; +type DynamicParams = { params: Promise<DynamicStaticPaths> }; // This is the default Viewport Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-viewport#generateviewport-function @@ -25,51 +29,35 @@ export const generateViewport = async () => ({ ...PAGE_VIEWPORT }); // This generates each page's HTML Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata -export const generateMetadata = async ({ params }: DynamicParams) => { - const { path = [], locale = defaultLocale.code } = params; +export const generateMetadata = async (props: DynamicParams) => { + const { path = [], locale = defaultLocale.code } = await props.params; const pathname = dynamicRouter.getPathname(path); return dynamicRouter.getPageMetadata(locale, pathname); }; -// Gets all mapped routes to the Next.js Routing Engine by Locale -const mapRoutesForLocale = async (locale: string) => { - const routesForLanguage = await dynamicRouter.getRoutesByLanguage(locale); - - return routesForLanguage.map(pathname => - dynamicRouter.mapPathToRoute(locale, pathname) - ); -}; - // This provides all the possible paths that can be generated statically // + provides all the paths that we support on the Node.js Website export const generateStaticParams = async () => { - const paths: Array<DynamicStaticPaths> = []; - - // If static exports are enabled we need to compute all available routes - // And then append them to Next.js's Route Engine - if (ENABLE_STATIC_EXPORT) { - const allAvailableRoutes = await Promise.all( - availableLocaleCodes.map(mapRoutesForLocale) - ); - - paths.push(...allAvailableRoutes.flat()); - } + const allAvailableRoutes = await Promise.all( + // Gets all mapped routes to the Next.js Routing Engine by Locale + availableLocaleCodes.map((locale: string) => ({ locale })) + ); - return paths.sort(); + return ENABLE_STATIC_EXPORT ? allAvailableRoutes.flat().sort() : []; }; // This method parses the current pathname and does any sort of modifications needed on the route // then it proceeds to retrieve the Markdown file and parse the MDX Content into a React Component // finally it returns (if the locale and route are valid) the React Component with the relevant context // and attached context providers for rendering the current page -const getPage: FC<DynamicParams> = async ({ params }) => { - const { path = [], locale = defaultLocale.code } = params; +const getPage: FC<DynamicParams> = async props => { + const { path = [], locale = defaultLocale.code } = await props.params; if (!availableLocaleCodes.includes(locale)) { // Forces the current locale to be the Default Locale - unstable_setRequestLocale(defaultLocale.code); + setRequestLocale(defaultLocale.code); if (!allLocaleCodes.includes(locale)) { // when the locale is not listed in the locales, return NotFound @@ -78,11 +66,12 @@ const getPage: FC<DynamicParams> = async ({ params }) => { // Redirect to the default locale path const pathname = dynamicRouter.getPathname(path); + return redirect(`/${defaultLocale.code}/${pathname}`); } // Configures the current Locale to be the given Locale of the Request - unstable_setRequestLocale(locale); + setRequestLocale(locale); // Gets the current full pathname for a given path const pathname = dynamicRouter.getPathname(path); @@ -93,9 +82,6 @@ const getPage: FC<DynamicParams> = async ({ params }) => { // it means it does not have a Markdown file nor exists under the filesystem // but it is a valid route with an assigned layout that should be rendered if (staticGeneratedLayout !== undefined) { - // Decorate the Locale and current Pathname to Sentry - setTags({ pathname, locale }); - // Metadata and shared Context to be available through the lifecycle of the page const sharedContext = { pathname: `/${pathname}` }; @@ -121,13 +107,10 @@ const getPage: FC<DynamicParams> = async ({ params }) => { pathname ); - // Decorate the Locale and current Pathname to Sentry - setTags({ pathname, locale, filename }); - if (source.length && filename.length) { // This parses the source Markdown content and returns a React Component and // relevant context from the Markdown File - const { MDXContent, frontmatter, headings, readingTime } = + const { content, frontmatter, headings, readingTime } = await dynamicRouter.getMDXContent(source, filename); // Metadata and shared Context to be available through the lifecycle of the page @@ -139,13 +122,6 @@ const getPage: FC<DynamicParams> = async ({ params }) => { filename, }; - // Add Additional relevant reproduction Context from MDX - setContext('MDX Provider', { - frontmatter, - headings, - readingTime, - }); - // Defines a shared Server Context for the Client-Side // That is shared for all pages under the dynamic router setClientContext(sharedContext); @@ -155,9 +131,7 @@ const getPage: FC<DynamicParams> = async ({ params }) => { // within a server-side context return ( <MatterProvider {...sharedContext}> - <WithLayout layout={frontmatter.layout}> - <MDXRenderer Component={MDXContent} /> - </WithLayout> + <WithLayout layout={frontmatter.layout}>{content}</WithLayout> </MatterProvider> ); } @@ -165,11 +139,6 @@ const getPage: FC<DynamicParams> = async ({ params }) => { return notFound(); }; -// In this case we want to catch-all possible pages even to this page. This ensures that we use our 404 -// and that all pages including existing ones are handled here and provide `next-intl` locale also -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamicparams -export const dynamicParams = true; - // Enforces that this route is used as static rendering // Except whenever on the Development mode as we want instant-refresh when making changes // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic @@ -178,6 +147,6 @@ export const dynamic = 'force-static'; // Ensures that this endpoint is invalidated and re-executed every X minutes // so that when new deployments happen, the data is refreshed // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = VERCEL_REVALIDATE; +export const revalidate = 300; export default getPage; diff --git a/apps/site/app/global-error.tsx b/apps/site/app/global-error.tsx index cb99e04c2fb36..53238830c7a2c 100644 --- a/apps/site/app/global-error.tsx +++ b/apps/site/app/global-error.tsx @@ -1,35 +1,30 @@ 'use client'; import { ArrowRightIcon } from '@heroicons/react/24/solid'; -import { captureException } from '@sentry/nextjs'; import type { FC } from 'react'; import Button from '@/components/Common/Button'; import BaseLayout from '@/layouts/Base'; import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; -const GlobalErrorPage: FC<{ error: Error }> = ({ error }) => { - captureException(error); - - return ( - <html> - <body> - <BaseLayout> - <GlowingBackdropLayout> - 500 - <h1 className="special -mt-4 text-center">Internal Server Error</h1> - <p className="-mt-4 max-w-sm text-center text-lg"> - This page has thrown a non-recoverable error. - </p> - <Button href="/"> - Back to Home - <ArrowRightIcon /> - </Button> - </GlowingBackdropLayout> - </BaseLayout> - </body> - </html> - ); -}; +const GlobalErrorPage: FC<{ error: Error }> = () => ( + <html> + <body> + <BaseLayout> + <GlowingBackdropLayout> + 500 + <h1 className="special -mt-4 text-center">Internal Server Error</h1> + <p className="-mt-4 max-w-sm text-center text-lg"> + This page has thrown a non-recoverable error. + </p> + <Button href="/"> + Back to Home + <ArrowRightIcon /> + </Button> + </GlowingBackdropLayout> + </BaseLayout> + </body> + </html> +); export default GlobalErrorPage; diff --git a/apps/site/components/Common/Tabs/__tests__/index.test.mjs b/apps/site/components/Common/Tabs/__tests__/index.test.mjs index a5fccf803e11c..5cd33f3c6c6f3 100644 --- a/apps/site/components/Common/Tabs/__tests__/index.test.mjs +++ b/apps/site/components/Common/Tabs/__tests__/index.test.mjs @@ -2,6 +2,7 @@ import * as TabsPrimitive from '@radix-ui/react-tabs'; import { act, render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; +import Link from '../../../Link'; import Tabs from '../index'; describe('Tabs', () => { @@ -46,7 +47,7 @@ describe('Tabs', () => { }); it('should render the given addons', async () => { - render(<Sut addons={<a href="/">addon</a>} />); + render(<Sut addons={<Link href="/">addon</Link>} />); expect(screen.getByRole('link', { name: 'addon' })).toBeInTheDocument(); }); diff --git a/apps/site/components/Downloads/ChangelogModal/index.module.css b/apps/site/components/Downloads/ChangelogModal/index.module.css deleted file mode 100644 index 844d065eab38d..0000000000000 --- a/apps/site/components/Downloads/ChangelogModal/index.module.css +++ /dev/null @@ -1,99 +0,0 @@ -.overlay { - @apply fixed - inset-0 - flex - justify-center - bg-white/40 - backdrop-blur-[2px] - dark:bg-neutral-950/40; - - .content { - @apply relative - mx-4 - my-4 - inline-flex - w-full - flex-col - overflow-y-auto - rounded - border - border-neutral-200 - bg-white - p-6 - focus:outline-none - sm:my-20 - sm:p-8 - lg:max-w-[900px] - xl:p-12 - dark:border-neutral-900 - dark:bg-neutral-950; - } - - .close { - @apply absolute - right-3 - top-3 - block - size-6 - cursor-pointer - rounded - focus:outline-none - focus:ring-2 - focus:ring-neutral-200 - dark:focus:ring-neutral-900; - } - - .title { - @apply mb-2 - text-3xl - font-semibold - text-neutral-900 - dark:text-white; - } - - .description { - @apply font-regular - mb-4 - text-lg - text-neutral-800 - dark:text-neutral-200; - } - - .authors { - @apply mb-8 - flex - flex-wrap - items-center - gap-4; - - a { - @apply flex - items-center - gap-1 - text-xs - text-neutral-600 - underline - visited:text-neutral-600; - } - - svg { - @apply size-3 - text-neutral-600; - } - } - - .wrapper main { - @apply flex - flex-col - gap-4; - - pre { - @apply overflow-auto; - } - - code, - a { - @apply break-words; - } - } -} diff --git a/apps/site/components/Downloads/ChangelogModal/index.stories.tsx b/apps/site/components/Downloads/ChangelogModal/index.stories.tsx deleted file mode 100644 index a08e8bd299ee4..0000000000000 --- a/apps/site/components/Downloads/ChangelogModal/index.stories.tsx +++ /dev/null @@ -1,210 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import { VFile } from 'vfile'; - -import ChangelogModal from '@/components/Downloads/ChangelogModal'; -import { MDXRenderer } from '@/components/mdxRenderer'; -import { compileMDX } from '@/next.mdx.compiler.mjs'; -import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; - -type Story = StoryObj<typeof ChangelogModal>; -type Meta = MetaObj<typeof ChangelogModal>; - -const names = [ - 'ovflowd', - 'bmuenzenmeyer', - 'AugustinMauroy', - 'HinataKah0', - 'Harkunwar', - 'rodion-arr', - 'mikeesto', - 'bnb', - 'benhalverson', - 'aymen94', - 'shanpriyan', - 'Wai-Dung', - 'manishprivet', - 'araujogui', - 'thefossildev', -]; - -const children = ` -### Notable Changes - -#### Ada 2.0 - -Node.js v18.17.0 comes with the latest version of the URL parser, Ada. This update brings significant performance improvements -to URL parsing, including enhancements to the url.domainToASCII and url.domainToUnicode functions in node:url. - -Ada 2.0 has been integrated into the Node.js codebase, ensuring that all parts of the application can benefit from the -improved performance. Additionally, Ada 2.0 features a significant performance boost over its predecessor, Ada 1.0.4, -while also eliminating the need for the ICU requirement for URL hostname parsing. - -Contributed by Yagiz Nizipli and Daniel Lemire in [#47339](https://github.com/nodejs/node/pull/47339) - -#### Web Crypto API - -Web Crypto API functions' arguments are now coerced and validated as per their WebIDL definitions like in other Web Crypto API implementations. -This further improves interoperability with other implementations of Web Crypto API. - -Contributed by Filip Skokan in [#46067](https://github.com/nodejs/node/pull/46067) - -- **crypto**: - - update root certificates to NSS 3.89 (Node.js GitHub Bot) [#47659](https://github.com/nodejs/node/pull/47659) -- **dns**: - - **(SEMVER-MINOR)** expose getDefaultResultOrder (btea) [#46973](https://github.com/nodejs/node/pull/46973) -- **doc**: - - add ovflowd to collaborators (Claudio Wunder) [#47844](https://github.com/nodejs/node/pull/47844) - - add KhafraDev to collaborators (Matthew Aitken) [#47510](https://github.com/nodejs/node/pull/47510) -- **events**: - - **(SEMVER-MINOR)** add getMaxListeners method (Matthew Aitken) [#47039](https://github.com/nodejs/node/pull/47039) -- **fs**: - - **(SEMVER-MINOR)** add support for mode flag to specify the copy behavior (Tetsuharu Ohzeki) [#47084](https://github.com/nodejs/node/pull/47084) - - **(SEMVER-MINOR)** add recursive option to readdir and opendir (Ethan Arrowood) [#41439](https://github.com/nodejs/node/pull/41439) - - **(SEMVER-MINOR)** add support for mode flag to specify the copy behavior (Tetsuharu Ohzeki) [#47084](https://github.com/nodejs/node/pull/47084) - - **(SEMVER-MINOR)** implement byob mode for readableWebStream() (Debadree Chatterjee) [#46933](https://github.com/nodejs/node/pull/46933) -- **http**: - - **(SEMVER-MINOR)** prevent writing to the body when not allowed by HTTP spec (Gerrard Lindsay) [#47732](https://github.com/nodejs/node/pull/47732) - - **(SEMVER-MINOR)** remove internal error in assignSocket (Matteo Collina) [#47723](https://github.com/nodejs/node/pull/47723) - - **(SEMVER-MINOR)** add highWaterMark opt in http.createServer (HinataKah0) [#47405](https://github.com/nodejs/node/pull/47405) -- **lib**: - - **(SEMVER-MINOR)** add webstreams to Duplex.from() (Debadree Chatterjee) [#46190](https://github.com/nodejs/node/pull/46190) - - **(SEMVER-MINOR)** implement AbortSignal.any() (Chemi Atlow) [#47821](https://github.com/nodejs/node/pull/47821) -- **module**: - - change default resolver to not throw on unknown scheme (Gil Tayar) [#47824](https://github.com/nodejs/node/pull/47824) -- **node-api**: - - **(SEMVER-MINOR)** define version 9 (Chengzhong Wu) [#48151](https://github.com/nodejs/node/pull/48151) - - **(SEMVER-MINOR)** deprecate napi_module_register (Vladimir Morozov) [#46319](https://github.com/nodejs/node/pull/46319) -- **stream**: - - **(SEMVER-MINOR)** preserve object mode in compose (Raz Luvaton) [#47413](https://github.com/nodejs/node/pull/47413) - - **(SEMVER-MINOR)** add setter & getter for default highWaterMark (#46929) (Robert Nagy) [#46929](https://github.com/nodejs/node/pull/46929) -- **test**: - - unflake test-vm-timeout-escape-nexttick (Santiago Gimeno) [#48078](https://github.com/nodejs/node/pull/48078) -- **test_runner**: - - **(SEMVER-MINOR)** add shorthands to \`test\` (Chemi Atlow) [#47909](https://github.com/nodejs/node/pull/47909) - - **(SEMVER-MINOR)** support combining coverage reports (Colin Ihrig) [#47686](https://github.com/nodejs/node/pull/47686) - - **(SEMVER-MINOR)** execute before hook on test (Chemi Atlow) [#47586](https://github.com/nodejs/node/pull/47586) - - **(SEMVER-MINOR)** expose reporter for use in run api (Chemi Atlow) [#47238](https://github.com/nodejs/node/pull/47238) -- **tools**: - - update LICENSE and license-builder.sh (Santiago Gimeno) [#48078](https://github.com/nodejs/node/pull/48078) -- **url**: - - **(SEMVER-MINOR)** implement URL.canParse (Matthew Aitken) [#47179](https://github.com/nodejs/node/pull/47179) -- **wasi**: - - **(SEMVER-MINOR)** no longer require flag to enable wasi (Michael Dawson) [#47286](https://github.com/nodejs/node/pull/47286) - -### Commits - -- [[\`2ba08ac002\`](https://github.com/nodejs/node/commit/2ba08ac002)] - **benchmark**: use \`cluster.isPrimary\` instead of \`cluster.isMaster\` (Deokjin Kim) [#48002](https://github.com/nodejs/node/pull/48002) -- [[\`60ca69d96c\`](https://github.com/nodejs/node/commit/60ca69d96c)] - **benchmark**: add eventtarget creation bench (Rafael Gonzaga) [#47774](https://github.com/nodejs/node/pull/47774) -- [[\`d8233d96bb\`](https://github.com/nodejs/node/commit/d8233d96bb)] - **benchmark**: add a benchmark for \`defaultResolve\` (Antoine du Hamel) [#47543](https://github.com/nodejs/node/pull/47543) -- [[\`a1aabb6912\`](https://github.com/nodejs/node/commit/a1aabb6912)] - **benchmark**: fix invalid requirementsURL (Deokjin Kim) [#47378](https://github.com/nodejs/node/pull/47378) -- [[\`394c61caf9\`](https://github.com/nodejs/node/commit/394c61caf9)] - **bootstrap**: support namespaced builtins in snapshot scripts (Joyee Cheung) [#47467](https://github.com/nodejs/node/pull/47467) -- [[\`78972d4696\`](https://github.com/nodejs/node/commit/78972d4696)] - **worker**: support more cases when (de)serializing errors (Moshe Atlow) [#47925](https://github.com/nodejs/node/pull/47925) - -Windows 32-bit Installer: https://nodejs.org/dist/v18.17.0/node-v18.17.0-x86.msi \\ -Windows 64-bit Installer: https://nodejs.org/dist/v18.17.0/node-v18.17.0-x64.msi \\ -Windows 32-bit Binary: https://nodejs.org/dist/v18.17.0/win-x86/node.exe \\ -Windows 64-bit Binary: https://nodejs.org/dist/v18.17.0/win-x64/node.exe \\ -macOS 64-bit Installer: https://nodejs.org/dist/v18.17.0/node-v18.17.0.pkg \\ -macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v18.17.0/node-v18.17.0-darwin-arm64.tar.gz \\ -macOS Intel 64-bit Binary: https://nodejs.org/dist/v18.17.0/node-v18.17.0-darwin-x64.tar.gz \\ -Linux 64-bit Binary: https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-x64.tar.xz \\ -Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-ppc64le.tar.xz \\ -Linux s390x 64-bit Binary: _Coming soon_ \\ -AIX 64-bit Binary: https://nodejs.org/dist/v18.17.0/node-v18.17.0-aix-ppc64.tar.gz \\ -ARMv7 32-bit Binary: https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-armv7l.tar.xz \\ -ARMv8 64-bit Binary: https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-arm64.tar.xz \\ -Source Code: https://nodejs.org/dist/v18.17.0/node-v18.17.0.tar.gz \\ -Other release files: https://nodejs.org/dist/v18.17.0/ \\ -Documentation: https://nodejs.org/docs/v18.17.0/api/ - -### SHASUMS - -\`\`\` ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA256 - -b61952f8468fe50b24b46039ad795af4bbea3751ded7cb488ec52e5a332f91ce node-v18.17.0-aix-ppc64.tar.gz -19731ef427e77ad9c5f476eb62bfb02a7f179d3012feed0bbded62e45f23e679 node-v18.17.0-darwin-arm64.tar.gz -621cf884c4c27ddc595ff23f35ccd6fa1e827470581c30d31d779ba3cd6a162e node-v18.17.0-darwin-arm64.tar.xz -2f381442381f7fbde2ca644c3275bec9c9c2a8d361f467b40e39428acdd6ccff node-v18.17.0-darwin-x64.tar.gz -774734231d484d72e14f3327db6d7915abd3e2164ba577dd78affa5eade48a11 node-v18.17.0-darwin-x64.tar.xz -7c47c07521f8be7693f3b0436d2ef0cb5a490d070d1d9a3606decc55c39c41c4 node-v18.17.0-headers.tar.gz -1a7a3bbb7299f69e16a8ee2b327dd1c4811a9376bcafe41f8310467a9a9e3307 node-v18.17.0-headers.tar.xz -9d586f9d8b73a121b8a5438079c7106379aaae868f945a9f1755565607607944 node-v18.17.0-linux-arm64.tar.gz -fbd2904178ee47da6e0386bc9704a12b1f613da6ad194878a517d4a69ba56544 node-v18.17.0-linux-arm64.tar.xz -a9c3a56b3a407eca1fef7c688e6e7774cc492c9a5ae74f0baff2d8fe9b7b74c3 node-v18.17.0-linux-armv7l.tar.gz -a2f12295b2da1db23d6f48c5bfb5969e7bf26f663ca8256e1c246ca0ee44a71f node-v18.17.0-linux-armv7l.tar.xz -6da314c8ef1b6239290d9237ba14bd44cfd4382a6a59696a5f506c6c8dd353ad node-v18.17.0-linux-ppc64le.tar.gz -9fd9c215be8e54dcf8bbc42ba9e1342b05136be4bc12594ee40a29cedfaeaffd node-v18.17.0-linux-ppc64le.tar.xz -c39f8386ee916915949651cad3a735f988ec825c60fe591c0791b4883749bc8b node-v18.17.0-linux-s390x.tar.gz -876ca54c246d24e346d0c740fbb72c9fb7353369127f20492bc923ee6d0121db node-v18.17.0-linux-s390x.tar.xz -5c4a7fd9262c0c47bafab3442de6c3fed1602be3d243cb8cf11309a201955e75 node-v18.17.0-linux-x64.tar.gz -f36facda28c4d5ce76b3a1b4344e688d29d9254943a47f2f1909b1a10acb1959 node-v18.17.0-linux-x64.tar.xz -a4710e7da19464707582216557edcc5a15e29fca4a80599f89484cd867a66a73 node-v18.17.0.pkg -7aaa157c0219b5895a4bd51d9e9731e0d0eb0ab9424fdbdcf30d01b3e5fb74e9 node-v18.17.0.tar.gz -80c0faadf5ea39c213ccb9aa5c2432977a0f1b5a0b766852abd0de06f2770406 node-v18.17.0.tar.xz -daf06430be6380cd7416f0e9060b99bea821ceb72dacd55242ad84a5440cf45b node-v18.17.0-win-x64.7z -06e30b4e70b18d794651ef132c39080e5eaaa1187f938721d57edae2824f4e96 node-v18.17.0-win-x64.zip -d02327ddb3a6895a79b641fa4a456590bd7c8f0070a1915f2f76a70fd4ea7cc9 node-v18.17.0-win-x86.7z -6aef2e2ca6e0edf3cc85b5d8ae640caaab46e98da378c749d79a34fd78e0416e node-v18.17.0-win-x86.zip -dabdc4e683f0d0a835952ea5df61139fa6b679e25121d1941a2ae77d29e989f4 node-v18.17.0-x64.msi -724c4258aa878fd6286a41dc62a1128a10a918b5b3028de8d276126f3d1c5b1d node-v18.17.0-x86.msi -da74bcc1606026f05523c33e7882cc0ca4e0786a532bb80f932873eca9bdb431 win-x64/node.exe -fce36923d974ac8f9cea4bd68e56ab055797fd5b5ede5041b228d642a0d9bb40 win-x64/node.lib -221209e2d1defb5a59900e6a05e1c4b3d5bebca80048df4649436346a7944e59 win-x64/node_pdb.7z -792a2f132f5753a21c241629956ac4b0251baafbbf1afb0fcd96cf6c672727a8 win-x64/node_pdb.zip -da188adf811f97ba7da777dca949456936cc2ce1a540175f5c9e4f64169bddaf win-x86/node.exe -7982f49aac6ff5b4cfaa236793f62a8c18b0bc9f1f2903617b9fdafee377bb2b win-x86/node.lib -38c62a693d89e4b38863268f7286fc3fab8d5ce24bd4b7b3ed5a151b9f1b53b7 win-x86/node_pdb.7z -2da36082fae828d4faf45226775a7bee90f3d6e7e92cbf7a69c89b287a762f89 win-x86/node_pdb.zip ------BEGIN PGP SIGNATURE----- -iQIzBAEBCAAdFiEEdPEmArbxxOkT+qN606iWE2Q7YgEFAmS26kQACgkQ06iWE2Q7 -YgGjxRAAnK6iw0ZQI6CvfuJgJsaV7bj3Y8nj/CvMaj7o2CzgMLpY4r8aj5Mlt60U -K2exJOY+h3Z6CQExZITp+k2v8j07R+xiCEYt9K6UkZwxbCI4UJNePGPjphHwq6/R -dQk9i6GRd1lhhSYxqEqRSSptY9vFKfEczJgyUqWQGtNCX1hW15osvK6B/tZN4/bs -sYnTEImOkoFjz3GRj8PEMv42tF7aRUhC2E8Xsl0jZlt/n9GWe7LX3f2OJfczafJo -Q7bj670pUCHxpHxvjHsg/lWDuunWDvNIZSMFvR71VI3PIe45s2WoRO/jDNxJ9wyt -CBlfb08LEOnBHxV8au1GZQqvRaLedD51j9N7IwvQb3DDdq7T3msuIDzlZiByj5aZ -E2wGiVYetevuSogOf49CO99MexciDcCdwRSY79cg5Ar92Zl3xzrcErmXWsJd72p9 -AAdTZQKtTKih0k3YKtYBe0c4gMm8U8bfQ12RiVQPUJMnwYbOIZ3l/6omuKN458Hm -poxXU/aUN6KCNR/5UfGivKr8EVjjO8EvHj/txHCmiEz/YhM7dbHFBQdfCY/EWKap -IYUAiR4jIWhGYFS3dbwxhCZHTIPfIK3DtqvQBtU07wa1WSAkKKSMCgBHAKOlDwap -ZCVKLyezajjko28SugXGjegEjcY4o7v23XghhW6RAbEB6R8TZDo= -=Y5D8 ------END PGP SIGNATURE----- -\`\`\` -`; - -export const Default: Story = { - args: { - open: false, - heading: 'Node v18.17.0', - subheading: "2023-07-18, Version 18.17.0 'Hydrogen' (LTS), @danielleadams", - avatars: names.map(name => ({ - src: getGitHubAvatarUrl(name), - alt: name, - })), - children, - }, - render: (_, { loaded: { Content } }) => Content, - loaders: [ - async ({ args: { children, ...props } }) => { - const { MDXContent } = await compileMDX( - new VFile(children?.toString()), - 'md' - ); - - return { - Content: ( - <ChangelogModal {...props}> - <main> - <MDXRenderer Component={MDXContent} /> - </main> - </ChangelogModal> - ), - }; - }, - ], -}; - -export default { component: ChangelogModal } as Meta; diff --git a/apps/site/components/Downloads/ChangelogModal/index.tsx b/apps/site/components/Downloads/ChangelogModal/index.tsx deleted file mode 100644 index 3c2fe26a7cbec..0000000000000 --- a/apps/site/components/Downloads/ChangelogModal/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -'use client'; - -import { ArrowUpRightIcon, XMarkIcon } from '@heroicons/react/24/outline'; -import * as Dialog from '@radix-ui/react-dialog'; -import { useTranslations } from 'next-intl'; -import type { FC, PropsWithChildren, ComponentProps } from 'react'; - -import AvatarGroup from '@/components/Common/AvatarGroup'; -import Link from '@/components/Link'; - -import styles from './index.module.css'; - -type ChangelogModalProps = PropsWithChildren<{ - heading: string; - subheading: string; - avatars: ComponentProps<typeof AvatarGroup>['avatars']; - open?: boolean; - onOpenChange?: (open: boolean) => void; -}>; - -const ChangelogModal: FC<ChangelogModalProps> = ({ - heading, - subheading, - avatars, - children, - open = false, - onOpenChange = () => {}, -}) => { - const t = useTranslations(); - - return ( - <Dialog.Root open={open} onOpenChange={onOpenChange}> - <Dialog.Portal> - <Dialog.Overlay className={styles.overlay}> - <Dialog.Content className={styles.content}> - <Dialog.Trigger className={styles.close}> - <XMarkIcon /> - </Dialog.Trigger> - - <Dialog.Title className={styles.title}>{heading}</Dialog.Title> - - <Dialog.Description className={styles.description}> - {subheading} - </Dialog.Description> - - <div className={styles.authors}> - <AvatarGroup avatars={avatars} isExpandable={false} /> - - <Link href="/about/get-involved"> - {t('components.downloads.changelogModal.startContributing')} - <ArrowUpRightIcon /> - </Link> - </div> - - <div className={styles.wrapper}>{children}</div> - - <Dialog.Close /> - </Dialog.Content> - </Dialog.Overlay> - </Dialog.Portal> - </Dialog.Root> - ); -}; - -export default ChangelogModal; diff --git a/apps/site/components/Downloads/Release/ChangelogLink.tsx b/apps/site/components/Downloads/Release/ChangelogLink.tsx index 8fde7046bfe4b..740c0adaec12d 100644 --- a/apps/site/components/Downloads/Release/ChangelogLink.tsx +++ b/apps/site/components/Downloads/Release/ChangelogLink.tsx @@ -4,19 +4,16 @@ import type { FC, PropsWithChildren } from 'react'; import { useContext } from 'react'; import LinkWithArrow from '@/components/Downloads/Release/LinkWithArrow'; +import Link from '@/components/Link'; +import { BASE_CHANGELOG_URL } from '@/next.constants.mjs'; import { ReleaseContext } from '@/providers/releaseProvider'; const ChangelogLink: FC<PropsWithChildren> = ({ children }) => { - const { modalOpen, setModalOpen } = useContext(ReleaseContext); + const { release } = useContext(ReleaseContext); return ( <LinkWithArrow asChild> - <button - className="anchor cursor-pointer" - onClick={() => setModalOpen(!modalOpen)} - > - {children} - </button> + <Link href={`${BASE_CHANGELOG_URL}${release.version}`}>{children}</Link> </LinkWithArrow> ); }; diff --git a/apps/site/components/Downloads/Release/ReleaseStatus.tsx b/apps/site/components/Downloads/Release/ReleaseStatus.tsx index 40a6360964310..a1ec10b34713a 100644 --- a/apps/site/components/Downloads/Release/ReleaseStatus.tsx +++ b/apps/site/components/Downloads/Release/ReleaseStatus.tsx @@ -10,7 +10,7 @@ const ReleaseStatus: FC = () => { release: { status }, } = useContext(ReleaseContext); - return <>{status}</>; + return status; }; export default ReleaseStatus; diff --git a/apps/site/components/Downloads/Release/ReleaseVersion.tsx b/apps/site/components/Downloads/Release/ReleaseVersion.tsx index c485af2c607d2..9c759611eb9c6 100644 --- a/apps/site/components/Downloads/Release/ReleaseVersion.tsx +++ b/apps/site/components/Downloads/Release/ReleaseVersion.tsx @@ -10,7 +10,7 @@ const ReleaseVersion: FC = () => { release: { version }, } = useContext(ReleaseContext); - return <>{version}</>; + return version; }; export default ReleaseVersion; diff --git a/apps/site/components/MDX/CodeBox/index.stories.tsx b/apps/site/components/MDX/CodeBox/index.stories.tsx index a460d95f8da7b..7a0791ac2fbae 100644 --- a/apps/site/components/MDX/CodeBox/index.stories.tsx +++ b/apps/site/components/MDX/CodeBox/index.stories.tsx @@ -1,8 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import { VFile } from 'vfile'; -import { MDXRenderer } from '@/components/mdxRenderer'; -import { compileMDX } from '@/next.mdx.compiler.mjs'; +import { compile } from '@/next.mdx.compiler.mjs'; type Props = { children: string }; @@ -35,9 +34,9 @@ export default { render: (_, { loaded: { Content } }) => Content, loaders: [ async ({ args }) => { - const { MDXContent } = await compileMDX(new VFile(args.children), 'mdx'); + const { content } = await compile(new VFile(args.children), 'mdx'); - return { Content: <MDXRenderer Component={MDXContent} /> }; + return { Content: content }; }, ], } as Meta; diff --git a/apps/site/components/MDX/CodeTabs/index.stories.tsx b/apps/site/components/MDX/CodeTabs/index.stories.tsx index 45889e0b47888..f82770f1aa8f0 100644 --- a/apps/site/components/MDX/CodeTabs/index.stories.tsx +++ b/apps/site/components/MDX/CodeTabs/index.stories.tsx @@ -1,8 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import { VFile } from 'vfile'; -import { MDXRenderer } from '@/components/mdxRenderer'; -import { compileMDX } from '@/next.mdx.compiler.mjs'; +import { compile } from '@/next.mdx.compiler.mjs'; type Props = { children: string }; @@ -44,9 +43,9 @@ export default { render: (_, { loaded: { Content } }) => Content, loaders: [ async ({ args }) => { - const { MDXContent } = await compileMDX(new VFile(args.children), 'mdx'); + const { content } = await compile(new VFile(args.children), 'mdx'); - return { Content: <MDXRenderer Component={MDXContent} /> }; + return { Content: content }; }, ], } as Meta; diff --git a/apps/site/components/__mocks__/client-context.mjs b/apps/site/components/__mocks__/client-context.mjs new file mode 100644 index 0000000000000..ec3641ce50625 --- /dev/null +++ b/apps/site/components/__mocks__/client-context.mjs @@ -0,0 +1,9 @@ +export const getClientContext = () => ({ + frontmatter: '', + pathname: '', + headings: [], + readingTime: {}, + filename: '', +}); + +export const setClientContext = () => void null; diff --git a/apps/site/components/__mocks__/next-intl.mjs b/apps/site/components/__mocks__/next-intl.mjs index a84400384381c..c767d0be72542 100644 --- a/apps/site/components/__mocks__/next-intl.mjs +++ b/apps/site/components/__mocks__/next-intl.mjs @@ -1,6 +1,3 @@ -import Link from 'next/link'; -import { redirect, usePathname, useRouter } from 'next/navigation'; - export const useMessages = () => ({}); export const useNow = () => new Date(); @@ -27,9 +24,9 @@ export const useFormatter = () => { export const NextIntlClientProvider = ({ children }) => children; -export const createSharedPathnamesNavigation = () => ({ - Link: Link, - redirect: redirect, - usePathname: usePathname, - useRouter: useRouter, +export const createNavigation = () => ({ + Link: props => <a {...props} onClick={e => e.preventDefault()} />, + redirect: () => void null, + usePathname: () => '', + useRouter: () => ({ push: () => void null, replace: () => void null }), }); diff --git a/apps/site/components/mdxRenderer.tsx b/apps/site/components/mdxRenderer.tsx deleted file mode 100644 index abf9b4315e97e..0000000000000 --- a/apps/site/components/mdxRenderer.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import type { MDXComponents, MDXContent } from 'mdx/types'; -import type { FC } from 'react'; - -import { htmlComponents, clientMdxComponents } from '@/next.mdx.use.client.mjs'; -import { mdxComponents } from '@/next.mdx.use.mjs'; - -// Combine all MDX Components to be used -const combinedComponents: MDXComponents = { - ...htmlComponents, - ...clientMdxComponents, - ...mdxComponents, -}; - -export const MDXRenderer: FC<{ Component: MDXContent }> = ({ Component }) => ( - <Component components={combinedComponents} /> -); diff --git a/apps/site/components/withChangelogModal.tsx b/apps/site/components/withChangelogModal.tsx deleted file mode 100644 index 59b2d1f5b5988..0000000000000 --- a/apps/site/components/withChangelogModal.tsx +++ /dev/null @@ -1,97 +0,0 @@ -'use client'; - -import { useState, useEffect } from 'react'; -import type { FC, ReactElement } from 'react'; -import { VFile } from 'vfile'; - -import ChangelogModal from '@/components/Downloads/ChangelogModal'; -import changelogData from '@/next-data/changelogData'; -import { compileMDX } from '@/next.mdx.compiler.mjs'; -import { clientMdxComponents, htmlComponents } from '@/next.mdx.use.client.mjs'; -import type { NodeRelease } from '@/types'; -import { - getNodeJsChangelogAuthor, - getNodeJsChangelogSlug, -} from '@/util/getNodeJsChangelog'; -import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; - -type WithChangelogModalProps = { - release: NodeRelease; - modalOpen: boolean; - setModalOpen: (open: boolean) => void; -}; - -// We only need the base components for our ChangelogModal, this avoids/eliminates -// the need of Next.js bundling on the client-side all our MDX components -// Note that this already might increase the client-side bundle due to Shiki -const clientComponents = { ...clientMdxComponents, ...htmlComponents }; - -const WithChangelogModal: FC<WithChangelogModalProps> = ({ - release: { versionWithPrefix }, - modalOpen, - setModalOpen, -}) => { - const [ChangelogMDX, setChangelogMDX] = useState<ReactElement>(); - const [changelog, setChangelog] = useState<string>(''); - - useEffect(() => { - let isCancelled = false; - - const fetchChangelog = async () => { - try { - const data = await changelogData(versionWithPrefix); - - // We need to check if the component is still mounted before setting the state - if (!isCancelled) { - setChangelog(data); - - // This removes the <h2> header from the changelog content, as we already - // render the changelog heading as the "ChangelogModal" subheading - const changelogWithoutHeader = data.split('\n').slice(2).join('\n'); - - compileMDX(new VFile(changelogWithoutHeader), 'md').then( - ({ MDXContent }) => { - // This is a tricky one. React states does not allow you to actually store React components - // hence we need to render the component within an Effect and set the state as a ReactElement - // which is a function that can be eval'd by React during runtime. - const renderedElement = ( - <MDXContent components={clientComponents} /> - ); - - setChangelogMDX(renderedElement); - } - ); - } - } catch { - throw new Error(`Failed to fetch changelog for, ${versionWithPrefix}`); - } - }; - - if (modalOpen && versionWithPrefix) { - fetchChangelog(); - } - - return () => { - isCancelled = true; - }; - }, [modalOpen, versionWithPrefix]); - - const author = getNodeJsChangelogAuthor(changelog); - const slug = getNodeJsChangelogSlug(changelog); - - const modalProps = { - heading: `Node.js ${versionWithPrefix}`, - avatars: [{ src: getGitHubAvatarUrl(author), alt: author }], - subheading: slug, - open: modalOpen && typeof ChangelogMDX !== 'undefined', - onOpenChange: setModalOpen, - }; - - return ( - <ChangelogModal {...modalProps}> - <main>{ChangelogMDX}</main> - </ChangelogModal> - ); -}; - -export default WithChangelogModal; diff --git a/apps/site/components/withNavBar.tsx b/apps/site/components/withNavBar.tsx index 8353dac0330e6..21b39f48f44d3 100644 --- a/apps/site/components/withNavBar.tsx +++ b/apps/site/components/withNavBar.tsx @@ -6,15 +6,15 @@ import type { FC } from 'react'; import NavBar from '@/components/Containers/NavBar'; import WithBanner from '@/components/withBanner'; -import { useClientContext, useSiteNavigation } from '@/hooks'; -import { useRouter } from '@/navigation.mjs'; +import { useSiteNavigation } from '@/hooks'; +import { useRouter, usePathname } from '@/navigation.mjs'; import { availableLocales } from '@/next.locales.mjs'; const WithNavBar: FC = () => { const { navigationItems } = useSiteNavigation(); const { resolvedTheme, setTheme } = useTheme(); - const { pathname } = useClientContext(); const { replace } = useRouter(); + const pathname = usePathname(); const locale = useLocale(); diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index c4f873a2ae4ad..cdfbf664b6ec0 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -35,6 +35,7 @@ export default tseslint.config( '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/no-require-imports': 'off', '@next/next/no-duplicate-head': 'off', + 'import-x/no-duplicates': 'off', }, settings: { react: { diff --git a/apps/site/hooks/react-client/useClickOutside.ts b/apps/site/hooks/react-client/useClickOutside.ts index 88337392b9b48..0d64cf8c2e5ce 100644 --- a/apps/site/hooks/react-client/useClickOutside.ts +++ b/apps/site/hooks/react-client/useClickOutside.ts @@ -2,7 +2,7 @@ import type { RefObject } from 'react'; import { useEffect } from 'react'; const useClickOutside = <T extends HTMLElement>( - ref: RefObject<T>, + ref: RefObject<T | null>, fn: () => void ) => { useEffect(() => { diff --git a/apps/site/hooks/react-client/useNavigationState.ts b/apps/site/hooks/react-client/useNavigationState.ts index bda6893d0ac76..c899ec6957a26 100644 --- a/apps/site/hooks/react-client/useNavigationState.ts +++ b/apps/site/hooks/react-client/useNavigationState.ts @@ -8,7 +8,7 @@ import { debounce } from '@/util/debounce'; const useNavigationState = <T extends HTMLElement>( id: string, - ref: RefObject<T>, + ref: RefObject<T | null>, debounceTime = 300 ) => { const navigationState = useContext(NavigationStateContext); diff --git a/apps/site/hooks/react-generic/useSiteNavigation.ts b/apps/site/hooks/react-generic/useSiteNavigation.ts index 83b5403a4a883..d3c520790158b 100644 --- a/apps/site/hooks/react-generic/useSiteNavigation.ts +++ b/apps/site/hooks/react-generic/useSiteNavigation.ts @@ -1,5 +1,5 @@ -import { useTranslations } from 'next-intl'; import type { RichTranslationValues } from 'next-intl'; +import { useTranslations } from 'next-intl'; import type { HTMLAttributeAnchorTarget } from 'react'; import { siteNavigation } from '@/next.json.mjs'; @@ -39,7 +39,7 @@ const useSiteNavigation = () => { const mapNavigationEntries = (entries: Navigation, context: Context = {}) => { const getFormattedMessage = (label: string, key: string) => - t.rich(label, context[key] || {}); + t.rich(label, context[key] || {}) as FormattedMessage; return Object.entries(entries).map( ([key, { label, link, items, target }]): [ diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index efed3f4d9c6fd..88cd1cf3e9341 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -1,7 +1,7 @@ import { importLocale } from '@node-core/website-i18n'; import { getRequestConfig } from 'next-intl/server'; -import { availableLocaleCodes } from '@/next.locales.mjs'; +import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; import deepMerge from './util/deepMerge'; @@ -13,7 +13,7 @@ const loadLocaleDictionary = async (locale: string) => { '@node-core/website-i18n/locales/en.json' ).then(f => f.default); - if (locale === 'en') { + if (locale === defaultLocale.code) { return defaultMessages; } @@ -30,9 +30,20 @@ const loadLocaleDictionary = async (locale: string) => { }; // Provides `next-intl` configuration for RSC/SSR -export default getRequestConfig(async ({ locale }) => ({ - // This is the dictionary of messages to be loaded - messages: await loadLocaleDictionary(locale), - // We always define the App timezone as UTC - timeZone: 'Etc/UTC', -})); +export default getRequestConfig(async ({ requestLocale }) => { + // This typically corresponds to the `[locale]` segment + let locale = await requestLocale; + + // Ensure that the incoming locale is valid + if (!locale || !availableLocaleCodes.includes(locale)) { + locale = defaultLocale.code; + } + + return { + locale, + // This is the dictionary of messages to be loaded + messages: await loadLocaleDictionary(locale), + // We always define the App timezone as UTC + timeZone: 'Etc/UTC', + }; +}); diff --git a/apps/site/instrumentation.ts b/apps/site/instrumentation.ts index dba20061819cd..b953218a3e1e9 100644 --- a/apps/site/instrumentation.ts +++ b/apps/site/instrumentation.ts @@ -1,20 +1,5 @@ -import { init } from '@sentry/nextjs'; - -import { - SENTRY_CAPTURE_RATE, - SENTRY_DSN, - SENTRY_ENABLE, -} from '@/sentry.constants.mjs'; +import { registerOTel } from '@vercel/otel'; export function register() { - if (process.env.NEXT_RUNTIME === 'nodejs') { - init({ - // Only run Sentry on Vercel Environment - enabled: SENTRY_ENABLE, - // Provide Sentry's Secret Key - dsn: SENTRY_DSN, - // Percentage of events to send to Sentry (1% of them) (for performance metrics) - tracesSampleRate: SENTRY_CAPTURE_RATE, - }); - } + registerOTel({ serviceName: 'nodejs-org' }); } diff --git a/apps/site/navigation.mjs b/apps/site/navigation.mjs index edff2d9a0c197..b551ea2bcc390 100644 --- a/apps/site/navigation.mjs +++ b/apps/site/navigation.mjs @@ -1,8 +1,9 @@ 'use strict'; -import { createSharedPathnamesNavigation } from 'next-intl/navigation'; +import { createNavigation } from 'next-intl/navigation'; import { availableLocaleCodes } from './next.locales.mjs'; -export const { Link, redirect, usePathname, useRouter } = - createSharedPathnamesNavigation({ locales: availableLocaleCodes }); +export const { Link, redirect, usePathname, useRouter } = createNavigation({ + locales: availableLocaleCodes, +}); diff --git a/apps/site/next-data/blogData.ts b/apps/site/next-data/blogData.ts index 61c7df13cad94..186d04e50135a 100644 --- a/apps/site/next-data/blogData.ts +++ b/apps/site/next-data/blogData.ts @@ -23,15 +23,14 @@ const getBlogData = (cat: string, page?: number): Promise<BlogPostsRSC> => { ); } - const fetchURL = page - ? // Provides a conditional fetch URL based on the given function parameters - `${NEXT_DATA_URL}blog-data/${cat}/${page}` - : `${NEXT_DATA_URL}blog-data/${cat}/0`; + 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).then(r => r.text().then(parseBlogDataResponse)); + return fetch(fetchURL, { cache: 'force-cache' }) + .then(response => response.text()) + .then(response => parseBlogDataResponse(response)); }; export default getBlogData; diff --git a/apps/site/next-data/changelogData.ts b/apps/site/next-data/changelogData.ts deleted file mode 100644 index 1d3db6f8f18bf..0000000000000 --- a/apps/site/next-data/changelogData.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { - ENABLE_STATIC_EXPORT, - IS_DEVELOPMENT, - NEXT_DATA_URL, - VERCEL_ENV, -} from '@/next.constants.mjs'; - -const getChangelogData = (version: string): Promise<string> => { - // When we're using Static Exports the Next.js Server is not running (during build-time) - // hence the self-ingestion APIs will not be available. In this case we want to load - // the data directly within the current thread, which will anyways be loaded only once - // We use lazy-imports to prevent `provideChangelogData` from executing on import - if (ENABLE_STATIC_EXPORT || (!IS_DEVELOPMENT && !VERCEL_ENV)) { - return import('@/next-data/providers/changelogData').then( - ({ provideChangelogData }) => provideChangelogData(version) - ); - } - - // 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(`${NEXT_DATA_URL}changelog-data/${version}`).then(r => r.json()); -}; - -export default getChangelogData; diff --git a/apps/site/next-data/generators/changelogData.mjs b/apps/site/next-data/generators/changelogData.mjs deleted file mode 100644 index f0cb12f3dac75..0000000000000 --- a/apps/site/next-data/generators/changelogData.mjs +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -import { fetchNodeJsChangelog } from '@/util/fetchNodeJsChangelog'; - -/** - * This method is used to generate the Node.js Changelog Data - * for self-consumption during RSC and Static Builds - * - * @returns {Promise<string>} - */ -const generateChangelogData = async version => { - // Get the raw changelog for the latest minor for a given major - const changelog = await fetchNodeJsChangelog(version); - - return changelog; -}; - -export default generateChangelogData; diff --git a/apps/site/next-data/providers/changelogData.ts b/apps/site/next-data/providers/changelogData.ts deleted file mode 100644 index 8a07bab07fd2e..0000000000000 --- a/apps/site/next-data/providers/changelogData.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { cache } from 'react'; - -import generateChangelogData from '@/next-data/generators/changelogData.mjs'; - -export const provideChangelogData = cache((version: string) => { - const changelog = generateChangelogData(version); - - return changelog; -}); diff --git a/apps/site/next-data/releaseData.ts b/apps/site/next-data/releaseData.ts index bbc17b8dc616b..b41d41729a9fd 100644 --- a/apps/site/next-data/releaseData.ts +++ b/apps/site/next-data/releaseData.ts @@ -17,10 +17,16 @@ const getReleaseData = (): Promise<Array<NodeRelease>> => { ); } + 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 - return fetch(`${NEXT_DATA_URL}release-data`).then(r => r.json()); + // 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' }) + .then(response => response.text()) + .then(JSON.parse); }; export default getReleaseData; diff --git a/apps/site/next.calendar.mjs b/apps/site/next.calendar.mjs index a30c48e0e0dcb..7bc915013de8a 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.toString()) + return fetch(calendarQueryUrl, { cache: 'force-cache' }) .then(response => response.json()) .then(calendar => calendar.items ?? []); }; diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index 9fd5295768103..5aa0a41b6bd45 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -1,16 +1,9 @@ 'use strict'; -import { withSentryConfig } from '@sentry/nextjs'; import withNextIntl from 'next-intl/plugin'; import { BASE_PATH, ENABLE_STATIC_EXPORT } from './next.constants.mjs'; import { redirects, rewrites } from './next.rewrites.mjs'; -import { - SENTRY_DSN, - SENTRY_ENABLE, - SENTRY_EXTENSIONS, - SENTRY_TUNNEL, -} from './sentry.constants.mjs'; /** @type {import('next').NextConfig} */ const nextConfig = { @@ -19,9 +12,6 @@ const nextConfig = { // We intentionally disable Next.js's built-in i18n support // as we dom have our own i18n and internationalisation engine i18n: null, - // We want to always enforce that SWC minifies the sources even during Development mode - // so that bundles are minified on-the-go. SWF minifying is fast, and has almost no penalties - swcMinify: true, // We don't use trailing slashes on URLs from the Node.js Website trailingSlash: false, // We don't want to redirect with trailing slashes @@ -29,6 +19,7 @@ const nextConfig = { // We allow the BASE_PATH to be overridden in case that the Website // is being built on a subdirectory (e.g. /nodejs-website) basePath: BASE_PATH, + // Vercel/Next.js Image Optimization Settings images: { // We disable image optimisation during static export builds unoptimized: ENABLE_STATIC_EXPORT, @@ -36,6 +27,12 @@ const nextConfig = { dangerouslyAllowSVG: true, // We add it to the remote pattern for the static images we use from GitHub remotePatterns: [ + { + protocol: 'https', + hostname: 'bestpractices.coreinfrastructure.org', + port: '', + pathname: '/**', + }, { protocol: 'https', hostname: 'raw.githubusercontent.com', @@ -62,9 +59,9 @@ const nextConfig = { output: ENABLE_STATIC_EXPORT ? 'export' : undefined, // This configures all the Next.js rewrites, which are used for rewriting internal URLs into other internal Endpoints // This feature is not supported within static export builds, hence we pass an empty array if static exports are enabled - rewrites: !ENABLE_STATIC_EXPORT ? rewrites : undefined, + rewrites: ENABLE_STATIC_EXPORT ? undefined : rewrites, // This configures all Next.js redirects - redirects: !ENABLE_STATIC_EXPORT ? redirects : undefined, + redirects: ENABLE_STATIC_EXPORT ? undefined : redirects, // We don't want to run Type Checking on Production Builds // as we already check it on the CI within each Pull Request typescript: { ignoreBuildErrors: true }, @@ -72,91 +69,33 @@ const nextConfig = { // as we already check it on the CI within each Pull Request // we also configure ESLint to run its lint checking on all files (next lint) eslint: { dirs: ['.'], ignoreDuringBuilds: true }, - // Adds custom WebPack configuration to our Next.hs setup - webpack: function (config, { webpack }) { - // Next.js WebPack Bundler does not know how to handle `.mjs` files on `node_modules` - // This is not an issue when using TurboPack as it uses SWC and it is ESM-only - // Once Next.js uses Turbopack for their build process we can remove this - config.module.rules.push({ - test: /\.m?js$/, - type: 'javascript/auto', - resolve: { fullySpecified: false }, - }); - - // Tree-shakes modules from Sentry Bundle - config.plugins.push(new webpack.DefinePlugin(SENTRY_EXTENSIONS)); - - // Ignore Sentry's Critical Dependency from Open Telemetry - // (which is genuinely a cause of concern, but there is no work around at the moment) - config.ignoreWarnings = [ - { - module: /@opentelemetry\/instrumentation/, - message: /Critical dependency/, - }, - ]; - - return config; - }, experimental: { - // Some of our static pages from `getStaticProps` have a lot of data - // since we pass the fully-compiled MDX page from `MDXRemote` through - // a page's static props. - largePageDataBytes: 128 * 100000, + // Ensure that server-side code is also minified + serverMinification: true, + // Use Workers and Threads for webpack compilation + webpackBuildWorker: true, + // Execute parallel tracing of server builds + parallelServerBuildTraces: true, + // Execute parallel server compilation + parallelServerCompiles: true, // A list of packages that Next.js should automatically evaluate and optimise the imports for. // @see https://vercel.com/blog/how-we-optimized-package-imports-in-next-js optimizePackageImports: [ + '@radix-ui/react-accessible-icon', '@radix-ui/react-avatar', + '@radix-ui/react-dropdown-menu', + '@radix-ui/react-label', + '@radix-ui/react-scroll-area', '@radix-ui/react-select', + '@radix-ui/react-slot', + '@radix-ui/react-tabs', '@radix-ui/react-toast', + '@orama/highlight', + '@heroicons/react', 'tailwindcss', 'shiki', ], - // Removes the warning regarding the WebPack Build Worker - webpackBuildWorker: true, - // Enables Next.js's Instrumentation Hook - instrumentationHook: true, }, - // To import ESM-only packages with next dev --turbo. Source: https://github.com/vercel/next.js/issues/63318#issuecomment-2079677098 - transpilePackages: ['shiki'], -}; - -/** @type {import('@sentry/cli').SentryCliOptions} */ -const sentrySettings = { - // We don't want Sentry to emit logs - silent: true, - // Define the Sentry Organisation - org: 'nodejs-org', - // Define the Sentry Project on our Sentry Organisation - project: 'nodejs-org', - // Sentry DSN for the Node.js Website - dsn: SENTRY_DSN, }; -/** @type {import('@sentry/nextjs/types/config/types').UserSentryOptions} */ -const sentryConfig = { - // Upload Next.js or third-party code in addition to our code - widenClientFileUpload: true, - // Attempt to circumvent ad blockers - tunnelRoute: SENTRY_TUNNEL(), - // Prevent source map comments in built files - hideSourceMaps: false, - // Tree shake Sentry stuff from the bundle - disableLogger: true, - // Applies same WebPack Transpilation as Next.js - transpileClientSDK: true, -}; - -// Next.js Configuration with `next.intl` enabled -const nextWithIntl = withNextIntl('./i18n.tsx')(nextConfig); - -// Next.js Configuration with `sentry` enabled -const nextWithSentry = withSentryConfig( - // Next.js Config with i18n Configuration - nextWithIntl, - // Sentrz SDK and WebPack Settings - { ...sentrySettings, ...sentryConfig } -); - -// Decides whether enabling Sentry or not -// By default we only want to enable Sentry within a Vercel Environment -export default SENTRY_ENABLE ? nextWithSentry : nextWithIntl; +export default withNextIntl('./i18n.tsx')(nextConfig); diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index 33607db710f30..9aa7059d1fb4b 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -14,16 +14,6 @@ export const IS_DEVELOPMENT = process.env.NODE_ENV === 'development'; */ export const VERCEL_ENV = process.env.NEXT_PUBLIC_VERCEL_ENV || undefined; -/** - * This is used for defining a default time of when `next-data` and other dynamically generated - * but static-enabled pages should be regenerated. - * - * Note that this is a custom Environment Variable that can be defined by us when necessary - */ -export const VERCEL_REVALIDATE = Number( - process.env.NEXT_PUBLIC_VERCEL_REVALIDATE_TIME || 300 -); - /** * This is used for telling Next.js to do a Static Export Build of the Website * @@ -99,6 +89,17 @@ export const NEXT_DATA_URL = process.env.NEXT_PUBLIC_DATA_URL */ export const MD_EXTENSION_REGEX = /((\/)?(index))?\.mdx?$/i; +/** + * This is the default type of blog post type that we use for OG Meta Tags + */ +export const DEFAULT_CATEGORY_OG_TYPE = 'announcement'; + +/** + * This is the base url for changelog entries + */ +export const BASE_CHANGELOG_URL = + 'https://github.com/nodejs/node/releases/tag/v'; + /** * This defines how many blog posts each pagination page should have */ diff --git a/apps/site/next.dynamic.constants.mjs b/apps/site/next.dynamic.constants.mjs index 3233d5a6940df..783b1758d102a 100644 --- a/apps/site/next.dynamic.constants.mjs +++ b/apps/site/next.dynamic.constants.mjs @@ -18,6 +18,8 @@ export const IGNORED_ROUTES = [ // This is used to ignore all blog routes except for the English language ({ locale, pathname }) => locale !== defaultLocale.code && /^blog/.test(pathname), + // This is used to ignore all pathnames that are empty + ({ locale, pathname }) => locale.length && !pathname.length, ]; /** diff --git a/apps/site/next.dynamic.mjs b/apps/site/next.dynamic.mjs index c7879e2783a70..8bef1f0094c50 100644 --- a/apps/site/next.dynamic.mjs +++ b/apps/site/next.dynamic.mjs @@ -1,6 +1,5 @@ 'use strict'; -import { existsSync } from 'node:fs'; import { readFile } from 'node:fs/promises'; import { join, normalize, sep } from 'node:path'; @@ -8,7 +7,12 @@ import matter from 'gray-matter'; import { cache } from 'react'; import { VFile } from 'vfile'; -import { BASE_URL, BASE_PATH, IS_DEVELOPMENT } from './next.constants.mjs'; +import { + BASE_URL, + BASE_PATH, + IS_DEVELOPMENT, + DEFAULT_CATEGORY_OG_TYPE, +} from './next.constants.mjs'; import { IGNORED_ROUTES, DYNAMIC_ROUTES, @@ -17,7 +21,7 @@ import { import { getMarkdownFiles } from './next.helpers.mjs'; import { siteConfig } from './next.json.mjs'; import { availableLocaleCodes, defaultLocale } from './next.locales.mjs'; -import { compileMDX } from './next.mdx.compiler.mjs'; +import { compile } from './next.mdx.compiler.mjs'; // This is the combination of the Application Base URL and Base PATH const baseUrlAndPath = `${BASE_URL}${BASE_PATH}`; @@ -106,8 +110,7 @@ const getDynamicRouter = async () => { // meaning that the route exists on the website and can be rendered if (pathnameToFilename.has(normalizedPathname)) { const filename = pathnameToFilename.get(normalizedPathname); - - let filePath = join(process.cwd(), 'pages'); + const filepath = join(process.cwd(), 'pages', locale, filename); // We verify if our Markdown cache already has a cache entry for a localized // version of this file, because if not, it means that either @@ -120,21 +123,31 @@ const getDynamicRouter = async () => { return { source: fileContent, filename }; } + // Attempts to read a file or simply (and silently) fail, as the file might + // simply not exist or whatever other reason that might cause the file to not be read + const fileLanguageContent = await readFile(filepath, 'utf8').catch( + () => undefined + ); + // No cache hit exists, so we check if the localized file actually // exists within our file system and if it does we set it on the cache - // and return the current fetched result; If the file does not exist - // we fallback to the English source - if (existsSync(join(filePath, locale, filename))) { - filePath = join(filePath, locale, filename); - - const fileContent = await readFile(filePath, 'utf8'); + // and return the current fetched result; + if (fileLanguageContent && typeof fileLanguageContent === 'string') { + cachedMarkdownFiles.set( + `${locale}${normalizedPathname}`, + fileLanguageContent + ); - cachedMarkdownFiles.set(`${locale}${normalizedPathname}`, fileContent); + return { source: fileLanguageContent, filename }; + } - return { source: fileContent, filename }; + // Prevent infinite loops as if at this point the file does not exist with the default locale + // then there must be an issue on the file system or there's an error on the mapping of paths to files + if (locale === defaultLocale.code) { + return { filename: '', source: '' }; } - // We then attempt to retrieve the source version of the file as there is no localised version + // We attempt to retrieve the source version (defaultLocale) of the file as there is no localised version // of the file and we set it on the cache to prevent future checks of the same locale for this file const { source: fileContent } = await _getMarkdownFile( defaultLocale.code, @@ -173,7 +186,7 @@ const getDynamicRouter = async () => { // This compiles our MDX source (VFile) into a final MDX-parsed VFile // that then is passed as a string to the MDXProvider which will run the MDX Code - return compileMDX(sourceAsVirtualFile, fileExtension); + return compile(sourceAsVirtualFile, fileExtension); }; // Creates a Cached Version of the MDX Compiler @@ -196,49 +209,52 @@ const getDynamicRouter = async () => { const { data } = matter(source); + const getUrlForPathname = (l, p) => + `${baseUrlAndPath}/${l}${p ? `/${p}` : ''}`; + + // Default Title for the page pageMetadata.title = data.title ? `${siteConfig.title} — ${data.title}` : siteConfig.title; + // Default Twitter Title for the page pageMetadata.twitter.title = pageMetadata.title; - const getUrlForPathname = (l, p) => - `${baseUrlAndPath}/${l}${p ? `/${p}` : ''}`; + // 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`, + ]; + // Default canonical URL for the page pageMetadata.alternates.canonical = getUrlForPathname(locale, path); + // Default alternate URL for the page in the default locale pageMetadata.alternates.languages['x-default'] = getUrlForPathname( defaultLocale.code, path ); - const blogMatch = path.match(/^blog\/(release|vulnerability)(\/|$)/); - if (blogMatch) { - const category = blogMatch[1]; - const currentFile = siteConfig.rssFeeds.find( - item => item.category === category - )?.file; - // Use getUrlForPathname to dynamically construct the XML path for blog/release and blog/vulnerability - pageMetadata.alternates.types['application/rss+xml'] = getUrlForPathname( - locale, - `feed/${currentFile}` - ); - } else { - // Use getUrlForPathname for the default blog XML feed path - pageMetadata.alternates.types['application/rss+xml'] = getUrlForPathname( - locale, - 'feed/blog.xml' - ); - } + // Retrieves a matching blog feed for the category of the blog post + // If no matching blog feed is found, we simply fallback to the default blog feed + const matchingBlogFeed = siteConfig.rssFeeds.find( + feed => feed.category === data.category + ); + + // Adds the RSS Feed URL to the page metadata, if a matching feed is found + // otherwise, we fallback to the default blog feed + pageMetadata.alternates.types['application/rss+xml'] = getUrlForPathname( + locale, + `feed/${matchingBlogFeed?.file ?? 'blog.xml'}` + ); + // Iterate all languages to generate alternate URLs for each language availableLocaleCodes.forEach(currentLocale => { pageMetadata.alternates.languages[currentLocale] = getUrlForPathname( currentLocale, path ); - pageMetadata.openGraph.images = [ - `${currentLocale}/next-data/og?title=${pageMetadata.title}&type=${data.category ?? 'announcement'}`, - ]; }); return pageMetadata; diff --git a/apps/site/next.json.mjs b/apps/site/next.json.mjs index 2cd98d02c16f7..3c49c9f4dd3f9 100644 --- a/apps/site/next.json.mjs +++ b/apps/site/next.json.mjs @@ -1,9 +1,9 @@ 'use strict'; -import _authors from './authors.json' assert { type: 'json' }; -import _siteNavigation from './navigation.json' assert { type: 'json' }; -import _siteRedirects from './redirects.json' assert { type: 'json' }; -import _siteConfig from './site.json' assert { type: 'json' }; +import _authors from './authors.json' with { type: 'json' }; +import _siteNavigation from './navigation.json' with { type: 'json' }; +import _siteRedirects from './redirects.json' with { type: 'json' }; +import _siteConfig from './site.json' with { type: 'json' }; /** @type {Record<string, import('./types').Author>} */ export const authors = _authors; diff --git a/apps/site/next.mdx.compiler.mjs b/apps/site/next.mdx.compiler.mjs index 6fcdf963cdd39..4c3544085b96f 100644 --- a/apps/site/next.mdx.compiler.mjs +++ b/apps/site/next.mdx.compiler.mjs @@ -1,46 +1,61 @@ 'use strict'; -import { evaluate } from '@mdx-js/mdx'; -import { Fragment, jsx, jsxs } from 'react/jsx-runtime'; +import { compile as mdxCompile } from '@mdx-js/mdx'; import { matter } from 'vfile-matter'; -import { NEXT_REHYPE_PLUGINS, NEXT_REMARK_PLUGINS } from './next.mdx.mjs'; +import { MDX_COMPONENTS } from './next.mdx.components.mjs'; +import { createSval } from './next.mdx.evaluater.mjs'; +import { REHYPE_PLUGINS, REMARK_PLUGINS } from './next.mdx.plugins.mjs'; import { createGitHubSlugger } from './util/gitHubUtils'; -// Defines the React Runtime Components -const reactRuntime = { Fragment, jsx, jsxs }; - /** * This is our custom simple MDX Compiler that is used to compile Markdown and MDX * this returns a serializable VFile as a string that then gets passed to our MDX Provider * * @param {import('vfile').VFile} source * @param {'md' | 'mdx'} fileExtension + * @param {import('mdx/types').MDXComponents} components + * * @returns {Promise<{ - * MDXContent: import('mdx/types').MDXContent; + * content: import('react').ReactElement; * headings: Array<import('@vcarl/remark-headings').Heading>; * frontmatter: Record<string, any>; * readingTime: import('reading-time').ReadTimeResults; * }>} */ -export async function compileMDX(source, fileExtension) { +export async function compile( + source, + fileExtension, + components = MDX_COMPONENTS +) { // Parses the Frontmatter to the VFile and removes from the original source // cleaning the frontmatter to the source that is going to be parsed by the MDX Compiler matter(source, { strip: true }); + // Creates a GitHub slugger to generate the same slugs as GitHub const slugger = createGitHubSlugger(); - // This is a minimal MDX Compiler that is lightweight and only parses the MDX - const { default: MDXContent } = await evaluate(source, { - rehypePlugins: NEXT_REHYPE_PLUGINS, - remarkPlugins: NEXT_REMARK_PLUGINS, + // Compiles the MDX/Markdown source into a serializable VFile + const compiled = await mdxCompile(source, { + rehypePlugins: REHYPE_PLUGINS, + remarkPlugins: REMARK_PLUGINS, format: fileExtension, - ...reactRuntime, }); + const interpreter = createSval(components); + + // Run the compiled JavaScript code from MDX + interpreter.run(compiled.toString()); + + // Retrieve the default export from the compiled MDX + const MDXContent = interpreter.exports.default; + + // Render the MDX content directly from the compiler + const content = <MDXContent components={components} />; + // Retrieve some parsed data from the VFile metadata // such as frontmatter and Markdown headings - const { headings, matter: frontmatter, readingTime } = source.data; + const { headings = [], matter: frontmatter, readingTime } = source.data; headings.forEach(heading => { // we re-sluggify the links to match the GitHub slugger @@ -48,5 +63,5 @@ export async function compileMDX(source, fileExtension) { heading.data = { ...heading.data, id: slugger(heading.value) }; }); - return { MDXContent, headings, frontmatter, readingTime }; + return { content, headings, frontmatter, readingTime }; } diff --git a/apps/site/next.mdx.components.mjs b/apps/site/next.mdx.components.mjs new file mode 100644 index 0000000000000..c7a55cfc90d6f --- /dev/null +++ b/apps/site/next.mdx.components.mjs @@ -0,0 +1,15 @@ +'use strict'; + +import { htmlComponents, clientMdxComponents } from './next.mdx.use.client.mjs'; +import { mdxComponents } from './next.mdx.use.mjs'; + +/** + * Combine all MDX Components to be used + * + * @type {import('mdx/types').MDXComponents} + */ +export const MDX_COMPONENTS = { + ...htmlComponents, + ...clientMdxComponents, + ...mdxComponents, +}; diff --git a/apps/site/next.mdx.evaluater.mjs b/apps/site/next.mdx.evaluater.mjs new file mode 100644 index 0000000000000..945dfeb1c4408 --- /dev/null +++ b/apps/site/next.mdx.evaluater.mjs @@ -0,0 +1,26 @@ +'use strict'; + +import { Fragment, jsx, jsxs } from 'react/jsx-runtime'; +import Sval from 'sval'; + +// Defines the React Runtime Components +const reactRuntime = { Fragment, jsx, jsxs }; + +/** + * Creates a JavaScript Evaluater + * + * @param {import('mdx/types').MDXComponents} components + * @returns {Sval} + */ +export const createSval = components => { + const svalInterpreter = new Sval({ + ecmaVer: 'latest', + sandBox: true, + sourceType: 'module', + }); + + svalInterpreter.import(components); + svalInterpreter.import('react/jsx-runtime', reactRuntime); + + return svalInterpreter; +}; diff --git a/apps/site/next.mdx.mjs b/apps/site/next.mdx.plugins.mjs similarity index 76% rename from apps/site/next.mdx.mjs rename to apps/site/next.mdx.plugins.mjs index be5d28a9e9fac..2c7d02968f380 100644 --- a/apps/site/next.mdx.mjs +++ b/apps/site/next.mdx.plugins.mjs @@ -13,7 +13,7 @@ import rehypeShikiji from './next.mdx.shiki.mjs'; * * @type {Array<import('unified').Plugin>} */ -export const NEXT_REHYPE_PLUGINS = [ +export const REHYPE_PLUGINS = [ // Generates `id` attributes for headings (H1, ...) rehypeSlug, // Automatically add anchor links to headings (H1, ...) @@ -28,4 +28,11 @@ export const NEXT_REHYPE_PLUGINS = [ * * @type {Array<import('unified').Plugin>} */ -export const NEXT_REMARK_PLUGINS = [remarkGfm, remarkHeadings, readingTime]; +export const REMARK_PLUGINS = [ + // Support GFM syntax to be used within Markdown + remarkGfm, + // Generates metadata regarding headings + remarkHeadings, + // Calculates the reading time of the content + readingTime, +]; diff --git a/apps/site/package.json b/apps/site/package.json index 06ddf031da8df..0f83ed9671373 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -17,7 +17,7 @@ }, "scripts": { "scripts:release-post": "cross-env NODE_NO_WARNINGS=1 node scripts/release-post/index.mjs", - "dev": "cross-env SENTRY_SUPPRESS_TURBOPACK_WARNING=1 NODE_NO_WARNINGS=1 next dev --turbo", + "dev": "cross-env NODE_NO_WARNINGS=1 next dev --turbopack", "serve": "npm run dev", "build": "cross-env NODE_NO_WARNINGS=1 next build", "start": "cross-env NODE_NO_WARNINGS=1 next start", @@ -37,42 +37,44 @@ }, "dependencies": { "@heroicons/react": "~2.1.5", - "@mdx-js/mdx": "^3.0.1", + "@mdx-js/mdx": "^3.1.0", "@node-core/website-i18n": "*", - "@nodevu/core": "~0.1.0", - "@orama/highlight": "^0.1.6", - "@oramacloud/client": "^1.3.16", + "@nodevu/core": "0.3.0", + "@opentelemetry/api": "1.9.0", + "@orama/highlight": "0.1.6", + "@oramacloud/client": "1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.1", - "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-scroll-area": "^1.2.0", "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-toast": "^1.2.2", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@sentry/nextjs": "^8.36.0", "@tailwindcss/container-queries": "~0.1.1", - "@types/node": "20.17.5", + "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", - "@vercel/analytics": "~1.3.1", - "@vercel/speed-insights": "~1.0.12", + "@vercel/analytics": "~1.4.0", + "@vercel/otel": "~1.10.0", + "@vercel/speed-insights": "~1.1.0", "autoprefixer": "~10.4.20", "classnames": "~2.5.1", + "critters": "0.0.23", "cross-env": "7.0.3", "dedent": "1.5.3", "feed": "~4.2.2", "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "~14.2.14", - "next-intl": "~3.21.1", + "next": "15.0.3", + "next-intl": "~3.25.1", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", "postcss-import": "~16.1.0", + "postcss-loader": "~8.1.1", "postcss-mixins": "~11.0.1", "postcss-simple-vars": "~7.0.1", "react": "^18.3.1", @@ -83,40 +85,43 @@ "remark-reading-time": "~2.0.1", "semver": "~7.6.3", "shiki": "~1.22.2", - "tailwindcss": "^3.4.13", + "sval": "^0.5.2", + "tailwindcss": "~3.4.14", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.0" }, "devDependencies": { - "@eslint/compat": "~1.2.0", - "@next/eslint-plugin-next": "~14.2.14", - "@storybook/addon-controls": "~8.4.1", - "@storybook/addon-interactions": "~8.4.1", - "@storybook/addon-themes": "~8.4.1", - "@storybook/addon-viewport": "~8.4.1", - "@storybook/nextjs": "~8.4.1", - "@testing-library/jest-dom": "~6.6.3", + "@eslint/compat": "~1.2.2", + "@next/eslint-plugin-next": "15.0.3", + "@storybook/addon-controls": "^8.4.4", + "@storybook/addon-interactions": "^8.4.4", + "@storybook/addon-styling-webpack": "^1.0.1", + "@storybook/addon-themes": "^8.4.4", + "@storybook/addon-viewport": "^8.4.4", + "@storybook/addon-webpack5-compiler-swc": "^1.0.5", + "@storybook/react-webpack5": "^8.4.4", + "@testing-library/jest-dom": "~6.6.2", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.14", "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.0", + "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", - "eslint-config-next": "15.0.0-rc.1", + "eslint-config-next": "15.0.3", "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-mdx": "~3.1.5", - "eslint-plugin-react": "~7.37.1", + "eslint-plugin-react": "~7.37.2", "eslint-plugin-react-hooks": "5.0.0", - "eslint-plugin-storybook": "0.10.0--canary.156.ce8985b.0", + "eslint-plugin-storybook": "0.10.1", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "storybook": "~8.4.1", - "stylelint": "16.9.0", + "storybook": "^8.4.4", + "stylelint": "16.10.0", "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", diff --git a/apps/site/providers/__tests__/localeProvider.test.mjs b/apps/site/providers/__tests__/localeProvider.test.mjs index 326417992dc65..d661d70afe90f 100644 --- a/apps/site/providers/__tests__/localeProvider.test.mjs +++ b/apps/site/providers/__tests__/localeProvider.test.mjs @@ -4,7 +4,7 @@ import { LocaleProvider } from '@/providers/localeProvider'; jest.mock('next-intl', () => ({ useMessages: jest.fn(() => ({ 'en-US': { greeting: 'Hello!' } })), - NextIntlClientProvider: ({ children }) => <>{children}</>, + NextIntlClientProvider: ({ children }) => children, useTimeZone: jest.fn(() => 'UTC'), })); diff --git a/apps/site/providers/releaseProvider.tsx b/apps/site/providers/releaseProvider.tsx index 10668654937eb..c17e8748af4cd 100644 --- a/apps/site/providers/releaseProvider.tsx +++ b/apps/site/providers/releaseProvider.tsx @@ -3,7 +3,6 @@ import type { Dispatch, PropsWithChildren, FC } from 'react'; import { createContext, useMemo, useReducer } from 'react'; -import WithChangelogModal from '@/components/withChangelogModal'; import type { NodeRelease } from '@/types'; import type { ReleaseDispatchActions, @@ -19,7 +18,6 @@ const initialState: ReleaseState = { os: 'OTHER', bitness: '', platform: 'NVM', - modalOpen: false, }; const createDispatchActions = ( @@ -29,7 +27,6 @@ const createDispatchActions = ( setOS: payload => dispatch({ type: 'SET_OS', payload }), setBitness: payload => dispatch({ type: 'SET_BITNESS', payload }), setPlatform: payload => dispatch({ type: 'SET_PLATFORM', payload }), - setModalOpen: payload => dispatch({ type: 'SET_MODAL_OPEN', payload }), }); export const ReleaseContext = createContext<ReleaseContextType>({ @@ -56,8 +53,6 @@ export const ReleaseProvider: FC<PropsWithChildren<ReleaseProviderProps>> = ({ return { ...state, bitness: action.payload }; case 'SET_PLATFORM': return { ...state, platform: action.payload }; - case 'SET_MODAL_OPEN': - return { ...state, modalOpen: action.payload }; default: return state; } @@ -74,12 +69,6 @@ export const ReleaseProvider: FC<PropsWithChildren<ReleaseProviderProps>> = ({ return ( <ReleaseContext.Provider value={{ ...state, ...actions }}> {children} - - <WithChangelogModal - release={state.release} - modalOpen={state.modalOpen} - setModalOpen={actions.setModalOpen} - /> </ReleaseContext.Provider> ); }; diff --git a/apps/site/sentry.constants.mjs b/apps/site/sentry.constants.mjs deleted file mode 100644 index 61f73a233aa17..0000000000000 --- a/apps/site/sentry.constants.mjs +++ /dev/null @@ -1,45 +0,0 @@ -import { BASE_URL, IS_DEVELOPMENT, VERCEL_ENV } from './next.constants.mjs'; - -/** - * This is the Sentry DSN for the Node.js Website Project - */ -export const SENTRY_DSN = - 'https://02884d0745aecaadf5f780278fe5fe70@o4506191161786368.ingest.sentry.io/4506191307735040'; - -/** - * This states if Sentry should be enabled and bundled within our App - * - * We enable sentry by default if we're om development mode or deployed - * on Vercel (either production or preview branches) - */ -export const SENTRY_ENABLE = IS_DEVELOPMENT || !!VERCEL_ENV; - -/** - * This configures the sampling rate for Sentry - * - * We always want to capture 100% on Vercel Preview Branches - * and not when it's on Production Mode (nodejs.org) - */ -export const SENTRY_CAPTURE_RATE = - SENTRY_ENABLE && VERCEL_ENV && BASE_URL !== 'https://nodejs.org' ? 1.0 : 0.01; - -/** - * Provides the Route for Sentry's Server-Side Tunnel - * - * This is a `@sentry/nextjs` specific feature - */ -export const SENTRY_TUNNEL = (components = '') => - SENTRY_ENABLE ? `/monitoring${components}` : undefined; - -/** - * This configures which Sentry features to tree-shake/remove from the Sentry bundle - * - * @see https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/tree-shaking/ - */ -export const SENTRY_EXTENSIONS = { - __SENTRY_DEBUG__: false, - __SENTRY_TRACING__: false, - __RRWEB_EXCLUDE_IFRAME__: true, - __RRWEB_EXCLUDE_SHADOW_DOM__: true, - __SENTRY_EXCLUDE_REPLAY_WORKER__: true, -}; diff --git a/apps/site/tsconfig.json b/apps/site/tsconfig.json index f1fbd46c6dfe0..4596a8d4fc408 100644 --- a/apps/site/tsconfig.json +++ b/apps/site/tsconfig.json @@ -28,8 +28,7 @@ "**/*.tsx", ".next/types/**/*.ts", ".storybook/**/*.ts", - ".storybook/**/*.tsx", - "build/types/**/*.ts" + ".storybook/**/*.tsx" ], "exclude": ["node_modules", ".next"] } diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 926a21dc5a378..00975a1d5573f 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -16,7 +16,6 @@ "NEXT_PUBLIC_BASE_PATH", "NEXT_PUBLIC_ORAMA_API_KEY", "NEXT_PUBLIC_ORAMA_ENDPOINT", - "NEXT_PUBLIC_VERCEL_REVALIDATE_TIME", "NEXT_PUBLIC_DATA_URL" ] }, @@ -40,7 +39,6 @@ "NEXT_PUBLIC_BASE_PATH", "NEXT_PUBLIC_ORAMA_API_KEY", "NEXT_PUBLIC_ORAMA_ENDPOINT", - "NEXT_PUBLIC_VERCEL_REVALIDATE_TIME", "NEXT_PUBLIC_DATA_URL" ] }, @@ -57,7 +55,6 @@ "NEXT_PUBLIC_BASE_PATH", "NEXT_PUBLIC_ORAMA_API_KEY", "NEXT_PUBLIC_ORAMA_ENDPOINT", - "NEXT_PUBLIC_VERCEL_REVALIDATE_TIME", "NEXT_PUBLIC_DATA_URL" ] }, @@ -80,7 +77,6 @@ "NEXT_PUBLIC_BASE_PATH", "NEXT_PUBLIC_ORAMA_API_KEY", "NEXT_PUBLIC_ORAMA_ENDPOINT", - "NEXT_PUBLIC_VERCEL_REVALIDATE_TIME", "NEXT_PUBLIC_DATA_URL" ] }, diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index b1e794e940c8c..5746f9d071b9e 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -11,22 +11,19 @@ export interface ReleaseState { releases: Array<NodeRelease>; bitness: string | number; platform: PackageManager; - modalOpen: boolean; } export type ReleaseAction = | { type: 'SET_OS'; payload: UserOS } | { type: 'SET_VERSION'; payload: string } | { type: 'SET_BITNESS'; payload: string | number } - | { type: 'SET_PLATFORM'; payload: PackageManager } - | { type: 'SET_MODAL_OPEN'; payload: boolean }; + | { type: 'SET_PLATFORM'; payload: PackageManager }; export interface ReleaseDispatchActions { setVersion: (version: string) => void; setOS: (os: UserOS) => void; setBitness: (bitness: string | number) => void; setPlatform: (platform: PackageManager) => void; - setModalOpen: (open: boolean) => void; } export interface ReleaseContextType diff --git a/apps/site/util/downloadUtils.ts b/apps/site/util/downloadUtils.ts index 9a63c751a10e7..0aa6c19a0fea2 100644 --- a/apps/site/util/downloadUtils.ts +++ b/apps/site/util/downloadUtils.ts @@ -1,3 +1,5 @@ +import type { JSX } from 'react'; + import type { PackageManager } from '@/types/release'; import type { UserOS } from '@/types/userOS'; diff --git a/apps/site/util/fetchNodeJsChangelog.ts b/apps/site/util/fetchNodeJsChangelog.ts deleted file mode 100644 index eea20bb3ab878..0000000000000 --- a/apps/site/util/fetchNodeJsChangelog.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { getNodeJsChangelog } from './getNodeJsChangelog'; - -const getChangelogSectionRegex = (sectionId: string) => - new RegExp(`<a id="${sectionId}"></a>\\n([\\s\\S]+?)(?:\\n<a id="|$)`); - -export const fetchNodeJsChangelog = async (version: string) => { - const changeLogUrl = getNodeJsChangelog(version).replace('/blob/', '/'); - - // Retrieves the URL part and the Markdown section ID part - const [url, sectionId] = changeLogUrl.split('#'); - - // Creates a Regular Expression for that matches the whole content - // related to the changelog version that we want to fetch - const section = getChangelogSectionRegex(sectionId); - - // Replaces the GitHub URL to the RAW source URL so we're able to fetch the data - const content = fetch(url.replace('github.', 'raw.githubusercontent.')); - - const [, changelogContent] = await content - .then(res => res.text()) - .then(content => section.exec(content) || []); - - return changelogContent || ''; -}; diff --git a/package-lock.json b/package-lock.json index b79be4f9d634b..6e571e9622096 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "dependencies": { "husky": "9.1.6", "lint-staged": "15.2.10", - "turbo": "2.1.3" + "turbo": "2.3.0" }, "devDependencies": { "@eslint/js": "~9.14.0", @@ -35,42 +35,44 @@ "license": "MIT", "dependencies": { "@heroicons/react": "~2.1.5", - "@mdx-js/mdx": "^3.0.1", + "@mdx-js/mdx": "^3.1.0", "@node-core/website-i18n": "*", - "@nodevu/core": "~0.1.0", - "@orama/highlight": "^0.1.6", - "@oramacloud/client": "^1.3.16", + "@nodevu/core": "0.3.0", + "@opentelemetry/api": "1.9.0", + "@orama/highlight": "0.1.6", + "@oramacloud/client": "1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.1", - "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-scroll-area": "^1.2.0", "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-toast": "^1.2.2", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@sentry/nextjs": "^8.36.0", "@tailwindcss/container-queries": "~0.1.1", - "@types/node": "20.17.5", + "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", - "@vercel/analytics": "~1.3.1", - "@vercel/speed-insights": "~1.0.12", + "@vercel/analytics": "~1.4.0", + "@vercel/otel": "~1.10.0", + "@vercel/speed-insights": "~1.1.0", "autoprefixer": "~10.4.20", "classnames": "~2.5.1", + "critters": "0.0.23", "cross-env": "7.0.3", "dedent": "1.5.3", "feed": "~4.2.2", "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "~14.2.14", - "next-intl": "~3.21.1", + "next": "15.0.3", + "next-intl": "~3.25.1", "next-themes": "~0.3.0", "postcss": "~8.4.47", "postcss-calc": "~10.0.2", "postcss-import": "~16.1.0", + "postcss-loader": "~8.1.1", "postcss-mixins": "~11.0.1", "postcss-simple-vars": "~7.0.1", "react": "^18.3.1", @@ -81,40 +83,43 @@ "remark-reading-time": "~2.0.1", "semver": "~7.6.3", "shiki": "~1.22.2", - "tailwindcss": "^3.4.13", + "sval": "^0.5.2", + "tailwindcss": "~3.4.14", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.0" }, "devDependencies": { - "@eslint/compat": "~1.2.0", - "@next/eslint-plugin-next": "~14.2.14", - "@storybook/addon-controls": "~8.4.1", - "@storybook/addon-interactions": "~8.4.1", - "@storybook/addon-themes": "~8.4.1", - "@storybook/addon-viewport": "~8.4.1", - "@storybook/nextjs": "~8.4.1", - "@testing-library/jest-dom": "~6.6.3", + "@eslint/compat": "~1.2.2", + "@next/eslint-plugin-next": "15.0.3", + "@storybook/addon-controls": "^8.4.4", + "@storybook/addon-interactions": "^8.4.4", + "@storybook/addon-styling-webpack": "^1.0.1", + "@storybook/addon-themes": "^8.4.4", + "@storybook/addon-viewport": "^8.4.4", + "@storybook/addon-webpack5-compiler-swc": "^1.0.5", + "@storybook/react-webpack5": "^8.4.4", + "@testing-library/jest-dom": "~6.6.2", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.14", "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.0", + "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", - "eslint-config-next": "15.0.0-rc.1", + "eslint-config-next": "15.0.3", "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-mdx": "~3.1.5", - "eslint-plugin-react": "~7.37.1", + "eslint-plugin-react": "~7.37.2", "eslint-plugin-react-hooks": "5.0.0", - "eslint-plugin-storybook": "0.10.0--canary.156.ce8985b.0", + "eslint-plugin-storybook": "0.10.1", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "storybook": "~8.4.1", - "stylelint": "16.9.0", + "storybook": "^8.4.4", + "stylelint": "16.10.0", "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", @@ -126,15 +131,33 @@ "node": "v20" } }, - "apps/site/node_modules/brace-expansion": { - "version": "2.0.1", - "license": "MIT", + "apps/site/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": { - "balanced-match": "^1.0.0" + "@orama/orama": "^2.0.0-beta.1" + } + }, + "apps/site/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" } }, "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" @@ -147,6 +170,8 @@ }, "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", @@ -166,59 +191,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "apps/site/node_modules/glob/node_modules/minimatch": { - "version": "10.0.1", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "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.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", - "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "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.0", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", @@ -242,6 +214,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -252,12 +225,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -265,30 +239,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", - "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", - "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helpers": "^7.25.7", - "@babel/parser": "^7.25.8", - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.8", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -307,18 +283,21 @@ "version": "6.3.1", "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" } }, "node_modules/@babel/generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", - "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7", + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -327,41 +306,15 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz", - "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", - "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -374,53 +327,36 @@ "version": "6.3.1", "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" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", - "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/traverse": "^7.25.7", - "semver": "^6.3.1" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "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" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz", - "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "regexpu-core": "^6.1.1", - "semver": "^6.3.1" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -429,496 +365,194 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "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" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", - "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", - "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "node_modules/@babel/helper-string-parser": { + "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==", "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", - "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", - "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.7" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", - "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz", - "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==", - "dev": true, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-wrap-function": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/types": "^7.26.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "parser": "bin/babel-parser.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", - "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/traverse": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", - "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", - "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/helper-plugin-utils": "^7.12.13" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", - "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz", - "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", - "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", - "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.8" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=6.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz", - "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz", - "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz", - "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz", - "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-transform-optional-chaining": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz", - "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", - "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", - "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", - "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1022,13 +656,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz", - "integrity": "sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1037,5565 +671,3090 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz", - "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==", + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz", - "integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==", + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-remap-async-to-generator": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz", - "integrity": "sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==", - "dev": true, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-remap-async-to-generator": "^7.25.7" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz", - "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@commitlint/config-validator": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.5.0.tgz", + "integrity": "sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@commitlint/types": "^19.5.0", + "ajv": "^8.11.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=v18" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz", - "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==", + "node_modules/@commitlint/execute-rule": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz", + "integrity": "sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=v18" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", - "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", + "node_modules/@commitlint/load": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.5.0.tgz", + "integrity": "sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@commitlint/config-validator": "^19.5.0", + "@commitlint/execute-rule": "^19.5.0", + "@commitlint/resolve-extends": "^19.5.0", + "@commitlint/types": "^19.5.0", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^5.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=v18" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz", - "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==", + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, "engines": { - "node": ">=6.9.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz", - "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/traverse": "^7.25.7", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz", - "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==", + "node_modules/@commitlint/resolve-extends": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz", + "integrity": "sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/template": "^7.25.7" + "@commitlint/config-validator": "^19.5.0", + "@commitlint/types": "^19.5.0", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=v18" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz", - "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==", + "node_modules/@commitlint/types": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.5.0.tgz", + "integrity": "sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=v18" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz", - "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==", + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, "engines": { - "node": ">=6.9.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz", - "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@csstools/css-tokenizer": "^3.0.3" } }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==", + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz", - "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==", + "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==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz", - "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==", + "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, - "license": "MIT", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", "engines": { - "node": ">=6.9.0" + "node": ">=18" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "postcss-selector-parser": "^6.1.0" } }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz", - "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==", + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz", - "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==", - "dev": true, + "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": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz", - "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz", - "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==", + "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" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz", - "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==", + "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" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz", - "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==", + "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" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz", - "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==", + "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" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz", - "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==", + "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" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", - "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", + "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" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz", - "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==", + "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" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz", - "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==", + "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" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==", + "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", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz", - "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", - "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz", - "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz", - "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==", + "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", - "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-transform-parameters": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz", - "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz", - "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", - "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz", - "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", - "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", + "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", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz", - "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==", + "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", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz", - "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.7.tgz", - "integrity": "sha512-r0QY7NVU8OnrwE+w2IWiRom0wwsTbjx4+xH2RTd7AVdof3uurXOF+/mXHQDRk+2jIvWgSaCHKMgggfvM4dyUGA==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", - "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", + "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", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-jsx": "^7.25.7", - "@babel/types": "^7.25.7" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.7.tgz", - "integrity": "sha512-5yd3lH1PWxzW6IZj+p+Y4OLQzz0/LzlOG8vGqonHfVR3euf1vyzyMUJk9Ac+m97BH46mFc/98t9PmYLyvgL3qg==", + "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", - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.25.7" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.7.tgz", - "integrity": "sha512-6YTHJ7yjjgYqGc8S+CbEXhLICODk0Tn92j+vNJo07HFk9t3bjFgAKxPLFhHwF2NjmQVSI1zBRfBWUeVBa2osfA==", + "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": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz", - "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==", + "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": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "regenerator-transform": "^0.15.2" - }, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz", - "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz", - "integrity": "sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==", + "node_modules/@eslint/compat": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.2.tgz", + "integrity": "sha512-jhgiIrsw+tRfcBQ4BFl2C3vCrIUw2trCY0cnDvGZpwTtKCEDmZhAtMfrEUP/KpnwM6PrO0T+Ltm+ccW74olG3Q==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "semver": "^6.3.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "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" + "eslint": "^9.10.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz", - "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==", + "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", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz", - "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==", + "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", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz", - "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==", + "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", + "license": "ISC", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "*" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz", - "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==", + "node_modules/@eslint/eslintrc": { + "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": { - "@babel/helper-plugin-utils": "^7.25.7" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz", - "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==", + "node_modules/@eslint/eslintrc/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": { - "@babel/helper-plugin-utils": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz", - "integrity": "sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==", + "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": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-syntax-typescript": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", - "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" - }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz", - "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==", + "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", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz", - "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==", + "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": "MIT", + "license": "ISC", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "*" } }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz", - "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==", + "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==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/preset-env": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz", - "integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.25.8", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.25.7", - "@babel/plugin-syntax-import-attributes": "^7.25.7", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.8", - "@babel/plugin-transform-async-to-generator": "^7.25.7", - "@babel/plugin-transform-block-scoped-functions": "^7.25.7", - "@babel/plugin-transform-block-scoping": "^7.25.7", - "@babel/plugin-transform-class-properties": "^7.25.7", - "@babel/plugin-transform-class-static-block": "^7.25.8", - "@babel/plugin-transform-classes": "^7.25.7", - "@babel/plugin-transform-computed-properties": "^7.25.7", - "@babel/plugin-transform-destructuring": "^7.25.7", - "@babel/plugin-transform-dotall-regex": "^7.25.7", - "@babel/plugin-transform-duplicate-keys": "^7.25.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-dynamic-import": "^7.25.8", - "@babel/plugin-transform-exponentiation-operator": "^7.25.7", - "@babel/plugin-transform-export-namespace-from": "^7.25.8", - "@babel/plugin-transform-for-of": "^7.25.7", - "@babel/plugin-transform-function-name": "^7.25.7", - "@babel/plugin-transform-json-strings": "^7.25.8", - "@babel/plugin-transform-literals": "^7.25.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.8", - "@babel/plugin-transform-member-expression-literals": "^7.25.7", - "@babel/plugin-transform-modules-amd": "^7.25.7", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-modules-systemjs": "^7.25.7", - "@babel/plugin-transform-modules-umd": "^7.25.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-new-target": "^7.25.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8", - "@babel/plugin-transform-numeric-separator": "^7.25.8", - "@babel/plugin-transform-object-rest-spread": "^7.25.8", - "@babel/plugin-transform-object-super": "^7.25.7", - "@babel/plugin-transform-optional-catch-binding": "^7.25.8", - "@babel/plugin-transform-optional-chaining": "^7.25.8", - "@babel/plugin-transform-parameters": "^7.25.7", - "@babel/plugin-transform-private-methods": "^7.25.7", - "@babel/plugin-transform-private-property-in-object": "^7.25.8", - "@babel/plugin-transform-property-literals": "^7.25.7", - "@babel/plugin-transform-regenerator": "^7.25.7", - "@babel/plugin-transform-reserved-words": "^7.25.7", - "@babel/plugin-transform-shorthand-properties": "^7.25.7", - "@babel/plugin-transform-spread": "^7.25.7", - "@babel/plugin-transform-sticky-regex": "^7.25.7", - "@babel/plugin-transform-template-literals": "^7.25.7", - "@babel/plugin-transform-typeof-symbol": "^7.25.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.7", - "@babel/plugin-transform-unicode-property-regex": "^7.25.7", - "@babel/plugin-transform-unicode-regex": "^7.25.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", - "semver": "^6.3.1" - }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "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": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@eslint/plugin-kit": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", + "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + "@floating-ui/utils": "^0.2.8" } }, - "node_modules/@babel/preset-react": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.7.tgz", - "integrity": "sha512-GjV0/mUEEXpi1U5ZgDprMRRgajGMRW3G5FjMr5KLKD8nT2fTG8+h/klV3+6Dm5739QE+K5+2e91qFKAYI3pmRg==", - "dev": true, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-transform-react-display-name": "^7.25.7", - "@babel/plugin-transform-react-jsx": "^7.25.7", - "@babel/plugin-transform-react-jsx-development": "^7.25.7", - "@babel/plugin-transform-react-pure-annotations": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" } }, - "node_modules/@babel/preset-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz", - "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==", - "dev": true, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-syntax-jsx": "^7.25.7", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-typescript": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" + "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, - "node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" }, - "node_modules/@babel/template": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", - "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "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==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" + "@formatjs/fast-memoize": "2.2.3", + "@formatjs/intl-localematcher": "0.5.7", + "tslib": "2" } }, - "node_modules/@babel/traverse": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", - "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz", + "integrity": "sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" + "tslib": "2" } }, - "node_modules/@babel/types": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", - "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "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==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" + "@formatjs/ecma402-abstract": "2.2.3", + "@formatjs/icu-skeleton-parser": "1.8.7", + "tslib": "2" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@commitlint/config-validator": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.5.0.tgz", - "integrity": "sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==", - "dev": true, + "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==", "license": "MIT", - "optional": true, "dependencies": { - "@commitlint/types": "^19.5.0", - "ajv": "^8.11.0" - }, - "engines": { - "node": ">=v18" + "@formatjs/ecma402-abstract": "2.2.3", + "tslib": "2" } }, - "node_modules/@commitlint/execute-rule": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz", - "integrity": "sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==", - "dev": true, + "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==", "license": "MIT", - "optional": true, - "engines": { - "node": ">=v18" + "dependencies": { + "tslib": "2" } }, - "node_modules/@commitlint/load": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.5.0.tgz", - "integrity": "sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==", - "dev": true, + "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", - "optional": true, - "dependencies": { - "@commitlint/config-validator": "^19.5.0", - "@commitlint/execute-rule": "^19.5.0", - "@commitlint/resolve-extends": "^19.5.0", - "@commitlint/types": "^19.5.0", - "chalk": "^5.3.0", - "cosmiconfig": "^9.0.0", - "cosmiconfig-typescript-loader": "^5.0.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" - }, - "engines": { - "node": ">=v18" + "peerDependencies": { + "react": ">= 16" } }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=12.22" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz", - "integrity": "sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==", + "node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@commitlint/config-validator": "^19.5.0", - "@commitlint/types": "^19.5.0", - "global-directory": "^4.0.1", - "import-meta-resolve": "^4.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/types": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.5.0.tgz", - "integrity": "sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/conventional-commits-parser": "^5.0.0", - "chalk": "^5.3.0" + "node": ">=18.18" }, - "engines": { - "node": ">=v18" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "license": "MIT", + "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": "^12.17.0 || ^14.13 || >=16.0.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.2.tgz", - "integrity": "sha512-6tC/MnlEvs5suR4Ahef4YlBccJDHZuxGsAlxXmybWjZ5jPxlzLSMlRZ9mVHSRvlD+CmtE7+hJ+UQbfXrws/rUQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } + "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" ], - "license": "MIT", "engines": { - "node": ">=18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.2" + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" } }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.2.tgz", - "integrity": "sha512-IuTRcD53WHsXPCZ6W7ubfGqReTJ9Ra0yRRFmXYP/Re8hFYYfoIYIK4080X5luslVLWimhIeFq0hj09urVMQzTw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } + "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": "MIT", - "engines": { - "node": ">=18" - } - }, - "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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "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" - } - }, - "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "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": [ - "ppc64" + "x64" ], - "dev": true, + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "aix" + "darwin" ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "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" ], - "dev": true, + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "android" + "linux" ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "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" ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "android" + "linux" ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "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": [ - "arm64" + "s390x" ], - "dev": true, + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "linux" ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", "cpu": [ "x64" ], - "dev": true, + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "linux" ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "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" ], - "dev": true, + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "freebsd" + "linux" ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "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", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", "cpu": [ "x64" ], - "dev": true, + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "freebsd" + "linux" ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "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" ], - "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "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/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "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" ], - "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "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/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "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": [ - "ia32" + "s390x" ], - "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "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/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "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", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", "cpu": [ - "loong64" + "x64" ], - "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "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": [ - "mips64el" + "arm64" ], - "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "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/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "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", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", "cpu": [ - "ppc64" + "x64" ], - "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "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": [ - "riscv64" + "wasm32" ], - "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, "engines": { - "node": ">=18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "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": [ - "s390x" + "ia32" ], - "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "linux" + "win32" ], "engines": { - "node": ">=18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "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" ], - "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "linux" + "win32" ], "engines": { - "node": ">=18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, "engines": { - "node": ">=18" + "node": ">=12" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "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": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "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", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "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", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "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": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "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", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=8" } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@eslint/compat": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.1.tgz", - "integrity": "sha512-JbHG2TWuCeNzh87fXo+/46Z1LEo9DBA9T188d0fZgGxAD+cNyS6sx9fdiyxjGPBMyQVRlCutTByZ6a5+YMkF7g==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" }, - "peerDependencies": { - "eslint": "^9.10.0" + "engines": { + "node": ">=6" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" + "p-limit": "^2.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=8" } }, - "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "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" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/@jest/console/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": ">=18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "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==", + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "node_modules/@jest/core/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": "Apache-2.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", - "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "levn": "^0.4.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "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": ">=14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@floating-ui/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", - "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "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", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.8" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@floating-ui/dom": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", - "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.0.0" + "jest-get-type": "^29.6.3" }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", - "license": "MIT" - }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.0.tgz", - "integrity": "sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "2.2.1", - "@formatjs/intl-localematcher": "0.5.5", - "tslib": "^2.7.0" - } - }, - "node_modules/@formatjs/fast-memoize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.1.tgz", - "integrity": "sha512-XS2RcOSyWxmUB7BUjj3mlPH0exsUzlf6QfhhijgI941WaJhVxXQ6mEWkdUFIdnKi3TuTYxRdelsgv3mjieIGIA==", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.7.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.8.0.tgz", - "integrity": "sha512-r2un3fmF9oJv3mOkH+wwQZ037VpqmdfahbcCZ9Lh+p6Sx+sNsonI7Zcr6jNMm1s+Si7ejQORS4Ezlh05mMPAXA==", + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.0", - "@formatjs/icu-skeleton-parser": "1.8.4", - "tslib": "^2.7.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.4.tgz", - "integrity": "sha512-LMQ1+Wk1QSzU4zpd5aSu7+w5oeYhupRwZnMQckLPRYhSjf2/8JWQ882BauY9NyHxs5igpuQIXZDgfkaH3PoATg==", + "node_modules/@jest/reporters/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": { - "@formatjs/ecma402-abstract": "2.2.0", - "tslib": "^2.7.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.5.tgz", - "integrity": "sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.7.0" + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "license": "MIT", - "peerDependencies": { - "react": ">= 16" + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, "engines": { - "node": ">=18.18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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" - ], + "node_modules/@jest/transform/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": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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" - ], + "node_modules/@jest/types/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": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, - "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" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, "funding": { - "url": "https://opencollective.com/libvips" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - ], + "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", + "integrity": "sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw==", "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" } }, - "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==", + "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", + "integrity": "sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==", "cpu": [ "arm64" ], - "dev": true, - "license": "LGPL-3.0-or-later", + "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "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==", + "node_modules/@next/swc-darwin-x64": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz", + "integrity": "sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==", "cpu": [ - "s390x" + "x64" ], - "dev": true, - "license": "LGPL-3.0-or-later", + "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz", + "integrity": "sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==", "cpu": [ - "x64" + "arm64" ], - "dev": true, - "license": "LGPL-3.0-or-later", + "license": "MIT", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "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==", + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz", + "integrity": "sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==", "cpu": [ "arm64" ], - "dev": true, - "license": "LGPL-3.0-or-later", + "license": "MIT", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "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", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "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" ], - "dev": true, - "license": "LGPL-3.0-or-later", + "license": "MIT", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "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==", + "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": [ - "arm" + "x64" ], - "dev": true, - "license": "Apache-2.0", + "license": "MIT", "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": ">= 10" } }, - "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==", + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz", + "integrity": "sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==", "cpu": [ "arm64" ], - "dev": true, - "license": "Apache-2.0", + "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], "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": ">= 10" } }, - "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==", + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz", + "integrity": "sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==", "cpu": [ - "s390x" + "x64" ], - "dev": true, - "license": "Apache-2.0", + "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], "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": ">= 10" } }, - "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", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": "^14.21.3 || >=16" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@node-core/website": { + "resolved": "apps/site", + "link": true + }, + "node_modules/@node-core/website-i18n": { + "resolved": "packages/i18n", + "link": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" + "engines": { + "node": ">= 8" } }, - "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" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + "engines": { + "node": ">= 8" } }, - "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", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", - "cpu": [ - "x64" - ], + "node_modules/@nodevu/core": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@nodevu/core/-/core-0.3.0.tgz", + "integrity": "sha512-kVJh6kQViCE8Qf1j7pc7yhUke2kKb1eZM+rqln+EytHqyOq+eZUEtfWbDk1vfWhgiknnAcFOhdVA5apT8rTejQ==", + "license": "MIT", + "dependencies": { + "@nodevu/parsefiles": "^0.0.3", + "luxon": "^3.5.0", + "semver": "^7.6.3" + } + }, + "node_modules/@nodevu/parsefiles": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nodevu/parsefiles/-/parsefiles-0.0.3.tgz", + "integrity": "sha512-IjwkVqA2SlH8XweoAw7EJkeyPGk7gW9imlvhpywrKiPCLP1H0meG/blNAF5X38pirsmvhxPe/BCyywT7Exwuow==", + "license": "MIT" + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + "node": ">=12.4.0" } }, - "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" - ], + "node_modules/@npmcli/config": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.3.4.tgz", + "integrity": "sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==", "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, + "license": "ISC", "dependencies": { - "@emnapi/runtime": "^1.2.0" + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": "^16.14.0 || >=18.0.0" } }, - "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" - ], + "node_modules/@npmcli/config/node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } ], + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": ">=8" } }, - "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" - ], + "node_modules/@npmcli/config/node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "license": "ISC", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@npmcli/git": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", + "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", + "dev": true, "license": "ISC", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" }, "engines": { - "node": ">=12" + "node": "^16.14.0 || >=18.0.0" } }, - "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", + "node_modules/@npmcli/git/node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16" } }, - "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", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@npmcli/git/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" }, - "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", + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "isexe": "^3.1.1" }, - "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", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", + "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", "dev": true, "license": "ISC", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=8" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "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": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@isaacs/cliui": "^8.0.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "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": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "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==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "p-try": "^2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "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": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "p-limit": "^2.2.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@npmcli/package-json": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.14.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==", + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=8" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@isaacs/cliui": "^8.0.2" }, "funding": { - "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" + "url": "https://github.com/sponsors/isaacs" }, - "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" + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "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==", + "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", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "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": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } + "license": "ISC" }, - "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==", + "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==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.18" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "which": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "^16.14.0 || >=18.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==", + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.13.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", + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8.0.0" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "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==", - "dev": true, - "license": "MIT", + "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==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@opentelemetry/api": "^1.3.0" }, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "license": "MIT", + "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==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "license": "MIT", + "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==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "@opentelemetry/api-logs": "0.54.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "license": "MIT", + "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==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "jest-get-type": "^29.6.3" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "license": "MIT", + "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==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "@opentelemetry/api-logs": "0.54.2", + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "license": "MIT", + "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==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "license": "MIT", + "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==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "peer": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14" } }, - "node_modules/@jest/reporters/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" - }, + "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", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 16.0.0" } }, - "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==", - "dev": true, + "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": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@noble/hashes": "^1.1.5" } }, - "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==", - "dev": true, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "license": "MIT", + "optional": true, "engines": { - "node": ">=8" + "node": ">=14" } }, - "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/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accessible-icon": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.0.tgz", + "integrity": "sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@radix-ui/react-visually-hidden": "1.1.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.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/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "@radix-ui/react-primitive": "2.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.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/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", + "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "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" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "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, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" }, - "engines": { - "node": ">=8" + "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" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/transform/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, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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==", - "dev": true, + "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", - "dependencies": { - "has-flag": "^4.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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, + "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": { - "color-convert": "^2.0.1" + "@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" }, - "engines": { - "node": ">=8" + "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" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/types/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, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", + "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, - "engines": { - "node": ">=10" - }, - "funding": { - "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", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mdx-js/mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", - "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdx": "^2.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-util-scope": "^1.0.0", - "estree-walker": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "markdown-extensions": "^2.0.0", - "recma-build-jsx": "^1.0.0", - "recma-jsx": "^1.0.0", - "recma-stringify": "^1.0.0", - "rehype-recma": "^1.0.0", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "source-map": "^0.7.0", - "unified": "^11.0.0", - "unist-util-position-from-estree": "^2.0.0", - "unist-util-stringify-position": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@next/env": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.15.tgz", - "integrity": "sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==", - "license": "MIT" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.15.tgz", - "integrity": "sha512-pKU0iqKRBlFB/ocOI1Ip2CkKePZpYpnw5bEItEkuZ/Nr9FQP1+p7VDWr4VfOdff4i9bFmrOaeaU1bFEyAcxiMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "10.3.10" - } - }, - "node_modules/@next/eslint-plugin-next/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/@next/eslint-plugin-next/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@next/eslint-plugin-next/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz", - "integrity": "sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz", - "integrity": "sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz", - "integrity": "sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz", - "integrity": "sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz", - "integrity": "sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz", - "integrity": "sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz", - "integrity": "sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz", - "integrity": "sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz", - "integrity": "sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@noble/hashes": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", - "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@node-core/website": { - "resolved": "apps/site", - "link": true - }, - "node_modules/@node-core/website-i18n": { - "resolved": "packages/i18n", - "link": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodevu/core": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@nodevu/core/-/core-0.1.0.tgz", - "integrity": "sha512-ITa/xpWUpvQd25Kr/exToJNbUL9lAxjvZ3GWD97983ct2GOCoG7/PVzl6VIRmTg1sSnowABxBOZDi5c5H4wdrg==", - "license": "MIT", - "dependencies": { - "@nodevu/parsefiles": "^0.0.3", - "luxon": "^3.3.0", - "semver": "^7.5.1", - "undici": "^5.22.1" - } - }, - "node_modules/@nodevu/parsefiles": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@nodevu/parsefiles/-/parsefiles-0.0.3.tgz", - "integrity": "sha512-IjwkVqA2SlH8XweoAw7EJkeyPGk7gW9imlvhpywrKiPCLP1H0meG/blNAF5X38pirsmvhxPe/BCyywT7Exwuow==", - "license": "MIT" - }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@npmcli/config": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.3.4.tgz", - "integrity": "sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/package-json": "^5.1.1", - "ci-info": "^4.0.0", - "ini": "^4.1.2", - "nopt": "^7.2.1", - "proc-log": "^4.2.0", - "semver": "^7.3.5", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/config/node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@npmcli/config/node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", - "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "ini": "^4.1.3", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/git/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" - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/map-workspaces": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", - "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" - }, - "engines": { - "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", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", - "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/package-json": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", - "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" - }, - "engines": { - "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", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "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", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "dev": true, - "license": "MIT", - "engines": { - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", - "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.27.0.tgz", - "integrity": "sha512-CdZ3qmHCwNhFAzjTgHqrDQ44Qxcpz43cVxZRhOs+Ns/79ug+Mr84Bkb626bkJLkA3+BLimA5YAEVRlJC6pFb7g==", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "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==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-amqplib": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.42.0.tgz", - "integrity": "sha512-fiuU6OKsqHJiydHWgTRQ7MnIrJ2lEqsdgFtNIH4LbAUJl/5XmrIeoDzDnox+hfkgWK65jsleFuQDtYb5hW1koQ==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-connect": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.40.0.tgz", - "integrity": "sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/connect": "3.4.36" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-connect/node_modules/@opentelemetry/api-logs": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.0.tgz", - "integrity": "sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-connect/node_modules/@opentelemetry/instrumentation": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.0.tgz", - "integrity": "sha512-B0Ydo9g9ehgNHwtpc97XivEzjz0XBKR6iQ83NTENIxEEf5NHE0otZQuZLgDdey1XNk+bP1cfRpIkSFWM5YlSyg==", - "dependencies": { - "@opentelemetry/api-logs": "0.54.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-dataloader": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.12.0.tgz", - "integrity": "sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-express": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.44.0.tgz", - "integrity": "sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-express/node_modules/@opentelemetry/api-logs": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.0.tgz", - "integrity": "sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-express/node_modules/@opentelemetry/instrumentation": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.0.tgz", - "integrity": "sha512-B0Ydo9g9ehgNHwtpc97XivEzjz0XBKR6iQ83NTENIxEEf5NHE0otZQuZLgDdey1XNk+bP1cfRpIkSFWM5YlSyg==", - "dependencies": { - "@opentelemetry/api-logs": "0.54.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-fastify": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.40.0.tgz", - "integrity": "sha512-74qj4nG3zPtU7g2x4sm2T4R3/pBMyrYstTsqSZwdlhQk1SD4l8OSY9sPRX1qkhfxOuW3U4KZQAV/Cymb3fB6hg==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-fs": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.16.0.tgz", - "integrity": "sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-fs/node_modules/@opentelemetry/api-logs": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.0.tgz", - "integrity": "sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-fs/node_modules/@opentelemetry/instrumentation": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.0.tgz", - "integrity": "sha512-B0Ydo9g9ehgNHwtpc97XivEzjz0XBKR6iQ83NTENIxEEf5NHE0otZQuZLgDdey1XNk+bP1cfRpIkSFWM5YlSyg==", - "dependencies": { - "@opentelemetry/api-logs": "0.54.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-generic-pool": { - "version": "0.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz", - "integrity": "sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-graphql": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.43.0.tgz", - "integrity": "sha512-aI3YMmC2McGd8KW5du1a2gBA0iOMOGLqg4s9YjzwbjFwjlmMNFSK1P3AIg374GWg823RPUGfVTIgZ/juk9CVOA==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-hapi": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz", - "integrity": "sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz", - "integrity": "sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==", - "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/instrumentation": "0.53.0", - "@opentelemetry/semantic-conventions": "1.27.0", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", - "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/instrumentation-ioredis": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz", - "integrity": "sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-kafkajs": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.4.0.tgz", - "integrity": "sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-kafkajs/node_modules/@opentelemetry/api-logs": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.0.tgz", - "integrity": "sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-kafkajs/node_modules/@opentelemetry/instrumentation": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.0.tgz", - "integrity": "sha512-B0Ydo9g9ehgNHwtpc97XivEzjz0XBKR6iQ83NTENIxEEf5NHE0otZQuZLgDdey1XNk+bP1cfRpIkSFWM5YlSyg==", - "dependencies": { - "@opentelemetry/api-logs": "0.54.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-koa": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz", - "integrity": "sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-lru-memoizer": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.40.0.tgz", - "integrity": "sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mongodb": { - "version": "0.47.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz", - "integrity": "sha512-yqyXRx2SulEURjgOQyJzhCECSh5i1uM49NUaq9TqLd6fA7g26OahyJfsr9NE38HFqGRHpi4loyrnfYGdrsoVjQ==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/sdk-metrics": "^1.9.1", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mongoose": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz", - "integrity": "sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz", - "integrity": "sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/mysql": "2.15.26" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql2": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz", - "integrity": "sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@opentelemetry/sql-common": "^0.40.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-nestjs-core": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz", - "integrity": "sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-pg": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz", - "integrity": "sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@opentelemetry/sql-common": "^0.40.1", - "@types/pg": "8.6.1", - "@types/pg-pool": "2.0.6" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-redis-4": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz", - "integrity": "sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-undici": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz", - "integrity": "sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.7.0" - } - }, - "node_modules/@opentelemetry/redis-common": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", - "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", - "engines": { - "node": ">=14" - } - }, - "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==", - "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "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==", - "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "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==", - "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0", - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/sql-common": { - "version": "0.40.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", - "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", - "dependencies": { - "@opentelemetry/core": "^1.1.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.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": { - "@noble/hashes": "^1.1.5" - } - }, - "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", - "integrity": "sha512-euTV/2kya290SNkl5m8e/H1na8iDygk74nNtl4E0YZNyYIrEMwE1JwamoroMKGZw2Uz+in/8gH3m1+2YfP0j1w==", - "license": "Apache-2.0", - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/@oramacloud/client": { - "version": "1.3.18", - "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.18.tgz", - "integrity": "sha512-rlr4ckSjkik3ueMZT+BMiNhu0KRLGWPw/MNyw6AgHccz39nQHOS7O81iFCLViV+Y6KlMmQaiPsjlORfigcEdyQ==", - "license": "ISC", - "dependencies": { - "@orama/cuid2": "^2.2.3", - "@orama/orama": "^2.0.16", - "lodash": "^4.17.21", - "openai": "^4.24.1", - "react": "^18.2.0", - "vue": "^3.4.25" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", - "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-html": "^0.0.9", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^4.2.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x || 5.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/@prisma/instrumentation": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.19.1.tgz", - "integrity": "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==", - "dependencies": { - "@opentelemetry/api": "^1.8", - "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0", - "@opentelemetry/sdk-trace-base": "^1.22" - } - }, - "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", - "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", - "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", - "dependencies": { - "@opentelemetry/api-logs": "0.52.1", - "@types/shimmer": "^1.0.2", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", - "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", - "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-accessible-icon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.0.tgz", - "integrity": "sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==", - "license": "MIT", - "dependencies": { - "@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-arrow": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", - "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.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-avatar": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", - "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "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-collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", - "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "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-collection/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "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-compose-refs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", - "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", - "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-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-dialog": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", - "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", - "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-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.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", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.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-direction": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", - "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", - "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-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" - }, - "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-dropdown-menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", - "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", - "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-id": "1.1.0", - "@radix-ui/react-menu": "2.1.2", - "@radix-ui/react-primitive": "2.0.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-focus-guards": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", - "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", - "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-focus-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", - "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "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-id": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "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-label": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", - "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.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-menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", - "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", - "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-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@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-roving-focus": "1.1.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.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-popper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", - "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", - "license": "MIT", - "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-rect": "1.1.0", - "@radix-ui/react-use-size": "1.1.0", - "@radix-ui/rect": "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-popper/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "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-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==", - "license": "MIT", - "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-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==", - "license": "MIT", - "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-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", - "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "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-roving-focus": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", - "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", - "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.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@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" - }, - "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-roving-focus/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "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-scroll-area": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz", - "integrity": "sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@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-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-select": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", - "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@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-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "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-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.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-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", - "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0" - }, - "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-tabs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", - "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@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" + "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": { @@ -6606,29 +3765,11 @@ } } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", - "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-use-controllable-state": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" - }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -6639,76 +3780,35 @@ } } }, - "node_modules/@radix-ui/react-use-escape-keydown": { + "node_modules/@radix-ui/react-focus-scope": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", "license": "MIT", "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-callback-ref": "1.1.0" }, "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-use-layout-effect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", - "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-use-previous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", - "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@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 - } - } - }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", - "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/rect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { + }, + "@types/react-dom": { "optional": true } } }, - "node_modules/@radix-ui/react-use-size": { + "node_modules/@radix-ui/react-id": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", - "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", "license": "MIT", "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" @@ -6723,10 +3823,10 @@ } } }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", - "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "node_modules/@radix-ui/react-label": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", + "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", "license": "MIT", "dependencies": { "@radix-ui/react-primitive": "2.0.0" @@ -6746,692 +3846,543 @@ } } }, - "node_modules/@radix-ui/rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", - "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", - "license": "MIT" - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "26.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz", - "integrity": "sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^10.4.1", - "is-reference": "1.2.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=16.0.0 || 14 >= 14.17" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/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/@rollup/plugin-commonjs/node_modules/estree-walker": { - "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" - }, - "node_modules/@rollup/plugin-commonjs/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rollup/plugin-commonjs/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": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/@rollup/plugin-commonjs/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", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", - "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", + "node_modules/@radix-ui/react-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", + "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@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-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@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-roving-focus": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "@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": { - "rollup": { + "@types/react": { "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "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" - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", - "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@savvywombat/tailwindcss-grid-areas": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@savvywombat/tailwindcss-grid-areas/-/tailwindcss-grid-areas-4.0.0.tgz", - "integrity": "sha512-gjEGTltsGfy+AJQqhkuQKQGp/SB0XzXT3ZNmrOfuwPGF5DLg5GsN5XHiaYhudMvmBwRp+9k6wrZhHBM0lhEgJA==", - "license": "MIT", - "engines": { - "node": ">=16.20.2" - }, - "peerDependencies": { - "tailwindcss": "^3.0.1" - } - }, - "node_modules/@sentry-internal/browser-utils": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.36.0.tgz", - "integrity": "sha512-AVJ9GmQW7jYxaal6hjQnnktsDNype01ajVC4q1RyOn1SfzSnXg6mXwj4xm4ovuJV+aBI7fAZJ55vEX5ASuP0ZA==", - "dependencies": { - "@sentry/core": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0" - }, - "engines": { - "node": ">=14.18" + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@sentry-internal/feedback": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.36.0.tgz", - "integrity": "sha512-aAMTm3uDBj8Ta7FwoohpLmJOpWzpWXvvtTbtmSgkeCtPJLUS8DZDCTZ9uCILUkpuYrv2savRUHsdPkxNjgL8FA==", + "node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "license": "MIT", "dependencies": { - "@sentry/core": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0" + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/replay": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.36.0.tgz", - "integrity": "sha512-lbic98GsSkDeinQDix54tBFEgHUlmBtO+HjXECk9jIE0vOzR4As20/s5ta46t1rKMLlnxOtJuT5jKXeUYogBUw==", - "dependencies": { - "@sentry-internal/browser-utils": "8.36.0", - "@sentry/core": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.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" }, - "engines": { - "node": ">=14.18" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.36.0.tgz", - "integrity": "sha512-KJPLf+qYdrQdmouoAqIPZ2KeapIBlHWbzNdQqNxJFWLHFFjpLUtt0b+87ruvbA/q3NYy2fDwD7EB0tGS1RHBaA==", - "dependencies": { - "@sentry-internal/replay": "8.36.0", - "@sentry/core": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0" + "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.6.tgz", - "integrity": "sha512-V2g1Y1I5eSe7dtUVMBvAJr8BaLRr4CLrgNgtPaZyMT4Rnps82SrZ5zqmEkLXPumlXhLUWR6qzoMNN2u+RXVXfQ==", - "engines": { - "node": ">= 14" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/browser": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.36.0.tgz", - "integrity": "sha512-bLrQNe+wD4DkCfB8OD5TF3Rr8KA2+aTo5wF3t3Bf6KVn8//iX1ia1hhtptYiRnbRkG/0AEPxlqL6XfPZYVPQ5A==", + "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==", + "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.36.0", - "@sentry-internal/feedback": "8.36.0", - "@sentry-internal/replay": "8.36.0", - "@sentry-internal/replay-canvas": "8.36.0", - "@sentry/core": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0" + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/bundler-plugin-core": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.6.tgz", - "integrity": "sha512-1esQdgSUCww9XAntO4pr7uAM5cfGhLsgTK9MEwAKNfvpMYJi9NUTYa3A7AZmdA8V6107Lo4OD7peIPrDRbaDCg==", - "dependencies": { - "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.6", - "@sentry/cli": "^2.36.1", - "dotenv": "^16.3.1", - "find-up": "^5.0.0", - "glob": "^9.3.2", - "magic-string": "0.30.8", - "unplugin": "1.0.1" + "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" }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@sentry/bundler-plugin-core/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==", - "dependencies": { - "balanced-match": "^1.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@sentry/bundler-plugin-core/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "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==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "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" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@sentry/bundler-plugin-core/node_modules/magic-string": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", - "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@radix-ui/react-slot": "1.1.0" }, - "engines": { - "node": ">=12" + "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/@sentry/bundler-plugin-core/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@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.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@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" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "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" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@sentry/bundler-plugin-core/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "engines": { - "node": ">=8" + "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "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/@sentry/cli": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.38.1.tgz", - "integrity": "sha512-XFO04nP7cn0tboMQ4ALR81QRF/6xoWAFzNld7Io6jHbaFzihqewjxAqy7pSvVPaieepUjqe7m/Ippt00kKOACg==", - "hasInstallScript": true, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz", + "integrity": "sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==", + "license": "MIT", "dependencies": { - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.7", - "progress": "^2.0.3", - "proxy-from-env": "^1.1.0", - "which": "^2.0.2" - }, - "bin": { - "sentry-cli": "bin/sentry-cli" + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@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-layout-effect": "1.1.0" }, - "engines": { - "node": ">= 10" + "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" }, - "optionalDependencies": { - "@sentry/cli-darwin": "2.38.1", - "@sentry/cli-linux-arm": "2.38.1", - "@sentry/cli-linux-arm64": "2.38.1", - "@sentry/cli-linux-i686": "2.38.1", - "@sentry/cli-linux-x64": "2.38.1", - "@sentry/cli-win32-i686": "2.38.1", - "@sentry/cli-win32-x64": "2.38.1" - } - }, - "node_modules/@sentry/cli-darwin": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.38.1.tgz", - "integrity": "sha512-IHuxm072aSTAvwuHtLg065cF00Pxm2wprnrRr2lkyWp8nLOoO7DmumWZ4pjHvhB8yZXsAbM/PSxLRBoDIRDPzQ==", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-arm": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.38.1.tgz", - "integrity": "sha512-xyf4f56O4/eeirol8t1tTQw0cwF34b3v69zn6wHtKfx2lW5IEBGO+agVNdOdosnCx6j3UadgdRXUJlSyM9kx/w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux", - "freebsd" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-arm64": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.38.1.tgz", - "integrity": "sha512-3bj5DS4wDusL0YHwG5qeI+O19kz4N4KDDmnWqIew56MmSSAEM5B0qKk5Hivu1vRU5vPKFwVn8BVjLnKXu9idjg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux", - "freebsd" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-i686": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.38.1.tgz", - "integrity": "sha512-VygJO2oTc6GfiqqmPYNpO2bW1hzszuNyn37SSmeRuuhq1/kRwD+ZQj4OmXYEASjSLg+8mDPoWOurPjHEPKNtNw==", - "cpu": [ - "x86", - "ia32" - ], - "optional": true, - "os": [ - "linux", - "freebsd" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-x64": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.38.1.tgz", - "integrity": "sha512-9SaPJK5yAGR7qGsDubTT9O7VpNQG9KIolCOov4xJU7scbmjGaFyYBm9c7ZIqbq6B+56YchPbtD0RewZC6CiF2w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux", - "freebsd" - ], - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@sentry/cli-win32-i686": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.38.1.tgz", - "integrity": "sha512-BVUM5y+ZDBK/LqyVvt0C7oolmg8aq7PI/u04/Pp6FLRExySqwyQim0vNyL2FRjIeX1yhbk7x4Z79UjEKqJBltA==", - "cpu": [ - "x86", - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" + "node_modules/@radix-ui/react-select": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", + "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@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-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "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-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.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/@sentry/cli-win32-x64": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.38.1.tgz", - "integrity": "sha512-+HgsdM3LFSzUNlDpicPRdTKfr5u+nJ2C5p4aDYPb2G+qoYW+66FI4NxgWSyzJsj3nVQ8lW5/6AoMP6U5z/e/0A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/core": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.36.0.tgz", - "integrity": "sha512-cbq1WQyRqc/+YpPhjwQxfniUM3ZxmO3Pm1oisTB8dw6mlbgQfGD6aznEIjXWWJY6k6acewJlMUx09N7DnprtBw==", + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", + "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", + "license": "MIT", "dependencies": { - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@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" }, - "engines": { - "node": ">=14.18" + "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/@sentry/nextjs": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.36.0.tgz", - "integrity": "sha512-JLPK5ZSZdGyIPVx40qnOomHV04TB3p+HymYvfQwX7C7/Ocm8U0Q7v+0164IXHu0FVR/BfqhbE84s+mpAEnHvig==", - "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@rollup/plugin-commonjs": "26.0.1", - "@sentry-internal/browser-utils": "8.36.0", - "@sentry/core": "8.36.0", - "@sentry/node": "8.36.0", - "@sentry/opentelemetry": "8.36.0", - "@sentry/react": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0", - "@sentry/vercel-edge": "8.36.0", - "@sentry/webpack-plugin": "2.22.6", - "chalk": "3.0.0", - "resolve": "1.22.8", - "rollup": "3.29.5", - "stacktrace-parser": "^0.1.10" + "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" }, - "engines": { - "node": ">=14.18" + "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-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", "peerDependencies": { - "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/nextjs/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/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@radix-ui/react-use-callback-ref": "1.1.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/nextjs/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@radix-ui/react-use-callback-ref": "1.1.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/nextjs/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/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=7.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/nextjs/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/@sentry/nextjs/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/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", "license": "MIT", - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/nextjs/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/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@radix-ui/rect": "1.1.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/node": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.36.0.tgz", - "integrity": "sha512-2RRbSck90TGpVz8F3OaNbq5Q9RXgeRlq5leGWHU7NfQOl3LmkG+vkzTbOqPDPZLtiYcw5KQ3G5G+vybrDS6AGg==", - "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.25.1", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/instrumentation-amqplib": "^0.42.0", - "@opentelemetry/instrumentation-connect": "0.40.0", - "@opentelemetry/instrumentation-dataloader": "0.12.0", - "@opentelemetry/instrumentation-express": "0.44.0", - "@opentelemetry/instrumentation-fastify": "0.40.0", - "@opentelemetry/instrumentation-fs": "0.16.0", - "@opentelemetry/instrumentation-generic-pool": "0.39.0", - "@opentelemetry/instrumentation-graphql": "0.43.0", - "@opentelemetry/instrumentation-hapi": "0.41.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/instrumentation-ioredis": "0.43.0", - "@opentelemetry/instrumentation-kafkajs": "0.4.0", - "@opentelemetry/instrumentation-koa": "0.43.0", - "@opentelemetry/instrumentation-lru-memoizer": "0.40.0", - "@opentelemetry/instrumentation-mongodb": "0.47.0", - "@opentelemetry/instrumentation-mongoose": "0.42.0", - "@opentelemetry/instrumentation-mysql": "0.41.0", - "@opentelemetry/instrumentation-mysql2": "0.41.0", - "@opentelemetry/instrumentation-nestjs-core": "0.40.0", - "@opentelemetry/instrumentation-pg": "0.44.0", - "@opentelemetry/instrumentation-redis-4": "0.42.0", - "@opentelemetry/instrumentation-undici": "0.6.0", - "@opentelemetry/resources": "^1.26.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.36.0", - "@sentry/opentelemetry": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0", - "import-in-the-middle": "^1.11.2" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=14.18" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/opentelemetry": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.36.0.tgz", - "integrity": "sha512-pMKMphH0j1Mh8zknLWEEUaaaxeYn76rniGOxKLoQVk1pCUhhzkFEJdxKC41aR8yin/uN8X3CGWQb9vp/przwSg==", + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", "dependencies": { - "@sentry/core": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0" - }, - "engines": { - "node": ">=14.18" + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sentry/react": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.36.0.tgz", - "integrity": "sha512-YIJZUx7Q5aulK034cRri0p/7MeP3tdLfdP6vMJMwrVlqoWQI9gKZXikmLIqHUQegZdMRYX5tr03gTWJu3dhYwg==", + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "license": "MIT", "dependencies": { - "@sentry/browser": "8.36.0", - "@sentry/core": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0", - "hoist-non-react-statics": "^3.3.2" - }, - "engines": { - "node": ">=14.18" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { - "react": "^16.14.0 || 17.x || 18.x || 19.x" + "@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/@sentry/types": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.36.0.tgz", - "integrity": "sha512-K1pVFfdGHw115RzGHpwSOqoEPeayn4N1F9IfM0kxrYpQSbFT1X29eak88GBfC8gPiLEF0iFGlSaQ4ERmF7oRcA==", - "engines": { - "node": ">=14.18" - } + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" }, - "node_modules/@sentry/utils": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.36.0.tgz", - "integrity": "sha512-oJ3EDPj0I00z+AwC3EWBpSidXYUoKW0Id8MfMQP5Hflniz3gif7UEReblT+FJgPEVo6+6uNzAncY0MuNMxmDKQ==", - "dependencies": { - "@sentry/types": "8.36.0" - }, - "engines": { - "node": ">=14.18" - } + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" }, - "node_modules/@sentry/vercel-edge": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.36.0.tgz", - "integrity": "sha512-5zSw+5JniztTkiOXU4pUXypD9opPVf91Gd71/khrFfDbDBT8gF/LlClp21ACt/c3jc1Bbk79j+lyYEXVe8/jIg==", - "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@sentry/core": "8.36.0", - "@sentry/types": "8.36.0", - "@sentry/utils": "8.36.0" - }, - "engines": { - "node": ">=14.18" - } + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "dev": true, + "license": "MIT" }, - "node_modules/@sentry/webpack-plugin": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.6.tgz", - "integrity": "sha512-BiLhAzQYAz/9kCXKj2LeUKWf/9GBVn2dD0DeYK89s+sjDEaxjbcLBBiLlLrzT7eC9QVj2tUZRKOi6puCfc8ysw==", - "dependencies": { - "@sentry/bundler-plugin-core": "2.22.6", - "unplugin": "1.0.1", - "uuid": "^9.0.0" - }, + "node_modules/@savvywombat/tailwindcss-grid-areas": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@savvywombat/tailwindcss-grid-areas/-/tailwindcss-grid-areas-4.0.0.tgz", + "integrity": "sha512-gjEGTltsGfy+AJQqhkuQKQGp/SB0XzXT3ZNmrOfuwPGF5DLg5GsN5XHiaYhudMvmBwRp+9k6wrZhHBM0lhEgJA==", + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=16.20.2" }, "peerDependencies": { - "webpack": ">=4.40.0" + "tailwindcss": "^3.0.1" } }, "node_modules/@shikijs/core": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.22.2.tgz", "integrity": "sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==", + "license": "MIT", "dependencies": { "@shikijs/engine-javascript": "1.22.2", "@shikijs/engine-oniguruma": "1.22.2", @@ -7445,6 +4396,7 @@ "version": "1.22.2", "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.2.tgz", "integrity": "sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==", + "license": "MIT", "dependencies": { "@shikijs/types": "1.22.2", "@shikijs/vscode-textmate": "^9.3.0", @@ -7455,6 +4407,7 @@ "version": "1.22.2", "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.2.tgz", "integrity": "sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==", + "license": "MIT", "dependencies": { "@shikijs/types": "1.22.2", "@shikijs/vscode-textmate": "^9.3.0" @@ -7464,6 +4417,7 @@ "version": "1.22.2", "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.22.2.tgz", "integrity": "sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==", + "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" @@ -7472,7 +4426,8 @@ "node_modules/@shikijs/vscode-textmate": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", - "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==" + "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==", + "license": "MIT" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -7502,10 +4457,11 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.1.tgz", - "integrity": "sha512-3ahbYdDx7iFUd4X1KelMSuPqVnladc0bH4m6DQZyN+wkRxdRlOD6iOGuOe2qi1Gv0b2VuVAt253i75tK/TPNLw==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.4.tgz", + "integrity": "sha512-FbZRbwJQggLz6M3zB6scCp1SDGwQ5zdiD6sjBilZzgGO5rBFqG0A8PoOyr4iPrLU2y/NZBdRrJBD+6MkaJ+yzw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "dequal": "^2.0.2", @@ -7516,18 +4472,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.1" + "storybook": "^8.4.4" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.1.tgz", - "integrity": "sha512-rMxKehtQogV6Scjb/oqMFM0Mwn8NJRuGFDRJE3TBijNSJ2HPJms+xXp8KVZJengadlsF5HFwQBbnZzIeFDQRLw==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.4.tgz", + "integrity": "sha512-izqcc6tY0BiKW7DYrEnoXUEH9FYDPWNfQnqqE0nVBv3BS2DoNmm8M9SB8fZx7pPfw53cMJBGt3vrlY0Wtxy1+Q==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.1", - "@storybook/test": "8.4.1", + "@storybook/instrumenter": "8.4.4", + "@storybook/test": "8.4.4", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -7536,14 +4493,28 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.1" + "storybook": "^8.4.4" + } + }, + "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", + "integrity": "sha512-5n+SXPfMTc4m7sWaJWPWjoHYWc6/B111M2Ia55toQ3GV4ON4vVlTgH9FX+EgCkDticElj99HLTMDJkHRj2yvkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/node-logger": "^8.0.0-alpha.10" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, "node_modules/@storybook/addon-themes": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.1.tgz", - "integrity": "sha512-yfJ0NbXdLGGM0dUSJNPtSvHznTFSfsyAEJwpslJfqJ9q03Z/mMct8SfXesg7VFLNP0Uxgv+KG4+E0+Dcjv/V1g==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.4.tgz", + "integrity": "sha512-RHyGQqBsnMrVtTJZtYhm2P33Bmp0d8z22/22Uxp5ux9irhp3s3TYRB5Q1CdyfulgM7JaN2l5GfXHUaytb2UiPA==", "dev": true, + "license": "MIT", "dependencies": { "ts-dedent": "^2.0.0" }, @@ -7552,14 +4523,15 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.1" + "storybook": "^8.4.4" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.1.tgz", - "integrity": "sha512-O6DcuUfXQTytjl7mj4ld4ZX9x2pUUWKUx1TxiuMuH0EKb612RyYcdpXpDQQwsIzLV/f2BOetk9jmO2/MymfbWQ==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.4.tgz", + "integrity": "sha512-SRHJlLhf3tu7+sYNfVIYTeMegn6aiv4HGX97ZLvL76NWWBU8BntQ1LKMki7475mWiZNUFMoYYPsHlG+HU9FAtg==", "dev": true, + "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" }, @@ -7568,16 +4540,31 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.1" + "storybook": "^8.4.4" + } + }, + "node_modules/@storybook/addon-webpack5-compiler-swc": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-1.0.5.tgz", + "integrity": "sha512-1NlM3noit2vA22OyWb8Ma2lhcEKCS1Snv2kr+EkaVABUqNDfVc9AD/GgYQhF7F/2CoF5N2JU7uzXDzFHd5TzZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/core": "^1.7.3", + "swc-loader": "^0.2.3" + }, + "engines": { + "node": ">=18" } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.1.tgz", - "integrity": "sha512-rqSJcxcYiQyceNFSrT9qnI6hrW4/petb1n+oN8nG5HrRsl0zxOVzamMVyNzZxrAMKvq+VMJtLe1rQi8FnJNunw==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.4.tgz", + "integrity": "sha512-I7SmGngtGc/WA44UkG3sCyYtGXVjTpPe42umf70n5EVaHRvtmXCxfL41C1y3CIfEMAfF36gOFm7rEJROIO5NyA==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.1", + "@storybook/core-webpack": "8.4.4", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -7608,7 +4595,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.1" + "storybook": "^8.4.4" }, "peerDependenciesMeta": { "typescript": { @@ -7617,19 +4604,21 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "22.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", - "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.19.8" } }, "node_modules/@storybook/components": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.1.tgz", - "integrity": "sha512-bMPclbBhrWxhFlwqrC/h4fPLl05ouoi5D8SkQTHjeVxWN9eDnMVi76xM0YDct302Z3f0x5S3plIulp+4XRxrvg==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.4.tgz", + "integrity": "sha512-0BSZVmsk23C0BSRKx3liZSVQFXtoF86XQFdNQxjrXIwdHIEN7TcL3DwcxeVUU5ilGp7HeDgAydGNIPGgTeEe6g==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7638,11 +4627,44 @@ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, + "node_modules/@storybook/core": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.4.tgz", + "integrity": "sha512-WjTmJpsHsFCd7tQ/8jFpDWjhntauXcWYYTcEZk56Pq4miyNrrXhV0S80Gxv3Uvzk0jocgtT2AKf8rQuH2UkQEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.1.11", + "better-opn": "^3.0.2", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", + "esbuild-register": "^3.5.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "process": "^0.11.10", + "recast": "^0.23.5", + "semver": "^7.6.2", + "util": "^0.12.5", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, "node_modules/@storybook/core-webpack": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.1.tgz", - "integrity": "sha512-TptbDGaj9a8wJMF4g+C8t02CXl4BSd0BA/qGWBvzn3j4FJqeQ/m8elOXLYZrPbQKI6PjP0J4ayHkXdX2h0/tUw==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.4.tgz", + "integrity": "sha512-JeODT64uRJDH0o/ZOAAZHJswBkTYd2u9AdGyAzjp16KRK2NcHM2iUMNT94lOlCYzshvRVqPFVxbNmaL16/K0Ag==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^22.0.0", "ts-dedent": "^2.0.0" @@ -7652,14 +4674,15 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.1" + "storybook": "^8.4.4" } }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "22.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", - "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.19.8" } @@ -7682,10 +4705,11 @@ "license": "MIT" }, "node_modules/@storybook/instrumenter": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.1.tgz", - "integrity": "sha512-MgrhrLVW78jqno+Dh9h9Es06Ja3867TlrIUd8B3K3U1hsCFUQuFKXJBuGjNJF8U0QJY/aSIRnAgUBurHdVkPcw==", + "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" @@ -7695,14 +4719,15 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.1" + "storybook": "^8.4.4" } }, "node_modules/@storybook/manager-api": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.1.tgz", - "integrity": "sha512-7hb2k4zsp6lREGZbQ85QOlsC8EIMZXuY9Pg12VUgaZd+LmLjLuaqtrxRz3SwIgIWsRpFun9AHO0X37DmYNGTSw==", + "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==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7711,94 +4736,29 @@ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, - "node_modules/@storybook/nextjs": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.4.1.tgz", - "integrity": "sha512-SOEI8qOY+yLsRsvjokSevqtA+E+cXHDBObwPUJKmRxIAEwbP1uJEFnbvpZULs1pQl1gYsZQxEndbkTmM5pwtoQ==", + "node_modules/@storybook/node-logger": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.4.2.tgz", + "integrity": "sha512-7IOAbyByGdrAr3cidEULFMnuCF4i4NyxW0emI3MKl9NKAVeWVWpeHL1tL1JvCIO57bMNH2Jko80m87TmEH82vg==", "dev": true, - "dependencies": { - "@babel/core": "^7.24.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", - "@babel/plugin-transform-runtime": "^7.24.3", - "@babel/preset-env": "^7.24.4", - "@babel/preset-react": "^7.24.1", - "@babel/preset-typescript": "^7.24.1", - "@babel/runtime": "^7.24.4", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@storybook/builder-webpack5": "8.4.1", - "@storybook/preset-react-webpack": "8.4.1", - "@storybook/react": "8.4.1", - "@storybook/test": "8.4.1", - "@types/node": "^22.0.0", - "@types/semver": "^7.3.4", - "babel-loader": "^9.1.3", - "css-loader": "^6.7.3", - "find-up": "^5.0.0", - "image-size": "^1.0.0", - "loader-utils": "^3.2.1", - "node-polyfill-webpack-plugin": "^2.0.1", - "pnp-webpack-plugin": "^1.7.0", - "postcss": "^8.4.38", - "postcss-loader": "^8.1.1", - "react-refresh": "^0.14.0", - "resolve-url-loader": "^5.0.0", - "sass-loader": "^13.2.0", - "semver": "^7.3.5", - "style-loader": "^3.3.1", - "styled-jsx": "^5.1.6", - "ts-dedent": "^2.0.0", - "tsconfig-paths": "^4.0.0", - "tsconfig-paths-webpack-plugin": "^4.0.1" - }, - "engines": { - "node": ">=18.0.0" - }, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, - "optionalDependencies": { - "sharp": "^0.33.3" - }, "peerDependencies": { - "next": "^13.5.0 || ^14.0.0", - "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.1", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/@storybook/nextjs/node_modules/@types/node": { - "version": "22.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", - "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", - "dev": true, - "dependencies": { - "undici-types": "~6.19.8" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.1.tgz", - "integrity": "sha512-Cm+u3/avHdoneEFHnvFRMPAElWtxyyOkcVsWHkM0rVhj7bxkzOyrBrenm1GiB8NamRosumsEnhREYFo2lthU2A==", + "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==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.1", - "@storybook/react": "8.4.1", + "@storybook/core-webpack": "8.4.4", + "@storybook/react": "8.4.4", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", @@ -7820,7 +4780,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.1" + "storybook": "^8.4.4" }, "peerDependenciesMeta": { "typescript": { @@ -7829,19 +4789,21 @@ } }, "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "22.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", - "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.19.8" } }, "node_modules/@storybook/preview-api": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.1.tgz", - "integrity": "sha512-VdnESYfXCUasNtMd5s1Q8DPqMnAUdpROn8mE8UAD79Cy7DSNesI1q0SATuJqh5iYCT/+3Tpjfghsr2zC/mOh8w==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.4.tgz", + "integrity": "sha512-iZrWQcjRBqBHFdDXVxGpw6mHBZMCMYqhWXdyJ0d1S2y3PwcfOjkcXlQ1UiAenFHlA6dKrcYw8luKUQTL9bKReA==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7851,17 +4813,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.1.tgz", - "integrity": "sha512-ZwszrzV47nWQEZ0X4LyNgv5OFq4iy/7LpmxW6IncIO7PWm70OWG2BVtKFNsNQx0LY+hOtllWZbvg06mPQzahFA==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.4.tgz", + "integrity": "sha512-92lGnRcAI2qW6zH8GMBScyXmOS1ANI8ZuSP4ExQj+lGsCrAr7PBr0wuHy3wIn1YyAvQGPUn/mpYrmMz08c2HfA==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/components": "8.4.1", + "@storybook/components": "8.4.4", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.4.1", - "@storybook/preview-api": "8.4.1", - "@storybook/react-dom-shim": "8.4.1", - "@storybook/theming": "8.4.1" + "@storybook/manager-api": "8.4.4", + "@storybook/preview-api": "8.4.4", + "@storybook/react-dom-shim": "8.4.4", + "@storybook/theming": "8.4.4" }, "engines": { "node": ">=18.0.0" @@ -7871,10 +4834,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.4.1", + "@storybook/test": "8.4.4", "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.1", + "storybook": "^8.4.4", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -7891,6 +4854,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", @@ -7906,10 +4870,36 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.1.tgz", - "integrity": "sha512-XhvuqkpqtcUjDA8XE4osq140SCddX3VHMdj+IwlrMdoSl32CAya01TH5YDDx6YMy6hM/QQbyVKaemG7RB/oU4Q==", + "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==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "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" + } + }, + "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==", "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/builder-webpack5": "8.4.4", + "@storybook/preset-react-webpack": "8.4.4", + "@storybook/react": "8.4.4", + "@types/node": "^22.0.0" + }, + "engines": { + "node": ">=18.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7917,18 +4907,35 @@ "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.1" + "storybook": "^8.4.4", + "typescript": ">= 4.2.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/react-webpack5/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.8" } }, "node_modules/@storybook/test": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.1.tgz", - "integrity": "sha512-najn9kCxB8NaHykhD7Fv+Iq0FnxmIJYOJlYiI8NMgVLwaSDFf6gnqAY6HHVPRqkhej8TuT1L2e2RxKqzWEB+mA==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.4.tgz", + "integrity": "sha512-tmJd+lxl3MC0Xdu1KW/69V8tibv98OvdopxGqfVR0x5dkRHM3sFK/tv1ZJAUeronlvRyhGySOu1tHUrMjcNqyA==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.1", + "@storybook/instrumenter": "8.4.4", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -7937,116 +4944,261 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.4" + } + }, + "node_modules/@storybook/test/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/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", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@swc/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.1.tgz", + "integrity": "sha512-OnPc+Kt5oy3xTvr/KCUOqE9ptJcWbyQgAUr1ydh9EmbBcmJTaO1kfQCxm/axzJi6sKeDTxL9rX5zvLOhoYIaQw==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.14" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.9.1", + "@swc/core-darwin-x64": "1.9.1", + "@swc/core-linux-arm-gnueabihf": "1.9.1", + "@swc/core-linux-arm64-gnu": "1.9.1", + "@swc/core-linux-arm64-musl": "1.9.1", + "@swc/core-linux-x64-gnu": "1.9.1", + "@swc/core-linux-x64-musl": "1.9.1", + "@swc/core-win32-arm64-msvc": "1.9.1", + "@swc/core-win32-ia32-msvc": "1.9.1", + "@swc/core-win32-x64-msvc": "1.9.1" }, "peerDependencies": { - "storybook": "^8.4.1" + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, - "node_modules/@storybook/test/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==", + "node_modules/@swc/core-darwin-arm64": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.1.tgz", + "integrity": "sha512-2/ncHSCdAh5OHem1fMITrWEzzl97OdMK1PHc9CkxSJnphLjRubfxB5sbc5tDhcO68a5tVy+DxwaBgDec3PXnOg==", + "cpu": [ + "arm64" + ], "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" - }, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" + "node": ">=10" } }, - "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==", + "node_modules/@swc/core-darwin-x64": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.1.tgz", + "integrity": "sha512-4MDOFC5zmNqRJ9RGFOH95oYf27J9HniLVpB1pYm2gGeNHdl2QvDMtx2QTuMHQ6+OTn/3y1BHYuhBGp7d405oLA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "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==", + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.1.tgz", + "integrity": "sha512-eVW/BjRW8/HpLe3+1jRU7w7PdRLBgnEEYTkHJISU8805/EKT03xNZn6CfaBpKfeAloY4043hbGzE/NP9IahdpQ==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=10" } }, - "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==", + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.1.tgz", + "integrity": "sha512-8m3u1v8R8NgI/9+cHMkzk14w87blSy3OsQPWPfhOL+XPwhyLPvat+ahQJb2nZmltjTgkB4IbzKFSfbuA34LmNA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "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 + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.1.tgz", + "integrity": "sha512-hpT0sQAZnW8l02I289yeyFfT9llGO9PzKDxUq8pocKtioEHiElRqR53juCWoSmzuWi+6KX7zUJ0NKCBrc8pmDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } }, - "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", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.1.tgz", + "integrity": "sha512-sGFdpdAYusk/ropHiwtXom2JrdaKPxl8MqemRv6dvxZq1Gm/GdmOowxdXIPjCgBGMgoXVcgNviH6CgiO5q+UtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } }, - "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==", + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.1.tgz", + "integrity": "sha512-YtNLNwIWs0Z2+XgBs6+LrCIGtfCDtNr4S4b6Q5HDOreEIGzSvhkef8eyBI5L+fJ2eGov4b7iEo61C4izDJS5RA==", + "cpu": [ + "x64" + ], "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=10" } }, - "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==", + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.1.tgz", + "integrity": "sha512-qSxD3uZW2vSiHqUt30vUi0PB92zDh9bjqh5YKpfhhVa7h1vt/xXhlid8yMvSNToTfzhRrTEffOAPUr7WVoyQUA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/@storybook/theming": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.1.tgz", - "integrity": "sha512-Sz24isryVFZaVahXkjgnCsMAQqQeeKg41AtLsldlYdesIo6fr5tc6/SkTUy+CYadK4Dkhqp+vVRDnwToYYRGhA==", + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.1.tgz", + "integrity": "sha512-C3fPEwyX/WRPlX6zIToNykJuz1JkZX0sk8H1QH2vpnKuySUkt/Ur5K2FzLgSWzJdbfxstpgS151/es0VGAD+ZA==", + "cpu": [ + "ia32" + ], "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.1.tgz", + "integrity": "sha512-2XZ+U1AyVsOAXeH6WK1syDm7+gwTjA8fShs93WcbxnK7HV+NigDlvr4124CeJLTHyh3fMh1o7+CnQnaBJhlysQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" } }, "node_modules/@swc/counter": { @@ -8056,15 +5208,24 @@ "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "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": { - "@swc/counter": "^0.1.3", "tslib": "^2.4.0" } }, + "node_modules/@swc/types": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.14.tgz", + "integrity": "sha512-PbSmTiYCN+GMrvfjrMo9bdY+f2COnwbdnoMw7rqU/PI5jXpKjxOGZ0qqZCImxnT81NkNsKnmEpvu+hRXLBeCJg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, "node_modules/@tailwindcss/container-queries": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz", @@ -8093,81 +5254,22 @@ "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/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/@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==", + }, + "node_modules/@testing-library/dom/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/@testing-library/jest-dom": { @@ -8175,6 +5277,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", "dev": true, + "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", @@ -8190,56 +5293,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", @@ -8247,29 +5300,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", @@ -8393,15 +5423,6 @@ "@types/node": "*" } }, - "node_modules/@types/connect": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", - "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/conventional-commits-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", @@ -8426,13 +5447,14 @@ "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", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/estree": "*", @@ -8449,6 +5471,17 @@ "@types/eslint": "*" } }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -8487,7 +5520,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", @@ -8528,6 +5562,7 @@ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -8584,6 +5619,7 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "devOptional": true, "license": "MIT" }, "node_modules/@types/json5": { @@ -8614,18 +5650,11 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "license": "MIT" }, - "node_modules/@types/mysql": { - "version": "2.15.26", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", - "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/node": { - "version": "20.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.5.tgz", - "integrity": "sha512-n8FYY/pRxu496441gIcAQFZPKXbhsd6VZygcq+PTSZ75eMh/Ke0hCAROdUa21qiFqKNsPPYic46yXDO1JGiPBQ==", + "version": "20.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", + "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", + "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -8644,25 +5673,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 - }, - "node_modules/@types/pg": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", - "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", - "dependencies": { - "@types/node": "*", - "pg-protocol": "*", - "pg-types": "^2.2.0" - } - }, - "node_modules/@types/pg-pool": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", - "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", - "dependencies": { - "@types/pg": "*" - } + "dev": true, + "license": "MIT" }, "node_modules/@types/prop-types": { "version": "15.7.13", @@ -8676,6 +5688,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", "devOptional": true, + "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -8695,7 +5708,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", @@ -8707,7 +5721,9 @@ "node_modules/@types/shimmer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", + "license": "MIT", + "peer": true }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -8754,17 +5770,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz", - "integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz", + "integrity": "sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/type-utils": "8.11.0", - "@typescript-eslint/utils": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/type-utils": "8.13.0", + "@typescript-eslint/utils": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -8788,16 +5804,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz", - "integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz", + "integrity": "sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/typescript-estree": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/typescript-estree": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", "debug": "^4.3.4" }, "engines": { @@ -8817,14 +5833,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz", - "integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", + "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0" + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8835,14 +5851,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz", - "integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", + "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.11.0", - "@typescript-eslint/utils": "8.11.0", + "@typescript-eslint/typescript-estree": "8.13.0", + "@typescript-eslint/utils": "8.13.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -8860,9 +5876,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz", - "integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", + "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", "dev": true, "license": "MIT", "engines": { @@ -8874,14 +5890,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz", - "integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", + "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8902,14 +5918,34 @@ } } }, - "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/typescript-estree/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": { - "balanced-match": "^1.0.0" + "@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/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/node_modules/minimatch": { @@ -8929,16 +5965,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz", - "integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", + "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/typescript-estree": "8.11.0" + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/typescript-estree": "8.13.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8952,13 +5988,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz", - "integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", + "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/types": "8.13.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -9047,37 +6083,72 @@ } }, "node_modules/@vercel/analytics": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.3.1.tgz", - "integrity": "sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.4.0.tgz", + "integrity": "sha512-eUwWW7l8nPJb0nJmjZuYp9o7YZ9XPj67lU9mEogaPXiFxq/SFB5DMnvQVk4aKcL8kFgotiYdDZWxdiNcWo7cgg==", "license": "MPL-2.0", - "dependencies": { - "server-only": "^0.0.1" - }, "peerDependencies": { + "@remix-run/react": "^2", + "@sveltejs/kit": "^1 || ^2", "next": ">= 13", - "react": "^18 || ^19" + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" }, "peerDependenciesMeta": { + "@remix-run/react": { + "optional": true + }, + "@sveltejs/kit": { + "optional": true + }, "next": { "optional": true }, "react": { "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true } } }, + "node_modules/@vercel/otel": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@vercel/otel/-/otel-1.10.0.tgz", + "integrity": "sha512-bv1FXbFZlFbB89vyA2P9/kr6eZ42bMtXgqBJpgi+8yOrZU8rkg9wMi0TL//AgAf/qKtaryDm1sbCnkLHgCI3PQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/api-logs": ">=0.46.0 && <1.0.0", + "@opentelemetry/instrumentation": ">=0.46.0 && <1.0.0", + "@opentelemetry/resources": "^1.19.0", + "@opentelemetry/sdk-logs": ">=0.46.0 && <1.0.0", + "@opentelemetry/sdk-metrics": "^1.19.0", + "@opentelemetry/sdk-trace-base": "^1.19.0" + } + }, "node_modules/@vercel/speed-insights": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.0.12.tgz", - "integrity": "sha512-ZGQ+a7bcfWJD2VYEp2R1LHvRAMyyaFBYytZXsfnbOMkeOvzGNVxUL7aVUvisIrTZjXTSsxG45DKX7yiw6nq2Jw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.1.0.tgz", + "integrity": "sha512-rAXxuhhO4mlRGC9noa5F7HLMtGg8YF1zAN6Pjd1Ny4pII4cerhtwSG4vympbCl+pWkH7nBS9kVXRD4FAn54dlg==", "hasInstallScript": true, "license": "Apache-2.0", "peerDependencies": { "@sveltejs/kit": "^1 || ^2", "next": ">= 13", - "react": "^18 || ^19", - "svelte": "^4", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", "vue": "^3", "vue-router": "^4" }, @@ -9148,9 +6219,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz", - "integrity": "sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.5.tgz", + "integrity": "sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==", "dev": true, "license": "MIT", "dependencies": { @@ -9174,14 +6245,14 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.3.tgz", - "integrity": "sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.5.tgz", + "integrity": "sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.3", - "loupe": "^3.1.1", + "@vitest/pretty-format": "2.1.5", + "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, "funding": { @@ -9301,148 +6372,163 @@ "license": "MIT" }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "devOptional": true, "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "devOptional": true, "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "devOptional": true, "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "devOptional": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -9450,12 +6536,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "devOptional": true, "license": "Apache-2.0" }, "node_modules/abab": { @@ -9489,11 +6577,10 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -9512,30 +6599,14 @@ "acorn-walk": "^8.0.2" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals/node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" + "peer": true, + "peerDependencies": { + "acorn": "^8" } }, "node_modules/acorn-jsx": { @@ -9547,39 +6618,24 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "acorn": "^8.11.0" }, "engines": { - "node": ">=8.9.0" + "node": ">=0.4.0" } }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, "license": "MIT", "dependencies": { "debug": "4" @@ -9677,19 +6733,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-html": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", - "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -9713,15 +6756,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==", + "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": { @@ -9743,6 +6789,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", @@ -9753,7 +6811,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/aria-hidden": { @@ -9946,39 +7003,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -9994,6 +7018,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" }, @@ -10040,317 +7065,119 @@ "dev": true, "license": "ISC", "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.1.tgz", - "integrity": "sha512-qPC9o+kD8Tir0lzNGLeghbOrWMr3ZJpaRlCIb6Uobt/7N4FiEDvqUMnxzCHRHmg8vOg14kr5gVNyScRmbMaJ9g==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@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", - "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/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-loader": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", - "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4.0.0" } }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^10 || ^12 || >=14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/babel-loader/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/axe-core": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, + "license": "MPL-2.0", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/babel-loader/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" } }, - "node_modules/babel-loader/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^6.3.0" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": ">=14.16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/babel-loader/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "node_modules/babel-jest/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": ">=12.20" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/babel-plugin-istanbul": { @@ -10413,58 +7240,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "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" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/babel-preset-current-node-syntax": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", @@ -10551,6 +7326,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" }, @@ -10558,16 +7334,6 @@ "node": ">=12.0.0" } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -10576,249 +7342,59 @@ "engines": { "node": ">=8" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "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/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/browser-assert": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", - "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", - "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^5.2.1", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/browserify-sign": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", - "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", + "buffer": "^5.5.0", "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.12" + "readable-stream": "^3.4.0" } }, - "node_modules/browserify-sign/node_modules/isarray": { + "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, + "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": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "balanced-match": "^1.0.0" } }, - "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pako": "~1.0.5" - } + "node_modules/browser-assert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", + "dev": true }, "node_modules/browserslist": { - "version": "4.24.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.1.tgz", - "integrity": "sha512-1p6HVUoq1POlayfJXpDBZ0YbvAbcRpMz/QgX0wzbCcPRMwvmiWDaRGgWqELv6ugiloCT3lSiWf9fJblXGB90Gw==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "funding": [ { "type": "opencollective", @@ -10858,9 +7434,9 @@ } }, "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -10879,27 +7455,14 @@ "license": "MIT", "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.2.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", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/busboy": { @@ -10947,7 +7510,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -10958,6 +7520,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" @@ -10983,9 +7546,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001669", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", - "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "version": "1.0.30001679", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001679.tgz", + "integrity": "sha512-j2YqID/YwpLnKzCmBOS4tlZdWprXm3ZmQLBH9ZBXFOhoxLA46fwyBvx6toCBWBmnuwUY/qB3kEU6gFx8qgCroA==", "funding": [ { "type": "opencollective", @@ -11007,6 +7570,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" } @@ -11022,9 +7586,9 @@ } }, "node_modules/chai": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", "dev": true, "license": "MIT", "dependencies": { @@ -11039,17 +7603,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": { @@ -11159,6 +7723,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.0" @@ -11180,17 +7745,6 @@ "node": ">=8" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/cjs-module-lexer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", @@ -11208,6 +7762,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" }, @@ -11220,6 +7775,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" } @@ -11389,7 +7945,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -11401,25 +7956,27 @@ } }, "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==", + "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.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "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==", + "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==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -11427,28 +7984,6 @@ "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==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/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", - "optional": true - }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", @@ -11489,6 +8024,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } @@ -11524,17 +8060,11 @@ "node": ">= 12" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "license": "ISC" - }, "node_modules/commondir": { "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" }, "node_modules/concat-map": { @@ -11560,27 +8090,6 @@ "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/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -11599,38 +8108,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.23.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz", - "integrity": "sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, "license": "MIT" }, @@ -11638,7 +8115,6 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.1", @@ -11680,53 +8156,6 @@ "typescript": ">=4" } }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -11749,27 +8178,42 @@ "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==", + "node_modules/create-jest/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": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/create-jest/node_modules/chalk": { + "node_modules/critters": { + "version": "0.0.23", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.23.tgz", + "integrity": "sha512-/MCsQbuzTPA/ZTOjjyr2Na5o3lRpr8vd0MZE8tMP0OBNg/VrLxWHteVKalQ8KR+fBmUadbJLdoyEz9sT+q84qg==", + "license": "Apache-2.0", + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "postcss-media-query-parser": "^0.2.3" + } + }, + "node_modules/critters/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", @@ -11782,47 +8226,82 @@ "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", + "node_modules/critters/node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "~1.1.4" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "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, + "node_modules/critters/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/critters/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, "engines": { - "node": ">=8" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "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", + "node_modules/critters/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "license": "BSD-2-Clause", "dependencies": { - "has-flag": "^4.0.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/critters/node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "node_modules/cross-env": { @@ -11844,9 +8323,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -11857,29 +8336,6 @@ "node": ">= 8" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, "node_modules/css-functions-list": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", @@ -11895,6 +8351,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", @@ -11930,6 +8387,7 @@ "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", @@ -11942,13 +8400,13 @@ } }, "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "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": { - "mdn-data": "2.0.30", + "mdn-data": "2.12.1", "source-map-js": "^1.0.1" }, "engines": { @@ -11959,7 +8417,7 @@ "version": "6.1.0", "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" }, @@ -12040,6 +8498,84 @@ "@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/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/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", + "engines": { + "node": ">=0.8.0" + } + }, + "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", + "engines": { + "node": ">=4" + } + }, + "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": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -12223,6 +8759,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" } @@ -12263,17 +8800,6 @@ "node": ">=6" } }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -12298,7 +8824,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, "license": "Apache-2.0", "optional": true, "engines": { @@ -12360,25 +8885,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "license": "MIT" - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -12423,6 +8929,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" } @@ -12432,6 +8939,7 @@ "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", @@ -12446,34 +8954,22 @@ "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/domain-browser": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", - "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", - "dev": true, - "license": "Artistic-2.0", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "4.0.0", @@ -12494,6 +8990,7 @@ "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" }, @@ -12509,6 +9006,7 @@ "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", @@ -12523,22 +9021,12 @@ "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" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -12546,34 +9034,11 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.41", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz", - "integrity": "sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==", + "version": "1.5.55", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz", + "integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==", "license": "ISC" }, - "node_modules/elliptic": { - "version": "6.5.7", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", - "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "license": "MIT" - }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", @@ -12593,21 +9058,12 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/endent": { "version": "2.1.0", "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", @@ -12618,6 +9074,7 @@ "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "devOptional": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -12643,7 +9100,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12672,22 +9128,11 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, "node_modules/es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", @@ -12773,9 +9218,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", - "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz", + "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -12787,6 +9232,7 @@ "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "globalthis": "^1.0.4", + "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", "has-symbols": "^1.0.3", @@ -12802,6 +9248,7 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "devOptional": true, "license": "MIT" }, "node_modules/es-object-atoms": { @@ -12892,24 +9339,13 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/esast-util-from-js/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -12917,30 +9353,30 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "node_modules/esbuild-register": { @@ -12948,6 +9384,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" }, @@ -12965,12 +9402,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": { @@ -13067,71 +9508,31 @@ } }, "node_modules/eslint-config-next": { - "version": "15.0.0-rc.1", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.0.0-rc.1.tgz", - "integrity": "sha512-RhOlMP/dWBYBBzYjh6ya4OYSxUhkzsoQmbkLvifZgBflD/XCQ+WUd/D1qdSTI9BBkUEeDZ7GOaN5UaIACkQeRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@next/eslint-plugin-next": "15.0.0-rc.1", - "@rushstack/eslint-patch": "^1.10.3", - "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.35.0", - "eslint-plugin-react-hooks": "^5.0.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@next/eslint-plugin-next": { - "version": "15.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.0-rc.1.tgz", - "integrity": "sha512-Nz/tMHzuGPYR0uK57+mxLhVFDTKtCK8HeVnPmDp/L1nrgcgICFZUCYHnKDUM9IUQ1XalzYhrLOlizOadpOosIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "3.3.1" - } - }, - "node_modules/eslint-config-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==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.0.3.tgz", + "integrity": "sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg==", "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-config-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" + "@next/eslint-plugin-next": "15.0.3", + "@rushstack/eslint-patch": "^1.10.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.0.0" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/eslint-import-resolver-node": { @@ -13192,6 +9593,36 @@ } } }, + "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": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.1.5.tgz", @@ -13225,19 +9656,6 @@ "eslint": ">=8.0.0" } }, - "node_modules/eslint-mdx/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.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", @@ -13356,16 +9774,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/eslint-plugin-import-x/node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -13395,6 +9803,17 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -13418,6 +9837,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", @@ -13452,9 +9884,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.1.tgz", - "integrity": "sha512-zHByM9WTUMnfsDTafGXRiqxp6lFtNoSOWBY6FonVRn3A+BUwN1L/tdBXT40BcBJi0cZjOGTXZ0eD/rTG9fEJ0g==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -13466,7 +9898,6 @@ "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.1.0", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", @@ -13492,6 +9923,30 @@ "node": ">= 0.4" } }, + "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": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-mdx": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz", @@ -13724,9 +10179,9 @@ "license": "ISC" }, "node_modules/eslint-plugin-react": { - "version": "7.37.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", - "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", + "version": "7.37.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", + "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", "dev": true, "license": "MIT", "dependencies": { @@ -13735,7 +10190,7 @@ "array.prototype.flatmap": "^1.3.2", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", + "es-iterator-helpers": "^1.1.0", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", @@ -13769,6 +10224,30 @@ "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/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-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": "*" + } + }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -13798,13 +10277,13 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.10.0--canary.156.ce8985b.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.10.0--canary.156.ce8985b.0.tgz", - "integrity": "sha512-8nFmjhVr4nVKshjsyXVatrLNJt0A6UhIXZqXN8HcRUAlxa03ehHywMif3D2HRRo5Po3Ztmxz+//PeCG4VqOGXg==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.10.1.tgz", + "integrity": "sha512-YpxkdqyiKpMIrRquuvBaCinsqmZJ86JvXRX/gtRa4Qctpk0ipFt2cWqEjkB1HHWWG0DVRXlUBKHjRogC2Ig1fg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf": "^0.0.1", + "@storybook/csf": "^0.1.11", "@typescript-eslint/utils": "^8.8.1", "ts-dedent": "^2.2.0" }, @@ -13815,20 +10294,10 @@ "eslint": ">=6" } }, - "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", - "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" - } - }, "node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -13843,9 +10312,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "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": { @@ -13860,6 +10329,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -13881,20 +10351,15 @@ "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/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": { @@ -13914,49 +10379,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -13964,29 +10386,29 @@ "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": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.12.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -13995,19 +10417,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -14038,6 +10447,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -14050,6 +10460,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -14187,22 +10598,12 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8.x" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -14227,6 +10628,13 @@ "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", @@ -14303,12 +10711,13 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "devOptional": true, "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==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -14337,12 +10746,14 @@ "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", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "devOptional": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -14402,6 +10813,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", @@ -14430,6 +10855,16 @@ "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", @@ -14469,21 +10904,12 @@ "node": ">=8" } }, - "node_modules/filter-obj": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", - "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/find-cache-dir": { "version": "3.3.2", "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", @@ -14518,6 +10944,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -14551,6 +10978,7 @@ "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", @@ -14593,23 +11021,12 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "8.0.0", "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", @@ -14633,44 +11050,15 @@ "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, - "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, - "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/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": { @@ -14678,6 +11066,7 @@ "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" @@ -14689,29 +11078,12 @@ "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, - "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 - }, "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", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -14728,6 +11100,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", @@ -14737,49 +11110,17 @@ "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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 - }, - "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, - "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/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/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": { - "has-flag": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { @@ -14787,6 +11128,7 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 6" } @@ -14866,12 +11208,14 @@ "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", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -14930,6 +11274,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -15084,8 +11429,33 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "devOptional": true, "license": "BSD-2-Clause" }, + "node_modules/glob/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/glob/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/global-directory": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", @@ -15159,6 +11529,7 @@ "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" @@ -15226,6 +11597,7 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true, "license": "ISC" }, "node_modules/graphemer": { @@ -15315,12 +11687,12 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { @@ -15378,31 +11750,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -15488,6 +11835,7 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -15564,30 +11912,11 @@ "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" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -15663,6 +11992,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", @@ -15696,6 +12026,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -15706,6 +12037,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", @@ -15745,6 +12077,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -15757,6 +12090,7 @@ "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" } @@ -15776,17 +12110,11 @@ "node": ">= 6" } }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true, - "license": "MIT" - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, "license": "MIT", "dependencies": { "agent-base": "6", @@ -15848,6 +12176,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" }, @@ -15886,27 +12215,10 @@ "node": ">= 4" } }, - "node_modules/image-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", - "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=16.x" - } - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -15923,7 +12235,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -15933,6 +12244,8 @@ "version": "1.11.2", "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", + "license": "Apache-2.0", + "peer": true, "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -15940,25 +12253,6 @@ "module-details-from-path": "^1.0.3" } }, - "node_modules/import-in-the-middle/node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/import-in-the-middle/node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -16067,26 +12361,10 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "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" + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12.0.0" } }, "node_modules/inquirer/node_modules/chalk": { @@ -16106,49 +12384,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -16165,15 +12400,15 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.1.tgz", - "integrity": "sha512-xQuJW2WcyzNJZWUu5xTVPOmNSA1Sowuu/NKFdUid5Fxx/Yl6/s4DefTU/y7zy+irZLDmFGmTLtnM8FqpN05wlA==", + "version": "10.7.6", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.6.tgz", + "integrity": "sha512-IsMU/hqyy3FJwNJ0hxDfY2heJ7MteSuFvcnCebxRp67di4Fhx1gKKE+qS0bBwUF8yXkX9SsPUhLeX/B6h5SKUA==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.0", - "@formatjs/fast-memoize": "2.2.1", - "@formatjs/icu-messageformat-parser": "2.8.0", - "tslib": "^2.7.0" + "@formatjs/ecma402-abstract": "2.2.3", + "@formatjs/fast-memoize": "2.2.3", + "@formatjs/icu-messageformat-parser": "2.9.3", + "tslib": "2" } }, "node_modules/invariant": { @@ -16247,7 +12482,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -16417,6 +12651,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" }, @@ -16548,23 +12783,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -16642,15 +12860,6 @@ "dev": true, "license": "MIT" }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -16836,6 +13045,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" }, @@ -16898,16 +13108,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", @@ -16924,19 +13124,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", @@ -16994,22 +13181,18 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, + "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": ">=14" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jest": { @@ -17086,22 +13269,6 @@ "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", @@ -17119,26 +13286,6 @@ "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", @@ -17154,16 +13301,6 @@ } } }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -17199,19 +13336,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", @@ -17246,22 +13370,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", @@ -17279,49 +13387,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", @@ -17368,67 +13433,21 @@ } } }, - "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==", - "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-config/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-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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==", + "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-config/node_modules/pretty-format": { @@ -17466,19 +13485,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", @@ -17495,22 +13501,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", @@ -17528,36 +13518,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", @@ -17593,19 +13553,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", @@ -17636,22 +13583,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", @@ -17669,36 +13600,6 @@ "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" - } - }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -17734,19 +13635,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", @@ -17920,22 +13808,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", @@ -17953,36 +13825,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", @@ -18018,19 +13860,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", @@ -18052,22 +13881,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", @@ -18085,36 +13898,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", @@ -18150,19 +13933,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", @@ -18237,24 +14007,8 @@ "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.7.0" }, - "engines": { - "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" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve/node_modules/chalk": { @@ -18274,49 +14028,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", @@ -18350,22 +14061,6 @@ "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", @@ -18383,49 +14078,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runtime": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", @@ -18460,22 +14112,6 @@ "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==", - "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-runtime/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -18493,49 +14129,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "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_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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -18568,22 +14161,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", @@ -18601,36 +14178,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", @@ -18666,19 +14213,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", @@ -18693,84 +14227,38 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" }, - "engines": { - "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", - "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-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" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "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/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-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==", + "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", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/jest-validate": { @@ -18791,22 +14279,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", @@ -18837,36 +14309,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", @@ -18902,19 +14344,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", @@ -18935,22 +14364,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", @@ -18968,49 +14381,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", @@ -19027,16 +14397,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", @@ -19072,7 +14432,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -19086,6 +14445,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" } @@ -19136,23 +14496,11 @@ } } }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -19192,6 +14540,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -19485,18 +14834,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "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", @@ -19624,25 +14961,17 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.11.5" } }, - "node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -19660,13 +14989,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -19729,22 +15051,6 @@ "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", @@ -19762,49 +15068,6 @@ "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" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -19920,26 +15183,14 @@ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "license": "MIT", "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/log-update/node_modules/slice-ansi": { @@ -20051,6 +15302,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" } @@ -20059,6 +15311,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -20097,6 +15350,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" }, @@ -20112,6 +15366,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" } @@ -20146,9 +15401,9 @@ } }, "node_modules/markdown-table": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", - "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", "license": "MIT", "funding": { "type": "github", @@ -20166,18 +15421,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "node_modules/mdast-comment-marker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-3.0.0.tgz", @@ -20243,9 +15486,9 @@ } }, "node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -20539,9 +15782,9 @@ } }, "node_modules/mdast-util-to-markdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", - "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -20549,6 +15792,7 @@ "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" @@ -20600,9 +15844,9 @@ "license": "MIT" }, "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "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" }, @@ -20611,6 +15855,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" }, @@ -20973,18 +16218,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-mdxjs/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/micromark-factory-destination": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", @@ -21424,27 +16657,18 @@ "node": ">=8.6" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, + "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", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "engines": { + "node": ">=8.6" }, - "bin": { - "miller-rabin": "bin/miller-rabin" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "license": "MIT" - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -21498,31 +16722,19 @@ "node": ">=4" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true, - "license": "MIT" - }, "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": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -21560,7 +16772,9 @@ "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", + "license": "MIT", + "peer": true }, "node_modules/mri": { "version": "1.2.0", @@ -21622,9 +16836,9 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -21634,44 +16848,46 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "devOptional": true, "license": "MIT" }, "node_modules/next": { - "version": "14.2.15", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.15.tgz", - "integrity": "sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/next/-/next-15.0.3.tgz", + "integrity": "sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==", "license": "MIT", "dependencies": { - "@next/env": "14.2.15", - "@swc/helpers": "0.5.5", + "@next/env": "15.0.3", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.13", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", "postcss": "8.4.31", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.6" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=18.17.0" + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.15", - "@next/swc-darwin-x64": "14.2.15", - "@next/swc-linux-arm64-gnu": "14.2.15", - "@next/swc-linux-arm64-musl": "14.2.15", - "@next/swc-linux-x64-gnu": "14.2.15", - "@next/swc-linux-x64-musl": "14.2.15", - "@next/swc-win32-arm64-msvc": "14.2.15", - "@next/swc-win32-ia32-msvc": "14.2.15", - "@next/swc-win32-x64-msvc": "14.2.15" + "@next/swc-darwin-arm64": "15.0.3", + "@next/swc-darwin-x64": "15.0.3", + "@next/swc-linux-arm64-gnu": "15.0.3", + "@next/swc-linux-arm64-musl": "15.0.3", + "@next/swc-linux-x64-gnu": "15.0.3", + "@next/swc-linux-x64-musl": "15.0.3", + "@next/swc-win32-arm64-msvc": "15.0.3", + "@next/swc-win32-x64-msvc": "15.0.3", + "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-66855b96-20241106", + "react-dom": "^18.2.0 || 19.0.0-rc-66855b96-20241106", "sass": "^1.3.0" }, "peerDependenciesMeta": { @@ -21681,15 +16897,18 @@ "@playwright/test": { "optional": true }, + "babel-plugin-react-compiler": { + "optional": true + }, "sass": { "optional": true } } }, "node_modules/next-intl": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.21.1.tgz", - "integrity": "sha512-hQm4Wgq5i1lfOHAWmXBVl5d2/XAeddcjsrUmjotXEESzPSvW5j2t0Pr8AV8WorTILgqU748aXuenBhz5P78tdw==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.25.1.tgz", + "integrity": "sha512-Z2dJWn5f/b1sb8EmuJcuDhbQTIp4RG1KBFAILgRt/y27W0ifU7Ll/os3liphUY4InyRH89uShTAk7ItAlpr0uA==", "funding": [ { "type": "individual", @@ -21699,12 +16918,12 @@ "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", - "negotiator": "^0.6.3", - "use-intl": "^3.21.1" + "negotiator": "^1.0.0", + "use-intl": "^3.25.1" }, "peerDependencies": { - "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" } }, "node_modules/next-themes": { @@ -21745,34 +16964,12 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/next/node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "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" - }, - "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", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -21782,7 +16979,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", @@ -21852,46 +17050,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-polyfill-webpack-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz", - "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^4.22.0", - "events": "^3.3.0", - "filter-obj": "^2.0.2", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.1.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^4.0.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "type-fest": "^2.14.0", - "url": "^0.11.0", - "util": "^0.12.4", - "vm-browserify": "^1.1.2" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "webpack": ">=5" - } - }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -22019,7 +17177,7 @@ "version": "2.1.1", "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" }, @@ -22065,23 +17223,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -22182,7 +17323,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", @@ -22214,6 +17356,7 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "license": "MIT", "dependencies": { "regex": "^4.3.2" }, @@ -22226,6 +17369,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", @@ -22239,9 +17383,9 @@ } }, "node_modules/openai": { - "version": "4.68.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.68.1.tgz", - "integrity": "sha512-C9XmYRHgra1U1G4GGFNqRHQEjxhoOWbQYR85IibfJ0jpHUhOm4/lARiKaC/h3zThvikwH9Dx/XOKWPNVygIS3g==", + "version": "4.71.1", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.71.1.tgz", + "integrity": "sha512-C6JNMaQ1eijM0lrjiRUL3MgThVP5RdwNAghpbJFdW0t11LzmyqON8Eh8MuUuEZ+CeD6bgYl2Fkn2BoptVxv9Ug==", "license": "Apache-2.0", "dependencies": { "@types/node": "^18.11.18", @@ -22265,9 +17409,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.57", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.57.tgz", - "integrity": "sha512-I2ioBd/IPrYDMv9UNR5NlPElOZ68QB7yY5V2EsLtSrTO0LM0PnCEFF9biLWHf5k+sIy4ohueCV9t4gk1AEdlVA==", + "version": "18.19.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.64.tgz", + "integrity": "sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -22321,22 +17465,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", @@ -22354,56 +17482,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true, - "license": "MIT" - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -22418,6 +17496,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -22433,6 +17512,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -22460,18 +17540,12 @@ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "license": "(MIT AND Zlib)" - }, "node_modules/param-case": { "version": "3.0.4", "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" @@ -22481,7 +17555,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -22490,24 +17563,6 @@ "node": ">=6" } }, - "node_modules/parse-asn1": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", - "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", - "dev": true, - "license": "ISC", - "dependencies": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "hash-base": "~3.0", - "pbkdf2": "^3.1.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/parse-entities": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", @@ -22538,7 +17593,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -22564,9 +17618,9 @@ } }, "node_modules/parse5": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.0.tgz", - "integrity": "sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22581,6 +17635,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" @@ -22597,6 +17652,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -22628,26 +17684,29 @@ "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" + "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", @@ -22656,62 +17715,17 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/pg-protocol": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", - "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 14.16" } }, "node_modules/picocolors": { @@ -22721,12 +17735,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" @@ -22841,19 +17855,6 @@ "node": ">=4" } }, - "node_modules/pnp-webpack-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", - "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ts-pnp": "^1.1.6" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/polished": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", @@ -22919,6 +17920,30 @@ "postcss": "^8.4.21" } }, + "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", @@ -23010,7 +18035,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", - "dev": true, "license": "MIT", "dependencies": { "cosmiconfig": "^9.0.0", @@ -23038,6 +18062,12 @@ } } }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "license": "MIT" + }, "node_modules/postcss-mixins": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-11.0.3.tgz", @@ -23071,6 +18101,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" }, @@ -23079,13 +18110,14 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "version": "4.1.0", + "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": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -23095,13 +18127,28 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "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" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "version": "3.2.1", + "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": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -23110,11 +18157,26 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "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" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-values": { "version": "4.0.0", "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" }, @@ -23229,41 +18291,6 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "license": "MIT" }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -23374,6 +18401,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" @@ -23434,21 +18462,6 @@ "node": ">= 0.6.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -23506,44 +18519,21 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true, - "license": "MIT" - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.10.0.tgz", + "integrity": "sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==", "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + "punycode": "^2.3.1" } }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "license": "MIT" - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -23582,15 +18572,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -23598,16 +18579,6 @@ "dev": true, "license": "MIT" }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.3" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -23643,22 +18614,12 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "devOptional": true, "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -23686,6 +18647,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", @@ -23707,6 +18669,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" } @@ -23716,6 +18679,7 @@ "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" }, @@ -23740,17 +18704,8 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, "node_modules/react-remove-scroll": { "version": "2.6.0", @@ -23856,20 +18811,18 @@ } }, "node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "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": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 6" } }, "node_modules/readdirp": { @@ -23884,6 +18837,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", @@ -23895,6 +18860,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", @@ -23911,6 +18877,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" } @@ -24028,26 +18995,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", @@ -24055,26 +19002,10 @@ "dev": true, "license": "MIT" }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regex": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/regex/-/regex-4.4.0.tgz", - "integrity": "sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==" - }, - "node_modules/regex-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", - "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", - "dev": true, + "integrity": "sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==", "license": "MIT" }, "node_modules/regexp.prototype.flags": { @@ -24096,44 +19027,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz", - "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, "node_modules/rehype-autolink-headings": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz", @@ -24189,6 +19082,7 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -25348,6 +20242,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", @@ -25380,6 +20275,8 @@ "version": "7.4.0", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "license": "MIT", + "peer": true, "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", @@ -25440,73 +20337,24 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/resolve-url-loader/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve-url-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, "engines": { - "node": ">=8.9.0" + "node": ">=8" } }, - "node_modules/resolve-url-loader/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/resolve.exports": { @@ -25533,6 +20381,13 @@ "node": ">=8" } }, + "node_modules/restore-cursor/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/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -25565,6 +20420,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" }, @@ -25575,33 +20431,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rollup": { - "version": "3.29.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", - "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -25681,6 +20510,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "devOptional": true, "funding": [ { "type": "github", @@ -25722,44 +20552,6 @@ "dev": true, "license": "MIT" }, - "node_modules/sass-loader": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", - "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -25789,25 +20581,58 @@ } }, "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, + "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.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.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", @@ -25837,17 +20662,12 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, - "node_modules/server-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", - "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", - "license": "MIT" - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -25882,32 +20702,10 @@ "node": ">= 0.4" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "license": "MIT" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, "node_modules/sharp": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", - "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "optional": true, @@ -25969,6 +20767,7 @@ "version": "1.22.2", "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.2.tgz", "integrity": "sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==", + "license": "MIT", "dependencies": { "@shikijs/core": "1.22.2", "@shikijs/engine-javascript": "1.22.2", @@ -25981,7 +20780,9 @@ "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "license": "BSD-2-Clause", + "peer": true }, "node_modules/side-channel": { "version": "1.0.6", @@ -26003,17 +20804,21 @@ } }, "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" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -26024,7 +20829,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true, "license": "MIT", "optional": true }, @@ -26194,41 +20998,14 @@ "node": ">=8" } }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true, - "license": "MIT" - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, "node_modules/storybook": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.1.tgz", - "integrity": "sha512-0tfFIFghjho9FtnFoiJMoxhcs2iIdvEF81GTSVnTsDVJrYA84nB+FxN3UY1fT0BcQ8BFlbf+OhSjZL7ufqqWKA==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.4.tgz", + "integrity": "sha512-xBOq3q/MuUUg3zM0imMMaK5ziKq3TO388jsnaiemJ4Uf0ZGwcHjM8HDBCDt0s5/CfsOQ49zo1ouZ3aNlu0qsUg==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/core": "8.4.1" + "@storybook/core": "8.4.4" }, "bin": { "getstorybook": "bin/index.cjs", @@ -26248,91 +21025,6 @@ } } }, - "node_modules/storybook/node_modules/@storybook/core": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.1.tgz", - "integrity": "sha512-q3Q4OFBj7MHHbIFYk/Beejlqv5j7CC3+VWhGcr0TK3SGvdCIZ7EliYuc5JIOgDlEPsnTIk+lkgWI4LAA9mLzSw==", - "dev": true, - "dependencies": { - "@storybook/csf": "^0.1.11", - "better-opn": "^3.0.2", - "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", - "esbuild-register": "^3.5.0", - "jsdoc-type-pratt-parser": "^4.0.0", - "process": "^0.11.10", - "recast": "^0.23.5", - "semver": "^7.6.2", - "util": "^0.12.5", - "ws": "^8.2.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/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/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/stream-http/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/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -26611,6 +21303,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" }, @@ -26639,6 +21332,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" }, @@ -26663,7 +21357,6 @@ "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==", - "dev": true, "license": "MIT", "dependencies": { "client-only": "0.0.1" @@ -26684,9 +21377,9 @@ } }, "node_modules/stylelint": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", - "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", + "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", "dev": true, "funding": [ { @@ -26708,17 +21401,17 @@ "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.2", - "css-tree": "^2.3.1", - "debug": "^4.3.6", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.0", + "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^5.3.2", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.34.0", @@ -26727,14 +21420,13 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.41", + "postcss": "^8.4.47", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-safe-parser": "^7.0.0", + "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", "table": "^6.8.2", @@ -26823,22 +21515,9 @@ }, "engines": { "node": ">=18.12.0" - }, - "peerDependencies": { - "stylelint": "^16.2.1" - } - }, - "node_modules/stylelint/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" + }, + "peerDependencies": { + "stylelint": "^16.2.1" } }, "node_modules/stylelint/node_modules/balanced-match": { @@ -26848,6 +21527,23 @@ "dev": true, "license": "MIT" }, + "node_modules/stylelint/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/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", @@ -26875,6 +21571,19 @@ "node": ">=18" } }, + "node_modules/stylelint/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/stylelint/node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -26903,6 +21612,16 @@ "node": ">=6" } }, + "node_modules/stylelint/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/stylelint/node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", @@ -26910,35 +21629,6 @@ "dev": true, "license": "ISC" }, - "node_modules/stylelint/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/stylelint/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/stylelint/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -26988,15 +21678,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", @@ -27041,6 +21722,12 @@ "@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/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -27056,6 +21743,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sugarss": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", @@ -27073,15 +21776,15 @@ } }, "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==", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-hyperlinks": { @@ -27101,29 +21804,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", @@ -27136,12 +21816,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sval": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/sval/-/sval-0.5.2.tgz", + "integrity": "sha512-cMN4SWqQ8K2DypYVZ1DVsicvXsr4gQmAYR2faKwHttJFJAqjfc4+taG9esMIP0hMP5+4Caun99n6y+4T6nCPEA==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.3" + } + }, "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "node_modules/swc-loader": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/counter": "^0.1.3" + }, + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -27183,42 +21886,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", @@ -27314,6 +21981,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -27323,6 +21991,7 @@ "version": "5.36.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -27341,6 +22010,7 @@ "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", @@ -27371,44 +22041,11 @@ } } }, - "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==", - "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/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==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "devOptional": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -27419,34 +22056,11 @@ "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==", - "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==", - "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", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -27458,28 +22072,18 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "devOptional": true, "license": "MIT" }, "node_modules/terser/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -27489,6 +22093,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -27502,12 +22107,36 @@ "dev": true, "license": "ISC", "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "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/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/text-table": { @@ -27545,64 +22174,26 @@ "dev": true, "license": "MIT" }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tiny-invariant": { "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.9", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.9.tgz", - "integrity": "sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", "license": "MIT", "dependencies": { - "fdir": "^6.4.0", + "fdir": "^6.4.2", "picomatch": "^4.0.2" }, "engines": { "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", @@ -27643,15 +22234,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -27724,9 +22306,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", "dev": true, "license": "MIT", "engines": { @@ -27752,21 +22334,6 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "license": "Apache-2.0" }, - "node_modules/ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -27782,97 +22349,6 @@ "node": ">=6" } }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tsconfig-paths-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==", - "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/tsconfig-paths-webpack-plugin/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/tsconfig-paths-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/tsconfig-paths-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/tsconfig-paths-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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/tsconfig-paths-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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -27884,39 +22360,32 @@ } }, "node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true, - "license": "MIT" - }, "node_modules/turbo": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.3.tgz", - "integrity": "sha512-lY0yj2GH2a2a3NExZ3rGe+rHUVeFE2aXuRAue57n+08E7Z7N7YCmynju0kPC1grAQzERmoLpKrmzmWd+PNiADw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.0.tgz", + "integrity": "sha512-/uOq5o2jwRPyaUDnwBpOR5k9mQq4c3wziBgWNWttiYQPmbhDtrKYPRBxTvA2WpgQwRIbt8UM612RMN8n/TvmHA==", "license": "MIT", "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "2.1.3", - "turbo-darwin-arm64": "2.1.3", - "turbo-linux-64": "2.1.3", - "turbo-linux-arm64": "2.1.3", - "turbo-windows-64": "2.1.3", - "turbo-windows-arm64": "2.1.3" + "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" } }, "node_modules/turbo-darwin-64": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.1.3.tgz", - "integrity": "sha512-ouJOm0g0YyoBuhmikEujVCBGo3Zr0lbSOWFIsQtWUTItC88F2w2byhjtsYGPXQwMlTbXwmoBU2lOCfWNkeEwHQ==", + "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" ], @@ -27927,9 +22396,9 @@ ] }, "node_modules/turbo-darwin-arm64": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.1.3.tgz", - "integrity": "sha512-j2FOJsK4LAOtHQlb3Oom0yWB/Vi0nF1ljInr311mVzHoFAJRZtfW2fRvdZRb/lBUwjSp8be58qWHzANIcrA0OA==", + "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" ], @@ -27940,9 +22409,9 @@ ] }, "node_modules/turbo-linux-64": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.1.3.tgz", - "integrity": "sha512-ubRHkI1gSel7H7wsmxKK8C9UlLWqg/2dkCC88LFupaK6TKgvBKqDqA0Z1M9C/escK0Jsle2k0H8bybV9OYIl4Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.0.tgz", + "integrity": "sha512-jZqW6vc2sPJT3M/3ZmV1Cg4ecQVPqsbHncG/RnogHpBu783KCSXIndgxvUQNm9qfgBYbZDBnP1md63O4UTElhw==", "cpu": [ "x64" ], @@ -27953,9 +22422,9 @@ ] }, "node_modules/turbo-linux-arm64": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.1.3.tgz", - "integrity": "sha512-LffUL+e5wv7BtD6DgnM2kKOlDkMo2eRjhbAjVnrCD3wi2ug0tl6NDzajnHHjtaMyOnIf4AvzSKdLWsBxafGBQA==", + "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" ], @@ -27966,9 +22435,9 @@ ] }, "node_modules/turbo-windows-64": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.1.3.tgz", - "integrity": "sha512-S9SvcZZoaq5jKr6kA6eF7/xgQhVn8Vh7PVy5lono9zybvhyL4eY++y2PaLToIgL8G9IcbLmgOC73ExNjFBg9XQ==", + "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" ], @@ -27979,9 +22448,9 @@ ] }, "node_modules/turbo-windows-arm64": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.1.3.tgz", - "integrity": "sha512-twlEo8lRrGbrR6T/ZklUIquW3IlFCEtywklgVA81aIrSBm56+GEVpSrHhIlsx1hiYeSNrs+GpDwZGe+V7fvEVQ==", + "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" ], @@ -28116,6 +22585,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "devOptional": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -28338,16 +22808,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/typescript-eslint/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/typescript-eslint/node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -28361,6 +22821,36 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/typescript-eslint/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/typescript-eslint/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/typescript-eslint/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -28392,83 +22882,27 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "license": "MIT" + }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", @@ -28489,22 +22923,22 @@ } }, "node_modules/unified-engine": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.2.1.tgz", - "integrity": "sha512-xBAdZ8UY2X4R9Hm6X6kMne4Nz0PlpOc1oE6DPeqJnewr5Imkb8uT5Eyvy1h7xNekPL3PSWh3ZJyNrMW6jnNQBg==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.2.2.tgz", + "integrity": "sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==", "dev": true, "license": "MIT", "dependencies": { "@types/concat-stream": "^2.0.0", "@types/debug": "^4.0.0", "@types/is-empty": "^1.0.0", - "@types/node": "^20.0.0", + "@types/node": "^22.0.0", "@types/unist": "^3.0.0", "concat-stream": "^2.0.0", "debug": "^4.0.0", "extend": "^3.0.0", "glob": "^10.0.0", - "ignore": "^5.0.0", + "ignore": "^6.0.0", "is-empty": "^1.0.0", "is-plain-obj": "^4.0.0", "load-plugin": "^6.0.0", @@ -28522,14 +22956,14 @@ "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==", + "node_modules/unified-engine/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==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "undici-types": "~6.19.8" } }, "node_modules/unified-engine/node_modules/glob": { @@ -28553,6 +22987,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/unified-engine/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/unified-engine/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -28602,6 +23046,13 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "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" + }, "node_modules/unified-engine/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -28638,6 +23089,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", @@ -28806,33 +23274,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unplugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", - "integrity": "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==", - "dependencies": { - "acorn": "^8.8.1", - "chokidar": "^3.5.3", - "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.5.0" - } - }, - "node_modules/unplugin/node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/unplugin/node_modules/webpack-virtual-modules": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", - "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==" - }, "node_modules/update-browserslist-db": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", @@ -28867,6 +23308,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -28926,16 +23368,16 @@ } }, "node_modules/use-intl": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.22.0.tgz", - "integrity": "sha512-SoiPcyLJODhenrbDkcYJuOImgrBFN7Z8keLSHe7ffsNkIJtjdjet/RmqAv5Ym9TVxPpCs+fH2cl1J3YzFJSkWw==", + "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==", "license": "MIT", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "intl-messageformat": "^10.5.14" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" } }, "node_modules/use-sidecar": { @@ -28991,19 +23433,8 @@ "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 - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } + "dev": true, + "license": "MIT" }, "node_modules/uvu": { "version": "0.5.6", @@ -29245,13 +23676,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true, - "license": "MIT" - }, "node_modules/vue": { "version": "3.5.12", "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", @@ -29307,6 +23731,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "devOptional": true, "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", @@ -29346,18 +23771,19 @@ } }, "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.5", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", @@ -29396,6 +23822,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", @@ -29419,6 +23846,26 @@ } } }, + "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", @@ -29435,6 +23882,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=10.13.0" @@ -29444,58 +23892,14 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "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==", - "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==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -29509,35 +23913,12 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "devOptional": true, "license": "BSD-2-Clause", "engines": { "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==", - "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==", - "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", @@ -29739,75 +24120,6 @@ "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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.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==", - "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/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", @@ -29829,6 +24141,13 @@ "node": "^12.13.0 || ^14.15.0 || >=16.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", @@ -29887,15 +24206,6 @@ "dev": true, "license": "MIT" }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -29910,6 +24220,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, "license": "ISC" }, "node_modules/yaml": { @@ -29957,6 +24268,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" diff --git a/package.json b/package.json index 8b4c4e3b320a3..5cc0e95e54907 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "engines": { "node": "v20" }, - "packageManager": "npm@10.7.0", "workspaces": [ "apps/*", "packages/*" @@ -38,7 +37,7 @@ "dependencies": { "husky": "9.1.6", "lint-staged": "15.2.10", - "turbo": "2.1.3" + "turbo": "2.3.0" }, "devDependencies": { "@eslint/js": "~9.14.0", diff --git a/packages/i18n/lib/index.mjs b/packages/i18n/lib/index.mjs index 5fefbb9bb5f4d..a1baf03f5db71 100644 --- a/packages/i18n/lib/index.mjs +++ b/packages/i18n/lib/index.mjs @@ -1,6 +1,6 @@ 'use strict'; -import localeConfig from '@node-core/website-i18n/config.json' assert { type: 'json' }; +import localeConfig from '@node-core/website-i18n/config.json' with { type: 'json' }; /** * Imports a locale when exists from the locales directory diff --git a/turbo.json b/turbo.json index bc649c8502b46..80bcb76f5f7ff 100644 --- a/turbo.json +++ b/turbo.json @@ -1,5 +1,6 @@ { "$schema": "https://turbo.build/schema.json", + "dangerouslyDisablePackageManagerCheck": true, "tasks": { "scripts:release-post": { "cache": false From 7cef2d5705e8e68bc308836a08a80a6d565cd108 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Sat, 16 Nov 2024 02:05:35 +0100 Subject: [PATCH 0129/1385] Update remaining logo (#7227) * Update logo-hexagon-card.png * update favicon * fix: logo-hexagon-card.png size --- .../favicons/android-chrome-192x192.png | Bin 4235 -> 22582 bytes .../favicons/android-chrome-512x512.png | Bin 10805 -> 133760 bytes .../public/static/images/favicons/favicon.png | Bin 1345 -> 1370 bytes .../static/images/logo-hexagon-card.png | Bin 5697 -> 23386 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/site/public/static/images/favicons/android-chrome-192x192.png b/apps/site/public/static/images/favicons/android-chrome-192x192.png index da7d4a1fe4217f71048c70dd306d3cead97a9f82..1c2b940c80e63c03c26182b5330ec88f4a4e26b5 100644 GIT binary patch literal 22582 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 literal 4235 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 Mq_~osN$k}B1I?|Q0RR91 diff --git a/apps/site/public/static/images/favicons/android-chrome-512x512.png b/apps/site/public/static/images/favicons/android-chrome-512x512.png index 949c628c16046e74ae605109fb93fa3f15c426b7..281ba62303114ebb06fd943ec48cd5e5dcf4ad91 100644 GIT binary patch literal 133760 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%0AJ8FzJif^J$O_ zTS91K(atmToM_b8bu>m+Ud;4)9$vDK#Gm9nCr=u{bldsc=f(QkGMx5bYO`k1B`1Ba z0OJR?NyMK*KhQz#nh1H^{=A~f>US;I_8C-W)LU>WYQY$9UGe0fd~=}~TDi@{=#2Vt zFN0fmcNq=Sh7TgwysH2eZ1{+<taSCH@Za=!X#ij}T`#A(7b@M1*;AQD&iHbz=N?g< z)o_v2H(}RW4&|$*T^iRgmP+fnGjO-_M%mRG{9q5UZz1^@4>$5qnx(ByBB9QDeXfR< zg06SLeEQSZYBzlT<oNmDzkpM)DoE}<ISOj;goHIKH&g`PBh~u=cw<qoq#Yuvs)?Fi zZZk=1=hp5*P_at)xb#?M5zRF4HFgI5&9#)upbAGRYexd0W~n!8Zn9Sz1W{`ab>dDw z623W69~2M@Uk={Sn9^g@Rn?Ii+D}pblKGaIZkI4{s-NYg=V}hlV@<<JwoGlb=bfqh zjJHAdneucd?7&H{kL_Rrx_;LT1=ZsIZh=!&BwbX}q=Ehpr_N<v3g?WS+rNg?_x`E( zVf)vkf|#&jH^L3GqEP|3^y5+ImI@_J)jLxndm8o|YxC6EYwU9J)`p=-ap8{Z$XMa% z9SuOtoz2iL<WysmvP&M34+nBc;8M8IzTg(dloOB~71V?fg=w!oUY-HC{*u$Hv5c8{ z={FvOd3QJ=KLUVz&a`a50j70D)W86C@Vu0p&*&$33HMfj5Ajp1j+M?bniDR!-oR+< znbQ}a&UYu2AuRQH$A5RvF1!2ur!xAV{_=U<jsu0Mr=$otKr+=5mj13wYydyfb6MBy zDcD^lD^Q^8t{}<*%5*?kK%Gq2qqtv>6G-P5*Rv)vvi|2I#Tx*<x96Bnyk>?rWMa%j zwyS+zgAoAiTUYcjMz}HZrnA1{Cj*hFlf2Gln`USPd0SH&AZU=mp&gGQJFM*MsiPbi z*ztPFEX$*Hn#=Lf+klHI<$F85*TjpTlMXaFb;hEz%$7|G$;{;#gCB1@%850#=qEyQ z#zcM`Jh26Cd^`8aw=v_aDND7o7u_e%emt(<BNN~@l-}}=ddrQ_u2P%>m6DC+2JVU( z4iD$y4mFC^0!2mn=s;`zUO3ZMRx0xFVK?+1g&?!geLdL_FFszL0k}RX!Lke>9`@ro z2oYUnDkYSoUIwItX=w<N5m=_#)Yd`gZ|&@@RrVf>5NJ(fmCOMr9?FMti0Gx{Uc6gH zlUBP+(FR@JD50cv(;k!{Zy)~ru$toQ@c@p$|L~=p9|r4-B~7c=h4_~sz`(5Qz--ji zQEJKlfNm3<L7gqcIkqDLWl{-jyn_SBrV8lNgD0C^H)d$-VTsC`dkI($^*A}iaLf)S z<xN>prOiZ1%hK5-KPLQIBau<3=#b2bhhz3ZgXIEjGgO}U&AS_#PL@TYX$1jHINMuq znN&V!|I*6b$!2JfDqu0zF4Z{gr&an_^r&oj=)*{}YvRH;8FlBOI!fc+eVy0Z$(j_W zGp6OLS9TtE*2!{MMan9m$ewdx!1ka1kTYR?tSmq(QZ$_7Qs?8gJd3Bp&P)KktEDE| z?xxmMcHrHM{B3LbApwD>mdJy4@|5XlxaVU3n7ZMW#p_g$nZ%n*sLk=~kMH0v03^19 zHGV}`fpRyRP}7)X1a<pbAZd7~=Y7QtYedSgSvq3&(K%lA$^P;>m6MQMhPd8%R)v-_ zr~PEMAp6#_ux&WDh{sB*kyW9MFBI1DffvQu!|{K<H4pLm_kaI<Jtc6?qRHmlH>9?Q z-WvA_AShw+x8(S<9Q81iV=&;;F)&cmg}hcVkb-0mZqB@W*3mrJq`Qa~`>Xo{cn4UQ z1272Kha#>rap5+G*uC9Sl{<@sWYSA3MzWn!!;nROxu<?g?5R}^HvEr|LPI9fZdIZx zo0NmL>37%ir{K-0O!DbZ$mV_oX0sep2)}0zrBqUOHASDL+H41?U@PU@uXvl|KspFi zuyYu8<$?mb&}!gN)2a_?J*lvb9ow>xHb<jJ*cx(~n;Nr@Z_rrPDjU)Ig$mB2zM*h# zO=$9*C4~-ftE}ZidIP`jJtK_4%>{@ED@9a1T_?tCW}g>FmVkOUYGMt&%elqvJ*;9& zsYa1(I(^f#!TEN_i|+#9?`$v;il=gB#KsnAy~D$MY2a%paO=vK^Swna(}p5k(7{Tj z;<$EQNF1$O@#2n;>s)VOvErY7X#^rpN}qis<#IMO#M)C|^8)E*DqsKn`sd=DgP6w> zz>k0Z3>zl?T-(~Hefk-``gB%rDCdj;qV72D1JJHA2eVZIq^<p&6&ZMg)CT0mzp7j| zyw2Z>muxg?_sA$tFoULP&4O*--yps8!3Rh!DG$XnTstuD;iQ~^w$|!X#y-ZM1l~%T zP{`?AHVr=Cx=11rdfgWQGXC0eCuz01o9M^-dD6Xd8+GPp9T4-Zv}UP7nCZIcVgK+d z9_rlfCOscKmA_&q*}7w+-PRU>JAJJtgVxux57{KyTnA6&$Ltxro0jx$v+aS8p??l- zhkj+)B6c_3OiXC%*1feSU|E6KxfQ;~4(MwVR2k#+3-uPh9OWhGd*UsUa_Fy>nT5?S zi*eB2t?IF9_X^onLRMJ?t0X{LaAqbri1#t%uR31-ARyy>E&*Ssp8{%bj3RB66ObSK z1nzdv0tRx7NKaMm8i7ZA*8QsWD;OojO#5zjE=8dfs8bdpZ6X>B%&6cMk@9MFY+jP( z$YIs#uO}We|NE{#2`rB+z++QjotLzoRaYR;(e3hWeb=Ycf<TQ8AwoxEtE0wFAtBEc zfZ4x*jvjW{;IfQJjF9_fAaw$Wk2%yyYMUt;W+Z?n2<cTj2B)*>_wMDO4A20I#K8P? z@`w7AWe+pDwNYsVU!x2)M~$8j4f1I0{ZN_Ilx5MhSdWqqt8qyuDcL5ne@Bb_oMNWs zhxmNV%z4&a5^<C>%?d2Da=MrTdG_0?TJqM*0*4Wpx(Fu?H#t`lBOS;+Cenw)!E4d% zxH-epnUg3(GVZ3;Sp0+&Sr%*>0dNLzV6$H5V;n`abGCTTUrwWZ7=+V<(9lj4=;@m~ zAx6GCWg)SVg^J+PF7K_S+wjLx2%w3Al3#08u@+0vsK*n=a|u>IWSCxfymk+OnW&Yx zO>1m)#54ZM+Ix0vyrc6PeBNA9=|xWeBa~AYJdp#lX6G?@iwh^j=<+nXScY(~CqX?j z5n3`vyq`=6`iwqO@Zq#^5QR^Rk4GyX|5W`e_Myi4*Z=mh>&Mi-4B6W}AG4+gA69U3 z*p1rjiUh{ZWg2;<1yTKj&Qz$n%+j#YHK-7<H6630a*&6a9$OsOcWI$yBYpvp8C(TI zcA`)6voR{nv!~;rUT8-#JDPVH$obPS%r@wh`Y(2rBs1GeuQH~y+OWgcis7JB=Qg&+ zxJ&s~baX7FIyu|ov2Gc4VA8tkc<SNHVRhDLbd^O`?I!)!zjTNua?}|=$${`FgZ#8; z^;Z00lPi?d9l=4WZDw}TM0%cVHU7zmgjF<I5IwS?D-NoI4pvA4WkZzu&l(lrB`&VE zeFh333sAXahILI<_Q^my-;zx1Jup%NFR8Hv5qKHifadQB`^ryAHbm}ihA~<64G>;) zy!I{tXQ0E{HMy)fPv?vBV%K~lGehd7C4FyvI@TJjOZmOe(x$<jyEm;IXj0I2O|EGA zC>DE6uQb)QSs@8i${%qD141b(&{qVUsnGS^*-EYe!9M@_n*Fok-m$NLUk?ZR*INT2 z{UvV;P5Yh>AK01pn7}$hhXCS)(-VMaN^=OHO3lL>ReIEI0#=u1K(p#&w-3b!_=ycb zWNZSq78sHQc4Ovg!H`fn8=h%3#AsixzlQ*$#bpN>pd56THH?6Uu4Q?4WKF(7eQT%g z@B+moCjAc5)V_E#VwYvz6k5bC<J#)rrB4tCo&8}Bx{orh4$@5D99y~$&Q3$<Ljxd( zjO{%$evnC`^!}v&oUuq+0zoN{3*!vuTP556(=XbvX3fOd6DZLBE&biZUdkquimTkM z(8nwF-;udX5D|Xd&G;FuZ1b7$M|_XQu5A9=XVcpTL*FwFurM0q2f?A<?J_0ky;<BT zPwnaCP4$}d5?_;mx0wIkBj`W^s-LC&Esxi~3n16GA4deKbtV7i<f9TNmgOFUW3&L1 zK|`h5laAMu^wv5OXp-UZZZF%e4SyMQ8061IGuG*sLDlBJe7vQk-Gld>p%{DMXfv*H z`l8UV4C(Fb<qz=?76PyW&jG4``^%>&OJGq~9UEeT2f~S_OP~<pkWeZoU1fuJW3XwS z8y_8QL?Ep8jc2*9*$KQ&VX;Wj42ETpfYX6N^Ku(&rv;7)rfL0AzLn_=zRi)9Ol}J| zNa48+a#rYd=9!k|S><uP*Y{J|#!Y6>#0O<9n9#G0iy%X4_s%B0Q)5ChzT#Y2m(pPl zfr<s$iTu`|w6M0cbof@*&}`V5WRUBbW;)?)(w?(1W~NNjfNe@}`sJy-tOr(RTJ+dP zMfaOyob2Bl8Ven>e%ZfqW480^y%exMofEFE8bESfMrl^=eL3>Mc#c;9Zs4$^HfDuD z1WbdTNTfCtF0QUGH|zWXO2T0uH_Ye##~@Iaxa*m)jG8*wc~8@~KfZ^T0Zl3FSYDRV zvte*-o0~wQLV?Lu*PR`x>@sESGRY!bh>#&eAhk0nF9O9O%2L3X<5qhLBL7hPRpFQp zBeNAWn@K$^;`Zs!!R`*C^ZVoY^`CeA@;|?TVaI~qO4k!w8-Wu$*Zfz8?*y0D{H$z9 z58`_}ktwc+^U&r=P+-&I7l~CRi5}>4IHLNIPPhlW)XE8J*{S7*KAutL9S9vTW$UD# z7_2LPcN^}5Np#!bb!JWvQy?Y1v`y;l1nzzs69;**K1<@5&{#5=4PlaTl0y@mHW2aj zewb;-u*Exq1J^NUe8+TBOu;chVFo?aLi{$e89luEt9sZ2UrvfEVXjo?@<Mc`=$!*z zm&b5RP;s!GS}yUE{X0NeyqaXx1UBr|nlF}F+ds2tK)p*3=?c5wXhuDk3YLu0yb7xq zBzm0}wdI+0Jw-4C?~%Gg1%iD&+6!@0=yP3<52O3XqDzS7TVLOW0hN2cw%Gk>f8YN2 z9_|A0?a6pPN?fJ9_21bQuU(dRl$Er_1)`V9(9%G*%-?Oq>9}Qn@A_v2p+zH2%TdTB zT!guHnyUk7)3hx+jN%AH=<(<C*LD9-J^Qym7(xE~|Ib-~Zjn>e-RMxvi8HQFCak_F zucS%ZSoR+<JOTF6%uIQ5#vlv~EjtQSh{<h#!gMM|ZEa#73?;%yK*PnFfPn*wfP!$E z;o_4W(llyJWZ8&UGrUwsbex(FcrXoCZl^0f9?ehk%cXb|s7$<RtV8RY2OGkaVPFSQ zDOprtmDh#?Ob0YUf%Re0ySL#PT6Q`16>WwM4{JycIfN?)p!`frat0>W*X_`Occ`QA zc%mb}!Whwq)GtZ-ThB~qpy5o{0rQ=gMob%hY58uwc#lr<+A7>CKz*<~k41<giO1Vs zBQUVSTbggR(_YlACTK~{&`YPW3qK#YR(ET;Kv`xG`nMS6b=_m(h|0)k^v`l^Q`bnk zo^6$!UVMB982|@dG|)ysu+H5`lICpdRsdqtG6OB^d&k0&hgr3G|3I-p0mry_tE>Qp z=4l2-9nmpnj4)U2OT{vZw%6@1%+lES_eZ11FQ3*@fKBy2ST{Q`y~4nj|5C}@)s)B+ z<XHynNoL#D1CvfF+biJ9*{}1=F^1P1dS}PhxuQqa1TY2qQ^DBajrt8&8KpCl^6ArM z>e7xpNZH`9fS+2z!4Wz0de8;#Pj$DEy2hiI8N!tqgB$T<8piQB$=-n+clVv2n1C4w zVn-mmgY2%0nI&VsODf*Z(y8NR_~?w*(%DttpYS03Uut-3+0`Bh9~_TB^=j6)WgLFU zn6Y)4^3cJmy<`76HtdvLF58IJyaux~StIb<?7z>8CHjQlZYSG{y#O80#B%9!ij+Et z8Tqw(K*Qra$?m{lb?R&VyHRAnS(mks2KP^4s^8idy5WKQ=(;QQAZ8#f6<&cU(_IH= zi2A0-YXg95@J$gp9e#~prm40eb8%!}uiv~w$E;f>YNWcxz*=_=IBy0-1ruYGB8^WO ziL`KQg=qq9(b$&=S`KB}fErt;{{K`@{F~s!DZ10~DF1jm;QdR+LU&M{qMc*@#nCn} zbVW@?H?Y{4nFbd=0L@hxK0aq3`KkmnMe_+2XRgWl*vZ)-yGAWH;A#vLiZ`-3gK-%Z zS$6R`mPUSAQ^*>8G*=8HC83N(h1c=L!H@?>JArMSwl1~F`r%rpt=pN<5gCAF-iBW3 z5<`5qXPRB^E9%~$PB0xj(16UmWWB}Lw#NX#so|NXSK8&#s(&3N)o7A8JJH9Xcj!zB zwcFW;1FlpP*?!Ww)3s>Hn_eDw?`)by`x@k0!EpRS2bI7SCwsj`%49`LLaCbdm%fYW zwyamNRZiK0zq*AmHwA{8ccfvpoItcP6=NdDRX4N20scMM(a;ktK&d`ID*mO%%a;HO zc-C|7NZTU{^R=!evvkk#z6;vxOrA|;sb2t1V_g<oMeOePnF+|4z^QCxBVr^O%_;~8 z*oi38l7)0Sm27gxy0D3KW8R&3IR2RZuakzkv2F)ZfEDraaG;;#5y5MA-rZ6sNU3LI zFm30>PWXg5Yc{^<yH8F?utuQfN=tyo_;))P2}b<b%GS0e?ZgC<Ri(WR2j{$Mzd!3b zBe2u;bRK!@C6h=wOv+X704x==nvo+UP#i&k6=9bm6+oJ8m7Heu5(JvkWv%OtaJSGM zauDP|(}9`qW2Ir69xDdFGaGQVr%}t1DOqk?`+3I{);6Yw(Rb?rLX6p^f7$^u3Y-0M zDq&;-rd1MuD2wA2T;=#XnT1*b2g|HmHuPDLVH$k4@6h0bV4`{>(C)Z-y3NIOrOc-h zpfWXeG6L?X+Ux21Nch6+{*1Q?<o<$qYpkIra!w&fMgh!<#Zw5YK(*vK)ZFcHR4=@q z32-d;EsyWzK|u9ueWZR{1<=+z{}E2rti#R3$f{44<25bK0nb6EQ2U`gaqoW9M1!9k zG;H@y{VxUbO5NLvA{8zzX{X*-OWH0A1t0z-5B(`)KgiGk$Yv=z9uEil^zn}1w`Q(0 z^T6Nb)~m*e{terJx)eQ!^EiXE&FRBToL)J#34)%#HZ<PS)a>AhlzOYAW(2q-A5MwN zT6f98l_tx_hl7f8wT4@5dI7O-Om^R}1$R+@V2K@~GsmtQ7JTg_G!V3UB(4&*L0^85 z9V(_%W{Y)?`WE&NhSP}@?fkNuOZz#d1I4G(Rn_(6Jw47FlJvSuAiW2PUX>lkEQE16 zW3eq+RkD-&>lp>ju2lQF&b*IXXRtv0H($f=!f7m`q4InIfOM%bp##fod$k^zRu?iI zP`Z14hJ*JWI45v1asyY*wy6=5M7WWtv#{Bsqh5OiNOqms3z)8bVy0?j?wyevYyKn} z#)-h)lS+Nl<JIp1AnnqpFgXrWo>(hFniJh44?y97^^M%XI<qXNB1x-PKJKU;?LrSu zK*^*Tv~F*clSi=?Z&py!S{=lya`f$MgmG>Dd*_gp?K|ZjS%9D75y6Im4FoVU3kZkG z5;T@2S^)LkK{LSY+XTLXF$x-T#-gBG0SFo6JQD04H0~6<BnI{X5exJ=C0J>6)DjeA zjho6pGh@kb^7;7VW2RG1epN2|7w?HxMS*5<so})PJvPPda}0yxJg@&luBC=%5Xj>! zWk)uu2XrG@C+u*=T-yYpXX&5`yehA3>cnD$L_3gPqGD&+y*q`h+-N-*)Mg;+WFw%K zP3r?4<T!-GwhT0%u03+^?m7$FdzoOjl5U5)mkxRc)EQ`ZzxqEW))}g{_qKmyib#E~ zWt7xmqQOfnF$wGrIx*M&x?aQ+_P?mcvjmXKwhwywLODL@rEGO7s??H{@tmeCFL<&t z&a~o?S0*poL)F5<JIjXO@OW_mVEl}HsLEPdtoL*OWj<|k`yW)xibN<!4n*s6S6PXl zd>A#*dv`ql$rJp5352Ait5ijg%AW@+AE<c#kMfugW%=d5K0zV{!+HMMwg36k7yR<i zw;kw)E~bK}v0h@cJd+jLg`NO2Q<522?PJxT!MH6cY*4_lJ*m^d>HIuylzB)nYIizV zFjN%gzy^X4o(#&hP{O`Ez>E#Y<qG~;ruG@QKzoBd&8)anbG#XN9i5qJxwli#{>2=K zxHTEKBVc9VCGD~cYZpSyb$`<tSa7s?F4sEl%w3pClsXNv&wdYwTx7jyRbR!#DNr!r zIdr!|b<o6?GXJTpgbs9eUfjD#fP%)XY9nYk9Nzlwhn7PL;iNq-zlD^D-UZ9Z3alkx z0m409kk?vZ&fw93XF`C3Cs59kjO)nFdO&9Id)96l6wv6m(uWSjl5J!RI{Q+tKi<E= zB)o0YL@sLmD<BCE;1gqBalCjBz!Hd+g@!5j%XN^ERHdS=wJY7zz-%jvkJQn6EpU=+ z1zYc)PD?SqgSK%o)h=0KHxK#VRv5+~pRRiwLXk2RMNM`qp@OmT@7Zi*IvgWMv^%3d zRu<s>Bf+bJr^Qjtn)ZDL>X>ro!fTqksgO7x&dbMNo%y$(sB@%&nNG3-k-;i`Ps;RM z(B>gCdD$<yPB_5*@KnD9*;b;VuNza&9fOv!f}-wP>iW2|1gVRfI_?5bgEn|Q-vAOI z?Bk?+F;ef_J+aH^49aNq!6PM6Cv2wNyQ=CGMwjzPmg*U03a$eWHgpW$!&B|*G6Dl1 zdI0Ek?vrXi^`9E(@l~3lKj|z<-)kSmN^laSoR5@tlGU$^_RTaTo*Ak{F_uv+EgIAJ zO>Wso^P3D_3{?WCWCRcoSws4QXsRcMmJ>>f3i^dSf$i>M9|%Y@)FhGVcLL$^O-9qe z2;wdKU3Z4no;I2tb~+#?iFo<(+D8F{>}xp5NXdHvy0OeNP-xtSk(Vz8F~z{Rl`uDf z+$x9E1Lu(36f(frQb&HaWoZ7|dq=9H?lVAi$BtflDbu6uhd<+w91ZaPyJa4q*CT@e zdB@4^CY@7?YN@X}MZIbzx^|Yc6&GHD*ajj6{zzA~qhwz5qczd*m@U}hQjWL|t$tRj z*g=_qUDmP|Z0H%ab^lBoCvFv3x&M<kuj7~F8gfog<qo0KeVD~vXE46=x&@qucTr4& zNPsdjdj0w?53n)x`fKhLIm?{Ss-s|srK8Jh<SzZg2sBUupQiY_lIE89-!>xP8StV_ zRrBjmgC4(@N6MsSpfa2s0l;w*VcHjrelZ$m1zrZ@>;+5NDKIhVdza4tE(&)m1SjS# z)`SW{<D3_ub0(K(k)Azs#M`p+rSR4cm`C`EmfSn?=-!OG)NJGnsqgWo*mzB>Hy_So z&55Q1NA&;3$7^2(gtAVJ>af;vEIbND#HJ<@KO+J(w-XAkZ_66QX%{@^S`jeZjO%2K z6|_Hn?-tvP6`(<0?_(WQM4tt!9=rbU#YYjwv9aCJ?vD3fv>yNc?XRD902+=FL_5L6 zh)Z_SMaa@A^^B1}8`#@XHti(i8+wLu6=!f|_?UjLGA>{U^bdnVI0p&TT9xm$X>=c` zk4dvY#34@jWb+bAiN~gK-@Qo}KTY+9BjNKybj`JlS7$6vnI<1Snr2bI$eNNLk1reu zni!Oq^Jv+ebezY`ap)8neVhB}Lyo04tG3nk=Oj1&Z4_8C?dw|84&#=?UfCm~Js25? z7AA_fgc39PddFSu4w#ej-Tn=Sc2&=Z^{?~RauKqt)0_QYbniFLD$W@}qIajzv(GV) z>EJKx=2HS0n<@p51Hg!{X?4t(v?cYj&&&?gI8`@o)g#I5N@OP_`1Z%kmjDV+BiT;i zppNu9vLH%1(FuCs@Iaqxs!<~A@>>MWGTFbbdl;`-sXq<qt$wCYT*{G8v7&4*hS5Eq zF6fb!ipOetCZz7M&~c^xzs~--^BaIvhX#G%i3k)d9$A3@_~|oP>3btj8*Y8~ZpC(# zl;0lRO1tGu0H=YCy3|1)%1ij{?~3Me+Z+LnB!iSqK$c4A8P(vu>X@|Oz|pXm<FY$R z1WaL!+$?lD+F7aF!p85_k4pJIC8#|uzt_5B-d*mQ5P3$SB?=Cfq$_LE@xJDo(GVR@ zN<F(;V}&xdjUFG9SAGCJDVuM4qCLuXJ3{wnLQ0mFqjZm)wqz7sxM-Rs7LtJYZ$q!? z551cLHZVjg4dfmZgA?aTTI~Ni!R>MxquPgKLv7`;vKgW<l<7&Rh&QqZPYdbIdX3*O z&9V7k&cBc?+P41b3$N=5f!FT5l?@1cLd@dVI8}6fosG$8<FI=_A=V?Z>-WgmA=~TE zt@Ya-FMk`Lr2{Y5e_iPT7(sv$szi{`-(3`AOVVe+5Dv+Bc6Uc-0X(x2Ww0)7A*(lB zE+zHKBjp_mmJ}B6OJ{DeD=ne`tAHcEpHlxmfaAS2{s!;!wLE_M>lfVL^11LjJ7*fY z&g*Tchr<bkWEK<8zp6O{`Li5;AN=iYFz7Wu81<T$PHUf>W2HGkF06HN{j}ZTGKYIw z{J_WfM0cf}j7tG^_xpI~S#l0QfjbwgF`$}cKRw1aV&~x$p7znxxsaY$E9}^9h<0SI z93x$y#+d3<hAw=Fwve-G{%qrU-&w!+bN))l)MQxZ{97uLjKi0)PPt|^Is?<~vJGY{ zyi~y@JBp*4sb`~&{{EG}yKmXK5`JMI)9LY?^1%3+B~MwT?rSJ&-0GZ8xtuKO-hIT< zL&Q#{+`hMra=_bW@o3n}xi3u**RG+25q8uY3iC;>Mp@(-f|8qC^X8?_gje514&e1m z0HK5Q5C@~b08isek65eedwi8Nt)X{*R?t>pvW8{7;mOvkdpIuu&&<T+1`|`^@*oN; z^CIBMyi`Zp7Fq4q&yRny$MgQ5J8-3$zehWG=Ac&}*0oQc?)dwUUkcn3%rg>dBjseD zg>y*nWdZ_ODnYi^eZg-qER<@DA>P{=NGFr|*_+`YO`N_Nc3G0@7+T@@JM&k3CHh*P zalyTl%+2t8EKGr&8T3M28}(gU^I<libLpIFhL^RCoox4hH5oHP_Xc?1Ww;=d`awLT zT>7nw2Bx4X;$Ck)syqcZ@nvw))i~hjpgYbuwO2Fr<}GC;K}D$eyN69Kx{n;j)vP+4 zU5-Pq+jmgVvZZk{$_9}wSXnAD>Ka%PLNVJFlW-?HU@^vENR};?0{YunCSfN=@_>(Q zPx@XSiF@lFhCI6v*2CDs#vjW7PJq7xgtY!S8Cs`|X(Hl`>|?+0Ct|GvDyuAWYz_oX z7Wd%a(xb$02kYDSaJ>FyKq=1kyGE*GC_<vz7*gRN+~XGh9{)<iRWshUFQDC-%rpZd z*91}O&CHkE*&_JvO$Hww7(AA``ssy1#M_}hsz2HI_j{YI7|!zCGsnZx_~YR~_qV&+ zGXZ%zS5BphJ;f}W=h12TwWA!436K#$N8eOzUALQaKeR1C-}6u{X!5)8PMp_Ray*EQ zftF{n850a{N(Lb3Y0OG{W4Q3VYuub!gLK$P&KVGhgO%q8@G%{Fnwd_ga+qW-JLu6w zws@&}r5AbFla`+!8IV+8q;BD^_RTPyZ=dJ-tt(C8WG&pTZL}Qi*pHRbCBqhGz(=}s zozH;Tw0)(+f^QquM!obCK4>|qpz{fqwdVkIyAGjOSDh`qX|!FmK)5&i5{%Uy0X~s- zHO?nZ<(VjwCtOTXa37tijUdb^(oM@v4^*-7au6}=_hLM|HY}BqIMds~pHWcp;^XD- z0+_S&ytG`nts4R_d6jyJ1%*OdM6RuJ9<QWpN8{)<dUmMlQZn?;fWdv^S-{suZmzA3 zgWEcH!%cC9aM3>8<cWXmh>Pr#K%n;oFslllTsF@=9uD;PAKuDPPUgy>B-~9z1Skcj z<R(0=Ya2rJZvlZhBOt&)I0BkowAB+Z&ZY?e)54AUB#^Iq?%3R>H#tO^b^gAk-+izL z>cwjFtQw*R1(d38g9~viBKxY-Or&E^Fqau5807oE>Q6dcqy9+{QfS)rD4N?K(D>_` zsx3JVud`LNO`qEStbUjP$3b4h-cR<=<KmlcGM~Qn&<<^G)uSsmid6tMjunihqz3{R zaGIDJ8)rq}x&#O#&zI%YN<<!@vMLug1YKGLu~ElebrT(1*jBnQI6MVnxwag&pXE&W zyi)&>Wl0(}iFDpv?xIGnK}mD!xYzA~v0tFG*H(K34rBSPkJmp6m}cRQX)u|Aw_2`R z>o$N+JN)n-fY4}5P($wus0b{6(dNHwhsmf@D6iqEXn6xjSkh9uduvVZ_Ft(A>L0iD z_O**2{|g|!cVciD4IneU_x1$LY=947dfXB4`D0`O%%p8@t7mlS<ecb-06jShTCohk z>Co<b14~G?ulYGW-Q7?*$XZ=qH;kY~FP9YTcp2OLmB&ALDx5F{=#?@xafHtf@|#dG zDG+joqj)odWcC<@*?gMMKRY;><QcBY*Lu?A6bR**Z*C#LRK}0JeJ%rtCX|{8J@N^< zp$+1j_A!eh5g7K!XnUfErh2e~AxOVw;F<KX$&1JD$r#9Zbst+_3x6bq-LfM-<4Z4p zWdHMhbfg)DU}S4>Qb)rPpMh~E{hm>OT33=*_AAGiGbGpRf;9*wMop4Ij~_9q${bZ> zdD%Y<5{pO6=s-49JAraI_{tu58-p=;U8l|XE;I{SM#cb&04%ZB9xr|lKtxdSO5S7Y zj*ExxBpy5--S3@4w<<;e@i;8gJn3239%^96XGeDHcElT&+4P>Cr9c+zP2HyPPGFRC zQ0HBWmCFy0UH|uU$4|5V2ZQ&haL2i#&f?xzx*z}h=PdY?Mi)@v&XQ<D37~AFR%e<+ z<@I^$Ap?$$CNOGf8kEA6;TM{1a@U>|P!26Ytbq>&IT;)j68X+Avj1L?ovKg_IpNuw zb)eLf#hd^%pC5V3`lNx7V6;&L`I9<C+nUwz=A)b%qq)@w>$sO$_P;!CBgjnWb+Z2+ z(OrKsD78U<o?v6=y(uaJ0)B3soLQ%BRnOW!z516yxskRWvkOD<TW6=!Xnjnca`WyC z@KXg?np1w8UE6@qB4p}2=hqS7ig%7LVw;7Btpg&4(3wXT;C><8-HEQD`)Zr6I2&^H z+t+@9%G4%ECmUX33~pChUsJ~1q}?69cKctqsax9VQbNyH%ZJ>`Uo1u}#o0ji&aCYl z9k1O4Xc4%1B&Bj7OtjVOTLoR9&2%bA=aqmOka#>~>J8JT+5Z5}iYUv*;H|sG`+A%) zKjBY}!`XL$GYpn>-@cyw^e1dH$o2pvuRNtQ<kP_!gx@><`HwI7^<Qt@dF&2NfsQtf z5gm4B3!t?xP16M5HV0{Yy?zeBZZ~@$d6*{uP(b1@=9oL_i^EI_3SZ<X>$k;N@6N21 zA<B7=5j(q_NlC>hdm~A)d^yl^Z=GvW?LdZyZ21^B80|P&&6uH=t|W9~%9X~|i9`ip z>dakh@a`^|sj>YJx7zIhMYDI<vrTC~u=zyW9GoZ=IxtZEMya=>oiqyW@~cr6Eh#pi ztXDl0YcM$bR-bI1)F*pl{-VL^G?AP3>L1iDx^I4@-|o6B5rvMvbJ4v|dEXxU0W3kE zH&{E(%=5pnxl$hryb|SYOo$3qL&;cU!yA~D$uDA8!5eQCPwaQb$yMi;Pc5`IN(t^x z^PX>fynG43DN6EwAdmINIet%b4_ZUTtv2>8UGK5E1~7HG4TazV>p>Fb;NhC?D<BSi z&iKt52-li~L3B^Fypg)QP$+WUqVli*TJ7bL5ANXb)Bg_x#*@S3BL)2PU%%9uI^WaI znZXE?W(w+<5*TM7Q3Ro`CcncK#IuEtp1EfH@}0imSJG9Y>@SecO!#wh_>^H-_~_)I z$Whp64|oz(U~@VNQyD~5-S$A>K!NFq^T_e>Zo{Mwfgw8~u8@5NcZHpwiGKoE6RdqI zWlPyNZGE5%rSsNqA!qw#69!4EgB*5o7_#VOlaF?t6i|6_Q66A!(A&9={<=&9ARIZT zoU!R!%KJ{iP%SAqQ5*df5|g6$uerHa#-a42r^VfZ;dCqC)C;lBEjwePgI+ew2+&OT zdjd=!^2Sa%PBgB^5I`a;ufBV+&_?A<Q|;U{6JVC`P)_PjfHL>6rT0*D0C=2t<Nx-@ z>-PXaJT@z#QS?0Q%PC6`n?8`gR+#0CH95<Qn2weM;&u|oPOEgzRriplk!YJoI02|w zT72{_)9yj?bIttyc94s8TZi+1<S_eVWwVW6{ux;SLpkkqbn0x{NSMo-5dhHH-E&^p zw;6`Rzz7WLlF8L)fl;=*wQRct%CS^q<j8<Ze;0U9u=N>?n6$I){tg*40GkkQkd&-R zU5mgZ$I3}c^p*XZ4_WmXClE5<DS1i3VS@A$)$VyX!*Z=T$Au|+){}Lj<t{UQ%X4ZI zodL<;>|6@Mla-ovYe04xybc*VMmnWxtkzi@@j~xhO0~_<&ULCsk~OvS%J8uK+<#ZE z?T=i{pa$3i{ET)=|7=ut)~}Rzm*8nZ8#kn1lv)C)d<76!5a654<Zv=rsJcoP=MW%< z0);_6u4j~)Z>OLTa*a#DM2IMT(nTkpE#O&G5t21k{MyToSHBJzA+^h)+fb33`FLam zte|;}Vi7Bxuz*-lYTpBzEZ+1KX|6$GwGsneDge$>RH+#ZEVU)x{7M%w2W1XlYu>+d z^4p(>M4syeX9M#0sZ7!G_i3GI{M&!~7-DPCNkb}yW_x><|1)x4j<W#^9h~W)4Yg+U zB}bR4a}C*hgs61WX2+83n7zY`lXDNez|$bh-#_aE<mI_w8DvoZT-mY#!c5y|VKg9X zHX(G1vZ0HYrZ%$-qcSpIaVnByf7VIYHV%WtUFdPw>eG2ny*5IX3?B9%z(XIXrcwV) z`IlL5(b?f#f?zq@4o=H=U+0CH4NN9AEkA-OsEJ))P4&hGt)gF<zdfJ_B%%T_MCY?) zW>H(mIH)e^3_Gfp?sdYm&L-)Csc_b!Rtxe|hR6rBS<K*#N4uX6+pqHR1bSP|dwkDH z+_2l&H*oC-@MzCj8X+_D&ELJ^c=2-pD5_0)Siv?se8dPYyz2KnucAS1k#YJ?=X2n% zdhT5|BQZxknio{t<KF#T1{m)fu&KGe9w-zfIops|8$Ld+xBX4$=ue$Tmz%-BEc4zW zfIP~7{^Zxgfw-&~taZ));AIL_*`mQS=YjCG?#sq@Y{EbjEa^>xN@glbA;=p!c5Cb1 z)kO)Dbn@J=Juc>${7$xoFmb;C^m7&lpc=t1pXIzjmwNwD8F&Q)GP^VmnNYi#uNsH( z_wvMic2&QPhc=5djlnFvF_p3KfWr~ar}qsgUrA%zIEl_E^oB){xwk$R9R`x=s6vOj z?GAW3bK?j8N@nggf_~^jIJaRPAuH<t)c<N?LV_{3^v4++932g}?e2QsIrXLrva6m) zXM>!1s?3!uHndGXJoT-)Hpql5%3PUTPYLu>STp~Ztc02`Qa3OFWIinlW+q_mJE|ps zd{`V}VW4LIIhoAm;8y3NS^mxW{A-U_-v!{YQOr`Dg+pba9VX_$)=PBQNW-z(&3bvD z6}@KtfpCUx386qXVvV{8D?Mt?i@sq-qpe}4V;>REwX@_(Z9SR&+Y{YjCweOTzmxKR zFHrdDFOP=<oy&BpnScUb(qpGfmEh-TO^L>{FYY+9<`^!)v4;W&hf(~_KA=Fyv>6N^ z*Whc~XKr;%E2F!zrFe(<20Cs1Nr$zHciSaz>zRdaazmBdjseKk4$Wv&lQ-u{RC)Cv zt*DI09J}<9t7G6OJ|4s_JSRU+?TBndr<5-_+;=<i!4J!>7*L9vT3UbdEqM`FVY>yC zf}gXE&prg-Hl447XViIWYY*772|#62ny>srxMH?fcHop%R7*U41J3&g)DSv|XWG7A zibl3bV(K8ktx*>3^lSN&=bCY6fitLBZz*lfZVN_c3!R<~la4?8mw`#-kfT%H_H=oo zqdC6nc=4lvW4)w7#47sg$f->6VOo>|>->?ey8>#EdomM;v!--8Te#B>Its79*7JvE zc-`u8rGjeZ2-?{Cc`F05%0<Vmj#uhwIR8K5yn90$q-TF52#_*(zs%d)9Y6o@1t}=G z-gbsw=ZqmDfa0}xKepxr5Xp&F6HaBxDG=oNL}}u-DHwQ7cBW0UTq@mZ9U08dHrQvm zXIFTZW~b`b-Az@gc7t{UnQi@)tc&M34VFQ_$t$=1SUJIt!9vbdc2FwI%<o><hZ<rr zFIRoa_Hz^@_(<VU`EK2zak(8mw3;;qIzhYj7wTk`OmkHF=ha`$;6=#@GAelV99*6C zavStPC&}BD{Re$BwVCMC>6n4qZZIj&xzB>fYgQ}27;e&_g@Fnx8pcb$wZ%TOLEgAg z-N|ovev~+jah}fSk4BL24G|!OdJ>~IGJVYm6SR`9r>%3m9&^Za`D8n-G5{Gv?rcAg z)weueoB_ypkdP0R=jmS~w^r$MhJT&)9AwW_`?WBDmHr{%uE4>z%zd<f6>OvK_i?kU zrHBu4X8}S9P{yTL;&BV&qs%QI8ngnQ+s8lK^}1hTCIP+x<9)e}-xNLjle(tmx67vO z{{4r~@V6c0*n{}dG3-EW)CMtuKuDB>G-L7`K=&;B>=e|V+KJ>C7kDxYgHxWB+-gQ; z!}(_!Qo$j6o@E}~rjC<S9YcZTF|d;vIDu+`ck9vcYeXy0cN?YYF#xRl_H@RIc0%ct zW=A(?$}@f6=<*(cCBgx|qR398oP|;X*~7&H1Fp%8!=#>YP3F(;3rq_$XiA-M;e==J zCXG}T={uB@&aPm{BxIJ3dn%h9=;Ydaqomh3Qc17?T!lb<9?-;RIYUPt&MlWdbl})o zBf-MQ$KBqYC|Nr1+t5BMT{ppx)sU6q8qkxruP6DTtsQQ}J^-_%yF}l9=W4-%SUe~W z6jwa1-t|tgmmM$90Eo~nU_Vne5oK9Ld!ZVgzPF(AK<g{b&+l%Iuq;wC11h{~R{3)4 zGB^%-m_w8czGJfo63Y^i!hKmqs+7hx{Q76i*$jhhzeHs}c0l=K$0;yi8gn1QV+r8L zzkF&7;%O>p0jdu5NFpLY(v+~-q5UvW`7U%?e`J8z``GJA4OI%BoVDn_#c=xs@Bv;J zP)%vzu=Dt(aH?ei?InOiaKPo{f;XsdqIKWeeH`~O)=AB9D2$M@od-&s*397-gTfRJ zg{pCO)aeAcF1s7H=p1L(OLbs-*UI?^$((&^E2Jvg1j^C7>j>ulaSZ!9j5&8Cos-$E zZEY|y)j|98XoK{UeVwbmCgx<nS8<a2h$d{bTVEH-9lOSILj}Z(sZPOa8!RRcP_OIv z11?%m)vs)Fx`}3?p3o;*jlgLWMTHli%ef1lgUrV5PQ<ci`i0D~7^|m^!1G{f-~M>{ zZGex1-vsC&)N;DP$SiKD!-}dB&Tp|Vmou5X&f?S3iky@n7|0K=tb?!p2U~W*tRLoM z1(e=VAsrc%{PtfiMLxvMN%!e2o<U`nc}DM)?xspjx14s<`Nxl6@a2=ostL7uaI}wq zcW)=aYvQ?i>@+(K1{C^zzg8_dx5<G0BuL;i=_GA4@UgxSpGjXTK^>2E`cLG+eQ=_~ zASL01^Lo;1x%8^CR8|2^dVg60C=O^=C>#%YlI&I!PC-yOB<hap&^t>#zKbGzzpG&q zPhNCv15Gy#H*AvL^ySQwn!5U-;S#EycJ>P_g2&Po?v1Oi*QJ(e^^01~zPsPaSt`#R zuexNbieK-MI~}F3X2g%S(FFk((lJ5N>}-<=JJAKCOzJ~E+{$X{WG{P3^sU*6lkD6h z9BJa2*<>1BYiV4zT=jBDbFbMQCPMWn?@7tj{LR~xlAwpr0KnP7S0CR+0Kn0ZI;;?_ zk%cx!_S#NHYn8xsap1ss3m|$hu50&(mrC#CQ=Ga&WfvkHS1J@dU&|Sm+d?j#8`GV~ z6aPLuasCH@o!`aLJu&f9N_8mzR*r)X4h9~_zx{uo;)N_OGu))uG?K^oH9_7X?Xd_l z1(?0lSynp%mYP2RTtK70>34#nbN|h-rQ9cO3oUNM2+-7UowSG@JgDvLA5$t_H1R>r zw^8%qa5_WefNP4Ld6w}XGOV(PpzvsGS%+qbcM@KrTtP2489z2nx2mY;9ds)s_r@g1 zIgvwBbM7k_3b~Cjcb^WL9J|;@@KQ5obxN1sH=JOouQclIHEOKO{(KZJ2119)PB8;^ z@39qInWpIUZ)34_A?3h)Yivyj;Ce>oFUm}8C;&*1Yh=F|fz+M)y&Esh1k-#<c7E)y zRqMs$#FDnvaO9lnwOBRIEOW(nPO?~${qi4?GA@IA?eXf@0n4DUQY=5*@%9qnQ2RC8 zUhDE^mLl)<?6w9=!LN2pDWX(yP@e<5QYY(mkTtLt`xvl-!qtq)M#h@`|G74^Oh?Vn z^FKN4>G-psi#I#coOS29r{~Gp|N752{Pxecya<Me>2?|<!caK9x6RDgALpOqSfWXv zGg$^;1?yhl>&UI5F_UJgKW(ORx-q0=;sXHNUwZLm!jG1&ZcPw2{ZvWW2w;YD+J?|; zhA}hpC%r1(oSl$zAmhmOlHVC%H7o77xc-drfOu<hjzWWHZEW0qV)dm{&@OFeD;9lX z88(Zq45OX&sn0VQ2`571?$MX?VSrk)r*4ovk2<w4Dch(RAa&5<t$%;O{z>#+e_hI@ zRVBo=Z5$BB=T|#ivc?7NJ=h2`_B>~@h}!*6wW*IyXWd=}r`rG*4d0a7lJ+&bPpvQS z5=Ce}Q<CW6UWL5w3b34zZXsYS53C@=8|0ovwcqgg9$p3%Q5a;PLt$3Pl;wMHb9h*t zz5F^#omMMGsh1e;a4gorX0&*-Qjgm0nLZ^gwvI?_ua_2AyOklJM*v-s>&HKr5wpQZ zJ<M6fQ<>#=*V)GwEk8N_$o>H~!k_;7nSv??Y0&o&_vq7!p71iLHM*V4A{?&R7yX_P z8W>jTxclUzz`KamXS$)vicF81y-bHo|CIwyb%HlT*8dy>2fRYpbSKi6gQR3Uo!TIE z*Mo=7I+(OEQ|A6D2)hD*&9dlpiSb_YEnY}px!)K|57{>#?XB~mPNb~cvoV;@;Q4eI z_4Uxm^O}Jr;_N_e+1?TduUd;s1#zI3U`n@)6sNo<I*4Ohc4PwV>cgnw3`@+37aRTL zYkiL8Uf+r@F8M4Fn4Vgl|5fr{cw_yf)hO?W=u%>DWu$yU^W+ds_L$|Hn356R(ekPH zz9Em@U+Lhyd5JoI1c(2#j~8zO%-J+JxxC!0Rj9PgCB~*UbR0la&$kL1Z~a`SU2f$t zn%u1c3=~Y)5@jQmv!3)6Cdo?%(7B`&9NT~VKXuO88E`k~+En^yhh`2`p#gOcvL=r| zrhJcbkH-W5>mOeRJ#{S{(BzC5^Tj$;Hp`WGt!D{2tIqZvyYm189hFaq77f+@h4{Ji zLqp-KgA{}8QmQn0R(FO<l#GsTfjScZ7_E%j-{KVOaDW3n0bI?GA(0O!T{3nUkO_&2 zMKW{w)!MOG`fYFhqw)#h4t0`zt!B~Q{Y<+DoQI?jAKz;nciXaO>4VunbI4u`S2;Qr z1=*>l-G{T<g2o)d{ctqmh<i1XQ?_IQWQl!cLkU--S^DB$Da$;84h7^229`a^<mK04 z{~$afCJJ=DX_{@8Fq#?XzH}$AtZW2Gq1WMjYe=Yd?SSX10XMZS<oD2wV3j))dS9g0 zB`^EWwv4dKlS6+xDf*Vjcd-Xxp@%y^f1iSbbyx_rgp3BC)OqWhGlFiCZ)LFhyV5t6 zF7mYVXs6sk(n-s3xmD4!Y&kQI60c_o*oQyiTK}ix6xsft95Ty>f_ipc3e?x#ppVgZ z{Qlv;e<DnDsPmT!Wy~|3$L*}osNlmHfgM3YUYp=_PU#3Yqq3vxgHhjnSUQ>mu+wUA z0eMSXucY>OK;NgdKv)3y?`VO7s_n7^_c?-s4Zc&c;|e+F0{nuyDC;eQ2#S%8x}NOs zUZ&CWp7VI8lLYGzIV7OR*qLYQ#UR@Dj|@U^boLY*R$(m{DM*J%w=3v!0{2kU#?0J- zmx7%f*Hf+YG5JL}Jhgw{?8up4$H*2&n>GUtwLESXhk&<j6EX&(56)EE(L38edb9BF z;nH=ySvz;5{;ltZUOjZ`48L~1M4)_OAB=uNEz0H|P2GAaIn~5P>KWyPe=#)A-@)<n zcL7+V(k7HzKO8UQNjuHVSN!o*CUEqJq`kp#x8KcoP>d(xSx$72kNmB(ULzZ6sY{U` zssCU93;xKAdrt$}(=zW}o9D`j3<KmSJg;vKB*gQ0MDSxNpk>%D(@t$WwPWc7fCGc{ zQNl0BG7nwHRmU+%N+|<7e&vswWL0EY$n0zDCpXCI<n_HEkz-m@M^KK}_P`(m9K|e^ zd_z<R1YHU>Tik*zFi<Cr^;xrhg3ywPI7pGM9wIj4-#Iwob5zZ7m_>Jgo9&RzY~Gr$ z2_np#Wnf8JEUw_Q8Yr{jqm;KZ?$U;eGB#Rdn`RQQ%#23rk!%VD>8h!?XS~evmU5e| z#Xy+Jb+$gG34j1m$I*yZ+icoeh9WuMkp9}>illZA&6ZfP94@J_5L?L1`vk1CUZjlL z<VS%9nILU0G*gdbu~#g5XxfF5C41%Z@&^Ism&cL1Yl;D(vH-3BXK7DIZ26An2x2{> zKZ&{;WB@?k7&sihO~s-zWpcFHkK(<{{U@LH;m=D^H~;tqC~-2zy`Cmi?I}&3<xUz` z-NO=r&?K?^{f95OzpblDX||T3SY|~M&>V-5iX98uQS}!B#vFCY2lsexV2e)qoWj4H z(RaFzfHO|GfHjBhE$?)yCA&l1=*;iY`0eo5VB%!vvJJtv04qo)^;P<QqfCG)3-zP2 zI0vn&mb~TFj^W0Is{bv55lwJeo9@wSj7H<F4`_R2PgnZpsMvne;Ql&A6NcShGf2w7 zu7bK!7}vt@9Oc*t;vj;&>9D0wDSZkitSN46_#Avw6}7FOt$&~l53o;LXM64Z)fPR^ zxkCaD11&d25Rie5`POIVuZ}kn*2U%xH`7P%?rEBtrE7~=SFhi9apbKRmAI%5xy_Y@ z+oHOf%J?E{J9Nq8b;tMdARtvk%CcR8;t35~@pArcwW(v80bLH6;IW+((Spop)|;F% zg;axXE2UrXU*Kf<VhIBAN3q9~tA72j!R>}R+p(uYf4|QEPPzBmJheZK?eTD+$Fl)W zfl5a4*LlJYam-ul^#mdSdyHc+WZbGZZMMz?*ua+AZaZvHfG`&WO}?+dCc!G4G|w2N zPV!RCbRSDNIE-94B9^hEvSD<gXl)z6;<`~mjyo!hc66YVrolX7jB%UV)?U?{JyLc7 z;k5uYu95UY&K6thx0#?jyS*cnCdRh2ETv*sioludfcBwJmxB%r2Rkg*KkdHi2S8&! zd{;V#<X4^j$re;w)$zvg8s-Dd8|kWw!%xasx=yxTiq#p1W#`0=nMgMq<Bg{L-!P6N zFHa{$G_2R>t?%~o&H}*H9AP>!w}E*C<1N%X?i|0QP_BO~t56m+ZU<-5Ks-twC+q*# z$E$AxETwgN3t&0e5N1AvrxY&c_qkV~RMJBCtlrop%36=+t(}-`?9PhBi9_)X`INqd zU2&Q><SNj5M#0zAzn?Uqx^GVvdpaMvW@mcGy7t6y@Z8bowNqg6^ADf#<>MVQOvy28 zV4P6s*w*OLKqcmI2ombra6$>bwe}}q)%@*I1|;omU^zIGsb>3500#OFK(sZ-%m&oB zNu~v8NJJqO!O$2(Z-%0Hq0mt;w2$6R(D`LJ?JPJDBK<YeR~d&fJ|w$z)LF)6jr#C% z%vo;*2)^lJBweE~XDd*I9_a6<dOkiOKDA}c&!qR}+oAN)8JwOuvR-DHtyMHGtPx8( zbuECdWW3pG<+P&{vxTVV-Cnca87H*=tQJ<fv#r*NcK$6MN9|nBX+6k(lFb<C41_NX z8P)N2Yr)?8lJ*NNnl0szsvdsGooht(E3?p~Sc5YE%zbg!1&s`ESBCr4$rl{24FHxX zJOL+79;615`pon`R)BEb)Q>eIk7I$?MWU24h+fKP-fKDDrfn->?@p+9ITTttaCc)s z%QB(DrjH5^D1JQa|HGffc&8FSbF#DSR?pA$_;|MCpM#N_onWSypVNF~0e<?o&%j~1 zfZI*hp3RI3oD4NHkTkk&g{!q3Qyk=CHjG~VB{{GY@C}Ntz;rr%`y#E-89>+B=k<h# z?hCiCW39nVq0H0^YhJi-B^P5IauU0`Y?kXbJGQ}-5rP{^|1%(Zrm<_L?;?+EO=sBo zjs}-Z6UJEP87Ezl5+iGpK}GRQc9TG{$~p08RTf<`<kC1%m)yrVsFgP#z<cJ{dQ{Sp z>t+yJn(1ag1aD><WaMm$b(!%(+hR9zw*Rcj8Ie%WwttrQ?;OIzLw8~+fU_Hs$(O;g zj>5d27+ZU`0t!|7r6?JqR|9QW+&wSD3)(1+@bo{c-t7-{^*{A^aR$Kq@AWOPsdn0T zRFx@{ICDMqztVv9j%AOxKhZM6t)JZI)6d1)ecr7`QGK&y8qH=lV%43{bG5vf`Q^`9 zL%TeU6}Fvs>{0)FH1t~b;7I^seeM)wycZNC&Hwo6?Rr3vLK#YWWHai8nTbZ{&J6gd zYu#Uk2H$2FoC!#~-0SboJbBg`p~>fYmf2&^_?jusqGX4$BJ#TnpzG)vWY5w~06kp* zw>Oo1`%aK3@Gd@>JB4Lib<qZo(+S|vp$g+S8mf!zWJnt$HC&F$lYeTAoHGYD0Hy|D zPQg~+Lm$CeyBJ^ZFut7i;L>K^5U3e%ic{}~U{z>YYanM8lyGl0n<}&E{S1j|8lXhb zGAVeCQq?gfjAwYHODu{#+Q{O&0*n|k*_6sq^-iX9;^lf#P;>jg*!#Pt+mhrw49nc- z^y!|#$IK941CRoGDE$EX&R2|9m_LBH@P%#+OoSB<+LnP1i=t>N0y7sDLs!7u`A*<3 zz%WGFh%iAMhz^H+H`Xs`l9C8ufS$&D0E6yx-qc>ZDl?z_sI}L7&gp(ncki0%^X|P? zRc2OIR_2pgwbs7O0K;&(6CcxS&U#$kqI<4}c4DI-$D}D@Sx47n_}O{Vd7G0p+iHEb zZx32tkH-L6XJt5lw%72Az5m~bb--S^{Iaf%yakyIz!DDV&0~Qne|*wkBfNaY`Dben z3O!^)%RmyJP#By}KYAm)@vkUrQv#v|!{4=8(EyEJm!?9DniV(sD~mgR?_Zt>K+f1# zHp^*7k{hSQ0FN1r8`!sOq-=JzF7(;<XW{PDBEnW6w#hxFE*Fhl-6#_`#+MijSemO6 z)jDOoX5%m#kt-?afCw1N*`7Jfk2F#CaGXGm>-|9+?>P^X55VxupAm&<6g~qF?;&#R z1{@rOn{h(1MAq3Vab~uLEOMu$Uu7T?a6(5c$bk!2LCcit6gcLosQEYQgwFa5f4mJx zp04||X9f~b7l?8nDXaz5!6^5M;k-lARg}VMfoFq{HtrCbs|TLSKHCgk@>+RZqMmmu zAkUJfsnSbol}v=LU+Zqj=<4{ZCfd*iTI&2E`zG6V1U_cYBa3b3YNf}YWO;Z1Fe7&M z#MKz|sUiMLfY<_3l6ZDN+E8t%r0x0>g$XwAV+%<v+EO`en_^5LkBtMe{KP!AaFONm z#=l3Cy#H@iN``=WF-&Fxm-qJgAV01ifNB)e@pi+yy&UK-e|XnWj}B_Iq2d_v9?H-e zO95wxJ|@V-0)`BoNVEgpiE`yp{Q}2vDP6F&y)3F;fuU4-402F1ewX{g)IFt<&2YTt zwZrbibSP-pEpq{LC%}u%NY3$9<IRl>*f-WuigviT-jE&ead3>E?#+QUYf4prydej! zEP3oX^t<XojPwIN$;_DY)=ihOKtO{Wj0=ow&FJ)VpSLx-0>k0$hC<?{P*kdrfe8c~ zCRw+ql^(`8TL+pt33itx+6+#hps^>HUkg-IOw1Up0kCkxK<EcV7`uyfFSk!DU3}GI zmg(<LbI5f4s2+?ue8gUV+~vUmfCP9Ai(yQPDTEHAnDqfeG@Z7&pZRJ?o--dG_ajGk zq=zw8`DP_1MTEK*QEg4B#vf+(y+h_L`hR{hqlx7j;!`85pOHpRk%ln@MOsF?)B^<= zw{Z^)lE?E=4s}GD1<3T+(tBz!7Da?GLNF=B9ljeM3el6dbk8QC_wgQ)z!m|A0g^B_ zM3jJmecqZ)73ladMmYm*%x(%LvgI1s1v1i<bVj=mx+)4LC|TWE-(7+@=?rE#8)SDx z6~y{D`E)d!nXE>fVm~GJGe*y&p+~}G>%VSoU?X3scM@e~M(%MwgS~-Ffz2<-6nrL# z;rrJx{~Xt@wQE-;u6G~r@!l98BijPOi6?N(#B&YZg}%2I$CZKr;}8PE07ThM9<KlB zMJe@_4De)(<htN%m|-ositIc5+AYyv3rw@_U4{tV|IT33=3E-OB!p^7EKRo=Ti6+c zyQ!5{?Lz8K7PIq-mIns_jJYAZDE<`ZWnX{B9s{K@s;Z{SR5A6(7^cEp9uv%FLz`Zf z?n%@5FhP(!8)+SH<|O9gWJ?~&__e>f_uo0*d@tXxhBwylz(jP^bcjDL`tF{9EOveB z{+0#!{`=2y;{3iE?6gio1P%r&987A%J}?q$95EuE{7$(i#o$mhZbV>sl@^K!DNvvl z4tFsHaG}ls_ssLib26$ZOAy+-0Z!i?tL{%@>qN|Em?YA|sKlPfW(wNEou`;zeF!8u z8<?Xk758hSO|V?(OdXWE76?ER>ahYwCMr>}9{NGv76ee850IpF5bB(b4mcPG(ZkEY zX(!MlH^Jr)IquOj<@Jfc+SB6*8pzhJ>ly;949sF*RjFqU(a>tHfe@L;b;K=E2@coi z+*<hhgT(kXr{877PI9uhBvTwlRR8?2OVB=C|HMX%;$?gCKvWi-@9j(h=ww=$dTqad zpG0}s7Xh(F>vP9nw_(_A?PZ+&!IwFEF)eSpCz}SyXkd<V&h-EinlaFIBVK3dpK?`; zrY8iG4L5r80gwy958hIqRxcp*ZVZBv@HTOg#QONR2N21?HHy~JUCFpt{`}v4XfFps zV>kt%Wd6ZPvigbS3>Sqd{^FTAJ`Q7|fW=p?_AixUT=vIVrV+D<QjNVTR7(4zbs5xC z6xrPK{d*V*cEc^f(YrYd&LV*)1tYHD6z*F&%`wrTBedBlebo^z6W7#9^oHEYsf#2+ z-l}X(&8oZ@)R67K29u3&Z}44nIE({R)ewTUt01T=0&@j_;ypERjNnR|`tz^gCUo2* zcP&wXa~Hn59vd<1OL)Qn)`%|U98GDOlqs#h<VEut8Rvx=g<;{BHh_qNy%V7fP)8Qv zMAJj?nCGe3Y<W4hr@VkNPI8_zRSfk75U?=zOUw$|YMU<0<P=)y$wQQfehiTH*PBE{ zFp8L}Fq}MO7|kc^646uln#Qqtn|Rzj`gHWF7{dZx_KAcnOc0D}#Hq!zN8{YW$PUcx z0sr_h>!T<+lF!%Lp-64?`<>h!YL}xbG+^1<$LRD5P{@Wg8RYF1!QcDtNAq5iO+yB% zK*dv<)XIW&?Ye;D^(l*ni+#SwFVW5VxeuUdzV<oP$z$p+1gXm0>Y!Rul%Gde;D1mt z&YL88NgV|^N9am8Wai$&odWQ1#{qRg>*I`yZ8fM#RS^l_+@XOD13&054noLSg-9Ls z(a#&;?3kgJ-l3wyF{;zU+7?w5rqDsX>{f<4U+1aUiSqfCFbD7-IvAKP!UK5q0PX09 zI@^8?&9%|#rPbH9qVyznk5iNlYXpF}gc|+f<x^P;83=&%E1|o7r1_o~FXsV-^kAL} z%50j8yG+(2*S`rygw#(=-=cm4SZSugFR}MTmnZ-VSaMfV9G^gW=*Iwq?hIs3@RPrm zyJ9s`l2(of=wbfM#HrqyJ;3t;vo5=(W}7DCf4Rke=y0q#eN^#s&}7^5-}e5EeR7)2 z<r)^jg_wtkjxB~0Or;uz7%|c=|C~-+0heN6&;J{*2o^H?XDf<JyYU(BGZ6y6vA{qr zz%cn|_u86vHRB|1fHh6ZoD!(XSoqpRL+)b%4IO}(;YEWR1}Yil?B1My$PyV*Z&Bu8 z(jHkT9g1j$a%7|*?}oq*EXa-W_%d(8jEq0&d<w&G=&W3T<z48gz=G0tjOH`;%>Oc^ z&V_?>%`PVf4$%mxqqK2LqlBzIRjxzf!ZLYZQ3juTrYKj;;$<Bi^29Z9ef{frC@|th z+i3y9Qj$VB&3uT&bz21IPf({*MDI44?Q?i6GVoPh&`1h&T_oul*rfzg@_2<H<2e~% zoxZ^o+%w3r<ZK^Vf?1{-N{8Y($--pWWl2CoozbYwbPuHSF_nk^IpDd6J|;==lt=eo zH-0B^+dUWdpu=vy!l_O51s97Tp#Q?nD<fe#C7?C6wW{M6x_|Zfa`4YZL*wAax*Y>_ zlBoE!Zwwd~67oD!JS!4;XZqJ<(C^z~``({^MCyduM$F9qtV`kV6g(K2SVMxNlI|Y6 z0T$B;9rsX`0{P?z1Uakk%m#+B2c}R&+%O1^E|xpV{et}{y{==J=9SGL1s6jZuw^i# zU0#7Q>r9AT$5>(}$17VmjXr+D%$rb{wX`T_Ca6jAn+)?fcLk%k{sUp^Fox=<f<w>t zk=lX^*4;ED%GKf8wG@rJQ{zw@BW#}SbQ<E;#ncgCtr;-{kW}=QLeGsi%ndc`*{_<` zOlRD$30Irh8ZiPpO>&1!{Z@mJAN-x#4>mEM2`Jx_g`kgufn(E@i;vk{j-&>4tzB-N z7<?4jaDqSL`KTrwvY^H453dv!df@WFKL#Z52p|QcY3NB2;sq9*)ZS}Db=U$;0mt%u z>%YXL4X*r?W&p(XeNNw0K(7pXO4B6r^RrBUiP3-P9~GradXbe_qrlFg$0%CLwN+Ww zSpkkc+N*2d`|dOP2wo8!ov%mZl?R#`C^qlh^G${*W>NgJWdSG^rr?z_C>i!O8ysXU zWz5RCisU@Ry2Xt!WcrUIlOst90AV!3Er<%x2xN#ez}W!@XUXKwpJG;|M8)cWqvIp6 z?do{)tYzIp$LCzU|9Hk>m<6(0@k4R9PM2rD1nQY0&hePn_Ewihis-VE$P~7B<_GX0 zDGLDm`gwlI_sogRmHGU^B-I|{yts}?_J0d`gWbv5Gm5$)p`OGs6fv3ef)rnLfex?M z|Dp_?R-&xG6enO%oUR6%FxFV^^v+$IGw?SF#^EKc2>@Y04%c@TvzVn%x;*@k0jYv* zf9}R!3D4p7#jY;gG$<xq#v-^3sGtgo(Ymy8MVLglI(PF70MFHr6T|cILI(6l<o0^| zYpMUFxY$cNuE>abkCy2CYT-uDLZriPNbtV5uk<p_Z42PL|Kqc1n89J0!HTre;Yg-E zr(!nrO4I1alAScpfNDb>&%OO!23hiTHedkT5fY7gY|jDwNMb0ao>i`{FzI{;iVh5x z?cALXvDvOG=(G-2FADO4j5yas3(dwc;WQn2O)!kD-&ZGs>EXyw+^NV~kMEMr4Qmno zHzVk9Y`{cmXxL<<L|d&=sO#>}T2S{n2L%jUMEW1c`8E&-L2Be3F0|1+ZtI~=aGG5k zA70EkJ6{PXLET>jAkc&m^iN@S^;-FO^<)p8cWt+a@B(bnlVLLG=~9^IEYydvt-skB zI8?55g#2Z6qE^<t5RAvplKBM7Yw#vOJH(><?9)6&bfwv&Ir#qg-JCl1gchf@F|Lo5 z%mIUL*G{az@)y?mm`JvXbZJ3xw$%S$Jw`SZ)77DyR}~q{sxAW`+_Sr|fCYSw9&Sru zCIIh)=&>zH%i~9X(Y+jqiqmcvKDl|6&O%P`?vaIh5~dzhp}{&8MtE3_$<4P}fZ!YQ zoK9slOQ)zY8`>FR?>P0MsEcpr1iQI)!{ju<$)khnM48#PsQe&BmeE{{=6)IP)&4Qa z*%eF6hifjKva;{<PnI%s3|(c0F%r0@YX_(!h>+B$l6I!$sxI3J%u&y<F8MeRNgOMQ z^?;oBRsn~24~3d`bLou#1o})A&j4tpaTDo<1BB_nz>$@jGZ&b+Vv~|R@)rB+XE&%i zTldrUV?jDd(_u41*7q_o!l=ml*4H^NLHjgBA!6O_)Sj}QF`HC}^n8~P9kpi=9-=(( zV}K+AXLW>|oa@vqKQ+$tQQk2(m-Z)h2co*{$Ze<@%O#IPKKSe=bs_^Mg8e$RZy=NH z1I@xedJ-J*tTXO4$}MGCdTFEd=9;4OJ;xFaHe0(;Cr5xv`#`2*by#U@^XGs3VU;Vr z#ZK!}xrQHB_i8((7gEHd6Rtb0H6&`&pk~z_Pzh=n$fx&0w!=+jp<VcsRHwjHbVZFj z_SfW*s8yzGs>jg6jGiEO?0b}5ke@9eWr|*N{J9fZc%H6EST7QqsF2Xl%ePaaKp=o* zZ*3IqJPHn@ApfRS7a?~#TlCcsS)&tc3ox0|Q~<;@Ha=thPuW!`p$<~xM9ye288~5+ zNel!?(k9O;G;0h*7obC(y#Wx0`s8GoR-+Ty9bEs~gXioTH1rc3x@*=DOD=_Guqccj zlE_jfJx*uO=3Q8=O!530<P;vZyarnU^V2qU19ABefSw{K@KhL?!dtq9BT}O|A3DJX z9BBL~kUbtUA3n7AK%QJZ?kJ?fbQ@s2km&6E?Xkbc5%-ar&v|ytx+w6vEtCVaS7ljO zDDbh%vo9xjK}i8QJN^Bua|YnAe)!xlvN4mc{xrT!l&e?z_+`wb8R`kwLyC9^uJ$XL z=lHE1AxQHpSm7Y(kYDvfL4Y%+;22liGr5;MqiQz$fc-JEUYu06CYSkRv_k4Am@<%v z86<}PFv~&7u(Nv@_WCEy)L`d{Y_>W0Iga$_hX{Uze9bsrJ$%O43$?=J&?{!QgmCKv z|6-SH#LPFa@ubGNVMOc~$3L8O!ACdKl5iihGSXxn5D4oWBA5k?Q)QlxOY9>6SnG1q zsJWoa8Y3dae2i-*&ApPZPb`F9UoB`C(SCNanfN0M5Vw|riux3UOrsB$8Q`>r#q{4Z z$V8rYn+s^n!1gL(dJW41zX#yrp&8z$XXxoNQTm<$NA}}a0NJDTE^UM`Zvcu>jTOy} z9|i)OBckd(l0#w9>c%CT3EfWo|K;Olw^qhJr?v)h4%cuAF!8}9asN^>0>sp90dSMX z?m!8aKlwKw&KVHfn5mH_VTKU}%ibFQ5H)hhc$ovpH4P&23M`};WGAn>=4MoouSCHF z>_Cp5t)>EmB)8vpLq38`gtFj#++>pu6y}wX>s@CI1rFAk@ya4+$Ls40;y_YszCHFA z#*E?68tEDhB9LjH4XJ<=#oB6%C5mVi@N9)osE!DSaZ`H!v1I9{@d@j9_D7TlQ(ci( zKdo;@07*f2l@>K?Y4nV(3C8JpPQd*ISvZRp>`WSEjqt%SYJc&-q)4Tu-{O+xAT4rM zfSYZK*4JTCdz801y>6L>BvTsK=QGPsx=v-p;Q|9D(+6M{v>xbl79e(9Ox|6cWbxk` z&_H6p1D{ZN;P(KSF=oPGWBwW-F6xPJdCVBAW71<5>=T6uPm7TMDihnDzL^y<bHHlY zNZ(MXR#O~6@DHEx<wt+W7fIk&bmjhYT~l$iOA}G?wYqDHa;WLG#rNTdcl5z`pIOA@ zK)_3U+=qPqaI%ZVdvI%TDU6q>UYQXZB%=c;{Sr64-hzWX%?<-ibCQU8n~WU-$h#QW zJKv_THbTL$OErq><S6w~p9(M^uTG172#02a`v{g=f}B`SWzuX2H=Wd#WPpaU`(beE zzQ!@bk?(a5Mwcc!9OEB)0-qS`>-Y|xV&$n050<}q38~J-JxEe2?4uC5W0|$PwFOuu zJ9h-Q4#=S2DZ3*CHZI8<Bo(D0(9(5VxiDBs<O?F3#PPdUfUTGyg`UCodNw;*PY#x@ z{^cxy4I?`uU_Xc+=9*_%!K6P*r?x<q9nDKD^DKaXb&!(|nc&iW(DLxV1)$N6Ka(l& zo4(=;lwk3SMpU)}F2=^6=Vzm(d`Mp}ENCqyE;Jg-pr=83Xu##$X)LkJ^ZxVTAEr** zl%n^t_IbBHrPO6tFB>7)9-+JlUtHJr7T!ws?fRep@key`3|z8AgCKZ;D1jyi4h?a) zJj>qMy0%oabFNj*P;zj&F56U_e3n2_=Y*i02&Br$3;vjCA#}{Fwu%EiHz#^=@Rms< zNN@C14z*-ee!q`*(Mb1lm+QK|1Z5TqmJ;T~AeOAg$Q?AzX68_lXV(;Y+F(%AB^x9g zldb4Bm{hS#^D_P1j2+JP^fs7m#5F763>n5zYnr|QKRlzbT>s+w9_C|yi2CCW+f@$7 zDv$;L-JFLJ<)B$B&kl~Ekv<_svE8bygCDTdm#38BU2nGLR4)YjF)f0OXZ(dVZ$Y|L zgly%Z+-WPoKeO4qbvHio^6<X~IRC1HX0q1-jq5l`bN_u9yV2a!a^e)H*1O@cSN5_V z3{+l|xq}bg^wF&c<u#9a@cUl?*`<8WO4=zV9B8C#$o5*jni`AOUq;vV7M04jD%)d$ z+be?gV9qcKO4nZvdil=L_=kuG3?!up$E+D~-U1@*#mZS}RW#L_nZODfbu&02LK!p5 zd1q+e$z=}~o1lF_sx%cEB#^khz`;m4xDrfzS3aiX6(b<CaWy!dl^zEcb?j_xIn)o{ z0^0gH3Up5qykUe)p{CgXGVqAKR64a^I;ITrpd`9&mAYuW2>!!04xKbYwys6j_}-f3 zw64AL7=)ORS}%+<PL|MBKNP@<@9D1+;dR~-;E~(#)YmwJa4CyJ>kQ{LI~wjiJHcX` zo*%$B<LVKYZ~WB!#XHTxlh|`T%nqR7V&|sO8VG>dy36!hln37eF!QGS^K&MqQR4up z=Hq@zc`wU}Z7Y^1HskpmCJlFfp*DUTa6S>h5;v4>y3t^uHt>(%u!DcKD}4Cc3M}L{ znklf9D|HTkcNy=}Hy(i4qd`O?5Dh#Zp#T0E09;-XEE2LL8`(SYm7oB;T6M{G%QHrl z*B|r;r4vtGc0M|~1#4o96b*dXzvgsUt;~-Q9u6xGCwX0lKH_yXd<@Z;I(h{+%;<W& zbLy~gY>=*gQd;`&Fj-OF&H&eFSa1<hgkc2P7@t&g+bMNTlyjuL{%d^$X>-yzxf#<n zBI?fKMBaXWp~P{eCWZBBkcX)Pu^FM;*w5D{$2DL1<>)xe0BpmZ*oMPrU)#9U(j1S$ z@_vN1<$A0$sv?N3jM-m9P7HdA`sHJ38J?x&Oe-KTMC5&2ypg^;5p+mk9LG?UeXA+; zFjQ>xIHxUR5y<b2mhdaLjX8RV^5BO6=ROPT5Byx5^VG`Au(QGenfA_=<<d@H9x(TB zglz9+o){ST;Ic+#sxZ%A?{imT=AI`?06RV&1=-&B|AQxOH`<gJxp9kKUT+uV6s~yE z>GGpMdy0RwNN^EMcye}yr0r0b#Mam7Z?6dc^MChIxUW$?r^OZ4n^_bDBkGt49IK}j z1uB+4i1W#A$qYEbnrE*X$HXHc5^$L?hGB%*>!IuIN{n8$N9catU}JG$nCL0+Vdyc0 z&)Rd>MUW$9Q!M)tCP?pkXG3((epjGw<3p!TILL{5E@2%M=fIS%$9j19(s~}8b^I9C zpxS++u&Q%U9GnqE;+*7CHS~GqFga8vHyp$b;{p=Jp$gr}+U_*PH9*{1*UVAs6Y60{ zn{=JR-3fYB&{G1+F5?7fLJipQHY=N|1$6~WxV8mx`ulvMTf?wQ5m6JzSIW=zFS>k? zg;x>EJsF0@kA2)x8<Tv}<$+%Xy!|7^q@nx0Ov`+j0&UQko4Es^`vFYxIepNr{5t|{ z?{Lsd<3Qo~1v%CugX59EZEgJJlf_%5h`JN<#kn`v%c7GA5OVvw%Y%t8uQTXYuw)~e z?=f?!dkvJl|J@Ji*@t)S;_cF~^M;90Wy<S{i<|^^=Nblg%7srhM)`a~BAIwd@*~l? z2t`AjBna(HM}os;yQ>B=3MP<20eaI0V^^ZoK91-tQ6BwN%Um3Zt{y_ewnBjC$QNV= z%3SDE)G+BK8HRk0>hL}V6iJYhl8koA9AaFfK4)f37VFc-U<#Yh2B8Ir&eDZ2z+(Rh z`98b@L;FwC%qQ>J0Y-f>meG=AhpeBuzsYvx+ok=SXJtbY#v}%FVHnc#lSCQEv}Jz1 zJU<Pe!1|n@uT-(Lq0syR`iKp9rZg~nfWIvunx`DrWE!%I3AEv2{r|(3*W}j##edc} zgRSZL$Ks@D!)3nScPQ{YK8S`TeL_7po8#t-CYj4kv?1q|k-qPLrEuB7$4Jl(-sZ&h z+NGXkL)b^*N*mMh$S;51E2{;CSK4;c1B1P?(f;Fq^HE!mQ-n_#nX$JY|HrL6=dA|C z4_!smG4;mjM&T%tY>gqN6*qn-j>b{iA&B6D;i{lPB=4JN5h(U^Ml~GnGH_6xpk)an z&hexcHN+N{VSy}%-bZ;X%?o<%juZMdt$Wt<O5Yu_1C_2{b8I{nK;bdOOc456R}RN^ zT-);Q5`&c_5fu2`-UY{B`pjW3l6-!}?vJZl2_(;YOMS6NH*=@NZII6;!n`Oe>S@F= zm{Ch>8Cr6o-%F2Mp`)hTQlb5yOOF&m$gSD)Ve`{S`ESFB^Y^ZboGiCC*FQRbp0(y{ z=h?Oy$o!RN6z&$5<C828y#>H_NDThX_cb*d7VHIyjYq(JVb8V0@b(7%{{RP)m1qR} za41IYxdx9LqaVD{rg$g)@S(fkMOG_%R<9VTSv#c~Ya~^d{hrMV`~SQ~)T^w-k+QuQ zX!}pwOpI-w*-U^`!;6kl4W4e?xV{J&p=c<FvDMb`975(b8xrj-OE>1`ol9oK=a{qy zksX`#rgyBoXA?$xIxp-ppaVAjmFQ4$%>>tu@^hX?A2+|!&GR(x8N`9iX!x0+kAl~I z9xd~cjK6PZaF9n#3L<LK)H?Y#tkCb8#Yty6KownIaZaJNg{)H6<M5>dg2wevp+4|U zL+*e9Xont5Ff1q+K{W0Ca?PVSHmD1xn4m#vT`>9i9du<~5Jci|w^<R^i+n|8%K?@0 z;e`w12B~HHczK^o03pggEglzjyf)sHfq48RyfcF*c+A-ktTo+=XrSqq>><m;z6o$F zy0D~zBC#*>uv|BV;HWM3Sm5;M`U4JD@1%CgPaErkH`F~7|7c&&kw5cay|LE|<G**` zza9II(I6rmtH+CWR3q3GFhD+7x2@M)zm`eBxa!aU_*uA~=aegP`+#)9Ej8vs<LRDY zZ-g2fOUbhL_sU0ssFKV{p@HwVM=10d$VzX(0|hC<nJy?oC9DC?g+NA1-JEVafDI&p z;0h_m7}?w+A!g$&Y#IhpZ_(-!O$VE`Lfl4o&X3_1!x#}nvLNGS-b#jmgW*B&;+?{d zCOv03ph>P9Im@CkVIWI*0GB%NXF7(rZ4Mdc)O6CFxXx5??9eBhzZS&C1tiTR2hgo` z*=0n%F6&q%i~~^}6D%vI-W53zTwkg@Ls~RXi;ZsxTV3~HZRy4|i=JDXogZ=Lcz3`& zY!H9qUXIB3NtB0w4*=<bJi<L03MVW%E)IN4t(r<U+@>aM;;^|baM{PVC$daKfyY2{ zGAGYUI{3%;1Z|z6&m}lcj@L0l4|H}McTJ_Pw-t;JG37^>0_rA=xcjo~D{B_uE?gUR zvdt4(iE8FLIp>R9Qv1lJ1p1vTJ%+k@9yk&cj#~<9;8)u+YC?4m8EK<IA<E3`FUpK2 z8I3NlvKFHJW1IZZE{QY|E;^HVjzfK6%f3+)bF3W4*)wptcU}pdkBvJeCn9MMg6(z! zRfomqVOnPwLfpCP7-SGr4#|nnd0a!@4oPsDdq$c`r-H;9;_G*N#NGeu`smjtXx{9r z)t4$cW)8GT?HS`pv~pJ)lQmm9^@;P6$|}GKbvj$RWdY_QnaTRJS_1N7ms!6L5Fq}Y z^pSB@y%XtU=rnKzJc0hu<$(_Y+5(a7^gqpM2nY7&K|gaC^R>ZT&d<rfTc92i&eL3O z!WjXb*D+aR`o)0XWgFp#Pr_q=8PQ*JtoIoQZXz;_Jaajs@J^@lyU<96cq^x=5_vm7 zY&pQx8~{T&K7aggejM(hFYrb04rlyvl%|szBRBGQdys>sNt7^<4o1x^u<ySM@Q9J) zT<7AB$8Sy<MB=uLfXw22s6qbTO5i?&%tD?9^>Na!iBv5N>25*$)i@FyJ;pmh8Ka)+ zH4wS<jLon3eF?pD2NoP2Y;Vj)>Xd@amWctv0=i1BU(8LPK$2!DP>J-dAA&tdAdQ3W z<`tqXIg@9G8j%}HAb}54p3_h}j1SbA`iLfn*`2?(b={SI{Zl_aeow+$HLy;c<}g}g zZuAuS?b+PDAf=1CFLm!umva%IsA!C*=8#b8o6Vx6g<x-y9o?QLYS6JPfzf}^^3WLo z&~{fx4sqLb`fg>$VL$urW>s_6HN~FBB>Tm|3uu^Y6WbP(pt}LvV}Cz-(g-Z==j$C^ zFPzK$Y}}x3n*q482=+=$!STeg=!WiSb>NSSA?bNyx=-sp|B&hZKmI5a9kZWh4*b>i z5w6M07vJj#`6ajn@+b=A)BR=%CY1^hNy56mOe1jFjuJPRJ^)i2-Bg$?^TKebK~i&o zb|2_v12{4t;80Tk)H&gG-RngfVA&|2To3)3qN4G32Mg{lfY!LRVZ+9~vkG3@^ptjh zu>QyPg=boV$$^kLy?M<e2nP<~gE>Bwgh<lkxXnr)I+1kHvqrIB-b|W$;}d2Wyt)KE z^4hU=BOS4ggO6XZ1xhi^1Fkpyj#~)TVzBF%8)hN^0>1tUcnKY~d3jCX`p<RRc3a)& z+d6`@a_Tp`o(nOC3Kty_T<fGbM|5>SeynD<h2EkEEw90gfWmiQc4}y{M)UYVpy|AY zLK+{}l=wRU27wvh^O!~=vL9#|0709Lw*~#+O&;&*sK(HgH<hpuxz_Itcvp8tv+!6f z^!or4f(7G!t!lA{zK`zBZP)bWK;yeEp=xN8Rj~C%;4oEJBI;-Ig-f<S3#Q)XliWf9 z3#HoXR45g7G@Sb2j?nqJ=;$<uipRg|2u})ai4n~}4{UwdSVrCKzz`(|?Iw2$mF7+z zlc$n{-kHC=BVTM_T*IJ2KazTQ#$q~9t;Dg%PKsNQYMC1m>h|T0pd|U&WgHmfH0LTB z7~&?Xx3O{A>iQ=i7nKCIj{I5%N7d;nkIQh%`e3WTXTn<y`bes#J}yz;rVKiUdCZw; ze_N0OEp+V)>+5!=b`i#KVPme@y5$yXzV_T+4x}Ji+|HOEvB$&RiE~}-)9(vG+Mj*p z+o8ctxF6GlmWMqAn6^dJ`ko^`Rv@2v+B=>TG2A(YY=ABaP@xlrKuV2Y$~3zB*oZuT z#QJN00a-SmLx0GXO(GNte~;8%l@*X!fdK-_tE(CfcXDRl-DgivXWCNgZ!ZVheke$z z50{^;H^uoD#{qS+g~^K4IRCCl!?mr{T+C5(a5UsD$Q^d2&CJmWx_Kl!WH|fE01O}y zRB4i4L>VSCsO@0Lhb}@Q%o>ElVj@(c_4yCZz4wMf)*78=iMj~-NEF6*GEaSWdN$52 zXq!}F4C1}GHr)x#{!_LIE&~&~jA$=ZX5^8<m0d{@ztckCB}6$}lYCKYT!S;#Ih{>0 z3&|))Eq>O50Bq#~b3W_o*kgY<)$hJ`8KCPnj}~$@WqT}e`++x}&R+^M{WBGvxd8%m zLAX}iA3t9f#lB?#2qPlP<6o2$_EBg!`qFkp@jQLR_*^2OWOQY|1lXNE7`yHEpMBvf z`doMESlw%mKJ)EPnIjO$^s3C<%3zL1R_(m*-uG61;<o+=-+g|0IS{62Vm+=to}zis zl(TO4EDs1VWz#vT1?N@UP*=Y-SX?4Gzh_l~!CQhQ8w@s{Y;+@yVq75|A83*r`aFXg z&AL$z>`CDP5$IY9bg0t<HHGHJi9+9}^HLCinJ_lO($hvBWHT^jySrpf957Bk>f~Tt z+@T;MVQ};e!{j{>3jy89+V%yxuVozDNt?)J&hsIlFE}2mUtzmq&K(udj`opl2z+7* z*3}#r;xNlPC*Z^=EJl@J$FatYV(h7cP5l;m#I}1j=RP)hRf?^Cc1lLZ82hL(&By*^ zTo303!1+6vpY6uEwe4v%oQ}_R2H@hbhoag}-DT~<qVsi?_Z3;AB6j2NS~1@WXf8r@ z6>zk(<2g<BesX#2Z~S&NC~dQ+v~u(>tC%^m?mpW!N~v7t-TIk_rmmINwfaY#zDl;D zv6XEL;Qc>&=Eg^;m_w3kB*VOkOB4Z7HdJVu!N~F;f`;5ENph~h_oA=t7tQdtpaD$) zr+Wh8h#6^jsvLNr`#>;a{Y&=W$HPCHnU&IG5R7a!p1=W_Vdkv+;P@s1ju&E0ac6^| zO`Y<1#j3aiBhs8-v*xr9svC?hGC1D#c@+VnTo;1VvNfXeU=}XQgFwj~z4+wd%m#mL zP9NNS0=1?8Ley;^stz;NX>ipUcMGpl;<|JLTJP4DItyTN*lka&8Q0u3ThkusqqXhr z?sb8a|4u+^Gu3*Y=vU+yI3$MV*Jfikx5MrTUFqW|Q66>+fS3iXk!$);?s=~N@|7t+ zM<og%>@h2bNe%YG7eiwwJ>&4~Jhwl1Qk-~Jo>p-PXSnSv9Vt1w-)o;y^3inHO7>vr z(U`%g9h2)sIr_&j+x~w4{b%%-KYR|6nW});!YUF7plgmb7#ybmb%W@}NR6^fON^%9 z|4Ojd6ELK8JLa6`YH!k%i)rWJyx2wx`R6gjdscrMqV4`2HBK_Ftht>4pQ+jNpN=0L z5W}8xB;4gn)tR}o@L|N6(uM8<vc#^TSh?%AuEFu63CVmFOl5~YbO5q~G5D|^8OYGA zf@zc2b4SLh&m880U8KcnA!*59$N)FPI)+LBF_M8)OR`8Br<+a%L(5j1fciQ#F! zYS={tpq>K`##IbF+H%ak5xM<Bo3pHkgYs+}gqcxRg$Ou6+#Ci2p%)`);GuNRPVupT zLOfu3@b>^v*svPUQx1nO^YlLHx;<aHo6BC*O!1%~V_i-_pyX8PR1t7`;IFUKAHB(! zcSK7(@FWHxP*t^kXQZ269#GyDt!ku?)7&dLHJ8(GP5ga`XKu^zKP+1oK$5`@ArQ3p zdt%YM&hXS1LZC7=!{?dN+@aw@hYk*ui7@NR6diRi{p^%uni8-I7Rg`5oJ2ea05S<U zOme}H_Gw<nK8Rxk%Jw^Ff*6Gkvc-mO$fHy9Hg^Vy#_$Rbao>(Pj71nv!ACWd_ZglK zryvwt^`P4@JT8<F<-O`|n<&pE18vub90*uY5@nmyjF2eK5$u(Bdc-b61gn`9=Lw=X zD|0@@ov~2VFeX~~D=uqT0k#7?hV|n*XRJX+&s1^Ci<bAO=!U>r*gdG2vqR5jn-kkW znEjZl;cF}#D-oSW*jaWvvYkmgkt(dv1DA*00?-4umoEhBVJ1Qy{IpFc_8a40HBi&g zjpmyVAA2rV2GSeXjlau4yuI)LhyKPtbpBSClA@$*czsp&Pt1amqPU=r6y$wmE8;|b zy6YOh?mWV^a@V}GTVD}eC~!v`T(@9FrtpI>R$YQojC<D%i!zNhM7?)ueMZ0p+(f@~ z=|sje3}X97h$Ssjjm5Vfz?x8eVnL|WQ?vKr;F~@%h3KBaxu6XCh@C)vn3*`5UAmVk zcEJSkzJpZ=GWuS)_d^ph5(RL%g07GQ9l~+q(r#oFnMmT;;#gp(7&|Avx1RM9foO0L zc9p15HV}mqClnqJWE^Ln**xl3Co5%knTx%U(06TN<AU|dr#i)V2_@9Etqwq%`}Z&9 z$$~4sHrVs+FyP(g7gz=5wWr2}^hCPiGaLk8_>sZf>AWl+^<qp9Tps+l0BjUb6W=oh zO^NpKlIToo2}V_E4Sljn(jOX{(S#kS9)ZTd3H-sEt%zOZs*+#?h1aodX(!hK1A>lK z!GmW?2LZ&9?SPyC==#&P6QMr!zizj>_x_)J)cXU<kE*fFbBJ6>BMza=LIX)Kb43>A zZN?gGVVqZYKp|oi0i!NaR<vs=12GxS{!rN0C+K?^7m?6Vjq&iEjh;&UD21Tv4Urve z(3K`aMDa-#fkO>87to<Rj!_KE0%U+9@j9CyC|VPp9=g|L@JZ6_jlT@eFFXk#L@8+Z z0$D`|5-txj_Fha!eN9S`AGi_&AXAyUl^cPC_<XYijSLWY$G0m#lNr@-a?}NsW$GS1 z<feJB(YhF~nI$vKvEY35;NZHwLt3?UvfIxt+nA|KJT6&cKfSchh%uWxvV-inA+|N0 zi|O<H6o8H8Hm(wO&B)A#Ogzi+^JpkWh|^XivrnJ+f?<Dou$YnKADturA3tto%*ea@ zyh5wliLL4!xyD&0al=dtx$aYr9$xGgVV4cLnhBZrx7P!2=K+ENk;d@PKBEyvnWFYE z-V7$V7)sLh?7XEI!|AA|6BKg27<%cBpWq&L3J-#TKXRwTy;(Av6KMEpaNmRW+7f^V zvCGcb5q2q!PhrkQf8$dQgUkt|a*$*6O<X1eMOkie#_Dh+43YJ_o=-uPkR4KW|DMK` zu!h=#<V3>!V?W)27sNx|`j0c_vZ%~;3y4gYbQ~?RA40W!De#E=Tw1pO+&{O<Y2#hi z|D3iUv0!iGToc8$5=X}8Cl_D;y<N%YjtC^r-^=<>b!VVBUJyiR94<nT&f3)Fu~{9G zb_SN&SWfLJHsJI86u?xtvBpx?Q)b4~(`4w-b%<wM2{H4<W`KF)`Hp`zq8C)gxCDOi z<~2#_s6%t(q_Xx#CZC42zg;9p(P(6&oattoD>(ywFhqL*VzoGrTwC4WvH*8?v{;sK zWm=l-=rb6KjL?v}AxXlxJ7l{+RQiCN)$!@PQLQUL3fps}Xl7Cf<i**5J{UStW17YQ zi3UBa@)ccRrYLRW*eTMz6QTAINmeo9i#Wo8J?tfTwJJe${1R3_Q9JDcV9YB)&bkgb zPfyl0utD0^fS|RES)!}!pX+)?z0zx#;ljiPDKAqCv>zNs#AwBinUoQ*;9qxIG0?~# zfFc53m2V0uAd7d><ye($GYiiHb_l_iUn85xP@bKlt%!3E%ZB3uU~~OCu$L=Ad-T)i zIRh{^>3K$WJR=7Ko0loEA5n;A)Rv<ixVWq&VZyDonK;9Axudc{WOM${c~{OJHTK4_ zRivh!EcTZ>C&o>bWwf#{yW+^NIeAV_?pmGul<twGt$g&M&<EfB=nxGwD|$tv@E9Qv zF526o2i6)5Ld-BoW{jSJe6D=IH92QC8x4GA(Ju+!Q=N$QgzLdF<-^%ASQUl9<b4xQ z-v{1Cle`TYye`tE=q6NN4y2?QTXj@KzP3U-p0i|35eTsw0FZ;j966xI`L23vb9P}- z&t9Or%d>|LQ$RECNJwZEt<GzPUbr&EA?Tc?chVfIgdYNG<`ZPTtP8>WOq4Pk7a4-S zg8gM!C6boLyx|~7Ko676Y_b<<yNm3$k=r@(I!+mcA?VBY4}SwC6n#UWI`YtUNRd#Z zI+82~v#Xf2%JGSphkgt&Iz+SquyDa?r9*rJ(z8zo>%0HqzJUl+o?)zow--PBF#gnU zarEq|P*hH=0AoO$zjxFjc8b?2XD*t0>{6|3Lvy?Y-n`$Ry{y8~`d#_p&z@i250IS` z(s5^qmB3S>?IU+e+P2RWM8ld-1e?xWmUs`Tv~CoFDQs68-=fn-0f~G1e99lvpWa&S zD@Pk1Br#ueVZ*wWminpJ*ywiY<ub^Dp8y|%X>qe{;2;BF@o_U}FhNHhH=Re7e-bs( z<2;9R14-6Es8OI6cys=ax;W<y0FHx^ji8|4rt0~){7%BE5B?pp09n@bX~-7WP;k2J ze^oD$GiQ**Y9kx5fMz35&_V2fXD1`exQ4>@W@&S?=9XE6yojE&HZZ?2bxkk;C7Q37 zx5XTN(QqR|{-Z$C;eF0u1mu%w3LxmP1z+w%QyXQroheJ(m7$q>QT^sQDdgv21`%D4 z-+yzQ_=I9ea4uqeBv4$6(vPG4-Me>9@mG76F9JraK67+NkU_YkyRulW0hVQ^BFUfW zK7V$11_95ggVEzJ+3IqK1`C?&*j<i`GRBQyh^J3MEHOSuqf`tyNap6V17Z@kuYzQf z4_s=7!rKz?&HW4K9T@u4^wUK+VFjvZM}(vVG%%*TXOQ7DrlipcSYNIYK?g4}-Q6?^ zZV`b4p<`nBPii#HDC-GEf1)br4z7en2Tb;0-{v*7U)m(#D)%x#-w&E15HjQ!Mxn09 zZoKg<L*Bo~GXe%e*&o+ZUr5~9na)<Qg8=iLCM=n?#=h+6n$x|0eeb|^wwWDG)8%K6 z26ppg0Gex?5C>MH4%?YiGcaRjZ3|jH=dS|ZiaYK3mBB7=GY}0Gv!X7ZwvQdmZUZi} z#c9NA7u`+o6u79`M~{g9@{J-6&g`Asg=<xGragz7?_b-)+9B1-iF~^2hk!}9<uLzu zng?sT#e&Wk<?gmN`nb7X-+m+DqYv-0rKO-BwwB_;l^70=yVJV)q6}WL*ji`n7mz+i z;S!nE^u9TxIwsk8Y8WAb7IK;WAco5@=aOAh8k6*y!1=osV*m_JPYqR`K^wOTt<iy) zPQbYP`VRk4=p#k2K;2eN0BBqRCrrbIuL&C0MIK`^N7$@?snQaz?dZip6t=lFM~5xT zvJhB~QMX+81nQ~7ba0RXNAF8v+%jlFzP5(un25_lWjl%r{{bBCg7vU^073{eHFK)6 z-OM0-Wkat8S*z>lf9$%*czk&?NzZr-C`1pFOER3Cpem?1c%CtgZqE8Xe3Ip%e+vM| z{!%XHLy?l8d7k%&^7&IG0*jJiSxn<JDHssrX>Ygp{jW-na`76-)jBbZ+E$2k>AYpF zyxcgA93kRD*~<1tF215<((n=ZU#(xk&`R!W;3$9JwgCR@fBMKL$t}4Gm&Q<vA(hTB zMSm1&E~G1tX*xPZn^}62L=u5Wz9i{_S_DI=>WWa@1iFS$MCN2thlCPXLfP1Oy2B#? zJm6^NcNR|jtI9`OolqI_M_kb%LL|H<u!s{$%u-B8Bn`tdRw%h7I?$BiOW5mn0m?eY ze;ITq{&iU$%n%*fVj!WCwQvXH8G^WNN+avT9O%vSRt9P!J`x=s?-PQ>sibAD!`LZv zGDi+e0cbJh^EzQFIMUCccF)njNb#Af_WUB}vuR6hmy(O$ngVL4>MZ)$&L#6|`|u*= z!QTU*#z{v^2icTl1o^HotWJu?RzY|UljqO;PW>lUEB03}ZiehfZ?OOT<NeE?W3y-q zoHOkXfh_5pe_*E7>3icd4O0hHI@+zwkV@W7<%5aXD>{cO{vm>&GW_T-=F5Qu_P@23 zAU%w%s>}w*!Jrif?OxX|nej;xqF%SnDd?j*N;Yi{7MFrc6>xAASeSwJ&;iCfdT?^% zETs=o!bZo2Ae5c2uPt1Sovv3fa2+s8aP#rI5@H`i2^L{umN_oqI0WgS{_6j5P7n}< z`Q^cz(r6|C!@!0Jb=jSm>7>yD2j`NwPNpq}#c+cx@I@SSTt**L`-D!@WwdlY;Rpr= zB%d2!Ynqvvb~n=IB;sUeYi3r=TY#~8+CEs+T?J*i?AhpRWf|Z+Ke6)Ndc)?@$JNnz z;sb0y2E$QyS<eqw9{3O-*&*2KD7NCpH5(Xq?V3X_{@5UF9n#!lkhvwW9qKrJ|E<L9 zezSoYf|WyknGz!l+RY5Cc&z})3UHVKG2=p4c<qlF0+WsgCntwsV0%Syp=D{v#u%7A zltOEKkAMAe7!e*cb;B>w;4-@P=s59TjjpJ5gp(SkUd8#kGsx1;Z^EE&(W%5#dE%3< zJHcp3v3A5JQZHU~Wv*QYF?Mx=Q`F5=`$%!zC$G!Df(}h6gCuI@B)A8Fi8;}5M?7PU zKnuqQpZKV`9hWbh)6fnO^($yP28OC(4x|Bqsh`#D@a!^<xdf+QvRUS&v+kINg8#y? z(^UbiR77=pn8v4SHxcOPDO@@ImA>Wmf8SEF0J>J5vGsj}meb)#XzD^lJTzVrd}(Jj zUtGjjR$hyr0}e=-@6?Kq@fj;p_g;L`)h=%f^0M*I(@*#*+u_t86R>^x;gidL4wj`8 z<voMu(4=;2zumR^**UK2b=R}wk9%eZ77wTP)PtOSog1T(w<PlYRg`*pMevWFXTjnV zQ=Iy^7;^75#$sSl1h12#f-G!Wtmy(|CK9#u&HF+ii}NLSQlSs4ZJA*%@o_|K<vx*< zG!!hh8B8%hWp#beH%b&7^9q!4bQBOe`+o$wz~F4ao5+-diHZ%-Zrb(GMX{|wjeNs+ zK|OTF=Cdd}c!G!*4`os)_Vj{{hwEod$5R+Lm4i7s)KCP}4;^E^CUZ-GC`}3FY+ukv z&4j3M%Qei2CJen~Fgq^ByqT2kI+r~6IA6(<FkLH00Kw8$p`6dA%VgWn8B<4wrshJz zQCCN$O&4zve1P)6PXWw9pMy4(m@UJ{Ot2rSxO+RAGk+9l?g6S6&c!|-z3?S80LJ;- z-6NqNJfWkdo+8En*3P*a>D+HQ^!-{r<*UxNZ4>s)xaAQXaWdvBkh8j;dGDs_cD5P* z<llZ6ojidPnT|4K8H5&qjk~Oz^#bD(1)SmZ`D|*=gutSzl2QkRqH_>R&M`>gvU6iJ z>lkwC18L?fQsqdgm~wFrm$`;FYkCDSfQ65uq2bpj446Rwl04>X@B#o7a~fJpVoN;a zHV)^Bif3(N+8D=MV9#6U1*1eZd4XI33OY2XPIfqyofn>qFhB#ZT3!Ym#M&Hs4j{~A z6`$~d9-V(ubIIdOZV!o6uhqt;_0LFvNwR(sg;XnagfwesBPeMc6@)-QtbJXT92k{g zr&;6I4h_a0xlIh&3Y2MkYHaK)@+Ip$rXj{cIw?v45#9FpG+!3X3q|+@%Y#1!Fb6%D zXrW*q&eu=lEdTg+Ha91I&%d1wkl2dZG6&9!zxUR4E!dS6IjC$=32UheSd^;Nj-T_w zi87&q?C9-xdAt8f{wNTZ)wzbPJU{#YzxcD~gppPNd_!2WOasFyWwhjA{Iji^aJ}`L zY6>p@-bu(ZguY6b$#7$jhOZqXj_{$}l<JzhH6LB3#_(#lC<!x4wooL0k+f!T!5D zR>_iqj~0lqDbgwqNg54yr>xifKdxD+2{^Pb=GZyPN2K_SV{e&C^m%3Z28lxCJ|koU zhZ7J+fI*HE`O5n5E{p3bt~i~W;J6V4Nl%Xh1-`t_nE-&Q4o^#pLd^DT!sd)o5<AT` zhxH*am<&QQN4<1<68;w5A_?|lkXudcx?~$zwlP1N4t<N{FW7EOg8l_Ew)2n1d_0pz zOs_$C4So)ohF%QC6NU9)Zy_B;)6BWG3lS3790dewye{wi|EvCe|9g?>>N`f(Xh4rR z!quU^L9c$+g{u5AE#<wpX!c5VU{&6>-3oN@i|KX-6z~7>hnFV<f-%An4CcV17y(_F zw#J+lR|m_zAOYn?=Y|KQ+}LAAf?5Lwb^w5c=C!m6?!hX!(S}-I@7eXn0ayO>t5j31 zD+td}*d0YrFcxIBV7{`E)Vaw+VR8zEJ9$l*$CO6T#DQArPc;6%eIb4?y?xIP72`D` zP#mA_uqZ?21VqYMf(Se7zY>oFXj(M;6t+gdk&k{Y$Xhj?BQgCI!9^p6BE-f3pUx3m zDsed2NDxtQr(rzGa^(3dllyinWd2f-=2u5^yVdtdN0#?5oBwyZ72q!fV(j!FVvb(M z085acuG{91ySxSfK!%;8X-c<GCpK_sc7V*(jzOPQ6=j8LP|QJo|4pS)9MoPUy87PT z+y3H<gjVgZq0(0Iy3SDqA^{9tqu24}I5rk}$uXK;{UaHOoW;;K&(F?(dpS@rzG{@L zeUv?%J5Xg&K1HqsridWzN#)*TMCKX9<rY3@wCo>up*99+8^M-H=Mbh0s?TMPCYWHY zN|0-lN|%AJJ7~6O%*YDXCi6vM?uClJ3XB&44cwYw43i=CoIx%Q5VY{?AX@~L6os-r zNu)tOPu1U7yCC2QPd32O$m9IRd7(l%0!a>IX<EegtTYk%A>Nz;pr&62jBqR`AKQPW zxUIo?LMZ|bTRSi&I7YeHm?QYQ6I&0t-H~kLSo`tO=T&f)zhC21?ASO9Fb97qwD=={ zMgiLUPY62@V0z&4zyJVE2bm)1+cM{((w{;1WUGwd4?ra}B_cI8L|WnWgSYJPMpjNO zozf5y?LEeJtz1Kxt2!9@+1N-h%as>8KDs8SP#2}UVX$g+P5#{eNWD<Fjy<;70Kf(W zX5cg{u{S0*=Z;{g$|ObB>{u0Fs4-NdZF42$+pi|a&SA%?qI)ACVD|kl8fcmSUxSyh z2kn(SD<C>bk(G{hP3gMZBFg%&*Ja8%rBv|7RLq*`EMt4@3&B+h+;VnGNCH&>X|m}x z<Il(|uYYucRVGe;ud@dZzyz5C9X27ejf&(fZ%G>I7(JmPU;LNDHkG=UWG0~>r%W`g zAvVS3C|g=jiaBund*{z&x;@v71C%*4*5|rn>Uk`N`2_$(RCFd^!|x?f%Y0z_$#SeZ zY0pkU!FUj0J@HRGJ(>NU4ZSw0e=QIE6u?wcTi5~-h|ljZ#EzQL$gpdclO>G=X*{~| z{U?(hN5WLmUO|Qu@0TuQ1p<YO1}hfL6s+!}!#7^j(d0Jf0I6Ge9gk}%NFRqi2i}d} zy^G|pG4-}>0etUIJ~FeAxkw6g@UWCRr*40GLJDw7^WIp+RxdS7j%GR`>5Yk2QP~-M zje?8XCRuDXINHq|(Q5Q5EBz#&Md(}TBW1(RGm-^4x^ObIK#m+PGH~mpG(EGFUy|Rz z1*bbi$>)Ldb=eTqDIIhm+CK*kN7uhPK{${Ka=1;2Qjh;m$~N|Q5|E;I67T>_sL2O` z4=Hy80b0jW{db`sdOfUZHYzYSL0TApaP<I)ncVR^EQ8sJ3yP%C0g95w{?6t(Yp@p# z?b$5^6()~fXNqII{Z7E0Ze5cqqa=Pp^Vewod<ET}0vKgZB1CjU0Yq(^8E^voGhgc~ zusZD?0*cE!m$zsB@8V>xP~qy@R!;CP^}}hRbnQ?YD=eI(tm5eTh|EWeEt;G@y&_Ni z$Zh}ezJ2EX1(+A{b{O!ZkI*Sgp%o&6X_y9mrR!xoMUK&6XQsPti~&yEl&N9sQt%de znd)k^%<eD*`;TV}D2xwAQ3&*ys4;h|BJKz;e>l=tPXVAjf`zz-Y;2ecZ$FR*>{LdP z6se;0I=9jLah}Xc$453)w{evqKbe!)F${goj?83Nhk)xJnL$?>5lG$dULGWcF-p^8 z#1V`-NX`ADG8t+^l|C25q|*)#Zpz`=E<YcTZG@`>tbY(kXUIXg1Q`W{R$HF|^`0}| zO6$bqat`Hg=bV7iOzU64lkzj3&(zvjr!QLpW3`Q)>6sA_okt;kiO|EBhd%?Lt8EOG z=?mFXo$HzATmHtkX<CO_!>A1dK>q7<ispxJ(9yDT=4iB05%wH$3oaUzy^^5=DGajU zwXUpqbaGiXBJ3Zc`IJ^3Gfd9ZKQ6{5%fBZd^8C|(`ytxnD4B?TCISG#WPAF-r7)uW z8KWe-sLp_Z=a_#AQI8wtw8yBn5Dg?4SRGSze!7>8{lkcaQ5XWCGp#%?A}5c+Y|#)& zQ$zRMU=b0H=~~(F4>&spKCS`2S1m~&lU}GfkVf}rb;)9Z^9aBqT<yJsYY>d3{uT-R zE`Wf|3abPFmPpiJ`;MoTpdavubV{|YT{N9qte;E6c<ek(fwna{#~jpXmjW=>nJPe6 z5`879jLCaC#+4HdPK_vljMnBHD7k(fuT$gpGS7HZ|KM7j7q{T@@>W?Ud@C)Ze@Z(# z7m&atuR|8#;Q_!&)sgj&X}lfu6MUiTylaX#fWbwvn1TW2Kl_QmY8iE>tpTjNbbgDX zjvyPFe44v$3kud1T!?tBv|n24{@yit_8t?Iw0O17%1E`qh~%owmzM+m@OizX+alm- zhAiVgYE2ndv}GC{0_{K&zT8=wl3`KD158Ro|HV}7XqFw(plO+dPGF87?g%Q&lp*)A z_cimg110}H<ZwX4rgJQnIPL-Ccx_o0Nx;kHWBV`YEGNNvM<*r<bBJO$l7v$rLVfke zD2*1(o~|<m7%HDcM&W+}NEBU|kJ_0){UJau9|R;K&j3=kQ@HN)eQL+e8L@#rm05t= zz&Ue`726|0Tzg_<A{emIhSU(u#l((+Yg{OVl2DfkSlY^iLB_TEXv+lVA(Ut8o_L#R zF)Tqi=WKhDrfssL;Ga-==$`{teRfkJ1m*}wnum@si7!tCRq%IvLBkK9@HqJABu*E! zfhIm8->y_cz26R_`~V(Ac6n+2y*kLFm50n)UF}1--{_$&c&Z1nu+EE=?jY43IMaLY z|LHSp5yomEh8i{h9+>*|{z4ho;Q;1X3RE0|y5j(bTxcR2v0Gs*)zg%8xYo`<%N>v; zP?Nihj)$QyqdRVqabMeL72pyd*Tte4i)iG@qi2f1+E;Y$EA}q+ZFZe0f)9kHc(%dj z4Zy>&Lhk8<2pk<|@Zm(%XC@rvgzSJ?GX$EM8BH)1BIG$*;`LB(D36IZa|h1U*sv&X zjDU5k%jHK9;xxFS=PgKZ?%c6EX!q{~y$#EhIp~Sguksu%{0jUoCwsxq)z_HUx@-e* z3`za(Yw|Y02L%8p--zUZ=s;@(ugzavo+vTkSo|fx%kMY;#hZ3FpX5|N8BMRE<C0PW z1H5vASm#LT9AHNJsJPjYF!ob~R!+NZpB8mUXYYWC95Wy8i%5}u1pu(FX94ECG1TG6 z4GnQLFeoR%^`<Yl#x;)@WcRP=Fc~c{_dJ6x0z0;UhIbP}hZAX#)lXN&=P8&Nh1m)$ zKu;J2X>?6RitAxAx9);ofbWn%Q`(H1=`S~fmQV)HeF1I;QoOCxt<f{X>=(zN4jac^ zs6O(^NQG1gDoz)Mi;L*E-dulN#=QR?*CDQd-(Dfg0kvp<VEja{(`x;@o^qHU0T4vk z8Bz__{~Q!$pdzMMDmr%aT5xvldPvvr&}?lM@7N^(C6{$}$pY|5e9SSzl>zO>1~-fJ z(ton$!CwXJpC$aw3-xmOG_+ShgUxK)F9Zvne(>fQkv*DpXc?&^zx?@_{6ZN-+@~CA zhfYP3^U1PwbXR*@((urFd7lsKR6xXs<X=YkRGmR!oXVg64<DBHb&;ck5^AHnPy<rJ z04DG-n@9a_{LttQCsTDwRX0muk1m1UE1;-Rmh;3umnaCgnJl`R-{*BO<x0urP1%Gn zj_@nywpF1$6I_knB>W|thOvc06#9q}awIb6FAS+vqS{w*F5(ny0LJkwN$Z~rxHI;N zhStL@V9{KOPA%R9r&w9RSd!}<`TFN1SXnp8VN+Uv>`0DO64!<(zl$-Xb?2StC=URP z{qXUw<>nfR;`)K+hvQ<zL&=8ewHyrPx_j4h7Hrkd=znywmU>sm_@Z$<5C09iufdN2 zKlHBwvKlCj-V;(He`goN2iyPC_F!H&$G^SwM;1nZ?Qr(wWU8pr>2;vxNV%q%)!AMp zXzkEIsmvV@t&erOd)PKchkQk(xqr;OTc?)3{<9B-{^HL^768KUB3CBW?f;iKR5}F6 z9xCQvzayNV8CjL{8Jq;s8&bzkO*NwfMrUr!rGi?HDOJ-QK}>^=yD64=(4k1%KQP`5 zBC5eRxB#G2c^go(wZs8vjr)VAYrc5B#!(Q08*+F=-i-n(G%l-vvC$p#Vr=b%lKz+M zBDYD5EVhy__qeWyx<1^255AdNcG#2>(P#_ctV@V^=c38kK~nu9r#ofotk<Q^iE&DN zb`6Mu{oXexkwcS7Jk*Z%ZEAPUVXvL>y*q!B%Yi^1Z>ll98eNmA9Ag{%wRjTXp)&w; z{%2PIV(`KSSbTmm7%%Z-MkD$fChPsTb|)Aku6qfJ^^>7R+Ap)ebWA4MMWS8AkJ*Dg zuyXC-j5)={!duCY5m#3_^uAZN_X3PV*|QyNePpTC0hS)S_n*tu5v52rl1NVifw8=m z0xz;B)gJ_4p$1#fm9eY)1OYQg09{~M4bf2}=&JozXO@hcsKEl`t#{dVo<Pc_Hi<fY zq$U)S6&NVlSLe$x7U(4OgGQ>^0Y*I#DlRvyXV4wSE4h<(UNgV3{;-YG<I;{BI_Yj{ zZ)=<s<N%l=P7$lvV|+N&PLvb-q`RE;%qI?pissUabp+dyC2$Y~C?M2tJ`cubS(s8l zwy;0J2HwLicjp`q2QVL=w8Jpz1NQol)amOUj?46Mm4|)`z$}#8o;D2CNuTRx4Dcz$ z=FF!bJt6wb>yQ2IMZ+%G+9~P!?)H6Sw02$b){kygS@hq|Nn$!U^WLk!l4UhE?K8CO zZH_FoF4K|k?NQm@4EVk8K8rMD9RV;=b<Aq3mPXh?54M{~)hG}A>a_#kSyzoD3Zz>K z4Cc)Cs=;x`$i@w&##Gjhs$qm3j5^y*dQ)lYcZgt$exo$5^UzJEMB5l&{=1V(yKTIn zav8(z+5E*?mNYg_SIla}{!(??0ib!E>PubkN4MDKxa=cmJ!k+Ga~gs4#lf18X{k7f z^e2wk=wd%c{k)DPWM?w))v?N30B)1wJjQh_L_tSj%ZI(^Atx^T4)<OG9PQhO-F9GC zw{n%nR_%Fu9lW1U<68M)%R>VI(Z>LZ@vqpR(Kz`(rko)}VpRR9lpnl#h-J6`e__?6 zez+`#9vq;d-u|ki+>Lyhmx?J-V!O6>a$NrI@$O1^jE{PNu*w{?4q^cYj%8@}%U}HY zv-v|oUK`tjkG4OukPGj{>+D8+T4wLwG+LzN)y)m`)C`*FL<Ykw1fIo=EK|trFjB5E z$8iPNu;Wll7GU-$Rci(aj6Fn?MWzfwN>&04tmOGbIu(q?wTzN+<cXgKaxY^=Ae*{X z9geIY%$XxW)<}Z9<wQSBv#n9aYgh-yhSbIoQ2-|@({{}ssUm9DFxrOf;B^a0c{s?R zV0}uN;~D6s%+6F2QX}uSGU}Uzwc4#nYWvgImF9|scA3tSPvaMM+iw6spcnCBpvw^O zWk=vZCqL%$@EHJ+q{_t8(WqS=_a=BJ4#$z^=E3>G2mZc)C*CPYbd*?Dr$g15?<?H6 zqxX-X%@q*YZKF!e++Nqz@*zdt;Sq8x;M`X<+AKqpN(=HdeK@)pH|PIn|L&vNj>^8Q zMlu$WfgE@W+4+H|VwVSR`QCRlT*|W_bMIYned1!7tZMzUaVF=Fro{W$ZNos~T_Bbh zm)Ch)C&++J7=v+mPQg%+OS~`DLAx>Me8c2L_H2L0dk1Kp5@zKaMip+e&5%IfG=YPl z#pzY~eGK4Ro@SxcuWl<)?5>TnMDy0H5JEw~Ai~;285Jx#zapyGltn%g?HkT@SpT_S z41me5xsEH4=vMW7nky2zQdZ8mu7Cegplr*ejOjk(Yj&*It*!bq%>v-XVRCd;G95^l ze$3_JUj$@_A$6N%6tEv`c5luhAjQj33qB9_1puUy5nmU%=N4F}IKYL%d24Fh9&x<O z$bJ<?FPw2qQD*~RsO-`Ypu$=lSfw4kYXBi-7nVQ++Wg>q&*-my^nBD6FzVt5qj-Kt zw+L2~H2UUvG01Sae^UM+Td>b{EY+8zPKO$Tf56)TaiL_SO2jMF9q_WxjQwzVB<YA5 zYKYWO(95gKs2aj({KJ5RzPQw!?zoXg2QwmLc1*I+2m{dzwY2O>+H#1gY;~U1krdu3 zz25dQjjihEyx_O5nguZm#Oi4Ljz-lcVRq0GS#U`O`T9V4#~t5RaDG&`(yU!r3Pxix zw(-_g9_fo#3%zbfL^5<?n@>CZYFQPrHk~cQ?@Rj&`l<DmX9go-?6=<uu!A#mk@B1o zowC=UJn)YJi3F7tVO*AaHP{c-GoB{~8t30RlWWe4?L|RVSu(vA4F{o}#vWf&V5$z? z_#|b+Hu~NEO7F1U=tT})*5k-Ne%BBDyH~GUbSsqI(M1m5`;%vZ#);$DV9J@XZTccn zNHlxn)19FL*Ad%%azo>?Od3LzU5(wK=sbPz7F~ZdIw=0-&JcstImAee7Fn&XaI7Ep zJmVvWOn3@>IBCg|oEdY0v1ck^EQv7s<BmZD*HR-j!<b4#SJ-}F$L{n<!a#`2qGO<R z$3F%P3LObTsU8l{$#5OzM@?fYiWvT|u?;lPen`?otRs3Z!skPxX1XH_gDOe;l6c%) zXV)FJO5Rr%PIgA1Z^zfax18&LM*jKfrz$$PH1hp+ZByRfp;G5kJ~|;9n*#Z724C|> zpG0}!41k4fmw_?FPiQj195TB>(W`&`i1>$3t}4hi$E5Xo3gAeYuhP5f1R>Rl0HI4w znGs3*^96B|D<<#BPxq5~weO!JCG5iy5HLTqr2{bCwXJL!fFJ+p&K-_`F$IG&>=~{{ z0%M#~l;Y;d`or$PDAC6Zg!Peqk+<DsKV-)$xZVP}v_{zjcg_?*&6HpN#<`I48MV)e z#C4FfO%e7avU&lQuZbhRwUqTFJ__hWOGHjY{bPpKVe*LC-M;pUTY2YPiL9N=Y-=DP zdf@zlaAcjsti$da+d53JJydR)tSH~*It#fQosPZ*MHGdfTP|Tv)QOwpmLO0#^hgmv z>lp7jIN=C9Lf@{ge+u`rZgzkfWzO^l?|ne9D%oa-vi(xvcunvn2LS733^yNS@-dc& z{xv|H)oBM65x^hvdrYiqzWwkr^Pm2N6JRv>37y?ztR*R>e`bh)WQj66UO|DSqRLhM z&Y^OqLvn0ytkJlPbdj!pZWm!n1qK=M<IdO|=|9TYGB}s_x5ok{8&ds`EaDN7V*8Z7 znN16i816}_PsvE3*6zt#uK>6mAIQN6)|hS0AWs>ltfPNer{k$8X{+NWm9vxa7DDP_ zrFm_MuQsMM>C*wL!*>9Nso<<v>e%wiwNb!zBQCq(*gzd73S(IuOam?ic`|?wl|ts0 z%akET&=O=0a6s%I@+^oTt2sti1trlDaJn3AQ3fCOFEi0{M12m!a+W&gG;N;>>9&u; zUkbF@12rO8KW<A4C?|q>)9+QEBQI&M6-{ck5B6x}(q|*~WxKqP?&7Q{Kli`i@DnNz zeh6@+#|pYPU&VOuWXiv3Ci9P;*c<<{0X~wRFTykv+%3S;Ue>hqv(Zjb%wFl7^Y~7Y z7V+Ad20z^|l%pl|i7V>1?+F|nEh|~v@Np~CmIe6X2hXjx{=3V%*d4IAYOFc(v1o_g zk*w#DE$bT`4Z-|@X1MWpv&`v#7x8lRsn=k1vcZi~VH>YMj5ViPy!{ULxYrG)(2|dJ zD0-H#%@M32tP4&O$9o)k0>A+G=n-uQrBhTW=r{#<SEm&0KxpT3hX0t;Jg0tA2gaKs z)p5y02pF~3Iz+snj6))+N&pi@K(|N)8}^q+3ga{zC0A?$z{GK@X@XjrvSqf{*8dQV zORGVCZ3XUY`zl~<<^}3s{%*!%dpRAD(sB9RzX<43%&rZqYe_xG2n=s;pnE9)-6P@e zy;V}<TI$66_xz(kUPG>k%I)_(T9~q*Hx}|$9=mjzn>1iv=vCgjh-6tGX_ge(V$VLe zeNli>?(yR6z`XYUpMFGl&m%2&c0^sbbF_)JYU&^nr2~TVPXKiwizat*R=PdeD2nfs zQ!@t_Im3%tv;*E#HLUtSkJd6TO8%`gV)`Fl&OYQ=%CZnMYhioKzyuw+4u1d`b5bsS zH$)|ka}}>EaUH2Gur5V^9sr7F9x7-9dU;L4*SwPKlc)m%ra&vNf1Q@Sb%EMVOl@{= zZ~faaaA&XB$4+Yt12|)f1F7GwHd#mJZOtYDBgp*Zuy^VzD{b~U?7Y9WyR!bf^GzRj z>FlWkdXQ(^2DsyhT|a*D4wVN!1gN8A+A=gkH$g`#QO4p2ecq~n?=9wM^L_tZ9Zhv6 zQE3o4=80T6;T7Ur?URQ(v<3@Z{U~{L?ET@cy02R0PvZoOw{z;NXfi~l)I-@U&uYQo z=VcZ^*7LBnd;a0}Zh(&hcQq~sVYrT?8g5&-630j#W=!>}6w{Q8U$0SsnDgV<p;BLB zr-Gb#v)}F@b2NS;nhI@(_Ua7XNs*0}w$jJ(Fhk&D1kQ+}>~*b7eUvEgWmK4wei>x& z1cIckFm#N{e{>G&u#qzz2s*|A%(&}Yt^Zo;*2qRHJ1W#Ysoe$IbqmDhVECVpkb4!( z1SvS$TmP5Z%x-H<kK+hfx3HHPL@hdG<J~T6DSTW9Q_U;uzq7x=wlLF?tZQq3dB-lL zbstv|@PGCQm&|fRKI!t%X8_{gR*9x&GAO}zy7C84Xodc8k*^%Hu@Ezx?fq-*RnF|} z?o%)=*zqpLRMxqp8sTJGRA{Z}qzmPKXB<nW0Op|^=j*`jdQrODZv<c#zzow&AGLio z&!KbZ-}O^G1P4Z)07UYs2Jaf~F&Op)Fv=X;K5-ml&nyIFK!Bp*Iu)DDe%UVY@YJBY zin1l~V*3%Ds9S6@a}gne3O0G+FXj2?*a4#C<m)<6{*xHxxufoz0QU@LQj-!@M*=>E zNk^i-SG^0p#>_}NzC```rertR>Derb_JiCJ8yf+Dh5fB?cl6OETb+Psts8pIU1E#e zPDj1&Ez-KI?02v|tM%W=ROpCY1rM>E6uD%xOV2OsNXpngV0rj004;3lC?R>so)pxG zjsN@$vq?mFWUZpp>Dh6if$djFutv0QK;@oOYR09B28qxxH*I$4?nUxP9PDaL^8Id6 zARioK%$9UCyYKfY8;|YfK;M7=8DXk(?GTdDvP$lJrq{asSEKGoN78<Byr1c3L!asT zxY^ioz27-5^d%Y@qcLWxIuY2n7)d;G5tKnJaLi5dR6ha%otJ#L&IQ1s0e2@<qBx6Q z38tzo$>cHxXPqz^X%>aTWt6QlVi;>`)(R0i@OTdoEUvnsfl9A62!JH&^;Bn3ei`9d zJA&cyHQ>P0*RKPPcrcJs-}DNsC^8WQ_0P4`ZN~iyr!|wWcXhAQL|b(PJa8O?Qnr@^ zowov}+K#3Dz~x~9fW60$#sZ(#aT+`U8^fk7=g6Pu`~ETQB2t~@o<qU5U1^m>){gX= z^V&m@M-D9FqfaPf1th#v|GJz+*T=*FPm_7U_T3ooogLs{Hr8_HgOutdx4$3!*)#g^ z!#kP^MHsq>wvk8&I&PAf)g%X>qfM^Nl!4q*Zfz;xP^W1gUpN4eXxNbkm`)*rF2#sW z7Y`xm((dJx_+BFb@X%*061-X2;()#y5SYh%W<my>3sF369=I5Yi1ieBsp~*kB<@mD zh+Dz-Jk`(Dff3MDSp)t_!=aZYfeEY5eWMD7q|lGfg~>Y1sSc*}iI%G<g3?$su04tL z1x8zyFNq?J{7A0K<m)(NlCJEn{~WyK@2j%}t*FvT%J-@t+R8agcy~E}rbDzZz$Z{1 z`V0Ww(Q4GBy>R;A3uO{c^Jjsmnb;$aWM9OnWJniP3+r|5yMjh-B?~$YG)mW$JviEH z$Taih2r7`ie!BLfKysKH1^Rh$uAEBv3%s^0zz6Avf<_%^tJVsP(Qu5&E%w`aV%^HW z6h^}cV1m7Z&Zl2y3la3IB!?Y<o&a6F2m9YEIH%6uB0eVa{d{z^E_2Xl1_v$b7P#Rv z$>)7z@;USaXyYEZ%>Zh;^EQ|57vi!Op@KUq&LG(Vh)|f8Qi5Y!WbJUyGC&^(?SlIG z+;$G0LQ{$v&vCKrjjMv{xaM&eqGb|#0xcXDw5xLh26=rwIu05~o$U3l%VIeF8dNkC zcGmy3f_C&syH%if)W=}m%h+yD1jq@Se?Sjd9(oJl1MY2xz!I6?&;Ne!O_GoLy+GSz zEu?zKtnJzqQIn>|i9h1hwQlE-Gmq7wzIijyRztT!v0Z<Uq_40Pqmt;W!Ckex4+z?; z<Id<99hG&wB3OTniOdNHP+_V?JIfd59HJ{8R-5+aXYy(sC@OzR#!%2Wi}Sxwu(1g4 zBhZZou^Ljw%68TDO8o~w73-V8d4}AVh^Yig6S{P<e)}EADH5m#TGoHDRCwr~tQ?0C zx1JJ=ji%l&{22XMHu_F;04<7RV_zKvDbU2obc(7>oF=aSIY<mVafBH7D1V$+PAyR{ z^s;Abpq~aLb*?+RHR_+jHUMId#D}_~kNcsV32-Rs7hM0Va>NcDEk}5@HgbET=tq~s z>ldwk`tH-uHvm8rG4x=X><bWO_kYh%a{AsELt`9bOrv#9OQXwc4*w#Ftgx#rC%(I$ z!N7{go`cRHC2tAj?qtBymHRA&oDEPTyyxT#Km(c9j$X>=a?mI_ggtpb_|uPuR5O}U zBR%vZ_Y33?MohISJDv1&1AF9zds-6eV?W4&M7l=MUi)lDIXE!(F#^8W7b$)+I%ogP zF*6dS@{{hYG#H$Sk7<xe>-)@-t#Q$wc|SUJWrF-flO+p>-A;{OjY_uVpmIp6#I6)k zeu+A#TMl?#W>oJ$Pt3`hL#3F#i(u`XwSu4K)%goQk%k^#bYxWcG{+?I6L<FzB#Nt4 zQ^NYOF%TH5w0=NT@6o8}d2a~fOy@uVdHMCPpMxXjIv*}&Pj6*M!}@PNhiq)7u^kA! zyC9thb^cp<SO9R6?+k}81fG2U9e)%M^ZQ@m-m%0*+fA3YJ6*b4X>|M2tCRGoydj-P zQSmw%TIaV=yxbP+$CR|}wrx>pGfG|B-yKhFmopG8%``S);iEh|(e!d*Hd`Dh@0J1B zUJ!(Jb6;YA?ubMHfXFmjNe=P$c44Za8b>@YF#T)owNQ~@RwW~t^o?LtLVbvUg&L4Z z2zmr~kS{&eWeF`JSBc<8vn!JNrOpp+JQ2>NI6v%C;0e5lqRch~b^S-sF)64KDQgu^ zhjVajxaDC|Dwt3j)6om0_GdNAR0QywK&N(T%&|LrAst)^br|}p&Q$M3qW*QyQSq#y zN)XmG`}n{}QW{k1wv771HpRjDqatZde);upbvS}G?@8xND!&x~*t^~V)$o1e@!_^@ zE$`6-mxn$C_}+F9aQvu`8CWwZbKMeuc-}Yp!IR6iqZ71b*<9<QSHT6?(h*Z;bsC(F zQP*a1jfv?R7%-y)hOArQ4FBu0A+2oP;@B4_)Wrxi-`fKR4Z*ff3$(~(@A~@wzx&9I zGba}!Xz0lLpvK*1rR-ZfB(T&cQ?iW`T9Eq{LLoGMjZvmMYMOUf;BweajzlRrTC3uk zrhh5)#%y{m(y4-2Dx3*qPW~HZ(XmkBYi5W62uP4$h{`^=2}jkTGGUK%i+o+zF9ooe z=aHS=sIT+L3_gtM?haG<IA6|JoVERN{tW+79aH9Hn(PHC6saw?79}-T5Q8I?bvB9+ zc@G5$ZA*Ptf^hCcu!f*&%(gGL{t*y#hoU<k`TmL5E^-M1a^|ATWQ><z{cC#Q^1uK< z{{LGB;DUvw!`+r0q){)b%75~cbl*}8C-Kq&uR#R2^|ulfL*l*rf)d-`Y>jx5wTWW0 zavQB?0Shj`9bT8Z(mU?fAqfQs8t$dfC~M{)fE4sEkF7gtTJreoAK%gU-+xa2Bh#fb zU<^?|V#?kCo~9H-gb%S)n>CsgC4JX<V2s4{jthr+>wCpu)C2)!)Mri4N-(qp23lep zCgVw^|Gi#|;HdQlL5BXL{Wkp-r$;I6tTIHt`{2dK7v>ihs?{kv6h3!raFi1>1u)4` z1|b5y<>2up^WrK)0gR@r0t~eQ%nxe=*OSr>4x^F4gVKStzv|%xoN+Gvd`Q`rRNzK_ z#>D7j=h!8P2O?i?{dcx5mjJ#O8oY|=%R1TNQ;BX{Km14Zz~w;!z@s-FeS7;Wuyi)v zG$Xft`Qe+}i+_Ss*ekjZn;rggat|s;t|cjg>1ZBN2t=tX-q%V#d}n++B;L@@U}={Z zjVAyw+tH16n~qBbvlPVu!RMpn({1H^Z+k`X-JPmaG`d15$eOK2%77Fd2skIr{P+;Z zbS(A`9k080ng*E1lN4ywRRZu+)%m9m<TO7e(8UT=k`7NttZmd;lJWEob^Gtg12Yyz zT53HQwzKgQ@5P+}_#ndccW|<V<6)NxhFN`y_aljIK#t?Ql%N`T*=XRri?4mx(ea;- zcMzV?87hr%n;bO2J<zSNPH-^I&u^W;nXYyq@Wti~x~x}`E{To#c4h%HJKLe)upWc@ zj4x4hInIMfoIiPW>)-kWeJN{%ikdhGk%oU|UCLD-a9(WZy!LnKfy;vefTzFuoe$0e z{1JhbWLrISdE*~{?+fz_?yXi-hZA;Wf(FHXP!OHc^^#@Ej;&L?BjuWN?)Y}K_UhaR zaNut#;P%Jf9@{dbK~m~p%Y^KeoDI2qes_68U~wpexY<|ZEntmZEnN<cM%-%J=N#EE zcmcH6N;Icz(ZLacW1f6GQ@~D95I%H$NjhAn*#|)8GhOk7_BCCV5&^={kxC~BF4&!b zMwBK$a~O}{57PP%qc=UcSeKZBhn#>X11$f9^f>(m_AU%z7Kf<LXSl{xGh!U)s~_dO zZuPPdZlgr7A%y~8rA$#?<q?RFv5UW@GIUVSJs4q$<I4@#0d!RU2^0+IH1ZrMHPs*O z3)&pCS$SFDc1<qTR_@y{lP!!bz4!Fp|MydR;PT*a0({PL$pR1}>!}NuQ~w_g5w}Yh z<T)du{2V$)!TsRZ5**n*6)n=vN(XW+lma7&j#j2o(@m9!8e26==%lalxKCO2gO?_( zM)?^Gp^Uh_vX^GV&#DhKTHrGPcy`&BrR>PiDM9_tQ+kw-P8H4<Xq3!Or%y{$0Uc_z zhvQ^|a3%D~UA>@GNf&&+Pg5>mQr<<1SjC<A<cEe5W$<FC!AD~!%Ts4fQkyY9uoXx; zhN?fBiMXu)d2(JO_scKRHR>nn!-dX#t?`LCOm&q$(HetWdJ^0F;0p9(3JJ8tX<jRW z{FE8TYpnA&u99tAks>6Qn`_5Blb3;v_qNjui{7OUzrr|kw5&rRK_~o416@xia(MCb z>z@K2Z!2_t@Q+Ln{<JpIAMK^cc)9<GpVDhk9vlEXe)RaCp6BKAI0OSE=8qmReP0j$ z&1>X`RaT0ya;V)zx*{qX=b#uz9VI&2SLs|kS^axfX#b?f(&~y7AW{}9ububaUOvu6 zOP3%+uo%~pwUG>JD9GM@4$*Qd+k3d*|I=sYK-NYDjZ_5&JPoVfMIfO4Q2kVJFq(3R zY=^P-J}^3nfdY^$0E=jl?OyJ$pmXI2usDj&K*#5ZVVq<dW^gzRL|9DJ)%a7AS{;>+ zh_5{|!F&vLZF=8|PQt(X5nLfrvK0uB2miqh9T8C+TS+XiczvuKYY+^7DCvS{!y7%% z2#z`Q%I~NiB3%hQoP$ifFvnZ@3GiZ0^-zAk3ZTqZ8OY=yQ#c$ck<hDH|HzM-LvTb( znHw;>u#tH?2yLFp#;$i4I?q4)7QF`L!2!Uw4RGEM{GIJHDmwq!7oZl?UK(;WnV6p5 zYo`kaCvcZ8trg)2s(jHBjT(Wo!K+7UrSGx^9@0cEdJm0lOBcpC&|EC+ym+n^PG7q5 z->!ZCoCSFHku+c^%B&8GDbF(+Ri@&M=K?Q3HO&YNI{DxrT#!oZN@!o#f;-dH>3MM& zUF<g|8I*$0iGq(5gNe=!-V?R%fe!Y4HI38dj@ow=+Yq9Z$fI;qlFo_KM=JY8pkG1= zeWJ{yeh^zZxD&15h96jTY^(D$f9hNqww;V-*gKD7o`-!u%Yd?{=kwJY8(_PBt|xXc z+XV-dRR#y1{a~%7$1kh(PayN2+~~9m9l36oaQ!0~2w>+VPoMs0|DOln|KG}M@nb-b zA3y%qIg<E5b&<dSCee?c*!^t)E#;>g-jrgr#oO1qI}u~3?~bXvzo!uQ+2`;0AdM1@ zBw1b*c&wvgx~lAI5O&94L2rqs7vr#^8^%KR=jFTq<A)R)4Zm&XXG^PEv_kM?20Km3 zA<CrJr_G6iJ*BQ6Xw(TDpgYO(l!rweRQAW6aHp@sY3M$y%aGRrIA0>GuYe@<Pq#lP z74scZF8f}7jLxQnz{7Q0Eae~9KRUaB9pIWj1R`#X0Vrr^#KcxWfcoeJ6Erf%AA2Ct zPMJ<oq-S5c{*NoR^<i8BdLz|UGMUruR5<j(YX;yg2iBkhlg9A|S_I5EO<tHV@$3-4 z`t`q}k>xJ++O>47eQTHb`8Vk`DX#?p*s=iU9sh5tMe~DyUP4qZJsn*jSocWuzhAi2 z%LbF(R7W0ijdtYIrKU=ntXUYH6UWqUtq=5f6!r+HU|PRxV3+m*6uwt5YR-qSI+?ce z;~(8!{xkB)L0dW-&XZ`pZagts>g*L}-90KK_ph}@Kn)l<5O9q=+<|pj1m(#n2UqrZ zfJ>+f$y9Yo4}J;M4qFXGX)S919avocvhMApUclJ1f5!+89k$UEY$_CQxQu!IoBV_w zOpZoyENVT}44$$^fT3Fs=C?^bcGP)P&^e}}be&$9ANcCqO_Oe!Z0C~gn$UXvdPN_T zRR*%GK?PkfCY)cOL7pn7E2if~)_?56@vYttSRCPz`OUw-`}7|^{NX<>ug%W^|EvG? zfB!q@!TAoqza9MRCnWAu_7jI`|Ljm#6V1?eRX0yO8W4|-sw2D>9S5^fjCd`pM`Ch@ zqDG78*pC%nZ)yf!R^P2Yb?NXLWv*!+SzH+$narIto)^FO-H#~bjor_LIbO-NlEeJx z&OV`<yAH%goo06`B?IJh;(Dw8q0<fj8yzACa{fq`yN*DBxi^Fy9p~kdORv<*(p?$4 zk5}Q}DQ-BwA<dYmAmTE{^)f2pUa;4keT16W^g@f>Y2q1<%h+;-TtSaeEd^?{FPcfp zi84@kODKf(5-rsDKd%3@9Tn7344jO$1n&dDtsfnWsr%X=6fN720_4bHSC#eSS^v2$ z^my0i7v9v{s8xVA4?&&-UHT@yM&-2u09$$XgEzm<?{Crn+K5V3)l$dqEsShwL(y2M zlkcLvYk;CC8m&*i7r?;0jEq;xxuiwh{=HA}@i?{etYpaZ1dUc-c1w5guqzrd_aJFF zrb`y!uP`#9oe~Wtw@#1=ZBBm*nF;(-a6W>xHkIXR{3Pj|xJ+^E{GL?tQ@VFbj9UuO zHb&M{4(>sznP`b1gVBo%)C0p$$#H9xD&eZ#8FWS4;@mZpSB9Ud=o(Yf6CEhAZHev9 zsXdoLMM8$TVU^2<A!i{O#-y=P>V2V>$!roNq(ej*;6o13<jgW49Y1Ud_GzSK2!Xva zU}<zej1dKX`J=6YF<@SUuOCo;ne~6IefJ&b@S6S4_5thM@!dC{{^O_b(Q8y5(Q8!x z?LYgU{`hNu?`vN<fBawOd)FLTagg^&@o1fE(f5lK0~7S|(7ya#$lYxz<omnyA^KcB zLUVL%U#4ulPFJw%-qQ)0|6l*5&`<x&<4N1ipwrR|OlV4b=Po%LOF8meb-#{(lqTp7 z=lZ;0P=qnlrTfS#aM?1L2e7o)ks=pS$2jrsc@6^|CJzV49dHfx&RQeUd>vaTfC|G> zKF)EK82wM=64BB%{0e=nLXAFJV9~T5Bb{kwSvlTBCoeE3ni*k=oR$HF&j0+(eWt{> zbGWQ0$#9K34$!ALwyG1R*J;Z~v6BQ^uXg>1Oj1W{=iZUh1#8Umt^e*n|5x9j*Q~r& z0AMTc{lR;`|MuT|`<?U0x5q@S%TedE=LFF?w-No0b44CbgFY4@(eZ8XH_ErF(<|z+ zF@4dpH`bwE8s9^-`PibqdoJ|o@rmC2;%OS2<TNElGSQ)<ag@XSixU+JAj&gN&NYB6 zY2>6v2EE^a66+N+Au9>=GX2>$r&+OMsh8T+qozz5-8LthQtGHPErqFy&`49>1kLXB z$G8&!knoWZcu42#r!M5VcjqsqTXoi)WYt9?%to?}8)RG*flA{Dvt!onkHFRKR=79m zhCZ<C62mo#9-AoGRk9AVfy@dzv_IA_yYp(-|Fya=%4;PjKe~JR^dJ4J|A=10@>*>H zXyL!+Up@bMPh{=7uQ_%t*Y@Q*r&rQo)I{(S>4)^!b+MM^nzDDN?y*l@wjuW!QTXLP zq=b(gTzr|VLLRSWe<jMEfkW4>8yl5Lji}!L-k*L*ch7`!lqzQQ7P3u!5Z?s0T6ten zs|$p=(Y+@6!Rd5;LD%7*v+c!bu#)G{MhM@!M(L9fb>l6m9_v5oJgAic)8kX)fTlV+ z?VA|0&fGRfITGm6>B2d2T_5RfcREBA=Y10Jb%KPoJ5he32<j-yB^@9F-pp}^pj~jh z(^*S8&k?s+rX-B2#fTT2g+}OUTO<TXA&QS<!ATVyuu$rUgNhi5r_}$)y#BMDQy!~q zZ2@?Tvsi9VX8p7Cr#Bw`D!rzK=`}6y{F8UyK1=t9=Yf8^yN?d<S~&t1uBGW$G{T}_ zKIA}`Jeu}LWZ!GQd!6bb$+nNBp8wkcEHy+J+2T_S*UmY}!iZ|y0A7|dgMnM{{L0V2 zL0|s4$0X7EFXZF-!!iQY$6pb;KKIZ}ZL~<zJHhcxP8jPl0F}i!<B*`l;bQnI&2{YO zyuH|W&tq)|T9X`bS`r3=tiA{e;l?_SxXb6~RDiy%N$3U2(HU<^x>T6?T(`w^M+c<Q zQK?PBHPDZae#j1l)VW{p9=pW;Tg`5|C9ORG7j}K1lmdYC-=Uv;ISk4fnD{A57>}@0 z1I?FP|1rS1k6k=kuG!`-?f>*Y|L=a2UgPpwW&pNwIV>UcAD%zHhu1M$&94K_^|0=> zvgiC2*^PR!J|1{Ga)56o3llF<<&nY^4>2YpP;X5;ewUqkKK?nIg5zYF2Hf*q0FiDn zNs^&|qCpC+ah-N~Zsqcd;OAm3*rFMXI~>p3yYhpOOkBLH2}jX+&hJcRu4IrRjOOh6 zreiG2aTw!FF#>W$4FRDVf7EHe7o%jo8ugn~edp2XpitDLe2yXOMvAk@U5hrs@w^K# zDKum4tHh`_6zI#P+i9Vgll0LFSpcFi7XiF*uX9RA;5*#RAIMi51}HcW-P(eFB{3ox zFfVT3YlJMZExFCRyqksb$%&KQFWW>CY2i)PyH~sZ_iavhea{EntKNw|;M3i^ue<Z# z%4-V%wz7eM^I-pnXJvY?yT3aTLWj`Zo^y`-ZtCD_-7Lqoy{O<ccR)(yFIV=M>q%Ao z?oRe-;pO<o@u*0A7zmduw_C}NvUa?V6@LWOd%;Ei?SGr||MNfo2;?8_(O3!mPv;?K z0mkR9pX^~iICL=5EM0Y2)9=?F-6cql21#k88!1sl1f)?wknU!qR5~O@x{;LbfkAg8 zougv|27|G8et++E?f-qQ=Q;N|_lf5|>rN47Grrd$!J(F8Ad#DHK5hk7Dkhe<=HYOv zp#&Dr<9D|9DTTitwA1gs#3s%{((O?!DmccDnY4~RnV1Rt#Bgw%#nJ4-s1krT|3i&a zMV96;-?nS_PvsKix`XaZVIUn-+Hb5+3Hm<mfL|uJ4|bB2Goa?|uhh4B3r;=8E(W8& zQ}AooX^NaKUp!M0w6|=08U8Av79CvO(A$=9MTC}x4znrl$lY6IBksVT74dfV$`u^~ zpe<`RVkk+}RX{Mfi|OKpj1l!;i}Cr3AW`r6J#+01E93fiW9fhF;z$~#Ij)|T<XO$X z<Lll@$NM-LG)ZI0QdZlIitIl7<H7PovrUpehVuo-Zd^$4EK#%(U;VV$S?r6@s0_0Q zbo-B7OylvQfW-tjE;ixEJcN_SWY4Qx^i-p`0Glu9pYmF8W%S<6pL07lOE*?8>`i~a zUHO6${+#v$W}MSb4dAr6kML~eb|z>qq(^h6+L3Hof4Gv)^$0%nkG3Y8S$fm7$8{j8 zuZ{lpM8{lC#jbq*yvmJz@28@(jSo+Mi=fpc68!XXO>X`cDdP~LlUE3<002x^Z+K2S zz0$8Cb6!{i{VQp|2q}QO9{o9cJ#C?hMQq9@41Kp#u+!?UVp2A-adKv;7K>fCkt#Y0 zC!XKT(>0n$5@r){$ip%zd_R=37d6^vL}1eY?XbJ#wQ;W9E9MIP<Z>K#*GA6M5-)Nq z3u5-!bG{DWR{uv)yd^j?5Bi6d@%ON0r5i6BQMk%LGX)&V+j2ydR_m!;Owwm%m|$zf zG-)_V?nzk7>6no^3!#S?1s^e^_hZUmCNW##MTcxyyOx_k0*~UYjh2}ESGc|lWujak zbQcb7)?zV3foOwys0>r5uPticns**T3+Sp7-tcPAyD`&4Pfoi{l+^`)2ZW}JQ(j-f zaqs4Cww5Yo9U?Ig-`i}};=I#idg3=AuTHg0WQIBA=Un<BnzR#CJY9^nS{VbJ4DC7% zPQu2Az~SHK0#*t*p)H_I+XUKY-V3<+AEbXcG!_<lKo`|DMfE9}Jv_O7sB4A2NRnj{ zJ0R1<eU#IZxA5Wx|C#cce!szvP*u7b1P8S1#~%p%;9E~j+&D2vYHFJh{mLPHdqR%` zKq_)!qg9#W+xtH6gu^gJgTI#0L7dWI@0WR-B7g%Y**I9O#M6pHF1#&e9W79u<fBz@ zikh*Bz6z@C{C)}1q=>x=8bVZiy+<<XLC!C5kg4hOCkg<~p&;<ts$cgNqWfxmS5Xf> zm4EK042~^CydX$at8&<JkXqilU9TeM_11gV8)q5xkQ@7xf7fmBnv+G&ZG68^;0p9S zCmrFr2;w{Af!sxz5^&Ivr)f-&G%gp@ij2z(W$qJREmEl371h*dC<I*tcjKp@zVO-o zRQ+r`O!Fkx{%bjn5=6Dm?NpxAZIb1|367c7+n1CyB7Yb}`%`S~_P$BAFc7Q$X}ol( z1H1B|&72yu`T_LQnYvitHpSNTgK;T}9IFIWz_=%^UK)cE0qbfHFGr8#1d^))tETgN z?64owh;QoTPLKMY;5aSMyPejeFT3dY-Uofn%SAiy-=lAX^ww@gLt=)96Nhjzjy-z6 zl3ia0pV}o^8z*RN>z8P%Z2Jp7zzBH^he;509m7BT1*A@*eUwG-SBCLBwf39w5}b=V z1!Ju26i&=QR~f7Mc}Un+Bf%keY5dk@tiIE$ncVId8ebRw2E4Yzo%S<L?;0>Xg}>;y zCk0UVS)N<!m93UrJ=Y+4{gw&ay~kpzptp=udM8zKP4vX)g-~AB42b$#<L29a`f=o^ z&!cJsj5VAdy_XbQAM5x^(O5}7i;TBC@E<Q;;$yX;d1EcK_8OM>&wn_D_Ni;*`?kAe z2<#YEgNvJZPtTd|PNvZp`z`z8uM{r<%ENN#9XT-i2n{mJLf``p<E*m{P^n11gyU6m z@*K`Xj@C*D4>*)|Rc#S=Sq<Dc=itTx#s^w*1ExJ)MigL!71Ia2$$eW=nV@|)h;|vZ zSuIe$ptrA$2VO5z-`OMP<M|=+b-X-JK9#|2JTUe+lrv!=KF}s|Fb8)$K)j~md9An{ zdDa8B@A==4nc^N2v^mlQ+p}@Vw()k<64_Ht@7vvyB00~5V-wTnM+2MUy$Gg$d~vg* z*8&8lwvEeJr}9j~n%SbQD?Rc>bDP*+nwN?kXd9c4Pw_v<TkCwZmHtuP#DKLEWKs6U z(iO!@viYEwVhrA0atnq|XP=x7+2aEo7RLy(gD%YoaZe&hJIXJS`}f2^Q`sf#?D4Tv zzRjkL9q;40SS%oHLqF;m4!;i)v%rz7lofvE+dJ`&baKN-q8sMrHjx4Hb;k4VyM-x4 zx;hF5nMiyMB@g4k_7Jhwm~hMzk0BReTw8$r{s!n|8{Vc@dygYdsXccDe0WnlDe{)X zjQ}fv1%K(|i-92qcg{*#h6s&bQTzaR`ls=4O?iH$NGGX5c)POG@iU}9hrRF!RW#zK zNFYft^v!-Y!9keSsf{O?mWUH!3$5=asz#urhy0-d8HKj~A&_9;Atc!Teg!^1f1(*| zX?Qb&6<Y1QgzXoMV1f?bk$w4myfq~X**uO;pu^52fmxCM;fE*ZK#o(0C#eWPqm!&y z*dEyv>L;^iR<#V-4#h7LGw<iXp(X$wd?T`&SeiI<A=P1)_FlX)8+^&DhdJm>I^8^} zvh4_|Xn8&v9?B;A036o2$wi~S+MOLy;j7?z8Nl^GJ~scmcWi));5=Fl)=(8(BY3;I zj0>p<rN#~1Hr9abA*0E$jhD!Tt9==9f`MvTE8!zRR3mEuN)7;Ew6nbSY@Hov|J|Oc zAMIEgp{<|5=7p_cqwGBL1xL}A#|ng^>((pV0_)^$z`o)FOwWRQB<-i4a=l5A_IzDa zqUPWGD(NuoqyEDX@Zq{?<ZAqQtOm>@+cK_C2$c~`>J_ALmI1zsUv-zGyEPz_83Ao+ zdEzo|LLclvFG{E%0<hR0SPlViWZfi>c-i+7sv2}<vIO-x%0OdMJcS12fZ=BKLcxfP znK9c*?)~qt^Qx`!8~9ni%IzE8%GcPr<(7XnGnM|ME^s$}xuRn2eI--WGdJd*0@J&= zG#UZ$J_eLku=>_ciqmnAx$IJf(oYr)piKiRE|sQGr@74N(<x|va4A+OtvqWFL)a4? zPhn`lxYoVtP<Qoh_+mKc{<YJ*6_JaE4b5$0Upvn8HqdrKgTM1q?=EV{rXX?5B-HBe zFLmHuA0I6DRIDH6acR<f_2A>4WqR&Hq*nl!26zv+RrG!!7Wp6qUz(@Pu<yxvQ@8uL zX5?Q9uU3k@XrJXTaGuVSO*&;28zGldrP_E708-R1uq)#IUW<eY081}s?CVsMNn*uN zAJul+65Eo|NqH$Edb9bZl*XG{j5O|pq@Sn&a<Zh?mU1?^DK+-)(*Pce-h$-(gOh4B zW-YHNfO!RpCOw6prj6qPCZ=*IdOT-{x(ArhV&$#iXbm3t@wHX#Q9nWs**cqV=04w7 zS>jc<8nWaEze%wI=_=jEx|u7^5Ab7!3V7~Fe2`es87E^U;3<%h-J&ak8j)k=?gys+ zP_oa*mtA8Gu8^g6v(<ky(=X}9T&Wt_noL#s+oN?i-^PMwI|hf-&-nfx7h5?EnDu)W z|ED_iS@aHvq3fOVgp97>d!lzn+;bJ5w;X>j$LlHiJp?daf8773#AL1K?=D{E@%*6? zD-;P1?7q7kKTt$l-k4(mXb!SV+LQXYgH}h#vr-n#N^)2{tcq<kl5h82K^U%ZevQkp zc%3tn+19$8v2|hfQC|3&<`U@Ac(qsxGSK@*-(zes^wG54i=6P}iy%JiN7!ZUF9xxR z4mt+^d};2Mgb(&a$iv^xb0Jbj7e!|W(xqj2_^mk;AL}z~x-zFmlK)Y(vsB@dAxw84 zn_BqoOI4TZE&H^LpPd<7jAZhlMD;OqW$&=4;Bf7Tl0Kfml<aMdy1OcszjcS$vZ7{W z=g!XKo`Or^iyZhH$gRm5bWI>n4v=q$9p;vuwmlE)dhXH8x?k5dADpy36h@6ppfi5( zlC?sU(}cTFARk}{6_`fyXBUO&O=3hBV}wu;{s5tbfynu^PYi>9%)RGVk(<$=4ddK$ zwn%)Iq6UvOz5vL(_Lha&18^K|*o!*sxJ=p5k)KA!-$yNPrj7=Ls2HUaNj<T1qZ3{* z>%OA`O86Dxo~2+BGMwJC=tG?qVmA+;_4CyhjPS_j#IG*gGsuPzBRm)-498>>WIm1! z<mp-hiza;&jG<hyj%pXWG7p8%MIo+>`A0f>SAC`dI)HaIXktfxJ)pq@x0Kt57hL;G zl_qHG*cNXzGZ?;)-q|nPBnVO*gSFuSOq=0YQ0E@EJf-fgn8rkn<)9L;JIsWLXpMv4 zn(%y0@kU}}m(gjIv*yVffi5Ydx8WB$JcSHnT=2QRNR^_}^o=NjiiXj#^vQ!mV9`pI z)iLK1K?Wy+I=pToz2_}m5k+{`56jUmYhh-ZfV{Q=W+kr0aF9mQM|)CIWmWXwk*5H_ zKsJg3yD?{t@nu%Gu%%t%an+yBpRWxr40(!em0P9NixV%z)_?Q2rkfk5>N0nDsD&NQ zxb?E|N0mwBQC+*IFDloK*#hM(^bls~`S~XcFg?^^kd@udG7jMJ$|*^wZgKDjG&bKE zXRsA+lDW?v0o_t^yD%qMh?(9LA-X_cS?OJ#jLs6&Ta}#@4mo~)>b5m_TM)XJ@I5}x zs;FVg;T7U*Q+%kX2Fn747eC9w*saKuYpk%hXA@L+zRCc*OU07CF;bAD7BDC5rN{ks zOYsa`of?}SS{*c=DaKRa{z@Jv>s4JY<v{xPl7Q$#rT5QZFLC>fxATjsvyl&*<)-ck zx-}wItTz3(Wm?U(tvRMOWFrw=hk?f>M^$8x=bg<v?oD!G``IVx@m$bn*FQsK0A-Ud zqigz~Rj~kr+v^*{jP>OduLvD$WyPED$@MOAY<1%j5Y<aB8Z8&hVxB=^g@k0{Kj#)O zZO8;I@(bBJ_eR%|Mwg~~8eUqWNa8i2g9gzg=_$*i_lelw4ChNWp3Pvh@uT#4+VS7a z$hhq1Xy~|J@VO?d3jE+-=Z1ymI+n6Uq-t}<J<VTBB0rqVv7b=Ntd{0w3{b<(3&XWz zu&W?hG1schxTfl%=5c2;k>k5Wl%p(a(1>e;Yw@nU*KJs#rM7HIoCRGlj>((YIk{H| zLyfK4`YOO=vgnw%><lXz;qtIOZB)(GJ<Ky7j3zpdCP7dh?{XaX$Np(#9Zz;=aF%|g zjmg%})7OiQK3%`+@Oo!NCKHxYOmFdiN^op`mpx~SuJ#yA9fBigL7eMAR3ncw3Fs23 z*^{@x*QSnqwb`^+62SNDZff5z<)M!3&&LWn0L5XBkGYrr9t)z$Ir1f;rt_pOjdgS% z7*a`<H6+}}`)zrgnt4~A9Pfw^Lt#I<Z_}9o3w*7QC-_W_W8iI`p=XAGPt7hHYR#D; z1#w_2Nr3;NBD2hN-TcYZzGKrRVf2v=a_UBjN%9IYL1Ewe%itC6told!>DdzY^VzCN zq;K4p2yu$u!XQ{(OYA$ruU56R&Fl}Zm9N>~FhEs?k|w|SVM(>+;_z)-7NS3WZqSma zH3@4?tkxn5Eu-8x1(<87V3(4dV%3Sh8sr}3qg}UoqY@k?9nyau9r7`k_&6bXcoe|0 zo=f%%8H}Gm#IEqy3g^u!47tiW-67Qv?pg-)g#8!5xMF~p@>#!}WJ18a(`VuP$3igB zB#oJI{ZXYB+A#IdS~o|4$Httq->Ff9cK!KZ@<{4=!Y|yK%F_d1$|Ro^<Ll=z`lT(# zZ#S+Ukw0C+L?^7a_26HBGEFGgQ%;@KR^uDD<TXtu^$X0DWhQ&sdFgSH)d26GOO>vA z$H-`MPrUE%n%P;ks$gnLJwNaQH$xcEbvc?M_6(t0`Ap)puK{sGUh}(KIZD{&uO46O z)f#qx=$6gLZD(z6q>(r8aVhd*AhWk<do`407Z}JgK7RMlDPYVlf?MgyLaF>Wn3(=u zY^p+=<<8vCruO-o6#{Q_9CgRsQ}H1kuNy6U&NV&oj%dgZ-D<uA&8*|`UKqm@DVM_# zjM8jVm(Ish{bTr)wJE&)BR5f~f5>VwiH<Bocico97W-hqr9InwI0>)zWX+)ZB~hIE zl9j>{^Oc8J&)W-6C0sl65zz$p&}KkQl_kCnbG3hOe`1$5HV1Z~!=3@xgqn#dirUeq zn1z%pDPrzP-LdeV)X?I9w?8WHI>PJwwig_^YHZ>PSkHYL*2BDla`W%=Hzk*83d(L4 zcA=P9+iGiCyR}o2;z`qsK01ZZ09M?VB7KqWY4d4*5^Uqu(rh2%3=QsgWk~8!&LS$P zVQ7h3*$!vuy+@Z-7PBqQ3(me(5B>gE{1!#klqG?SPk);mH19kQ!QILVwq1`OBk_NO zue{#_hxykO6j^0|^~CwiuRXDFX#)@M^ajpO5;+=9_X`z#Y0zGg7D!xQR$0vNNFd_9 z2fEXQi}!CHQT2Q*BXgGTA{t9fu*<_bOP5YG$y@S4$%KTQRtic1&ceCfNX(zL6>ZFV za@BX$ZXJyQ%fs3=;2#mIr$mk-&-CM=l>*Df2NW$ObDtA1N(nG(4v~9DJ49i=ssZml zo_^fHyEF$8o~93cX3f~^T<5Hfn*#YO>vYo{-uHb_$2BJ%MV8-@QFR{bCp1r(J=&7F zWqA&eud^qy_wf6*+T>mX9_Zu1+%Y-@lS+SiT%sCb^n??m#MAMHL-~<EN+zhN?o_d) zKMcE%mF#zfXQ}4#zL8B~4b_)A{d_#2g#Zg#t=;kulL0zy_d!<HIiG6rYXpQ-xED&E z%^RE{e10QV9QRh!{kcZ{v}oJAABHXA-8;NX^R1=8I1@{9+hgBP0vg}`i2a>EsuIo& zZ)c6zm~l+TBJAW8*4aPHT4hGOi(C%nqm+mJOqF<?O&p;aElXurk`oSiaKJR)!$B@& zSZ4U<YthJ<Bdl~xR23}9h-fzX<uvzh!{NEc46P%xaJB!DMaC>D=@+4oi^kJ%bB3zY z0-`N#!kDRLpB?$qHJP<Lb4WMBFkRDIK-h5gHUiNNzd|1zgME$mYO^8tIg~38xXb1& zigud1)p6=HKhxbAy*TG(u~h`TYghD?yx`p$#ttpAYs355f31Yp+T(#pWQ>t+8hL+> zA~q>4=F}Lfs;7LKG9-U!PoR9IRRFh7Ih=}ABgMxa|8_1!IPyM|Or&@1!>yA?=SvB_ zFf!SR0me&Xv{$#Ul61kj9y557X>j_9Y(Fpnui|YmLy4DONvii_(YS&(osQqfj?_Tu zBvx_S$f@VbZ&7tbehh|6o<yH@`NBPHRy^<mWvjj$gpu&n6&|W{C{Kt=cA3kdlTXn7 z_WkI~hS88j*PS$)QnLWNr{e_K=-Z}4eQ(u~Smg5KF>kk7S9k58f$i9niCo#Pg=XcX z9Ip%S&g02bVIAnxVPkN>Z2=p)%{p-`>m5&5ialvFt!4Tq86Um<`QKe-_NQhGG0N#h zb=6`5nS{akwOu#~rv2rTsD|1AVfr1XLXFi8i)KJ+3RSE`7%L9N{s%m^xhtvwf2C9* zMHn4K%KIgqn1ITXNP}`Xl!*7N=~DrYm!kT7$AuYP;{*ZViJvw2ip5V7DPR~Kqpa3a zu@@PJYsLVpp0>(!tvyB2W0*rQ=|6aR$?k0<n7t$c0)O|eYtKWHUjdy0XHEv5^o2~J z&2lo3`jn5fdMyd?K-CF1M$HkSVE7t1Rs)%0YIBMjN;Z;czv}OcFDzKD*+{%B{*q%% zHz?UmS1&rD7^LrDGH$(79r1~xt)Y_58cc$%<kU6H-h2ZgrEjG03y9?#cpU3R;^F*} zBh+-V5Km-!>2M&6wj$t34smw-(DY<Wqgg=8lh_Eo<W6#qp4S0X+iwnsrE>@yi~|+M zI&?~bcWmr1HrALWMRdP8#t+&Ep5A4g-aX3MlY-rZRs*qcZ{STZj^l)Z>9kn2(&>%n zd0VGii$P%LP!-@9yS6)c2fBu-dkq!2Gb+H?&c@6OeY|^YePja1`vy7a;xfZMa`Jnh ziy7duxcbIxMBQUmX`LARWbenwUA<fXk@%d-4{`F_)}$qvCXxx)nr2B`-1uN55b*Gt z5YJ-H_sz2$?m5HH3QiIsJprLN6w1GE^AR{njx{YdkIC_0>&1Vv)FWr!Pi*^o2vK2R zxUf^;xK%toKr;EPZY>=KDJ6T#;hc%4!!2jg#{b!$ocFlr?*iuN>>n?dZH|HG;S}>D zzlH~V(BZC;<nSv6i<*!(M>l@+Ii<trlZiXn0Ea1|knYzzlm%X;GWVzRUk#*+?o^(% zi3u;87rk}RBTAymkMMu;c2}f5f^@^}aqGDJ7@yYkDs$dimdmTI1OpT1QThBMv55yB z=~j2&1fwd8vKx}GX9SIwv4;^bf;=0lBTZ1)Y-*BWm$dYr<*LVgw(m(Ly<e+h*xx%> zF_E8xrAqMObSe?q(Z4?etXVx+Ztu{utf(y|<SgdWcnmUKcc}R?;8?nl5KDD1S}X9b zyF|U|j|1gK?qLY${VmLDjwEQxGtF`YIAKU$srxh5nc2LfB~2JLvNh}!PE?d>UK&QG zAT(AIB<QH|Q?8z~mDg5|AiX;>)y<PuUDVS6N`vU(wj<;a*2N)Ui2QkXAVZw7{|0@@ z+@fH?!EeSegIIIb18p4j_#O+5P+aMJQTxLKz@E@|tJEW?di}IL7D)h+Fp>QBb8yXp zTVc#5r=P5^W*V>Hg%n2!FrdhIESMh9fzmz2No4|DM?OO=tbYgkeAgTro)|KTR9#~6 z3lwdW?GK2z*X(~ax1Tkya+^6ONZFNiSLUUBDTR(`;UySwJgf)vCGay(#j^HgtUH%e zRx~CT45>b}<y}c~%!Anm&XaG7Zhn?0$DMRo*i?p&!av~TQNuH4MxIZ*#V4Gy*}2|7 zKD)TODlvERr}@0+^>f0?K4vDUKfWbB*dV76C(O^vEyIX`E{S#Sk%3abY|m3Pp#yif zZ{iJ~LK()?Sj#bV4=3$7IJEAr57SIoLS#g%CekkRj3rA>R^l)XxHV~ly@PCK@3lJU z7+N@8CX-zgc6mTZb?{cD+eD!!lJIjw>*{Hov-^a$DULAN0$`jz2P4ZWM8&Tod%vH3 z`%!)ObM?1^Sd^DNqd035m1UC_H86;zs(i2%!0VnLmgBY?jOEx@ZMe(PJPPOen<!UN z#g+KTM9G|IvY@6x$7FRx_peh<&2e@#rQ>+dI*K&veZcA6CDXrt2w0~DX1(K!zaBQ^ ztGNDe2m^iOOxUdpM`4*BoiQ;>4~`3e+W4z*j#umI27emho2PVAm_6im^!m9=>JQ7q zZt(TIs?~J`wE`%((EQU6R&=A+L;13!Jf+N_LDKQl1_DRiL}<s`++#|TOeJ-w5;K?6 z$2NlM&c7b-_VOk_AQQnUHY#Pbh#>}K6TOr+EOW0L)QHXuY<`kiI4PrQx<~oV(oXp> zGU_Zkg-!gb^PAH*oaO8dbt}OXN_?f{6z>V@7QuxqjxU>nx@;p)X=`8YhG3^xDJ+d& z<ksF9Ul?CpmZASlqghvmBGUE7h}VYdouN2mB)cu+4d;m3`IGqZCM~%<B5B5Gh!#yq z-j%=N24j4s8I>^m;X!tf;f;OA@xxwB16rZtVKMIJZho|A{WNmYuBHfV{UhpZq{cw! zvhW98u|bhyiY?VfQy9B%*e2Alk)Pzz)C`%JF|A7o9zSPL(md`r%Bgd#ykRzjIZZ0- z^d7@801eAo6VqWf)=OqjhFxcE=DQ!WX%}3H1+7()-ub^=Xrsz)->SaX)+S54y;^|} zo87GznFTz?#Gg(LJ5<9j>tf47>%iNsd;R>H<4OP%6GYBr7-U%Et$>rXUc3+5p&J8O zW7HIdZj#<)j;+(%-6Jh}v97$nJ08SGO7E-#WMEhKuW+6W0RNV6W9P$7<13EHUT;;6 zsuZiF?<)89@H>w!e%ouh7Q#su!)243?f#M&BP*67DgCD+Ph`NfAIsdk{VV8oxwiv_ z9eKu|J~qY84CUT;<a00N_zH@TGcld_+N-pm*i)EgPQFV}F!Mh?_lY}?qSZ)3#cy<@ z`D+;G3%Uc~V!E`ch@1-LXs2%924n4QiyS$w2#NI=yE<g=H&k*z+f#5aPU!gY7jBLk zD$6~mtxkmHS4m3emQT=IGy@xWIxQ}4$<q^edWFJs<~&iTRn<E}W+z{i@lsm!<8 zgsLVLL-Vk6C#Gn*;l^ZbKvF#HL%`lbl9Q%UWhNl&QYwPf#G7M}TOSZHDml-yL((K} zR^6^J=cl=Lmx12fKb@%VO#g=xNkLyl>-%m%SK&|mhwWX%-6tD|K|%Ae$i1`4s4l^t zy}y39*QE7l;Z9wQWIL^5wxFwI^Hs|0?dp{2PqITzK#p&hZ|t;#HiRrZzacy2rvsS) z{?sbl3a8K3)z3aK1{SP%J))N+fKn8ng#dh$o6zdJ<*hFdn16V~HR~!j+Fi!1a)S7& zmeZ+TgyeV;1`El5`PJM&Kl(K#-CwRVI&mMDXW#ycWB7ZM41!%3oaMFd_q9kv#9vBz z{UbD8h=6qO8;lc~cz*_IeTu5}3XpjgB)}Tfiy-(dXRS+-j*9EKMi^>hp3-;|%W$4M z>iA4mJ9k1_?l~GUNkuHC=Mx<Bym%wSU}HBll34m+$9p{SqN7n{N~4FeC!?zO`NESh zP}KGE$LaO;=Z31!(s))q*4kiaKeSB*D()}p!LGp#N2}xYXgz%%24(Hr%<`UAolt=% zLO+DhKV6m;hnAN@2~6unIe)_CyUcTdT0+x@y8;)<o1OS<qKBiWdU;Ak|KdCM4n9DU z`yaK8?_0Y5wr3`TEc^z1969s0FfHDt#SdilIerYxy_I~3*oYrrblXu3-RcgR;oU0( z?^1>AyUEvlT2YMiD;r+^^(dQxAv-oXU3z?xNRFV{NoGo57Bjt(pg+>fjXpwQZCM4! z7pr-0vvCcW_NV|QyzdPG-rdU)EF6W*_IUwz$W{DX;tOIxITgfw<?nvYrC1^>LAb`X zgKgnM*4gaOA9$$oEr>Xt5rm4BlM=Uw)gWG|TA}ICXSC<wtbbf`XlM<^1IFk(LO}P| zSIJ1x(cs^MkDQcm6YA8jI}>P)|BzB!=%HCFrXxPx)Y`H3A-2f76NY2ft~~RtkV|e; z`&1D)oSsDi?unL+Jbb;?i%_Rq^i`9at31cVz@&RA5o&)z<$@|fhf5Chfm!P6x%f3U zx#9GTonB5?g1Fw-c+z4cc)q7)?vk6V#<KbmNZ~+ZXyGLuRuJk7@9T+yStBJ$lbp#X zEZ5UcY0AV8Jk#KcXolqAL#z8=Wo!9nH#2EV454}^H}l}LTC~Gyu(EGL*|6D~%rcZ& zbIu}Yb_u(({>x)DNJa1=<?pzDg&Sc+N9`oGeaOwg#V%c+381v^jkx+Uual1P=V#1P zDjCxw54|oIljXJD+p@b21|CVD?qzQ&BBFq4&7=Icxsu7_c9~^fIn?v|!wbI<+0mPO z4?^Yfd1w#ox|o#X+*kzA&vBdi&$F?e-+C~<Q5oc0{q=yun;8rV&lkK1lY!ZyeuXi4 z6-_S>r;O+FvgXyk>h?jXA!n8DAd0Av_B1`aw!Dv>Y4hJl;8^I(#f2`fYFFQ=N(A;o zNa5V^n%~;pEKU^T<g(wbGIOMbjjO@WYww?uSvP+%+6D)h8!74s`oE#eV)@turo55~ zx1awocRr2w(G|<fdapTVD?#-lwb|ltwzPVa!0KPM@ppiviMK=)JwfU#k61%Bx8-^@ zS+;0Oo~?7nkBs`kZlV`SA|(lN)dZNp<H}Uk4|uqKkaz^)x9fb64P%`fwpTE3;Y^%l z6vqLm?{;~0l|d_zyN_4U7~wd;83XSjg5b3#BrOrTzJek?8C^pQVs)j?u%xjlMZW35 zn)Tz`mQ}hb(Y#2r^2Z4;_X%9JH5j*<+>dJ%&ZvCLqqB~+lS${Lur)rY&CQdNv+f!9 zipGrj)ii|YH>vek`eh;pqzVc0f$iWD2@s<J94b!xW=K!vYJ;ZIc|P=2YV8*1mCXD1 zxc)$9uk~oQp9kBYd|1W+$6XCWkXr)u{<Pb4b?~EqIQTTgKp4CwUj%tX0CL!~dj^%4 z<B_Sc@>{U5y%+Oj#v}3{_`!H=r~>_Ah0*nLJ|%b~Q=9!Y`Td&J;Wy_S>!J(P(|%T< z!$k-U;-;Z&hs{e$ak94+9=9bckagri%1x=`RX;(5E8G!uV-^q3kPDBf%P~m%n@|s? zRcem57RtVGJN#imA#b`q;nQp+tcPvBz?DCVjXi+>hv|tDp>E_24(-ic12t-F+RqI# zhcMy)cf0}_E?9+b*>q>M)dxLa;i>HO=<b869%6cL#L3dV;_->W$&zoAq-TK4#9H8& z5Lc~VUo0{n5J6`i_XP>yxLv4QP{IaSIT9yd)CLX(joQRKlPet9to*HI(Sn0(QF?)q z6w>M^2`ip}B||dh*xmo)LM6%*@_ygXJ<hDA20{~xub!Gt+N2jB8;_6&<UK&mWRN>& zIs+suR-dtUqxzy(Q7AvR#LEy`Oz;iX7!DaD*oF-{la+hP-edGV58NB5e4*j{ftE9i zOY=%u&tC?X-9+W3KPIVTCLHm;-6LhL|90M)XO8425gu+_#RhyOqs3PQDU~G{%eMy= zbbQH086(eZdxn1aKxC{GeK{T}N9?<>UtBn|S<l3<amv{*G5}cNcU*Ytd(_#ydlfD` z^z~+k&bk?Yq3YwVGl^K%<_<sPOYB=h?#BZ$wZ(D&K`4%qJ@!cl0cg#0Ww2Xz;+&(A zR8WxP#&uk2)hZ&A$4x8*(;9Oo6S`mVf-xrJ^=pahxbBaS?^yDm5ITL_Zt?te<uvzW ziu9Hl5JjT28~Ob%`s<N7)Y~E;%{fNKhR>Q~ocK@a4D-*pB{4vas@y@x4E8U=Y)5>e z+q6CIEE(}gA0fz`pP%m?8u~BXQ2YxwJa%%dA}x5U-F|`JYVzt&fzV`M#72wIETDF8 zjKcfaPJMptf&Yq4CwLb_?Dg(0ib^==_UI|ld~WecYQLrW<&GdlIL|Ddh!lVB5Q`n< zN{?Sj1nwGiKDwg5)=#iB*exQ=Lr(f=w=2GVoMvVkSbwLuBxOP-OkUVYCqB$AU1?ia z=1d_7z)M4R(yI}}ypfzl(&mn<gHq#iMiBThCM|@PVzLov`G`x{nr!WjRc*ovDCj(h z?=}OA9+3=H+<DqNV049S-_FP`?gmEbb?1%W*CP&6@R+$ICpUE|NkC2?dHAZ!We1OQ zi`6{lusL74Rbjcv_~UmnCHH>t6c8RN&XB$|CK~dWqj>&WQ^x5h{jpl<ABy8Jo|b+U z)Pn@!86one{zq3&VS8l}zLj|<wDbh&3q1TV$A14!DO~zwmZ8#}gzbHs!rHZ~8zu0+ zgZ*40$9g744l@mr_ip{3S2R4fe_{tbQ0YCoo<kWd3YG-2skuMTty#$c?TVr<Zj`!8 zAr6{YcS!+z=hOXXr1#<d;g64U46tc*`EX7y3~VYNtuo;P&SRSYBn~b*eq!$mDp>k; z0_l<b#SEb0G7JkeDZ>Wj=ZKT1_V-#G@_QA;b5V!2fAQZAe2cFP!ewWFHX98wZQt4r zvM0MkLi`cU<LH3L7_`d>1)Wm(8}1m|;#fwmT6WEzGH*8rk)xju?E_KhsWs3$6M(7g zNgow)+Vl~l3Vs=o(2lavml!*_!ple|Bm?wtvQOcZS8dmT<?FC#<QGn`U)0S+?n-mw zOS+{mscM03!e7%vEaGzp+Y^p_qSA~h1)|Euyw`E3d6#iW@n!uC*WqatV;9{4zIXrd z5`e*r*(8GCu5Xby*rfI`=WdRcR0hzaz(#@5&Z+~{Sd|M0GbDKk->2;Ah5W0;Ls{md zB#QgbE#saP!EyTq-+lF8=1EX2$km`ra;tyzoC23}hD_6oK?N|xux|rCWIEsq=yM+n zD^#it{ncM-PCPQ`|DI(5a;~ZQRmXzWppaB#bLk3bOXKmSDk+6nEHIrD>tU-vG-xa) zyM?;@60iNX&m|9S)a;1^Xz}C=R9tsf2IW}hr#iIV=;x>5tPX`RyW-Q$Z!cDsT_nsd z<>E>+JEp`A-Njl3!C?)(d%)#rYnPai*Pmrt@GngLRF$$XTu(ZbbjB7H)uq1Z)lslm zD+?j!s467&COuQ<hy4$Ja_&Fr2o)3L@Z)1XYyoB)tr6g9$OMHEz>++0A1i_eik9lj zRqZJ^eE6>maIas20s`-$E9m(SJ&0P1r$7S+LDi9BVLhigWOF;8KUw}^2sPFhajFBo zPP8Pl-@)iec7tMIXO`0Cl6ze;R^&9C8;hVz%NyJCjy<8}6kK*+V6hxYMc3lhk&MRR zqqLXbw9k&zj-*bkDvw%M#Qm+wm{ZOb#__NzQ<Na)A2#kh0I4<8IF>y@lB@c9j=sG$ zTLq+XGk&|05oz^yVaPCf^IgRCi)I{<-oBA5cN!C*HLZE?CbXe9;MTBs+c^0uRtf86 z&T*C>1!>Lkxz*B1>m%qYDo+kGo`{hH!Aw&yp>ICEf@RLEw<v07=URxXX0n|u$)HvK z0AIoh*(POo1V8$h@1sKTS7ah)d7TavSn_q(IZ11VlWzvFpKBvoZtO7&=NK3|Ki~tv z1e`gD^@n<W-74I{wFL5b?%kd*&WBsN{r!TfPL1X;fOfTOF<)ivfic;~!t9XrI?#*6 zveSL#>fANg9B-{NMVCZa;9+dy9`t^fX~WbzpJlX<w{DlfNPnLcRsA!UlPQA|7}xx& zlS=<wqtiE6W$Y=sDlj3lsVQ3g2G>3dDcq(cREyvrcl&#w71A?#GN#_Bhdtskc~j&n zUwjbto?SJ=wje@Uf^FUe49>`13xQv~S*tb|kOH_17!N0}(e>2J8-hjGk$YxquAuxP z0<u#BO6Qk4=kxu<wGpwILQfKd-lXT<nz=0qgn!nH)I879@-<@juE=bjL%!LxY_yD} za@T_VijCrZI>4JE4zS7~7y&j($a6e?^kU4{d}Rq%0TbDnQ(ZQSn)HwV%PlkW7qdqZ zm*z%LWkB5>n;_|Go?rS&Us)XInd*g2pfl%LYTmGv+y1?oj47rTYeb$wMws1z1@UWs z0{(1S=)HucS$LA6V09*Td^&wqKC-0J^KSsz-R<tx2t`B(rJu~nw~}Jy$IZ`sn;Z(b zDkrUVc#};C3Lusak?`+zB{`F5VW4ACFb9A|yZM2g-&Dy6F@TRgoxi0;$mBD?oJ;0H zo<YRyBL#4k<`o0M^UqkRE#!*Qa`(psL7)uR9itQdf1h<?afZSYK1^-#<b90B4jySW zKuf>F>=3sJeiZm4_xnc8`tCEO+dY_rwfE209QH*st~l1kB!UsRCwCnofnNL{maK&p zRwF3bbr@n<vURfvQ@Q&4MID7M8X72cvA@x`naxWBD#Rc!$Hk26zkDM`T`fPulDG7; z#XTX!dWjcm+c_4jw7_y0ba-;oJPsBRe*N#OEL-nZz%W1XAutT}Xk{x{IcV>6$P9Jm zV7}FqHuu9yZrv{t!F+TMc?7+RSwH@vta$lCMD}@o5F>-7BZ&rbOEdQ31GclH2|$H0 zlkqb>eT$ZFd))}O)=`+OBrdCkTyP(A*eFITrj#=$PStKn#T;9=n$D74mS?1$hlMxZ z>UThIbq47hjwo&KI@T0Mm&8kj6bxx_+bO}Y+U22VX~Bws9Lt2xQv=I~gmp+c2&`oY z|F_kP;>zXbCuMMSLKt=8D)_*jWl|3v-#_#8M>Li+@$*EdRLs7w^+<M~Y>G8*p6A>T zc(xw0aBmB#CUy>UC-JeCPp@eV*i)q|3yO}}WQgOau!^?QYTI)cng`C-&i)wF(-0|h zR!J7nxbktXaK<7N-IjwMp5EVsJ(r-6v<ysc;4V;GY(7R1b+>9#bQIiE<JGn4KWV+z zKMB#5X@2;F0=EvV?yYr&DStt(n{HyP;UVktjau7bB?_E8&oz|Pf6ym$EQCcZ^k7j9 z-bY^o?s3<ywKTR=4b4l1)RZ^#KR$pMvW^ax9$`_XxlkV<O+U*li(9AmP=D>*!bxCO zQ7Sr1+DInN%F*-BIg?odcVCU7q3Cm~Rm-&?f!eBnez<e$-6@4Ns6%dMKJDajSZ&|A zQ<YEfFx$|C+^s^OaMtAli2qtZ37si|%H4O2VJUj*<uWzEO;T4M^-kDW6q$SarQiAE z>)xKX8lZD!GmsH0{DI}#xXbUou0xzFwi%n47iLcTKIc+Mmkc2{VB^)fs2n=NYLhkw z&Q6^lLIL>WF%u9QntX6dNEmWBYTq)CSRJbT@9bEgwcT|CCf#;W_toXSaKayRy+3=` zF+#<K<Oszb!)yZSSD=lxAXT@{0LBo~3KycW=-5h^Z5)brTJ%flSOzUjin^{iiW z%8PPtdrnMxKEGv?3*@d~*c@MO;D6kOvA$(5=Fh$fGhaF7dpVY$N-nz~vf@1bu%<&A zBw#WonJ1<MMxf8ZtzF#+BgNc*5f=6%%?To$k9kfObPGoe;vdagU?muLjZ%`!vRr?) zu10J>zRJM)XuoFd24tJyeT9Gyy6P8G7HxJ?tf7E)rS%zGG!Z+V7X4;9?-0*IPe!<( zF{<ycs=iSsm>LO*a1PaCVbH-eNs2MTc9+oX%ckMv&s=R`^j88lZS22-I1;<>Z_$Gg ze;rI9WwrUoPHq;4ak0VvPn_LYqf4#+U_pw^D85Mb7ob|(@gHe+ueCsw5K?*OAc1_J z_c{Gq$)MGigoJ0jN<|5_pNfjtdDDg*<p>an6lnobwfCI1OoD$Cs5&&}x+bUqjc)k5 z^IX#J<Y}b)?D0H1A*z>;<JIlNqUL&dCmMpFAt2;jits9GtOWvkhFBZwxBBNV6n})D zQcO6l*o67J3GCFZ&-z_x$}QoV#QFwD%~uZ5d!v?CNuz2B$<1Zc<0I6_=^uRyBChZ* zOfuBUUAkj7ydtDArL=|8&}6;5r3s&<as-q6<6+xMve5KC#b@?SmWk_U>C!EOGTau> z!M}!I5q+jcouss!tai!Vo853>vasbL9!nvJut;dnM!j$QNo38G^cnB^3GL6`2Eh4w z?`_1#+PgcZ47D(e{TBy`Op9$)>c?zMv%F6x@cZp(O0Htp+vj!RY^cllKHsU0gjYr? zrIAA0fA=4xseSSg1RlM9sShoauMnY7?mLMiRe4yfT<Tse$LlZ!3&=w=fZ=&-Q>Ydg z;9sQPQPBwiE5kw8HJt-tolXf#Wre4ZkO|F!`7zF_69v%71qno+m896e?g*(3_HoB0 z_*-NDVEJtzp4Y2-!r<Ny2W5gwG1VvEI!MZ9SpD)UNk>*0LftEzKa?LO-4M=GD~#p~ z*3%hT$iwqLa}YJiKj89D+`ouNUxCpC=u}K-VfoiTsg`$`gk#xPUOy>8tr;gfQY4x) zSDo^~w~nuL77r~4qU?f1C$3oEKYCqyG@@)>NTV-RGhQ32c8I7qM2@ifPhr~v7;qnk zN%@S)!Ao}7d-h)P4bbHQD^UCd{LnZ4@2!{5yGQl4Z1Mq|V;k5Lq^7Ld)Fc=N{l9Yh z@{p50W{6KBm)@VLc567yQlk3)`_++fqv9u*&=bRf;0H)dRmaluL8QK&dHwSlogLrP z%wg_SLt%~2bC<WKp9%m;F{}@|h!q{mz#oC(43(+<&Zx{)meXg?xOps{g2H>l$no4$ znlo}0i=b9$6xcl|<g~hz<-aRv;urQ*%oqMf{RWawR|LD0W;@|`ivE;+g2z*%KwJ*n zc2c^O>JtbLVO>&vyF^YOzp{~Eb&y@;Rj;$rA=}ZJ=W3Glh&b^UdOl&1lo&|)MV#|| zvU9(DwpZxA*y##XXSb10<L=S}A^=t9f(?s7pPZ}U-;cFXoZiF1?*D?peC2<>*7yHg z^~XW>nYAUeR*lXyr@jvMb#<j)e+q!SiDQ%KaTJW{;`+Q|5nUTJ+?G%MUB8{HCp4at z86#?1&Cxi9{rgt{T-<h5jmxDov?m5_*uAxeytaKY{_KN20Ra9Y7L=+(P#IvPtSF7X z*#+N1I{x`C%klqw*WdKvQ<9{+4NMo!yY>s|MPX)&z3iQL4?hx2#RD!Ly^`q3Xfehm z`9n99@BGVYRMC3vFt<64CQOqJYZ7vCDlL-1FUOF8i#?Jjg!OC$;83|^q~qC%E4J_R zq+N76R8RjJ1jb|dZIO;uPfe7+cR>hm$?d$kWBSh!a{fc6la&z^$FdZtP%z#p9Rk*~ zBo=G0{_G@XX-R%DN3>GY-~S4c)pTSJ;1DKaE!GO>3&Fw^lz^(9K)oIPU)XgpkgPU% z4B$UvnhM@sP<j4$zKkeKN8@Rf*m{zDDWA9sm3Q{=bU*CwaIO0o^JcFs|KHIEJI3Tv zNC#6UBKLeQyGnWwX|7Q!VeJQdzcV^{P%YhOQJ~!nmNG3SJy_!DPGqM7Flm*5lEW)* zv?9QDb*a&em0jnPmf4wJs*LOi{eDK5w{tF%ox5bxS-5<;O>Z;XtK4efJxiOO=i-yV z#GQ*vOsSwc_+RyTd8q8W`E5uT9p8N6-HA4C=jv3al=Q%{jV;6ut9gz1&8*|}d}`5q zA8)w0R|OY$mqPYxi7;@#bfD#I>|MJ!LB6tj06MR&bOsK5!=XZH>psf=d)hy8D{XB> zPevg0-6v6wqay-O%{3$xy>11Hz(8Kn?mxRXFj>8Ubiw_$xgdU+!uJ(wH4)#_o7QYm zG4EP^-V)W(Pm;5!&&aHR!wo-WauY+{tp%!j44!D#1PVy&NJo`jsA*Ws_AXamr3Pa& zus?@n#<1bYtO>2;hH1sG=Oo+Vi;;if%4jkPE5!vU_f0yJ9<2Xa3k?2e@p>Nr#irME zcOhZM50ixv-{>S{<QnMw&E6KQI4d|~20l0Sa<Zk=r|S<rHUt{KMlL5qgXZ4*>!;(f zMmv+fp)|Z7{p=pEp!VaNUFe~}I(xx8*(N2Xcpk-z_B{51#-qa?RlRXf5Ihgvj~N=S z4sQR?yvn*e;Y+8%UqQMMKI2u^35~zTQ}^=+AND!X2fD_|Xvs6rn~pBvp7E+Y`nkDn zuaT$siN3S^V_`4NP<Ag$188LipsC~!VHb76skqkuU4V**ir*MkMa*l^oE~?}w-xQh zRB8VurPIOaHI&<Z3;4{XJ<aTf6w_gEO&ix8gb3I1R}w;GQBS*Yl=#&N_NEmaoE9xf zFAS^#boY=)GqR^Sc!1A@^WVNd{|zi54?g;&8n-ZKaOU0>c__Iw`JSCItfY(9>VWG} zl$#%}hi&8~!!<zqX8pysSz_MuKjM~G{U4aW3M}0K0@Wdi?<`Eg`k&E-KF0D=jAdRI zXcCARh}S_{+LZOTjbD%Z2Ub8-Y8jb2(j{KEgNOdq2lftMm00>sG4e7dEM@;U^~$}z z;(^^i-6#Yk_}iL)H)doY$XlQV#_(T8m$w)W#i^Nn%yTy_;I?mhayy%LLi9234u%;L z9e1F$*5Z``re763{doh(U-Qkhmcemo7>V6>0A_<1=_eh6hirm(yU0T+-O2T^)qUBw zk}2>x*v`ah7ye@Xxw$f+z29wdyS>Bwo6tYToVO1flUltI>srjC@c&A9Z^sHZOPe*o z9q_}j&|$s3b0$!eJW*2N={m2R5(~$AY99qvAU5GtO2g}5gi}Oi*TX`jv(m;BRbVv9 zEMKkcZD4cQH~oCYN>N3SyXM^}dROV5?mw1k-~FFw5E=@uKEuZbS>#MMvF`5!LGrDd zpV^gHGZbI7v#w4;+&~-ZO1IDS9(kC^_A`c5N{~PDJP6tfDD;+2C<psmaysTS;vDR1 zh7~i=?Sl@Lm3O6Ai4{3423*TWv>sn3^NuxSbKXyH{j0y4-7NplPz(n#6bV-7M%Ss= zhEJbvPewbBsebL!iKOKWjo96~;ZlAKfobF$W`RSa{~~<BES#ViCgKfH1D;B%iYgwv zerZ;~S)v#O=gki%TUd^;{Ep^01oRJh<7WQ>&pbU?aa~ISBAbb*=Rs>K=yuLKs~HPn zVE3oL=;5<ycdydkkb^k1*LL2CU%Xf3Y8h1J)7ejM-_zV|rT5tGKuUl^sfrTM<Q<7b z%0xzL+XBY)`mG@UTq?Bbzk_on!MIdpLTFJUvG1i-YQN=TJzz;7oJu)z{cD9{%)G|R ziXQYQswN(Jj*Cqi9J-dKS|z2B2C*l5{erR`L=$z<)Wv1W#X7NqUS3_?(eS|a=nTC2 z^?RY$`kOW3z;Y<l?^l>vWrv-JBcgCOYl!-g!2<PqrwKL{lv`C*|B2K(VGu5KmUVhR z_iJv&!O7Q^k4;@2cVPX_-2K&k2Cnj~?_k5qZqd72+#ViMAmD6J`~^Ccq8c}o3u*;v zZrJ%Q@9sC{D1hA5Z*e_`VTWNM)OP+{`iwHkT1`Vf)tGg38o!^CG=ReGiGIOgp6&0+ z7;~_BEAe567b&!V5!lvYH~{4^4_seeUQ~(bgCz;}X&t=RyHmHI(N9mW5KWil)m2T~ z->!MLfZ1R8Lk$1gK9?xOt78>jM^L&AQP<>v_5OUr`e1Pj><yr`pkxFrbtA%G&Jh4` z$N>NrBUa^`goq^xJatCvk)a6fE6IT@90k+D;vGXWk;MFy$1+N(9p`u(ep0cJ=6UnP zGS<k+#1XnlDk-bi46hH7fp{l8X$ksVP1f+c-I-MnisK-xvkz1NWs$p}YtZfCu~NML z%{cI+6~2Qn#d05@v|Sq&J5h>bHT}2iH}G}|&kN^JBQ?F?&e2>H=Wqze?k3O7K;BAX zifx$ma8-;3Y+$_MwZqe;^vv)zE#YV7fV@RRy+$L*t9P>~bSDo$8NdMmNF?p!z#Mw? zuB2&WSQ+kFJAT(KK6NlHvs=ACRXk$U%NIc=XL$2brfU3sKGnMfsS<KWtP9*7u3p$} zb3z=4X76Y!jLx10SrUhq5!+UU#$-bjb@w*`b|C->90EY7XdMz@^T{&Hs^yvf>Og(Z z&)*6AfH;o1xTwUC=B$b1(HHE<Y00*$O#W_qimu3m$b>2v=1>V;@qtHj=D)R6sM%Q_ zCnY@m_A9Onq5RWAdvN;(^9ve)<A{*E0|1$!?I^rbyX}yJRpjB^Qt(8<*sE@<I_Ie^ zrrGO2)4Q`j-s;P01MmGcqz~kN_Z2$b9@5zRY`1-N%dfxc`nsWcYYBJ+U<3dj^&H@^ zfZ@^;1iGpQAM*L{Nyd%0?xvxe*$x4cXs7Dem$YNG>+>7%M&<NFI(S7VC-<noqME); zDT;|!g)lektO#%)KahMR^9~t%XG!tObW!01CCLWpQD?&j^bm->Km$G>MM(volsl-V zuvmvws;w|-izcet2$H%451W7QeqP_AD84W2*k{78Y^j}L^<@Z*kl)DD^Vzyz`MTBn z#TAhd==K>GBk;El0GuV;A^{~<Q}igDyY}lx!3E|P_f{h<vw&wYbEkgSg|nIrvKd{- zhJtz`K%Oqm6_&e8WK*jm)!G}L;1~O$k@}%~_zJGCJJdfhJ~BmEa*k8<X#Tq{KK(L^ zy14H&nfUUab<K;VJ89_>XNwf*kd^p9u+xu&v*$TfMK>WWUyL>`hc9rFg#m(Y)#NV2 z$h~zk*d0KZ%mH&J56oGu<Ic$~#OfiT60P=SS?R_p9Dh$3f*-~zm-9=UCRq6AUIN_v zcZ`P`IGpr;1jXkX8ak>tkiNcj=BogGH_p8elUD*5;86hpLRgg)T6`-~8pkHiod<fg zAM0vA*yQVPDOR>DHMY+^;841M&dR`^wDW%fW(1l0d9k@w7eDU~q8<5o86Z)$*FZiJ zjAzb)9;geo_p0{}jeG#O1mFMwaEa{vvh%H0`ZuC_eL!rZp(bNrHX~B9^)D%zM^}la zyN|l8gI_!i5DEdqF;|YKl+4#lL7^n9>!(PZpG5%5RD&9td+)ve0eOA^E)zHa09*l+ z>@N^g+?Qh$_8VBe-O3^X6sZD`qC!<F^cA!1ja34gD5BXH<MDO;Nks&}<oV4<|2$oJ zaojt`ZhZh;GH?I@xFU+Qz;j~^e;#efiy%9D+jpny90NDTubm`{HXd}S)pijCc6oLs z-l{hn5#jmD32^h+%?Kf288KidWeS4=2f!XCqz=z6ZtlVG18{Y~0RZ5N8Kn=15rp3T z@dmActp>QY*{&u>8v(`3^|(RzoeQF7C&qUe6a_^9_H$r<IY77{fU5@%007s7uMemU zaB6-l+WAtwfo)0^_}Jz^OE+4^0H;iVC(+?%0OcEd7_o4X0g9voLV=@yJ@ezlJmub- zAKx7k0N`4H0|3A^)6_p;9DFfgX?U3^aOp-ucedI@>}}r7cWCjWdPV0c2<>moqh0zz zdv1dg5d@Y-I58jn^K<0+0l049001xpaD9M1_QUvfI}ci#It23b>swvwE>REx2y^^? zBtXTx^l841i~{iX!BmY6+U-{FX!q@q007qx8~^}j2&WH7D0$W-_M@_$FV!Xhd|g1h zOSEyn%O^0UK8YRxJa-@K2I#Nk?uE$L5M=(wdo#X=JU;-l1snhXW{`3E2UsT20a$Kr z<Sl}^LO-tXC*C-K%6k1V$^onM`o#DR2d}?J`(6NM5jX$<%rLxvK$z>##e$=Zzbp$R z+I-lhgthaPjsOu4{g(}ZYElg3tNN)3BqY>7JH5G&JU;-l3mgCdW}IT%;pfHx=lXyN zn*njGAzxW*ng5gGy`H_<yCy)Y>I2~B)U6ku)&p~$y;t9%eJ=pB4jcdg=7ho#*f(bR znLk!G3@X(BPL=Q8+<8e}76tgSn>7jYs{up+fT{WUzZ6=_lt8}UkQ%0GiuSz#%n@(^ z0GKmArfkqT1UEl#)9Rgscy~UrKM%=DfZBkAE$h=s|8!;f#qm>w`vI6I-~a$Hr#O9p zvC-S(hybg~{@e+;Yoh?HL12D~JQk3W4$2IjR-n`d5FMT^-`s=Y2Vg#d0|3ArlcxpJ zee%i%>vRJAeAhMyy4NAOOJFvu`Y45cReHfV2LpY9_PqeiJ8%F1SOCiY0m?W6k)}O$ z4#E1pu5kodb%BaC1S<Rb4^yQNUhSfNF93@G8~^|o2;&IsXr*mhU}v29E((xiWBe-A z0%$rhjzs@-c?EfX02T;1001l?tYY9R8X*?64uIV&z`{}iwrBsbqSo(6yKe^s09ZKS z006My*r)&{^dxfzG_9FaPwb}?_qDrfxUtn)vn_im)&H8ggQH#K_W@XR{s)duf&0|W R#S#Dj002ovPDHLkV1f`pMGOD{ literal 10805 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 JE5`J+{{udwEZ+bC diff --git a/apps/site/public/static/images/favicons/favicon.png b/apps/site/public/static/images/favicons/favicon.png index 974acbf15ec70e8a2614308d2289235a6144ee5d..e37e34f47b8c99ab6a01c932f4226c1d913c26fd 100644 GIT binary patch delta 1352 zcmV-O1-JUa3fc;gBYyx1a7bBm000XU000XU0RWnu7ytkO0drDELIAGL9O(c600d`2 zO+f$vv5yP<VFdsH1n)^iK~#7FrB}_197Pm=uX}ekF_-ZpDg<HkALLIMP%uaiyWWI= zvj@STu)E;JgUrmyV>WjW3tl1wcR)}v8`DQ`=0C_FXmG!nWPfL8d%L^p`RcQ)r`zmD zis`B9>gxCV)$hG}RgG}La{IxDt5Q(^B&BgS6@#Dd{JsenC<x~)-L0FQf~ZFVI!pir zU&luhfM6twX!++a9zHpby)zT|{Fj@HSwVM&fF&saq*NDyB9UhVSxSHrKom!t7{!C( z%CDod*gciN+JDwkdvYmTC89M3Ya4I_tV!7WRH>j0vPDG%W9$!Cwg<07;IrR8>LNjp z2o^nPjew~|&MKUcCJ;r)B(x$UglO>N%EQfb5%}`)txjH04~RO9#r`$ErU1~_>MBT+ zQm#;K)C3$6T|b$Z@$&r!w^RtMJzi>Okl$rvT_9v!3x6t2Eo4AqmWT?-0yGI^*`gT| zTA3I(<2WAN|D+@mxyG&UI;$BJPr2FUS2(B%%+JWGTDB^=Q?)iAS};SJO7g1Bb+;&r zKR^EdgI<lm;fs9ZXp*<R9OPgy5DFXgBmaUUOJuqo38SQO6D!+3+!g&!ztgS|V8!8| zzovfH4u6Y?Aeg`HuZIp%Nmj|O+yZ9Sr2>2%9|_1gSYZLG1eBk$T*Cg|i8kbM(7M6S z(OdHKw(lbbWb{Z441TzA)pR0xvXW{pAPyXL?e3&H;+-KZ=~z-&h5<A$BTdEvOa4=E zDoE2~scV3ettS8xkBo@~Yj<#vR?P=9*51Lgt$)YZSa8mAZj*NDl8uFQDrVv)bOG8Q z_w4VVn1E?46zFcr_<$|{RV9N!JV~W-i4Ih(6HxNA3jA1t;E_AK>8#}dwG@WrY&=k@ z6jv%YC?&F7kn=q?DWK%%0j7uFJQ$}?<Q0>(w#oZgd+I$zX7(yYGf|^3K(hjB_WF*A zsDC`JY(0CL)le~5_YS18WI_rKNNR=2xvW_M1sd~6<e_RKIhu#*q0m>g)RPjq%;Tw5 z@AYUIq0cW!)I@+4QY4gSk$ORQ?>);--LuPVX<ZO56Ppu2nlXe_VHOaO23&<fI`3sV z=EO01-lPImmZ3>j7$~CdqHxJ`MEVe@=YIi;%qqaN1yo?gPrH9-&@}IImVrYkj1j8k z5Z$E)Uz#DH15e2`nX~3g=4y*Q_&2XwfgqSLPzB2vF#=)Lg{%Ta4XIekkIxs(t62B? zc(2f>A#K><qTehmsY)uclOUV0+%tw0f#-c|(i+2b-pq^$W_aslGTzTEFqC5Wf`7iR z%pMeYqD)Ych}Gb6g+R1(WxzJZ;B8lzkt#3tc`MCj4RiKfP(4Fbn~XRH0qe<nqOoGv zKYBF!<NEv8e_-I(*}x5GDE3qXm#@TrS9aOX?R+FLc&0A&@3Gx`kiv5EO_DTm^QH4` zXOW+5vGGPCZ@<@q)<R?ts=@JGpMML@0ao1ybwULUlCMkPml6nwbQz+@&Bd^P;c^65 zueHjPvJ3$Y2}@|i`^oyFuae>aVVsua9Faa}uvK<%+Z|Znx;C#>sC=LZH+ve(9PYIW zxiPf9ekB5y#3EOH2LDvuUwSQuH{PAAeyEuC5Oc9UypxR1V)x7hLL#ij7D0<}qkVNw z6Orb`oA7rde-mye=dpKg0s)b3+``_Q@65INtTT9UdwT;eQ2qmTlxb4%gAbJe0000< KMNUMnLSTYv#eeDm delta 1327 zcmV+~1<?B13c(7HBYy=5Nkl<Zcmbu<1FU3S7RB-ZUi;jtHpaF+6DMQawr$(t*tV@; ztYB<=Ui0<KGplahbM|+Vw(IL!$!}d7;sW#HZ#?#%Fa7$H{`1_=J@%iE|IkD4TyY^Z z?usw}!K1z6Mc;hHbzl0e$NnjK`j#2j*wk;X-B0N|y{7qXuYd7tR_xfcIaQ29<F2@V zz;oBe$C{@3yG%C%f+N|qxmTjZ&8773Wd6af<gQ{I8fPWH?D`9u%Z##Qk2L_I!Z?y% za=9C&l)&^PleKbtR>gUpbK&JzZr@yCFeB;BW{BX7iK^f4QF5^yg$QfF-YL@oGrM)g z+33WHa;0gn$bXley*ig){HZ7Xz>G@+!Fl2m$(_iB!zV!mT;5GTk@Q1|D_8V-jaM9{ zTI@MAZx#E0+s_oeCpG-n#I1nB;TY#j1a;r!2#7)*T9lwf6k)eZDeXzg-&RV_6%bY- z2(ESI%Y^sizE`-#ur=}Y6Ruc{nW!)$xs!7crH~^i5r3+n5Qd&>(uOD9!$ef57W-#s zx5r3dYFE^l05C2j0q&wiP)a#6gj_2ktOO+UO@Er2`ttYx`uoj4|L5OLwTNt+dh%{{ zUk@ypG?JZg7fKychk<~ZrA3z3*6h-ocl8M~)xzDwlY*{cFxOztL@_f8K`8-IP8bjN z%+4UGtbezI073wbrz3B%u`%6;0tAyKpv#3)f(kP+y|~C|G@>!#7!|688Ay)1u;Q%G z^e_)5O)i<7gA$o8cN|z;z?1+(6_uct40o%9C(+LLC?jLibUD+N0%6Q7FOnl;W?&+R z5g4jPN<uR1$cf0D;am?*dKU}^?U1(1EUmASB!4iVk_(feS_B|*_~5D%bjuChP?$}0 ze7fkEUtI!oB*!sy!g3iPapY`3g5+Y*wfyrRbJTGri_u1=FX1NS2`L>Omshp0097)q zl3;pemc{v&#l<0#F-d}86q&|FV}@5U;Rw}&RFDEJkQ?)Bs|?x^DH(hIzl3B2F~L1B zhJW1%nc*^$i+*yNBvgx{TovR&SjU0+Ig*5#v9vs7Zf+fym?ROw`lzMxL^8twH&88d z6gqX#6!y<8kV_#roRq|W{<}a#O#FA;7!B!4!Iem!a7(Bbtp;Qpu`<|Tc46hTtKHZb zap2Gj?l$2`z{+r)<WAdlNTL!Od0;t>?0?{)C3J>c-85oq?>spN7!$n<quf#Ngk53# zrAX$e7U|M$JHN2j-&o6M{O%*5>k51JFW|0;AH~vOtyvnacJmucs1|d-X_glD=f}!9 zYm$qp1M>{q4l|qdBp!WeWnrx?IaG_)mCnjgpS<bI{wIvjoOtn^7=wRJ&0O5O5Puwr z%sy2a5ufdHXBDc2Hsz@J!yB(5I(wu!Hvs-z*@-)GiRrl&)&}jxIj|Z0$<43lmLA=9 zomZ3+QK4EK)zRgOQJeqP<$PnreSwV=P6U_nkE!W#e$iG9s{3wf`Zw9VW!pb0uCVh` zx#B3*;%qLnW%oBOvu*blj5nP45`WDvuQI>1hGCo|Z|J4o<{g{1exu@SREzVu)+Mj> zYA!YEVSEiBx%2lu2at>tFBgJ{`08@E-rKO@t1He&<E-@W)hT0tKQqw%@wf%Xp7r67 z>4ilk0Z=0LR5y3o19tkBTrm!fv(gQAT_bLA)hidaX2bX$9#@syBmQ%6dMH$)w7Har lo49Jz^WO(ybyzCKaS^J97plkMpVj~X002ovPDHLkV1iW6q%;5k diff --git a/apps/site/public/static/images/logo-hexagon-card.png b/apps/site/public/static/images/logo-hexagon-card.png index d5c5edd00afa1fb0e30d38188b2ea722af9a492c..46b3791b70b3bd3e111a2b6091f416cfac92f02f 100644 GIT binary patch literal 23386 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 Pg$;P8tf^G5XchfGPof09 literal 5697 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 From 6b39bb121f1a7de1eef424ae91a26fcb88e9de50 Mon Sep 17 00:00:00 2001 From: TenzDelek <122612557+TenzDelek@users.noreply.github.com> Date: Sat, 16 Nov 2024 06:41:05 +0530 Subject: [PATCH 0130/1385] feat: add Bluesky social icon and update footer navigation (#7218) * feat: add Bluesky social icon and update footer navigation * add Bluesky social icon to social media logos story * change icon order --- .../components/Containers/Footer/index.tsx | 2 ++ apps/site/components/Icons/Social/Bluesky.tsx | 19 +++++++++++++++++++ .../__design__/social-logos.stories.tsx | 2 ++ apps/site/navigation.json | 5 +++++ 4 files changed, 28 insertions(+) create mode 100644 apps/site/components/Icons/Social/Bluesky.tsx diff --git a/apps/site/components/Containers/Footer/index.tsx b/apps/site/components/Containers/Footer/index.tsx index 97a68475a2944..e2d2411db1098 100644 --- a/apps/site/components/Containers/Footer/index.tsx +++ b/apps/site/components/Containers/Footer/index.tsx @@ -2,6 +2,7 @@ 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'; @@ -17,6 +18,7 @@ const footerSocialIcons: Record<string, React.FC<SVGProps<SVGSVGElement>>> = { twitter: Twitter, slack: Slack, linkedin: LinkedIn, + bluesky: Bluesky, }; const Footer: FC = () => { diff --git a/apps/site/components/Icons/Social/Bluesky.tsx b/apps/site/components/Icons/Social/Bluesky.tsx new file mode 100644 index 0000000000000..9069be9b4ec6b --- /dev/null +++ b/apps/site/components/Icons/Social/Bluesky.tsx @@ -0,0 +1,19 @@ +import type { FC, SVGProps } from 'react'; + +const Bluesky: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + width="20" + height="20" + viewBox="0 0 568 501" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <path + fill="#1185FE" + d="M123.121 33.664C188.241 82.553 258.281 181.68 284 234.873c25.719-53.192 95.759-152.32 160.879-201.21C491.866-1.611 568-28.906 568 57.947c0 17.346-9.945 145.713-15.778 166.555-20.275 72.453-94.155 90.933-159.875 79.748C507.222 323.8 536.444 388.56 473.333 453.32c-119.86 122.992-172.272-30.859-185.702-70.281-2.462-7.227-3.614-10.608-3.631-7.733-.017-2.875-1.169.506-3.631 7.733-13.43 39.422-65.842 193.273-185.702 70.281-63.111-64.76-33.89-129.52 80.986-149.071-65.72 11.185-139.6-7.295-159.875-79.748C9.945 203.659 0 75.291 0 57.946 0-28.906 76.135-1.612 123.121 33.664Z" + ></path> + </svg> +); + +export default Bluesky; diff --git a/apps/site/components/__design__/social-logos.stories.tsx b/apps/site/components/__design__/social-logos.stories.tsx index 7f1a5c1288fc9..e2699163c1451 100644 --- a/apps/site/components/__design__/social-logos.stories.tsx +++ b/apps/site/components/__design__/social-logos.stories.tsx @@ -1,5 +1,6 @@ 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'; @@ -17,6 +18,7 @@ export const SocialMediaLogos: StoryObj = { <div className="flex flex-col items-center gap-4"> <Slack width={64} height={64} /> <Twitter width={64} height={64} /> + <Bluesky width={64} height={64} /> </div> </div> ), diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 6168c078438d5..c8a8ef2172f3b 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -68,6 +68,11 @@ "link": "https://twitter.com/nodejs", "alt": "Twitter" }, + { + "icon": "bluesky", + "link": "https://bsky.app/profile/nodejs.org", + "alt": "Bluesky" + }, { "icon": "slack", "link": "https://slack-invite.openjsf.org/", From 37c7da132d64e8a5906fc80437df43b7fc9a65f1 Mon Sep 17 00:00:00 2001 From: flakey5 <73616808+flakey5@users.noreply.github.com> Date: Fri, 15 Nov 2024 20:36:19 -0800 Subject: [PATCH 0131/1385] meta: link status page in issue contact links (#7225) Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/config.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 922db7330cb2b..ce6f540b49da4 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,8 @@ blank_issues_enabled: true contact_links: + - name: Node.js Status Page + url: https://status.nodejs.org + about: 'Need to check if there is any ongoing incidents?' - name: Report an API Docs Issue on the Node.js Website url: https://github.com/nodejs/node/issues/new?assignees=&labels=doc&template=3-api-ref-docs-problem.yml about: 'Is something wrong with the API Docs? Did you face a bug with the API Docs?' From d67507edba1d0eb73f3ec04ebd4aebaf6ecd82fc Mon Sep 17 00:00:00 2001 From: TenzDelek <122612557+TenzDelek@users.noreply.github.com> Date: Sat, 16 Nov 2024 10:07:26 +0530 Subject: [PATCH 0132/1385] fix the inconsistency in Development start command between Contributing Guide and README (#7224) * fix the start dev command * doc changes * revert the contributing md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a5d4cde858f9e..9ae2467fb6fd2 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ ```bash npm ci -npx turbo dev +npm run dev # listening at localhost:3000 ``` From 83081efa4cde77626228c2709d2585cd554431af Mon Sep 17 00:00:00 2001 From: Kunal Kumar <kunaldevspro@gmail.com> Date: Sat, 16 Nov 2024 15:51:32 +0530 Subject: [PATCH 0133/1385] content: clarify `process.nextTick()` timing (#7204) --- .../learn/asynchronous-work/understanding-processnexttick.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/understanding-processnexttick.md b/apps/site/pages/en/learn/asynchronous-work/understanding-processnexttick.md index 5ae90951d507b..d37983c022ad4 100644 --- a/apps/site/pages/en/learn/asynchronous-work/understanding-processnexttick.md +++ b/apps/site/pages/en/learn/asynchronous-work/understanding-processnexttick.md @@ -6,9 +6,10 @@ authors: flaviocopes, MylesBorins, LaRuaNa, ahmadawais, ovflowd, marksist300 # Understanding process.nextTick() -As you try to understand the Node.js event loop, one important part of it is `process.nextTick()`. Every time the event loop takes a full trip, we call it a tick. +As you try to understand the Node.js event loop, one important part of it is `process.nextTick()`. +Every time the runtime calls back into JavaScript for an event, we call it a tick. -When we pass a function to `process.nextTick()`, we instruct the engine to invoke this function at the end of the current operation, before the next event loop tick starts: +When we pass a function to `process.nextTick()`, we instruct the engine to invoke this function immediately after the current operation completes, before moving to the next phase in the event loop: ```js process.nextTick(() => { From bc3b2a962a3fd3fd9f1699ba2789eac826b6bed0 Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Mon, 18 Nov 2024 19:34:30 +0300 Subject: [PATCH 0134/1385] feat: Introducing avatar tooltip (#7143) * feat: tooltip component and avatar tooltip * chore: metabar story props updated * chore: self review * chore: self review * refactor: class names * refactor: horizontal margin added * feat: accessible avatars on mobile * feat: default author url * refactor: review updates * chore: self review * refactor: design and review updates * fix: Avatars in MetaBar story * refactor: review updates * fix: opening the tooltip portal within the dialog * fix: adjusting visible avatar count * refactor: review updates * Update apps/site/util/authorUtils.ts Co-authored-by: Claudio W <cwunder@gnome.org> Signed-off-by: Caner Akdas <canerakdas@gmail.com> * refactor: enhancing code readability * refactor: review update --------- Signed-off-by: Caner Akdas <canerakdas@gmail.com> Co-authored-by: Claudio W <cwunder@gnome.org> --- .../AvatarGroup/Avatar/index.module.css | 36 ++- .../AvatarGroup/Avatar/index.stories.tsx | 13 +- .../Common/AvatarGroup/Avatar/index.tsx | 62 +++-- .../AvatarGroup/Overlay/index.module.css | 29 +++ .../AvatarGroup/Overlay/index.stories.tsx | 21 ++ .../Common/AvatarGroup/Overlay/index.tsx | 36 +++ .../AvatarGroup/__tests__/index.test.mjs | 4 +- .../Common/AvatarGroup/index.stories.tsx | 12 +- .../components/Common/AvatarGroup/index.tsx | 47 ++-- .../BlogPostCard/__tests__/index.test.mjs | 18 +- .../Common/BlogPostCard/index.module.css | 4 + .../Common/BlogPostCard/index.stories.tsx | 15 +- .../components/Common/BlogPostCard/index.tsx | 13 +- .../Common/Tooltip/index.module.css | 41 ++++ .../Common/Tooltip/index.stories.tsx | 74 ++++++ apps/site/components/Common/Tooltip/index.tsx | 48 ++++ .../Containers/MetaBar/index.stories.tsx | 11 +- .../Downloads/Release/LinkWithArrow.tsx | 4 +- apps/site/components/withAvatarGroup.tsx | 31 +++ apps/site/components/withBlogCategories.tsx | 2 +- apps/site/components/withMetaBar.tsx | 27 ++- apps/site/layouts/Post.tsx | 19 +- apps/site/next.config.mjs | 1 + apps/site/package.json | 1 + apps/site/types/author.ts | 12 + apps/site/types/config.ts | 6 - apps/site/types/index.ts | 1 + apps/site/util/__tests__/authorUtils.test.mjs | 98 ++++++++ apps/site/util/__tests__/blogUtils.test.mjs | 82 ------- apps/site/util/authorUtils.ts | 79 +++++++ apps/site/util/blogUtils.ts | 18 -- package-lock.json | 211 ++++++++++++++++++ 32 files changed, 845 insertions(+), 231 deletions(-) create mode 100644 apps/site/components/Common/AvatarGroup/Overlay/index.module.css create mode 100644 apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx create mode 100644 apps/site/components/Common/AvatarGroup/Overlay/index.tsx create mode 100644 apps/site/components/Common/Tooltip/index.module.css create mode 100644 apps/site/components/Common/Tooltip/index.stories.tsx create mode 100644 apps/site/components/Common/Tooltip/index.tsx create mode 100644 apps/site/components/withAvatarGroup.tsx create mode 100644 apps/site/types/author.ts create mode 100644 apps/site/util/__tests__/authorUtils.test.mjs delete mode 100644 apps/site/util/__tests__/blogUtils.test.mjs create mode 100644 apps/site/util/authorUtils.ts diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.module.css b/apps/site/components/Common/AvatarGroup/Avatar/index.module.css index 616144b872ba2..3e7bdb6bb98ef 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.module.css +++ b/apps/site/components/Common/AvatarGroup/Avatar/index.module.css @@ -1,6 +1,11 @@ -.avatar { - @apply flex - size-8 +.item { + @apply xs:max-h-10 + xs:max-w-10 + flex + h-full + max-h-12 + w-full + max-w-12 items-center justify-center rounded-full @@ -15,9 +20,26 @@ dark:text-neutral-300; } -.avatarRoot { - @apply -ml-2 - size-8 - flex-shrink-0 +.avatar { + @apply size-8 + flex-shrink-0; + + .wrapper { + @apply max-xs:block + max-xs:py-0; + } +} + +.small { + @apply xs:size-8 + xs:-ml-2 + ml-0.5 + size-10 + first:ml-0; +} + +.medium { + @apply -ml-2.5 + size-10 first:ml-0; } diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx b/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx index 7f3a6430d87b8..8f72650102c0f 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx +++ b/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx @@ -8,22 +8,23 @@ type Meta = MetaObj<typeof Avatar>; export const Default: Story = { args: { - src: getGitHubAvatarUrl('ovflowd'), - alt: 'ovflowd', + image: getGitHubAvatarUrl('ovflowd'), + nickname: 'ovflowd', }, }; export const NoSquare: Story = { args: { - src: '/static/images/logos/nodejs.png', - alt: 'SD', + image: '/static/images/logo-hexagon-card.png', + nickname: 'SD', }, }; export const FallBack: Story = { args: { - src: 'https://avatars.githubusercontent.com/u/', - alt: 'UA', + image: 'https://avatars.githubusercontent.com/u/', + nickname: 'John Doe', + fallback: 'JD', }, }; diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx b/apps/site/components/Common/AvatarGroup/Avatar/index.tsx index 4837f9b40b585..c992fab126f5c 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx +++ b/apps/site/components/Common/AvatarGroup/Avatar/index.tsx @@ -1,27 +1,53 @@ import * as RadixAvatar from '@radix-ui/react-avatar'; -import type { FC } from 'react'; +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 = { - src: string; - alt: string; - fallback: string; + image?: string; + name?: string; + nickname: string; + fallback?: string; + size?: 'small' | 'medium'; + url?: string; }; -const Avatar: FC<AvatarProps> = ({ src, alt, fallback }) => ( - <RadixAvatar.Root className={styles.avatarRoot}> - <RadixAvatar.Image - loading="lazy" - src={src} - alt={alt} - title={alt} - className={styles.avatar} - /> - <RadixAvatar.Fallback delayMs={500} className={styles.avatar}> - {fallback} - </RadixAvatar.Fallback> - </RadixAvatar.Root> -); +const Avatar = forwardRef< + ElementRef<typeof RadixAvatar.Root>, + ComponentPropsWithoutRef<typeof RadixAvatar.Root> & AvatarProps +>(({ image, nickname, name, fallback, url, size = 'small', ...props }, ref) => { + const Wrapper = url ? Link : 'div'; + + return ( + <RadixAvatar.Root + {...props} + className={classNames(styles.avatar, styles[size], props.className)} + ref={ref} + > + <Wrapper + href={url || undefined} + target={url ? '_blank' : undefined} + className={styles.wrapper} + > + <RadixAvatar.Image + loading="lazy" + src={image} + alt={name || nickname} + className={styles.item} + /> + <RadixAvatar.Fallback + delayMs={500} + className={classNames(styles.item, styles[size])} + > + {fallback} + </RadixAvatar.Fallback> + </Wrapper> + </RadixAvatar.Root> + ); +}); export default Avatar; diff --git a/apps/site/components/Common/AvatarGroup/Overlay/index.module.css b/apps/site/components/Common/AvatarGroup/Overlay/index.module.css new file mode 100644 index 0000000000000..7c8188658b62c --- /dev/null +++ b/apps/site/components/Common/AvatarGroup/Overlay/index.module.css @@ -0,0 +1,29 @@ +.overlay { + @apply flex + min-w-56 + items-center + gap-2 + p-3; +} + +.user { + @apply grow; +} + +.name { + @apply font-semibold + text-neutral-900 + dark:text-neutral-300; +} + +.nickname { + @apply font-medium + text-neutral-700 + dark:text-neutral-500; +} + +.arrow { + @apply w-3 + fill-neutral-600 + dark:fill-white; +} diff --git a/apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx b/apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx new file mode 100644 index 0000000000000..1c462999ccd77 --- /dev/null +++ b/apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx @@ -0,0 +1,21 @@ +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<typeof AvatarOverlay>; +type Meta = MetaObj<typeof AvatarOverlay>; + +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/AvatarGroup/Overlay/index.tsx b/apps/site/components/Common/AvatarGroup/Overlay/index.tsx new file mode 100644 index 0000000000000..a622c9ebe1c58 --- /dev/null +++ b/apps/site/components/Common/AvatarGroup/Overlay/index.tsx @@ -0,0 +1,36 @@ +import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; +import type { ComponentProps, FC } from 'react'; + +import Avatar from '@/components/Common/AvatarGroup/Avatar'; +import Link from '@/components/Link'; + +import styles from './index.module.css'; + +export type AvatarOverlayProps = ComponentProps<typeof Avatar> & { + url?: string; +}; + +const AvatarOverlay: FC<AvatarOverlayProps> = ({ + image, + name, + nickname, + fallback, + url, +}) => ( + <Link className={styles.overlay} href={url} target="_blank"> + <Avatar + image={image} + name={name} + nickname={nickname} + fallback={fallback} + size="medium" + /> + <div className={styles.user}> + {name && <div className={styles.name}>{name}</div>} + {nickname && <div className={styles.nickname}>{nickname}</div>} + </div> + <ArrowUpRightIcon className={styles.arrow} /> + </Link> +); + +export default AvatarOverlay; diff --git a/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs b/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs index f04c7c1dbeb26..3ba01e856f083 100644 --- a/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs +++ b/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs @@ -22,8 +22,8 @@ const names = [ ]; const avatars = names.map(name => ({ - src: getGitHubAvatarUrl(name), - alt: name, + image: getGitHubAvatarUrl(name), + nickname: name, })); describe('AvatarGroup', () => { diff --git a/apps/site/components/Common/AvatarGroup/index.stories.tsx b/apps/site/components/Common/AvatarGroup/index.stories.tsx index 6aef57bb904ed..0065bf2f3f009 100644 --- a/apps/site/components/Common/AvatarGroup/index.stories.tsx +++ b/apps/site/components/Common/AvatarGroup/index.stories.tsx @@ -1,7 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import AvatarGroup from '@/components/Common/AvatarGroup'; -import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; +import { getAuthorWithId } from '@/util/authorUtils'; type Story = StoryObj<typeof AvatarGroup>; type Meta = MetaObj<typeof AvatarGroup>; @@ -24,15 +24,13 @@ const names = [ ]; const unknownAvatar = { - src: 'https://avatars.githubusercontent.com/u/', - alt: 'unknown-avatar', + image: 'https://avatars.githubusercontent.com/u/', + nickname: 'unknown-avatar', + fallback: 'UA', }; const defaultProps = { - avatars: [ - unknownAvatar, - ...names.map(name => ({ src: getGitHubAvatarUrl(name), alt: name })), - ], + avatars: [unknownAvatar, ...getAuthorWithId(names, true)], }; export const Default: Story = { diff --git a/apps/site/components/Common/AvatarGroup/index.tsx b/apps/site/components/Common/AvatarGroup/index.tsx index 4dea98b700d5d..87f8765f62a65 100644 --- a/apps/site/components/Common/AvatarGroup/index.tsx +++ b/apps/site/components/Common/AvatarGroup/index.tsx @@ -1,25 +1,31 @@ 'use client'; import classNames from 'classnames'; -import type { ComponentProps, FC } from 'react'; -import { useState, useMemo } from 'react'; +import type { FC } from 'react'; +import { useState, useMemo, Fragment } from 'react'; +import type { AvatarProps } from '@/components/Common/AvatarGroup/Avatar'; import Avatar from '@/components/Common/AvatarGroup/Avatar'; import avatarstyles from '@/components/Common/AvatarGroup/Avatar/index.module.css'; -import { getAcronymFromString } from '@/util/stringUtils'; +import AvatarOverlay from '@/components/Common/AvatarGroup/Overlay'; +import Tooltip from '@/components/Common/Tooltip'; import styles from './index.module.css'; type AvatarGroupProps = { - avatars: Array<Omit<ComponentProps<typeof Avatar>, 'fallback'>>; + avatars: Array<AvatarProps>; limit?: number; isExpandable?: boolean; + size?: AvatarProps['size']; + container?: HTMLElement; }; const AvatarGroup: FC<AvatarGroupProps> = ({ avatars, limit = 10, isExpandable = true, + size = 'small', + container, }) => { const [showMore, setShowMore] = useState(false); @@ -30,21 +36,34 @@ const AvatarGroup: FC<AvatarGroupProps> = ({ return ( <div className={styles.avatarGroup}> - {renderAvatars.map((avatar, index) => ( - <Avatar - src={avatar.src} - alt={avatar.alt} - fallback={getAcronymFromString(avatar.alt)} - key={index} - /> + {renderAvatars.map(({ ...avatar }) => ( + <Fragment key={avatar.nickname}> + <Tooltip + asChild + container={container} + content={<AvatarOverlay {...avatar} />} + > + <Avatar + {...avatar} + size={size} + className={classNames({ + 'cursor-pointer': avatar.url, + 'pointer-events-none': !avatar.url, + })} + /> + </Tooltip> + </Fragment> ))} - {avatars.length > limit && ( <span onClick={isExpandable ? () => setShowMore(prev => !prev) : undefined} - className={classNames(avatarstyles.avatarRoot, 'cursor-pointer')} + className={classNames( + avatarstyles.avatar, + avatarstyles[size], + 'cursor-pointer' + )} > - <span className={avatarstyles.avatar}> + <span className={avatarstyles.item}> {`${showMore ? '-' : '+'}${avatars.length - limit}`} </span> </span> diff --git a/apps/site/components/Common/BlogPostCard/__tests__/index.test.mjs b/apps/site/components/Common/BlogPostCard/__tests__/index.test.mjs index f6a45912ae3a7..e4752d4b09dc9 100644 --- a/apps/site/components/Common/BlogPostCard/__tests__/index.test.mjs +++ b/apps/site/components/Common/BlogPostCard/__tests__/index.test.mjs @@ -65,38 +65,32 @@ describe('BlogPostCard', () => { ); it('Renders all passed authors fullName(s), comma-separated', () => { - const authors = [ - { fullName: 'Jane Doe', src: '' }, - { fullName: 'John Doe', src: '' }, - ]; + const authors = ['Jane Doe', 'John Doe']; renderBlogPostCard({ authors }); const fullNames = authors.reduce((prev, curr, index) => { if (index === 0) { - return curr.fullName; + return curr; } - return `${prev}, ${curr.fullName}`; + return `${prev}, ${curr}`; }, ''); expect(screen.getByText(fullNames)).toBeVisible(); }); it('Renders all passed authors fullName(s), comma-separated', () => { - const authors = [ - { fullName: 'Jane Doe', src: '' }, - { fullName: 'John Doe', src: '' }, - ]; + const authors = ['Jane Doe', 'John Doe']; renderBlogPostCard({ authors }); const fullNames = authors.reduce((prev, curr, index) => { if (index === 0) { - return curr.fullName; + return curr; } - return `${prev}, ${curr.fullName}`; + return `${prev}, ${curr}`; }, ''); expect(screen.getByText(fullNames)).toBeVisible(); diff --git a/apps/site/components/Common/BlogPostCard/index.module.css b/apps/site/components/Common/BlogPostCard/index.module.css index a2c84c21e5835..178d193cda6e7 100644 --- a/apps/site/components/Common/BlogPostCard/index.module.css +++ b/apps/site/components/Common/BlogPostCard/index.module.css @@ -33,6 +33,10 @@ .footer { @apply flex gap-x-3; + + div:first-child { + @apply overflow-visible; + } } .author { diff --git a/apps/site/components/Common/BlogPostCard/index.stories.tsx b/apps/site/components/Common/BlogPostCard/index.stories.tsx index 0311c67453386..dca5f00ccaa1c 100644 --- a/apps/site/components/Common/BlogPostCard/index.stories.tsx +++ b/apps/site/components/Common/BlogPostCard/index.stories.tsx @@ -11,12 +11,7 @@ export const Default: Story = { category: 'vulnerability', description: 'Starting on March 15th and going through to March 17th (with much of the issue being mitigated on the 16th), users were receiving intermittent 404 responses when trying to download Node.js from nodejs.org, or even accessing parts of the website.', - authors: [ - { - fullName: 'Hayden Bleasel', - src: 'https://avatars.githubusercontent.com/u/', - }, - ], + authors: ['Claudio Wunder'], slug: '/blog/vulnerability/something', date: new Date('17 October 2023'), }, @@ -33,13 +28,7 @@ export const MoreThanOneAuthor: Story = { ...Default, args: { ...Default.args, - authors: [ - ...(Default.args?.authors ?? []), - { - fullName: 'Jane Doe', - src: 'https://avatars.githubusercontent.com/u/', - }, - ], + authors: [...(Default.args?.authors ?? []), 'Brian Muenzenmeyer'], }, }; diff --git a/apps/site/components/Common/BlogPostCard/index.tsx b/apps/site/components/Common/BlogPostCard/index.tsx index 2065f0b20d5d2..4f8696dd20565 100644 --- a/apps/site/components/Common/BlogPostCard/index.tsx +++ b/apps/site/components/Common/BlogPostCard/index.tsx @@ -1,22 +1,19 @@ import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import AvatarGroup from '@/components/Common/AvatarGroup'; 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'; import styles from './index.module.css'; -// @todo: this should probably be a global type? -type Author = { fullName: string; src: string }; - type BlogPostCardProps = { title: string; category: string; description?: string; - authors?: Array<Author>; + authors?: Array<string>; date?: Date; slug?: string; }; @@ -31,8 +28,6 @@ const BlogPostCard: FC<BlogPostCardProps> = ({ }) => { const t = useTranslations(); - const avatars = authors.map(({ fullName, src }) => ({ alt: fullName, src })); - const type = mapBlogCategoryToPreviewType(category); return ( @@ -52,10 +47,10 @@ const BlogPostCard: FC<BlogPostCardProps> = ({ {description && <p className={styles.description}>{description}</p>} <footer className={styles.footer}> - <AvatarGroup avatars={avatars ?? []} /> + <WithAvatarGroup names={authors} size="medium" clickable={false} /> <div className={styles.author}> - {avatars && <p>{avatars.map(({ alt }) => alt).join(', ')}</p>} + {authors && <p>{authors.join(', ')}</p>} {date && <FormattedTime date={date} />} </div> diff --git a/apps/site/components/Common/Tooltip/index.module.css b/apps/site/components/Common/Tooltip/index.module.css new file mode 100644 index 0000000000000..475db244ae82b --- /dev/null +++ b/apps/site/components/Common/Tooltip/index.module.css @@ -0,0 +1,41 @@ +.content { + @apply rounded-md + border + bg-white + text-sm + font-medium + text-neutral-900 + shadow-lg + dark:bg-neutral-950 + dark:text-white; + + &.default { + @apply border-neutral-200 + dark:border-neutral-900; + + .arrow { + @apply fill-neutral-200 + dark:fill-neutral-900; + } + } + + &.error { + @apply border-danger-400 + dark:border-danger-900; + + .arrow { + @apply fill-danger-400 + dark:fill-danger-900; + } + } + + &.warning { + @apply border-warning-400 + dark:border-warning-900; + + .arrow { + @apply fill-warning-400 + dark:fill-warning-900; + } + } +} diff --git a/apps/site/components/Common/Tooltip/index.stories.tsx b/apps/site/components/Common/Tooltip/index.stories.tsx new file mode 100644 index 0000000000000..f37905ad80603 --- /dev/null +++ b/apps/site/components/Common/Tooltip/index.stories.tsx @@ -0,0 +1,74 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import Button from '@/components/Common/Button'; +import Tooltip from '@/components/Common/Tooltip'; + +type Story = StoryObj<typeof Tooltip>; +type Meta = MetaObj<typeof Tooltip>; + +const defaultProps = { + children: <Button>Rocket Turtle</Button>, + content: <div className="p-3">🚀 🐢</div>, +}; + +export const Default: Story = { + args: defaultProps, +}; + +export const Warning: Story = { + args: { + ...defaultProps, + kind: 'warning', + }, +}; + +export const Error: Story = { + args: { + ...defaultProps, + kind: 'error', + }, +}; + +export const LeftSide: Story = { + args: { + ...defaultProps, + side: 'left', + }, + decorators: [ + Story => ( + <div className="flex w-72 justify-end"> + <Story /> + </div> + ), + ], +}; + +export const RightSide: Story = { + args: { + ...defaultProps, + side: 'left', + }, + decorators: [ + Story => ( + <div className="flex w-72 justify-start"> + <Story /> + </div> + ), + ], +}; + +export const TopSide: Story = { + args: { + ...defaultProps, + side: 'top', + }, + decorators: [ + Story => ( + <div className="flex h-72 items-end"> + <Story /> + </div> + ), + ], +}; + +export default { component: Tooltip } as Meta; diff --git a/apps/site/components/Common/Tooltip/index.tsx b/apps/site/components/Common/Tooltip/index.tsx new file mode 100644 index 0000000000000..ae1094b63f0b8 --- /dev/null +++ b/apps/site/components/Common/Tooltip/index.tsx @@ -0,0 +1,48 @@ +import * as TooltipPrimitive from '@radix-ui/react-tooltip'; +import classNames from 'classnames'; +import type { ComponentProps, FC, PropsWithChildren, ReactNode } from 'react'; + +import styles from './index.module.css'; + +type TooltipProps = { + asChild?: boolean; + content: ReactNode; + kind?: 'default' | 'warning' | 'error'; + side?: ComponentProps<typeof TooltipPrimitive.Content>['side']; + container?: HTMLElement | null; +}; + +const Tooltip: FC<PropsWithChildren<TooltipProps>> = ({ + kind = 'default', + children, + content, + asChild = false, + side = 'bottom', + container, +}) => ( + <TooltipPrimitive.Provider delayDuration={200}> + <TooltipPrimitive.Root> + <TooltipPrimitive.Trigger asChild={asChild}> + {children} + </TooltipPrimitive.Trigger> + <TooltipPrimitive.Portal container={container}> + <TooltipPrimitive.Content + side={side} + sideOffset={4} + className={classNames(styles[kind], styles.content, { + 'mx-1.5': side === 'top' || side === 'bottom', + })} + > + {content} + <TooltipPrimitive.Arrow + className={styles.arrow} + width={14} + height={6} + /> + </TooltipPrimitive.Content> + </TooltipPrimitive.Portal> + </TooltipPrimitive.Root> + </TooltipPrimitive.Provider> +); + +export default Tooltip; diff --git a/apps/site/components/Containers/MetaBar/index.stories.tsx b/apps/site/components/Containers/MetaBar/index.stories.tsx index bf2ca8ac0e7d8..9d31de185720c 100644 --- a/apps/site/components/Containers/MetaBar/index.stories.tsx +++ b/apps/site/components/Containers/MetaBar/index.stories.tsx @@ -1,11 +1,10 @@ import { CodeBracketIcon } from '@heroicons/react/24/outline'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import AvatarGroup from '@/components/Common/AvatarGroup'; import MetaBar from '@/components/Containers/MetaBar'; import GitHub from '@/components/Icons/Social/GitHub'; import Link from '@/components/Link'; -import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; +import WithAvatarGroup from '@/components/withAvatarGroup'; type Story = StoryObj<typeof MetaBar>; type Meta = MetaObj<typeof MetaBar>; @@ -37,13 +36,7 @@ export const Default: Story = { 'components.metabar.addedIn': 'v1.0.0', 'components.metabar.author': 'The Node.js Project', 'components.metabar.authors': ( - <AvatarGroup - avatars={names.map(name => ({ - src: getGitHubAvatarUrl(name), - alt: name, - }))} - limit={8} - /> + <WithAvatarGroup usernames={names} limit={6} /> ), 'components.metabar.contribute': ( <> diff --git a/apps/site/components/Downloads/Release/LinkWithArrow.tsx b/apps/site/components/Downloads/Release/LinkWithArrow.tsx index 4910383ad52d3..fb44bef842c21 100644 --- a/apps/site/components/Downloads/Release/LinkWithArrow.tsx +++ b/apps/site/components/Downloads/Release/LinkWithArrow.tsx @@ -18,10 +18,10 @@ const LinkWithArrow: FC<PropsWithChildren<LinkWithArrowProps>> = ({ return ( <Comp {...props}> - <> + <span> {children} <ArrowUpRightIcon className="ml-1 inline w-3 fill-neutral-600 dark:fill-white" /> - </> + </span> </Comp> ); }; diff --git a/apps/site/components/withAvatarGroup.tsx b/apps/site/components/withAvatarGroup.tsx new file mode 100644 index 0000000000000..b0ff4b96ef6b6 --- /dev/null +++ b/apps/site/components/withAvatarGroup.tsx @@ -0,0 +1,31 @@ +'use client'; + +import type { ComponentProps, FC } from 'react'; + +import AvatarGroup from '@/components/Common/AvatarGroup'; +import type { AuthorProps } from '@/types'; +import { getAuthors } from '@/util/authorUtils'; + +type WithAvatarGroupProps = Omit< + ComponentProps<typeof AvatarGroup>, + 'avatars' +> & + AuthorProps; + +const WithAvatarGroup: FC<WithAvatarGroupProps> = ({ + usernames, + names, + clickable = true, + ...props +}) => ( + <AvatarGroup + avatars={getAuthors({ + usernames: usernames, + names: names, + clickable: clickable, + })} + {...props} + /> +); + +export default WithAvatarGroup; diff --git a/apps/site/components/withBlogCategories.tsx b/apps/site/components/withBlogCategories.tsx index 7be3f6a890a6a..f061e93013187 100644 --- a/apps/site/components/withBlogCategories.tsx +++ b/apps/site/components/withBlogCategories.tsx @@ -5,7 +5,7 @@ import BlogPostCard from '@/components/Common/BlogPostCard'; import LinkTabs from '@/components/Common/LinkTabs'; import Pagination from '@/components/Common/Pagination'; import type { BlogPostsRSC } from '@/types'; -import { mapAuthorToCardAuthors } from '@/util/blogUtils'; +import { mapAuthorToCardAuthors } from '@/util/authorUtils'; type WithBlogCategoriesProps = { categories: ComponentProps<typeof LinkTabs>['tabs']; diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index 543d901d55f4b..1c895179c5b31 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -2,14 +2,14 @@ import { useFormatter } from 'next-intl'; import type { FC } from 'react'; -import AvatarGroup from '@/components/Common/AvatarGroup'; 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'; import useMediaQuery from '@/hooks/react-client/useMediaQuery'; import { DEFAULT_DATE_FORMAT } from '@/next.calendar.constants.mjs'; -import { getGitHubBlobUrl, getGitHubAvatarUrl } from '@/util/gitHubUtils'; +import { getGitHubBlobUrl } from '@/util/gitHubUtils'; const WithMetaBar: FC = () => { const { headings, readingTime, frontmatter, filename } = useClientContext(); @@ -20,13 +20,12 @@ const WithMetaBar: FC = () => { const usernames = frontmatter.authors?.split(',').map(author => author.trim()) ?? []; - const avatars = usernames.map(username => ({ - src: getGitHubAvatarUrl(username), - alt: username, - })); - // Doing that because on mobile list on top of page and on desktop list on the right side - const shortAvatarList = useMediaQuery( + // Since we cannot show the same number of avatars in Mobile / Tablet + // resolution as we do on desktop and there is overflow, we are adjusting + // the number of avatars manually for the resolutions below + const isMobileResolution = useMediaQuery('(max-width: 670px)'); + const isTabletResolution = useMediaQuery( '(min-width: 670px) and (max-width: 1280px)' ); @@ -35,10 +34,14 @@ const WithMetaBar: FC = () => { items={{ 'components.metabar.lastUpdated': lastUpdated, 'components.metabar.readingTime': readingTime.text, - ...(avatars.length && { - [`components.metabar.${avatars.length > 1 ? 'authors' : 'author'}`]: ( - <AvatarGroup avatars={avatars} limit={shortAvatarList ? 4 : 8} /> - ), + ...(usernames.length && { + [`components.metabar.${usernames.length > 1 ? 'authors' : 'author'}`]: + ( + <WithAvatarGroup + usernames={usernames} + limit={isMobileResolution ? 7 : isTabletResolution ? 5 : 9} + /> + ), }), 'components.metabar.contribute': ( <> diff --git a/apps/site/layouts/Post.tsx b/apps/site/layouts/Post.tsx index e6cd3fc715949..ff74db2eea28c 100644 --- a/apps/site/layouts/Post.tsx +++ b/apps/site/layouts/Post.tsx @@ -1,16 +1,14 @@ import type { FC, PropsWithChildren } from 'react'; -import AvatarGroup from '@/components/Common/AvatarGroup'; import Preview from '@/components/Common/Preview'; +import WithAvatarGroup from '@/components/withAvatarGroup'; import WithBlogCrossLinks from '@/components/withBlogCrossLinks'; import WithFooter from '@/components/withFooter'; import WithMetaBar from '@/components/withMetaBar'; import WithNavBar from '@/components/withNavBar'; import { useClientContext } from '@/hooks/react-server'; -import { - mapAuthorToCardAuthors, - mapBlogCategoryToPreviewType, -} from '@/util/blogUtils'; +import { mapAuthorToCardAuthors } from '@/util/authorUtils'; +import { mapBlogCategoryToPreviewType } from '@/util/blogUtils'; import styles from './layouts.module.css'; @@ -31,14 +29,9 @@ const PostLayout: FC<PropsWithChildren> = ({ children }) => { <h1>{frontmatter.title}</h1> <section> - <AvatarGroup - avatars={authors.map(author => ({ - alt: author.fullName, - src: author.src, - }))} - /> - - <p>{authors.map(author => author.fullName).join(', ')}</p> + <WithAvatarGroup names={authors} /> + + <p>{authors.join(', ')}</p> </section> <Preview title={frontmatter.title!} type={type} /> diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index 5aa0a41b6bd45..245c905ab71a5 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -90,6 +90,7 @@ const nextConfig = { '@radix-ui/react-slot', '@radix-ui/react-tabs', '@radix-ui/react-toast', + '@radix-ui/react-tooltip', '@orama/highlight', '@heroicons/react', 'tailwindcss', diff --git a/apps/site/package.json b/apps/site/package.json index 0f83ed9671373..37dffb4c55a99 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -52,6 +52,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", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", diff --git a/apps/site/types/author.ts b/apps/site/types/author.ts new file mode 100644 index 0000000000000..9027163bc243f --- /dev/null +++ b/apps/site/types/author.ts @@ -0,0 +1,12 @@ +export interface AuthorProps { + names?: Array<string>; + usernames?: Array<string>; + clickable?: boolean; + container?: HTMLElement | null; +} + +export interface Author { + id: string; + name: string; + website?: string; +} diff --git a/apps/site/types/config.ts b/apps/site/types/config.ts index 2d02e81e5da45..f307d15457aab 100644 --- a/apps/site/types/config.ts +++ b/apps/site/types/config.ts @@ -29,9 +29,3 @@ export interface SiteConfig { websiteBanners: Record<string, WebsiteBanner>; websiteBadges: Record<string, WebsiteBadge>; } - -export interface Author { - id: string; - name: string; - website: string; -} diff --git a/apps/site/types/index.ts b/apps/site/types/index.ts index 567d44d0e088a..28cee2cbc8130 100644 --- a/apps/site/types/index.ts +++ b/apps/site/types/index.ts @@ -11,3 +11,4 @@ export * from './server'; export * from './github'; export * from './calendar'; export * from './search'; +export * from './author'; diff --git a/apps/site/util/__tests__/authorUtils.test.mjs b/apps/site/util/__tests__/authorUtils.test.mjs new file mode 100644 index 0000000000000..7a5a41d35db3a --- /dev/null +++ b/apps/site/util/__tests__/authorUtils.test.mjs @@ -0,0 +1,98 @@ +import { + mapAuthorToCardAuthors, + getAuthorWithId, + getAuthorWithName, +} from '../authorUtils'; + +describe('mapAuthorToCardAuthors', () => { + it('maps authors to card authors with default avatar source', () => { + const author = 'John Doe'; + + const result = mapAuthorToCardAuthors(author); + + expect(result).toEqual(['John Doe']); + }); + + it('handles multiple authors separated by various delimiters', () => { + const author = 'Alice, Bob, Charlie, David'; + + const result = mapAuthorToCardAuthors(author); + expect(result).toEqual(['Alice', 'Bob', 'Charlie', 'David']); + }); + + describe('when has more than one author', () => { + it.each([ + ['Timothy J Fontaine, John Doe'], + ['Timothy J Fontaine and John Doe'], + ['Timothy J Fontaine;John Doe'], + ['Timothy J Fontaine & John Doe'], + ['Timothy J Fontaine by John Doe'], + ['Timothy J Fontaine prepared by John Doe'], + ['Timothy J Fontaine (@TimothyJFontaine) & John Doe (@JohnDoe)'], + ['Timothy J Fontaine (TimothyJFontaine) & John Doe (JohnDoe)'], + ])('returns the correct card authors', author => { + const result = mapAuthorToCardAuthors(author); + + expect(result).toStrictEqual(['Timothy J Fontaine', 'John Doe']); + }); + }); + + describe('when the author name does not have GitHub username', () => { + it('returns the correct card authors', () => { + const result = mapAuthorToCardAuthors('John Doe, Jane Doe'); + + expect(result).toStrictEqual(['John Doe', 'Jane Doe']); + }); + }); + + describe('when the author name has GitHub username', () => { + it('returns the correct card authors', () => { + const result = mapAuthorToCardAuthors('Timothy J Fontaine'); + + expect(result).toStrictEqual(['Timothy J Fontaine']); + }); + }); +}); + +describe('getAuthorWithId', () => { + it('should return author details when author is found', () => { + const result = getAuthorWithId(['nodejs'], true); + + expect(result).toEqual([ + { + name: 'The Node.js Project', + nickname: 'nodejs', + fallback: 'TNJP', + url: 'https://github.com/nodejs', + image: 'https://avatars.githubusercontent.com/nodejs', + }, + ]); + }); +}); + +describe('getAuthorWithName', () => { + it('should return author details when author is found', () => { + const result = getAuthorWithName(['The Node.js Project'], true); + + expect(result).toEqual([ + { + name: 'The Node.js Project', + nickname: 'nodejs', + fallback: 'TNJP', + url: 'https://github.com/nodejs', + image: 'https://avatars.githubusercontent.com/nodejs', + }, + ]); + }); + + it('should return fallback details when author is not found', () => { + const result = getAuthorWithName(['Caner Akdas'], true); + + expect(result).toEqual([ + { + nickname: 'Caner Akdas', + fallback: 'CA', + }, + ]); + }); +}); diff --git a/apps/site/util/__tests__/blogUtils.test.mjs b/apps/site/util/__tests__/blogUtils.test.mjs deleted file mode 100644 index 3d22068e50778..0000000000000 --- a/apps/site/util/__tests__/blogUtils.test.mjs +++ /dev/null @@ -1,82 +0,0 @@ -import { mapAuthorToCardAuthors } from '../blogUtils'; - -describe('mapAuthorToCardAuthors', () => { - it('maps authors to card authors with default avatar source', () => { - const author = 'John Doe'; - - const result = mapAuthorToCardAuthors(author); - - expect(result).toEqual([ - { - fullName: 'John Doe', - src: 'https://ui-avatars.com/api/?name=John Doe', - }, - ]); - }); - - it('handles multiple authors separated by various delimiters', () => { - const author = 'Alice, Bob, Charlie, David'; - - const result = mapAuthorToCardAuthors(author); - expect(result).toEqual([ - { fullName: 'Alice', src: 'https://ui-avatars.com/api/?name=Alice' }, - { fullName: 'Bob', src: 'https://ui-avatars.com/api/?name=Bob' }, - { fullName: 'Charlie', src: 'https://ui-avatars.com/api/?name=Charlie' }, - { fullName: 'David', src: 'https://ui-avatars.com/api/?name=David' }, - ]); - }); - - describe('when has more than one author', () => { - it.each([ - ['Timothy J Fontaine, John Doe'], - ['Timothy J Fontaine and John Doe'], - ['Timothy J Fontaine;John Doe'], - ['Timothy J Fontaine & John Doe'], - ['Timothy J Fontaine by John Doe'], - ['Timothy J Fontaine prepared by John Doe'], - ])('returns the correct card authors', author => { - const result = mapAuthorToCardAuthors(author); - - expect(result).toStrictEqual([ - { - fullName: 'Timothy J Fontaine', - src: 'https://avatars.githubusercontent.com/tjfontaine', - }, - { - fullName: 'John Doe', - src: 'https://ui-avatars.com/api/?name=John Doe', - }, - ]); - }); - }); - - describe('when the author name does not have GitHub username', () => { - it('returns the correct card authors', () => { - const result = mapAuthorToCardAuthors('John Doe, Jane Doe'); - - expect(result).toStrictEqual([ - { - fullName: 'John Doe', - src: 'https://ui-avatars.com/api/?name=John Doe', - }, - { - fullName: 'Jane Doe', - src: 'https://ui-avatars.com/api/?name=Jane Doe', - }, - ]); - }); - }); - - describe('when the author name has GitHub username', () => { - it('returns the correct card authors', () => { - const result = mapAuthorToCardAuthors('Timothy J Fontaine'); - - expect(result).toStrictEqual([ - { - fullName: 'Timothy J Fontaine', - src: 'https://avatars.githubusercontent.com/tjfontaine', - }, - ]); - }); - }); -}); diff --git a/apps/site/util/authorUtils.ts b/apps/site/util/authorUtils.ts new file mode 100644 index 0000000000000..5a346a80bad95 --- /dev/null +++ b/apps/site/util/authorUtils.ts @@ -0,0 +1,79 @@ +import { authors } from '@/next.json.mjs'; +import type { AuthorProps } from '@/types'; +import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; +import { getAcronymFromString } from '@/util/stringUtils'; + +export const mapAuthorToCardAuthors = (author: string) => { + // Clears text in parentheses + const cleanedAuthor = author.replace(/\s*\(.*?\)\s*/g, '').trim(); + + // Defines the separators such as (",", "and", ";", "&", "prepared by", "by") + const separators = /,|\band\b|;|&| prepared by | by /i; + + return cleanedAuthor + .split(separators) + .map(name => name.trim()) + .filter(Boolean); +}; + +export const getAuthorWithId = (usernames: Array<string>, hasUrl: boolean) => { + const mapIdToAuthor = (username: string) => { + const author = Object.values(authors).find( + ({ id }) => id.toLowerCase() === username.toLowerCase() + ); + + if (author) { + const { id, name, website } = author; + + return { + image: getGitHubAvatarUrl(id), + name: name, + nickname: id, + fallback: getAcronymFromString(name), + url: hasUrl ? website : undefined, + }; + } + + return { + image: getGitHubAvatarUrl(username), + nickname: username, + fallback: getAcronymFromString(username), + url: hasUrl ? `https://github.com/${username}` : undefined, + }; + }; + + return usernames.map(mapIdToAuthor); +}; + +export const getAuthorWithName = (names: Array<string>, hasUrl: boolean) => { + const mapNameToAuthor = (username: string) => { + if (Object.keys(authors).includes(username)) { + if (username in authors) { + const { id, name, website } = authors[username]; + + return { + image: getGitHubAvatarUrl(id), + name: name, + nickname: id, + fallback: getAcronymFromString(name), + url: hasUrl ? website : undefined, + }; + } + } + + return { + nickname: username, + fallback: getAcronymFromString(username), + }; + }; + + return names.map(mapNameToAuthor); +}; + +export const getAuthors = ({ usernames, names, clickable }: AuthorProps) => { + if (usernames) { + return getAuthorWithId(usernames, clickable ?? true); + } + + return getAuthorWithName(names || [], clickable ?? true); +}; diff --git a/apps/site/util/blogUtils.ts b/apps/site/util/blogUtils.ts index 2cc9a07fc3e14..6f63355fbabd6 100644 --- a/apps/site/util/blogUtils.ts +++ b/apps/site/util/blogUtils.ts @@ -1,8 +1,5 @@ -import { authors as authorsMap } from '@/next.json.mjs'; import type { BlogPreviewType } from '@/types'; -import { getGitHubAvatarUrl } from './gitHubUtils'; - export const mapBlogCategoryToPreviewType = (type: string): BlogPreviewType => { switch (type) { case 'announcements': @@ -15,18 +12,3 @@ export const mapBlogCategoryToPreviewType = (type: string): BlogPreviewType => { return 'announcements'; } }; - -// @todo: we should check about the future of GitHub avatars -// and mapping them to the respective users -// @see https://github.com/nodejs/nodejs.dev/blob/main/src/data/blog/authors.yaml -export const mapAuthorToCardAuthors = (author: string) => { - const authors = author.split(/, | and |;| & | prepared by | by /i); - - return authors.map(fullName => { - let src = `https://ui-avatars.com/api/?name=${fullName}`; - - if (authorsMap[fullName]) src = getGitHubAvatarUrl(authorsMap[fullName].id); - - return { fullName, src }; - }); -}; diff --git a/package-lock.json b/package-lock.json index 6e571e9622096..72682b1acb824 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,6 +50,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", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", @@ -4206,6 +4207,216 @@ } } }, + "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" + }, + "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-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==", + "license": "MIT", + "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-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==", + "license": "MIT", + "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-use-callback-ref": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", From 55ac2832f39f1a146da226efad5f611a50f5c622 Mon Sep 17 00:00:00 2001 From: TenzDelek <122612557+TenzDelek@users.noreply.github.com> Date: Tue, 19 Nov 2024 06:52:08 +0530 Subject: [PATCH 0135/1385] fix: Credit link changes from X to LinkedIn for Angela Angelini (#7236) * fix:credit change from X to LinedIn * name changes --- apps/site/pages/en/about/branding.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/about/branding.mdx b/apps/site/pages/en/about/branding.mdx index 0bb77028496da..a5dfab7dd4074 100644 --- a/apps/site/pages/en/about/branding.mdx +++ b/apps/site/pages/en/about/branding.mdx @@ -9,7 +9,7 @@ Please review the [trademark policy](https://trademark-policy.openjsf.org/) for ## Node.js® Mascot -Credit to [@Ang_ngl on X](https://x.com/Ang_ngl) for designing and contributing the Rocket Turtle. +Credit to [Angela Angelini](https://www.linkedin.com/in/angeliningl/) for designing and contributing the Rocket Turtle. <img alt="Node.js mascot" From 4fcdd93c4b4d9d2e5e54c0574954b5db57094075 Mon Sep 17 00:00:00 2001 From: Joyee Cheung <joyeec9h3@gmail.com> Date: Tue, 19 Nov 2024 02:29:03 +0100 Subject: [PATCH 0136/1385] content: synchronize contribute page with GOVERNANCE.md (#7238) Some of the content on the contribute page on the website has been out of date. Synchronize it with https://github.com/nodejs/node/edit/main/GOVERNANCE.md. --- .../pages/en/about/get-involved/contribute.md | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/apps/site/pages/en/about/get-involved/contribute.md b/apps/site/pages/en/about/get-involved/contribute.md index 06408837cbe86..ab4440ee7d567 100644 --- a/apps/site/pages/en/about/get-involved/contribute.md +++ b/apps/site/pages/en/about/get-involved/contribute.md @@ -28,20 +28,26 @@ The Node.js project is currently managed across a number of separate GitHub repo ## 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/CONTRIBUTING.md/#pull-requests). The review process by existing collaborators for all contributions to the project is explained there as well. +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, triage issues and take an even bigger part in shaping the project's future. Individuals identified by the TSC as making significant and valuable contributions across any Node.js repository may be made Collaborators and given commit access to the project. Activities taken into consideration include (but are not limited to) the quality of: +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. -- code commits and pull requests -- documentation commits and pull requests -- comments on issues and pull requests -- contributions to the Node.js website -- assistance provided to end users and novice contributors -- participation in working groups -- other participation in the wider Node.js community +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: -If individuals making valuable contributions do not believe they have been considered for commit access, they may [log an issue](https://github.com/nodejs/TSC/issues) or [contact a TSC member](https://github.com/nodejs/node#tsc-technical-steering-committee) directly. +- 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 From c5345f551ea545cf9d04017204b17f3099940ada Mon Sep 17 00:00:00 2001 From: Aviv Keller <redyetidev@gmail.com> Date: Tue, 19 Nov 2024 06:34:19 -0500 Subject: [PATCH 0137/1385] chore: update dependencies (#7234) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update dependencies * chore: bump shiki patch * chore: rollback shiki * chore: bump shiki to 1.23.1 --------- Co-authored-by: Guilherme Araújo <arauujogui@gmail.com> --- apps/site/package.json | 21 +- package-lock.json | 5303 ++++++++++++++++++++++-------------- package.json | 8 +- packages/i18n/package.json | 2 +- 4 files changed, 3239 insertions(+), 2095 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 37dffb4c55a99..0ab8aa8178798 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -47,7 +47,7 @@ "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-scroll-area": "^1.2.0", + "@radix-ui/react-scroll-area": "^1.2.1", "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", @@ -62,7 +62,6 @@ "@vercel/speed-insights": "~1.1.0", "autoprefixer": "~10.4.20", "classnames": "~2.5.1", - "critters": "0.0.23", "cross-env": "7.0.3", "dedent": "1.5.3", "feed": "~4.2.2", @@ -71,12 +70,12 @@ "gray-matter": "~4.0.3", "next": "15.0.3", "next-intl": "~3.25.1", - "next-themes": "~0.3.0", - "postcss": "~8.4.47", + "next-themes": "~0.4.3", + "postcss": "~8.4.49", "postcss-calc": "~10.0.2", "postcss-import": "~16.1.0", "postcss-loader": "~8.1.1", - "postcss-mixins": "~11.0.1", + "postcss-mixins": "~11.0.3", "postcss-simple-vars": "~7.0.1", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -85,15 +84,15 @@ "remark-gfm": "~4.0.0", "remark-reading-time": "~2.0.1", "semver": "~7.6.3", - "shiki": "~1.22.2", + "shiki": "~1.23.1", "sval": "^0.5.2", - "tailwindcss": "~3.4.14", + "tailwindcss": "~3.4.15", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.0" }, "devDependencies": { - "@eslint/compat": "~1.2.2", + "@eslint/compat": "~1.2.3", "@next/eslint-plugin-next": "15.0.3", "@storybook/addon-controls": "^8.4.4", "@storybook/addon-interactions": "^8.4.4", @@ -102,7 +101,7 @@ "@storybook/addon-viewport": "^8.4.4", "@storybook/addon-webpack5-compiler-swc": "^1.0.5", "@storybook/react-webpack5": "^8.4.4", - "@testing-library/jest-dom": "~6.6.2", + "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.14", @@ -114,7 +113,7 @@ "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.2", "eslint-plugin-react-hooks": "5.0.0", - "eslint-plugin-storybook": "0.10.1", + "eslint-plugin-storybook": "~0.11.0", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", @@ -127,7 +126,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.6.3", - "typescript-eslint": "~8.8.1", + "typescript-eslint": "~8.14.0", "user-agent-data-types": "0.4.2" } } diff --git a/package-lock.json b/package-lock.json index 72682b1acb824..05e2c1c7de090 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,11 +17,11 @@ }, "devDependencies": { "@eslint/js": "~9.14.0", - "@types/eslint__js": "~8.42.3", - "commitizen": "4.3.0", + "@types/eslint__js": "8.42.3", + "commitizen": "4.3.1", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.10.0", - "eslint-plugin-import-x": "~4.2.1", + "eslint": "~9.14.0", + "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" @@ -45,7 +45,7 @@ "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-scroll-area": "^1.2.0", + "@radix-ui/react-scroll-area": "^1.2.1", "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", @@ -60,7 +60,6 @@ "@vercel/speed-insights": "~1.1.0", "autoprefixer": "~10.4.20", "classnames": "~2.5.1", - "critters": "0.0.23", "cross-env": "7.0.3", "dedent": "1.5.3", "feed": "~4.2.2", @@ -69,12 +68,12 @@ "gray-matter": "~4.0.3", "next": "15.0.3", "next-intl": "~3.25.1", - "next-themes": "~0.3.0", - "postcss": "~8.4.47", + "next-themes": "~0.4.3", + "postcss": "~8.4.49", "postcss-calc": "~10.0.2", "postcss-import": "~16.1.0", "postcss-loader": "~8.1.1", - "postcss-mixins": "~11.0.1", + "postcss-mixins": "~11.0.3", "postcss-simple-vars": "~7.0.1", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -83,15 +82,15 @@ "remark-gfm": "~4.0.0", "remark-reading-time": "~2.0.1", "semver": "~7.6.3", - "shiki": "~1.22.2", + "shiki": "~1.23.1", "sval": "^0.5.2", - "tailwindcss": "~3.4.14", + "tailwindcss": "~3.4.15", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.0" }, "devDependencies": { - "@eslint/compat": "~1.2.2", + "@eslint/compat": "~1.2.3", "@next/eslint-plugin-next": "15.0.3", "@storybook/addon-controls": "^8.4.4", "@storybook/addon-interactions": "^8.4.4", @@ -100,7 +99,7 @@ "@storybook/addon-viewport": "^8.4.4", "@storybook/addon-webpack5-compiler-swc": "^1.0.5", "@storybook/react-webpack5": "^8.4.4", - "@testing-library/jest-dom": "~6.6.2", + "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.14", @@ -112,7 +111,7 @@ "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.2", "eslint-plugin-react-hooks": "5.0.0", - "eslint-plugin-storybook": "0.10.1", + "eslint-plugin-storybook": "~0.11.0", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", @@ -125,7 +124,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.6.3", - "typescript-eslint": "~8.8.1", + "typescript-eslint": "~8.14.0", "user-agent-data-types": "0.4.2" }, "engines": { @@ -155,6 +154,24 @@ "vue": "^3.4.25" } }, + "apps/site/node_modules/@types/node": { + "version": "20.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", + "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", + "license": "MIT", + "dependencies": { + "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", @@ -192,10 +209,65 @@ "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.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", - "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", + "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", "dev": true, "license": "MIT" }, @@ -719,6 +791,16 @@ "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", @@ -1412,9 +1494,9 @@ } }, "node_modules/@eslint/compat": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.2.tgz", - "integrity": "sha512-jhgiIrsw+tRfcBQ4BFl2C3vCrIUw2trCY0cnDvGZpwTtKCEDmZhAtMfrEUP/KpnwM6PrO0T+Ltm+ccW74olG3Q==", + "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": { @@ -1444,34 +1526,20 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "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", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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==", + "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": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "Apache-2.0", "engines": { - "node": "*" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { @@ -1509,30 +1577,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "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", @@ -1540,19 +1584,6 @@ "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", @@ -1574,9 +1605,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", - "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1683,6 +1714,44 @@ "react": ">= 16" } }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1698,9 +1767,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2113,6 +2182,12 @@ "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", @@ -2287,6 +2362,22 @@ "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", @@ -2304,6 +2395,49 @@ "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", @@ -2352,6 +2486,22 @@ } } }, + "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", @@ -2369,23 +2519,53 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "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": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.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_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "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, @@ -2404,6 +2584,19 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -2525,6 +2718,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==", + "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/reporters/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2542,6 +2751,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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -2629,6 +2881,22 @@ "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", @@ -2646,6 +2914,49 @@ "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", @@ -2664,6 +2975,22 @@ "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", @@ -2681,6 +3008,49 @@ "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", @@ -2792,6 +3162,36 @@ "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", @@ -3023,9 +3423,9 @@ } }, "node_modules/@npmcli/config/node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", "dev": true, "funding": [ { @@ -3128,6 +3528,16 @@ "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", @@ -3149,37 +3559,14 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "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==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "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" - }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -3188,23 +3575,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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": { - "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/@npmcli/name-from-folder": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", @@ -3234,6 +3604,16 @@ "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", @@ -3255,22 +3635,6 @@ "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", @@ -3281,13 +3645,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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" - }, "node_modules/@npmcli/package-json/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -3304,23 +3661,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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": { - "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/@npmcli/promise-spawn": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", @@ -4052,9 +4392,9 @@ } }, "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz", - "integrity": "sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.1.tgz", + "integrity": "sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==", "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", @@ -4590,44 +4930,44 @@ } }, "node_modules/@shikijs/core": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.22.2.tgz", - "integrity": "sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==", + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.23.1.tgz", + "integrity": "sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA==", "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.22.2", - "@shikijs/engine-oniguruma": "1.22.2", - "@shikijs/types": "1.22.2", + "@shikijs/engine-javascript": "1.23.1", + "@shikijs/engine-oniguruma": "1.23.1", + "@shikijs/types": "1.23.1", "@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.22.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.2.tgz", - "integrity": "sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==", + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.23.1.tgz", + "integrity": "sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.22.2", + "@shikijs/types": "1.23.1", "@shikijs/vscode-textmate": "^9.3.0", - "oniguruma-to-js": "0.4.3" + "oniguruma-to-es": "0.4.1" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.2.tgz", - "integrity": "sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==", + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.23.1.tgz", + "integrity": "sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.22.2", + "@shikijs/types": "1.23.1", "@shikijs/vscode-textmate": "^9.3.0" } }, "node_modules/@shikijs/types": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.22.2.tgz", - "integrity": "sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==", + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.23.1.tgz", + "integrity": "sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^9.3.0", @@ -4814,16 +5154,6 @@ } } }, - "node_modules/@storybook/builder-webpack5/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.8" - } - }, "node_modules/@storybook/components": { "version": "8.4.4", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.4.tgz", @@ -4888,16 +5218,6 @@ "storybook": "^8.4.4" } }, - "node_modules/@storybook/core-webpack/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.8" - } - }, "node_modules/@storybook/csf": { "version": "0.1.11", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", @@ -4908,6 +5228,19 @@ "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", @@ -4948,9 +5281,9 @@ } }, "node_modules/@storybook/node-logger": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.4.2.tgz", - "integrity": "sha512-7IOAbyByGdrAr3cidEULFMnuCF4i4NyxW0emI3MKl9NKAVeWVWpeHL1tL1JvCIO57bMNH2Jko80m87TmEH82vg==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.4.4.tgz", + "integrity": "sha512-SONyAqPtwB0prZN0ekhAiM2K/n674keOCGnGX5QLRuDYjqhhFq/vmtw1L43dMYu6qlA29cGfxosvrr7pDa+kHg==", "dev": true, "license": "MIT", "funding": { @@ -4999,16 +5332,6 @@ } } }, - "node_modules/@storybook/preset-react-webpack/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.8" - } - }, "node_modules/@storybook/preview-api": { "version": "8.4.4", "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.4.tgz", @@ -5080,6 +5403,21 @@ "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", @@ -5127,16 +5465,6 @@ } } }, - "node_modules/@storybook/react-webpack5/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.8" - } - }, "node_modules/@storybook/test": { "version": "8.4.4", "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.4.tgz", @@ -5182,6 +5510,56 @@ "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", @@ -5189,6 +5567,29 @@ "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", @@ -5204,15 +5605,15 @@ } }, "node_modules/@swc/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.1.tgz", - "integrity": "sha512-OnPc+Kt5oy3xTvr/KCUOqE9ptJcWbyQgAUr1ydh9EmbBcmJTaO1kfQCxm/axzJi6sKeDTxL9rX5zvLOhoYIaQw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.2.tgz", + "integrity": "sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.14" + "@swc/types": "^0.1.15" }, "engines": { "node": ">=10" @@ -5222,16 +5623,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.9.1", - "@swc/core-darwin-x64": "1.9.1", - "@swc/core-linux-arm-gnueabihf": "1.9.1", - "@swc/core-linux-arm64-gnu": "1.9.1", - "@swc/core-linux-arm64-musl": "1.9.1", - "@swc/core-linux-x64-gnu": "1.9.1", - "@swc/core-linux-x64-musl": "1.9.1", - "@swc/core-win32-arm64-msvc": "1.9.1", - "@swc/core-win32-ia32-msvc": "1.9.1", - "@swc/core-win32-x64-msvc": "1.9.1" + "@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" }, "peerDependencies": { "@swc/helpers": "*" @@ -5243,9 +5644,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.1.tgz", - "integrity": "sha512-2/ncHSCdAh5OHem1fMITrWEzzl97OdMK1PHc9CkxSJnphLjRubfxB5sbc5tDhcO68a5tVy+DxwaBgDec3PXnOg==", + "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" ], @@ -5260,9 +5661,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.1.tgz", - "integrity": "sha512-4MDOFC5zmNqRJ9RGFOH95oYf27J9HniLVpB1pYm2gGeNHdl2QvDMtx2QTuMHQ6+OTn/3y1BHYuhBGp7d405oLA==", + "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" ], @@ -5277,9 +5678,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.1.tgz", - "integrity": "sha512-eVW/BjRW8/HpLe3+1jRU7w7PdRLBgnEEYTkHJISU8805/EKT03xNZn6CfaBpKfeAloY4043hbGzE/NP9IahdpQ==", + "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" ], @@ -5294,9 +5695,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.1.tgz", - "integrity": "sha512-8m3u1v8R8NgI/9+cHMkzk14w87blSy3OsQPWPfhOL+XPwhyLPvat+ahQJb2nZmltjTgkB4IbzKFSfbuA34LmNA==", + "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" ], @@ -5311,9 +5712,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.1.tgz", - "integrity": "sha512-hpT0sQAZnW8l02I289yeyFfT9llGO9PzKDxUq8pocKtioEHiElRqR53juCWoSmzuWi+6KX7zUJ0NKCBrc8pmDg==", + "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" ], @@ -5328,9 +5729,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.1.tgz", - "integrity": "sha512-sGFdpdAYusk/ropHiwtXom2JrdaKPxl8MqemRv6dvxZq1Gm/GdmOowxdXIPjCgBGMgoXVcgNviH6CgiO5q+UtA==", + "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==", "cpu": [ "x64" ], @@ -5345,9 +5746,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.1.tgz", - "integrity": "sha512-YtNLNwIWs0Z2+XgBs6+LrCIGtfCDtNr4S4b6Q5HDOreEIGzSvhkef8eyBI5L+fJ2eGov4b7iEo61C4izDJS5RA==", + "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==", "cpu": [ "x64" ], @@ -5362,9 +5763,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.1.tgz", - "integrity": "sha512-qSxD3uZW2vSiHqUt30vUi0PB92zDh9bjqh5YKpfhhVa7h1vt/xXhlid8yMvSNToTfzhRrTEffOAPUr7WVoyQUA==", + "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" ], @@ -5379,9 +5780,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.1.tgz", - "integrity": "sha512-C3fPEwyX/WRPlX6zIToNykJuz1JkZX0sk8H1QH2vpnKuySUkt/Ur5K2FzLgSWzJdbfxstpgS151/es0VGAD+ZA==", + "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" ], @@ -5396,9 +5797,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.1.tgz", - "integrity": "sha512-2XZ+U1AyVsOAXeH6WK1syDm7+gwTjA8fShs93WcbxnK7HV+NigDlvr4124CeJLTHyh3fMh1o7+CnQnaBJhlysQ==", + "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" ], @@ -5428,9 +5829,9 @@ } }, "node_modules/@swc/types": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.14.tgz", - "integrity": "sha512-PbSmTiYCN+GMrvfjrMo9bdY+f2COnwbdnoMw7rqU/PI5jXpKjxOGZ0qqZCImxnT81NkNsKnmEpvu+hRXLBeCJg==", + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.15.tgz", + "integrity": "sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5466,6 +5867,22 @@ "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@testing-library/dom/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5483,19 +5900,62 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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", - "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "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": { - "@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", + "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", + "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "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": { @@ -5504,6 +5964,56 @@ "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", @@ -5511,6 +6021,29 @@ "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", @@ -5862,18 +6395,18 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.16.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", - "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.19.8" } }, "node_modules/@types/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "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": "*", @@ -5981,17 +6514,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz", - "integrity": "sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==", + "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.13.0", - "@typescript-eslint/type-utils": "8.13.0", - "@typescript-eslint/utils": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.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", @@ -6015,16 +6548,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz", - "integrity": "sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==", + "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.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.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" }, "engines": { @@ -6044,14 +6577,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", - "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", + "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.13.0", - "@typescript-eslint/visitor-keys": "8.13.0" + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6062,14 +6595,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", - "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", + "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.13.0", - "@typescript-eslint/utils": "8.13.0", + "@typescript-eslint/typescript-estree": "8.14.0", + "@typescript-eslint/utils": "8.14.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -6087,9 +6620,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", - "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", + "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": { @@ -6101,14 +6634,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", - "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", + "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.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@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", @@ -6129,34 +6662,14 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/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==", + "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==", "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/@typescript-eslint/typescript-estree/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" + "balanced-match": "^1.0.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { @@ -6176,16 +6689,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", - "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", + "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": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.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" @@ -6199,13 +6712,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", - "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", + "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.13.0", + "@typescript-eslint/types": "8.14.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -6471,13 +6984,13 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", - "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.12", + "@vue/shared": "3.5.13", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" @@ -6490,29 +7003,29 @@ "license": "MIT" }, "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==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", - "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.12", - "@vue/compiler-dom": "3.5.12", - "@vue/compiler-ssr": "3.5.12", - "@vue/shared": "3.5.12", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", - "postcss": "^8.4.47", + "postcss": "^8.4.48", "source-map-js": "^1.2.0" } }, @@ -6523,63 +7036,63 @@ "license": "MIT" }, "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==", + "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==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/reactivity": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", - "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.12" + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz", - "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-dom": { - "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==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.12", - "@vue/runtime-core": "3.5.12", - "@vue/shared": "3.5.12", + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz", - "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" }, "peerDependencies": { - "vue": "3.5.12" + "vue": "3.5.13" } }, "node_modules/@vue/shared": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz", - "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "license": "MIT" }, "node_modules/@webassemblyjs/ast": { @@ -6931,19 +7444,6 @@ "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", @@ -6967,18 +7467,16 @@ } }, "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==", + "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": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, "node_modules/any-promise": { @@ -7000,18 +7498,6 @@ "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", @@ -7374,6 +7860,22 @@ "@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", @@ -7391,6 +7893,49 @@ "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", @@ -7573,15 +8118,18 @@ "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" }, "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==", + "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" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -7757,9 +8305,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001679", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001679.tgz", - "integrity": "sha512-j2YqID/YwpLnKzCmBOS4tlZdWprXm3ZmQLBH9ZBXFOhoxLA46fwyBvx6toCBWBmnuwUY/qB3kEU6gFx8qgCroA==", + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "funding": [ { "type": "opencollective", @@ -7814,17 +8362,18 @@ } }, "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/char-regex": { @@ -8167,21 +8716,20 @@ } }, "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==", + "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.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "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==", + "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": { @@ -8195,6 +8743,26 @@ "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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/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", + "optional": true + }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", @@ -8231,19 +8799,18 @@ } }, "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", "engines": { - "node": ">= 12" + "node": ">=18" } }, "node_modules/commitizen": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.3.0.tgz", - "integrity": "sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.3.1.tgz", + "integrity": "sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==", "dev": true, "license": "MIT", "dependencies": { @@ -8389,42 +8956,27 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/create-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/critters": { - "version": "0.0.23", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.23.tgz", - "integrity": "sha512-/MCsQbuzTPA/ZTOjjyr2Na5o3lRpr8vd0MZE8tMP0OBNg/VrLxWHteVKalQ8KR+fBmUadbJLdoyEz9sT+q84qg==", - "license": "Apache-2.0", - "dependencies": { - "chalk": "^4.1.0", - "css-select": "^5.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.2", - "htmlparser2": "^8.0.2", - "postcss": "^8.4.23", - "postcss-media-query-parser": "^0.2.3" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/critters/node_modules/chalk": { + "node_modules/create-jest/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", @@ -8437,82 +8989,47 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/critters/node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/critters/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "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": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/critters/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=7.0.0" } }, - "node_modules/critters/node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "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/critters/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "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": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/cross-env": { @@ -8593,23 +9110,6 @@ } } }, - "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/css-tree": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz", @@ -8628,6 +9128,7 @@ "version": "6.1.0", "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" @@ -8709,84 +9210,6 @@ "@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/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/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", - "engines": { - "node": ">=0.8.0" - } - }, - "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", - "engines": { - "node": ">=4" - } - }, - "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": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -9116,16 +9539,16 @@ "license": "MIT" }, "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "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": ">=0.10.0" + "node": ">=6.0.0" } }, "node_modules/dom-accessibility-api": { @@ -9145,35 +9568,11 @@ "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==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "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", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", @@ -9196,37 +9595,6 @@ "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", @@ -9245,9 +9613,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.55", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz", - "integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==", + "version": "1.5.62", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.62.tgz", + "integrity": "sha512-t8c+zLmJHa9dJy96yBZRXGQYoiCEnHYgFwn1asvSPZSUdVxnB62A4RASd7k41ytG3ErFBA0TpHlKg9D9SQBmLg==", "license": "ISC" }, "node_modules/emittery": { @@ -9264,9 +9632,15 @@ } }, "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==", + "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/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", "license": "MIT" }, "node_modules/endent": { @@ -9345,9 +9719,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", + "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9366,7 +9740,7 @@ "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", @@ -9382,10 +9756,10 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", + "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.9", @@ -9613,16 +9987,13 @@ } }, "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==", + "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": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/escodegen": { @@ -9659,29 +10030,32 @@ } }, "node_modules/eslint": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", - "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", + "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.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.10.0", - "@eslint/plugin-kit": "^0.1.0", + "@eslint/js": "9.14.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.0", - "@nodelib/fs.walk": "^1.2.8", + "@humanwhocodes/retry": "^0.4.0", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.2", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -9691,13 +10065,11 @@ "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { @@ -9804,36 +10176,6 @@ } } }, - "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": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.1.5.tgz", @@ -9961,9 +10303,9 @@ } }, "node_modules/eslint-plugin-import-x": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz", - "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==", + "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==", "dev": true, "license": "MIT", "dependencies": { @@ -9985,17 +10327,14 @@ "eslint": "^8.57.0 || ^9.0.0" } }, - "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==", + "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==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" + "balanced-match": "^1.0.0" } }, "node_modules/eslint-plugin-import-x/node_modules/minimatch": { @@ -10014,17 +10353,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -10035,6 +10363,19 @@ "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", @@ -10048,19 +10389,6 @@ "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", @@ -10134,29 +10462,12 @@ "node": ">= 0.4" } }, - "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==", + "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": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "license": "MIT" }, "node_modules/eslint-plugin-mdx": { "version": "3.1.5", @@ -10435,28 +10746,17 @@ "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/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-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==", + "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==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "esutils": "^2.0.2" }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { @@ -10488,9 +10788,9 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.10.1.tgz", - "integrity": "sha512-YpxkdqyiKpMIrRquuvBaCinsqmZJ86JvXRX/gtRa4Qctpk0ipFt2cWqEjkB1HHWWG0DVRXlUBKHjRogC2Ig1fg==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.0.tgz", + "integrity": "sha512-MvPJgF+ORwgK04a1CY5itO4pwdAOFIRqczlNEHL62+4Ocvj1d61GWRqIdeX1BNCKno6fdPC6TksUHCZMGsq26g==", "dev": true, "license": "MIT", "dependencies": { @@ -10535,16 +10835,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/js": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", - "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -10562,15 +10852,20 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "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==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/eslint/node_modules/chalk": { @@ -10590,42 +10885,85 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/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" - }, - "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==", + "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==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "color-name": "~1.1.4" }, "engines": { - "node": "*" + "node": ">=7.0.0" } }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "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": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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" + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -10816,36 +11154,28 @@ } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "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": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.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" + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.17" }, "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", @@ -10926,9 +11256,9 @@ "license": "MIT" }, "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==", + "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", @@ -11024,20 +11354,6 @@ "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", @@ -11066,16 +11382,6 @@ "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", @@ -11089,20 +11395,6 @@ "node": ">=16.0.0" } }, - "node_modules/file-entry-cache/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": ">=16" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -11185,18 +11477,17 @@ } }, "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==", + "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.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { @@ -11261,15 +11552,20 @@ "webpack": "^5.11.0" } }, - "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==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { @@ -11289,6 +11585,26 @@ "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", @@ -11321,17 +11637,27 @@ "node": ">=12" } }, - "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==", + "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==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { @@ -11553,13 +11879,12 @@ } }, "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, + "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": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11643,30 +11968,6 @@ "devOptional": true, "license": "BSD-2-Clause" }, - "node_modules/glob/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/glob/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/global-directory": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", @@ -11737,13 +12038,16 @@ } }, "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==", + "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": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { @@ -11898,12 +12202,13 @@ } }, "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==", + "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", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/has-property-descriptors": { @@ -12220,6 +12525,16 @@ "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", @@ -12276,36 +12591,6 @@ } } }, - "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", @@ -12336,13 +12621,12 @@ } }, "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, + "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": ">=10.17.0" + "node": ">=16.17.0" } }, "node_modules/humanize-ms": { @@ -12578,6 +12862,22 @@ "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" + } + }, "node_modules/inquirer/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -12595,6 +12895,49 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -13032,16 +13375,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -13118,13 +13451,12 @@ } }, "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, + "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": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13319,6 +13651,16 @@ "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", @@ -13335,6 +13677,19 @@ "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", @@ -13392,18 +13747,18 @@ } }, "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==", + "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": { "@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": { @@ -13448,6 +13803,122 @@ "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", @@ -13480,23 +13951,59 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "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", @@ -13512,6 +14019,16 @@ } } }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -13547,6 +14064,19 @@ "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", @@ -13581,6 +14111,22 @@ } } }, + "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", @@ -13598,6 +14144,49 @@ "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", @@ -13644,6 +14233,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==", + "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-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -13661,6 +14266,36 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -13696,6 +14331,19 @@ "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", @@ -13712,6 +14360,22 @@ "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", @@ -13729,6 +14393,36 @@ "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", @@ -13764,6 +14458,19 @@ "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", @@ -13794,6 +14501,22 @@ "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", @@ -13811,29 +14534,59 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "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": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.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==", + "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", - "engines": { - "node": ">=10" + "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" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "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" @@ -13846,6 +14599,19 @@ "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", @@ -13944,16 +14710,6 @@ "node": ">=10.12.0" } }, - "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", @@ -14019,6 +14775,22 @@ "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", @@ -14036,6 +14808,36 @@ "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", @@ -14071,6 +14873,19 @@ "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", @@ -14092,6 +14907,22 @@ "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", @@ -14109,6 +14940,36 @@ "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", @@ -14144,6 +15005,19 @@ "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", @@ -14222,6 +15096,22 @@ "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", @@ -14239,6 +15129,49 @@ "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", @@ -14272,6 +15205,22 @@ "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", @@ -14289,6 +15238,49 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runtime": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", @@ -14323,6 +15315,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==", + "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-runtime/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -14340,6 +15348,49 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "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_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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -14372,6 +15423,22 @@ "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", @@ -14389,6 +15456,36 @@ "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", @@ -14424,6 +15521,19 @@ "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", @@ -14442,6 +15552,22 @@ "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", @@ -14459,17 +15585,47 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "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": ">=8.6" + "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==", + "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" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=8" } }, "node_modules/jest-validate": { @@ -14487,7 +15643,23 @@ "pretty-format": "^29.7.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "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": { @@ -14520,6 +15692,36 @@ "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", @@ -14555,6 +15757,19 @@ "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", @@ -14575,6 +15790,22 @@ "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", @@ -14592,6 +15823,49 @@ "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", @@ -14608,6 +15882,16 @@ "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", @@ -14835,226 +16119,95 @@ "node_modules/language-tags": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/lint-staged": { - "version": "15.2.10", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", - "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", - "license": "MIT", - "dependencies": { - "chalk": "~5.3.0", - "commander": "~12.1.0", - "debug": "~4.3.6", - "execa": "~8.0.1", - "lilconfig": "~3.1.2", - "listr2": "~8.2.4", - "micromatch": "~4.0.8", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.5.0" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "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==", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "language-subtag-registry": "^0.3.20" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10" } }, - "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==", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "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==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "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==", + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/antonk52" } }, - "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==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/lint-staged": { + "version": "15.2.10", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", + "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", "license": "MIT", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.6", + "execa": "~8.0.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", + "micromatch": "~4.0.8", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.5.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, "engines": { - "node": ">=12" + "node": ">=18.12.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/lint-staged" } }, - "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==", + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/listr2": { @@ -15262,6 +16415,22 @@ "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", @@ -15279,6 +16448,49 @@ "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" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -16120,9 +17332,9 @@ } }, "node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", + "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", "funding": [ { "type": "GitHub Sponsors", @@ -16155,9 +17367,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", + "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", "funding": [ { "type": "GitHub Sponsors", @@ -16430,9 +17642,9 @@ } }, "node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", "funding": [ { "type": "GitHub Sponsors", @@ -16451,9 +17663,9 @@ } }, "node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", "funding": [ { "type": "GitHub Sponsors", @@ -16500,9 +17712,9 @@ } }, "node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", "funding": [ { "type": "GitHub Sponsors", @@ -16520,9 +17732,9 @@ } }, "node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", "funding": [ { "type": "GitHub Sponsors", @@ -16542,9 +17754,9 @@ } }, "node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", "funding": [ { "type": "GitHub Sponsors", @@ -16564,9 +17776,9 @@ } }, "node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", "funding": [ { "type": "GitHub Sponsors", @@ -16584,9 +17796,9 @@ } }, "node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", "funding": [ { "type": "GitHub Sponsors", @@ -16603,9 +17815,9 @@ } }, "node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", "funding": [ { "type": "GitHub Sponsors", @@ -16624,9 +17836,9 @@ } }, "node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", "funding": [ { "type": "GitHub Sponsors", @@ -16644,9 +17856,9 @@ } }, "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", "funding": [ { "type": "GitHub Sponsors", @@ -16663,9 +17875,9 @@ } }, "node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", "funding": [ { "type": "GitHub Sponsors", @@ -16685,9 +17897,9 @@ } }, "node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", "funding": [ { "type": "GitHub Sponsors", @@ -16727,9 +17939,9 @@ } }, "node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", "funding": [ { "type": "GitHub Sponsors", @@ -16743,9 +17955,9 @@ "license": "MIT" }, "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", "funding": [ { "type": "GitHub Sponsors", @@ -16762,9 +17974,9 @@ } }, "node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", "funding": [ { "type": "GitHub Sponsors", @@ -16781,9 +17993,9 @@ } }, "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", "funding": [ { "type": "GitHub Sponsors", @@ -16802,9 +18014,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.2.tgz", + "integrity": "sha512-xKxhkB62vwHUuuxHe9Xqty3UaAsizV2YKq5OV344u3hFBbf8zIYrhYOWhAQb94MtMPkjTOzzjJ/hid9/dR5vFA==", "funding": [ { "type": "GitHub Sponsors", @@ -16824,9 +18036,9 @@ } }, "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", "funding": [ { "type": "GitHub Sponsors", @@ -16840,9 +18052,9 @@ "license": "MIT" }, "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", "funding": [ { "type": "GitHub Sponsors", @@ -16868,18 +18080,6 @@ "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", @@ -16902,13 +18102,15 @@ } }, "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, + "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": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mimic-function": { @@ -16934,18 +18136,16 @@ } }, "node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "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": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/minimist": { @@ -17138,13 +18338,13 @@ } }, "node_modules/next-themes": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", - "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.3.tgz", + "integrity": "sha512-nG84VPkTdUHR2YeD89YchvV4I9RbiMAql3GiLEQlPvq1ioaqPaIReK+yMRdg/zgiXws620qS1rU30TiWmmG9lA==", "license": "MIT", "peerDependencies": { - "react": "^16.8 || ^17 || ^18", - "react-dom": "^16.8 || ^17 || ^18" + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "node_modules/next/node_modules/postcss": { @@ -17372,22 +18572,37 @@ } }, "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, + "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": "^3.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.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_modules/nth-check": { "version": "2.1.1", "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" @@ -17422,9 +18637,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, "license": "MIT", "engines": { @@ -17548,31 +18763,29 @@ } }, "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, + "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": "^2.1.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/oniguruma-to-js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", - "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "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==", "license": "MIT", "dependencies": { - "regex": "^4.3.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "emoji-regex-xs": "^1.0.0", + "regex": "^5.0.0", + "regex-recursion": "^4.2.1" } }, "node_modules/open": { @@ -17594,9 +18807,9 @@ } }, "node_modules/openai": { - "version": "4.71.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.71.1.tgz", - "integrity": "sha512-C6JNMaQ1eijM0lrjiRUL3MgThVP5RdwNAghpbJFdW0t11LzmyqON8Eh8MuUuEZ+CeD6bgYl2Fkn2BoptVxv9Ug==", + "version": "4.72.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.72.0.tgz", + "integrity": "sha512-hFqG9BWCs7L7ifrhJXw7mJXmUBr7d9N6If3J9563o0jfwVA4wFANFDDaOIWFdgDdwgCXg5emf0Q+LoLCGszQYA==", "license": "Apache-2.0", "dependencies": { "@types/node": "^18.11.18", @@ -17676,6 +18889,22 @@ "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", @@ -17693,6 +18922,49 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -17895,29 +19167,26 @@ "license": "MIT" }, "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==", + "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": "^11.0.0", - "minipass": "^7.1.2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "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" - } + "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-type": { "version": "4.0.0", @@ -17946,12 +19215,12 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -18090,9 +19359,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -18110,7 +19379,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -18131,30 +19400,6 @@ "postcss": "^8.4.21" } }, - "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", @@ -18273,12 +19518,6 @@ } } }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "license": "MIT" - }, "node_modules/postcss-mixins": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-11.0.3.tgz", @@ -18646,13 +19885,6 @@ "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", @@ -18720,6 +19952,13 @@ "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", @@ -18885,19 +20124,6 @@ "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", @@ -18912,9 +20138,9 @@ } }, "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==", + "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" }, @@ -19048,18 +20274,6 @@ "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", @@ -19214,9 +20428,27 @@ "license": "MIT" }, "node_modules/regex": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/regex/-/regex-4.4.0.tgz", - "integrity": "sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.0.2.tgz", + "integrity": "sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", "license": "MIT" }, "node_modules/regexp.prototype.flags": { @@ -20444,22 +21676,115 @@ "unified": "^11.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "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", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "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==", + "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" + }, + "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": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "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": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, "node_modules/require-directory": { @@ -20592,6 +21917,32 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/restore-cursor/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -20975,15 +22326,15 @@ } }, "node_modules/shiki": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.2.tgz", - "integrity": "sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==", + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.23.1.tgz", + "integrity": "sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig==", "license": "MIT", "dependencies": { - "@shikijs/core": "1.22.2", - "@shikijs/engine-javascript": "1.22.2", - "@shikijs/engine-oniguruma": "1.22.2", - "@shikijs/types": "1.22.2", + "@shikijs/core": "1.23.1", + "@shikijs/engine-javascript": "1.23.1", + "@shikijs/engine-oniguruma": "1.23.1", + "@shikijs/types": "1.23.1", "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } @@ -21306,12 +22657,6 @@ "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", @@ -21321,12 +22666,6 @@ "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", @@ -21500,13 +22839,15 @@ } }, "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, + "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": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-indent": { @@ -21738,23 +23079,6 @@ "dev": true, "license": "MIT" }, - "node_modules/stylelint/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/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", @@ -21782,19 +23106,6 @@ "node": ">=18" } }, - "node_modules/stylelint/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/stylelint/node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -21889,6 +23200,15 @@ "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", @@ -21918,27 +23238,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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": { - "@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/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -21954,22 +23253,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sugarss": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", @@ -21987,15 +23270,16 @@ } }, "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==", + "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": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/supports-hyperlinks": { @@ -22015,6 +23299,29 @@ "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", @@ -22097,6 +23404,42 @@ "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", @@ -22126,33 +23469,33 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", - "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", + "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", + "jiti": "^1.21.6", "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -22252,6 +23595,16 @@ } } }, + "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==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -22307,47 +23660,23 @@ "devOptional": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "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" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "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==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "engines": { - "node": "*" + "node": ">=8" } }, "node_modules/text-table": { @@ -22405,6 +23734,32 @@ "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", @@ -22695,387 +24050,138 @@ } }, "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/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.1.tgz", - "integrity": "sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.8.1", - "@typescript-eslint/parser": "8.8.1", - "@typescript-eslint/utils": "8.8.1" - }, - "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/eslint-plugin": { - "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.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", - "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.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.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": { - "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.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.8.1", - "@typescript-eslint/visitor-keys": "8.8.1" - }, - "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.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.8.1", - "@typescript-eslint/utils": "8.8.1", - "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.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": { - "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.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==", + "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": "BSD-2-Clause", - "dependencies": { - "@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", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typescript-eslint/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==", + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "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" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "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": ">= 0.4" } }, - "node_modules/typescript-eslint/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==", + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.1", - "eslint-visitor-keys": "^3.4.3" + "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" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typescript-eslint/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/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==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "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" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typescript-eslint/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==", + "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==", "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" + "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" }, "engines": { - "node": ">=8.6.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typescript-eslint/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==", + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">= 6" + "node": ">=14.17" } }, - "node_modules/typescript-eslint/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": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.14.0.tgz", + "integrity": "sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@typescript-eslint/eslint-plugin": "8.14.0", + "@typescript-eslint/parser": "8.14.0", + "@typescript-eslint/utils": "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" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/uglify-js": { @@ -23167,14 +24273,14 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified-engine/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==", + "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": { - "undici-types": "~6.19.8" + "balanced-match": "^1.0.0" } }, "node_modules/unified-engine/node_modules/glob": { @@ -23221,22 +24327,6 @@ "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", @@ -23257,13 +24347,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "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" - }, "node_modules/unified-engine/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -23300,23 +24383,6 @@ "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", @@ -23647,6 +24713,16 @@ "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", @@ -23888,16 +24964,16 @@ } }, "node_modules/vue": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", - "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", "license": "MIT", "dependencies": { - "@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" + "@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" }, "peerDependencies": { "typescript": "*" @@ -24331,6 +25407,75 @@ "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.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==", + "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/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", @@ -24503,7 +25648,7 @@ "devDependencies": { "eslint-import-resolver-typescript": "~3.6.3", "typescript": "~5.6.3", - "typescript-eslint": "~8.8.1" + "typescript-eslint": "~8.14.0" }, "engines": { "node": ">=20" diff --git a/package.json b/package.json index 5cc0e95e54907..e9a93850899ea 100644 --- a/package.json +++ b/package.json @@ -41,11 +41,11 @@ }, "devDependencies": { "@eslint/js": "~9.14.0", - "@types/eslint__js": "~8.42.3", - "commitizen": "4.3.0", + "@types/eslint__js": "8.42.3", + "commitizen": "4.3.1", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.10.0", - "eslint-plugin-import-x": "~4.2.1", + "eslint": "~9.14.0", + "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" diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 32b232d9500ec..9dad2e855ffab 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.8.1" + "typescript-eslint": "~8.14.0" } } From 52e04b06a93c961084e97d5f33b8f02888c87be4 Mon Sep 17 00:00:00 2001 From: CodingRule <ioumih32@gmail.com> Date: Tue, 19 Nov 2024 06:20:02 -0800 Subject: [PATCH 0138/1385] chore: use `toUpperCase` in `detectOS` (#7241) * Update detectOS.ts Signed-off-by: CodingRule <ioumih32@gmail.com> * Update detectOS.ts Signed-off-by: CodingRule <ioumih32@gmail.com> * Update detectOS.ts Signed-off-by: CodingRule <ioumih32@gmail.com> * Update apps/site/util/detectOS.ts Co-authored-by: Aviv Keller <redyetidev@gmail.com> Signed-off-by: CodingRule <ioumih32@gmail.com> --------- Signed-off-by: CodingRule <ioumih32@gmail.com> Co-authored-by: Aviv Keller <redyetidev@gmail.com> --- apps/site/util/detectOS.ts | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/apps/site/util/detectOS.ts b/apps/site/util/detectOS.ts index 92b8f2277e39e..351eb1a9fe444 100644 --- a/apps/site/util/detectOS.ts +++ b/apps/site/util/detectOS.ts @@ -1,19 +1,9 @@ import type { UserOS } from '@/types/userOS'; export const detectOsInUserAgent = (userAgent: string | undefined): UserOS => { - const osMatch = userAgent?.match(/(Win|Mac|Linux)/); - switch (osMatch && osMatch[1]) { - case 'Win': - return 'WIN'; - case 'Mac': - return 'MAC'; - case 'Linux': - return 'LINUX'; - case 'AIX': - return 'AIX'; - default: - return 'OTHER'; - } + // Match OS names and convert to uppercase directly if there's a match + const osMatch = userAgent?.match(/(Win|Mac|Linux|AIX)/); + return osMatch ? (osMatch[1].toUpperCase() as UserOS) : 'OTHER'; }; // Since `navigator.appVersion` is deprecated, we use the `userAgent`` From 6be3b25c10ecca425f5d5a8f083d4eaa1f69ea4d Mon Sep 17 00:00:00 2001 From: Wojciech Maj <kontakt@wojtekmaj.pl> Date: Tue, 19 Nov 2024 21:45:53 +0100 Subject: [PATCH 0139/1385] fix: download button pointing to an incorrect binary on Windows arm64 (#7240) * Fix Download button pointing to an incorrect binary on Windows arm64 Closes #7239 This PR changes the way DownloadButton calculates `bitness` which gets passed to `getNodeDownloadUrl`. Previously, this value was passed directly from `useDetectOS()` without any further processing, leading to the issue mentioned above. After this change, `bitness` is calculated similarly to how it's done in `BitnessDropdown`, so: by passing `architecture` and `bitness` to `getUserBitnessByArchitecture`: https://github.com/nodejs/nodejs.org/blob/c5345f551ea545cf9d04017204b17f3099940ada/apps/site/components/Downloads/Release/BitnessDropdown.tsx#L16-L29 Signed-off-by: Wojciech Maj <kontakt@wojtekmaj.pl> * Fix formatting --------- Signed-off-by: Wojciech Maj <kontakt@wojtekmaj.pl> --- apps/site/components/Downloads/DownloadButton/index.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/site/components/Downloads/DownloadButton/index.tsx b/apps/site/components/Downloads/DownloadButton/index.tsx index 342ff1a2dd1fb..3ae14761a7605 100644 --- a/apps/site/components/Downloads/DownloadButton/index.tsx +++ b/apps/site/components/Downloads/DownloadButton/index.tsx @@ -8,6 +8,7 @@ import Button from '@/components/Common/Button'; import { useDetectOS } from '@/hooks'; import type { NodeRelease } from '@/types'; import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; +import { getUserBitnessByArchitecture } from '@/util/getUserBitnessByArchitecture'; import styles from './index.module.css'; @@ -17,7 +18,12 @@ const DownloadButton: FC<PropsWithChildren<DownloadButtonProps>> = ({ release: { versionWithPrefix }, children, }) => { - const { os, bitness } = useDetectOS(); + const { + os, + bitness: userBitness, + architecture: userArchitecture, + } = useDetectOS(); + const bitness = getUserBitnessByArchitecture(userArchitecture, userBitness); const downloadLink = getNodeDownloadUrl(versionWithPrefix, os, bitness); return ( From 8e05ee84427f510a7b4fb6f4c9c173a054de5a1f Mon Sep 17 00:00:00 2001 From: TenzDelek <122612557+TenzDelek@users.noreply.github.com> Date: Wed, 20 Nov 2024 18:21:26 +0530 Subject: [PATCH 0140/1385] fix: Links for changelog and blog post do not meet accessibility criterion (#7250) fix:link reference --- apps/site/pages/en/download/package-manager/current.mdx | 4 ++-- apps/site/pages/en/download/package-manager/index.mdx | 4 ++-- apps/site/pages/en/download/prebuilt-binaries/current.mdx | 4 ++-- apps/site/pages/en/download/prebuilt-binaries/index.mdx | 4 ++-- apps/site/pages/en/download/prebuilt-installer/current.mdx | 4 ++-- apps/site/pages/en/download/prebuilt-installer/index.mdx | 4 ++-- apps/site/pages/en/download/source-code/current.mdx | 4 ++-- apps/site/pages/en/download/source-code/index.mdx | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apps/site/pages/en/download/package-manager/current.mdx b/apps/site/pages/en/download/package-manager/current.mdx index 31915b0993e5a..961e0249003b0 100644 --- a/apps/site/pages/en/download/package-manager/current.mdx +++ b/apps/site/pages/en/download/package-manager/current.mdx @@ -13,9 +13,9 @@ Install Node.js <Release.VersionDropdown /> on <Release.OperatingSystemDropdown <section> Node.js includes <Release.NpmLink />. -Read the changelog for <Release.ChangelogLink>this version</Release.ChangelogLink> +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. -Read the blog post for <Release.BlogPostLink>this version</Release.BlogPostLink> +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> diff --git a/apps/site/pages/en/download/package-manager/index.mdx b/apps/site/pages/en/download/package-manager/index.mdx index 31915b0993e5a..e95a9a81e6ba1 100644 --- a/apps/site/pages/en/download/package-manager/index.mdx +++ b/apps/site/pages/en/download/package-manager/index.mdx @@ -13,9 +13,9 @@ Install Node.js <Release.VersionDropdown /> on <Release.OperatingSystemDropdown <section> Node.js includes <Release.NpmLink />. -Read the changelog for <Release.ChangelogLink>this version</Release.ChangelogLink> +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version -Read the blog post for <Release.BlogPostLink>this version</Release.BlogPostLink> +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> diff --git a/apps/site/pages/en/download/prebuilt-binaries/current.mdx b/apps/site/pages/en/download/prebuilt-binaries/current.mdx index c101cf05ac441..3abcdae3a99ce 100644 --- a/apps/site/pages/en/download/prebuilt-binaries/current.mdx +++ b/apps/site/pages/en/download/prebuilt-binaries/current.mdx @@ -13,9 +13,9 @@ I want the <Release.VersionDropdown /> version of Node.js for <Release.Operating <section> Node.js includes <Release.NpmLink />. -Read the changelog for <Release.ChangelogLink>this version</Release.ChangelogLink> +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version -Read the blog post for <Release.BlogPostLink>this version</Release.BlogPostLink> +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> diff --git a/apps/site/pages/en/download/prebuilt-binaries/index.mdx b/apps/site/pages/en/download/prebuilt-binaries/index.mdx index 66795a184fcc5..b2fa05168d3a3 100644 --- a/apps/site/pages/en/download/prebuilt-binaries/index.mdx +++ b/apps/site/pages/en/download/prebuilt-binaries/index.mdx @@ -13,9 +13,9 @@ I want the <Release.VersionDropdown /> version of Node.js for <Release.Operating <section> Node.js includes <Release.NpmLink />. -Read the changelog for <Release.ChangelogLink>this version</Release.ChangelogLink>. +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. -Read the blog post for <Release.BlogPostLink>this version</Release.BlogPostLink>. +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink>. diff --git a/apps/site/pages/en/download/prebuilt-installer/current.mdx b/apps/site/pages/en/download/prebuilt-installer/current.mdx index 702f1b7558fe8..4ce954640ae9d 100644 --- a/apps/site/pages/en/download/prebuilt-installer/current.mdx +++ b/apps/site/pages/en/download/prebuilt-installer/current.mdx @@ -13,9 +13,9 @@ I want the <Release.VersionDropdown /> version of Node.js for <Release.Operating <section> Node.js includes <Release.NpmLink />. -Read the changelog for <Release.ChangelogLink>this version</Release.ChangelogLink> +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version -Read the blog post for <Release.BlogPostLink>this version</Release.BlogPostLink> +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> diff --git a/apps/site/pages/en/download/prebuilt-installer/index.mdx b/apps/site/pages/en/download/prebuilt-installer/index.mdx index 402402f4a4978..5b7a8a46d1fee 100644 --- a/apps/site/pages/en/download/prebuilt-installer/index.mdx +++ b/apps/site/pages/en/download/prebuilt-installer/index.mdx @@ -13,9 +13,9 @@ I want the <Release.VersionDropdown /> version of Node.js for <Release.Operating <section> Node.js includes <Release.NpmLink />. -Read the changelog for <Release.ChangelogLink>this version</Release.ChangelogLink> +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. -Read the blog post for <Release.BlogPostLink>this version</Release.BlogPostLink> +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> diff --git a/apps/site/pages/en/download/source-code/current.mdx b/apps/site/pages/en/download/source-code/current.mdx index 0732ee94ce4fb..03d27779f88d3 100644 --- a/apps/site/pages/en/download/source-code/current.mdx +++ b/apps/site/pages/en/download/source-code/current.mdx @@ -13,9 +13,9 @@ I want the <Release.VersionDropdown /> version of the Node.js source code. <section> Node.js includes <Release.NpmLink />. -Read the changelog for <Release.ChangelogLink>this version</Release.ChangelogLink> +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. -Read the blog post for <Release.BlogPostLink>this version</Release.BlogPostLink> +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> diff --git a/apps/site/pages/en/download/source-code/index.mdx b/apps/site/pages/en/download/source-code/index.mdx index 0732ee94ce4fb..03d27779f88d3 100644 --- a/apps/site/pages/en/download/source-code/index.mdx +++ b/apps/site/pages/en/download/source-code/index.mdx @@ -13,9 +13,9 @@ I want the <Release.VersionDropdown /> version of the Node.js source code. <section> Node.js includes <Release.NpmLink />. -Read the changelog for <Release.ChangelogLink>this version</Release.ChangelogLink> +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. -Read the blog post for <Release.BlogPostLink>this version</Release.BlogPostLink> +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> From 635f2b3a2344b38c9590143eb8c5faef182d1fc5 Mon Sep 17 00:00:00 2001 From: Marco Ippolito <marcoippolito54@gmail.com> Date: Wed, 20 Nov 2024 16:05:26 +0100 Subject: [PATCH 0141/1385] Blog: v20.18.1 release post (#7254) Refs: https://github.com/nodejs/node/pull/55879 --- apps/site/pages/en/blog/release/v20.18.1.md | 220 ++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v20.18.1.md diff --git a/apps/site/pages/en/blog/release/v20.18.1.md b/apps/site/pages/en/blog/release/v20.18.1.md new file mode 100644 index 0000000000000..bedc0245e8511 --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.18.1.md @@ -0,0 +1,220 @@ +--- +date: '2024-11-20T14:36:41.797Z' +category: release +title: Node v20.18.1 (LTS) +layout: blog-post +author: Marco Ippolito +--- + +## 2024-11-20, Version 20.18.1 'Iron' (LTS), @marco-ippolito + +### Notable Changes + +- \[[`7a8992b2d6`](https://github.com/nodejs/node/commit/7a8992b2d6)] - **doc**: add abmusse to collaborators (Abdirahim Musse) [#55086](https://github.com/nodejs/node/pull/55086) + +### Commits + +- \[[`085c3441fe`](https://github.com/nodejs/node/commit/085c3441fe)] - **assert**: show the diff when deep comparing data with a custom message (Giovanni) [#54759](https://github.com/nodejs/node/pull/54759) +- \[[`01f0b0e7b4`](https://github.com/nodejs/node/commit/01f0b0e7b4)] - **benchmark**: adjust config for deepEqual object (Rafael Gonzaga) [#55254](https://github.com/nodejs/node/pull/55254) +- \[[`a45537269b`](https://github.com/nodejs/node/commit/a45537269b)] - **benchmark**: rewrite detect-esm-syntax benchmark (Joyee Cheung) [#55238](https://github.com/nodejs/node/pull/55238) +- \[[`1a0d8ef64f`](https://github.com/nodejs/node/commit/1a0d8ef64f)] - **benchmark**: add no-warnings to process.has bench (Rafael Gonzaga) [#55159](https://github.com/nodejs/node/pull/55159) +- \[[`2be5d611ce`](https://github.com/nodejs/node/commit/2be5d611ce)] - **benchmark**: create benchmark for typescript (Marco Ippolito) [#54904](https://github.com/nodejs/node/pull/54904) +- \[[`a2aa4fa477`](https://github.com/nodejs/node/commit/a2aa4fa477)] - **benchmark**: include ascii to fs/readfile (Rafael Gonzaga) [#54988](https://github.com/nodejs/node/pull/54988) +- \[[`09849105fe`](https://github.com/nodejs/node/commit/09849105fe)] - **benchmark**: add dotenv benchmark (Aviv Keller) [#54278](https://github.com/nodejs/node/pull/54278) +- \[[`6b3c24dbad`](https://github.com/nodejs/node/commit/6b3c24dbad)] - **buffer**: fix out of range for toString (Jason Zhang) [#54553](https://github.com/nodejs/node/pull/54553) +- \[[`f25a5b6dc4`](https://github.com/nodejs/node/commit/f25a5b6dc4)] - **build**: use rclone instead of aws CLI (Michaël Zasso) [#55617](https://github.com/nodejs/node/pull/55617) +- \[[`0bbeb605de`](https://github.com/nodejs/node/commit/0bbeb605de)] - **build**: fix notify-on-review-wanted action (Rafael Gonzaga) [#55304](https://github.com/nodejs/node/pull/55304) +- \[[`5b35836732`](https://github.com/nodejs/node/commit/5b35836732)] - **build**: include `.nycrc` in coverage workflows (Wuli Zuo) [#55210](https://github.com/nodejs/node/pull/55210) +- \[[`f38d1e90e0`](https://github.com/nodejs/node/commit/f38d1e90e0)] - **build**: notify via slack when review-wanted (Rafael Gonzaga) [#55102](https://github.com/nodejs/node/pull/55102) +- \[[`0b985ec4bb`](https://github.com/nodejs/node/commit/0b985ec4bb)] - **build**: remove -v flag to reduce noise (iwuliz) [#55025](https://github.com/nodejs/node/pull/55025) +- \[[`09f75b27a1`](https://github.com/nodejs/node/commit/09f75b27a1)] - **build**: display free disk space after build in the test-macOS workflow (iwuliz) [#55025](https://github.com/nodejs/node/pull/55025) +- \[[`f25760c4a2`](https://github.com/nodejs/node/commit/f25760c4a2)] - **build**: add the option to generate compile_commands.json in vcbuild.bat (Segev Finer) [#52279](https://github.com/nodejs/node/pull/52279) +- \[[`746e78c4f3`](https://github.com/nodejs/node/commit/746e78c4f3)] - _**Revert**_ "**build**: upgrade clang-format to v18" (Chengzhong Wu) [#54994](https://github.com/nodejs/node/pull/54994) +- \[[`67834ee646`](https://github.com/nodejs/node/commit/67834ee646)] - **build**: print `Running XYZ linter...` for py and yml (Aviv Keller) [#54386](https://github.com/nodejs/node/pull/54386) +- \[[`ae34e276a2`](https://github.com/nodejs/node/commit/ae34e276a2)] - **build**: pin doc workflow to Node.js 20 (Richard Lau) [#55755](https://github.com/nodejs/node/pull/55755) +- \[[`d0e871a706`](https://github.com/nodejs/node/commit/d0e871a706)] - **build,win**: add winget config to set up env (Hüseyin Açacak) [#54729](https://github.com/nodejs/node/pull/54729) +- \[[`93ac799b6b`](https://github.com/nodejs/node/commit/93ac799b6b)] - **cli**: fix spacing for port range error (Aviv Keller) [#54495](https://github.com/nodejs/node/pull/54495) +- \[[`3ba2e7bf97`](https://github.com/nodejs/node/commit/3ba2e7bf97)] - _**Revert**_ "**console**: colorize console error and warn" (Aviv Keller) [#54677](https://github.com/nodejs/node/pull/54677) +- \[[`2f678ea53b`](https://github.com/nodejs/node/commit/2f678ea53b)] - **crypto**: ensure invalid SubtleCrypto JWK data import results in DataError (Filip Skokan) [#55041](https://github.com/nodejs/node/pull/55041) +- \[[`5d28d98542`](https://github.com/nodejs/node/commit/5d28d98542)] - **deps**: update undici to 6.20.0 (Node.js GitHub Bot) [#55329](https://github.com/nodejs/node/pull/55329) +- \[[`0c7f2fc421`](https://github.com/nodejs/node/commit/0c7f2fc421)] - **deps**: update archs files for openssl-3.0.15+quic1 (Node.js GitHub Bot) [#55184](https://github.com/nodejs/node/pull/55184) +- \[[`da15e7edf5`](https://github.com/nodejs/node/commit/da15e7edf5)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.15+quic1 (Node.js GitHub Bot) [#55184](https://github.com/nodejs/node/pull/55184) +- \[[`381f1f9d08`](https://github.com/nodejs/node/commit/381f1f9d08)] - **deps**: update archs files for openssl-3.0.14+quic1 (Node.js GitHub Bot) [#54336](https://github.com/nodejs/node/pull/54336) +- \[[`48d643f78a`](https://github.com/nodejs/node/commit/48d643f78a)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.14+quic1 (Node.js GitHub Bot) [#54336](https://github.com/nodejs/node/pull/54336) +- \[[`7b1796803b`](https://github.com/nodejs/node/commit/7b1796803b)] - **deps**: update timezone to 2024b (Node.js GitHub Bot) [#55056](https://github.com/nodejs/node/pull/55056) +- \[[`8f1956c588`](https://github.com/nodejs/node/commit/8f1956c588)] - **deps**: update acorn-walk to 8.3.4 (Node.js GitHub Bot) [#54950](https://github.com/nodejs/node/pull/54950) +- \[[`20501a7350`](https://github.com/nodejs/node/commit/20501a7350)] - **deps**: update corepack to 0.29.4 (Node.js GitHub Bot) [#54845](https://github.com/nodejs/node/pull/54845) +- \[[`0f81eafecc`](https://github.com/nodejs/node/commit/0f81eafecc)] - **doc**: fix Markdown linter (Antoine du Hamel) [#55344](https://github.com/nodejs/node/pull/55344) +- \[[`df713f0a98`](https://github.com/nodejs/node/commit/df713f0a98)] - _**Revert**_ "**doc**: update test context.assert" (Antoine du Hamel) [#55344](https://github.com/nodejs/node/pull/55344) +- \[[`fd6fc61d2c`](https://github.com/nodejs/node/commit/fd6fc61d2c)] - **doc**: add pmarchini to collaborators (Pietro Marchini) [#55331](https://github.com/nodejs/node/pull/55331) +- \[[`b963db9ee2`](https://github.com/nodejs/node/commit/b963db9ee2)] - **doc**: fix `events.once()` example using `AbortSignal` (Ivo Janssen) [#55144](https://github.com/nodejs/node/pull/55144) +- \[[`50b13bfb12`](https://github.com/nodejs/node/commit/50b13bfb12)] - **doc**: add onboarding details for ambassador program (Marco Ippolito) [#55284](https://github.com/nodejs/node/pull/55284) +- \[[`27564b7811`](https://github.com/nodejs/node/commit/27564b7811)] - **doc**: fix initial default value of autoSelectFamily (Ihor Rohovets) [#55245](https://github.com/nodejs/node/pull/55245) +- \[[`9e7be23aa5`](https://github.com/nodejs/node/commit/9e7be23aa5)] - **doc**: tweak onboarding instructions (Michael Dawson) [#55212](https://github.com/nodejs/node/pull/55212) +- \[[`f412a029c3`](https://github.com/nodejs/node/commit/f412a029c3)] - **doc**: update test context.assert (Pietro Marchini) [#55186](https://github.com/nodejs/node/pull/55186) +- \[[`2f7828debb`](https://github.com/nodejs/node/commit/2f7828debb)] - **doc**: fix unordered error anchors (Antoine du Hamel) [#55242](https://github.com/nodejs/node/pull/55242) +- \[[`d08e4c235b`](https://github.com/nodejs/node/commit/d08e4c235b)] - **doc**: mention addons to experimental permission (Rafael Gonzaga) [#55166](https://github.com/nodejs/node/pull/55166) +- \[[`d65c2458dc`](https://github.com/nodejs/node/commit/d65c2458dc)] - **doc**: use correct dash in stability status (Antoine du Hamel) [#55200](https://github.com/nodejs/node/pull/55200) +- \[[`d9839c16cf`](https://github.com/nodejs/node/commit/d9839c16cf)] - **doc**: fix link in `test/README.md` (Livia Medeiros) [#55165](https://github.com/nodejs/node/pull/55165) +- \[[`1ad659afa4`](https://github.com/nodejs/node/commit/1ad659afa4)] - **doc**: add esm examples to node:net (Alfredo González) [#55134](https://github.com/nodejs/node/pull/55134) +- \[[`81ad69d50f`](https://github.com/nodejs/node/commit/81ad69d50f)] - **doc**: move the YAML changes element (sendoru) [#55112](https://github.com/nodejs/node/pull/55112) +- \[[`7a51a161be`](https://github.com/nodejs/node/commit/7a51a161be)] - **doc**: fix the require resolve algorithm in `modules.md` (chirsz) [#55117](https://github.com/nodejs/node/pull/55117) +- \[[`80edcdf899`](https://github.com/nodejs/node/commit/80edcdf899)] - **doc**: update style guide (Aviv Keller) [#53223](https://github.com/nodejs/node/pull/53223) +- \[[`388c754dd2`](https://github.com/nodejs/node/commit/388c754dd2)] - **doc**: add missing `:` to `run()`'s `globPatterns` (Aviv Keller) [#55135](https://github.com/nodejs/node/pull/55135) +- \[[`94302b6a76`](https://github.com/nodejs/node/commit/94302b6a76)] - **doc**: add abmusse to collaborators (Abdirahim Musse) [#55086](https://github.com/nodejs/node/pull/55086) +- \[[`27ff2da964`](https://github.com/nodejs/node/commit/27ff2da964)] - **doc**: add note about `--expose-internals` (Aviv Keller) [#52861](https://github.com/nodejs/node/pull/52861) +- \[[`df6dc753b7`](https://github.com/nodejs/node/commit/df6dc753b7)] - **doc**: remove `parseREPLKeyword` from REPL documentation (Aviv Keller) [#54749](https://github.com/nodejs/node/pull/54749) +- \[[`4baa5c4d10`](https://github.com/nodejs/node/commit/4baa5c4d10)] - **doc**: change backporting guide with updated info (Aviv Keller) [#53746](https://github.com/nodejs/node/pull/53746) +- \[[`9947fc112f`](https://github.com/nodejs/node/commit/9947fc112f)] - **doc**: add missing definitions to `internal-api.md` (Aviv Keller) [#53303](https://github.com/nodejs/node/pull/53303) +- \[[`a4586f0e94`](https://github.com/nodejs/node/commit/a4586f0e94)] - **doc**: update documentation for externalizing deps (Michael Dawson) [#54792](https://github.com/nodejs/node/pull/54792) +- \[[`70504f8522`](https://github.com/nodejs/node/commit/70504f8522)] - **doc**: update `require(ESM)` history and stability status (Antoine du Hamel) [#55199](https://github.com/nodejs/node/pull/55199) +- \[[`9d0041ac40`](https://github.com/nodejs/node/commit/9d0041ac40)] - **doc**: add release key for aduh95 (Antoine du Hamel) [#55349](https://github.com/nodejs/node/pull/55349) +- \[[`0c1666a52a`](https://github.com/nodejs/node/commit/0c1666a52a)] - **events**: allow null/undefined eventInitDict (Matthew Aitken) [#54643](https://github.com/nodejs/node/pull/54643) +- \[[`453df77f99`](https://github.com/nodejs/node/commit/453df77f99)] - **events**: return `currentTarget` when dispatching (Matthew Aitken) [#54642](https://github.com/nodejs/node/pull/54642) +- \[[`0decaab9db`](https://github.com/nodejs/node/commit/0decaab9db)] - **fs**: acknowledge `signal` option in `filehandle.createReadStream()` (Livia Medeiros) [#55148](https://github.com/nodejs/node/pull/55148) +- \[[`00a2fc7166`](https://github.com/nodejs/node/commit/00a2fc7166)] - **lib**: move `Symbol[Async]Dispose` polyfills to `internal/util` (Antoine du Hamel) [#54853](https://github.com/nodejs/node/pull/54853) +- \[[`8e6b606ac4`](https://github.com/nodejs/node/commit/8e6b606ac4)] - **lib**: remove lib/internal/idna.js (Yagiz Nizipli) [#55050](https://github.com/nodejs/node/pull/55050) +- \[[`c96e5cb664`](https://github.com/nodejs/node/commit/c96e5cb664)] - **lib**: the REPL should survive deletion of Array.prototype methods (Jordan Harband) [#31457](https://github.com/nodejs/node/pull/31457) +- \[[`748ed2e559`](https://github.com/nodejs/node/commit/748ed2e559)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#55300](https://github.com/nodejs/node/pull/55300) +- \[[`8b8d35f015`](https://github.com/nodejs/node/commit/8b8d35f015)] - **meta**: bump mozilla-actions/sccache-action from 0.0.5 to 0.0.6 (dependabot\[bot]) [#55225](https://github.com/nodejs/node/pull/55225) +- \[[`d3441ff0c8`](https://github.com/nodejs/node/commit/d3441ff0c8)] - **meta**: bump actions/checkout from 4.1.7 to 4.2.0 (dependabot\[bot]) [#55224](https://github.com/nodejs/node/pull/55224) +- \[[`1c20908558`](https://github.com/nodejs/node/commit/1c20908558)] - **meta**: bump actions/setup-node from 4.0.3 to 4.0.4 (dependabot\[bot]) [#55223](https://github.com/nodejs/node/pull/55223) +- \[[`8a529abd69`](https://github.com/nodejs/node/commit/8a529abd69)] - **meta**: bump peter-evans/create-pull-request from 7.0.1 to 7.0.5 (dependabot\[bot]) [#55219](https://github.com/nodejs/node/pull/55219) +- \[[`9053d210ab`](https://github.com/nodejs/node/commit/9053d210ab)] - **meta**: add mailmap entry for abmusse (Abdirahim Musse) [#55182](https://github.com/nodejs/node/pull/55182) +- \[[`db2496c125`](https://github.com/nodejs/node/commit/db2496c125)] - **meta**: add more information about nightly releases (Aviv Keller) [#55084](https://github.com/nodejs/node/pull/55084) +- \[[`d2ce003b2f`](https://github.com/nodejs/node/commit/d2ce003b2f)] - **meta**: add `linux` to OS labels in collaborator guide (Aviv Keller) [#54986](https://github.com/nodejs/node/pull/54986) +- \[[`37b0bea247`](https://github.com/nodejs/node/commit/37b0bea247)] - **meta**: remove never-used workflow trigger (Aviv Keller) [#54983](https://github.com/nodejs/node/pull/54983) +- \[[`ae27e2dcd7`](https://github.com/nodejs/node/commit/ae27e2dcd7)] - **meta**: add links to alternative issue trackers (Aviv Keller) [#54401](https://github.com/nodejs/node/pull/54401) +- \[[`6e5d524b0f`](https://github.com/nodejs/node/commit/6e5d524b0f)] - **module**: remove duplicated import (Aviv Keller) [#54942](https://github.com/nodejs/node/pull/54942) +- \[[`3a682cca03`](https://github.com/nodejs/node/commit/3a682cca03)] - **path**: remove repetitive conditional operator in `posix.resolve` (Wiyeong Seo) [#54835](https://github.com/nodejs/node/pull/54835) +- \[[`ac1cb8dfdb`](https://github.com/nodejs/node/commit/ac1cb8dfdb)] - **perf_hooks**: add missing type argument to getEntriesByName (Luke Taher) [#54767](https://github.com/nodejs/node/pull/54767) +- \[[`85b3edc83b`](https://github.com/nodejs/node/commit/85b3edc83b)] - **repl**: catch `\v` and `\r` in new-line detection (Aviv Keller) [#54512](https://github.com/nodejs/node/pull/54512) +- \[[`df1f04999e`](https://github.com/nodejs/node/commit/df1f04999e)] - **src**: decode native error messages as UTF-8 (Joyee Cheung) [#55024](https://github.com/nodejs/node/pull/55024) +- \[[`86d718177a`](https://github.com/nodejs/node/commit/86d718177a)] - **src**: update clang-tidy and focus on modernization (Yagiz Nizipli) [#53757](https://github.com/nodejs/node/pull/53757) +- \[[`7d01b6a9c5`](https://github.com/nodejs/node/commit/7d01b6a9c5)] - **src**: cleanup per env handles directly without a list (Chengzhong Wu) [#54993](https://github.com/nodejs/node/pull/54993) +- \[[`a730cdb622`](https://github.com/nodejs/node/commit/a730cdb622)] - **src**: remove duplicate code setting AF_INET (He Yang) [#54939](https://github.com/nodejs/node/pull/54939) +- \[[`f10d9ad283`](https://github.com/nodejs/node/commit/f10d9ad283)] - **stream**: treat null asyncIterator as undefined (Jason Zhang) [#55119](https://github.com/nodejs/node/pull/55119) +- \[[`6027084245`](https://github.com/nodejs/node/commit/6027084245)] - **test**: make `test-loaders-workers-spawned` less flaky (Antoine du Hamel) [#55172](https://github.com/nodejs/node/pull/55172) +- \[[`66a87d19bd`](https://github.com/nodejs/node/commit/66a87d19bd)] - **test**: update multiple assert tests to use node:test (James M Snell) [#54585](https://github.com/nodejs/node/pull/54585) +- \[[`5105188c47`](https://github.com/nodejs/node/commit/5105188c47)] - **test**: update wpt test for encoding (devstone) [#55151](https://github.com/nodejs/node/pull/55151) +- \[[`81bcec0b82`](https://github.com/nodejs/node/commit/81bcec0b82)] - **test**: deflake test/pummel/test-timers.js (jakecastelli) [#55098](https://github.com/nodejs/node/pull/55098) +- \[[`82c402265a`](https://github.com/nodejs/node/commit/82c402265a)] - **test**: deflake test-http-remove-header-stays-removed (Luigi Pinca) [#55004](https://github.com/nodejs/node/pull/55004) +- \[[`78021701ed`](https://github.com/nodejs/node/commit/78021701ed)] - **test**: fix test-tls-junk-closes-server (Michael Dawson) [#55089](https://github.com/nodejs/node/pull/55089) +- \[[`c908b8a2d8`](https://github.com/nodejs/node/commit/c908b8a2d8)] - **test**: fix more tests that fail when path contains a space (Antoine du Hamel) [#55088](https://github.com/nodejs/node/pull/55088) +- \[[`afc1628e73`](https://github.com/nodejs/node/commit/afc1628e73)] - **test**: fix `assertSnapshot` when path contains a quote (Antoine du Hamel) [#55087](https://github.com/nodejs/node/pull/55087) +- \[[`7c88739b83`](https://github.com/nodejs/node/commit/7c88739b83)] - **test**: fix some tests when path contains `%` (Antoine du Hamel) [#55082](https://github.com/nodejs/node/pull/55082) +- \[[`eb4d468671`](https://github.com/nodejs/node/commit/eb4d468671)] - _**Revert**_ "**test**: mark test-fs-watch-non-recursive flaky on Windows" (Luigi Pinca) [#55079](https://github.com/nodejs/node/pull/55079) +- \[[`bc7b5249d4`](https://github.com/nodejs/node/commit/bc7b5249d4)] - **test**: make `test-runner-assert` more robust (Aviv Keller) [#55036](https://github.com/nodejs/node/pull/55036) +- \[[`6c2a1386f7`](https://github.com/nodejs/node/commit/6c2a1386f7)] - **test**: update tls test to support OpenSSL32 (Michael Dawson) [#55030](https://github.com/nodejs/node/pull/55030) +- \[[`96406610fa`](https://github.com/nodejs/node/commit/96406610fa)] - **test**: fix `test-vm-context-dont-contextify` when path contains a space (Antoine du Hamel) [#55026](https://github.com/nodejs/node/pull/55026) +- \[[`39a80eed4f`](https://github.com/nodejs/node/commit/39a80eed4f)] - **test**: adjust tls-set-ciphers for OpenSSL32 (Michael Dawson) [#55016](https://github.com/nodejs/node/pull/55016) +- \[[`bd8fd4fceb`](https://github.com/nodejs/node/commit/bd8fd4fceb)] - **test**: add `util.stripVTControlCharacters` test (RedYetiDev) [#54865](https://github.com/nodejs/node/pull/54865) +- \[[`333b5a02d0`](https://github.com/nodejs/node/commit/333b5a02d0)] - **test**: improve coverage for timer promises schedular (Aviv Keller) [#53370](https://github.com/nodejs/node/pull/53370) +- \[[`f48992f433`](https://github.com/nodejs/node/commit/f48992f433)] - **test**: remove unused common utilities (RedYetiDev) [#54825](https://github.com/nodejs/node/pull/54825) +- \[[`93a098c56d`](https://github.com/nodejs/node/commit/93a098c56d)] - **test**: deflake test-http-header-overflow (Luigi Pinca) [#54978](https://github.com/nodejs/node/pull/54978) +- \[[`f849cf677d`](https://github.com/nodejs/node/commit/f849cf677d)] - **test**: fix `soucre` to `source` (Aviv Keller) [#55038](https://github.com/nodejs/node/pull/55038) +- \[[`1a007ea814`](https://github.com/nodejs/node/commit/1a007ea814)] - **test**: add asserts to validate test assumptions (Michael Dawson) [#54997](https://github.com/nodejs/node/pull/54997) +- \[[`6f53c096f8`](https://github.com/nodejs/node/commit/6f53c096f8)] - **test**: move test-http-max-sockets to parallel (Luigi Pinca) [#54977](https://github.com/nodejs/node/pull/54977) +- \[[`aba9dc775e`](https://github.com/nodejs/node/commit/aba9dc775e)] - **test**: remove test-http-max-sockets flaky designation (Luigi Pinca) [#54976](https://github.com/nodejs/node/pull/54976) +- \[[`ee5624bffe`](https://github.com/nodejs/node/commit/ee5624bffe)] - **test**: adjust key sizes to support OpenSSL32 (Michael Dawson) [#54972](https://github.com/nodejs/node/pull/54972) +- \[[`5c11a61140`](https://github.com/nodejs/node/commit/5c11a61140)] - **test**: update test to support OpenSSL32 (Michael Dawson) [#54968](https://github.com/nodejs/node/pull/54968) +- \[[`62f21470e4`](https://github.com/nodejs/node/commit/62f21470e4)] - **test**: update DOM events web platform tests (Matthew Aitken) [#54642](https://github.com/nodejs/node/pull/54642) +- \[[`426851705c`](https://github.com/nodejs/node/commit/426851705c)] - **test_runner**: assert entry is a valid object (Edigleysson Silva (Edy)) [#55231](https://github.com/nodejs/node/pull/55231) +- \[[`b1cad519d7`](https://github.com/nodejs/node/commit/b1cad519d7)] - **test_runner**: use `test:` symbol on second print of parent test (RedYetiDev) [#54956](https://github.com/nodejs/node/pull/54956) +- \[[`63c8f3d436`](https://github.com/nodejs/node/commit/63c8f3d436)] - **test_runner**: replace ansi clear with ansi reset (Pietro Marchini) [#55013](https://github.com/nodejs/node/pull/55013) +- \[[`0b3fb344f7`](https://github.com/nodejs/node/commit/0b3fb344f7)] - **tools**: add `polyfilled` option to `prefer-primordials` rule (Antoine du Hamel) [#55318](https://github.com/nodejs/node/pull/55318) +- \[[`8981309bd9`](https://github.com/nodejs/node/commit/8981309bd9)] - **tools**: make `choco install` script more readable (Aviv Keller) [#54002](https://github.com/nodejs/node/pull/54002) +- \[[`7310abeae1`](https://github.com/nodejs/node/commit/7310abeae1)] - **tools**: bump Rollup from 4.18.1 to 4.22.4 for `lint-md` (dependabot\[bot]) [#55093](https://github.com/nodejs/node/pull/55093) +- \[[`083311e8af`](https://github.com/nodejs/node/commit/083311e8af)] - **tools**: remove redudant code from eslint require rule (Aviv Keller) [#54892](https://github.com/nodejs/node/pull/54892) +- \[[`ae4b2aece1`](https://github.com/nodejs/node/commit/ae4b2aece1)] - **tools**: update error message for ICU in license-builder (Aviv Keller) [#54742](https://github.com/nodejs/node/pull/54742) +- \[[`3ebd31684d`](https://github.com/nodejs/node/commit/3ebd31684d)] - **tools**: update github_reporter to 1.7.1 (Node.js GitHub Bot) [#54951](https://github.com/nodejs/node/pull/54951) +- \[[`397be8a10e`](https://github.com/nodejs/node/commit/397be8a10e)] - **tty**: fix links for terminal colors (Aviv Keller) [#54596](https://github.com/nodejs/node/pull/54596) +- \[[`a3c2ef9e98`](https://github.com/nodejs/node/commit/a3c2ef9e98)] - **util**: update ansi regex (Aviv Keller) [#54865](https://github.com/nodejs/node/pull/54865) +- \[[`efdccc88a2`](https://github.com/nodejs/node/commit/efdccc88a2)] - **watch**: preserve output when gracefully restarted (Théo LUDWIG) [#54323](https://github.com/nodejs/node/pull/54323) +- \[[`226836c5ac`](https://github.com/nodejs/node/commit/226836c5ac)] - **worker**: throw InvalidStateError in postMessage after close (devstone) [#55206](https://github.com/nodejs/node/pull/55206) +- \[[`f39ff4d14b`](https://github.com/nodejs/node/commit/f39ff4d14b)] - **worker**: handle `--input-type` more consistently (Antoine du Hamel) [#54979](https://github.com/nodejs/node/pull/54979) +- \[[`30383ffb9a`](https://github.com/nodejs/node/commit/30383ffb9a)] - **zlib**: throw brotli initialization error from c++ (Yagiz Nizipli) [#54698](https://github.com/nodejs/node/pull/54698) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.18.1/node-v20.18.1-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.18.1/node-v20.18.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.18.1/node-v20.18.1-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.18.1/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.18.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.18.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.18.1/node-v20.18.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.18.1/node-v20.18.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.18.1/node-v20.18.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.18.1/node-v20.18.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.18.1/node-v20.18.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.18.1/node-v20.18.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.18.1/node-v20.18.1-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.18.1/node-v20.18.1-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.18.1/node-v20.18.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.18.1/node-v20.18.1.tar.gz \ +Other release files: https://nodejs.org/dist/v20.18.1/ \ +Documentation: https://nodejs.org/docs/v20.18.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +dc148e207d1a6456af05bf55d2c5af0185a2c79139fa64c8278ca257dc4894d5 node-v20.18.1-aix-ppc64.tar.gz +1f05a889ee095bebae179d794d409d2c4a6b42f63be891a9b1e16740712891e6 node-v20.18.1-arm64.msi +9e92ce1032455a9cc419fe71e908b27ae477799371b45a0844eedb02279922a4 node-v20.18.1-darwin-arm64.tar.gz +68dbaeb8e37be25699c47788d00f2ec748ae6599e5f1696a695b1e3b4312db97 node-v20.18.1-darwin-arm64.tar.xz +c5497dd17c8875b53712edaf99052f961013cedc203964583fc0cfc0aaf93581 node-v20.18.1-darwin-x64.tar.gz +2f40325262474304101da93df9f1a0ced16fd11eabcc7aeec96c085a2e34e10f node-v20.18.1-darwin-x64.tar.xz +4a228c99ff3c1ea9c052336f3353bf157f7bf0a339da9acabba8ec4ec728d871 node-v20.18.1-headers.tar.gz +c29a72345fbbfa06a78bbfd129fcb2db097f138be17408a520420ae38406243d node-v20.18.1-headers.tar.xz +73cd297378572e0bc9dfc187c5ec8cca8d43aee6a596c10ebea1ed5f9ec682b6 node-v20.18.1-linux-arm64.tar.gz +44d1ffc5905c005ace4515ca6f8c090c4c7cfce3a9a67df0dba35c727590b8f6 node-v20.18.1-linux-arm64.tar.xz +7b7c3315818e9fe57512737c2380fada14d8717ce88945fb6f7b8baadd3cfb92 node-v20.18.1-linux-armv7l.tar.gz +b5a02f354f67d8f4bda8c563954f4805eccb4039f66a5dcdf755168aaac4e16c node-v20.18.1-linux-armv7l.tar.xz +703fc140e330002020bf54cffcfbbf8a957413b23fe6940a9f5a147e5103e960 node-v20.18.1-linux-ppc64le.tar.gz +ad01ea5905e8fb587f306d6cf44cce62a334aaa5e689f1f086ae4d03c4eaf2f2 node-v20.18.1-linux-ppc64le.tar.xz +15724744d75fa10f5856b17d5293d141175a2832b7c17bf12df669d4b22b12bc node-v20.18.1-linux-s390x.tar.gz +1df248c207d8557ec1c554242758b5852bad5e0da49108d2dd94abcb9e9eae52 node-v20.18.1-linux-s390x.tar.xz +259e5a8bf2e15ecece65bd2a47153262eda71c0b2c9700d5e703ce4951572784 node-v20.18.1-linux-x64.tar.gz +c6fa75c841cbffac851678a472f2a5bd612fff8308ef39236190e1f8dbb0e567 node-v20.18.1-linux-x64.tar.xz +ed547fa08a8855b6ce1b88e9b8a5ec839a02a7358868a00cd772878e78b560e3 node-v20.18.1.pkg +5bad8ced873eef3b32e7daee703156bce9224920ac6044f4232f5393df0628b8 node-v20.18.1.tar.gz +91df43f8ab6c3f7be81522d73313dbdd5634bbca228ef0e6d9369fe0ab8cccd0 node-v20.18.1.tar.xz +b4cc958546b0743123f958f5c607f21cd8029bde8f7f0989cc99b9b38414e81a node-v20.18.1-win-arm64.7z +7c03744df29e81c34043a956969b3afc34171d3ab85e25fc737eb1860222444f node-v20.18.1-win-arm64.zip +08ce2180a82fb5ba3cd4dc8f0744e3f5029f1745359dd3833dfcf0e10148e7d0 node-v20.18.1-win-x64.7z +56e5aacdeee7168871721b75819ccacf2367de8761b78eaceacdecd41e04ca03 node-v20.18.1-win-x64.zip +18c03af826919dc791613ee3ff7903cc78e68627e8da44ecaf55a40eb6cd994a node-v20.18.1-win-x86.7z +08987ceb478044b652ad57e15b96597e1eaf7f06502336b5a02c545f9e403ed6 node-v20.18.1-win-x86.zip +658930e6136d01bf244146a6436d8ea146cd50557c1b2a2617a60bcd9dce0da1 node-v20.18.1-x64.msi +6f89d8ee1ff0daf73ef408b9187a8f787327ddc6c393d5b8cdcbf9c6ff04b7c6 node-v20.18.1-x86.msi +9a52905b5d22b08b5b34e86b8d5358cd22c03fbd0fcb9dbb37c9bd82a8f18c17 win-arm64/node.exe +58795bcd44e8023ff443dedabf7f9af928732a51befc5324082aafe56e0f5eb0 win-arm64/node.lib +37d60e51b1fa23027187cc63bd79ef485de5777a601bbe74d5985720dc9dfabd win-arm64/node_pdb.7z +5e716c36e4a9e46406955d4cf4598cdca28c7e61c218192d8f8de7cead3bf15e win-arm64/node_pdb.zip +06c1dec1b428927d6ff01c8f5882f119ec13b61ac77483760aa7fba215c72cf5 win-x64/node.exe +a2df424ebe89449195d830e80cb2ade2e7ea5fe9b27ca9510de173b9a06733ae win-x64/node.lib +e33ea0808185d7607dc7e8c996aa9e21499801c6a6c5ecd4ab71751ee7539474 win-x64/node_pdb.7z +2250b545b0c6b4f3bd1cf2a31dfb0f5c91b90c3de41f8656df0359f74da47900 win-x64/node_pdb.zip +ff782544e1514f58bc334955d4fdc4bb4df06b277c693c74762eb9740ac2f42b win-x86/node.exe +a2ccacb78f399dceb60f5ad275c9380c5cf498202ef1cb7f7bd789d844ab0daa win-x86/node.lib +47aca7d7e52747b0bd08c8f1a3a19eda9e512ee194c801402897ee3abc86ddc1 win-x86/node_pdb.7z +64457eb79562c7e8d97544ec9b06ad92425778010bda3771001a28f5503ff55d win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEzGj1oxBv9EgyLkjtJ/XjjVsKIV8FAmc981QACgkQJ/XjjVsK +IV+LkRAAmyE2ddbS29NI9kIYI9kETn5kGPlJr7Hkk8KV1XhHpUJ8Abb3L1e8hBmv +QVtDhccNZfbrs/tE3ChKxv9BfYQB+sqWg2ckPDlIs2NnC8S6LYfrpiDATY+sLGax +F0zT3yO9SnoqbZ/FsNbvLjr7bNqrUxc1dtPfl4/dtHSeSUGeKGGbbe/mvbUW4l40 +tnZpDIxIwWXxkgnnG0Nt6nI7R5MXeCDUaf/CuG46sumvsmC1HnMH471vQVq+nSZD +a2U+R1SsTbIM6gCjWQP4laTbtQdXIy9WRQNoXl9NRkinzAQvUY3/i0RLT4IBuonH +tUe0MFsayaIn5k3IUSOT5XHfynwIxXthx6hJBGq3GDrHLo2SYpNeSmgtKVI0yXmm +UmQWjknz2M5dHVEUyG2rWdvz58Rp9ocITmX1WmTSoig+hBRDNaoe9hipA1AxJ5x4 +A/uA/uRt0eysBkKpcqt3Jj/9uORRNV9j2+uzj2D5wkrOfTeuDLm8X1oBuXEdtpU+ +IM4UoXdVlSJ6AWL1W3P//XCj8gEYsaRbgmOg1z/U6wgqtxYDCefebDNx80ImTeap +ffKiBva4OmtGydvXtzt6pqslZFdLvjSw5UYy8diHDBnn3ZV/NCsbiVYJ7eQKHkKM +/AwHFB4JQbicXS8a2lYnnsJs0LDHO7VhdXU1Fj680SbH0FwIeFU= +=No17 +-----END PGP SIGNATURE----- +``` From 78c14bdb025b0cceb756b3691ec4f32665b3abdd Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Wed, 20 Nov 2024 22:23:38 +0300 Subject: [PATCH 0142/1385] fix: Unoptimized SVG images (#7244) * fix: unoptimized SVG image * chore: review updates * Update apps/site/util/imageUtils.ts Co-authored-by: Steven <steven@ceriously.com> Signed-off-by: Caner Akdas <canerakdas@gmail.com> * chore: format files * chore: review update * Update apps/site/util/imageUtils.ts Co-authored-by: Steven <steven@ceriously.com> Signed-off-by: Claudio W <cwunder@gnome.org> --------- Signed-off-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Claudio W <cwunder@gnome.org> Co-authored-by: Steven <steven@ceriously.com> Co-authored-by: Claudio W <cwunder@gnome.org> --- apps/site/components/MDX/Image/index.tsx | 19 ++++++++- apps/site/next.config.mjs | 2 - apps/site/util/__tests__/imageUtils.test.mjs | 43 ++++++++++++++++++++ apps/site/util/imageUtils.ts | 19 +++++++++ 4 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 apps/site/util/__tests__/imageUtils.test.mjs create mode 100644 apps/site/util/imageUtils.ts diff --git a/apps/site/components/MDX/Image/index.tsx b/apps/site/components/MDX/Image/index.tsx index 42634bb9ad24b..871651ddd2882 100644 --- a/apps/site/components/MDX/Image/index.tsx +++ b/apps/site/components/MDX/Image/index.tsx @@ -2,7 +2,11 @@ import type { ImageProps } from 'next/image'; import Image from 'next/image'; import type { FC } from 'react'; -const MDXImage: FC<ImageProps> = ({ width, height, alt, ...props }) => { +import { isSvgImage } from '@/util/imageUtils'; + +const MDXImage: FC<ImageProps> = ({ width, height, alt, src, ...props }) => { + const isUnoptimizedImage = isSvgImage(src.toString()); + if (!width || !height) { // Since `width` and `height` are not provided in the Markdown image format, // we provide the height and width automatically. @@ -10,6 +14,8 @@ const MDXImage: FC<ImageProps> = ({ width, height, alt, ...props }) => { return ( <Image {...props} + src={src} + unoptimized={isUnoptimizedImage} alt={alt} width={0} height={0} @@ -19,7 +25,16 @@ const MDXImage: FC<ImageProps> = ({ width, height, alt, ...props }) => { ); } - return <Image {...props} alt={alt} width={width} height={height} />; + return ( + <Image + {...props} + alt={alt} + width={width} + height={height} + src={src} + unoptimized={isUnoptimizedImage} + /> + ); }; export default MDXImage; diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index 245c905ab71a5..167b52803379e 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -23,8 +23,6 @@ const nextConfig = { images: { // We disable image optimisation during static export builds unoptimized: ENABLE_STATIC_EXPORT, - // We allow SVGs to be used as images - dangerouslyAllowSVG: true, // We add it to the remote pattern for the static images we use from GitHub remotePatterns: [ { diff --git a/apps/site/util/__tests__/imageUtils.test.mjs b/apps/site/util/__tests__/imageUtils.test.mjs new file mode 100644 index 0000000000000..3e2ec00245ca1 --- /dev/null +++ b/apps/site/util/__tests__/imageUtils.test.mjs @@ -0,0 +1,43 @@ +import { isSvgImage } from '@/util/imageUtils'; + +describe('isSvgImage', () => { + const testCases = [ + { + description: 'should return true for a valid .svg URL', + input: 'https://nodejs.org/image.svg', + expected: true, + }, + { + description: 'should return true for a URL with query params', + input: 'https://nodejs.org/image.svg?query=param', + expected: true, + }, + { + description: 'should return false for a URL without a .svg extension', + input: 'https://nodejs.org/image', + expected: false, + }, + { + description: + 'should return false for a URL containing ".svg" but not ending with it', + input: 'https://nodejs.org/image.svg.png', + expected: false, + }, + { + description: 'should return false for an empty string', + input: '', + expected: false, + }, + { + description: 'should return false for a non-URL string', + input: 'not-a-url', + expected: false, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, () => { + expect(isSvgImage(input)).toBe(expected); + }); + }); +}); diff --git a/apps/site/util/imageUtils.ts b/apps/site/util/imageUtils.ts new file mode 100644 index 0000000000000..d75193e8c561b --- /dev/null +++ b/apps/site/util/imageUtils.ts @@ -0,0 +1,19 @@ +/** + * This is a temporary workaround that can be removed once Next.js is upgraded. + * See https://github.com/vercel/next.js/pull/72970 + * + * Checks if the given source string points to an SVG image. + * + * This function examines the base part of the provided string (ignoring query parameters) + * to determine if it ends with the `.svg` extension. + * + * @param src - The URL or string representing the source of the image. + * @returns `true` if the source points to an SVG image, otherwise `false`. + */ +export const isSvgImage = (src: string): boolean => { + // Split the source string at the '?' character to separate the main path from query parameters + const [image] = src.split('?'); + + // Check if the base path (before any query parameters) ends with '.svg' + return image.endsWith('.svg'); +}; From a895bc08b8b674ef65ca8fdf554a249ff7ddf779 Mon Sep 17 00:00:00 2001 From: Aviv Keller <redyetidev@gmail.com> Date: Wed, 20 Nov 2024 14:29:55 -0500 Subject: [PATCH 0143/1385] infra: add `@oramacloud/*` to dependabot (#7253) --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 135a13bfe048d..4e544ad9176c2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -70,6 +70,7 @@ updates: orama: patterns: - '@orama/*' + - '@oramacloud/*' ignore: # Manually update major versions of @types/node with the version specified within .nvmrc - dependency-name: '@types/node' From e733345e708f04c2b76456a41e78a726a20e3f2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Nov 2024 12:36:50 -0800 Subject: [PATCH 0144/1385] meta: bump step-security/harden-runner from 2.10.1 to 2.10.2 (#7258) Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.10.1 to 2.10.2. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/91182cccc01eb5e619899d80e4e971d6181294a7...0080882f6c36860b6ba35c610c98ce87d4e2f26f) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 6 +++--- .github/workflows/pull-request-label.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr.yml | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8738b23c96949..4c1d071d7e3b6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -46,7 +46,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3e8b62d99b80a..6af9c5d7f83ec 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 7cb0e7a46608c..73ff628083812 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index dfacbe3a5e268..be0805d9f8606 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 4d5aec6f53ffa..0ed75f350419f 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -37,7 +37,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit @@ -159,7 +159,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit diff --git a/.github/workflows/pull-request-label.yml b/.github/workflows/pull-request-label.yml index 1eed831e2f500..e04792d09dd9b 100644 --- a/.github/workflows/pull-request-label.yml +++ b/.github/workflows/pull-request-label.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 88bcb7d67c41d..da7f01d54f346 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr.yml index 1697b65bd74e7..f3dce60376045 100644 --- a/.github/workflows/translations-pr.yml +++ b/.github/workflows/translations-pr.yml @@ -39,7 +39,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit @@ -70,7 +70,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit From a6a1660a8ba96cf6a038b15e244e72df5f92bd97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Nov 2024 12:36:54 -0800 Subject: [PATCH 0145/1385] meta: bump github/codeql-action from 3.27.0 to 3.27.5 (#7257) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.27.0 to 3.27.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/662472033e021d55d94146f66f6058822b0b39fd...f09c1c0a94de965c15400f5634aa42fac8fb8f88) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6af9c5d7f83ec..c1f303ddd70b4 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/init@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/autobuild@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/analyze@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index da7f01d54f346..57b8ae1b695b3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/upload-sarif@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: sarif_file: results.sarif From 881afd401e3688ab70ec1504fb9ea29e2f40a10b Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Wed, 20 Nov 2024 20:14:22 -0300 Subject: [PATCH 0146/1385] 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 <duhamelantoine1995@gmail.com> Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> --------- Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --- 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 fd3c538884419849cc4a5b2bd7447152a3203938 Mon Sep 17 00:00:00 2001 From: Aviv Keller <redyetidev@gmail.com> Date: Thu, 21 Nov 2024 06:23:08 -0500 Subject: [PATCH 0147/1385] 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<GitHubApiFile>) => { // 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<BlogPostsRSC> => { 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<Array<NodeRelease>> => { 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 28f885e6f466b3e161fd77fa36bc18bd535cca9a Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Fri, 22 Nov 2024 16:42:09 +0100 Subject: [PATCH 0148/1385] 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 <redyetidev@gmail.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> * fix grammar and typo Co-authored-by: Aviv Keller <redyetidev@gmail.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> * fix typo and grammar Co-authored-by: Aviv Keller <redyetidev@gmail.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> * 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 <augustin.mauroy@outlook.fr> Co-authored-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Co-authored-by: Aviv Keller <redyetidev@gmail.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- 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 +--- + +<!-- +day 1: https://hackmd.io/-8o2Th28QhuNJwO43fafAw +day 2: https://hackmd.io/V3xtjlcrTIGsemPv8t-tKg +--> + +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 762362cec93eb34fef083519ca055cfaaf9069ef Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sat, 23 Nov 2024 01:29:14 +0000 Subject: [PATCH 0149/1385] 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 --- <section> - <WithBadge section="index" /> + <WithBadge section="index" /> <div> <h1 className="special">Run JavaScript Everywhere</h1> - 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. </div> @@ -28,6 +27,7 @@ layout: home </> )} </WithNodeRelease> + <WithNodeRelease status={['Current']}> {({ release }) => ( <small> @@ -37,6 +37,7 @@ layout: home </small> )} </WithNodeRelease> + </div> </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Ejecuta JavaScript en cualquier parte</h1> - -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. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Descargar Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Ejecuta JavaScript en cualquier parte</h1> + + 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. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Descargar Node.js (LTS)</DownloadButton> + <small> + Descarga Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> con soporte a largo plazo. + Node.js también puede ser instalado a través de <Link href="/download/package-manager">gestores de paquetes</Link>. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Descarga Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> con soporte a largo plazo. - Node.js también puede ser instalado a través de <Link href="/download/package-manager">gestores de paquetes</Link>. + ¿Quieres nuevas funciones más pronto? + Consigue<b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> en vez. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - ¿Quieres nuevas funciones más pronto? - Consigue<b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> en vez. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -Aprenda más sobre lo que Node.js puede ofrecer con nuestros [Materiales de aprendizaje](/learn). - + <div> + ```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` + ``` + + </div> + Aprenda más sobre lo que Node.js puede ofrecer con nuestros [Materiales de aprendizaje](/learn). </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">اجرا جاوااسکریپت در همه جا</h1> - -Node.js یک محیط اجرای جاوااسکریپت متن‌باز، رایگان و چندسکویی است -که به توسعه دهندگان اجازه می‌دهد تا سرورها، وب اپلیکیشن‌ها -ابزارهای خط فرمان و اسکریپت‌ها را ایجاد کنند. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>دانلود Node.js (نسخه پایدار)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">اجرا جاوااسکریپت در همه جا</h1> + + Node.js یک محیط اجرای جاوااسکریپت متن‌باز، رایگان و چندسکویی است + که به توسعه دهندگان اجازه می‌دهد تا سرورها، وب اپلیکیشن‌ها + ابزارهای خط فرمان و اسکریپت‌ها را ایجاد کنند. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>دانلود Node.js (نسخه پایدار)</DownloadButton> + <small> + دانلود Node.js <b>{release.versionWithPrefix}</b> + <sup title="دانلود نصب‌کننده Node.js برای پلتفرم فعلی شما">1</sup> با پشتیبانی بلندمدت. + Node.js همچنین از طریق <Link href="/download/package-manager">package managers</Link> نیز قابل نصب است. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - دانلود Node.js <b>{release.versionWithPrefix}</b> - <sup title="دانلود نصب‌کننده Node.js برای پلتفرم فعلی شما">1</sup> با پشتیبانی بلندمدت. - Node.js همچنین از طریق <Link href="/download/package-manager">package managers</Link> نیز قابل نصب است. + می‌خواهید زودتر از ویژگی‌های جدید برخوردار شوید؟ + به‌جای آن <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="دانلود نصب‌کننده Node.js برای پلتفرم فعلی شما">1</sup> را دریافت کنید. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - می‌خواهید زودتر از ویژگی‌های جدید برخوردار شوید؟ - به‌جای آن <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="دانلود نصب‌کننده Node.js برای پلتفرم فعلی شما">1</sup> را دریافت کنید. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -با [مطالب آموزشی](/learn) ما، بیشتر در مورد اینکه Node.js چه امکاناتی را ارائه می دهد بیاموزید. - -</section> + <div> + ```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` + ``` + + </div> + با [مطالب آموزشی](/learn) ما، بیشتر در مورد اینکه Node.js چه امکاناتی را ارائه می دهد بیاموزید. + </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Exécuter du JavaScript partout</h1> - -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. - -</div> + <WithBadge section="index" /> + + <div> + <h1 className="special">Exécuter du JavaScript partout</h1> + + 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. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Télécharger Node.js (LTS)</DownloadButton> + <small> + Télécharger Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> avec un support à long terme. + Node.js peut également être installé via <Link href="/download/package-manager">gestionnaires de paquets</Link>. + </small> + </> + )} + </WithNodeRelease> -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Télécharger Node.js (LTS)</DownloadButton> + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Télécharger Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> avec un support à long terme. - Node.js peut également être installé via <Link href="/download/package-manager">gestionnaires de paquets</Link>. + Vous voulez de nouvelles fonctionnalités plus tôt ? + Obtenez <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> à la place. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Vous voulez de nouvelles fonctionnalités plus tôt ? - Obtenez <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> à la place. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn). - + <div> + ```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` + ``` + + </div> + Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn). </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Jalankan JavaScript Di Mana Saja</h1> - -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. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Unduh Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Jalankan JavaScript Di Mana Saja</h1> + + 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. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Unduh Node.js (LTS)</DownloadButton> + <small> + Unduhan Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> dengan dukungan jangka panjang (LTS). + Node.js juga dapat diinstal melalui <Link href="/download/package-manager">manajer paket</Link>. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Unduhan Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> dengan dukungan jangka panjang (LTS). - Node.js juga dapat diinstal melalui <Link href="/download/package-manager">manajer paket</Link>. + Ingin fitur baru lebih cepat? + Dapatkan <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> sebagai gantinya. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Ingin fitur baru lebih cepat? - Dapatkan <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> sebagai gantinya. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami. - + <div> + ```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` + ``` + + </div> + Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami. </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Run JavaScript Everywhere</h1> - -Node.js®は自由かつオープンソースでクロスプラットフォームに対応したJavaScript実行環境です。開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトの開発環境を提供します。 - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js (LTS)をダウンロードする</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Run JavaScript Everywhere</h1> + + Node.js®は自由かつオープンソースでクロスプラットフォームに対応したJavaScript実行環境です。 + 開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトの開発環境を提供します。 + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Node.js (LTS)をダウンロードする</DownloadButton> + <small> + 長期サポート版Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>をダウンロードする。 + <Link href="/download/package-manager">パッケージマネージャー</Link>を利用したインストール方法もあります。 + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - 長期サポート版Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>をダウンロードする。 - <Link href="/download/package-manager">パッケージマネージャー</Link>を利用したインストール方法もあります。 + 最新の機能をすぐに試したい場合は + <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>をインストールできます。 </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 最新の機能をすぐに試したい場合は - <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>をインストールできます。 - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -私たちの[学習教材](/learn)でNode.jsでできることをさらに学んでみましょう。 - + <div> + ```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` + ``` + + </div> + 私たちの[学習教材](/learn)でNode.jsでできることをさらに学んでみましょう。 </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">어디서든 JavaScript를 실행하세요!!</h1> - -Node.js®는 무료, 오픈소스, 크로스플랫폼 JavaSript 런타임 환경으로 개발자 여러분이 서버, 웹 앱, 커맨드 작성 도구와 스크립트를 만들도록 해줍니다. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js 다운로드 (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">어디서든 JavaScript를 실행하세요!!</h1> + + Node.js®는 무료, 오픈소스, 크로스플랫폼 JavaSript 런타임 환경으로 개발자 여러분이 서버, + 웹 앱, 커맨드 작성 도구와 스크립트를 만들도록 해줍니다. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Node.js 다운로드 (LTS)</DownloadButton> + <small> + Node.js 다운로드 <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> LTS. + Node.js는 <Link href="/download/package-manager">package managers</Link>를 통해서도 다운로드 할 수 있습니다.. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['현재버전']}> + {({ release }) => ( <small> - Node.js 다운로드 <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> LTS. - Node.js는 <Link href="/download/package-manager">package managers</Link>를 통해서도 다운로드 할 수 있습니다.. + 새로운 기능을 먼저 경험하고 싶다면 + <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> 를 다운 받으세요. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['현재버전']}> - {({ release }) => ( - <small> - 새로운 기능을 먼저 경험하고 싶다면 - <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 를 다운 받으세요. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn). - + <div> + ```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` + ``` + + </div> + Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn). </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Executar a JavaScript em Toda Parte</h1> - -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. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Descarregar a Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Executar a JavaScript em Toda Parte</h1> + + 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. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Descarregar a Node.js (LTS)</DownloadButton> + <small> + Descarregar a Node.js <b>{release.versionWithPrefix}</b> + <sup title="Descarregar um instalador da Node.js para a nossa plataforma atual">1</sup> com o suporte de longo prazo. + A Node.js também pode ser instalada através dos <Link href="/download/package-manager">gestores de pacotes</Link>. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Descarregar a Node.js <b>{release.versionWithPrefix}</b> - <sup title="Descarregar um instalador da Node.js para a nossa plataforma atual">1</sup> com o suporte de longo prazo. - A Node.js também pode ser instalada através dos <Link href="/download/package-manager">gestores de pacotes</Link>. + Se estivermos ansiosos quanto as novas funcionalidades, + podemos obter a <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Descarregar um instalador da Node.js para a nossa plataforma atual">1</sup>. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Se estivermos ansiosos quanto as novas funcionalidades, - podemos obter a <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Descarregar um instalador da Node.js para a nossa plataforma atual">1</sup>. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -Podemos saber mais do que a Node.js é capaz de oferecer com os nossos [materiais de aprendizado](/learn). - + <div> + ```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` + ``` + + </div> + Podemos saber mais do que a Node.js é capaz de oferecer com os nossos [materiais de aprendizado](/learn). </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Her Yerde JavaScript Çalıştırın</h1> - -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. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js'i İndir (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Her Yerde JavaScript Çalıştırın</h1> + + 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. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Node.js'i İndir (LTS)</DownloadButton> + <small> + Node.js'i indir <b>{release.versionWithPrefix}</b> + <sup title="Mevcut platformunuz için bir Node.js yükleyicisi indirir">1</sup> uzun vadeli destek ile indirin. + Node.js ayrıca <Link href="/download/package-manager">paket yöneticileri</Link> aracılığıyla da kurulabilir. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Node.js'i indir <b>{release.versionWithPrefix}</b> - <sup title="Mevcut platformunuz için bir Node.js yükleyicisi indirir">1</sup> uzun vadeli destek ile indirin. - Node.js ayrıca <Link href="/download/package-manager">paket yöneticileri</Link> aracılığıyla da kurulabilir. + Yeni özellikleri daha erken mi istiyorsunuz?{" "} + <b> + Node.js{" "} + <DownloadLink release={release}> + {release.versionWithPrefix} + </DownloadLink> + </b>{" "} + <sup title="Geçerli platformunuz için bir Node.js yükleyicisi indirir">1</sup>{" "} + alabilirsiniz. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Yeni özellikleri daha erken mi istiyorsunuz?{" "} - <b> - Node.js{" "} - <DownloadLink release={release}> - {release.versionWithPrefix} - </DownloadLink> - </b>{" "} - <sup title="Geçerli platformunuz için bir Node.js yükleyicisi indirir">1</sup>{" "} - alabilirsiniz. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -Node.js'in sunabileceklerini daha yakından keşfetmek için [Öğrenme materyallerimize](/learn) göz atın. - + <div> + ```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` + ``` + + </div> + Node.js'in sunabileceklerini daha yakından keşfetmek için [Öğrenme materyallerimize](/learn) göz atın. </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Запускайте JavaScript будь-де</h1> - -Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Завантажити Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Запускайте JavaScript будь-де</h1> + + Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, + яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та + скрипти. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Завантажити Node.js (LTS)</DownloadButton> + <small> + Завантажує Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> із довгостроковою підтримкою. + Node.js також можна встановити через <Link href="/download/package-manager">менеджери пакетів</Link>. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Завантажує Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> із довгостроковою підтримкою. - Node.js також можна встановити через <Link href="/download/package-manager">менеджери пакетів</Link>. + Хочете отримати нові функції швидше? + Завантажте <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Хочете отримати нові функції швидше? - Завантажте <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -Дізнайтеся більше про можливості Node.js із [нашими навчальними матеріалами](/learn). - + <div> + ```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` + ``` + + </div> + Дізнайтеся більше про можливості Node.js із [нашими навчальними матеріалами](/learn). </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">在任何地方运行 JavaScript</h1> - -Node.js® 是一个免费、开源、跨平台的 JavaScript 运行时环境,它让开发人员能够创建服务器、Web 应用、命令行工具和脚本。 - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>下载 Node.js(LTS)</DownloadButton> - <small> - 下载 Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 长期支持版本。 - Node.js 也可以通过 <Link href="/download/package-manager">软件包管理器</Link> 进行安装。 - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 想要更快获得新功能吗? - 获取 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 版本吧。 - </small> - )} - </WithNodeRelease> -</div> + <WithBadge section="index" /> + + <div> + <h1 className="special">在任何地方运行 JavaScript</h1> + + Node.js® 是一个免费、开源、跨平台的 JavaScript 运行时环境, 它让开发人员能够创建服务器 + Web 应用、命令行工具和脚本。 + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>下载 Node.js (LTS)</DownloadButton> + <small> + 下载 Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> 长期支持版本。 + Node.js 也可以通过 <Link href="/download/package-manager">软件包管理器</Link> 进行安装。 + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( + <small> + 想要更快获得新功能吗? + 获取 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> 版本吧。 + </small> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -通过我们的[学习资料](/learn)了解 Node.js 。 - + <div> + ```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` + ``` + + </div> + 通过我们的[学习资料](/learn)了解 Node.js 。 </section> 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 --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">隨時隨地執行 JavaScript</h1> - -Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發者建立伺服器、網頁應用程式、命令列工具與腳本。 - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>下載 Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">隨時隨地執行 JavaScript</h1> + + Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發者建立伺服器、網頁應用程式 + 命令列工具與腳本。 + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>下載 Node.js (LTS)</DownloadButton> + <small> + 下載享有長期支援功能的 Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>。 + Node.js 也可以透過 <Link href="/download/package-manager">套件管理器</Link> 安裝。 + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - 下載享有長期支援功能的 Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>。 - Node.js 也可以透過 <Link href="/download/package-manager">套件管理器</Link> 安裝。 + 想要更快體驗新功能嗎? + 那就下載 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> 吧。 </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 想要更快體驗新功能嗎? - 那就下載 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 吧。 - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> - -我們提供大量[學習資源](/learn),探索 Node.js 的無限潛能。 - + <div> + ```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` + ``` + + </div> + 我們提供大量[學習資源](/learn),探索 Node.js 的無限潛能。 </section> 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 aef62a1c88a74c38317b1d19b8f58d6685de6609 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 0150/1385] 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] <support@github.com> 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 0ab8aa8178798..344739db9546d 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": "*", "@nodevu/core": "0.3.0", diff --git a/package-lock.json b/package-lock.json index 05e2c1c7de090..8c8efaaa5fb1c 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/website-i18n": "*", "@nodevu/core": "0.3.0", @@ -1706,12 +1706,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 3e5a13360c03f1b1cfa359b8cb6157a6be2837fd 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 0151/1385] 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] <support@github.com> 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 8c8efaaa5fb1c..0d11538f3af4c 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" @@ -19767,11 +19767,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 02a65e6ad87294f6da7d86efb6999bf493af08cd 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 0152/1385] 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] <support@github.com> 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 0d11538f3af4c..863fc2cf01a8b 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" }, @@ -12638,10 +12638,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 68671a9566ff9fd3e10775c5c67e5bd36c5d76dd 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 0153/1385] 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] <support@github.com> 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 344739db9546d..be9d2d65c8254 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -57,7 +57,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 863fc2cf01a8b..4e7b8add4cd55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,7 +55,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", @@ -6806,10 +6806,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 f5e10acc65c8c259d08aebc08f6e2a5b0d8cc5b2 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 0154/1385] 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 203 ++++++++++++++++--------------------- package.json | 6 +- packages/i18n/package.json | 2 +- 4 files changed, 93 insertions(+), 120 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index be9d2d65c8254..31a9d93f30487 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -126,7 +126,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" } } diff --git a/package-lock.json b/package-lock.json index 4e7b8add4cd55..082d993717869 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" @@ -124,7 +124,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": { @@ -1512,11 +1512,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", @@ -1527,11 +1526,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" } @@ -1585,11 +1583,10 @@ "license": "MIT" }, "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" } @@ -1599,7 +1596,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" } @@ -6513,17 +6509,16 @@ "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.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", + "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", "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.15.0", + "@typescript-eslint/type-utils": "8.15.0", + "@typescript-eslint/utils": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -6547,16 +6542,15 @@ } }, "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.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", + "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", "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.15.0", + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/typescript-estree": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", "debug": "^4.3.4" }, "engines": { @@ -6576,14 +6570,13 @@ } }, "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.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", + "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0" + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6594,14 +6587,13 @@ } }, "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.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", + "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.14.0", - "@typescript-eslint/utils": "8.14.0", + "@typescript-eslint/typescript-estree": "8.15.0", + "@typescript-eslint/utils": "8.15.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -6612,6 +6604,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -6619,11 +6614,10 @@ } }, "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.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", + "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -6633,14 +6627,13 @@ } }, "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.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", + "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6666,7 +6659,6 @@ "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" } @@ -6676,7 +6668,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6688,16 +6679,15 @@ } }, "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==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", + "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", "dev": true, - "license": "MIT", "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/scope-manager": "8.15.0", + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/typescript-estree": "8.15.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6708,17 +6698,21 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "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==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", + "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", "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" @@ -6728,19 +6722,6 @@ "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==", - "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/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -10028,27 +10009,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", @@ -10067,8 +10047,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" @@ -10301,11 +10280,10 @@ } }, "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": { "@typescript-eslint/utils": "^8.1.0", "debug": "^4.3.4", @@ -23675,13 +23653,6 @@ "node": ">=8" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -24157,15 +24128,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.14.0.tgz", - "integrity": "sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", + "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.14.0", - "@typescript-eslint/parser": "8.14.0", - "@typescript-eslint/utils": "8.14.0" + "@typescript-eslint/eslint-plugin": "8.15.0", + "@typescript-eslint/parser": "8.15.0", + "@typescript-eslint/utils": "8.15.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -24174,6 +24144,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -25644,7 +25617,7 @@ "devDependencies": { "eslint-import-resolver-typescript": "~3.6.3", "typescript": "~5.6.3", - "typescript-eslint": "~8.14.0" + "typescript-eslint": "~8.15.0" }, "engines": { "node": ">=20" 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 a1972438a78d8436997d9f7069d108b34ae86011 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 0155/1385] 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 99 ++---------------------------------------- 2 files changed, 5 insertions(+), 96 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 31a9d93f30487..580e9e25abfba 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -52,7 +52,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 082d993717869..340d92062e468 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,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", @@ -4629,10 +4629,9 @@ } }, "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", + "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==", "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", @@ -4662,96 +4661,6 @@ } } }, - "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" - }, - "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-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==", - "license": "MIT", - "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-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==", - "license": "MIT", - "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-use-callback-ref": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", From d50d114e19d5c3952f197730c68978f7ec71a5c0 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 0156/1385] 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 10 +- package-lock.json | 794 +++++++++++++++++------------------------ 2 files changed, 334 insertions(+), 470 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 580e9e25abfba..55a00c7dec1cc 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -94,13 +94,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 340d92062e468..f5a277d3f197f 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.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", @@ -1051,7 +1051,6 @@ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "aix" @@ -1068,7 +1067,6 @@ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -1085,7 +1083,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -1102,7 +1099,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -1119,7 +1115,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -1136,7 +1131,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -1153,7 +1147,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1170,7 +1163,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1187,7 +1179,6 @@ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1204,7 +1195,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1221,7 +1211,6 @@ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1238,7 +1227,6 @@ "loong64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1255,7 +1243,6 @@ "mips64el" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1272,7 +1259,6 @@ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1289,7 +1275,6 @@ "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1306,7 +1291,6 @@ "s390x" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1323,7 +1307,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1340,7 +1323,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "netbsd" @@ -1357,7 +1339,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1374,7 +1355,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1391,7 +1371,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "sunos" @@ -1408,7 +1387,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -1425,7 +1403,6 @@ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -1442,7 +1419,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -4912,11 +4888,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", @@ -4927,19 +4902,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" }, @@ -4948,7 +4922,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": { @@ -4965,11 +5072,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" }, @@ -4978,15 +5084,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" }, @@ -4995,7 +5100,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { @@ -5013,13 +5118,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", @@ -5050,7 +5154,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" }, "peerDependenciesMeta": { "typescript": { @@ -5059,11 +5163,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" @@ -5073,11 +5176,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", @@ -5105,11 +5207,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" @@ -5119,7 +5220,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" } }, "node_modules/@storybook/csf": { @@ -5152,30 +5253,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" @@ -5199,14 +5281,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", @@ -5228,7 +5309,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": { @@ -5237,11 +5318,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" @@ -5251,18 +5331,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" @@ -5272,10 +5351,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": { @@ -5292,7 +5371,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", @@ -5312,7 +5390,6 @@ "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", @@ -5323,11 +5400,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" @@ -5335,19 +5411,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": { @@ -5360,7 +5435,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": { @@ -5369,137 +5444,11 @@ } } }, - "node_modules/@storybook/test": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.4.tgz", - "integrity": "sha512-tmJd+lxl3MC0Xdu1KW/69V8tibv98OvdopxGqfVR0x5dkRHM3sFK/tv1ZJAUeronlvRyhGySOu1tHUrMjcNqyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf": "^0.1.11", - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.4", - "@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.4" - } - }, - "node_modules/@storybook/test/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/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", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "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", - "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" @@ -6095,8 +6044,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", @@ -6168,8 +6116,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", @@ -6321,8 +6268,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", @@ -6356,8 +6302,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", @@ -7290,7 +7235,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" }, @@ -7308,7 +7252,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" }, @@ -7340,7 +7283,6 @@ "engines": [ "node >= 0.8.0" ], - "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -7603,7 +7545,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" }, @@ -7970,7 +7911,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" }, @@ -8006,8 +7946,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": "1.1.11", @@ -8167,7 +8106,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" @@ -8217,7 +8155,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" } @@ -8410,7 +8347,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" }, @@ -8423,7 +8359,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" } @@ -8730,8 +8665,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", @@ -8760,8 +8694,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", @@ -8967,7 +8900,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", @@ -8998,6 +8930,22 @@ } } }, + "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, + "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/css-tree": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz", @@ -9017,7 +8965,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" }, @@ -9281,7 +9228,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" } @@ -9451,11 +9397,33 @@ "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" } }, + "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, + "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, + "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", @@ -9466,8 +9434,7 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domexception": { "version": "4.0.0", @@ -9483,12 +9450,40 @@ "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, + "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, + "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", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -9536,7 +9531,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", @@ -9818,7 +9812,6 @@ "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -9857,7 +9850,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" }, @@ -11172,8 +11164,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", @@ -11297,7 +11288,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", @@ -11413,7 +11403,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", @@ -11442,7 +11431,6 @@ "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" }, @@ -11458,7 +11446,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" @@ -11475,7 +11462,6 @@ "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" }, @@ -11487,15 +11473,13 @@ "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" + "dev": true }, "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", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -11512,7 +11496,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", @@ -11527,7 +11510,6 @@ "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" } @@ -11537,7 +11519,6 @@ "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" }, @@ -11550,7 +11531,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } @@ -11630,8 +11610,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", @@ -12313,7 +12292,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" } @@ -12378,8 +12356,7 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ], - "license": "MIT" + ] }, "node_modules/html-escaper": { "version": "2.0.2", @@ -12393,7 +12370,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", @@ -12415,7 +12391,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12" } @@ -12448,7 +12423,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", @@ -12476,6 +12450,34 @@ } } }, + "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" + } + ], + "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, + "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", @@ -12555,7 +12557,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" }, @@ -13089,7 +13090,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" }, @@ -13472,7 +13472,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" }, @@ -15824,7 +15823,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" } @@ -16609,7 +16607,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" } @@ -16657,7 +16654,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" }, @@ -16673,7 +16669,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" } @@ -17162,7 +17157,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" }, @@ -18264,7 +18258,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" @@ -18274,8 +18267,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", @@ -18487,7 +18479,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" }, @@ -18633,8 +18624,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", @@ -18677,7 +18667,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", @@ -18912,7 +18901,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" @@ -19002,7 +18990,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" @@ -19012,8 +18999,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", @@ -19435,7 +19421,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" }, @@ -19448,7 +19433,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", @@ -19466,7 +19450,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" @@ -19480,7 +19463,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" }, @@ -19496,7 +19478,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" @@ -19510,7 +19491,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" }, @@ -19734,7 +19714,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" @@ -19890,11 +19869,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" }, @@ -19958,7 +19936,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" } @@ -19980,7 +19957,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", @@ -20002,7 +19978,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" } @@ -20168,7 +20143,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", @@ -20185,7 +20159,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" } @@ -20408,7 +20381,6 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -21568,7 +21540,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", @@ -21577,99 +21548,6 @@ "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==", - "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" - }, - "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_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -21865,7 +21743,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" }, @@ -22444,13 +22321,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", @@ -22738,7 +22614,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" }, @@ -22767,7 +22642,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" }, @@ -23594,8 +23468,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", @@ -23781,7 +23654,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", @@ -23796,7 +23668,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" } @@ -24474,7 +24345,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" @@ -24498,8 +24368,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", @@ -24588,8 +24457,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/uuid": { "version": "8.3.2", @@ -24987,7 +24855,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", @@ -25016,7 +24883,6 @@ "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", @@ -25036,7 +24902,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", @@ -25057,8 +24922,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", From c17fccbd2ffc708e27a1a5e8b93005b6844d9f6e Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sun, 24 Nov 2024 15:37:25 +0000 Subject: [PATCH 0157/1385] chore: simplified storybook/next config (#7280) Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> --- 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 fbd443d4b354ea1530cb0f2e262d2282086fc1d2 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Mon, 25 Nov 2024 14:47:00 +0000 Subject: [PATCH 0158/1385] meta: upgrade to node v22 (#7282) --- .nvmrc | 2 +- apps/site/package.json | 17 +- package-lock.json | 5131 ++++++++++++------------------------ package.json | 5 +- packages/i18n/package.json | 3 - 5 files changed, 1637 insertions(+), 3521 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 55a00c7dec1cc..26f1e56022ad7 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", @@ -55,7 +41,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 f5a277d3f197f..de03f18214804 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", @@ -53,7 +53,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", @@ -126,50 +125,6 @@ "typescript": "~5.6.3", "typescript-eslint": "~8.15.0", "user-agent-data-types": "0.4.2" - }, - "engines": { - "node": "v20" - } - }, - "apps/site/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" - } - }, - "apps/site/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" - } - }, - "apps/site/node_modules/@types/node": { - "version": "20.16.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", - "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", - "license": "MIT", - "dependencies": { - "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": { @@ -209,61 +164,6 @@ "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", @@ -1051,6 +951,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -1067,6 +968,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1083,6 +985,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1099,6 +1002,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1115,6 +1019,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1131,6 +1036,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1147,6 +1053,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1163,6 +1070,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1179,6 +1087,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1195,6 +1104,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1211,6 +1121,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1227,6 +1138,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1243,6 +1155,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1259,6 +1172,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1275,6 +1189,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1291,6 +1206,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1307,6 +1223,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1323,6 +1240,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -1339,6 +1257,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1355,6 +1274,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1371,6 +1291,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -1387,6 +1308,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1403,6 +1325,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1419,6 +1342,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1492,6 +1416,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", @@ -1501,11 +1426,36 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/core": { "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" } @@ -1551,6 +1501,17 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "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/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1558,11 +1519,25 @@ "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.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" } @@ -1572,6 +1547,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" } @@ -1628,13 +1604,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" } }, @@ -1648,30 +1624,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" @@ -1681,6 +1657,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" } @@ -2153,12 +2130,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", @@ -2333,82 +2304,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", - "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/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", @@ -2458,72 +2353,22 @@ } }, "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==", + "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", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "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", - "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/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_modules/@jest/core/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2535,19 +2380,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", @@ -2555,19 +2387,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -2689,82 +2508,6 @@ } } }, - "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==", - "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/reporters/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/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -2852,82 +2595,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", - "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/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", @@ -2946,112 +2613,36 @@ "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, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/@jest/types/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, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "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": ">=6.0.0" } }, - "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, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "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", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" + "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { @@ -3133,36 +2724,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", @@ -3292,9 +2853,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" @@ -3499,16 +3060,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", @@ -3530,6 +3081,29 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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" + }, "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -3546,6 +3120,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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": { + "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/@npmcli/name-from-folder": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", @@ -3575,16 +3166,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", @@ -3606,6 +3187,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", @@ -3616,6 +3213,13 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "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" + }, "node_modules/@npmcli/package-json/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -3632,6 +3236,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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": { + "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/@npmcli/promise-spawn": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", @@ -3681,9 +3302,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": { @@ -3694,9 +3315,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": { @@ -3710,13 +3331,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", @@ -3731,13 +3352,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": { @@ -3748,15 +3369,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" @@ -3766,14 +3387,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" @@ -3783,14 +3404,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": { @@ -3810,6 +3431,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", @@ -3819,6 +3449,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", @@ -4518,30 +4162,24 @@ } } }, - "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==", + "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-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-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.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": "*", @@ -4558,93 +4196,14 @@ } } }, - "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" - }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", "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.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.4.tgz", - "integrity": "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==", - "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-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4892,6 +4451,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", @@ -4910,6 +4470,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", @@ -4925,139 +4486,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", @@ -5076,6 +4504,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" }, @@ -5092,6 +4521,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" }, @@ -5122,6 +4552,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", @@ -5167,6 +4598,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" @@ -5180,6 +4612,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", @@ -5211,6 +4644,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" @@ -5233,19 +4667,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", @@ -5253,11 +4674,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" @@ -5267,9 +4707,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": { @@ -5285,6 +4725,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", @@ -5322,6 +4763,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" @@ -5335,6 +4777,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", @@ -5371,6 +4814,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", @@ -5385,25 +4829,12 @@ "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, - "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.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" @@ -5419,6 +4850,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", @@ -5444,12 +4876,79 @@ } } }, - "node_modules/@storybook/theming": { + "node_modules/@storybook/test": { "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.5.tgz", - "integrity": "sha512-45e/jeG4iuqdZcHg3PbB6dwXQTwlnnEB7r/QcVExyC7ibrkTnjUfvxzyUw4mmU3CXETFGD5EcUobFkgK+/aPxQ==", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.5.tgz", + "integrity": "sha512-mHsRc6m60nfcEBsjvUkKz+Jnz0or4WH5jmJ1VL2pGKO4VzESCPqAwDnwDqP2YyeSQ0b/MAKUT5kdoLE2RE2eVw==", "dev": true, - "funding": { + "license": "MIT", + "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/test/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/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/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/theming": { + "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" }, @@ -5458,15 +4957,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" @@ -5476,16 +4975,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": "*" @@ -5497,9 +4996,9 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.3.tgz", + "integrity": "sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==", "cpu": [ "arm64" ], @@ -5514,9 +5013,9 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.3.tgz", + "integrity": "sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==", "cpu": [ "x64" ], @@ -5531,9 +5030,9 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.3.tgz", + "integrity": "sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==", "cpu": [ "arm" ], @@ -5548,9 +5047,9 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.3.tgz", + "integrity": "sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==", "cpu": [ "arm64" ], @@ -5565,9 +5064,9 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.3.tgz", + "integrity": "sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==", "cpu": [ "arm64" ], @@ -5582,9 +5081,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" ], @@ -5599,9 +5098,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" ], @@ -5616,9 +5115,9 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.3.tgz", + "integrity": "sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==", "cpu": [ "arm64" ], @@ -5633,9 +5132,9 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.3.tgz", + "integrity": "sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==", "cpu": [ "ia32" ], @@ -5650,9 +5149,9 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.3.tgz", + "integrity": "sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==", "cpu": [ "x64" ], @@ -5682,9 +5181,9 @@ } }, "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": { @@ -5720,82 +5219,6 @@ "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/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/@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", @@ -5817,22 +5240,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", @@ -5847,26 +5254,6 @@ "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", @@ -5874,29 +5261,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", @@ -6044,7 +5408,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", @@ -6116,7 +5481,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", @@ -6246,9 +5612,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" @@ -6268,7 +5634,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", @@ -6302,7 +5669,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", @@ -6367,6 +5735,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.15.0", @@ -6400,6 +5769,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "8.15.0", "@typescript-eslint/types": "8.15.0", @@ -6428,6 +5798,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.15.0", "@typescript-eslint/visitor-keys": "8.15.0" @@ -6445,6 +5816,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "8.15.0", "@typescript-eslint/utils": "8.15.0", @@ -6472,6 +5844,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -6485,6 +5858,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "8.15.0", "@typescript-eslint/visitor-keys": "8.15.0", @@ -6508,13 +5882,34 @@ } } }, - "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/typescript-estree/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": { - "balanced-match": "^1.0.0" + "@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/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/node_modules/minimatch": { @@ -6522,6 +5917,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6537,6 +5933,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.15.0", @@ -6564,6 +5961,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.15.0", "eslint-visitor-keys": "^4.2.0" @@ -6644,6 +6042,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", @@ -7235,6 +6634,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" }, @@ -7252,6 +6652,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" }, @@ -7275,14 +6676,28 @@ "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", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "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", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -7297,16 +6712,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": { @@ -7545,6 +6962,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" }, @@ -7689,82 +7107,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", - "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/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", @@ -7911,6 +7253,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" }, @@ -7946,17 +7289,16 @@ "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": "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/braces": { @@ -8106,6 +7448,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" @@ -8131,9 +7474,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", @@ -8155,6 +7498,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" } @@ -8187,18 +7531,20 @@ } }, "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": "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": "^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": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/char-regex": { @@ -8347,6 +7693,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" }, @@ -8359,6 +7706,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" } @@ -8539,20 +7887,21 @@ } }, "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, + "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.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "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, + "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": { @@ -8566,26 +7915,6 @@ "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/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", - "optional": true - }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", @@ -8622,12 +7951,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": { @@ -8665,7 +7995,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", @@ -8694,7 +8025,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", @@ -8777,129 +8109,54 @@ "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, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "cross-spawn": "^7.0.1" }, - "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", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=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, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">= 8" } }, - "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==", + "node_modules/css-functions-list": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12 || >=16" } }, - "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==", + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "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", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-functions-list": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", - "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12 || >=16" - } - }, - "node_modules/css-loader": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", - "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", - "dev": true, "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -8935,6 +8192,7 @@ "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", @@ -8965,6 +8223,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" }, @@ -9045,6 +8304,84 @@ "@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/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/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", + "engines": { + "node": ">=0.8.0" + } + }, + "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", + "engines": { + "node": ">=4" + } + }, + "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": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -9228,6 +8565,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" } @@ -9373,16 +8711,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": { @@ -9397,6 +8735,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" } @@ -9406,6 +8745,7 @@ "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", @@ -9420,6 +8760,7 @@ "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" } @@ -9434,7 +8775,8 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "4.0.0", @@ -9455,6 +8797,7 @@ "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" }, @@ -9470,6 +8813,7 @@ "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", @@ -9484,6 +8828,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" @@ -9496,9 +8841,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.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.64.tgz", + "integrity": "sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==", "license": "ISC" }, "node_modules/emittery": { @@ -9515,9 +8860,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": { @@ -9531,6 +8876,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", @@ -9812,6 +9158,7 @@ "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -9850,6 +9197,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" }, @@ -9867,13 +9215,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": { @@ -9914,6 +9265,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", @@ -10054,6 +9406,36 @@ } } }, + "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": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.1.5.tgz", @@ -10185,6 +9567,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", @@ -10204,14 +9587,17 @@ "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": { @@ -10230,6 +9616,17 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -10240,19 +9637,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", @@ -10266,6 +9650,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", @@ -10339,24 +9736,41 @@ "node": ">= 0.4" } }, - "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", - "integrity": "sha512-lUE7tP7IrIRHU3gTtASDe5u4YM2SvQveYVJfuo82yn3MLh/B/v05FNySURCK4aIxIYF1QYo3IRemQG/lyQzpAg==", + "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": { - "eslint-mdx": "^3.1.5", - "eslint-plugin-markdown": "^3.0.1", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", + "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": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-mdx": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz", + "integrity": "sha512-lUE7tP7IrIRHU3gTtASDe5u4YM2SvQveYVJfuo82yn3MLh/B/v05FNySURCK4aIxIYF1QYo3IRemQG/lyQzpAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-mdx": "^3.1.5", + "eslint-plugin-markdown": "^3.0.1", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "tslib": "^2.6.2", "unified": "^11.0.4", @@ -10623,17 +10037,28 @@ "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/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": "Apache-2.0", + "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": { @@ -10665,9 +10090,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": { @@ -10729,80 +10154,15 @@ "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==", - "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/eslint/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/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/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-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -10812,17 +10172,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": { @@ -11031,28 +10391,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", @@ -11133,9 +10501,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", @@ -11152,6 +10521,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" @@ -11164,7 +10534,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", @@ -11258,6 +10629,16 @@ "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", @@ -11271,6 +10652,20 @@ "node": ">=16.0.0" } }, + "node_modules/file-entry-cache/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": ">=16" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -11288,6 +10683,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", @@ -11352,23 +10748,24 @@ } }, "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": { - "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" }, @@ -11403,6 +10800,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", @@ -11426,104 +10824,60 @@ "webpack": "^5.11.0" } }, - "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/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": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { "node": ">=10" - }, - "funding": { - "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==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "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": { - "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 - }, - "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", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/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": { - "has-flag": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { @@ -11531,6 +10885,7 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 6" } @@ -11610,7 +10965,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", @@ -11743,12 +11099,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" @@ -11832,6 +11189,30 @@ "devOptional": true, "license": "BSD-2-Clause" }, + "node_modules/glob/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/glob/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/global-directory": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", @@ -12066,13 +11447,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": { @@ -12292,6 +11673,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" } @@ -12356,7 +11738,8 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", @@ -12370,6 +11753,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", @@ -12386,15 +11770,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, - "engines": { - "node": ">= 12" - } - }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -12423,6 +11798,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", @@ -12462,6 +11838,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -12474,6 +11851,7 @@ "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" } @@ -12508,12 +11886,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": { @@ -12529,6 +11908,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" }, @@ -12557,6 +11937,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" }, @@ -12747,82 +12128,6 @@ "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" - } - }, - "node_modules/inquirer/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/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -12839,14 +12144,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" } }, @@ -13090,6 +12395,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" }, @@ -13126,13 +12432,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" @@ -13335,12 +12644,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" @@ -13472,6 +12782,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" }, @@ -13534,16 +12845,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", @@ -13560,19 +12861,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", @@ -13630,18 +12918,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": { @@ -13686,126 +12974,10 @@ "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", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", "dependencies": { @@ -13835,58 +13007,18 @@ } }, "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==", + "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", - "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" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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", @@ -13902,16 +13034,6 @@ } } }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -13927,19 +13049,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", @@ -13947,19 +13056,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", @@ -13994,82 +13090,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", - "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-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", @@ -14117,66 +13137,16 @@ } }, "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==", - "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-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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", - "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-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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-config/node_modules/pretty-format": { @@ -14194,19 +13164,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", @@ -14214,19 +13171,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", @@ -14244,66 +13188,16 @@ } }, "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", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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", - "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-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" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-diff/node_modules/pretty-format": { @@ -14321,19 +13215,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", @@ -14341,19 +13222,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", @@ -14385,66 +13253,16 @@ } }, "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", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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", - "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-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/ansi-styles?sponsor=1" } }, "node_modules/jest-each/node_modules/pretty-format": { @@ -14462,19 +13280,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", @@ -14482,19 +13287,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", @@ -14659,96 +13451,33 @@ } }, "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==", + "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", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "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", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "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-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", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "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", @@ -14756,19 +13485,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", @@ -14791,66 +13507,16 @@ } }, "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", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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", - "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-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" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-message-util/node_modules/pretty-format": { @@ -14868,19 +13534,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", @@ -14888,19 +13541,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", @@ -14979,82 +13619,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", - "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-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", @@ -15088,196 +13652,44 @@ "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==", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "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==", - "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-runtime/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-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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "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_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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", "dependencies": { @@ -15304,308 +13716,22 @@ }, "engines": { "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", - "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-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", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "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", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "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", - "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-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==", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "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", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/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-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==", + "node_modules/jest-snapshot/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": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-validate/node_modules/pretty-format": { + "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", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", @@ -15620,133 +13746,115 @@ "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": { + "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", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "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==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher": { + "node_modules/jest-validate": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { "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==", + "node_modules/jest-validate/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", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "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", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "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" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "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", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.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==", + "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", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "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==", + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-worker": { @@ -15765,16 +13873,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", @@ -15823,6 +13921,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" } @@ -16074,22 +14173,153 @@ "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": ">=18.12.0" + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "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://opencollective.com/lint-staged" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "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.17.0 || ^14.13 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/listr2": { @@ -16297,82 +14527,6 @@ "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" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -16607,6 +14761,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" } @@ -16641,9 +14796,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" @@ -16654,6 +14809,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" }, @@ -16669,6 +14825,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" } @@ -17157,6 +15314,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" }, @@ -17892,9 +16050,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", @@ -17980,15 +16138,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": { @@ -18014,16 +16170,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": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -18258,6 +16416,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" @@ -18267,7 +16426,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", @@ -18448,30 +16608,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": { @@ -18479,6 +16625,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" }, @@ -18624,7 +16771,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", @@ -18637,15 +16785,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" @@ -18667,6 +16816,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", @@ -18680,9 +16830,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", @@ -18706,9 +16856,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" @@ -18737,105 +16887,29 @@ "engines": { "node": ">= 0.8.0" } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "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", - "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/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": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/os-tmpdir": { @@ -18901,6 +16975,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" @@ -18990,6 +17065,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" @@ -18999,7 +17075,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", @@ -19037,26 +17114,29 @@ "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" + "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", @@ -19270,6 +17350,30 @@ "postcss": "^8.4.21" } }, + "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", @@ -19421,6 +17525,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" }, @@ -19433,6 +17538,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", @@ -19450,6 +17556,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" @@ -19463,6 +17570,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" }, @@ -19478,6 +17586,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" @@ -19491,6 +17600,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" }, @@ -19636,6 +17746,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" }, @@ -19714,6 +17825,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" @@ -19832,9 +17944,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": { @@ -19873,6 +17985,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" }, @@ -19936,6 +18049,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" } @@ -19957,6 +18071,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", @@ -19978,10 +18093,24 @@ "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" } }, + "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", @@ -20143,6 +18272,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", @@ -20159,6 +18289,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" } @@ -20255,19 +18386,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" @@ -20381,6 +18512,7 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -21540,6 +19672,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", @@ -21678,32 +19811,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/restore-cursor/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -21743,6 +19850,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" }, @@ -22325,6 +20433,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" }, @@ -22416,6 +20525,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", @@ -22425,6 +20540,12 @@ "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", @@ -22598,15 +20719,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": { @@ -22614,6 +20733,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" }, @@ -22642,6 +20762,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" }, @@ -22836,6 +20957,23 @@ "dev": true, "license": "MIT" }, + "node_modules/stylelint/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/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", @@ -22863,6 +21001,19 @@ "node": ">=18" } }, + "node_modules/stylelint/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/stylelint/node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -22957,15 +21108,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", @@ -22995,6 +21137,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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": { + "@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/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -23010,6 +21173,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sugarss": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", @@ -23027,56 +21206,33 @@ } }, "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": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "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", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" + "has-flag": "^4.0.0" }, - "funding": { - "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==", + "node_modules/supports-hyperlinks": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -23161,42 +21317,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", @@ -23262,6 +21382,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", @@ -23352,16 +21500,6 @@ } } }, - "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==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -23436,6 +21574,30 @@ "node": ">=8" } }, + "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/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/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -23468,7 +21630,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", @@ -23621,9 +21784,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": { @@ -23654,6 +21817,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", @@ -23668,6 +21832,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" } @@ -23797,13 +21962,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" @@ -23845,9 +22010,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": { @@ -23856,7 +22021,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" @@ -23866,18 +22032,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" @@ -23912,6 +22078,7 @@ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "8.15.0", "@typescript-eslint/parser": "8.15.0", @@ -24022,16 +22189,6 @@ "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" - } - }, "node_modules/unified-engine/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -24076,6 +22233,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", @@ -24096,6 +22269,13 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "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" + }, "node_modules/unified-engine/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -24132,6 +22312,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", @@ -24345,6 +22542,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" @@ -24368,7 +22566,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", @@ -24457,7 +22656,8 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/uuid": { "version": "8.3.2", @@ -24855,6 +23055,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", @@ -24883,6 +23084,7 @@ "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", @@ -24902,6 +23104,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", @@ -24922,7 +23125,8 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", @@ -25031,17 +23235,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", @@ -25149,75 +23354,6 @@ "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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.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==", - "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/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", @@ -25391,9 +23527,6 @@ "eslint-import-resolver-typescript": "~3.6.3", "typescript": "~5.6.3", "typescript-eslint": "~8.15.0" - }, - "engines": { - "node": ">=20" } } } 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 9202c36ccef5035bc75be1a3fce8cb0cb716a5c7 Mon Sep 17 00:00:00 2001 From: Aviv Keller <redyetidev@gmail.com> Date: Wed, 27 Nov 2024 07:37:23 -0500 Subject: [PATCH 0159/1385] meta: skip lighthouse CI when no vercel preview detected (#7266) Update lighthouse.yml Signed-off-by: Aviv Keller <redyetidev@gmail.com> --- .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 c747084c8e6d09f599f541c4aaeeabac76d9355e Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Thu, 28 Nov 2024 23:51:47 +0100 Subject: [PATCH 0160/1385] fix: markdown link fix Closes https://github.com/nodejs/nodejs.org/issues/7289 Signed-off-by: Claudio W <cwunder@gnome.org> --- .../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 b2046cf89c4ff0f396534b9a4b5c0380c3e4fd00 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 0161/1385] 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 () => { <thead> <tr> <th>Node.js Version</th> + <th>Module Version</th> <th>Codename</th> <th>Release Date</th> <th colSpan={2}>npm</th> @@ -27,6 +28,7 @@ const DownloadReleasesTable: FC = async () => { {releaseData.map(release => ( <tr key={release.major}> <td data-label="Version">v{release.version}</td> + <td data-label="Modules">v{release.modules}</td> <td data-label="LTS">{release.codename || '-'}</td> <td data-label="Date"> <time>{release.releaseDate}</time> From 116848f65dca8c43cec39307cde885f4a3450e55 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Fri, 29 Nov 2024 14:01:35 +0000 Subject: [PATCH 0162/1385] 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 65c98af78157747f185c0a1a40e2593f5808b37c Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Fri, 29 Nov 2024 17:59:05 +0100 Subject: [PATCH 0163/1385] 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<AvatarGroupProps> = ({ ); return ( - <div className={styles.avatarGroup}> + <div className={classNames(styles.avatarGroup, styles[size])}> {renderAvatars.map(({ ...avatar }) => ( <Fragment key={avatar.nickname}> <Tooltip From b12daaaaffc3d154e93f47dd173860a8e31aa86d Mon Sep 17 00:00:00 2001 From: Claudio Wunder <cwunder@gnome.org> Date: Sat, 30 Nov 2024 00:01:57 +0100 Subject: [PATCH 0164/1385] 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 16629a41b4b7efe0973a533aca22bff9a813b8d4 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 0165/1385] 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 4 +- package-lock.json | 220 ++++++++++++++++++++----------------- package.json | 4 +- packages/i18n/package.json | 2 +- 4 files changed, 122 insertions(+), 108 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 26f1e56022ad7..55a89c4768972 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -106,12 +106,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" } } diff --git a/package-lock.json b/package-lock.json index de03f18214804..182b38a52c4b1 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", @@ -118,12 +118,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" } }, @@ -876,9 +876,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": [ { @@ -895,31 +895,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": { @@ -1533,9 +1510,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": { @@ -5731,17 +5708,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", - "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", + "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/type-utils": "8.15.0", - "@typescript-eslint/utils": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/type-utils": "8.16.0", + "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -5765,16 +5742,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", - "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", + "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/typescript-estree": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "debug": "^4.3.4" }, "engines": { @@ -5794,14 +5771,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", - "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", + "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0" + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5812,14 +5789,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", - "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", + "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.15.0", - "@typescript-eslint/utils": "8.15.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/utils": "8.16.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -5840,9 +5817,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", - "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", + "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", "dev": true, "license": "MIT", "engines": { @@ -5854,14 +5831,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", - "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", + "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5929,16 +5906,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", - "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", + "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/typescript-estree": "8.15.0" + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5957,13 +5934,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", - "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", + "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/types": "8.16.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -9261,9 +9238,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": { @@ -9272,7 +9249,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", @@ -14084,9 +14061,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" }, @@ -20807,9 +20784,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": [ { @@ -20823,16 +20800,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", @@ -20844,16 +20821,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", @@ -20950,6 +20927,29 @@ "stylelint": "^16.2.1" } }, + "node_modules/stylelint/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "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": "^7.0.0" + } + }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -21059,6 +21059,20 @@ "dev": true, "license": "ISC" }, + "node_modules/stylelint/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "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" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/stylelint/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -22074,15 +22088,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", - "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", + "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.15.0", - "@typescript-eslint/parser": "8.15.0", - "@typescript-eslint/utils": "8.15.0" + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "@typescript-eslint/utils": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -23526,7 +23540,7 @@ "devDependencies": { "eslint-import-resolver-typescript": "~3.6.3", "typescript": "~5.6.3", - "typescript-eslint": "~8.15.0" + "typescript-eslint": "~8.16.0" } } } 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 3cd3009b430918c49b0d61d7e8d0ee84fa789925 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 0166/1385] 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] <support@github.com> 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 182b38a52c4b1..bd20a17e49c4e 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": { @@ -17703,9 +17703,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 71701a76f6202645bd0b47032b15e134c93496d4 Mon Sep 17 00:00:00 2001 From: Ruy Adorno <ruyadorno@google.com> Date: Tue, 3 Dec 2024 17:25:32 -0500 Subject: [PATCH 0167/1385] 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 15ef66d51ee6c47a01755a1bbe8a2d8f12548ae6 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 0168/1385] 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] <support@github.com> 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 55a89c4768972..99dd507f2e836 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -54,7 +54,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 bd20a17e49c4e..133436211a407 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,7 +66,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", @@ -16330,9 +16330,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", @@ -16343,7 +16343,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", @@ -22605,9 +22605,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 d1c5b4c2a7434cf54f9a33978163baa76b73c5a7 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 0169/1385] 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] <support@github.com> 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 d8d6c0ab1d9a0f2854da9a4ddb68a2df75634aa8 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 0170/1385] 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] <support@github.com> * 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- apps/site/package.json | 12 +- package-lock.json | 324 ++++++++++++++++++++--------------------- 2 files changed, 168 insertions(+), 168 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 99dd507f2e836..21071138b5185 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", @@ -79,13 +79,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 133436211a407..53eeee75a0fa9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -91,13 +91,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", @@ -4424,9 +4424,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": { @@ -4439,19 +4439,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" }, @@ -4460,9 +4460,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", @@ -4477,9 +4561,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": { @@ -4490,13 +4574,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": { @@ -4507,7 +4591,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.5" + "storybook": "^8.4.6" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { @@ -4525,13 +4609,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", @@ -4562,7 +4646,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.5" + "storybook": "^8.4.6" }, "peerDependenciesMeta": { "typescript": { @@ -4571,9 +4655,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": { @@ -4585,9 +4669,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": { @@ -4617,9 +4701,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": { @@ -4631,7 +4715,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.5" + "storybook": "^8.4.6" } }, "node_modules/@storybook/csf": { @@ -4651,28 +4735,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": { @@ -4698,14 +4764,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", @@ -4727,7 +4793,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": { @@ -4736,9 +4802,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": { @@ -4750,18 +4816,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" @@ -4771,10 +4837,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": { @@ -4807,9 +4873,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": { @@ -4819,19 +4885,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": { @@ -4844,7 +4910,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": { @@ -4853,76 +4919,10 @@ } } }, - "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, - "license": "MIT", - "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/test/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/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/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/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": { @@ -20406,13 +20406,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 62ce0013561fe2c54ff4761f8f5f4bc2eb819abf Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Wed, 4 Dec 2024 07:12:43 -0600 Subject: [PATCH 0171/1385] 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 7a62f6012a875ec52ffd6fd06b5fec13010f516d 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 0172/1385] 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 56 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 53eeee75a0fa9..a9d72f6882867 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", @@ -21858,26 +21858,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-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==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.3.3.tgz", + "integrity": "sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==", "cpu": [ "x64" ], @@ -21888,9 +21888,9 @@ ] }, "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==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.3.3.tgz", + "integrity": "sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==", "cpu": [ "arm64" ], @@ -21901,9 +21901,9 @@ ] }, "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" ], @@ -21914,9 +21914,9 @@ ] }, "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==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.3.3.tgz", + "integrity": "sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==", "cpu": [ "arm64" ], @@ -21927,9 +21927,9 @@ ] }, "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==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.3.3.tgz", + "integrity": "sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==", "cpu": [ "x64" ], @@ -21940,9 +21940,9 @@ ] }, "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==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.3.3.tgz", + "integrity": "sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==", "cpu": [ "arm64" ], 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 8ad9d39cebd87321d228267712e2e9c7cd78c8c6 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 0173/1385] 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] <support@github.com> 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 21071138b5185..c23d037e19e4f 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -69,7 +69,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 a9d72f6882867..3a997137d8973 100644 --- a/package-lock.json +++ b/package-lock.json @@ -81,7 +81,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", @@ -4346,44 +4346,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", @@ -16778,14 +16778,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": { @@ -18401,9 +18401,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" @@ -20171,15 +20171,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 32546f883c07fc817e5f428c55ed53039953ab4a 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 0174/1385] 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] <support@github.com> 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 3a997137d8973..3049d8283f23a 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", @@ -5589,12 +5589,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": { @@ -22145,9 +22145,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 7c1e4db7ed04d9c8afdc51c10d5f9091e8d8f78c Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Thu, 5 Dec 2024 12:24:38 +0100 Subject: [PATCH 0175/1385] 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 f571d25a751e792b6311460320e692178422098b 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 0176/1385] 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 10 +++++----- packages/i18n/package.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index c23d037e19e4f..7e79f159798fb 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -110,7 +110,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 3049d8283f23a..3af86558e398e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -122,7 +122,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" } @@ -22074,9 +22074,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": { @@ -23539,7 +23539,7 @@ "name": "@node-core/website-i18n", "devDependencies": { "eslint-import-resolver-typescript": "~3.6.3", - "typescript": "~5.6.3", + "typescript": "~5.7.2", "typescript-eslint": "~8.16.0" } } 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 a904f8e5be8c2aef9a6aa519c59bf93f3747598c Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Thu, 5 Dec 2024 08:23:14 -0600 Subject: [PATCH 0177/1385] 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 <brian.muenzenmeyer@gmail.com> * docs: clarified our translation flows * separate translation source upload from download * Update TRANSLATION.md Co-authored-by: Michael Esteban <mickel13@gmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * Update .github/workflows/translations-sync.yml Co-authored-by: Claudio W <cwunder@gnome.org> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * Update .github/workflows/translations-upload.yml Co-authored-by: Claudio W <cwunder@gnome.org> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Michael Esteban <mickel13@gmail.com> Co-authored-by: Claudio W <cwunder@gnome.org> --- ...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 39855a75a4b382d0fbc39c1f3b611860b91b12f7 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Thu, 5 Dec 2024 08:46:45 -0600 Subject: [PATCH 0178/1385] 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) </p> -**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. <details> <summary>Original contents</summary> 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 3013c3bae104228aa8c06fae2dfafd072bc52f22 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Thu, 5 Dec 2024 09:07:40 -0600 Subject: [PATCH 0179/1385] 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 18af3db0346996c0b407c0afc58817cc7fc758fe Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Thu, 5 Dec 2024 09:29:31 -0600 Subject: [PATCH 0180/1385] 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 7f3f3382ef213cf61201cc32d34a19ed9702a4b5 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Thu, 5 Dec 2024 19:25:51 -0300 Subject: [PATCH 0181/1385] 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 <mickel13@gmail.com> Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> * Update apps/site/pages/en/learn/getting-started/security-best-practices.md Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Michael Esteban <mickel13@gmail.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .../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 c109a38e03d92a0ed46f083945f9c8e7b2365b2c Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Thu, 5 Dec 2024 23:14:08 -0300 Subject: [PATCH 0182/1385] 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 a81fb3d92cf2c2eec6fc49203425d6142b3cf889 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Fri, 6 Dec 2024 11:27:02 -0600 Subject: [PATCH 0183/1385] hotfix: allow a workflow to trigger another workflow Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .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 16cc391752898dd10bae143e7ab77fb4c6a41412 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Fri, 6 Dec 2024 11:38:09 -0600 Subject: [PATCH 0184/1385] hotfix: remove ci-skip Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .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 91be9ec7eb15c4f3c4599332b5d97a2651622f5a Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Fri, 6 Dec 2024 11:57:48 -0600 Subject: [PATCH 0185/1385] 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 be8ad1198fc7c39f49c8dc2fad189cc5dc4ebacb Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Fri, 6 Dec 2024 12:04:30 -0600 Subject: [PATCH 0186/1385] 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 9f77ab9633ce036b9204528b7710586c0120c0e5 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sat, 7 Dec 2024 05:55:17 -0600 Subject: [PATCH 0187/1385] 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 89370acf87f33ee624f66bd44520f8945fbe8bce Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sat, 7 Dec 2024 06:09:19 -0600 Subject: [PATCH 0188/1385] 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 1980d89b383a53d201c9eea293c8b32c50123028 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sat, 7 Dec 2024 06:23:11 -0600 Subject: [PATCH 0189/1385] 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 0496afeb11f0c815d8f2c3430684f55c5d18e8aa Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sat, 7 Dec 2024 08:07:55 -0600 Subject: [PATCH 0190/1385] 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 05e03594ca084319944c93e27c213020eebd1df2 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sat, 7 Dec 2024 08:10:31 -0600 Subject: [PATCH 0191/1385] 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 02b7307971f87dc2e849f6c2ec1e487e9756832b Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sat, 7 Dec 2024 08:32:00 -0600 Subject: [PATCH 0192/1385] 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 14737ec04da0e336a1adc58868ea91f07186762a Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sun, 8 Dec 2024 19:10:37 -0600 Subject: [PATCH 0193/1385] 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 @@ <a title="scorecard" href="https://securityscorecards.dev/viewer/?uri=github.com/nodejs/nodejs.org"> <img src="https://api.securityscorecards.dev/projects/github.com/nodejs/nodejs.org/badge" alt="nodejs.org scorecard badge" /> </a> - <a href="http://commitizen.github.io/cz-cli/" alt="Commitizen friendly"> - <img src="https://img.shields.io/badge/commitizen-friendly-brightgreen.svg"> - </a> <br /> <br /> </p> diff --git a/package-lock.json b/package-lock.json index 3af86558e398e..845827d3d1605 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 84968979fae58d2709096ad5a27e9c6f0b5a3ec5 Mon Sep 17 00:00:00 2001 From: Jordan Harband <ljharb@gmail.com> Date: Mon, 9 Dec 2024 05:01:10 -0800 Subject: [PATCH 0194/1385] 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 e9a289ebcba09b8bdd15696cedb68a2a38e22e75 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 0195/1385] [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 <support+bot@crowdin.com> Co-authored-by: bmuenzenmeyer <bmuenzenmeyer@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- 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. <img alt="Mascotte de Node.js" diff --git a/apps/site/pages/fr/about/previous-releases.mdx b/apps/site/pages/fr/about/previous-releases.mdx index dd53567056c68..bd7e239fab3d1 100644 --- a/apps/site/pages/fr/about/previous-releases.mdx +++ b/apps/site/pages/fr/about/previous-releases.mdx @@ -16,6 +16,10 @@ Les applications de production ne doivent utiliser que les versions _Active LTS_ Tous les détails concernant le calendrier des versions de Node.js sont disponibles [sur GitHub](https://github.com/nodejs/release#release-schedule). +### Support Commercial + +Le support commercial pour les versions dépassant la phase de maintenance est disponible auprès de notre partenaire OpenJS Ecosystem Sustainability Program [HeroDevs](https://herodevs.com/). + ## Vous recherchez la dernière version d'une branche de version ? <DownloadReleasesTable /> 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 <Release.VersionDropdown /> sur <Release.OperatingSystemDropdo <section> Node.js inclut <Release.NpmLink />. -Lire le journal des modifications pour <Release.ChangelogLink>cette version</Release.ChangelogLink> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. -Lire l'article de blog pour <Release.BlogPostLink>cette version</Release.BlogPostLink> +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> sur <Release.OperatingSystemDropdo <section> Node.js inclut <Release.NpmLink />. -Lire le journal des modifications pour <Release.ChangelogLink>cette version</Release.ChangelogLink> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version -Lire l'article de blog pour <Release.BlogPostLink>cette version</Release.BlogPostLink> +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> de Node.js pour <Release.Operatin <section> Node.js inclut <Release.NpmLink />. -Lire le journal des modifications pour <Release.ChangelogLink>cette version</Release.ChangelogLink> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version -Lire l'article de blog pour <Release.BlogPostLink>cette version</Release.BlogPostLink> +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> de Node.js pour <Release.Operatin <section> Node.js inclut <Release.NpmLink />. -Lire le journal des modifications pour <Release.ChangelogLink>cette version</Release.ChangelogLink>. +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. -Lire l'article de blog pour <Release.BlogPostLink>cette version</Release.BlogPostLink>. +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS signés</Release.VerifyingBinariesLink>. 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 <Release.VersionDropdown /> de Node.js pour <Release.Operatin <section> Node.js inclut <Release.NpmLink />. -Lire le journal des modifications pour <Release.ChangelogLink>cette version</Release.ChangelogLink> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version -Lire l'article de blog pour <Release.BlogPostLink>cette version</Release.BlogPostLink> +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> de Node.js pour <Release.Operatin <section> Node.js inclut <Release.NpmLink />. -Lire le journal des modifications pour <Release.ChangelogLink>cette version</Release.ChangelogLink> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. -Lire l'article de blog pour <Release.BlogPostLink>cette version</Release.BlogPostLink> +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> du code source de Node.js. <section> Node.js inclut <Release.NpmLink />. -Lire le journal des modifications pour <Release.ChangelogLink>cette version</Release.ChangelogLink> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. -Lire l'article de blog pour <Release.BlogPostLink>cette version</Release.BlogPostLink> +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> du code source de Node.js. <section> Node.js inclut <Release.NpmLink />. -Lire le journal des modifications pour <Release.ChangelogLink>cette version</Release.ChangelogLink> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. -Lire l'article de blog pour <Release.BlogPostLink>cette version</Release.BlogPostLink> +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> 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 --- <section> - <WithBadge section="index" /> - - <div> - <h1 className="special">Exécuter du JavaScript partout</h1> - - 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. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Télécharger Node.js (LTS)</DownloadButton> - <small> - Télécharger Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> avec un support à long terme. - Node.js peut également être installé via <Link href="/download/package-manager">gestionnaires de paquets</Link>. - </small> - </> - )} - </WithNodeRelease> +<WithBadge section="index" /> + +<div> + <h1 className="special">Exécuter du JavaScript partout</h1> + +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. + +</div> - <WithNodeRelease status={['Current']}> - {({ release }) => ( +<div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Télécharger Node.js (LTS)</DownloadButton> <small> - Vous voulez de nouvelles fonctionnalités plus tôt ? - Obtenez <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> à la place. + Télécharger Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> avec un support à long terme. + Node.js peut également être installé via <Link href="/download/package-manager">gestionnaires de paquets</Link>. </small> - )} - </WithNodeRelease> - - </div> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( + <small> + Vous voulez de nouvelles fonctionnalités plus tôt ? + Obtenez <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> à la place. + </small> + )} + </WithNodeRelease> +</div> </section> <section> - <div> - ```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` - ``` - - </div> - Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn). +<div> + ```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` +``` + +</div> + +Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn). + </section> 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. + <img alt="Node.js mascot" src="/static/images/node-mascot.svg" @@ -22,51 +24,61 @@ Harap tinjau [kebijakan merek dagang](https://trademark-policy.openjsf.org/) unt ### Logo Horizontal Node.js® <table> -<tr> - <td> - <img alt="Logo Gelap Horizontal Node.js®" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Logo Terang Horizontal Node.js®" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="Logo Gelap Horizontal Node.js®" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Logo Terang Horizontal Node.js®" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + + </tr> +</tbody> </table> ### Logo Bertumpuk Node.js® <table> -<tr> - <td> - <img alt="Logo Gelap Bertumpuk Node.js®" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Logo Terang Bertumpuk Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> -</tr> - -<tr> - <td> - <img alt="Logo Bertumpuk Hitam Node.js" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Logo Bertumpuk Putih Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="Logo Gelap Bertumpuk Node.js®" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Logo Terang Bertumpuk Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + + </tr> + + <tr> + <td> + <img alt="Logo Bertumpuk Hitam Node.js" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Logo Bertumpuk Putih Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + + </tr> +</tbody> </table> ### JS Icons <table> -<tr> - <td> - <img alt="JS Icons Green" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="Ikon JS Putih" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="JS Icons Green" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Ikon JS Putih" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + + </tr> +</tbody> </table> 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? <DownloadReleasesTable /> 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 <Release.VersionDropdown /> di <Release.OperatingSystemDropdown e <section> Node.js disertakan <Release.NpmLink />. -Baca log perubahan untuk <Release.ChangelogLink>versi ini</Release.ChangelogLink> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. -Baca pos artikel untuk <Release.BlogPostLink>versi ini</Release.BlogPostLink> +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> di <Release.OperatingSystemDropdown e <section> Node.js disertakan <Release.NpmLink />. -Baca log perubahan untuk <Release.ChangelogLink>versi ini</Release.ChangelogLink> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini -Baca pos artikel untuk <Release.BlogPostLink>versi ini</Release.BlogPostLink> +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> untuk <Release.OperatingSys <section> Node.js disertakan <Release.NpmLink />. -Baca log perubahan untuk <Release.ChangelogLink>versi ini</Release.ChangelogLink> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini -Baca pos artikel untuk <Release.BlogPostLink>versi ini</Release.BlogPostLink> +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> untuk <Release.OperatingSys <section> Node.js disertakan <Release.NpmLink />. -Baca log perubahan untuk <Release.ChangelogLink>versi ini</Release.ChangelogLink>. +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. -Baca pos artikel untuk <Release.BlogPostLink>versi ini</Release.BlogPostLink>. +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink>. 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 <Release.VersionDropdown /> untuk <Release.OperatingSys <section> Node.js disertakan <Release.NpmLink />. -Baca log perubahan untuk <Release.ChangelogLink>versi ini</Release.ChangelogLink> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini -Baca pos artikel untuk <Release.BlogPostLink>versi ini</Release.BlogPostLink> +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown /> untuk <Release.OperatingSys <section> Node.js disertakan <Release.NpmLink />. -Baca log perubahan untuk <Release.ChangelogLink>versi ini</Release.ChangelogLink> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. -Baca pos artikel untuk <Release.BlogPostLink>versi ini</Release.BlogPostLink> +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> Lihat semua opsi <LinkWithArrow href="https://nodejs.org/dist/">unduh Node.js</LinkWithArrow> yang tersedia -Pelajari tentang <LinkWithArrow href="about/previous-releases">Rilis Node.js</LinkWithArrow> +Pelajari tentang <LinkWithArrow href="/about/previous-releases">Rilis Node.js</LinkWithArrow> </section> 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 <Release.VersionDropdown />. <section> Node.js disertakan <Release.NpmLink />. -Baca log perubahan untuk <Release.ChangelogLink>versi ini</Release.ChangelogLink> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. -Baca pos artikel untuk <Release.BlogPostLink>versi ini</Release.BlogPostLink> +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> 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 <Release.VersionDropdown />. <section> Node.js disertakan <Release.NpmLink />. -Baca log perubahan untuk <Release.ChangelogLink>versi ini</Release.ChangelogLink> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. -Baca pos artikel untuk <Release.BlogPostLink>versi ini</Release.BlogPostLink> +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> 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 --- <section> - <WithBadge section="index" /> - - <div> - <h1 className="special">Jalankan JavaScript Di Mana Saja</h1> - - 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. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Unduh Node.js (LTS)</DownloadButton> - <small> - Unduhan Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> dengan dukungan jangka panjang (LTS). - Node.js juga dapat diinstal melalui <Link href="/download/package-manager">manajer paket</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( +<WithBadge section="index" /> + +<div> + <h1 className="special">Jalankan JavaScript Di Mana Saja</h1> + +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. + +</div> + +<div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Unduh Node.js (LTS)</DownloadButton> <small> - Ingin fitur baru lebih cepat? - Dapatkan <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> sebagai gantinya. + Unduhan Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> dengan dukungan jangka panjang (LTS). + Node.js juga dapat diinstal melalui <Link href="/download/package-manager">manajer paket</Link>. </small> - )} - </WithNodeRelease> - - </div> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( + <small> + Ingin fitur baru lebih cepat? + Dapatkan <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> sebagai gantinya. + </small> + )} + </WithNodeRelease> +</div> </section> <section> - <div> - ```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` - ``` - - </div> - Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami. +<div> + ```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` +``` + +</div> + +Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami. + </section> 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/)에게 감사의 말씀을 전합니다. + +<img + alt="Node.js 마스코트" + src="/static/images/node-mascot.svg" + className="w-[100px]" + width="100" + height="114" +/> + +## Node.js® 로고 + +### Node.js® 수평 로고 + +<table> +<tbody> + <tr> + <td> + <img alt="Node.js 어두운 수평 로고" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Node.js 밝은 수평 로고" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + + </tr> +</tbody> +</table> + +### Node.js® 세로 로고 + +<table> +<tbody> + <tr> + <td> + <img alt="Node.js 어두운 세로 로고" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Node.js 밝은 세로 로고" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + + </tr> + + <tr> + <td> + <img alt="Node.js 검은색 세로 로고" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Node.js 흰색 세로 로고" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + + </tr> +</tbody> +</table> + +### JS 아이콘 + +<table> +<tbody> + <tr> + <td> + <img alt="녹색 JS 아이콘" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="흰색 JS 아이콘" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + + </tr> +</tbody> +</table> 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 일 이내에 예정되어 있습니다. + +<UpcomingMeetings /> 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/)를 통해 제공됩니다. + +## 버전 브랜치의 최신 릴리스를 찾고 계신가요? + +<DownloadReleasesTable /> 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 모범 사례 + +<a + href="https://bestpractices.coreinfrastructure.org/projects/29" + style={{ display: 'inline-flex' }} +> + <img + alt="OpenSSF 배지" + src="https://bestpractices.coreinfrastructure.org/projects/29/badge" + style={{ display: 'inline' }} + /> +</a> + +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:<stream> +``` + +여기서 `<stream>`은 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<major version> + +# 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를 다운로드하세요. +--- + +<section> +<Release.PlatformDropdown />를 사용하여 <Release.OperatingSystemDropdown exclude={["AIX"]} />에 Node.js <Release.VersionDropdown />를 설치하세요. + +<Release.ReleaseCodeBox /> +</section> + +<section> +Node.js에는 <Release.NpmLink />가 포함되어 있습니다. + +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 +확인하는 방법을 알아보세요. + +커뮤니티에서 지원하는 다른 <LinkWithArrow href="/download/package-manager/all">패키지 관리자</LinkWithArrow>도 확인하세요. + +</section> 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를 다운로드하세요. +--- + +<section> +<Release.PlatformDropdown />를 사용하여 <Release.OperatingSystemDropdown exclude={["AIX"]} />에 Node.js <Release.VersionDropdown />를 설치하세요. + +<Release.ReleaseCodeBox /> +</section> + +<section> +Node.js에는 <Release.NpmLink />가 포함되어 있습니다. + +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 +확인하는 방법을 알아보세요. + +커뮤니티에서 지원하는 다른 <LinkWithArrow href="/download/package-manager/all">패키지 관리자</LinkWithArrow>도 확인하세요. + +</section> 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를 다운로드하세요. +--- + +<section> +<Release.BitnessDropdown />에서 실행되는 <Release.OperatingSystemDropdown />용 Node.js의 <Release.VersionDropdown /> 버전을 원합니다. + +<Release.DownloadButton kind={"binary"} /> +</section> + +<section> +Node.js에는 <Release.NpmLink />가 포함되어 있습니다. + +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 +확인하는 방법을 배워보세요. + +<LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> 사전 빌드된 바이너리 또는 다른 플랫폼에 맞는 <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">비공식 빌드</LinkWithArrow>를 확인하세요. +</section> 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를 다운로드하세요. +--- + +<section> +<Release.BitnessDropdown />에서 실행되는 <Release.OperatingSystemDropdown />용 Node.js의 <Release.VersionDropdown /> 버전을 원합니다. + +<Release.DownloadButton kind={"binary"} /> +</section> + +<section> +Node.js에는 <Release.NpmLink />가 포함되어 있습니다. + +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 +확인하는 방법을 배워보세요. + +<LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> 사전 빌드된 바이너리, 모든 <LinkWithArrow href="https://nodejs.org/download/release/">Release</LinkWithArrow> 사전 빌드된 바이너리, 또는 다른 플랫폼에 맞는 <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">비공식 빌드</LinkWithArrow>를 확인하세요. +</section> 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를 다운로드하세요. +--- + +<section> +<Release.BitnessDropdown />에서 실행되는 <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />용 Node.js의 <Release.VersionDropdown /> 버전을 원합니다. + +<Release.DownloadButton kind={"installer"} /> +</section> + +<section> +Node.js에는 <Release.NpmLink />가 포함되어 있습니다. + +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 +확인하는 방법을 배워보세요. + +모든 사용 가능한 Node.js <LinkWithArrow href="https://nodejs.org/dist/">다운로드 옵션</LinkWithArrow>을 확인하세요. + +<LinkWithArrow href="about/previous-releases">Node.js 릴리스</LinkWithArrow>를 알아보세요. +</section> 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를 다운로드 하세요. +--- + +<section> +<Release.BitnessDropdown />에서 실행되는 <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />용 Node.js의 <Release.VersionDropdown /> 버전을 원합니다. + +<Release.DownloadButton kind={"installer"} /> +</section> + +<section> +Node.js에는 <Release.NpmLink />가 포함되어 있습니다. + +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 +확인하는 방법을 배워보세요. + +모든 사용 가능한 Node.js <LinkWithArrow href="https://nodejs.org/dist/">다운로드 옵션</LinkWithArrow>을 확인하세요. + +<LinkWithArrow href="about/previous-releases">Node.js 릴리스</LinkWithArrow>를 알아보세요. +</section> 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를 다운로드하세요. +--- + +<section> +<Release.VersionDropdown /> 버전의 Node.js 소스 코드를 원합니다. + +<Release.SourceButton /> +</section> + +<section> +Node.js에는 <Release.NpmLink />가 포함되어 있습니다. + +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>을 +확인하는 방법을 알아보세요. + +Node.js를 <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">소스에서 빌드하는 방법</LinkWithArrow>을 확인하세요. + +</section> 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를 다운로드 하세요. <section> Node.js에는 <Release.NpmLink />이 포함되어 있습니다. -변경된 사항은 다음을 참고하세요. <Release.ChangelogLink>이 버전</Release.ChangelogLink> +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. -<Release.BlogPostLink>이 버전</Release.BlogPostLink>에 대한 블로그 포스트를 -확인합니다. +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. <Release.VerifyingBinariesLink>SHA 서명 확인</Release.VerifyingBinariesLink>라는 방법을 배워보세요. 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 --- <section> - <WithBadge section="index" /> - - <div> - <h1 className="special">어디서든 JavaScript를 실행하세요!!</h1> - - Node.js®는 무료, 오픈소스, 크로스플랫폼 JavaSript 런타임 환경으로 개발자 여러분이 서버, - 웹 앱, 커맨드 작성 도구와 스크립트를 만들도록 해줍니다. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js 다운로드 (LTS)</DownloadButton> - <small> - Node.js 다운로드 <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> LTS. - Node.js는 <Link href="/download/package-manager">package managers</Link>를 통해서도 다운로드 할 수 있습니다.. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['현재버전']}> - {({ release }) => ( +<WithBadge section="index" /> + +<div> + <h1 className="special">어디서든 JavaScript를 실행하세요</h1> + +Node.js®는 무료, 오픈소스, 다중 플랫폼 JavaScript 런타임 환경으로 개발자 여러분이 서버, 웹 애플리케이션, 명령어 작성 도구와 스크립트를 만들도록 해줍니다. + +</div> + +<div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Node.js 다운로드 (LTS)</DownloadButton> <small> - 새로운 기능을 먼저 경험하고 싶다면 - <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 를 다운 받으세요. + Node.js 다운로드 <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> LTS. + Node.js는 <Link href="/download/package-manager">패키지 관리자</Link>를 통해서도 다운로드 할 수 있습니다. </small> - )} - </WithNodeRelease> - - </div> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['현재버전']}> + {({ release }) => ( + <small> + 새로운 기능을 먼저 경험하고 싶다면 + <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> 를 다운 받으세요. + </small> + )} + </WithNodeRelease> +</div> </section> <section> - <div> - ```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` - ``` - - </div> - Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn). +<div> + ```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` +``` + +</div> + +Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn). + </section> 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? <DownloadReleasesTable /> 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? <DownloadReleasesTable /> 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. + <img alt="Маскот Node.js" src="/static/images/node-mascot.svg" @@ -22,51 +24,61 @@ layout: about ### Горизонтальний логотип Node.js® <table> -<tr> - <td> - <img alt="Темний горизонтальний логотип Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Світлий горизонтальний логотип Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="Темний горизонтальний логотип Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Світлий горизонтальний логотип Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + + </tr> +</tbody> </table> ### Складений логотип Node.js® <table> -<tr> - <td> - <img alt="Темний складений логотип Node.js®" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Світлий складений логотип Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> -</tr> - -<tr> - <td> - <img alt="Чорний складений логотип Node.js®" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Білий складений логотип Node.js®" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="Темний складений логотип Node.js®" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Світлий складений логотип Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + + </tr> + + <tr> + <td> + <img alt="Чорний складений логотип Node.js®" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Білий складений логотип Node.js®" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + + </tr> +</tbody> </table> ### Значки JS <table> -<tr> - <td> - <img alt="Зелений значок JS" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="Білий значок JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="Зелений значок JS" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Білий значок JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + + </tr> +</tbody> </table> 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/). + ## Шукаєте останній реліз гілки версії? <DownloadReleasesTable /> 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 так, як ви бажаєте. <section> Node.js містить <Release.NpmLink />. -Читайте список змін для <Release.ChangelogLink>цієї версії</Release.ChangelogLink> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. -Читайте публікацію в блозі про <Release.BlogPostLink>цю версію</Release.BlogPostLink> +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> 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 так, як ви бажаєте. <section> Node.js містить <Release.NpmLink />. -Читайте список змін для <Release.ChangelogLink>цієї версії</Release.ChangelogLink> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії -Читайте публікацію в блозі про <Release.BlogPostLink>цю версію</Release.BlogPostLink> +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> 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 так, як ви бажаєте. --- <section> -Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> розрядності <Release.BitnessDropdown /> +Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> з архітектурою <Release.BitnessDropdown /> <Release.DownloadButton kind={"binary"} /> </section> @@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте. <section> Node.js містить <Release.NpmLink />. -Читайте список змін для <Release.ChangelogLink>цієї версії</Release.ChangelogLink> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії -Читайте публікацію в блозі про <Release.BlogPostLink>цю версію</Release.BlogPostLink> +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> 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 так, як ви бажаєте. --- <section> -Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> розрядності <Release.BitnessDropdown /> +Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> з архітектурою <Release.BitnessDropdown /> <Release.DownloadButton kind={"binary"} /> </section> @@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте. <section> Node.js містить <Release.NpmLink />. -Читайте список змін для <Release.ChangelogLink>цієї версії</Release.ChangelogLink>. +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. -Читайте публікацію в блозі про <Release.BlogPostLink>цю версію</Release.BlogPostLink>. +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink>. 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 так, як ви бажаєте. --- <section> -Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> розрядності <Release.BitnessDropdown /> +Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> з архітектурою <Release.BitnessDropdown /> <Release.DownloadButton kind={"installer"} /> </section> @@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте. <section> Node.js містить <Release.NpmLink />. -Читайте список змін для <Release.ChangelogLink>цієї версії</Release.ChangelogLink> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії -Читайте публікацію в блозі про <Release.BlogPostLink>цю версію</Release.BlogPostLink> +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> 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 так, як ви бажаєте. --- <section> -Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> розрядності <Release.BitnessDropdown /> +Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> з архітектурою <Release.BitnessDropdown /> <Release.DownloadButton kind={"installer"} /> </section> @@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте. <section> Node.js містить <Release.NpmLink />. -Читайте список змін для <Release.ChangelogLink>цієї версії</Release.ChangelogLink> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. -Читайте публікацію в блозі про <Release.BlogPostLink>цю версію</Release.BlogPostLink> +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> 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 так, як ви бажаєте. <section> Node.js містить <Release.NpmLink />. -Читайте список змін для <Release.ChangelogLink>цієї версії</Release.ChangelogLink> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. -Читайте публікацію в блозі про <Release.BlogPostLink>цю версію</Release.BlogPostLink> +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> 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 так, як ви бажаєте. <section> Node.js містить <Release.NpmLink />. -Читайте список змін для <Release.ChangelogLink>цієї версії</Release.ChangelogLink> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. -Читайте публікацію в блозі про <Release.BlogPostLink>цю версію</Release.BlogPostLink> +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> 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 --- <section> - <WithBadge section="index" /> - - <div> - <h1 className="special">Запускайте JavaScript будь-де</h1> - - Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, - яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та - скрипти. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Завантажити Node.js (LTS)</DownloadButton> - <small> - Завантажує Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> із довгостроковою підтримкою. - Node.js також можна встановити через <Link href="/download/package-manager">менеджери пакетів</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( +<WithBadge section="index" /> + +<div> + <h1 className="special">Запускайте JavaScript будь-де</h1> + +Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, +яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти. + +</div> + +<div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Завантажити Node.js (LTS)</DownloadButton> <small> - Хочете отримати нові функції швидше? - Завантажте <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>. + Завантажує Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> із довгостроковою підтримкою. + Node.js також можна встановити через <Link href="/download/package-manager">менеджери пакетів</Link>. </small> - )} - </WithNodeRelease> - - </div> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( + <small> + Хочете отримати нові функції швидше? + Завантажте <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>. + </small> + )} + </WithNodeRelease> +</div> </section> <section> - <div> - ```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` - ``` - - </div> - Дізнайтеся більше про можливості Node.js із [нашими навчальними матеріалами](/learn). +<div> + ```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` +``` + +</div> + +Дізнайтеся більше про можливості Node.js із [нашими навчальними матеріалами](/learn). + </section> 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 44e24fa2c3f579dc8a3fb9aca6bf49a4c2dc20e9 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Tue, 10 Dec 2024 17:01:11 +0100 Subject: [PATCH 0196/1385] 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 f60d06341899cf9a1fdc2234ce825e4a230d7404 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 0197/1385] [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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com> --- 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 런타임 환경 )} </WithNodeRelease> - <WithNodeRelease status={['현재버전']}> + <WithNodeRelease status={['Current']}> {({ release }) => ( <small> 새로운 기능을 먼저 경험하고 싶다면 @@ -132,6 +132,6 @@ if (isMainThread) { </div> -Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn). +Node.js가 제공하는 [학습 자료](/learn)를 통해 더 많은 정보를 알아보세요. </section> 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 19047d0a70b24502906f06944b361901b11da68c 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 0198/1385] 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 56fbf9140ad1d3071304b98f026bcd260a7b74c4 Mon Sep 17 00:00:00 2001 From: "mpruser.k" <mpruser.k@gmail.com> Date: Sat, 14 Dec 2024 21:55:22 +0900 Subject: [PATCH 0199/1385] 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 <lucas@rxc.co.kr> Co-authored-by: mpruser <mpruser.@gmail.com> --- 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 173fa23940aef87dce19bcdf5fa7747df4297c66 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 0200/1385] [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 <support+bot@crowdin.com> Co-authored-by: bmuenzenmeyer <bmuenzenmeyer@users.noreply.github.com> --- 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 d572121de8f8f6e97020a130c4b3825252329eb6 Mon Sep 17 00:00:00 2001 From: Michele Riva <ciao@micheleriva.it> Date: Sun, 15 Dec 2024 03:00:15 +0100 Subject: [PATCH 0201/1385] 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 <rodrigoj.borba@gmail.com> --- .../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 | 266 +++++++++++++++++- 40 files changed, 454 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<SearchDoc>; - -type SeeAllProps = { - searchResults: SearchResults; - searchTerm: string; - selectedFacetName: string; - onSeeAllClick: () => void; -}; - -export const WithAllResults: FC<SeeAllProps> = 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 ( - <div className={styles.seeAllFulltextSearchResults}> - <NextLink href={allResultsURL} onClick={props.onSeeAllClick}> - {t('components.search.seeAll.text', { count: resultsCount })} - </NextLink> - </div> - ); -}; 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 ( - <div className={styles.searchErrorContainer}> - {t('components.search.searchError.text')} - </div> - ); -}; 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<NoResultsProps> = props => { - const t = useTranslations(); - - return ( - <div className={styles.noResultsContainer}> - {t('components.search.noResults.text', { query: props.searchTerm })} - </div> - ); -}; 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<string>(); - - useEffect(() => setLogoURL(getLogoURL(resolvedTheme)), [resolvedTheme]); - - return ( - <div className={styles.poweredBy}> - {t('components.search.poweredBy.text')} - - <a - href="https://oramasearch.com?utm_source=nodejs.org" - target="_blank" - rel="noreferer" - > - {logoURL && ( - <Image - src={logoURL} - alt="Powered by OramaSearch" - className={styles.poweredByLogo} - width={80} - height={20} - /> - )} - </a> - </div> - ); -}; 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<Results<SearchDoc>>; - -type SearchBoxProps = { onClose: () => void }; - -export const WithSearchBox: FC<SearchBoxProps> = ({ onClose }) => { - const [searchTerm, setSearchTerm] = useState(''); - const [searchResults, setSearchResults] = useState<SearchResults>(null); - const [selectedResult, setSelectedResult] = useState<number>(); - const [selectedFacet, setSelectedFacet] = useState<number>(0); - const [searchError, setSearchError] = useState<Nullable<Error>>(null); - - const router = useRouter(); - const searchInputRef = useRef<HTMLInputElement>(null); - const searchBoxRef = useRef<HTMLDivElement>(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<HTMLFormElement>) => { - 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 ( - <div className={styles.searchBoxModalContainer}> - <div className={styles.searchBoxModalPanel} ref={searchBoxRef}> - <div className={styles.searchBoxInnerPanel}> - <div className={styles.searchBoxInputContainer}> - <button - onClick={onClose} - className={styles.searchBoxBackIconContainer} - > - <ChevronLeftIcon className={styles.searchBoxBackIcon} /> - </button> - - <MagnifyingGlassIcon - className={styles.searchBoxMagnifyingGlassIcon} - /> - - <form onSubmit={onSubmit}> - <input - ref={searchInputRef} - aria-activedescendant={ - selectedResult !== undefined - ? `search-hit-${selectedResult}` - : undefined - } - aria-autocomplete="list" - aria-controls="fulltext-results-container" - aria-expanded={Boolean(!searchError && searchResults?.count)} - autoComplete="off" - role="combobox" - type="search" - className={styles.searchBoxInput} - onChange={event => setSearchTerm(event.target.value)} - value={searchTerm} - /> - </form> - </div> - - <div className={styles.fulltextSearchSections}> - <Tabs - activationMode="manual" - defaultValue="0" - autoFocus={true} - tabs={Object.keys(facets).map((facetName, idx) => ({ - key: facetName, - label: facetName, - secondaryLabel: `(${facets[facetName].toLocaleString('en')})`, - value: idx.toString(), - }))} - onValueChange={changeFacet} - /> - </div> - - <div - id="fulltext-results-container" - className={styles.fulltextResultsContainer} - role="listbox" - > - {searchError && <WithError />} - - {!searchError && ( - <> - {searchResults && - searchResults.count > 0 && - searchResults.hits.map((hit, idx) => ( - <WithSearchResult - key={hit.id} - hit={hit} - searchTerm={searchTerm} - selected={selectedResult === idx} - idx={idx} - /> - ))} - - {searchResults && searchResults.count === 0 && ( - <WithNoResults searchTerm={searchTerm} /> - )} - - {searchResults && searchResults.count > 8 && ( - <WithAllResults - searchResults={searchResults} - searchTerm={searchTerm} - selectedFacetName={selectedFacetName} - onSeeAllClick={onClose} - /> - )} - </> - )} - </div> - - <div className={styles.fulltextSearchFooter}> - <WithPoweredBy /> - </div> - </div> - </div> - </div> - ); -}; 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<SearchDoc>; - searchTerm: string; - selected: boolean; - idx: number; -}; - -export const WithSearchResult: FC<SearchResultProps> = props => { - const divRef = useRef<HTMLDivElement>(null); - const path = searchHitToLinkPath(props.hit); - - useEffect(() => { - if (props.selected && divRef.current) { - divRef.current.scrollIntoView({ block: 'center' }); - } - }, [props.selected]); - - return ( - <Link - id={`search-hit-${props.idx}`} - key={props.hit.id} - href={path} - className={styles.fulltextSearchResult} - role="option" - aria-selected={props.selected} - > - <div - className={styles.fulltextSearchResultTitle} - ref={divRef} - dangerouslySetInnerHTML={{ - __html: highlighter - .highlight(props.hit.document.pageSectionTitle, props.searchTerm) - .trim(125), - }} - /> - <div className={styles.fulltextSearchResultBreadcrumb}> - {pathToBreadcrumbs(props.hit.document.path).join(' > ')} - {' > '} - {props.hit.document.pageTitle} - </div> - </Link> - ); -}; 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 ( <> - <button - type="button" - onClick={openSearchBox} - className={styles.searchButton} + <OramaSearchButton + style={{ flexGrow: 1 }} + colorScheme={colorScheme} + themeConfig={themeConfig} aria-label={t('components.search.searchBox.placeholder')} > - <MagnifyingGlassIcon className={styles.magnifyingGlassIcon} /> - {t('components.search.searchBox.placeholder')} - <kbd - title={`${osCommandKey} K`} - className={classNames(styles.shortcutIndicator, { - 'opacity-0': isOSLoading, - })} - > - <abbr>{osCommandKey} K</abbr> - </kbd> - </button> - - {isOpen ? <WithSearchBox onClose={closeSearchBox} /> : null} + </OramaSearchButton> + + <OramaSearchBox + index={{ api_key: ORAMA_CLOUD_API_KEY, endpoint: ORAMA_CLOUD_ENDPOINT }} + colorScheme={colorScheme} + themeConfig={themeConfig} + sourceBaseUrl={BASE_URL} + sourcesMap={sourceMap} + resultMap={resultMap} + facetProperty="siteSection" + linksTarget="_self" + highlightTitle={{ + caseSensitive: false, + HTMLTag: 'b', + CSSClass: 'font-bold', + }} + searchParams={DEFAULT_ORAMA_QUERY_PARAMS} + suggestions={DEFAULT_ORAMA_SUGGESTIONS} + chatMarkdownLinkHref={({ href }) => { + 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 1ce06a1a5d0f6..5af65deddd09a 100644 --- a/apps/site/components/Containers/NavBar/index.tsx +++ b/apps/site/components/Containers/NavBar/index.tsx @@ -3,11 +3,11 @@ import Hamburger from '@heroicons/react/24/solid/Bars3Icon'; import XMark from '@heroicons/react/24/solid/XMarkIcon'; 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 GitHub from '@/components/Icons/Social/GitHub'; @@ -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: <Hamburger className={style.navInteractionIcon} />, close: <XMark className={style.navInteractionIcon} />, 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<Results<SearchDoc>>; -type Hit = Result<SearchDoc>; - -const SearchPage: FC = () => { - const t = useTranslations(); - const searchParams = useSearchParams(); - const [searchResults, setSearchResults] = useState<SearchResults>(null); - const [hits, setHits] = useState<Array<Hit>>([]); - const [offset, setOffset] = useState<number>(0); - - const searchTerm = searchParams?.get('q'); - const searchSection = searchParams?.get('section'); - const [shownSearchBox, setShownSearchbox] = useState<boolean>(!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<Hit>) => - 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 ( - <div className={styles.searchPageContainer}> - {shownSearchBox ? ( - <WithSearchBox onClose={() => setShownSearchbox(false)} /> - ) : null} - <div className={styles.searchTermContainer}> - <h1> - {t('components.search.searchPage.title', { query: searchTerm })} - </h1> - - <WithPoweredBy /> - </div> - - <div className={styles.searchResultsColumns}> - <div className={styles.facetsColumn}> - {Object.keys(facets).map(facetName => ( - <Link - key={facetName} - className={styles.searchResultsFacet} - href={`/search?q=${searchTerm}§ion=${facetName}`} - > - {facetName} - <span className={styles.facetCount}> - ({facets[facetName as keyof typeof facets]}) - </span> - </Link> - ))} - </div> - - <div className={styles.resultsColumn}> - {hits?.map(hit => ( - <Link - key={hit.id} - className={styles.searchResult} - href={getDocumentURL( - hit.document.siteSection.toLowerCase(), - hit.document.path - )} - > - <div> - <h2 className={styles.searchResultTitle}> - {hit.document.pageSectionTitle} - </h2> - - <p - className={styles.searchResultSnippet} - dangerouslySetInnerHTML={{ - __html: highlighter - .highlight(hit.document.pageSectionContent, searchTerm!) - .trim(180), - }} - /> - - <div className={styles.searchResultPageTitle}> - Home {'>'} {pathToBreadcrumbs(hit.document.path).join(' > ')} - </div> - </div> - </Link> - ))} - </div> - </div> - </div> - ); -}; - -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 = <T extends HTMLElement>( - ref: RefObject<T | null>, - 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 7e79f159798fb..cae7e33608c1c 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -27,8 +27,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", 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 ---- - -<SearchPage /> 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: نتایج جستجو ---- - -<SearchPage /> 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 ---- - -<SearchPage /> 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 ---- - -<SearchPage /> 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: 検索結果 ---- - -<SearchPage /> 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: 검색결과 ---- - -<SearchPage /> 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 ---- - -<SearchPage /> 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ı ---- - -<SearchPage /> 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: Результати пошуку ---- - -<SearchPage /> 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: 搜索结果 ---- - -<SearchPage /> 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: 搜尋結果 ---- - -<SearchPage /> 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<SearchDoc>) => { - 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 845827d3d1605..d44b76207b3f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,8 +38,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", @@ -2648,6 +2648,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", @@ -3407,15 +3422,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", @@ -3425,6 +3446,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", @@ -3448,6 +3534,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", @@ -4422,6 +4517,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", @@ -5683,6 +5804,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", @@ -8784,6 +8911,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", @@ -11654,6 +11790,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", @@ -14128,6 +14273,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", @@ -14394,6 +14548,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", @@ -14835,6 +15020,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", @@ -14845,6 +15047,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", @@ -15285,6 +15508,12 @@ "dev": true, "license": "CC0-1.0" }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, "node_modules/memfs": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", @@ -17939,6 +18168,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", @@ -20374,6 +20612,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", @@ -22113,6 +22357,12 @@ } } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", From 3c274ba7633b94824929c03e172761f49b0a3699 Mon Sep 17 00:00:00 2001 From: Farid <fariedomar43@gmail.com> Date: Mon, 16 Dec 2024 18:18:54 +0530 Subject: [PATCH 0202/1385] 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 <cwunder@gnome.org> --------- Signed-off-by: Claudio W <cwunder@gnome.org> Co-authored-by: Claudio W <cwunder@gnome.org> --- 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<HTMLAnchorElement> & { 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<ButtonProps> = ({ href = undefined, children, className, + onClick, ...props -}) => ( - <Link - role="button" - href={disabled ? undefined : href} - aria-disabled={disabled} - className={classNames(styles.button, styles[kind], className)} - {...props} - > - {children} - </Link> -); +}) => { + const onKeyDownHandler = (e: KeyboardEvent<HTMLAnchorElement>) => { + if (disabled) { + e.preventDefault(); + return; + } + + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + if (typeof onClick === 'function') { + onClick(e as unknown as MouseEvent<HTMLAnchorElement>); + } + } + }; + + const onClickHandler = (e: MouseEvent<HTMLAnchorElement>) => { + if (disabled) { + e.preventDefault(); + return; + } + + if (typeof onClick === 'function') { + onClick(e); + } + }; + + return ( + <Link + role="button" + href={disabled ? undefined : href} + aria-disabled={disabled} + className={classNames(styles.button, styles[kind], className)} + tabIndex={disabled ? -1 : 0} // Ensure focusable if not disabled + onClick={onClickHandler} + onKeyDown={onKeyDownHandler} + {...props} + > + {children} + </Link> + ); +}; export default Button; From ee9247939d90871ebc572b190330992fda0a9b0e 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 0203/1385] 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 260 +++++++---------------------------------- 2 files changed, 46 insertions(+), 216 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index cae7e33608c1c..b715b113826cf 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -28,7 +28,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 d44b76207b3f3..e60239ca67c82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,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", @@ -351,6 +351,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" @@ -393,6 +394,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" @@ -704,6 +706,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", @@ -3438,10 +3441,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" } @@ -3500,40 +3502,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", @@ -5712,21 +5690,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", @@ -6323,6 +6292,8 @@ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.25.3", "@vue/shared": "3.5.13", @@ -6335,13 +6306,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.13", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/compiler-core": "3.5.13", "@vue/shared": "3.5.13" @@ -6352,6 +6327,8 @@ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.25.3", "@vue/compiler-core": "3.5.13", @@ -6368,13 +6345,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.13", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.13", "@vue/shared": "3.5.13" @@ -6385,6 +6366,8 @@ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/shared": "3.5.13" } @@ -6394,6 +6377,8 @@ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/reactivity": "3.5.13", "@vue/shared": "3.5.13" @@ -6404,6 +6389,8 @@ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/reactivity": "3.5.13", "@vue/runtime-core": "3.5.13", @@ -6416,6 +6403,8 @@ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.13", "@vue/shared": "3.5.13" @@ -6428,7 +6417,9 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", @@ -6623,18 +6614,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", @@ -6703,18 +6682,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", @@ -7103,6 +7070,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": { @@ -8035,6 +8003,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" @@ -8384,6 +8353,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": { @@ -8695,6 +8665,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" @@ -10477,15 +10448,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", @@ -11006,6 +10968,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", @@ -11016,12 +10979,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", @@ -11031,19 +10988,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", @@ -12016,15 +11960,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", @@ -14960,6 +14895,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" @@ -16325,6 +16261,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" @@ -16334,6 +16271,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" @@ -16634,67 +16572,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", @@ -17034,47 +16911,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", @@ -22397,6 +22233,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": { @@ -23177,6 +23014,8 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.13", "@vue/compiler-sfc": "3.5.13", @@ -23247,15 +23086,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 60a2c1405ab99c719439e69dd9b160fe7ee6437b 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 0204/1385] [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 <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: bmuenzenmeyer <bmuenzenmeyer@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- 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. + +<img + alt="Mascota de Node.js" + src="/static/images/node-mascot.svg" + className="w-[100px]" + width="100" + height="114" +/> + +## Logo de Node.js® + +### Logo Horizontal de Node.js® + +<table> +<tbody> + <tr> + <td> + <img alt="Logo Horizontal Oscuro de Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Logo Horizontal Claro de Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + + </tr> +</tbody> +</table> + +### Logo Apilado de Node.js® + +<table> +<tbody> + <tr> + <td> + <img alt="Logo Apilado Oscuro de Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Logo Apilado Claro de Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + + </tr> + + <tr> + <td> + <img alt="Logo Apilado Negro de Node.js" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Logo Apilado Blanco de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + + </tr> +</tbody> +</table> + +### Iconos de JS + +<table> +<tbody> + <tr> + <td> + <img alt="Iconos Verde de JS" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Iconos Blanco de JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + + </tr> +</tbody> +</table> 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. + +<UpcomingMeetings /> 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? + +<DownloadReleasesTable /> 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 + +<a + href="https://bestpractices.coreinfrastructure.org/projects/29" + style={{ display: 'inline-flex' }} +> + <img + alt="Insignia OpenSSF" + src="https://bestpractices.coreinfrastructure.org/projects/29/badge" + style={{ display: 'inline' }} + /> +</a> + +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:<stream> +``` + +donde `<stream>` 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<major version> + +# 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. +--- + +<section> +Instalar Node.js <Release.VersionDropdown /> en <Release.OperatingSystemDropdown exclude={["AIX"]} /> utilizando <Release.PlatformDropdown /> + +<Release.ReleaseCodeBox /> +</section> + +<section> +Node.js incluye <Release.NpmLink />. + +Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. + +Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> + +Comprueba otros <LinkWithArrow href="/download/package-manager/all">gestores de paquetes</LinkWithArrow> soportados por la comunidad + +</section> 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. +--- + +<section> +Instala Node.js <Release.VersionDropdown /> en <Release.OperatingSystemDropdown exclude={["AIX"]} /> utilizando <Release.PlatformDropdown /> + +<Release.ReleaseCodeBox /> +</section> + +<section> +Node.js incluye <Release.NpmLink />. + +Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión + +Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> + +Comprueba otros <LinkWithArrow href="/download/package-manager/all">gestores de paquetes</LinkWithArrow> soportados por la comunidad + +</section> 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. +--- + +<section> +Quiero la versión <Release.VersionDropdown /> de Node.js para <Release.OperatingSystemDropdown /> corriendo <Release.BitnessDropdown /> + +<Release.DownloadButton kind={"binary"} /> +</section> + +<section> +Node.js incluye <Release.NpmLink />. + +Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión + +Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> + +Comprueba los binarios pre construidos de <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> o las <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Construcciones no oficiales</LinkWithArrow> para otras plataformas + +</section> 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. +--- + +<section> +Quiero la versión <Release.VersionDropdown /> de Node.js para <Release.OperatingSystemDropdown /> corriendo <Release.BitnessDropdown /> + +<Release.DownloadButton kind={"binary"} /> +</section> + +<section> +Node.js incluye <Release.NpmLink />. + +Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. + +Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink>. + +Échale un vistazo a los binarios precompilados <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow>, todos los binarios precompilados de los <LinkWithArrow href="https://nodejs.org/download/release/">Lanzamiento</LinkWithArrow>, o las <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">versiones no oficiales</LinkWithArrow> para otras plataformas. + +</section> 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. +--- + +<section> +Quiero la versión <Release.VersionDropdown /> de Node.js para <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> ejecutada en <Release.BitnessDropdown /> + +<Release.DownloadButton kind={"installer"} /> +</section> + +<section> +Node.js incluye <Release.NpmLink />. + +Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión + +Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> + +Vea todas las <LinkWithArrow href="https://nodejs.org/dist/">opciones de descarga</LinkWithArrow> de Node.js disponibles + +Aprende sobre <LinkWithArrow href="about/previous-releases">Versiones de Node.js</LinkWithArrow> + +</section> 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. +--- + +<section> +Quiero la versión <Release.VersionDropdown /> de Node.js para <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> ejecutar en <Release.BitnessDropdown /> + +<Release.DownloadButton kind={"installer"} /> +</section> + +<section> +Node.js incluye <Release.NpmLink />. + +Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. + +Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> + +Vea todas las <LinkWithArrow href="https://nodejs.org/dist/">opciones de descarga</LinkWithArrow> de Node.js disponibles + +Aprende sobre <LinkWithArrow href="/about/previous-releases">Versiones de Node.js</LinkWithArrow> + +</section> 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. +--- + +<section> +Quiero la versión <Release.VersionDropdown /> del código fuente de Node.js. + +<Release.SourceButton /> +</section> + +<section> +Node.js incluye <Release.NpmLink />. + +Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. + +Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> + +Consulta cómo <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">construir Node.js</LinkWithArrow> desde el código fuente. + +</section> 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. +--- + +<section> +Quiero la versión <Release.VersionDropdown /> del código fuente de Node.js. + +<Release.SourceButton /> +</section> + +<section> +Node.js incluye <Release.NpmLink />. + +Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. + +Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> + +Verifica cómo <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">construir Node.js</LinkWithArrow> desde el código fuente. + +</section> 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 --- <section> - <WithBadge section="index" /> - - <div> - <h1 className="special">Ejecuta JavaScript en cualquier parte</h1> - - 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. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Descargar Node.js (LTS)</DownloadButton> - <small> - Descarga Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> con soporte a largo plazo. - Node.js también puede ser instalado a través de <Link href="/download/package-manager">gestores de paquetes</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( +<WithBadge section="index" /> + +<div> + <h1 className="special">Ejecuta JavaScript en cualquier parte</h1> + +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. + +</div> + +<div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Descargar Node.js (LTS)</DownloadButton> <small> - ¿Quieres nuevas funciones más pronto? - Consigue<b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> en vez. + Descarga Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> con soporte a largo plazo. + Node.js también puede ser instalado a través de <Link href="/download/package-manager">gestores de paquetes</Link>. </small> - )} - </WithNodeRelease> - - </div> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( + <small> + ¿Quieres nuevas funciones más pronto? + Consigue<b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> en vez. + </small> + )} + </WithNodeRelease> +</div> </section> <section> - <div> - ```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` - ``` - - </div> - Aprenda más sobre lo que Node.js puede ofrecer con nuestros [Materiales de aprendizaje](/learn). +<div> + ```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` +``` + +</div> + +Aprenda más sobre lo que Node.js puede ofrecer con nuestros [Materiales de aprendizaje](/learn). + </section> 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 23508d5e237ae64446d80ea1580985bb6543f76d Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Wed, 18 Dec 2024 06:00:42 -0600 Subject: [PATCH 0205/1385] 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 169cbdc3b87e622a5caacef22c4de577488a6d11 Mon Sep 17 00:00:00 2001 From: Stanley Wang <stanley2058@yahoo.com.tw> Date: Thu, 19 Dec 2024 08:10:04 +0800 Subject: [PATCH 0206/1385] 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 ed481ac84f43110dfb51b0ad556b7e673935950c Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Thu, 19 Dec 2024 20:44:06 +0100 Subject: [PATCH 0207/1385] 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 <ljharb@gmail.com> Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --------- Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> Co-authored-by: Jordan Harband <ljharb@gmail.com> --- 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 53ce0b3d804fb132f0ee6dcda25a5ddbada975f1 Mon Sep 17 00:00:00 2001 From: Benjamin Gregg <benshigregg@gmail.com> Date: Fri, 20 Dec 2024 06:59:09 +0200 Subject: [PATCH 0208/1385] =?UTF-8?q?docs:=20Removed=20and=20redirected=20?= =?UTF-8?q?how-to-install-nodejs=20to=20downloads=20page=20=E2=80=A6=20(#7?= =?UTF-8?q?283)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Removed and redirected how-to-install-nodejs to downloads page (#7184) * docs: Removed i18n keys for issue (#7283) * docs: added download link to introduction-to-nodejs * Update apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> --- apps/site/navigation.json | 4 ---- .../getting-started/how-to-install-nodejs.md | 17 ----------------- .../getting-started/introduction-to-nodejs.md | 2 ++ apps/site/redirects.json | 4 ++++ packages/i18n/locales/en.json | 1 - packages/i18n/locales/fr.json | 1 - packages/i18n/locales/id.json | 1 - packages/i18n/locales/pt.json | 1 - packages/i18n/locales/tr.json | 1 - packages/i18n/locales/uk.json | 1 - packages/i18n/locales/zh-cn.json | 1 - packages/i18n/locales/zh-tw.json | 1 - 12 files changed, 6 insertions(+), 29 deletions(-) delete mode 100644 apps/site/pages/en/learn/getting-started/how-to-install-nodejs.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 75d25b24a069f..f9934575aa6b3 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -149,10 +149,6 @@ "link": "/learn/getting-started/introduction-to-nodejs", "label": "components.navigation.learn.gettingStarted.links.introductionToNodejs" }, - "howToInstallNodejs": { - "link": "/learn/getting-started/how-to-install-nodejs", - "label": "components.navigation.learn.gettingStarted.links.howToInstallNodejs" - }, "howMuchJavascriptDoYouNeedToKnowToUseNodejs": { "link": "/learn/getting-started/how-much-javascript-do-you-need-to-know-to-use-nodejs", "label": "components.navigation.learn.gettingStarted.links.howMuchJavascriptDoYouNeedToKnowToUseNodejs" diff --git a/apps/site/pages/en/learn/getting-started/how-to-install-nodejs.md b/apps/site/pages/en/learn/getting-started/how-to-install-nodejs.md deleted file mode 100644 index 9e12a36cd94f0..0000000000000 --- a/apps/site/pages/en/learn/getting-started/how-to-install-nodejs.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: How to install Node.js -layout: learn -authors: flaviocopes, ZYSzys, ollelauribostrom, MylesBorins, fhemberger, LaRuaNa, ahmadawais, benhalverson, ovflowd ---- - -# How to install Node.js - -Node.js can be installed in different ways. This post highlights the most common and convenient ones. Official packages for all the major platforms are available at [https://nodejs.org/download/](/download). - -One very convenient way to install Node.js is through a package manager. In this case, every operating system has its own. Other package managers for macOS, Linux, and Windows are listed in [https://nodejs.org/download/package-manager/](/download/package-manager/). - -`nvm` is a popular way to run Node.js. It allows you to easily switch the Node.js version, and install new versions to try and easily rollback if something breaks. It is also very useful to test your code with old Node.js versions. - -> See [https://github.com/nvm-sh/nvm](https://github.com/nvm-sh/nvm) for more information about this option. - -In any case, when Node.js is installed you'll have access to the `node` executable program in the command line. diff --git a/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md b/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md index 185b871ab79b8..c43edd32f54bf 100644 --- a/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md +++ b/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md @@ -96,3 +96,5 @@ and we close the response, adding the content as an argument to `end()`: ```js res.end('Hello World\n'); ``` + +If you haven't already done so, [download](https://nodejs.org/en/download) Node.js. diff --git a/apps/site/redirects.json b/apps/site/redirects.json index 37bcccf78a7c0..a00cf971566a0 100644 --- a/apps/site/redirects.json +++ b/apps/site/redirects.json @@ -299,6 +299,10 @@ { "source": "/:locale/learn/getting-started/nodejs-with-typescript", "destination": "/:locale/learn/typescript/introduction" + }, + { + "source": "/:locale/learn/getting-started/how-to-install-nodejs", + "destination": "/en/download/package-manager" } ], "internal": [] diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index bdde9e07dcda2..9b0197be53d91 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -30,7 +30,6 @@ "links": { "gettingStarted": "Getting Started", "introductionToNodejs": "Introduction to Node.js", - "howToInstallNodejs": "How to install Node.js", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "How much JavaScript do you need to know to use Node.js?", "differencesBetweenNodejsAndTheBrowser": "Differences between Node.js and the Browser", "theV8JavascriptEngine": "The V8 JavaScript Engine", diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index c12704b805cb8..7d0d4af7657d5 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -30,7 +30,6 @@ "links": { "gettingStarted": "Bien démarrer", "introductionToNodejs": "Introduction à Node.js", - "howToInstallNodejs": "Comment installer Node.js", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "À quel point avez-vous besoin de connaître JavaScript pour savoir utiliser Node.js ?", "differencesBetweenNodejsAndTheBrowser": "Différences entre Node.js et le navigateur", "theV8JavascriptEngine": "Le moteur JavaScript V8", diff --git a/packages/i18n/locales/id.json b/packages/i18n/locales/id.json index 811ffcdb7855f..398dd369da03a 100644 --- a/packages/i18n/locales/id.json +++ b/packages/i18n/locales/id.json @@ -30,7 +30,6 @@ "links": { "gettingStarted": "Memulai", "introductionToNodejs": "Pengantar Node.js", - "howToInstallNodejs": "Instruksi Pemasangan Node.js", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Seberapa banyak JavaScript yang anda perlu tahu untuk menggunakan Node.js?", "differencesBetweenNodejsAndTheBrowser": "Perbedaan Node.js dengan Browser", "theV8JavascriptEngine": "V8 JavaScript Engine", diff --git a/packages/i18n/locales/pt.json b/packages/i18n/locales/pt.json index 566eb15033b29..f1cee6d50be9a 100644 --- a/packages/i18n/locales/pt.json +++ b/packages/i18n/locales/pt.json @@ -28,7 +28,6 @@ "links": { "gettingStarted": "Começar", "introductionToNodejs": "Introdução ao Node.js", - "howToInstallNodejs": "Como instalar o Node.js", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Quanto JavaScript precisas de saber para usar o Node.js?", "differencesBetweenNodejsAndTheBrowser": "Diferenças entre o Node.js e o Navegador", "theV8JavascriptEngine": "O Motor de JavaScript V8", diff --git a/packages/i18n/locales/tr.json b/packages/i18n/locales/tr.json index 43d445e990a23..41d9c8ff64e9f 100644 --- a/packages/i18n/locales/tr.json +++ b/packages/i18n/locales/tr.json @@ -28,7 +28,6 @@ "links": { "gettingStarted": "Başlarken", "introductionToNodejs": "Node.js'e Giriş", - "howToInstallNodejs": "Node.js nasıl kurulur", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Node.js kullanabilmek için ne kadar JavaScript bilmelisiniz?", "differencesBetweenNodejsAndTheBrowser": "Node.js ile Tarayıcı Arasındaki Farklar", "theV8JavascriptEngine": "V8 JavaScript Motoru", diff --git a/packages/i18n/locales/uk.json b/packages/i18n/locales/uk.json index 355791b51f6b1..e420910399745 100644 --- a/packages/i18n/locales/uk.json +++ b/packages/i18n/locales/uk.json @@ -30,7 +30,6 @@ "links": { "gettingStarted": "Початок роботи", "introductionToNodejs": "Вступ до Node.js", - "howToInstallNodejs": "Як установити Node.js", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Як добре треба знати JavaScript, щоб використовувати Node.js?", "differencesBetweenNodejsAndTheBrowser": "Різниця між Node.js і браузером", "theV8JavascriptEngine": "Рушій JavaScript V8", diff --git a/packages/i18n/locales/zh-cn.json b/packages/i18n/locales/zh-cn.json index 15133a7809814..a2d6a2e890ddf 100644 --- a/packages/i18n/locales/zh-cn.json +++ b/packages/i18n/locales/zh-cn.json @@ -28,7 +28,6 @@ "links": { "gettingStarted": "快速上手", "introductionToNodejs": "Node.js 介绍", - "howToInstallNodejs": "如何安装 Node.js", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "使用Node.js需要了解多少JavaScript?", "differencesBetweenNodejsAndTheBrowser": "Node.js 与浏览器的区别", "theV8JavascriptEngine": "JavaScript V8 引擎", diff --git a/packages/i18n/locales/zh-tw.json b/packages/i18n/locales/zh-tw.json index 4d26d44eef683..1be331a1ad973 100644 --- a/packages/i18n/locales/zh-tw.json +++ b/packages/i18n/locales/zh-tw.json @@ -28,7 +28,6 @@ "links": { "gettingStarted": "開始入門", "introductionToNodejs": "Node.js 介紹", - "howToInstallNodejs": "如何安裝 Node.js", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "使用 Node.js 前,需要掌握多少 JavaScript 知識?", "differencesBetweenNodejsAndTheBrowser": "Node.js 與瀏覽器的差別", "theV8JavascriptEngine": "JavaScript V8 引擎", From d3584a13bdf6f15679b6ce9f0ec22a6d85036c7e Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Fri, 20 Dec 2024 10:01:53 -0600 Subject: [PATCH 0209/1385] feat: use localName in dropdown (#7337) --- .../components/Common/LanguageDropDown/index.stories.tsx | 6 +++--- apps/site/components/Common/LanguageDropDown/index.tsx | 8 ++++---- apps/site/components/Containers/NavBar/index.stories.tsx | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/site/components/Common/LanguageDropDown/index.stories.tsx b/apps/site/components/Common/LanguageDropDown/index.stories.tsx index 8cb9b3f37462f..2f5ac8f98f0fe 100644 --- a/apps/site/components/Common/LanguageDropDown/index.stories.tsx +++ b/apps/site/components/Common/LanguageDropDown/index.stories.tsx @@ -8,9 +8,9 @@ type Meta = MetaObj<typeof LanguageDropDown>; export const Default: Story = { args: { availableLanguages: [ - { name: 'English', code: 'en' }, - { name: 'French', code: 'fr' }, - { name: 'Spanish', code: 'es' }, + { name: 'English', code: 'en', localName: 'English' }, + { name: 'French', code: 'fr', localName: 'Français' }, + { name: 'Spanish', code: 'es', localName: 'Español' }, ], currentLanguage: 'en', }, diff --git a/apps/site/components/Common/LanguageDropDown/index.tsx b/apps/site/components/Common/LanguageDropDown/index.tsx index 9c71267746807..5c71e3c7b3450 100644 --- a/apps/site/components/Common/LanguageDropDown/index.tsx +++ b/apps/site/components/Common/LanguageDropDown/index.tsx @@ -7,7 +7,7 @@ import type { FC } from 'react'; import styles from './index.module.css'; -type SimpleLocaleConfig = Pick<LocaleConfig, 'name' | 'code'>; +type SimpleLocaleConfig = Pick<LocaleConfig, 'name' | 'code' | 'localName'>; type LanguageDropDownProps = { onChange?: (newLocale: SimpleLocaleConfig) => void; @@ -39,15 +39,15 @@ const LanguageDropdown: FC<LanguageDropDownProps> = ({ sideOffset={5} > <div> - {availableLanguages.map(({ name, code }) => ( + {availableLanguages.map(({ name, code, localName }) => ( <DropdownMenu.Item key={code} - onClick={() => onChange({ name, code })} + onClick={() => onChange({ name, code, localName })} className={classNames(styles.dropDownItem, { [styles.currentDropDown]: code === currentLanguage, })} > - {name} + {localName} </DropdownMenu.Item> ))} </div> diff --git a/apps/site/components/Containers/NavBar/index.stories.tsx b/apps/site/components/Containers/NavBar/index.stories.tsx index 33a945323fb3b..5d42306a661bc 100644 --- a/apps/site/components/Containers/NavBar/index.stories.tsx +++ b/apps/site/components/Containers/NavBar/index.stories.tsx @@ -35,9 +35,9 @@ export const Default: Story = { ], languages: { availableLanguages: [ - { name: 'English', code: 'en' }, - { name: 'French', code: 'fr' }, - { name: 'Spanish', code: 'es' }, + { name: 'English', code: 'en', localName: 'English' }, + { name: 'French', code: 'fr', localName: 'Français' }, + { name: 'Spanish', code: 'es', localName: 'Español' }, ], currentLanguage: 'en', }, From d41673c8894a58b4c6514c7bb3002c0f3ca542e5 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Fri, 20 Dec 2024 17:19:22 +0100 Subject: [PATCH 0210/1385] meta(codeowners): add typescript to learn section (#7338) --- CODEOWNERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CODEOWNERS b/CODEOWNERS index 3b27db769a6cb..a4ff53b442cec 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -22,4 +22,6 @@ crowdin.yml @nodejs/web-infra apps/site/redirects.json @nodejs/web-infra apps/site/site.json @nodejs/web-infra +# Specific content apps/site/pages/en/learn/getting-started/security-best-practices.md @nodejs/security-wg +apps/site/pages/en/learn/typescript @nodejs/typescript From d687927791a0f6eea43e536674d1395058edab0e Mon Sep 17 00:00:00 2001 From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Date: Sat, 21 Dec 2024 15:08:30 +0000 Subject: [PATCH 0211/1385] feat(learn): add Package Configuration article (#7229) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(learn): add Package Configuration article * fixup!: add authorship * fixup!: makeshift footnotes to md footnotes * fixup!: add a "general notes" section * fixup!: remove/update outdated info * fixup!: tidy & simplify examples * fixup!: "This is rarely a good idea" * fixup!: add missing con for dual-package hazard * fixup!: add note about potentially no need for package config * fixup!: "me" → "us" * fixup!: add `"default"` & `"node"` alternatives * fixup!: correct footnote refs * fixup!: list esm-only dist for consumption via `require()` add note about require(esm) * fixup!: "Pick your poison" → "Pick your fix" * fixup!: remove errant "with" * fixup!: alphabetical order unordered items * fixup!: include `22.12.0` in support for `require(esm)` * fixup!: add not recommended note to cjs with esm wrapper * fixup!: add minimal vs advanced/verbose examples * fixup!: add note to top "pick your fix" section for `require(esm)` * fixup!: remove "footnotes" (it gets automatically added?) * fixup!: correct sequence of `"default"` within `"exports"` * fixup!: apply suggestions from code review Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Co-authored-by: Joyee Cheung <joyeec9h3@gmail.com> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: correct example Co-authored-by: Joyee Cheung <joyeec9h3@gmail.com> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: wordsmith note about cjs exports reassignment Co-authored-by: Joyee Cheung <joyeec9h3@gmail.com> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: provide explanation about CJS exports static analysis Co-authored-by: Joyee Cheung <joyeec9h3@gmail.com> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: wordsmith `cjs-with-wrapper-dual-distro` explanation Co-authored-by: Joyee Cheung <joyeec9h3@gmail.com> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: clarify ESM wrapper usefulness Co-authored-by: Joyee Cheung <joyeec9h3@gmail.com> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: link to commonjs wiki * fixup!: add live bindings caveat * fixup!: document the dual-package hazard * fixup!: explain pjson `"type"` * fixup!: re-organise article & remove drink references * fixup!: convert to mdx * fixup!: remove missed drinks * fixup!: rename to "publishing a package" * fixup!: move "general notes" to bottom * fixup!: wordsmith * fixup!: move pros/cons after examples * fixup!: explain "attach onto `exports`" * fixup!: temp restore examples repo --------- Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Co-authored-by: Claudio W <cwunder@gnome.org> Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Co-authored-by: Joyee Cheung <joyeec9h3@gmail.com> --- apps/site/navigation.json | 4 + .../en/learn/modules/publishing-a-package.mdx | 597 ++++++++++++++++++ packages/i18n/locales/en.json | 1 + 3 files changed, 602 insertions(+) create mode 100644 apps/site/pages/en/learn/modules/publishing-a-package.mdx diff --git a/apps/site/navigation.json b/apps/site/navigation.json index f9934575aa6b3..8f7fd86cf6c0c 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -314,6 +314,10 @@ "modules": { "label": "components.navigation.learn.modules.links.modules", "items": { + "publishingAPackage": { + "link": "/learn/modules/publishing-a-package", + "label": "components.navigation.learn.modules.links.publishingAPackage" + }, "publishingNodeApiModules": { "link": "/learn/modules/publishing-node-api-modules", "label": "components.navigation.learn.modules.links.publishingNodeApiModules" diff --git a/apps/site/pages/en/learn/modules/publishing-a-package.mdx b/apps/site/pages/en/learn/modules/publishing-a-package.mdx new file mode 100644 index 0000000000000..5c0b82e6f89dc --- /dev/null +++ b/apps/site/pages/en/learn/modules/publishing-a-package.mdx @@ -0,0 +1,597 @@ +--- +title: Publishing a package +layout: learn +authors: JakobJingleheimer +--- + +# Publishing a package + +All the provided `package.json` configurations (not specifically marked “does not work”) work in Node.js 12.22.x (v12 latest, the oldest supported line) and 17.2.0 (current latest at the time)[^1], and for grins, with webpack 5.53.0 and 5.63.0 respectively. These are available: [JakobJingleheimer/nodejs-module-config-examples](https://github.com/JakobJingleheimer/nodejs-module-config-examples). + +For curious cats, [How did we get here](#how-did-we-get-here) and [Down the rabbit-hole](#down-the-rabbithole) provide background and deeper explanations. + +## Pick your fix + +There are 2 main options, which cover almost all use-cases: + +- Write source code and publish in CJS (you use `require()`); CJS is consumable by both CJS and ESM (in all versions of node). Skip to [CJS source and distribution](#cjs-source-and-distribution). +- Write source code and publish in ESM (you use `import`, and don't use top-level `await`); ESM is consumable by both ESM and CJS (in node 22.x and 23.x; see [`require()` an ES Module](https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require)). Skip to [ESM source and distribution](#esm-source-and-distribution). + +It's generally best to publish only 1 format, either CJS _or_ ESM. Not both. Publishing multiple formats can result in the [dual-package hazard](#the-dual-package-hazard), as well as other drawbacks. + +There are other options available, mostly for historical purposes. + +<table> + <thead> + <tr> + <th>You as a package author write</th> + <th>Consumers of your package write their code in</th> + <th>Your options</th> + </tr> + </thead> + + <tbody> + <tr> + <td rowSpan="2">CJS source code using <code>require()</code></td> + <td>ESM: consumers <code>import</code> your package</td> + <td><a href="#cjs-source-and-only-esm-distribution">CJS source and only ESM distribution</a></td> + </tr> + <tr> + <td>CJS & ESM: consumers either <code>require()</code> or <code>import</code> your package</td> + <td><a href="#cjs-source-and-both-cjs-amp-esm-distribution">CJS source and both CJS & ESM distribution</a></td> + </tr> + <tr> + <td rowSpan="2">ESM source code using <code>import</code></td> + <td>CJS: consumers <code>require()</code> your package (and you use top-level <code>await</code>)</td> + <td><a href="#esm-source-with-only-cjs-distribution">ESM source with only CJS distribution</a></td> + </tr> + <tr> + <td>CJS & ESM: consumers either <code>require()</code> or <code>import</code> your package</td> + <td><a href="#esm-source-and-both-cjs-amp-esm-distribution">ESM source and both CJS & ESM distribution</a></td> + </tr> + </tbody> +</table> + +### CJS source and distribution + +The most minimal configuration may be only [`"name"`](https://nodejs.org/api/packages.html#name). But the less arcane, the better: Essentially just declare the package’s exports via the `"exports"` field/field-set. + +**Working example**: [cjs-with-cjs-distro](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/cjs/cjs-distro) + +```json displayName="Minimal package.json" +{ + "name": "cjs-source-and-distribution" + // "main": "./index.js" +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "cjs-source-and-distribution", + "type": "commonjs", // current default, but may change + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": "./dist/index.js", + "./package.json": "./package.json" + } +} +``` + +Note that `packageJson.exports["."] = filepath` is shorthand for `packageJson.exports["."].default = filepath` + +### ESM source and distribution + +Simple, tried, and true. + +Note that since Node.js v23.0.0, it is possible to `require` static ESM (code that does not use top-level `await`). See [Loading ECMAScript modules using `require()`](https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require) for details. + +This is almost exactly the same as the CJS-CJS configuration above with 1 small difference: the [`"type"`](https://nodejs.org/api/packages.html#type) field. + +**Working example**: [esm-with-esm-distro](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/esm/esm-distro) + +```json displayName="Minimal package.json" +{ + "name": "esm-source-and-distribution", + "type": "module" + // "main": "./index.js" +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "esm-source-and-distribution", + "type": "module", + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": "./dist/index.js", + "./package.json": "./package.json" + } +} +``` + +Note that ESM now _is_ “backwards” compatible with CJS: a CJS module now _can_ [`require()` an ES Module](https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require) without a flag as of 23.0.0 and 22.12.0. + +### CJS source and only ESM distribution + +This takes a small bit of finesse but is also pretty straight-forward. This may be the choice pick of older projects targetting newer standards, or authors who merely prefer CJS but are publishing for a different environment. + +**Working example**: [cjs-with-esm-distro](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/cjs/esm-distro) + +```json displayName="Minimal package.json" +{ + "name": "cjs-source-with-esm-distribution", + "main": "./dist/index.mjs" +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "cjs-source-with-esm-distribution", + "type": "commonjs", // current default, but may change + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": "./dist/index.mjs", + "./package.json": "./package.json" + } +} +``` + +The [`.mjs`](https://nodejs.org/api/esm.html#enabling) file extension is a trump-card: it will override **any** other configuration and the file will be treated as ESM. Using this file extension is necessary because `packageJson.exports.import` does **NOT** signify that the file is ESM (contrary to common, if not universal, misperception), only that it is the file to be used when the package is imported (ESM _can_ import CJS. See [Gotchas](#gotchas) below). + +### CJS source and both CJS & ESM distribution + +In order to _directly_ supply both audiences (so that your distribution works "natively" in either), you have a few options: + +#### Attach named exports directly onto `exports` + +Classic but takes some sophistication and finesse. This means adding properties onto the existing `module.exports` (instead of re-assigning `module.exports` as a whole). + +**Working example**: [cjs-with-dual-distro (properties)](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/cjs/dual/property-distro) + +```json displayName="Minimal package.json" +{ + "name": "cjs-source-with-esm-via-properties-distribution", + "main": "./dist/cjs/index.js" +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "cjs-source-with-esm-via-properties-distribution", + "type": "commonjs", // current default, but may change + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": "./dist/cjs/index.js", + "./package.json": "./package.json" + } +} +``` + +Pros: + +- Smaller package weight +- Easy and simple (probably least effort if you don't mind keeping to a minor syntax stipulation) +- Precludes [the Dual-Package Hazard](#the-dual-package-hazard) + +Cons: + +- Requires very specific syntax (either in source code and/or bundler gymnastics). + +Sometimes, a CJS module may re-assign `module.exports` to something else (be it an object or a function) like this: + +```cjs +const someObject = { + foo() {}, + bar() {}, + qux() {}, +}; + +module.exports = someObject; +``` + +Node.js detects the named exports in CJS via [static analysis that look for certain patterns](https://github.com/nodejs/cjs-module-lexer/tree/main?tab=readme-ov-file#parsing-examples), which the example above evades. To make the named exports detectable, do this: + +```cjs +module.exports.foo = function foo() {}; +module.exports.bar = function bar() {}; +module.exports.qux = function qux() {}; +``` + +#### Use a simple ESM wrapper + +Complicated setup and difficult to get the balance right. + +**Working example**: [cjs-with-dual-distro (wrapper)](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/cjs/dual/wrapper-distro) + +```json displayName="Minimal package.json" +{ + "name": "cjs-with-wrapper-dual-distro", + "exports": { + ".": { + "import": "./dist/esm/wrapper.mjs", + "require": "./dist/cjs/index.js", + "default": "./dist/cjs/index.js" + } + } +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "cjs-with-wrapper-dual-distro", + "type": "commonjs", + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": { + "import": "./dist/esm/wrapper.mjs", + "require": "./dist/cjs/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./package.json" + } +} +``` + +Pros: + +- Smaller package weight + +Cons: + +- Likely requires complicated bundler gymnastics (we could not find any existing option to automate this in Webpack). + +When the CJS output from the bundler evades the named exports detection in Node.js, a ESM wrapper can be used to explicitly re-export the known named exports for ESM consumers. + +When CJS exports an object (which gets aliased to ESM's `default`), you can save references to all the members of the object locally in the wrapper, and then re-export them so the ESM consumer can access all of them by name. + +```js displayName="./dist/esm/wrapper.mjs" +import cjs from '../cjs/index.js'; + +const { a, b, c /* … */ } = cjs; + +export { a, b, c /* … */ }; +``` + +**However**, this does break live bindings: a reassignment to `cjs.a` will not reflect in `esmWrapper.a`. + +#### Two full distributions + +Chuck in a bunch of stuff and hope for the best. This is probably the most common and easiest of the CJS to CJS & ESM options, but you pay for it. This is rarely a good idea. + +**Working example**: [cjs-with-dual-distro (double)](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/cjs/dual/double-distro) + +```json displayName="Minimal package.json" +{ + "name": "cjs-with-full-dual-distro", + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js", + "default": "./dist/cjs/index.js" + } + } +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "cjs-with-full-dual-distro", + "type": "commonjs", + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./package.json" + } +} +``` + +Pros: + +- Simple bundler configuration + +Cons: + +- Larger package weight (basically double) +- Vulnerable to [the Dual-Package Hazard](#the-dual-package-hazard) + +Alternatively, you can use `"default"` and `"node"` keys, which are less counter-intuitive: Node.js will always choose the `"node"` option (which always works), and non-Node.js tooling will choose `"default"` when configured to target something other than node. **This precludes the dual-package hazard.** + +```json displayName="Minimal package.json" +{ + "name": "cjs-with-alt-full-dual-distro", + "exports": { + ".": { + "node": "./dist/cjs/index.js", + "default": "./dist/esm/index.mjs" + } + } +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "cjs-with-alt-full-dual-distro", + "type": "commonjs", + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": { + "node": "./dist/cjs/index.js", + "default": "./dist/esm/index.mjs" + }, + "./package.json": "./package.json" + } +} +``` + +### ESM source with only CJS distribution + +We're not in Kansas anymore, Toto. + +The configurations (there are 2 options) are nearly the same as [ESM source and both CJS & ESM distribution](#esm-source-and-both-cjs-amp-esm-distribution), just exclude `packageJson.exports.import`. + +💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbithole) and [Gotchas](#gotchas) below. + +**Working example**: [esm-with-cjs-distro](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/esm/cjs-distro) + +### ESM source and both CJS & ESM distribution + +When source code is written in non-JavaScript (ex TypeScript), options can be limited due to needing to use file extension(s) specific to that language (ex `.ts`) and there may be no `.mjs` equivalent. + +Similar to [CJS source and both CJS & ESM distribution](#cjs-source-and-both-cjs-amp-esm-distribution), you have the same options. + +#### Publish only a CJS distribution with property exports + +Tricky to make and needs good ingredients. + +This option is almost identical to the [CJS source with CJS & ESM distribution's property exports](#attach-named-exports-directly-onto-raw-exports-endraw-) above. The only difference is in package.json: `"type": "module"`. + +Only some build tools support generating this output. [Rollup](https://www.rollupjs.org/) produces compatible output out of the box when targetting commonjs. Webpack as of [v5.66.0+](https://github.com/webpack/webpack/releases/tag/v5.66.0) does with the new [`commonjs-static`](https://webpack.js.org/configuration/output/#type-commonjs-static) output type, (prior to this, no commonjs options produces compatible output). It is not currently possible with [esbuild](https://esbuild.github.io/) (which produces a non-static `exports`). + +The working example below was created prior to Webpack's recent release, so it uses Rollup (I'll get around to adding a Webpack option too). + +These examples assume javascript files within use the extension `.js`; `"type"` in `package.json` controls how those are interpreted: + +`"type":"commonjs"` + `.js` → `cjs`<br /> +`"type":"module"` + `.js` → `mjs` + +If your files explicitly _all_ use `.cjs` and/or `.mjs` file extensions (none use `.js`), `"type"` is superfluous. + +**Working example**: [esm-with-cjs-distro](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/esm/dual/property-distro) + +```json displayName="Minimal package.json" +{ + "name": "esm-with-cjs-distribution", + "type": "module", + "main": "./dist/index.cjs" +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "esm-with-cjs-distribution", + "type": "module", + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": "./dist/index.cjs", + "./package.json": "./package.json" + } +} +``` + +💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbithole) and [Gotchas](#gotchas) below. + +#### Publish a CJS distribution with an ESM wrapper + +There's a lot going on here, and this is usually not the best. + +This is also almost identical to the [CJS source and dual distribution using an ESM wrapper](#use-a-simple-esm-wrapper), but with subtle differences `"type": "module"` and some `.cjs` file extenions in package.json. + +**Working example**: [esm-with-dual-distro (wrapper)](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/esm/dual/wrapper-distro) + +```json displayName="Minimal package.json" +{ + "name": "esm-with-cjs-and-esm-wrapper-distribution", + "type": "module", + "exports": { + ".": { + "import": "./dist/esm/wrapper.js", + "require": "./dist/cjs/index.cjs", + "default": "./dist/cjs/index.cjs" + } + } +} +``` + +```json displayName="Advanced (verbose) package.json" +{ + "name": "esm-with-cjs-and-esm-wrapper-distribution", + "type": "module", + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": { + "import": "./dist/esm/wrapper.js", + "require": "./dist/cjs/index.cjs", + "default": "./dist/cjs/index.cjs" + }, + "./package.json": "./package.json" + } +} +``` + +💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbithole) and [Gotchas](#gotchas) below. + +#### Publish both full CJS & ESM distributions + +Chuck in a bunch of stuff (with a surprise) and hope for the best. This is probably the most common and easiest of the ESM to CJS & ESM options, but you pay for it. This is rarely a good idea. + +In terms of package configuration, there are a few options that differ mostly in personal preference. + +##### Mark the whole package as ESM and specifically mark the CJS exports as CJS via the `.cjs` file extension + +This option has the least burden on development/developer experience. + +This also means that whatever build tooling must produce the distribution file with a `.cjs` file extension. This might necessitate chaining multiple build tools or adding a subsequent step to move/rename the file to have the `.cjs` file extension (ex `mv ./dist/index.js ./dist/index.cjs`). This can be worked around by adding a subsequent step to move/rename those outputted files (ex [Rollup](https://rollupjs.org/) or [a simple shell script](https://stackoverflow.com/q/21985492)). + +Support for the `.cjs` file extension was added in 12.0.0, and using it will cause ESM to properly recognised a file as commonjs (`import { foo } from './foo.cjs'` works). However, `require()` does not auto-resolve `.cjs` like it does for `.js`, so file extension cannot be omitted as is commonplace in commonjs: `require('./foo')` will fail, but `require('./foo.cjs')` works. Using it in your package's exports has no drawbacks: `packageJson.exports` (and `packageJson.main`) requires a file extension regardless, and consumers reference your package by the `"name"` field of your package.json (so they're blissfully unaware). + +**Working example**: [esm-with-dual-distro](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/esm/dual/double-distro) + +```json displayName="Minimal import & require package.json" +{ + "type": "module", + "exports": { + ".": { + "import": "./dist/esm/index.js", + "require": "./dist/index.cjs" + } + } +} +``` + +```json displayName="Advanced (verbose) import & require package.json" +{ + "type": "module", + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": { + "import": "./dist/esm/index.js", + "require": "./dist/index.cjs" + }, + "./package.json": "./package.json" + } +} +``` + +Alternatively, you can use `"default"` and `"node"` keys, which are less counter-intuitive: Node.js will always choose the `"node"` option (which always works), and non-Node.js tooling will choose `"default"` when configured to target something other than node. **This precludes the dual-package hazard.** + +```json displayName="Minimal default & node package.json" +{ + "type": "module", + "exports": { + ".": { + "node": "./dist/index.cjs", + "default": "./dist/esm/index.js" + } + } +} +``` + +```json displayName="Advanced (verbose) default & node package.json" +{ + "type": "module", + "engines": { "node": ">=12.22.7" }, + "exports": { + ".": { + "node": "./dist/index.cjs", + "default": "./dist/esm/index.js" + }, + "./package.json": "./package.json" + } +} +``` + +💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbithole) and [Gotchas](#gotchas) below. + +##### Use the `.mjs` (or equivalent) file extension for all source code files + +The configuration for this is the same as [CJS source and both CJS & ESM distribution](#cjs-source-and-both-cjs-amp-esm-distribution). + +**Non-JavaScript source code**: The non-JavaScript language’s own configuration needs to recognise/specify that the input files are ESM. + +#### Node.js before 12.22.x + +🛑 You should not do this: Versions of Node.js prior to 12.x are End of Life and are now vulnerable to serious security exploits. + +If you're a security researcher needing to investigate Node.js prior to v12.22.x, feel free to contact us for help configuring. + +## General notes + +[Syntax detection](https://nodejs.org/api/packages.html#syntax-detection) is _**not**_ a replacement for proper package configuration; syntax detection is not fool-proof and it has [significant performance cost](https://github.com/nodejs/node/pull/55238). + +When using [`"exports"`](https://nodejs.org/api/packages.html#conditional-exports) in package.json, it is generally a good idea to include `"./package.json": "./package.json"` so that it can be imported ([`module.findPackageJSON`](https://nodejs.org/api/module.html#modulefindpackagejsonspecifier-base) is not affected by this limitation, but `import` may be more convenient). + +`"exports"` can be advisable over [`"main"`](https://nodejs.org/api/packages.html#main) because it prevents external access to internal code (so you can be relatively sure users are not depending on things they shouldn't). If you don't need that, `"main"` is simpler and may be a better option for you. + +The `"engines"` field provides both a human-friendly and a machine-friendly indication of which version(s) of Node.js the package is compatible. Depending on the package manager used, an exception may be thrown causing the installation to fail when the consumer is using an incompatible version of Node.js (which can be very helpful to consumers). Including this field will save a lot of headache for consumers with an older version of Node.js who cannot use the package. + +## Down the rabbit-hole + +Specifically in relation to Node.js, there are 4 problems to solve: + +- Determining format of source code files (author running her/his own code) +- Determining format of distribution files (code consumers will receive) + +- Publicising distribution code for when it is `require()`’d (consumer expects CJS) +- Publicising distribution code for when it is `import`’d (consumer probably wants ESM) + +⚠️ The first 2 are **independent** of the last 2. + +The method of loading does NOT determine the format the file is interpreted as: + +- **package.json’s** **`exports.require`** **≠** **`CJS`**. `require()` does NOT and cannot blindly interpret the file as CJS; for instance, `require('foo.json')` correctly interprets the file as JSON, not CJS. The module containing the `require()` call of course must be CJS, but what it is loading is not necessarily also CJS. +- **package.json’s** **`exports.import`** **≠** **`ESM`**. `import` similarly does NOT and cannot blindly interpret the file as ESM; `import` can load CJS, JSON, and WASM, as well as ESM. The module containing the `import` statement of course must be ESM, but what it is loading is not necessarily also ESM. + +So when you see configuration options citing or named with `require` or `import`, resist the urge to assume they are for _determining_ CJS vs ES Modules. + +⚠️ Adding an `"exports"` field/field-set to a package’s configuration effectively [blocks deep pathing into the package](https://nodejs.org/api/packages.html#package-entry-points) for anything not explicitly listed in the exports’ subpathing. This means it can be a breaking change. + +⚠️ Consider carefully whether to distribute both CJS and ESM: It creates the potential for the [Dual Package Hazard](#the-dual-package-hazard) (especially if misconfigured and the consumer tries to get clever). This can lead to an extremely confusing bug in consuming projects, especially when your package is not perfectly configured. Consumers can even be blind-sided by an intermediary package that uses the "other" format of your package (eg consumer uses the ESM distribution, and some other package the consumer is also using itself uses the CJS distribution). If your package is in any way stateful, consuming both the CJS and ESM distributions will result in parallel states (which is almost surely unintentional). + +### The dual-package hazard + +When an application is using a package that provides both CommonJS and ES module sources, there is a risk of certain bugs if both instances of the package get loaded. This potential comes from the fact that the `pkgInstance` created by `const pkgInstance = require('pkg')` is not the same as the `pkgInstance` created by `import pkgInstance from 'pkg'` (or an alternative main path like `'pkg/module'`). This is the “dual package hazard”, where two instances of the same package can be loaded within the same runtime environment. While it is unlikely that an application or package would intentionally load both instances directly, it is common for an application to load one copy while a dependency of the application loads the other copy. This hazard can happen because Node.js supports intermixing CommonJS and ES modules, and can lead to unexpected and confusing behavior. + +If the package main export is a constructor, an `instanceof` comparison of instances created by the two copies returns `false`, and if the export is an object, properties added to one (like `pkgInstance.foo = 3`) are not present on the other. This differs from how `import` and `require` statements work in all-CommonJS or all-ES module environments, respectively, and therefore is surprising to users. It also differs from the behavior users are familiar with when using transpilation via tools like [Babel](https://babeljs.io/) or [`esm`](https://github.com/standard-things/esm#readme). + +### How did we get here + +[CommonJS (CJS)](https://wiki.commonjs.org/wiki/Modules) was created _long_ before ECMAScript Modules (ESM), back when JavaScript was still adolescent—CJS and jQuery were created just 3 years apart. CJS is not an official ([TC39](https://tc39.es)) standard and is supported by a limited few platforms (most notably, Node.js). ESM as a standard has been incoming for several years; it is currently supported by all major platforms (browsers, Deno, Node.js, etc), meaning it will run pretty much everywhere. As it became clear ESM would effectively succeed CJS (which is still very popular and widespread), many attempted to adopt early on, often before a particular aspect of the ESM specification was finalised. Because of this, those changed over time as better information became available (often informed by learnings/experiences of those eager beavers), going from best-guess to the aligning with the specification. + +An additional complication is bundlers, which historically managed much of this territory. However, much of what we previously needed bundle(r)s to manage is now native functionality; yet bundlers are still (and likely always will be) necessary for some things. Unfortunately, functionality bundlers no-longer need to provide is deeply ingrained in older bundlers’ implementations, so they can at times be too helpful, and in some cases, anti-pattern (bundling a library is often not recommended by bundler authors themselves). The hows and whys of that are an article unto itself. + +## Gotchas + +The `package.json`'s `"type"` field changes the `.js` file extension to mean either `commonjs` or ES `module` respectively. It is very common in dual/mixed packages (that contain both CJS and ESM) to use this field incorrectly. + +```json displayName="⚠️ THIS DOES NOT WORK" +{ + "type": "module", + "main": "./dist/CJS/index.js", + "exports": { + ".": { + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./package.json" + } +} +``` + +This does not work because `"type": "module"` causes `packageJson.main`, `packageJson.exports["."].require`, and `packageJson.exports["."].default` to get interpreted as ESM (but they’re actually CJS). + +Excluding `"type": "module"` produces the opposite problem: + +```json displayName="⚠️ THIS DOES NOT WORK" +{ + "main": "./dist/CJS/index.js", + "exports": { + ".": { + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./package.json" + } +} +``` + +This does not work because `packageJson.exports["."].import` will get interpreted as CJS (but it’s actually ESM). + +[^1]: There was a bug in Node.js v13.0–13.6 where `packageJson.exports["."]` had to be an array with verbose config options as the first item (as an object) and the “default” as the second item (as a string). See [nodejs/modules#446](https://github.com/nodejs/modules/issues/446). + +[^2]: The `"type"` field in package.json changes what the `.js` file extension means, similar to to an [HTML script element’s type attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-type). diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 9b0197be53d91..5d57a40873144 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -90,6 +90,7 @@ "modules": { "links": { "modules": "Modules", + "publishingAPackage": "Publishing a package", "publishingNodeApiModules": "How to publish a Node-API package", "anatomyOfAnHttpTransaction": "Anatomy of an HTTP Transaction", "abiStability": "ABI Stability", From 56cdefb6961ea66e4f9a5f11ff61f6254471fde1 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Mon, 23 Dec 2024 12:36:52 +0100 Subject: [PATCH 0212/1385] content(learn cli): make up to date (#7307) * content(learn cli): WIP * content(learn cli): introduce * content(learn cli): add link * content(learn cli): fix link * content(learn cli): add shebang link * content(learn cli): clarify process global object * content(learn cli): fix * fix: code format * fix typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> * rephrase sentences Co-authored-by: Ruy Adorno <ruyadorno@google.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> --------- Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ruy Adorno <ruyadorno@google.com> --- ...t-input-from-the-command-line-in-nodejs.md | 44 +-------------- ...-read-environment-variables-from-nodejs.md | 11 +++- .../how-to-use-the-nodejs-repl.md | 14 ++++- ...output-to-the-command-line-using-nodejs.md | 54 ++++++++----------- ...un-nodejs-scripts-from-the-command-line.md | 54 +++++++++++++++++-- 5 files changed, 93 insertions(+), 84 deletions(-) diff --git a/apps/site/pages/en/learn/command-line/accept-input-from-the-command-line-in-nodejs.md b/apps/site/pages/en/learn/command-line/accept-input-from-the-command-line-in-nodejs.md index 99a040434ca79..0fc85bc6fc5b1 100644 --- a/apps/site/pages/en/learn/command-line/accept-input-from-the-command-line-in-nodejs.md +++ b/apps/site/pages/en/learn/command-line/accept-input-from-the-command-line-in-nodejs.md @@ -8,7 +8,7 @@ authors: flaviocopes, MylesBorins, fhemberger, LaRuaNa, ahmadawais How to make a Node.js CLI program interactive? -Node.js since version 7 provides the [`readline` module](https://nodejs.org/api/readline.html) to perform exactly this: get input from a readable stream such as the `process.stdin` stream, which during the execution of a Node.js program is the terminal input, one line at a time. +Node.js since version 7 provides the [`readline` module](https://nodejs.org/docs/latest-v22.x/api/readline.html) to perform exactly this: get input from a readable stream such as the `process.stdin` stream, which during the execution of a Node.js program is the terminal input, one line at a time. ```cjs const readline = require('node:readline'); @@ -47,45 +47,3 @@ In this callback function, we close the readline interface. `readline` offers several other methods, please check them out on the package documentation linked above. If you need to require a password, it's best not to echo it back, but instead show a `*` symbol. - -The simplest way is to use the [`readline-sync` package](https://www.npmjs.com/package/readline-sync) which is very similar in terms of the API and handles this out of the box. - -A more complete and abstract solution is provided by the [Inquirer.js package](https://github.com/SBoudrias/Inquirer.js). - -You can install it using `npm install inquirer`, and then you can replicate the above code like this: - -```cjs -const inquirer = require('inquirer'); - -const questions = [ - { - type: 'input', - name: 'name', - message: "What's your name?", - }, -]; - -inquirer.prompt(questions).then(answers => { - console.log(`Hi ${answers.name}!`); -}); -``` - -```mjs -import inquirer from 'inquirer'; - -const questions = [ - { - type: 'input', - name: 'name', - message: "What's your name?", - }, -]; - -inquirer.prompt(questions).then(answers => { - console.log(`Hi ${answers.name}!`); -}); -``` - -Inquirer.js lets you do many things like asking multiple choices, having radio buttons, confirmations, and more. - -It's worth knowing all the alternatives, especially the built-in ones provided by Node.js, but if you plan to take CLI input to the next level, Inquirer.js is an optimal choice. diff --git a/apps/site/pages/en/learn/command-line/how-to-read-environment-variables-from-nodejs.md b/apps/site/pages/en/learn/command-line/how-to-read-environment-variables-from-nodejs.md index 17bef93701006..d4d84c6c2e04d 100644 --- a/apps/site/pages/en/learn/command-line/how-to-read-environment-variables-from-nodejs.md +++ b/apps/site/pages/en/learn/command-line/how-to-read-environment-variables-from-nodejs.md @@ -16,7 +16,7 @@ USER_ID=239482 USER_KEY=foobar node app.js That will pass the user `USER_ID` as **239482** and the `USER_KEY` as **foobar**. This is suitable for testing, however for production, you will probably be configuring some bash scripts to export variables. -> Note: `process` does not require a "require", it's automatically available. +> Note: `process` does not need to be imported, it is a global object in Node.js. Here is an example that accesses the `USER_ID` and `USER_KEY` environment variables, which we set in above code. @@ -27,7 +27,7 @@ process.env.USER_KEY; // "foobar" In the same way you can access any custom environment variable you set. -Node.js 20 introduced **experimental** [support for .env files](https://nodejs.org/dist/latest-v20.x/docs/api/cli.html#--env-fileconfig). +Node.js 20 introduced **experimental** [support for .env files](https://nodejs.org/dist/latest-v22.x/docs/api/cli.html#--env-fileconfig). Now, you can use the `--env-file` flag to specify an environment file when running your Node.js application. Here's an example `.env` file and how to access its variables using `process.env`. @@ -57,3 +57,10 @@ node --env-file=.env --env-file=.development.env app.js ``` > Note: if the same variable is defined in the environment and in the file, the value from the environment takes precedence. + +In case you want to optionally read from a `.env` file, it's possible to avoid +throwing an error if the file is missing using the `--env-file-if-exists` flag. + +```bash +node --env-file-if-exists=.env app.js +``` diff --git a/apps/site/pages/en/learn/command-line/how-to-use-the-nodejs-repl.md b/apps/site/pages/en/learn/command-line/how-to-use-the-nodejs-repl.md index 99c84bf0260c6..f29a61d91db63 100644 --- a/apps/site/pages/en/learn/command-line/how-to-use-the-nodejs-repl.md +++ b/apps/site/pages/en/learn/command-line/how-to-use-the-nodejs-repl.md @@ -1,11 +1,17 @@ --- title: How to use the Node.js REPL layout: learn -authors: flaviocopes, MylesBorins, fhemberger, LaRuaNa, ahmadawais, vaishnav-mk +authors: flaviocopes, MylesBorins, fhemberger, LaRuaNa, ahmadawais, vaishnav-mk, AugustinMauyroy --- # How to use the Node.js REPL +## What is the Node.js REPL? + +Node.js comes with a built-in REPL (Read-Eval-Print Loop) environment that allows you to execute JavaScript code interactively. The REPL is accessible through the terminal and is a great way to test out small pieces of code. + +## How to use the Node.js REPL + The `node` command is the one we use to run our Node.js scripts: ```bash @@ -112,10 +118,14 @@ If you type `.break` at the end of a line, the multiline mode will stop and the We can import the REPL in a JavaScript file using `repl`. -```js +```cjs const repl = require('node:repl'); ``` +```mjs +import repl from 'node:repl'; +``` + Using the repl variable we can perform various operations. To start the REPL command prompt, type in the following line diff --git a/apps/site/pages/en/learn/command-line/output-to-the-command-line-using-nodejs.md b/apps/site/pages/en/learn/command-line/output-to-the-command-line-using-nodejs.md index 294ea5056c837..6362249f7ece9 100644 --- a/apps/site/pages/en/learn/command-line/output-to-the-command-line-using-nodejs.md +++ b/apps/site/pages/en/learn/command-line/output-to-the-command-line-using-nodejs.md @@ -1,14 +1,14 @@ --- title: Output to the command line using Node.js layout: learn -authors: flaviocopes, potch, MylesBorins, fhemberger, LaRuaNa, amiller-gh, ahmadawais +authors: flaviocopes, potch, MylesBorins, fhemberger, LaRuaNa, amiller-gh, ahmadawais, AugustinMauroy --- # Output to the command line using Node.js ### Basic output using the console module -Node.js provides a [`console` module](https://nodejs.org/api/console.html) which provides tons of very useful ways to interact with the command line. +Node.js provides a [`console` module](https://nodejs.org/docs/latest-v22.x/api/console.html) which provides tons of very useful ways to interact with the command line. It is basically the same as the `console` object you find in the browser. @@ -21,6 +21,7 @@ You can pass multiple variables to `console.log`, for example: ```js const x = 'x'; const y = 'y'; + console.log(x, y); ``` @@ -168,44 +169,31 @@ It will not appear in the console, but it will appear in the error log. ### Color the output -You can color the output of your text in the console by using [escape sequences](https://gist.github.com/iamnewton/8754917). An escape sequence is a set of characters that identifies a color. - -Example: - -```js -console.log('\x1b[33m%s\x1b[0m', 'hi!'); -``` - -You can try that in the Node.js REPL, and it will print `hi!` in yellow. +> **NOTE** +> This part of the resource is designed with version 22.11 which notes `styleText` as ‘Active development’. -However, this is the low-level way to do this. The simplest way to go about coloring the console output is by using a library. [Chalk](https://github.com/chalk/chalk) is such a library, and in addition to coloring it also helps with other styling facilities, like making text bold, italic or underlined. +In many cases, you will be tempted to paste certain text to get a nice output at the terminal. -You install it with `npm install chalk`, then you can use it: +There is a `styleText` function provided by the `node:util` module. Let's discover how to use it. -```js -const chalk = require('chalk'); +First of all, you need to import the `styleText` function from the `node:util` module: -console.log(chalk.yellow('hi!')); +```mjs +import { styleText } from 'node:util'; ``` -Using `chalk.yellow` is much more convenient than trying to remember the escape codes, and the code is much more readable. - -Check the project link posted above for more usage examples. - -### Create a progress bar - -[Progress](https://www.npmjs.com/package/progress) is an awesome package to create a progress bar in the console. Install it using `npm install progress` +```cjs +const { styleText } = require('node:util'); +``` -This snippet creates a 10-step progress bar, and every 100ms one step is completed. When the bar completes we clear the interval: +Then, you can use it to style your text: ```js -const ProgressBar = require('progress'); - -const bar = new ProgressBar(':bar', { total: 10 }); -const timer = setInterval(() => { - bar.tick(); - if (bar.complete) { - clearInterval(timer); - } -}, 100); +console.log( + styleText(['red'], 'This is red text ') + + styleText(['green, bold'], 'and this is green bold text ') + + 'this is normal text' +); ``` + +The first argument is an array of styles, and the second argument is the text you want to style. We invite you to read [the docs](https://nodejs.org/docs/latest-v22.x/api/util.html#utilstyletextformat-text-options) diff --git a/apps/site/pages/en/learn/command-line/run-nodejs-scripts-from-the-command-line.md b/apps/site/pages/en/learn/command-line/run-nodejs-scripts-from-the-command-line.md index 93ffaf15b73cf..d2a68883b7e8c 100644 --- a/apps/site/pages/en/learn/command-line/run-nodejs-scripts-from-the-command-line.md +++ b/apps/site/pages/en/learn/command-line/run-nodejs-scripts-from-the-command-line.md @@ -14,7 +14,7 @@ If your main Node.js application file is `app.js`, you can call it by typing: node app.js ``` -Above, you are explicitly telling the shell to run your script with `node`. You can also embed this information into your JavaScript file with a "shebang" line. The "shebang" is the first line in the file, and tells the OS which interpreter to use for running the script. Below is the first line of JavaScript: +Above, you are explicitly telling the shell to run your script with `node`. You can also embed this information into your JavaScript file with a ["shebang"](<https://en.wikipedia.org/wiki/Shebang_(Unix)>) line. The "shebang" is the first line in the file, and tells the OS which interpreter to use for running the script. Below is the first line of JavaScript: ```js #!/usr/bin/node @@ -48,12 +48,58 @@ node -e "console.log(123)" ## Restart the application automatically -As of nodejs V16, there is a built-in option to automatically restart the application when a file changes. This is useful for development purposes. -To use this feature, you need to pass the `--watch' flag to nodejs. +As of Node.js V16, there is a built-in option to automatically restart the application when a file changes. This is useful for development purposes. +To use this feature, you need to pass the `--watch` flag to Node.js. ```bash node --watch app.js ``` So when you change the file, the application will restart automatically. -Read the [`--watch` flag documentation](https://nodejs.org/docs/latest/api/cli.html#--watch). +Read the [`--watch` flag documentation](https://nodejs.org/docs/latest-v22.x/api/cli.html#--watch). + +## Run a task with Node.js + +Node.js provides a built-in task runner that allows you to execute specific commands defined in your `package.json` file. This can be particularly useful for automating repetitive tasks such as running tests, building your project, or linting your code. + +### Using the `--run` flag + +The [`--run`](https://nodejs.org/docs/latest-v22.x/api/cli.html#--run) flag allows you to run a specified command from the `scripts` section of your `package.json` file. For example, if you have the following `package.json`: + +```json +{ + "type": "module", + "scripts": { + "start": "node app.js", + "dev": "node --run -- --watch", + "test": "node --test" + } +} +``` + +You can run the `test` script using the `--run` flag: + +```bash +node --run test +``` + +### Passing arguments to the command + +Let's explain the `dev` key in the `scripts` object of the `package.json` file. + +The syntax `-- --another-argument` is used to pass arguments to the command. In this case, the `--watch` argument is passed to the `dev` script. + +```bash +node --run dev +``` + +### Environment variables + +The `--run` flag sets specific environment variables that can be useful for your scripts: + +- `NODE_RUN_SCRIPT_NAME`: The name of the script being run. +- `NODE_RUN_PACKAGE_JSON_PATH`: The path to the `package.json` file being processed. + +### Intentional limitations + +The Node.js task runner is intentionally more limited compared to other task runners like `npm run` or `yarn run`. It focuses on performance and simplicity, omitting features like running `pre` or `post` scripts. This makes it suitable for straightforward tasks but may not cover all use cases. From e56edccbb834be964a1f945b61bebf3eff6e1a46 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Tue, 24 Dec 2024 19:16:48 +0100 Subject: [PATCH 0213/1385] feat(InfoBox): introduce (#7352) * feat(StabilityIndex): introduce * ooopss Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> * fix:css code style * update from feedback * use danger * add style for `a` * use alertBox name * fix --------- Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> --- .../Common/AlertBox/index.module.css | 73 +++++++++++++++++++ .../Common/AlertBox/index.stories.tsx | 73 +++++++++++++++++++ .../site/components/Common/AlertBox/index.tsx | 24 ++++++ apps/site/next-env.d.ts | 6 -- 4 files changed, 170 insertions(+), 6 deletions(-) create mode 100644 apps/site/components/Common/AlertBox/index.module.css create mode 100644 apps/site/components/Common/AlertBox/index.stories.tsx create mode 100644 apps/site/components/Common/AlertBox/index.tsx delete mode 100644 apps/site/next-env.d.ts diff --git a/apps/site/components/Common/AlertBox/index.module.css b/apps/site/components/Common/AlertBox/index.module.css new file mode 100644 index 0000000000000..3714979473e5d --- /dev/null +++ b/apps/site/components/Common/AlertBox/index.module.css @@ -0,0 +1,73 @@ +.alertBox { + @apply flex + flex-row + items-center + gap-2 + rounded + px-4 + py-3 + text-sm + text-white; + + a { + @apply font-ibm-plex-mono + text-white + underline; + + &:hover { + @apply no-underline; + } + } + + &.small { + @apply gap-1 + py-2 + text-xs; + + .title { + @apply px-1; + } + } + + .title { + @apply rounded-sm + px-1.5; + } + + svg { + @apply inline + size-5; + } + + &.info { + @apply bg-info-600; + + .title { + @apply bg-info-700; + } + } + + &.success { + @apply bg-green-600; + + .title { + @apply bg-green-700; + } + } + + &.warning { + @apply bg-warning-600; + + .title { + @apply bg-warning-700; + } + } + + &.danger { + @apply bg-danger-600; + + .title { + @apply bg-danger-700; + } + } +} diff --git a/apps/site/components/Common/AlertBox/index.stories.tsx b/apps/site/components/Common/AlertBox/index.stories.tsx new file mode 100644 index 0000000000000..e5b5340faba61 --- /dev/null +++ b/apps/site/components/Common/AlertBox/index.stories.tsx @@ -0,0 +1,73 @@ +import { ExclamationCircleIcon } from '@heroicons/react/24/solid'; +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import AlertBox from '@/components/Common/AlertBox'; + +type Story = StoryObj<typeof AlertBox>; +type Meta = MetaObj<typeof AlertBox>; + +export const Info: Story = { + args: { + level: 'info', + title: '3', + children: + 'Legacy. Although this feature is unlikely to be removed and is still covered by semantic versioning guarantees, it is no longer actively maintained, and other alternatives are available.', + size: 'default', + }, +}; + +export const Success: Story = { + args: { + level: 'success', + title: '2', + children: + 'Stable. Compatibility with the npm ecosystem is a high priority.', + size: 'default', + }, +}; + +export const Warning: Story = { + args: { + level: 'warning', + title: '1', + children: + 'Experimental. The feature is not subject to semantic versioning rules. Non-backward compatible changes or removal may occur in any future release. Use of the feature is not recommended in production environments. Experimental features are subdivided into stages:', + size: 'default', + }, +}; + +export const Danger: Story = { + args: { + level: 'danger', + title: '0', + children: + 'Deprecated. The feature may emit warnings. Backward compatibility is not guaranteed.', + size: 'default', + }, +}; + +export const WithIcon: Story = { + args: { + level: 'info', + title: '3', + children: ( + <p> + Lorem ipsum dolor sit amet <ExclamationCircleIcon /> consectetur + adipisicing elit. Inventore, quasi doloremque. Totam, earum velit, sunt + voluptates fugiat beatae praesentium quis magni explicabo repudiandae + nam aut molestias ex ad sequi eum! + </p> + ), + size: 'default', + }, +}; + +export default { + component: AlertBox, + argTypes: { + size: { + options: ['default', 'small'], + control: { type: 'radio' }, + }, + }, +} as Meta; diff --git a/apps/site/components/Common/AlertBox/index.tsx b/apps/site/components/Common/AlertBox/index.tsx new file mode 100644 index 0000000000000..1e0b78844935a --- /dev/null +++ b/apps/site/components/Common/AlertBox/index.tsx @@ -0,0 +1,24 @@ +import classNames from 'classnames'; +import type { FC, PropsWithChildren } from 'react'; + +import styles from './index.module.css'; + +type AlertBoxProps = PropsWithChildren<{ + level: 'info' | 'success' | 'warning' | 'danger'; + title: string; + size?: 'default' | 'small'; +}>; + +const AlertBox: FC<AlertBoxProps> = ({ + level, + title, + children, + size = 'default', +}) => ( + <div className={classNames(styles.alertBox, styles[level], styles[size])}> + <span className={styles.title}>{title}</span> + {children} + </div> +); + +export default AlertBox; diff --git a/apps/site/next-env.d.ts b/apps/site/next-env.d.ts deleted file mode 100644 index 725dd6f245153..0000000000000 --- a/apps/site/next-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// <reference types="next" /> -/// <reference types="next/image-types/global" /> -/// <reference types="next/navigation-types/compat/navigation" /> - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. From 8b643f63a31a191e7b80c608f1b6b0b5860a7d7b Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Tue, 24 Dec 2024 18:59:18 +0000 Subject: [PATCH 0214/1385] feat: download snippet generation (#7351) * feat: download snippet generation * feat: changed approach * chore: simplify and reduce bundle size * chore: reduce bundle * chore: minor code fixes * chore: more code review * feat: introduced skeleton and animation * chore: synchronous shiki * chore: prevent internal errors * chore: attempt to handle null situations * fix: attempt to fix vercel env * fix: erroneous env usage for fetch * chore: fix select styles * chore: updated allowlist for env vars * feat: streamline detectos (only run query once) * fix: avatar rendering and avatar group margins * fix: pass ref * chore: optimized release provider memo * chore: next-image mock * Update crowdin.yml (#7353) * chore: improved loading state * Apply suggestions from code review Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Claudio W <cwunder@gnome.org> * chore: correct fixes * fix: unit tests * chore: final code review * fix: server component test * fix: rsc still risky for storybook --------- Signed-off-by: Claudio W <cwunder@gnome.org> Co-authored-by: Andriy Poznakhovskyy <andriy@crowdin.com> Co-authored-by: Caner Akdas <canerakdas@gmail.com> --- .github/workflows/translations-pr-lint.yml | 2 + apps/site/.storybook/main.ts | 1 + apps/site/app/[locale]/feed/[feed]/route.ts | 13 +- .../blog-data/[category]/[page]/route.ts | 5 +- .../next-data/download-snippets/route.tsx | 37 + .../next-data/og/[category]/[title]/route.tsx | 11 +- .../site/components/Blog/BlogHeader/index.tsx | 12 +- .../AvatarGroup/Avatar/index.module.css | 3 +- .../AvatarGroup/Avatar/index.stories.tsx | 8 - .../Common/AvatarGroup/Avatar/index.tsx | 46 +- .../Common/AvatarGroup/Overlay/index.tsx | 1 + .../Common/AvatarGroup/index.module.css | 15 +- .../Common/AvatarGroup/index.stories.tsx | 8 +- .../components/Common/AvatarGroup/index.tsx | 7 +- .../Common/ProgressionSidebar/index.tsx | 2 + apps/site/components/Common/Search/index.tsx | 6 +- apps/site/components/Common/Select/index.tsx | 168 +- .../Common/Skeleton/index.module.css | 28 + .../site/components/Common/Skeleton/index.tsx | 28 + .../Downloads/DownloadButton/index.tsx | 5 +- .../components/Downloads/DownloadLink.tsx | 4 +- .../Downloads/Release/BitnessDropdown.tsx | 9 +- .../Release/OperatingSystemDropdown.tsx | 8 +- .../Downloads/Release/PlatformDropdown.tsx | 4 +- .../Downloads/Release/ReleaseCodeBox.tsx | 42 +- apps/site/components/JSX/CodeBox/index.tsx | 39 + .../components/MDX/CodeBox/index.stories.tsx | 7 +- apps/site/components/MDX/CodeBox/index.tsx | 3 +- .../components/MDX/CodeTabs/index.stories.tsx | 7 +- apps/site/components/MDX/CodeTabs/index.tsx | 2 - .../components/__mocks__/client-context.mjs | 2 + .../components/__mocks__/github-slugger.mjs | 2 + apps/site/components/__mocks__/next-image.mjs | 4 + apps/site/components/__mocks__/next-intl.mjs | 5 + .../site/components/__mocks__/next-router.mjs | 2 + apps/site/components/withAvatarGroup.tsx | 2 - apps/site/components/withCurrentOS.tsx | 17 - .../components/withDownloadCategories.tsx | 27 +- apps/site/components/withLayout.tsx | 2 - apps/site/components/withMetaBar.tsx | 1 + .../components/withProgressionSidebar.tsx | 4 +- .../__tests__/useDetectOS.test.mjs | 2 +- .../hooks/react-client/useClientContext.ts | 23 +- apps/site/hooks/react-client/useDetectOS.ts | 43 +- apps/site/jest.config.mjs | 1 + apps/site/layouts/Post.tsx | 2 +- apps/site/layouts/Search.tsx | 14 - apps/site/next-data/blogData.ts | 11 +- apps/site/next-data/downloadSnippets.ts | 44 + .../next-data/generators/downloadSnippets.mjs | 44 + .../next-data/providers/downloadSnippets.ts | 15 + apps/site/next-data/providers/websiteFeeds.ts | 2 +- apps/site/next-data/releaseData.ts | 4 +- apps/site/next-env.d.ts | 6 + apps/site/next.config.mjs | 8 +- apps/site/next.constants.mjs | 22 +- apps/site/next.dynamic.mjs | 11 +- apps/site/next.jsx.compiler.mjs | 23 + apps/site/next.mdx.compiler.mjs | 24 +- apps/site/next.mdx.evaluater.mjs | 26 - apps/site/next.mdx.shiki.mjs | 11 +- apps/site/package.json | 7 +- .../__tests__/matterProvider.test.mjs | 6 + apps/site/providers/matterProvider.tsx | 15 +- apps/site/providers/releaseProvider.tsx | 46 +- apps/site/snippets/en/download/brew.bash | 8 + apps/site/snippets/en/download/choco.bash | 8 + apps/site/snippets/en/download/docker.bash | 8 + apps/site/snippets/en/download/fnm.bash | 8 + apps/site/snippets/en/download/nvm.bash | 8 + apps/site/tailwind.config.ts | 16 + apps/site/turbo.json | 20 +- apps/site/types/downloads.ts | 5 + apps/site/types/index.ts | 1 + apps/site/types/layouts.ts | 1 - apps/site/types/release.ts | 12 +- apps/site/types/server.ts | 6 +- .../__tests__/assignClientContext.test.mjs | 3 + apps/site/util/assignClientContext.ts | 3 + apps/site/util/getHighlighter.ts | 25 +- apps/site/util/getNodeDownloadSnippet.ts | 121 - crowdin.yml | 10 + package-lock.json | 6263 ++++++++++++----- packages/i18n/locales/en.json | 24 +- packages/i18n/turbo.json | 5 +- 85 files changed, 5170 insertions(+), 2394 deletions(-) create mode 100644 apps/site/app/[locale]/next-data/download-snippets/route.tsx create mode 100644 apps/site/components/Common/Skeleton/index.module.css create mode 100644 apps/site/components/Common/Skeleton/index.tsx create mode 100644 apps/site/components/JSX/CodeBox/index.tsx create mode 100644 apps/site/components/__mocks__/next-image.mjs delete mode 100644 apps/site/components/withCurrentOS.tsx delete mode 100644 apps/site/layouts/Search.tsx create mode 100644 apps/site/next-data/downloadSnippets.ts create mode 100644 apps/site/next-data/generators/downloadSnippets.mjs create mode 100644 apps/site/next-data/providers/downloadSnippets.ts create mode 100644 apps/site/next-env.d.ts create mode 100644 apps/site/next.jsx.compiler.mjs delete mode 100644 apps/site/next.mdx.evaluater.mjs create mode 100644 apps/site/snippets/en/download/brew.bash create mode 100644 apps/site/snippets/en/download/choco.bash create mode 100644 apps/site/snippets/en/download/docker.bash create mode 100644 apps/site/snippets/en/download/fnm.bash create mode 100644 apps/site/snippets/en/download/nvm.bash create mode 100644 apps/site/types/downloads.ts delete mode 100644 apps/site/util/getNodeDownloadSnippet.ts diff --git a/.github/workflows/translations-pr-lint.yml b/.github/workflows/translations-pr-lint.yml index 0aa2761aeecad..6e7b0767f43c9 100644 --- a/.github/workflows/translations-pr-lint.yml +++ b/.github/workflows/translations-pr-lint.yml @@ -15,6 +15,8 @@ on: - '!apps/site/pages/en/**/*.mdx' - 'packages/i18n/locales/*.json' - '!packages/i18n/locales/en.json' + - 'apps/site/snippets/**/*.bash' + - '!apps/site/snippets/en/**/*.bash' # Cancel any runs on the same branch concurrency: diff --git a/apps/site/.storybook/main.ts b/apps/site/.storybook/main.ts index 8c8a4087103a6..5fe13732dc295 100644 --- a/apps/site/.storybook/main.ts +++ b/apps/site/.storybook/main.ts @@ -45,6 +45,7 @@ const config: StorybookConfig = { resolve: { ...config.resolve, alias: { + 'next/image': join(mocksFolder, './next-image.mjs'), 'next-intl/navigation': join(mocksFolder, './next-intl.mjs'), '@/client-context': join(mocksFolder, './client-context.mjs'), '@': join(__dirname, '../'), diff --git a/apps/site/app/[locale]/feed/[feed]/route.ts b/apps/site/app/[locale]/feed/[feed]/route.ts index 96d371d4f21a8..d9abcf4dede63 100644 --- a/apps/site/app/[locale]/feed/[feed]/route.ts +++ b/apps/site/app/[locale]/feed/[feed]/route.ts @@ -4,10 +4,8 @@ import provideWebsiteFeeds from '@/next-data/providers/websiteFeeds'; import { siteConfig } from '@/next.json.mjs'; import { defaultLocale } from '@/next.locales.mjs'; -// We only support fetching these pages from the /en/ locale code -const locale = defaultLocale.code; - -type StaticParams = { params: Promise<{ feed: string; locale: string }> }; +type DynamicStaticPaths = { locale: string; feed: string }; +type StaticParams = { params: Promise<DynamicStaticPaths> }; // This is the Route Handler for the `GET` method which handles the request // for the Node.js Website Blog Feeds (RSS) @@ -20,7 +18,7 @@ export const GET = async (_: Request, props: StaticParams) => { return new NextResponse(websiteFeed, { headers: { 'Content-Type': 'application/xml' }, - status: websiteFeed ? 200 : 404, + status: websiteFeed !== undefined ? 200 : 404, }); }; @@ -28,7 +26,10 @@ export const GET = async (_: Request, props: StaticParams) => { // `[locale]/feeds/[feed]` and returns an array of all available static paths // This is used for ISR static validation and generation export const generateStaticParams = async () => - siteConfig.rssFeeds.map(feed => ({ feed: feed.file, locale })); + siteConfig.rssFeeds.map(feed => ({ + locale: defaultLocale.code, + feed: feed.file, + })); // Enforces that only the paths from `generateStaticParams` are allowed, giving 404 on the contrary // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamicparams diff --git a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts index efd8706d84f93..c0061c6a366ad 100644 --- a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts +++ b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts @@ -4,9 +4,8 @@ import { } from '@/next-data/providers/blogData'; import { defaultLocale } from '@/next.locales.mjs'; -type StaticParams = { - params: Promise<{ locale: string; category: string; page: string }>; -}; +type DynamicStaticPaths = { locale: string; category: string; page: string }; +type StaticParams = { params: Promise<DynamicStaticPaths> }; // This is the Route Handler for the `GET` method which handles the request // for providing Blog Posts for Blog Categories and Pagination Metadata diff --git a/apps/site/app/[locale]/next-data/download-snippets/route.tsx b/apps/site/app/[locale]/next-data/download-snippets/route.tsx new file mode 100644 index 0000000000000..7ef5cfb53a02d --- /dev/null +++ b/apps/site/app/[locale]/next-data/download-snippets/route.tsx @@ -0,0 +1,37 @@ +import provideDownloadSnippets from '@/next-data/providers/downloadSnippets'; +import { defaultLocale } from '@/next.locales.mjs'; + +type DynamicStaticPaths = { locale: string }; +type StaticParams = { params: Promise<DynamicStaticPaths> }; + +// This is the Route Handler for the `GET` method which handles the request +// for generating JSON data for Download Snippets +// @see https://nextjs.org/docs/app/building-your-application/routing/router-handlers +export const GET = async (_: Request, props: StaticParams) => { + const params = await props.params; + + // Retrieve all available Download snippets for a given locale if available + const snippets = provideDownloadSnippets(params.locale); + + // We append always the default/fallback snippets when a result is found + return Response.json(snippets, { + status: snippets !== undefined ? 200 : 404, + }); +}; + +// This function generates the static paths that come from the dynamic segments +// `[locale]/next-data/download-snippets/` this will return a default value as we don't want to +// statically generate this route as it is compute-expensive. +// Hence we generate a fake route just to satisfy Next.js requirements. +export const generateStaticParams = async () => [ + { locale: defaultLocale.code }, +]; + +// Enforces that this route is cached and static as much as possible +// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic +export const dynamic = 'force-static'; + +// Ensures that this endpoint is invalidated and re-executed every X minutes +// so that when new deployments happen, the data is refreshed +// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate +export const revalidate = 300; 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..844c9fa6753f5 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 @@ -13,13 +13,10 @@ const CATEGORY_TO_THEME_COLOUR_MAP = { vulnerability: tailwindConfig.theme.colors.warning['600'], }; -type StaticParams = { - params: Promise<{ - locale: string; - category: keyof typeof CATEGORY_TO_THEME_COLOUR_MAP; - title: string; - }>; -}; +type Category = keyof typeof CATEGORY_TO_THEME_COLOUR_MAP; + +type DynamicStaticPaths = { locale: string; category: Category; title: string }; +type StaticParams = { params: Promise<DynamicStaticPaths> }; // This is the Route Handler for the `GET` method which handles the request // for generating OpenGraph images for Blog Posts and Pages diff --git a/apps/site/components/Blog/BlogHeader/index.tsx b/apps/site/components/Blog/BlogHeader/index.tsx index 11c3bc7ec9376..ddbcdc750c698 100644 --- a/apps/site/components/Blog/BlogHeader/index.tsx +++ b/apps/site/components/Blog/BlogHeader/index.tsx @@ -1,5 +1,3 @@ -'use client'; - import { RssIcon } from '@heroicons/react/24/solid'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; @@ -9,15 +7,13 @@ import { siteConfig } from '@/next.json.mjs'; import styles from './index.module.css'; -type BlogHeaderProps = { - category: string; -}; +type BlogHeaderProps = { category: string }; const BlogHeader: FC<BlogHeaderProps> = ({ category }) => { const t = useTranslations(); - const currentFile = - siteConfig.rssFeeds.find(item => item.category === category)?.file ?? - 'blog.xml'; + + const feed = siteConfig.rssFeeds.find(item => item.category === category); + const currentFile = feed ? feed.file : 'blog.xml'; return ( <header className={styles.blogHeader}> diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.module.css b/apps/site/components/Common/AvatarGroup/Avatar/index.module.css index 591354049bda0..b96dded805343 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.module.css +++ b/apps/site/components/Common/AvatarGroup/Avatar/index.module.css @@ -10,12 +10,11 @@ justify-center rounded-full border-2 - border-white + border-transparent bg-neutral-100 object-cover text-xs text-neutral-800 - dark:border-neutral-950 dark:bg-neutral-900 dark:text-neutral-300; } diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx b/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx index 8f72650102c0f..e676fc02dc440 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx +++ b/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx @@ -20,12 +20,4 @@ export const NoSquare: Story = { }, }; -export const FallBack: Story = { - args: { - image: 'https://avatars.githubusercontent.com/u/', - nickname: 'John Doe', - fallback: 'JD', - }, -}; - export default { component: Avatar } as Meta; diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx b/apps/site/components/Common/AvatarGroup/Avatar/index.tsx index c992fab126f5c..3e7f98724cb80 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx +++ b/apps/site/components/Common/AvatarGroup/Avatar/index.tsx @@ -1,6 +1,6 @@ -import * as RadixAvatar from '@radix-ui/react-avatar'; import classNames from 'classnames'; -import type { ComponentPropsWithoutRef, ElementRef } from 'react'; +import Image from 'next/image'; +import type { HTMLAttributes } from 'react'; import { forwardRef } from 'react'; import Link from '@/components/Link'; @@ -16,37 +16,45 @@ export type AvatarProps = { url?: string; }; +// @TODO: We temporarily removed the Avatar Radix UI primitive, since it was causing flashing +// during initial load and not being able to render nicely when images are already cached. +// @see https://github.com/radix-ui/primitives/pull/3008 const Avatar = forwardRef< - ElementRef<typeof RadixAvatar.Root>, - ComponentPropsWithoutRef<typeof RadixAvatar.Root> & AvatarProps + HTMLSpanElement, + HTMLAttributes<HTMLSpanElement> & AvatarProps >(({ image, nickname, name, fallback, url, size = 'small', ...props }, ref) => { const Wrapper = url ? Link : 'div'; return ( - <RadixAvatar.Root + <span {...props} - className={classNames(styles.avatar, styles[size], props.className)} ref={ref} + className={classNames(styles.avatar, styles[size], props.className)} > <Wrapper href={url || undefined} target={url ? '_blank' : undefined} className={styles.wrapper} > - <RadixAvatar.Image - loading="lazy" - src={image} - alt={name || nickname} - className={styles.item} - /> - <RadixAvatar.Fallback - delayMs={500} - className={classNames(styles.item, styles[size])} - > - {fallback} - </RadixAvatar.Fallback> + {image && ( + <Image + width={40} + height={40} + loading="lazy" + decoding="async" + src={image} + alt={name || nickname} + className={styles.item} + /> + )} + + {!image && ( + <span className={classNames(styles.item, styles[size])}> + {fallback} + </span> + )} </Wrapper> - </RadixAvatar.Root> + </span> ); }); diff --git a/apps/site/components/Common/AvatarGroup/Overlay/index.tsx b/apps/site/components/Common/AvatarGroup/Overlay/index.tsx index a622c9ebe1c58..0fa95e1978363 100644 --- a/apps/site/components/Common/AvatarGroup/Overlay/index.tsx +++ b/apps/site/components/Common/AvatarGroup/Overlay/index.tsx @@ -25,6 +25,7 @@ const AvatarOverlay: FC<AvatarOverlayProps> = ({ fallback={fallback} size="medium" /> + <div className={styles.user}> {name && <div className={styles.name}>{name}</div>} {nickname && <div className={styles.nickname}>{nickname}</div>} diff --git a/apps/site/components/Common/AvatarGroup/index.module.css b/apps/site/components/Common/AvatarGroup/index.module.css index bc41f7647d5d1..91766d2b7faed 100644 --- a/apps/site/components/Common/AvatarGroup/index.module.css +++ b/apps/site/components/Common/AvatarGroup/index.module.css @@ -2,13 +2,22 @@ @apply flex flex-wrap items-center; + + &:not(.expandable) { + > span { + @apply ml-0; + } + } } .small { - @apply xs:-space-x-2 - space-x-0.5; + > span { + @apply -ml-2; + } } .medium { - @apply -space-x-2.5; + > span { + @apply -ml-2.5; + } } diff --git a/apps/site/components/Common/AvatarGroup/index.stories.tsx b/apps/site/components/Common/AvatarGroup/index.stories.tsx index 0065bf2f3f009..2a927ac95ba66 100644 --- a/apps/site/components/Common/AvatarGroup/index.stories.tsx +++ b/apps/site/components/Common/AvatarGroup/index.stories.tsx @@ -23,14 +23,8 @@ const names = [ 'araujogui', ]; -const unknownAvatar = { - image: 'https://avatars.githubusercontent.com/u/', - nickname: 'unknown-avatar', - fallback: 'UA', -}; - const defaultProps = { - avatars: [unknownAvatar, ...getAuthorWithId(names, true)], + avatars: getAuthorWithId(names, true), }; export const Default: Story = { diff --git a/apps/site/components/Common/AvatarGroup/index.tsx b/apps/site/components/Common/AvatarGroup/index.tsx index 709c45affe461..2bacc71b8ab7b 100644 --- a/apps/site/components/Common/AvatarGroup/index.tsx +++ b/apps/site/components/Common/AvatarGroup/index.tsx @@ -35,7 +35,11 @@ const AvatarGroup: FC<AvatarGroupProps> = ({ ); return ( - <div className={classNames(styles.avatarGroup, styles[size])}> + <div + className={classNames(styles.avatarGroup, styles[size], { + [styles.expandable]: avatars.length > limit, + })} + > {renderAvatars.map(({ ...avatar }) => ( <Fragment key={avatar.nickname}> <Tooltip @@ -54,6 +58,7 @@ const AvatarGroup: FC<AvatarGroupProps> = ({ </Tooltip> </Fragment> ))} + {avatars.length > limit && ( <span onClick={isExpandable ? () => setShowMore(prev => !prev) : undefined} diff --git a/apps/site/components/Common/ProgressionSidebar/index.tsx b/apps/site/components/Common/ProgressionSidebar/index.tsx index fde4076f4fcb9..2fdec5637c339 100644 --- a/apps/site/components/Common/ProgressionSidebar/index.tsx +++ b/apps/site/components/Common/ProgressionSidebar/index.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useTranslations } from 'next-intl'; import type { ComponentProps, FC } from 'react'; import { useRef } from 'react'; 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/Select/index.tsx b/apps/site/components/Common/Select/index.tsx index 3d12632e7ed20..66dfed76ff0ab 100644 --- a/apps/site/components/Common/Select/index.tsx +++ b/apps/site/components/Common/Select/index.tsx @@ -4,9 +4,10 @@ import { ChevronDownIcon } from '@heroicons/react/24/outline'; import * as ScrollPrimitive from '@radix-ui/react-scroll-area'; import * as SelectPrimitive from '@radix-ui/react-select'; import classNames from 'classnames'; -import { useId, useMemo } from 'react'; +import { useEffect, useId, useMemo, useState } from 'react'; import type { FC } from 'react'; +import Skeleton from '@/components/Common/Skeleton'; import type { FormattedMessage } from '@/types'; import styles from './index.module.css'; @@ -30,7 +31,7 @@ const isValuesArray = (values: Array<unknown>): values is Array<SelectValue> => Boolean(values[0] && typeof values[0] === 'object' && 'value' in values[0]); type SelectProps = { - values: Array<SelectGroup> | Array<SelectValue> | Array<string>; + values: Array<SelectGroup | string | SelectValue>; defaultValue?: string; placeholder?: string; label?: string; @@ -38,6 +39,7 @@ type SelectProps = { onChange?: (value: string) => void; className?: string; ariaLabel?: string; + loading?: boolean; }; const Select: FC<SelectProps> = ({ @@ -49,8 +51,12 @@ const Select: FC<SelectProps> = ({ onChange, className, ariaLabel, + loading = false, }) => { const id = useId(); + const [value, setValue] = useState(defaultValue); + + useEffect(() => setValue(defaultValue), [defaultValue]); const mappedValues = useMemo(() => { let mappedValues = values; @@ -63,76 +69,102 @@ const Select: FC<SelectProps> = ({ return [{ items: mappedValues }]; } - return mappedValues; + return mappedValues as Array<SelectGroup>; }, [values]); + // We render the actual item slotted to fix/prevent the issue + // of the tirgger flashing on the initial render + const currentItem = useMemo( + () => + mappedValues + .flatMap(({ items }) => items) + .find(item => item.value === value), + [mappedValues, value] + ); + + // Both change the internal state and emit the change event + const handleChange = (value: string) => { + setValue(value); + + if (typeof onChange === 'function') { + onChange(value); + } + }; + return ( - <span - className={classNames( - styles.select, - { [styles.inline]: inline }, - className - )} - > - {label && ( - <label className={styles.label} htmlFor={id}> - {label} - </label> - )} - - <SelectPrimitive.Root value={defaultValue} onValueChange={onChange}> - <SelectPrimitive.Trigger - className={styles.trigger} - aria-label={ariaLabel} - id={id} - > - <SelectPrimitive.Value placeholder={placeholder} /> - <ChevronDownIcon className={styles.icon} /> - </SelectPrimitive.Trigger> - - <SelectPrimitive.Portal> - <SelectPrimitive.Content - position={inline ? 'popper' : 'item-aligned'} - className={classNames(styles.dropdown, { [styles.inline]: inline })} + <Skeleton loading={loading}> + <span + className={classNames( + styles.select, + { [styles.inline]: inline }, + className + )} + > + {label && ( + <label className={styles.label} htmlFor={id}> + {label} + </label> + )} + + <SelectPrimitive.Root value={value} onValueChange={handleChange}> + <SelectPrimitive.Trigger + className={styles.trigger} + aria-label={ariaLabel} + id={id} > - <ScrollPrimitive.Root type="auto"> - <SelectPrimitive.Viewport> - <ScrollPrimitive.Viewport> - {mappedValues.map(({ label, items }, key) => ( - <SelectPrimitive.Group key={label?.toString() ?? key}> - {label && ( - <SelectPrimitive.Label - className={classNames(styles.item, styles.label)} - > - {label} - </SelectPrimitive.Label> - )} - - {items.map(({ value, label, iconImage, disabled }) => ( - <SelectPrimitive.Item - key={value} - value={value} - disabled={disabled} - className={classNames(styles.item, styles.text)} - > - <SelectPrimitive.ItemText> - {iconImage} - <span>{label}</span> - </SelectPrimitive.ItemText> - </SelectPrimitive.Item> - ))} - </SelectPrimitive.Group> - ))} - </ScrollPrimitive.Viewport> - </SelectPrimitive.Viewport> - <ScrollPrimitive.Scrollbar orientation="vertical"> - <ScrollPrimitive.Thumb /> - </ScrollPrimitive.Scrollbar> - </ScrollPrimitive.Root> - </SelectPrimitive.Content> - </SelectPrimitive.Portal> - </SelectPrimitive.Root> - </span> + <SelectPrimitive.Value placeholder={placeholder}> + {currentItem?.iconImage} + <span>{currentItem?.label}</span> + </SelectPrimitive.Value> + <ChevronDownIcon className={styles.icon} /> + </SelectPrimitive.Trigger> + + <SelectPrimitive.Portal> + <SelectPrimitive.Content + position={inline ? 'popper' : 'item-aligned'} + className={classNames(styles.dropdown, { + [styles.inline]: inline, + })} + > + <ScrollPrimitive.Root type="auto"> + <SelectPrimitive.Viewport> + <ScrollPrimitive.Viewport> + {mappedValues.map(({ label, items }, key) => ( + <SelectPrimitive.Group key={label?.toString() ?? key}> + {label && ( + <SelectPrimitive.Label + className={classNames(styles.item, styles.label)} + > + {label} + </SelectPrimitive.Label> + )} + + {items.map(({ value, label, iconImage, disabled }) => ( + <SelectPrimitive.Item + key={value} + value={value} + disabled={disabled} + className={classNames(styles.item, styles.text)} + > + <SelectPrimitive.ItemText> + {iconImage} + <span>{label}</span> + </SelectPrimitive.ItemText> + </SelectPrimitive.Item> + ))} + </SelectPrimitive.Group> + ))} + </ScrollPrimitive.Viewport> + </SelectPrimitive.Viewport> + <ScrollPrimitive.Scrollbar orientation="vertical"> + <ScrollPrimitive.Thumb /> + </ScrollPrimitive.Scrollbar> + </ScrollPrimitive.Root> + </SelectPrimitive.Content> + </SelectPrimitive.Portal> + </SelectPrimitive.Root> + </span> + </Skeleton> ); }; diff --git a/apps/site/components/Common/Skeleton/index.module.css b/apps/site/components/Common/Skeleton/index.module.css new file mode 100644 index 0000000000000..389dc00ca4499 --- /dev/null +++ b/apps/site/components/Common/Skeleton/index.module.css @@ -0,0 +1,28 @@ +.skeleton { + @apply dark:animate-pulse-dark + pointer-events-none + animate-pulse + cursor-default + select-none + rounded-md + border-none + bg-clip-border + text-transparent + shadow-none + outline-none; +} + +.skeleton[data-inline-skeleton] { + @apply leading-none; +} + +.skeleton:empty { + @apply block + h-3; +} + +.skeleton > *, +.skeleton::after, +.skeleton::before { + @apply invisible; +} diff --git a/apps/site/components/Common/Skeleton/index.tsx b/apps/site/components/Common/Skeleton/index.tsx new file mode 100644 index 0000000000000..cb5439345c09b --- /dev/null +++ b/apps/site/components/Common/Skeleton/index.tsx @@ -0,0 +1,28 @@ +import type { FC, PropsWithChildren } from 'react'; +import { isValidElement } from 'react'; + +import styles from './index.module.css'; + +type SkeletonProps = { loading?: boolean }; + +const Skeleton: FC<PropsWithChildren<SkeletonProps>> = ({ + children, + loading = true, +}) => { + if (!loading) { + return children; + } + + return ( + <span + tabIndex={-1} + aria-hidden="true" + className={styles.skeleton} + data-inline-skeleton={isValidElement(children) ? undefined : true} + > + {children} + </span> + ); +}; + +export default Skeleton; diff --git a/apps/site/components/Downloads/DownloadButton/index.tsx b/apps/site/components/Downloads/DownloadButton/index.tsx index 3ae14761a7605..c850ed362c8e3 100644 --- a/apps/site/components/Downloads/DownloadButton/index.tsx +++ b/apps/site/components/Downloads/DownloadButton/index.tsx @@ -5,7 +5,7 @@ import classNames from 'classnames'; import type { FC, PropsWithChildren } from 'react'; import Button from '@/components/Common/Button'; -import { useDetectOS } from '@/hooks'; +import { useClientContext } from '@/hooks'; import type { NodeRelease } from '@/types'; import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; import { getUserBitnessByArchitecture } from '@/util/getUserBitnessByArchitecture'; @@ -22,7 +22,8 @@ const DownloadButton: FC<PropsWithChildren<DownloadButtonProps>> = ({ os, bitness: userBitness, architecture: userArchitecture, - } = useDetectOS(); + } = useClientContext(); + const bitness = getUserBitnessByArchitecture(userArchitecture, userBitness); const downloadLink = getNodeDownloadUrl(versionWithPrefix, os, bitness); diff --git a/apps/site/components/Downloads/DownloadLink.tsx b/apps/site/components/Downloads/DownloadLink.tsx index bedab21bebf7f..cc23892253585 100644 --- a/apps/site/components/Downloads/DownloadLink.tsx +++ b/apps/site/components/Downloads/DownloadLink.tsx @@ -2,7 +2,7 @@ import type { FC, PropsWithChildren } from 'react'; -import { useDetectOS } from '@/hooks'; +import { useClientContext } from '@/hooks'; import type { NodeRelease } from '@/types'; import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; @@ -12,7 +12,7 @@ const DownloadLink: FC<PropsWithChildren<DownloadLinkProps>> = ({ release: { versionWithPrefix }, children, }) => { - const { os, bitness } = useDetectOS(); + const { os, bitness } = useClientContext(); const downloadLink = getNodeDownloadUrl(versionWithPrefix, os, bitness); return <a href={downloadLink}>{children}</a>; diff --git a/apps/site/components/Downloads/Release/BitnessDropdown.tsx b/apps/site/components/Downloads/Release/BitnessDropdown.tsx index 789885635addd..e48b44cba48b0 100644 --- a/apps/site/components/Downloads/Release/BitnessDropdown.tsx +++ b/apps/site/components/Downloads/Release/BitnessDropdown.tsx @@ -1,11 +1,12 @@ 'use client'; + import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useEffect, useContext, useMemo } from 'react'; import semVer from 'semver'; import Select from '@/components/Common/Select'; -import { useDetectOS } from '@/hooks/react-client'; +import { useClientContext } from '@/hooks'; import { ReleaseContext } from '@/providers/releaseProvider'; import { bitnessItems, formatDropdownItems } from '@/util/downloadUtils'; import { getUserBitnessByArchitecture } from '@/util/getUserBitnessByArchitecture'; @@ -15,13 +16,10 @@ const parseNumericBitness = (bitness: string) => const BitnessDropdown: FC = () => { const { bitness: userBitness, architecture: userArchitecture } = - useDetectOS(); + useClientContext(); const { bitness, os, release, setBitness } = useContext(ReleaseContext); const t = useTranslations(); - // we also reset the bitness when the OS changes, because different OSs have - // different bitnesses available - useEffect(() => { setBitness(getUserBitnessByArchitecture(userArchitecture, userBitness)); // we shouldn't update the effect on setter state change @@ -101,6 +99,7 @@ const BitnessDropdown: FC = () => { items: bitnessItems[os], disabledItems, })} + loading={os === 'LOADING'} ariaLabel={t('layouts.download.dropdown.bitness')} defaultValue={String(bitness)} onChange={bitness => setBitness(parseNumericBitness(bitness))} diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index eccb0f21cc4e7..c11cd679f6e5c 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -9,7 +9,7 @@ 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 { useClientContext } from '@/hooks'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { UserOS } from '@/types/userOS'; import { @@ -22,11 +22,10 @@ type OperatingSystemDropdownProps = { exclude?: Array<UserOS> }; const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = ({ exclude = [], }) => { - const { os: userOS } = useDetectOS(); + const { os: userOS } = useClientContext(); const { os, setOS } = useContext(ReleaseContext); const t = useTranslations(); - // we shouldn't react when "actions" change // eslint-disable-next-line react-hooks/exhaustive-deps useEffect(() => setOS(userOS), [userOS]); @@ -60,8 +59,9 @@ const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = ({ AIX: <Aix width={16} height={16} />, }, })} - ariaLabel={t('layouts.download.dropdown.os')} defaultValue={os} + loading={os === 'LOADING'} + ariaLabel={t('layouts.download.dropdown.os')} onChange={value => setOS(value as UserOS)} className="min-w-[8.5rem]" inline={true} diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index 4ac966c72c8a9..2839fab44b357 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -1,4 +1,5 @@ 'use client'; + import { useTranslations } from 'next-intl'; import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; @@ -76,8 +77,9 @@ const PlatformDropdown: FC = () => { }, disabledItems, })} - ariaLabel={t('layouts.download.dropdown.platform')} defaultValue={platform} + loading={os === 'LOADING'} + ariaLabel={t('layouts.download.dropdown.platform')} onChange={platform => setPlatform(platform as PackageManager)} className="min-w-28" inline={true} diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index ca465eb90aaf0..86b5145724134 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -1,37 +1,37 @@ 'use client'; import { useTranslations } from 'next-intl'; -import { useContext, useEffect, useState } from 'react'; import type { FC } from 'react'; +import { useContext, useMemo } from 'react'; import semVer from 'semver'; import Banner from '@/components/Common/Banner'; -import CodeBox from '@/components/Common/CodeBox'; +import Skeleton from '@/components/Common/Skeleton'; +import JSXCodeBox from '@/components/JSX/CodeBox'; import { ESP_SUPPORT_THRESHOLD_VERSION } from '@/next.constants.mjs'; +import { createSval } from '@/next.jsx.compiler.mjs'; import { ReleaseContext } from '@/providers/releaseProvider'; -import { shikiPromise, highlightToHtml } from '@/util/getHighlighter'; -import { getNodeDownloadSnippet } from '@/util/getNodeDownloadSnippet'; - -const memoizedShiki = shikiPromise.then(highlightToHtml); const ReleaseCodeBox: FC = () => { - const { platform, os, release } = useContext(ReleaseContext); + const { platform, os, release, snippet } = useContext(ReleaseContext); - const [code, setCode] = useState(''); const t = useTranslations(); - useEffect(() => { - const updatedCode = getNodeDownloadSnippet(release, os, t)[platform]; - // Docker and NVM support downloading tags/versions by their full release number - // but usually we should recommend users to download "major" versions - // since our Download Buttons get the latest minor of a major, it does make sense - // to request installation of a major via a package manager - memoizedShiki.then(shiki => shiki(updatedCode, 'bash')).then(setCode); + const parsedSnippet = useMemo(() => { + // Creates a minimal JavaScript interpreter for parsing the JavaScript code from the snippets + const interpreter = createSval({ props: { release } }, 'script'); + + // Evaluates the JavaScript code applying the release context to the code + interpreter.run(`exports.content = \`${snippet?.content ?? ''}\``); + + // Sets the parsed raw string to be used by the JSX CodeBox + return interpreter.exports.content; // Only react when the specific release number changed // eslint-disable-next-line react-hooks/exhaustive-deps }, [release.versionWithPrefix, os, platform]); - const codeLanguage = os === 'WIN' ? 'PowerShell' : 'Bash'; + const codeLanguage = os === 'WIN' ? 'ps1' : 'bash'; + return ( <div className="mb-2 mt-6 flex flex-col gap-2"> {semVer.lt(release.versionWithPrefix, ESP_SUPPORT_THRESHOLD_VERSION) && ( @@ -39,9 +39,13 @@ const ReleaseCodeBox: FC = () => { {t('layouts.download.codeBox.unsupportedVersionWarning')}  </Banner> )} - <CodeBox language={codeLanguage} className="min-h-[15.5rem]"> - <code dangerouslySetInnerHTML={{ __html: code }} /> - </CodeBox> + + <Skeleton loading={os === 'LOADING'}> + <JSXCodeBox language={codeLanguage} className="min-h-[12rem]"> + {parsedSnippet} + </JSXCodeBox> + </Skeleton> + <span className="text-center text-xs text-neutral-800 dark:text-neutral-200"> {t('layouts.download.codeBox.communityWarning')} <br /> diff --git a/apps/site/components/JSX/CodeBox/index.tsx b/apps/site/components/JSX/CodeBox/index.tsx new file mode 100644 index 0000000000000..6e2b657b71817 --- /dev/null +++ b/apps/site/components/JSX/CodeBox/index.tsx @@ -0,0 +1,39 @@ +import classNames from 'classnames'; +import dedent from 'dedent'; +import { toJsxRuntime } from 'hast-util-to-jsx-runtime'; +import type { FC, PropsWithChildren } from 'react'; + +import MDXCodeBox from '@/components/MDX/CodeBox'; +import { reactRuntime } from '@/next.mdx.compiler.mjs'; +import { highlightToHast } from '@/util/getHighlighter'; + +type CodeBoxProps = { + language: string; + showCopyButton?: boolean; + className?: string; +}; + +const CodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ + children, + language, + showCopyButton, + className, +}) => { + const highlighted = highlightToHast(dedent(String(children)), language); + + return toJsxRuntime(highlighted, { + ...reactRuntime, + components: { + pre: ({ children }) => ( + <MDXCodeBox + showCopyButton={showCopyButton ? 'true' : undefined} + className={classNames(`language-${language}`, className)} + > + {children} + </MDXCodeBox> + ), + }, + }); +}; + +export default CodeBox; diff --git a/apps/site/components/MDX/CodeBox/index.stories.tsx b/apps/site/components/MDX/CodeBox/index.stories.tsx index 7a0791ac2fbae..8982fe9ef4e0b 100644 --- a/apps/site/components/MDX/CodeBox/index.stories.tsx +++ b/apps/site/components/MDX/CodeBox/index.stories.tsx @@ -2,6 +2,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import { VFile } from 'vfile'; import { compile } from '@/next.mdx.compiler.mjs'; +import { MDX_COMPONENTS } from '@/next.mdx.components.mjs'; type Props = { children: string }; @@ -34,7 +35,11 @@ export default { render: (_, { loaded: { Content } }) => Content, loaders: [ async ({ args }) => { - const { content } = await compile(new VFile(args.children), 'mdx'); + const { content } = await compile( + new VFile(args.children), + 'mdx', + MDX_COMPONENTS + ); return { Content: content }; }, diff --git a/apps/site/components/MDX/CodeBox/index.tsx b/apps/site/components/MDX/CodeBox/index.tsx index e1b1aba31ad16..01df11b11e741 100644 --- a/apps/site/components/MDX/CodeBox/index.tsx +++ b/apps/site/components/MDX/CodeBox/index.tsx @@ -10,13 +10,14 @@ const MDXCodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ className, showCopyButton, }) => { - const matches = className?.match(/language-(?<language>.*)/); + const matches = className?.match(/language-(?<language>[a-zA-Z]+)/); const language = matches?.groups?.language ?? ''; return ( <CodeBox language={getLanguageDisplayName(language)} showCopyButton={showCopyButton ? showCopyButton === 'true' : undefined} + className={className} > {code} </CodeBox> diff --git a/apps/site/components/MDX/CodeTabs/index.stories.tsx b/apps/site/components/MDX/CodeTabs/index.stories.tsx index f82770f1aa8f0..dd6474be252f1 100644 --- a/apps/site/components/MDX/CodeTabs/index.stories.tsx +++ b/apps/site/components/MDX/CodeTabs/index.stories.tsx @@ -2,6 +2,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import { VFile } from 'vfile'; import { compile } from '@/next.mdx.compiler.mjs'; +import { MDX_COMPONENTS } from '@/next.mdx.components.mjs'; type Props = { children: string }; @@ -43,7 +44,11 @@ export default { render: (_, { loaded: { Content } }) => Content, loaders: [ async ({ args }) => { - const { content } = await compile(new VFile(args.children), 'mdx'); + const { content } = await compile( + new VFile(args.children), + 'mdx', + MDX_COMPONENTS + ); return { Content: content }; }, diff --git a/apps/site/components/MDX/CodeTabs/index.tsx b/apps/site/components/MDX/CodeTabs/index.tsx index 76a5fb54409ce..9181715377a01 100644 --- a/apps/site/components/MDX/CodeTabs/index.tsx +++ b/apps/site/components/MDX/CodeTabs/index.tsx @@ -1,5 +1,3 @@ -'use client'; - import * as TabsPrimitive from '@radix-ui/react-tabs'; import type { ComponentProps, FC, ReactElement } from 'react'; diff --git a/apps/site/components/__mocks__/client-context.mjs b/apps/site/components/__mocks__/client-context.mjs index ec3641ce50625..a656201f90ff0 100644 --- a/apps/site/components/__mocks__/client-context.mjs +++ b/apps/site/components/__mocks__/client-context.mjs @@ -1,3 +1,5 @@ +'use strict'; + export const getClientContext = () => ({ frontmatter: '', pathname: '', diff --git a/apps/site/components/__mocks__/github-slugger.mjs b/apps/site/components/__mocks__/github-slugger.mjs index 31a075307647b..aefab248aea3b 100644 --- a/apps/site/components/__mocks__/github-slugger.mjs +++ b/apps/site/components/__mocks__/github-slugger.mjs @@ -1,3 +1,5 @@ +'use strict'; + class GitHubSlugger { slug() { return 'mock-slug'; diff --git a/apps/site/components/__mocks__/next-image.mjs b/apps/site/components/__mocks__/next-image.mjs new file mode 100644 index 0000000000000..0d95c0b2b4f32 --- /dev/null +++ b/apps/site/components/__mocks__/next-image.mjs @@ -0,0 +1,4 @@ +'use strict'; + +// eslint-disable-next-line @next/next/no-img-element +export default props => <img {...props} />; diff --git a/apps/site/components/__mocks__/next-intl.mjs b/apps/site/components/__mocks__/next-intl.mjs index c767d0be72542..de3411a1c164c 100644 --- a/apps/site/components/__mocks__/next-intl.mjs +++ b/apps/site/components/__mocks__/next-intl.mjs @@ -1,3 +1,5 @@ +'use strict'; + export const useMessages = () => ({}); export const useNow = () => new Date(); @@ -30,3 +32,6 @@ export const createNavigation = () => ({ usePathname: () => '', useRouter: () => ({ push: () => void null, replace: () => void null }), }); + +// eslint-disable-next-line react-hooks/rules-of-hooks +export const getTranslations = () => Promise.resolve(useTranslations()); diff --git a/apps/site/components/__mocks__/next-router.mjs b/apps/site/components/__mocks__/next-router.mjs index e4a27c6f49e7f..51e1c773089e7 100644 --- a/apps/site/components/__mocks__/next-router.mjs +++ b/apps/site/components/__mocks__/next-router.mjs @@ -1,3 +1,5 @@ +'use strict'; + export const useRouter = () => ({ isReady: true, asPath: '/', diff --git a/apps/site/components/withAvatarGroup.tsx b/apps/site/components/withAvatarGroup.tsx index b0ff4b96ef6b6..dbd8dee55e530 100644 --- a/apps/site/components/withAvatarGroup.tsx +++ b/apps/site/components/withAvatarGroup.tsx @@ -1,5 +1,3 @@ -'use client'; - import type { ComponentProps, FC } from 'react'; import AvatarGroup from '@/components/Common/AvatarGroup'; diff --git a/apps/site/components/withCurrentOS.tsx b/apps/site/components/withCurrentOS.tsx deleted file mode 100644 index 45fa88ecd127b..0000000000000 --- a/apps/site/components/withCurrentOS.tsx +++ /dev/null @@ -1,17 +0,0 @@ -'use client'; - -import type { FC } from 'react'; - -import { useDetectOS } from '@/hooks'; - -type WithCurrentOS = { - children: FC<{ currentOS: ReturnType<typeof useDetectOS> }>; -}; - -const WithCurrentOS: FC<WithCurrentOS> = ({ children: Component }) => { - const osData = useDetectOS(); - - return <Component currentOS={osData} />; -}; - -export default WithCurrentOS; diff --git a/apps/site/components/withDownloadCategories.tsx b/apps/site/components/withDownloadCategories.tsx index 07ad284458e52..ced8346b39d47 100644 --- a/apps/site/components/withDownloadCategories.tsx +++ b/apps/site/components/withDownloadCategories.tsx @@ -1,26 +1,39 @@ -import { getTranslations } from 'next-intl/server'; +import { getLocale, getTranslations } from 'next-intl/server'; import type { FC, PropsWithChildren } from 'react'; +import { getClientContext } from '@/client-context'; import LinkTabs from '@/components/Common/LinkTabs'; import WithNodeRelease from '@/components/withNodeRelease'; -import { useClientContext } from '@/hooks/react-server'; +import getDownloadSnippets from '@/next-data/downloadSnippets'; import getReleaseData from '@/next-data/releaseData'; +import { defaultLocale } from '@/next.locales.mjs'; import { ReleaseProvider } from '@/providers/releaseProvider'; import type { NodeReleaseStatus } from '@/types'; import { getDownloadCategory, mapCategoriesToTabs } from '@/util/downloadUtils'; +// By default the translated languages do not contain all the download snippets +// Hence we always merge any translated snippet with the fallbacks for missing snippets +const fallbackSnippets = await getDownloadSnippets(defaultLocale.code); + const WithDownloadCategories: FC<PropsWithChildren> = async ({ children }) => { + const locale = await getLocale(); const t = await getTranslations(); const releases = await getReleaseData(); + const snippets = await getDownloadSnippets(locale); - // eslint-disable-next-line react-hooks/rules-of-hooks - const { pathname } = useClientContext(); + const { pathname } = getClientContext(); const { page, category, subCategory } = getDownloadCategory(pathname); const initialRelease: NodeReleaseStatus = pathname.includes('current') ? 'Current' : 'LTS'; + // Some available translations do not have download snippets translated or have them partially translated + // This aims to merge the available translated snippets with the fallback snippets + const memoizedSnippets = fallbackSnippets + .filter(snippet => !snippets.some(s => s.name === snippet.name)) + .concat(snippets); + return ( <LinkTabs activeTab={category} @@ -50,7 +63,11 @@ const WithDownloadCategories: FC<PropsWithChildren> = async ({ children }) => { > <WithNodeRelease status={initialRelease}> {({ release }) => ( - <ReleaseProvider initialRelease={release} releases={releases}> + <ReleaseProvider + initialRelease={release} + releases={releases} + snippets={memoizedSnippets} + > {children} </ReleaseProvider> )} diff --git a/apps/site/components/withLayout.tsx b/apps/site/components/withLayout.tsx index 8d5a7d4745e9a..23eab80e4efd6 100644 --- a/apps/site/components/withLayout.tsx +++ b/apps/site/components/withLayout.tsx @@ -8,7 +8,6 @@ import DownloadLayout from '@/layouts/Download'; import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; import LearnLayout from '@/layouts/Learn'; import PostLayout from '@/layouts/Post'; -import SearchLayout from '@/layouts/Search'; import type { Layouts } from '@/types'; const layouts = { @@ -18,7 +17,6 @@ const layouts = { page: DefaultLayout, 'blog-post': PostLayout, 'blog-category': BlogLayout, - search: SearchLayout, download: DownloadLayout, article: ArticlePageLayout, } satisfies Record<Layouts, FC>; diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index 1c895179c5b31..612052305c51c 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -1,4 +1,5 @@ 'use client'; + import { useFormatter } from 'next-intl'; import type { FC } from 'react'; diff --git a/apps/site/components/withProgressionSidebar.tsx b/apps/site/components/withProgressionSidebar.tsx index 0a5e0565ca7e7..b71995a37c808 100644 --- a/apps/site/components/withProgressionSidebar.tsx +++ b/apps/site/components/withProgressionSidebar.tsx @@ -1,10 +1,8 @@ -'use client'; - import type { RichTranslationValues } from 'next-intl'; import type { FC } from 'react'; import ProgressionSidebar from '@/components/Common/ProgressionSidebar'; -import { useSiteNavigation } from '@/hooks/server'; +import { useSiteNavigation } from '@/hooks'; import type { NavigationKeys } from '@/types'; type WithProgressionSidebarProps = { diff --git a/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs b/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs index f8129be8cbdc3..214ab70a7c88a 100644 --- a/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs @@ -72,7 +72,7 @@ describe('useDetectOS', () => { await waitFor(() => { expect(result.current).toStrictEqual({ os: 'MAC', - bitness: 86, + bitness: 64, architecture: '', }); }); diff --git a/apps/site/hooks/react-client/useClientContext.ts b/apps/site/hooks/react-client/useClientContext.ts index 3da7aa1401931..a323ab0428fdb 100644 --- a/apps/site/hooks/react-client/useClientContext.ts +++ b/apps/site/hooks/react-client/useClientContext.ts @@ -6,10 +6,27 @@ import { MatterContext } from '@/providers/matterProvider'; import type { ClientSharedServerContext } from '@/types'; const useClientContext = (): ClientSharedServerContext => { - const { frontmatter, pathname, headings, readingTime, filename } = - useContext(MatterContext); + const { + frontmatter, + pathname, + headings, + readingTime, + filename, + os, + architecture, + bitness, + } = useContext(MatterContext); - return { pathname, frontmatter, headings, readingTime, filename }; + return { + pathname, + frontmatter, + headings, + readingTime, + filename, + os, + architecture, + bitness, + }; }; export default useClientContext; diff --git a/apps/site/hooks/react-client/useDetectOS.ts b/apps/site/hooks/react-client/useDetectOS.ts index aaf96bc149c68..df5a8d7061643 100644 --- a/apps/site/hooks/react-client/useDetectOS.ts +++ b/apps/site/hooks/react-client/useDetectOS.ts @@ -16,29 +16,32 @@ type UserOSState = { const useDetectOS = () => { const [userOSState, setUserOSState] = useState<UserOSState>({ os: 'LOADING', - bitness: 86, - architecture: 'ARM', + bitness: 64, + architecture: '', }); useEffect(() => { - Promise.all([getBitness(), getArchitecture()]).then( - ([bitness, architecture]) => { - const userAgent: string | undefined = - (typeof navigator === 'object' && navigator.userAgent) || ''; - // Default bitness if unable to determine - const defaultBitness: number = 86; - // Regex to detect 64-bit architecture in user agent - const bitnessRegex = /WOW64|Win64|x86_64|x86-64|x64_64|x64;|AMD64/; - - setUserOSState({ - os: detectOS(), - bitness: - bitness === '64' || bitnessRegex.test(userAgent) - ? 64 - : defaultBitness, - architecture: architecture ? architecture : '', - }); - } + // If the navigator User Agent indicates a 64-bit OS, we can assume the bitness is 64. + const uaIndicates64 = /WOW64|Win64|x86_64|x86-64|x64_64|x64;|AMD64/.test( + navigator.userAgent + ); + + // We immediately set the OS to LOADING, and then we update it with the detected OS. + // This is due to that initial render set within the state will indicate a mismatch from + // the server-side rendering versus what the initial state is from the client-side + setUserOSState(current => ({ ...current, os: detectOS() })); + + // We then update the bitness based on the detected OS and the user agent + getBitness().then((bitness = '64') => + setUserOSState(current => ({ + ...current, + bitness: bitness === '64' || uaIndicates64 ? 64 : 86, + })) + ); + + // We then update the architecture based on the detected OS + getArchitecture().then((architecture = '') => + setUserOSState(current => ({ ...current, architecture })) ); }, []); diff --git a/apps/site/jest.config.mjs b/apps/site/jest.config.mjs index bdf0030a1a391..5bdcdf737d1ae 100644 --- a/apps/site/jest.config.mjs +++ b/apps/site/jest.config.mjs @@ -15,6 +15,7 @@ const customJestConfig = { moduleNameMapper: { 'next/router': '<rootDir>/components/__mocks__/next-router.mjs', 'next-intl': '<rootDir>/components/__mocks__/next-intl.mjs', + 'next-intl/server': '<rootDir>/components/__mocks__/next-intl.mjs', 'github-slugger': '<rootDir>/components/__mocks__/github-slugger.mjs', '^@/(.*)$': '<rootDir>/$1', }, diff --git a/apps/site/layouts/Post.tsx b/apps/site/layouts/Post.tsx index ff74db2eea28c..767cab456dc92 100644 --- a/apps/site/layouts/Post.tsx +++ b/apps/site/layouts/Post.tsx @@ -29,7 +29,7 @@ const PostLayout: FC<PropsWithChildren> = ({ children }) => { <h1>{frontmatter.title}</h1> <section> - <WithAvatarGroup names={authors} /> + <WithAvatarGroup names={authors} size="medium" /> <p>{authors.join(', ')}</p> </section> diff --git a/apps/site/layouts/Search.tsx b/apps/site/layouts/Search.tsx deleted file mode 100644 index e2b3bb982ef6e..0000000000000 --- a/apps/site/layouts/Search.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import type { FC, PropsWithChildren } from 'react'; - -import WithFooter from '@/components/withFooter'; -import WithNavBar from '@/components/withNavBar'; - -const SearchLayout: FC<PropsWithChildren> = ({ children }) => ( - <> - <WithNavBar /> - <main>{children}</main> - <WithFooter /> - </> -); - -export default SearchLayout; diff --git a/apps/site/next-data/blogData.ts b/apps/site/next-data/blogData.ts index 0dd576f0e1171..98530274ffb1e 100644 --- a/apps/site/next-data/blogData.ts +++ b/apps/site/next-data/blogData.ts @@ -1,22 +1,17 @@ import { ENABLE_STATIC_EXPORT, - IS_DEVELOPMENT, + IS_DEV_ENV, NEXT_DATA_URL, VERCEL_ENV, } from '@/next.constants.mjs'; import type { BlogPostsRSC } from '@/types'; -// Prevents React from throwing an Error when not able to fulfil a request -// due to missing category or internal processing errors -const parseBlogDataResponse = (data: string): BlogPostsRSC => - data.startsWith('{') ? JSON.parse(data) : { posts: [], pagination: {} }; - const getBlogData = (cat: string, page?: number): Promise<BlogPostsRSC> => { // When we're using Static Exports the Next.js Server is not running (during build-time) // hence the self-ingestion APIs will not be available. In this case we want to load // the data directly within the current thread, which will anyways be loaded only once // We use lazy-imports to prevent `provideBlogData` from executing on import - if (ENABLE_STATIC_EXPORT || (!IS_DEVELOPMENT && !VERCEL_ENV)) { + if (ENABLE_STATIC_EXPORT || (VERCEL_ENV !== 'production' && !IS_DEV_ENV)) { return import('@/next-data/providers/blogData').then( ({ provideBlogPosts, providePaginatedBlogPosts }) => page ? providePaginatedBlogPosts(cat, page) : provideBlogPosts(cat) @@ -29,7 +24,7 @@ const getBlogData = (cat: string, page?: number): Promise<BlogPostsRSC> => { // outdated information being shown to the user. return fetch(fetchURL) .then(response => response.text()) - .then(response => parseBlogDataResponse(response)); + .then(JSON.parse); }; export default getBlogData; diff --git a/apps/site/next-data/downloadSnippets.ts b/apps/site/next-data/downloadSnippets.ts new file mode 100644 index 0000000000000..c1ccaa90a59ce --- /dev/null +++ b/apps/site/next-data/downloadSnippets.ts @@ -0,0 +1,44 @@ +import { + ENABLE_STATIC_EXPORT, + IS_DEV_ENV, + NEXT_DATA_URL, + VERCEL_ENV, +} from '@/next.constants.mjs'; +import { availableLocaleCodes } from '@/next.locales.mjs'; +import type { DownloadSnippet } from '@/types'; + +const getDownloadSnippets = (lang: string): Promise<Array<DownloadSnippet>> => { + // Prevents attempting to retrieve data for an unsupported language as both the generator + // and the API endpoint will simply return 404. And we want to prevent a 404 response. + if (availableLocaleCodes.includes(lang) === false) { + return Promise.resolve([]); + } + + // When we're using Static Exports the Next.js Server is not running (during build-time) + // hence the self-ingestion APIs will not be available. In this case we want to load + // the data directly within the current thread, which will anyways be loaded only once + // We use lazy-imports to prevent `provideBlogData` from executing on import + if (ENABLE_STATIC_EXPORT || (VERCEL_ENV !== 'production' && !IS_DEV_ENV)) { + return import('@/next-data/providers/downloadSnippets').then( + ({ default: provideDownloadSnippets }) => provideDownloadSnippets(lang)! + ); + } + + // Applies the language to the URL, since this content is actually localized + const LOCALIZED_NEXT_DATA = NEXT_DATA_URL.replace( + '/en/next-data/', + `/${lang}/next-data/` + ); + + const fetchURL = `${LOCALIZED_NEXT_DATA}download-snippets`; + + // 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) + .then(response => response.text()) + .then(JSON.parse); +}; + +export default getDownloadSnippets; diff --git a/apps/site/next-data/generators/downloadSnippets.mjs b/apps/site/next-data/generators/downloadSnippets.mjs new file mode 100644 index 0000000000000..dcd3d995e3736 --- /dev/null +++ b/apps/site/next-data/generators/downloadSnippets.mjs @@ -0,0 +1,44 @@ +'use strict'; + +import { readFile } from 'node:fs/promises'; +import { basename, extname, join } from 'node:path'; + +import { glob } from 'glob'; + +import { availableLocaleCodes } from '../../next.locales.mjs'; + +/** + * This method is used to generate the Node.js Website Download Snippets + * for self-consumption during RSC and Static Builds + */ +const generateDownloadSnippets = async () => { + /** + * This generates all the Download Snippets for each available Locale + * + * @type {Array<[string, import('../../types').DownloadSnippet[]]>} + */ + const downloadSnippets = availableLocaleCodes.flatMap(async locale => { + // We retrieve the full pathnames of all Blog Posts to read each file individually + // Note that we get the files original language (Bash/PowerShell, etc) + const filenames = await glob('**/*.bash', { + root: process.cwd(), + cwd: `snippets/${locale}/download`, + }); + + // Creates the base path for the snippets for Node to read from + const basePath = join(process.cwd(), `snippets/${locale}/download`); + + // Read the raw Markdown snippets for each locale + const snippets = filenames.map(async filename => ({ + name: basename(filename, extname(filename)), + language: extname(filename).slice(1), + content: await readFile(join(basePath, filename), 'utf-8'), + })); + + return [locale, await Promise.all(snippets)]; + }); + + return new Map(await Promise.all(downloadSnippets)); +}; + +export default generateDownloadSnippets; diff --git a/apps/site/next-data/providers/downloadSnippets.ts b/apps/site/next-data/providers/downloadSnippets.ts new file mode 100644 index 0000000000000..29b5ec7f62631 --- /dev/null +++ b/apps/site/next-data/providers/downloadSnippets.ts @@ -0,0 +1,15 @@ +import { cache } from 'react'; + +import generateDownloadSnippets from '@/next-data/generators/downloadSnippets.mjs'; + +const downloadSnippets = await generateDownloadSnippets(); + +const provideDownloadSnippets = cache((language: string) => { + if (downloadSnippets.has(language)) { + return downloadSnippets.get(language)!; + } + + return undefined; +}); + +export default provideDownloadSnippets; diff --git a/apps/site/next-data/providers/websiteFeeds.ts b/apps/site/next-data/providers/websiteFeeds.ts index fff1eb6af6c10..79f9ef404d81b 100644 --- a/apps/site/next-data/providers/websiteFeeds.ts +++ b/apps/site/next-data/providers/websiteFeeds.ts @@ -7,7 +7,7 @@ const websiteFeeds = generateWebsiteFeeds(provideBlogPosts('all')); const provideWebsiteFeeds = cache((feed: string) => { if (feed.includes('.xml') && websiteFeeds.has(feed)) { - return websiteFeeds.get(feed)?.rss2(); + return websiteFeeds.get(feed)!.rss2(); } return undefined; diff --git a/apps/site/next-data/releaseData.ts b/apps/site/next-data/releaseData.ts index 25af64ef07d9c..5f238fdc6ff0f 100644 --- a/apps/site/next-data/releaseData.ts +++ b/apps/site/next-data/releaseData.ts @@ -1,6 +1,6 @@ import { ENABLE_STATIC_EXPORT, - IS_DEVELOPMENT, + IS_DEV_ENV, NEXT_DATA_URL, VERCEL_ENV, } from '@/next.constants.mjs'; @@ -11,7 +11,7 @@ const getReleaseData = (): Promise<Array<NodeRelease>> => { // hence the self-ingestion APIs will not be available. In this case we want to load // the data directly within the current thread, which will anyways be loaded only once // We use lazy-imports to prevent `provideBlogData` from executing on import - if (ENABLE_STATIC_EXPORT || (!IS_DEVELOPMENT && !VERCEL_ENV)) { + if (ENABLE_STATIC_EXPORT || (VERCEL_ENV !== 'production' && !IS_DEV_ENV)) { return import('@/next-data/providers/releaseData').then( ({ default: provideReleaseData }) => provideReleaseData() ); diff --git a/apps/site/next-env.d.ts b/apps/site/next-env.d.ts new file mode 100644 index 0000000000000..3cd7048ed9471 --- /dev/null +++ b/apps/site/next-env.d.ts @@ -0,0 +1,6 @@ +/// <reference types="next" /> +/// <reference types="next/image-types/global" /> +/// <reference types="next/navigation-types/compat/navigation" /> + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index 91c19366aae3c..19b731e36d388 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -21,6 +21,12 @@ const nextConfig = { // 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', + hostname: 'avatars.githubusercontent.com', + port: '', + pathname: '/**', + }, { protocol: 'https', hostname: 'bestpractices.coreinfrastructure.org', @@ -76,7 +82,6 @@ const nextConfig = { // @see https://vercel.com/blog/how-we-optimized-package-imports-in-next-js optimizePackageImports: [ '@radix-ui/react-accessible-icon', - '@radix-ui/react-avatar', '@radix-ui/react-dropdown-menu', '@radix-ui/react-label', '@radix-ui/react-scroll-area', @@ -86,6 +91,7 @@ const nextConfig = { '@radix-ui/react-toast', '@radix-ui/react-tooltip', '@orama/highlight', + '@orama/react-components', '@heroicons/react', 'tailwindcss', 'shiki', diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index bc9ee3a50fc16..ea8fd0be2ea29 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -3,16 +3,25 @@ /** * This is used to verify if the current Website is running on a Development Environment */ -export const IS_DEVELOPMENT = process.env.NODE_ENV === 'development'; +export const IS_DEV_ENV = process.env.NODE_ENV === 'development'; /** * This is used for telling Next.js if the Website is deployed on Vercel * * Can be used for conditionally enabling features that we know are Vercel only * - * @see https://vercel.com/docs/concepts/projects/environment-variables/system-environment-variables#framework-environment-variables + * @see https://vercel.com/docs/projects/environment-variables/system-environment-variables#VERCEL_ENV + */ +export const VERCEL_ENV = process.env.VERCEL_ENV || undefined; + +/** + * This is used for telling Next.js if we are current during build time or in runtime environment + * + * Can be used for conditionally enabling features that we know are Vercel only + * + * @see https://vercel.com/docs/projects/environment-variables/system-environment-variables#VERCEL_REGION */ -export const VERCEL_ENV = process.env.NEXT_PUBLIC_VERCEL_ENV || undefined; +export const VERCEL_REGION = process.env.VERCEL_REGION || undefined; /** * This is used for telling Next.js to do a Static Export Build of the Website @@ -36,8 +45,8 @@ export const ENABLE_STATIC_EXPORT = */ export const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL ? process.env.NEXT_PUBLIC_BASE_URL - : process.env.NEXT_PUBLIC_VERCEL_URL - ? `https://${process.env.NEXT_PUBLIC_VERCEL_URL}` + : process.env.VERCEL_URL + ? `https://${process.env.VERCEL_URL}` : 'https://nodejs.org'; /** @@ -168,7 +177,8 @@ export const ORAMA_CLOUD_ENDPOINT = * The default Orama Cloud API Key to use when searching with Orama Cloud. * This is a public API key and can be shared publicly on the frontend. */ -export const ORAMA_CLOUD_API_KEY = process.env.NEXT_PUBLIC_ORAMA_API_KEY || ''; +export const ORAMA_CLOUD_API_KEY = + process.env.NEXT_PUBLIC_ORAMA_API_KEY || 'qopIuAERiWP2EZOpDjvczjws7WV40yrj'; /** * A GitHub Access Token for accessing the GitHub API and not being rate-limited diff --git a/apps/site/next.dynamic.mjs b/apps/site/next.dynamic.mjs index e4cd1a96d2270..a7e3467a4f123 100644 --- a/apps/site/next.dynamic.mjs +++ b/apps/site/next.dynamic.mjs @@ -8,21 +8,22 @@ import { cache } from 'react'; import { VFile } from 'vfile'; import { - BASE_URL, BASE_PATH, - IS_DEVELOPMENT, + BASE_URL, DEFAULT_CATEGORY_OG_TYPE, ENABLE_STATIC_EXPORT, + IS_DEV_ENV, } from './next.constants.mjs'; import { - IGNORED_ROUTES, DYNAMIC_ROUTES, + IGNORED_ROUTES, PAGE_METADATA, } from './next.dynamic.constants.mjs'; import { getMarkdownFiles } from './next.helpers.mjs'; import { siteConfig } from './next.json.mjs'; import { availableLocaleCodes, defaultLocale } from './next.locales.mjs'; import { compile } from './next.mdx.compiler.mjs'; +import { MDX_COMPONENTS } from './next.mdx.components.mjs'; // This is the combination of the Application Base URL and Base PATH const baseUrlAndPath = `${BASE_URL}${BASE_PATH}`; @@ -41,7 +42,7 @@ const mapPathToRoute = (locale = defaultLocale.code, path = '') => ({ // Provides an in-memory Map that lasts the whole build process // and disabled when on development mode (stubbed) const createCachedMarkdownCache = () => { - if (IS_DEVELOPMENT) { + if (IS_DEV_ENV) { return { has: () => false, set: () => {}, @@ -187,7 +188,7 @@ const getDynamicRouter = async () => { // This compiles our MDX source (VFile) into a final MDX-parsed VFile // that then is passed as a string to the MDXProvider which will run the MDX Code - return compile(sourceAsVirtualFile, fileExtension); + return compile(sourceAsVirtualFile, fileExtension, MDX_COMPONENTS); }; // Creates a Cached Version of the MDX Compiler diff --git a/apps/site/next.jsx.compiler.mjs b/apps/site/next.jsx.compiler.mjs new file mode 100644 index 0000000000000..51e8886d08983 --- /dev/null +++ b/apps/site/next.jsx.compiler.mjs @@ -0,0 +1,23 @@ +'use strict'; + +import Sval from 'sval'; + +/** + * Creates a JavaScript Evaluater + * + * @param {Record<string, any>} dependencies All sort of dependencies to be passed to the JavaScript context + * @param {'module' | 'script'} mode The mode of the JavaScript execution + * + * @returns {Sval} Returns an Sandboxed instance of a JavaScript interpreter + */ +export const createSval = (dependencies, mode = 'module') => { + const svalInterpreter = new Sval({ + ecmaVer: 'latest', + sandBox: true, + sourceType: mode, + }); + + svalInterpreter.import(dependencies); + + return svalInterpreter; +}; diff --git a/apps/site/next.mdx.compiler.mjs b/apps/site/next.mdx.compiler.mjs index 4c3544085b96f..009c25f067e74 100644 --- a/apps/site/next.mdx.compiler.mjs +++ b/apps/site/next.mdx.compiler.mjs @@ -1,20 +1,24 @@ 'use strict'; import { compile as mdxCompile } from '@mdx-js/mdx'; +import { Fragment, jsx, jsxs } from 'react/jsx-runtime'; import { matter } from 'vfile-matter'; -import { MDX_COMPONENTS } from './next.mdx.components.mjs'; -import { createSval } from './next.mdx.evaluater.mjs'; +import { createSval } from './next.jsx.compiler.mjs'; import { REHYPE_PLUGINS, REMARK_PLUGINS } from './next.mdx.plugins.mjs'; import { createGitHubSlugger } from './util/gitHubUtils'; +// Defines a JSX Fragment and JSX Runtime for the MDX Compiler +export const reactRuntime = { Fragment, jsx, jsxs }; + /** * This is our custom simple MDX Compiler that is used to compile Markdown and MDX * this returns a serializable VFile as a string that then gets passed to our MDX Provider * - * @param {import('vfile').VFile} source - * @param {'md' | 'mdx'} fileExtension - * @param {import('mdx/types').MDXComponents} components + * @param {import('vfile').VFile} source The source Markdown/MDX content + * @param {'md' | 'mdx'} fileExtension If it should use the MDX or a plain Markdown parser/compiler + * @param {import('mdx/types').MDXComponents} components The MDX Components to be used in the MDX Provider + * @param {Record<string, any>} props Extra optional React props for the MDX Provider * * @returns {Promise<{ * content: import('react').ReactElement; @@ -26,7 +30,8 @@ import { createGitHubSlugger } from './util/gitHubUtils'; export async function compile( source, fileExtension, - components = MDX_COMPONENTS + components = {}, + props = {} ) { // Parses the Frontmatter to the VFile and removes from the original source // cleaning the frontmatter to the source that is going to be parsed by the MDX Compiler @@ -42,7 +47,10 @@ export async function compile( format: fileExtension, }); - const interpreter = createSval(components); + const interpreter = createSval({ + ...components, + 'react/jsx-runtime': reactRuntime, + }); // Run the compiled JavaScript code from MDX interpreter.run(compiled.toString()); @@ -51,7 +59,7 @@ export async function compile( const MDXContent = interpreter.exports.default; // Render the MDX content directly from the compiler - const content = <MDXContent components={components} />; + const content = <MDXContent {...props} components={components} />; // Retrieve some parsed data from the VFile metadata // such as frontmatter and Markdown headings diff --git a/apps/site/next.mdx.evaluater.mjs b/apps/site/next.mdx.evaluater.mjs deleted file mode 100644 index 945dfeb1c4408..0000000000000 --- a/apps/site/next.mdx.evaluater.mjs +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -import { Fragment, jsx, jsxs } from 'react/jsx-runtime'; -import Sval from 'sval'; - -// Defines the React Runtime Components -const reactRuntime = { Fragment, jsx, jsxs }; - -/** - * Creates a JavaScript Evaluater - * - * @param {import('mdx/types').MDXComponents} components - * @returns {Sval} - */ -export const createSval = components => { - const svalInterpreter = new Sval({ - ecmaVer: 'latest', - sandBox: true, - sourceType: 'module', - }); - - svalInterpreter.import(components); - svalInterpreter.import('react/jsx-runtime', reactRuntime); - - return svalInterpreter; -}; diff --git a/apps/site/next.mdx.shiki.mjs b/apps/site/next.mdx.shiki.mjs index 136743b96b611..9b8c0edbb94d4 100644 --- a/apps/site/next.mdx.shiki.mjs +++ b/apps/site/next.mdx.shiki.mjs @@ -4,7 +4,7 @@ import classNames from 'classnames'; import { toString } from 'hast-util-to-string'; import { SKIP, visit } from 'unist-util-visit'; -import { shikiPromise, highlightToHast } from './util/getHighlighter'; +import { highlightToHast } from './util/getHighlighter'; // This is what Remark will use as prefix within a <pre> className // to attribute the current language of the <pre> element @@ -54,12 +54,7 @@ function isCodeBlock(node) { } export default function rehypeShikiji() { - return async function (tree) { - // We do a top-level await, since the Unist-tree visitor - // is synchronous, and it makes more sense to do a top-level - // await, rather than an await inside the visitor function - const memoizedShiki = highlightToHast(await shikiPromise); - + return function (tree) { visit(tree, 'element', (_, index, parent) => { const languages = []; const displayNames = []; @@ -174,7 +169,7 @@ export default function rehypeShikiji() { const languageId = codeLanguage.slice(languagePrefix.length); // Parses the <pre> contents and returns a HAST tree with the highlighted code - const { children } = memoizedShiki(preElementContents, languageId); + const { children } = highlightToHast(preElementContents, languageId); // Adds the original language back to the <pre> element children[0].properties.class = classNames( diff --git a/apps/site/package.json b/apps/site/package.json index b715b113826cf..89e6e95ea1b39 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -30,7 +30,6 @@ "@orama/react-components": "^0.1.23", "@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", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-scroll-area": "^1.2.1", @@ -53,7 +52,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "15.0.3", + "next": "15.1.2", "next-intl": "~3.25.3", "next-themes": "~0.4.3", "postcss": "~8.4.49", @@ -78,7 +77,7 @@ }, "devDependencies": { "@eslint/compat": "~1.2.3", - "@next/eslint-plugin-next": "15.0.3", + "@next/eslint-plugin-next": "15.1.2", "@storybook/addon-controls": "^8.4.6", "@storybook/addon-interactions": "^8.4.6", "@storybook/addon-styling-webpack": "^1.0.1", @@ -93,7 +92,7 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", - "eslint-config-next": "15.0.3", + "eslint-config-next": "15.1.2", "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.2", diff --git a/apps/site/providers/__tests__/matterProvider.test.mjs b/apps/site/providers/__tests__/matterProvider.test.mjs index 699f251f46645..4114da6537eeb 100644 --- a/apps/site/providers/__tests__/matterProvider.test.mjs +++ b/apps/site/providers/__tests__/matterProvider.test.mjs @@ -8,6 +8,12 @@ const mockContext = { headings: [], readingTime: { text: '', minutes: 0, time: 0, words: 0 }, filename: '', + // @TODO: For some reason the initial value of the provider is flipping between + // LOADING and OTHER, although the initial state is LOADING, render() might be doing more + // than just initial rendering; This requires more investigation. + os: expect.any(String), + architecture: '', + bitness: 64, }; describe('MatterProvider', () => { diff --git a/apps/site/providers/matterProvider.tsx b/apps/site/providers/matterProvider.tsx index 47f1899b502a0..ba028bf3edccd 100644 --- a/apps/site/providers/matterProvider.tsx +++ b/apps/site/providers/matterProvider.tsx @@ -3,6 +3,7 @@ import { createContext } from 'react'; import type { FC, PropsWithChildren } from 'react'; +import { useDetectOS } from '@/hooks'; import type { ClientSharedServerContext } from '@/types'; import { assignClientContext } from '@/util/assignClientContext'; @@ -17,8 +18,12 @@ type MatterProviderProps = PropsWithChildren< export const MatterProvider: FC<MatterProviderProps> = ({ children, ...data -}) => ( - <MatterContext.Provider value={assignClientContext(data)}> - {children} - </MatterContext.Provider> -); +}) => { + const os = useDetectOS(); + + return ( + <MatterContext.Provider value={assignClientContext({ ...os, ...data })}> + {children} + </MatterContext.Provider> + ); +}; diff --git a/apps/site/providers/releaseProvider.tsx b/apps/site/providers/releaseProvider.tsx index c17e8748af4cd..8666b8029769b 100644 --- a/apps/site/providers/releaseProvider.tsx +++ b/apps/site/providers/releaseProvider.tsx @@ -3,7 +3,7 @@ import type { Dispatch, PropsWithChildren, FC } from 'react'; import { createContext, useMemo, useReducer } from 'react'; -import type { NodeRelease } from '@/types'; +import type { DownloadSnippet, NodeRelease } from '@/types'; import type { ReleaseDispatchActions, ReleaseAction, @@ -13,11 +13,10 @@ import type { } from '@/types/release'; const initialState: ReleaseState = { - releases: [], - release: {} as NodeRelease, - os: 'OTHER', + os: 'LOADING', bitness: '', platform: 'NVM', + version: '', }; const createDispatchActions = ( @@ -32,21 +31,22 @@ const createDispatchActions = ( export const ReleaseContext = createContext<ReleaseContextType>({ ...initialState, ...createDispatchActions(() => {}), + releases: [], + snippets: [], + release: {} as NodeRelease, + snippet: {} as DownloadSnippet, }); export const ReleaseProvider: FC<PropsWithChildren<ReleaseProviderProps>> = ({ children, releases, + snippets, initialRelease, }) => { - const getReleaseFromVersion = (version: string) => - releases.find(({ versionWithPrefix }) => versionWithPrefix === version) ?? - ({} as NodeRelease); - const releaseReducer = (state: ReleaseState, action: ReleaseAction) => { switch (action.type) { case 'SET_VERSION': - return { ...state, release: getReleaseFromVersion(action.payload) }; + return { ...state, version: action.payload }; case 'SET_OS': return { ...state, os: action.payload }; case 'SET_BITNESS': @@ -60,14 +60,36 @@ export const ReleaseProvider: FC<PropsWithChildren<ReleaseProviderProps>> = ({ const [state, dispatch] = useReducer(releaseReducer, { ...initialState, - releases: releases, - release: initialRelease, + version: initialRelease.versionWithPrefix, }); const actions = useMemo(() => createDispatchActions(dispatch), [dispatch]); + const releaseFromVersion = useMemo( + () => releases.find(r => r.versionWithPrefix === state.version)!, + // Memoizes the release based on the version + // eslint-disable-next-line react-hooks/exhaustive-deps + [state.version] + ); + + const snippetFromPlatform = useMemo( + () => snippets.find(s => s.name === state.platform.toLowerCase())!, + // Memoizes the snippet based on the platform + // eslint-disable-next-line react-hooks/exhaustive-deps + [state.platform] + ); + + const providerContext = { + ...state, + ...actions, + releases, + snippets, + release: releaseFromVersion, + snippet: snippetFromPlatform, + }; + return ( - <ReleaseContext.Provider value={{ ...state, ...actions }}> + <ReleaseContext.Provider value={providerContext}> {children} </ReleaseContext.Provider> ); diff --git a/apps/site/snippets/en/download/brew.bash b/apps/site/snippets/en/download/brew.bash new file mode 100644 index 0000000000000..30285746f6e3c --- /dev/null +++ b/apps/site/snippets/en/download/brew.bash @@ -0,0 +1,8 @@ +# download and install Node.js +brew install node@${props.release.major} + +# verifies the right Node.js version is in the environment +node -v # should print "${props.release.versionWithPrefix}" + +# verifies the right npm version is in the environment +npm -v # should print "${props.release.npm}" diff --git a/apps/site/snippets/en/download/choco.bash b/apps/site/snippets/en/download/choco.bash new file mode 100644 index 0000000000000..62b3a4783c81d --- /dev/null +++ b/apps/site/snippets/en/download/choco.bash @@ -0,0 +1,8 @@ +# download and install Node.js +choco install nodejs-lts --version="${props.release.major}" + +# verifies the right Node.js version is in the environment +node -v # should print "${props.release.versionWithPrefix}" + +# verifies the right npm version is in the environment +npm -v # should print "${props.release.npm}" diff --git a/apps/site/snippets/en/download/docker.bash b/apps/site/snippets/en/download/docker.bash new file mode 100644 index 0000000000000..e478cb8c1dcf6 --- /dev/null +++ b/apps/site/snippets/en/download/docker.bash @@ -0,0 +1,8 @@ +# pulls the Node.js Docker image +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# verifies the right Node.js version is in the environment +docker run node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} node -v # should print "${props.release.versionWithPrefix}" + +# verifies the right npm version is in the environment +docker run node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} npm -v # should print "${props.release.npm}" diff --git a/apps/site/snippets/en/download/fnm.bash b/apps/site/snippets/en/download/fnm.bash new file mode 100644 index 0000000000000..77c235d49fbef --- /dev/null +++ b/apps/site/snippets/en/download/fnm.bash @@ -0,0 +1,8 @@ +# download and install Node.js +fnm install ${props.release.major} + +# verifies the right Node.js version is in the environment +node -v # should print "${props.release.versionWithPrefix}" + +# verifies the right npm version is in the environment +npm -v # should print "${props.release.npm}" diff --git a/apps/site/snippets/en/download/nvm.bash b/apps/site/snippets/en/download/nvm.bash new file mode 100644 index 0000000000000..97653d94e28f6 --- /dev/null +++ b/apps/site/snippets/en/download/nvm.bash @@ -0,0 +1,8 @@ +# download and install Node.js (you may need to restart the terminal) +nvm install ${props.release.major} + +# verifies the right Node.js version is in the environment +node -v # should print "${props.release.versionWithPrefix}" + +# verifies the right npm version is in the environment +npm -v # should print "${props.release.npm}" diff --git a/apps/site/tailwind.config.ts b/apps/site/tailwind.config.ts index b2aa693bad259..946e81166d6b8 100644 --- a/apps/site/tailwind.config.ts +++ b/apps/site/tailwind.config.ts @@ -90,6 +90,12 @@ export default { 800: '#8B1245', 900: '#411526', }, + pulse: { + 100: '#0000330F', + 200: '#00002D17', + 300: '#DDEAF814', + 400: '#D3EDF81D', + }, white: '#FFFFFF', transparent: 'transparent', shadow: '#101828', @@ -141,6 +147,8 @@ export default { maxWidth: { '8xl': '95rem' }, animation: { surf: 'surf 1s infinite ease-in-out', + pulse: 'pulse 500ms infinite alternate-reverse', + 'pulse-dark': 'pulse-dark 500ms infinite alternate-reverse', }, keyframes: { surf: { @@ -150,6 +158,14 @@ export default { '75%': { transform: 'translate(0, 3px)' }, '100%': { transform: 'translate(0, 0)' }, }, + pulse: { + from: { background: 'theme("colors.pulse.100")' }, + to: { background: 'theme("colors.pulse.200")' }, + }, + 'pulse-dark': { + from: { background: 'theme("colors.pulse.300")' }, + to: { background: 'theme("colors.pulse.400")' }, + }, }, }, }, diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 451ec871b7352..a940f23dc590a 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -7,10 +7,11 @@ "cache": false, "persistent": true, "env": [ - "NEXT_PUBLIC_VERCEL_ENV", + "VERCEL_ENV", + "VERCEL_URL", + "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", "NEXT_PUBLIC_BASE_URL", - "NEXT_PUBLIC_VERCEL_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", "NEXT_PUBLIC_BASE_PATH", @@ -32,10 +33,11 @@ ], "outputs": [".next/**", "!.next/cache/**"], "env": [ - "NEXT_PUBLIC_VERCEL_ENV", + "VERCEL_ENV", + "VERCEL_URL", + "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", "NEXT_PUBLIC_BASE_URL", - "NEXT_PUBLIC_VERCEL_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", "NEXT_PUBLIC_BASE_PATH", @@ -50,10 +52,11 @@ "cache": false, "persistent": true, "env": [ - "NEXT_PUBLIC_VERCEL_ENV", + "VERCEL_ENV", + "VERCEL_URL", + "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", "NEXT_PUBLIC_BASE_URL", - "NEXT_PUBLIC_VERCEL_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", "NEXT_PUBLIC_BASE_PATH", @@ -74,10 +77,11 @@ ], "outputs": [".next/**", "!.next/cache/**"], "env": [ - "NEXT_PUBLIC_VERCEL_ENV", + "VERCEL_ENV", + "VERCEL_URL", + "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", "NEXT_PUBLIC_BASE_URL", - "NEXT_PUBLIC_VERCEL_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", "NEXT_PUBLIC_BASE_PATH", diff --git a/apps/site/types/downloads.ts b/apps/site/types/downloads.ts new file mode 100644 index 0000000000000..91f4366c26a62 --- /dev/null +++ b/apps/site/types/downloads.ts @@ -0,0 +1,5 @@ +export interface DownloadSnippet { + name: string; + language: string; + content: string; +} diff --git a/apps/site/types/index.ts b/apps/site/types/index.ts index 0c7289d93d4ce..53eb2fe7fc6fa 100644 --- a/apps/site/types/index.ts +++ b/apps/site/types/index.ts @@ -11,3 +11,4 @@ export * from './server'; export * from './github'; export * from './calendar'; export * from './author'; +export * from './downloads'; diff --git a/apps/site/types/layouts.ts b/apps/site/types/layouts.ts index 8e354bd51329e..a3e81f69132f7 100644 --- a/apps/site/types/layouts.ts +++ b/apps/site/types/layouts.ts @@ -5,6 +5,5 @@ export type Layouts = | 'page' | 'blog-category' | 'blog-post' - | 'search' | 'download' | 'article'; diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index 5746f9d071b9e..bb609e091bf6a 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -1,5 +1,6 @@ import type { ReactNode } from 'react'; +import type { DownloadSnippet } from '@/types/downloads'; import type { NodeRelease } from '@/types/releases'; import type { UserOS } from '@/types/userOS'; @@ -7,8 +8,7 @@ export type PackageManager = 'NVM' | 'FNM' | 'BREW' | 'DOCKER' | 'CHOCO'; export interface ReleaseState { os: UserOS; - release: NodeRelease; - releases: Array<NodeRelease>; + version: string; bitness: string | number; platform: PackageManager; } @@ -28,10 +28,16 @@ export interface ReleaseDispatchActions { export interface ReleaseContextType extends ReleaseState, - ReleaseDispatchActions {} + ReleaseDispatchActions { + releases: Array<NodeRelease>; + snippets: Array<DownloadSnippet>; + release: NodeRelease; + snippet: DownloadSnippet; +} export interface ReleaseProviderProps { children: ReactNode; releases: Array<NodeRelease>; + snippets: Array<DownloadSnippet>; initialRelease: NodeRelease; } diff --git a/apps/site/types/server.ts b/apps/site/types/server.ts index b42ecebe18136..e668cf6636e0d 100644 --- a/apps/site/types/server.ts +++ b/apps/site/types/server.ts @@ -1,9 +1,11 @@ import type { Heading } from '@vcarl/remark-headings'; import type { ReadTimeResults } from 'reading-time'; -import type { LegacyFrontMatter } from './frontmatter'; +import type { useDetectOS } from '@/hooks'; +import type { LegacyFrontMatter } from '@/types/frontmatter'; -export interface ClientSharedServerContext { +export interface ClientSharedServerContext + extends ReturnType<typeof useDetectOS> { frontmatter: LegacyFrontMatter; headings: Array<Heading>; pathname: string; diff --git a/apps/site/util/__tests__/assignClientContext.test.mjs b/apps/site/util/__tests__/assignClientContext.test.mjs index 8a5f216f6fb8a..48ba4094f8643 100644 --- a/apps/site/util/__tests__/assignClientContext.test.mjs +++ b/apps/site/util/__tests__/assignClientContext.test.mjs @@ -11,6 +11,9 @@ const mockContext = { words: 200, }, filename: 'sample-file.md', + os: 'OTHER', + architecture: 'x64', + bitness: 64, }; describe('assignClientContext', () => { diff --git a/apps/site/util/assignClientContext.ts b/apps/site/util/assignClientContext.ts index f0297b517106c..f9f2e3508ca78 100644 --- a/apps/site/util/assignClientContext.ts +++ b/apps/site/util/assignClientContext.ts @@ -14,4 +14,7 @@ export const assignClientContext = <T extends ClientSharedServerContext>( words: 0, }, filename: props.filename ?? '', + os: props.os ?? 'OTHER', + architecture: props.architecture ?? 'x64', + bitness: props.bitness ?? 64, }) as T; diff --git a/apps/site/util/getHighlighter.ts b/apps/site/util/getHighlighter.ts index 8b9b5b43e438f..2a7b3778e84e8 100644 --- a/apps/site/util/getHighlighter.ts +++ b/apps/site/util/getHighlighter.ts @@ -1,26 +1,23 @@ -import { getSingletonHighlighterCore } from '@shikijs/core'; -import type { HighlighterCore } from '@shikijs/core'; +import { createHighlighterCoreSync } from '@shikijs/core'; import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript'; import { LANGUAGES, DEFAULT_THEME } from '@/shiki.config.mjs'; // This creates a memoized minimal Shikiji Syntax Highlighter -export const shikiPromise = getSingletonHighlighterCore({ +export const shiki = createHighlighterCoreSync({ themes: [DEFAULT_THEME], langs: LANGUAGES, // Let's use Shiki's new Experimental JavaScript-based regex engine! engine: createJavaScriptRegexEngine(), }); -export const highlightToHtml = - (shiki: HighlighterCore) => (code: string, language: string) => - shiki - .codeToHtml(code, { lang: language, theme: DEFAULT_THEME }) - // Shiki will always return the Highlighted code encapsulated in a <pre> and <code> tag - // since our own CodeBox component handles the <code> tag, we just want to extract - // the inner highlighted code to the CodeBox - .match(/<code>(.+?)<\/code>/s)![1]; +export const highlightToHtml = (code: string, language: string) => + shiki + .codeToHtml(code, { lang: language, theme: DEFAULT_THEME }) + // Shiki will always return the Highlighted code encapsulated in a <pre> and <code> tag + // since our own CodeBox component handles the <code> tag, we just want to extract + // the inner highlighted code to the CodeBox + .match(/<code>(.+?)<\/code>/s)![1]; -export const highlightToHast = - (shiki: HighlighterCore) => (code: string, language: string) => - shiki.codeToHast(code, { lang: language, theme: DEFAULT_THEME }); +export const highlightToHast = (code: string, language: string) => + shiki.codeToHast(code, { lang: language, theme: DEFAULT_THEME }); diff --git a/apps/site/util/getNodeDownloadSnippet.ts b/apps/site/util/getNodeDownloadSnippet.ts deleted file mode 100644 index de4109f6aa666..0000000000000 --- a/apps/site/util/getNodeDownloadSnippet.ts +++ /dev/null @@ -1,121 +0,0 @@ -import dedent from 'dedent'; -import type { TranslationValues } from 'next-intl'; - -import type { NodeRelease } from '@/types'; -import type { PackageManager } from '@/types/release'; -import type { UserOS } from '@/types/userOS'; - -export const getNodeDownloadSnippet = ( - release: NodeRelease, - os: UserOS, - t: (key: string, values?: TranslationValues) => string -) => { - const snippets: Record<PackageManager, string> = { - NVM: '', - FNM: '', - BREW: '', - DOCKER: '', - CHOCO: '', - }; - - if (os === 'WIN' || os === 'MAC' || os === 'LINUX') { - snippets.DOCKER = dedent` - # ${t('layouts.download.codeBox.noteWithColon')} - # ${t('layouts.download.codeBox.dockerIsNotNodejsPackageManager')} - # ${t('layouts.download.codeBox.PleaseEndureAlreadyInstallOnSystem')} - # ${t('layouts.download.codeBox.dockerInstructions')} - # ${t('layouts.download.codeBox.dockerImagesLink')} - - # ${t('layouts.download.codeBox.pullsNodejsDockerImage')} - docker pull node:${release.major}-${release.major >= 4 ? 'alpine' : 'slim'} - - # ${t('layouts.download.codeBox.verifiesRightNodejsVersion')} - docker run node:${release.major}-${release.major >= 4 ? 'alpine' : 'slim'} node -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.versionWithPrefix })} - - # ${t('layouts.download.codeBox.verifiesRightNpmVersion')} - docker run node:${release.major}-${release.major >= 4 ? 'alpine' : 'slim'} npm -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.npm })}`; - } - - if (os === 'MAC' || os === 'LINUX') { - snippets.NVM = dedent` - # ${t('layouts.download.codeBox.installsNvm')} - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash - - # ${t('layouts.download.codeBox.downloadAndInstallNodejsRestartTerminal')} - nvm install ${release.major} - - # ${t('layouts.download.codeBox.verifiesRightNodejsVersion')} - node -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.versionWithPrefix })} - - # ${t('layouts.download.codeBox.verifiesRightNpmVersion')} - npm -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.npm })}`; - - snippets.FNM = dedent` - # ${t('layouts.download.codeBox.installsFnm')} - curl -fsSL https://fnm.vercel.app/install | bash - - # ${t('layouts.download.codeBox.activateFNM')} - source ~/.bashrc - - # ${t('layouts.download.codeBox.downloadAndInstallNodejs')} - fnm use --install-if-missing ${release.major} - - # ${t('layouts.download.codeBox.verifiesRightNodejsVersion')} - node -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.versionWithPrefix })} - - # ${t('layouts.download.codeBox.verifiesRightNpmVersion')} - npm -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.npm })}`; - - snippets.BREW = dedent` - # ${t('layouts.download.codeBox.noteWithColon')} - # ${t('layouts.download.codeBox.homebrewIsNotNodejsPackageManager')} - # ${t('layouts.download.codeBox.PleaseEndureAlreadyInstallOnSystem')} - # ${t('layouts.download.codeBox.homebrewInstructions')} - # ${t('layouts.download.codeBox.homebrewSupportsIntallingMajorNodejsVersion', { version: release.major })} - - # ${t('layouts.download.codeBox.downloadAndInstallNodejs')} - brew install node@${release.major} - - # ${t('layouts.download.codeBox.verifiesRightNodejsVersion')} - node -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.versionWithPrefix })} - - # ${t('layouts.download.codeBox.verifiesRightNpmVersion')} - npm -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.npm })}`; - } - - if (os === 'WIN') { - snippets.FNM = dedent` - # ${t('layouts.download.codeBox.installsFnm')} - winget install Schniz.fnm - - # ${t('layouts.download.codeBox.fnmEnvSetup')} - fnm env --use-on-cd | Out-String | Invoke-Expression - - # ${t('layouts.download.codeBox.downloadAndInstallNodejs')} - fnm use --install-if-missing ${release.major} - - # ${t('layouts.download.codeBox.verifiesRightNodejsVersion')} - node -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.versionWithPrefix })} - - # ${t('layouts.download.codeBox.verifiesRightNpmVersion')} - npm -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.npm })}`; - - snippets.CHOCO = dedent` - # ${t('layouts.download.codeBox.noteWithColon')} - # ${t('layouts.download.codeBox.chocolateyIsNotNodejsPackageManager')} - # ${t('layouts.download.codeBox.PleaseEndureAlreadyInstallOnSystem')} - # ${t('layouts.download.codeBox.chocolateyInstructions')} - # ${t('layouts.download.codeBox.chocolateyNotMaintanedByNodejs', { version: release.versionWithPrefix })} - - # ${t('layouts.download.codeBox.downloadAndInstallNodejs')} - choco install nodejs${release.isLts ? '-lts' : ''} --version="${release.version}" - - # ${t('layouts.download.codeBox.verifiesRightNodejsVersion')} - node -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.major })} - - # ${t('layouts.download.codeBox.verifiesRightNpmVersion')} - npm -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.npm })}`; - } - - return snippets; -}; diff --git a/crowdin.yml b/crowdin.yml index e32fefb9b6019..f03557880ccc2 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -32,6 +32,16 @@ files: pt-BR: pt-br zh-CN: zh-cn zh-TW: zh-tw + - source: /apps/site/snippets/en/**/*.bash + translation: /apps/site/snippets/%two_letters_code%/**/%original_file_name% + content_segmentation: 0 + type: txt + languages_mapping: + two_letters_code: + es-ES: es + pt-BR: pt-br + zh-CN: zh-cn + zh-TW: zh-tw - source: /packages/i18n/locales/en.json translation: /packages/i18n/locales/%two_letters_code%.json languages_mapping: diff --git a/package-lock.json b/package-lock.json index e60239ca67c82..e564e248048b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,6 @@ "@orama/react-components": "^0.1.23", "@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", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-scroll-area": "^1.2.1", @@ -64,7 +63,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "15.0.3", + "next": "15.1.2", "next-intl": "~3.25.3", "next-themes": "~0.4.3", "postcss": "~8.4.49", @@ -89,7 +88,7 @@ }, "devDependencies": { "@eslint/compat": "~1.2.3", - "@next/eslint-plugin-next": "15.0.3", + "@next/eslint-plugin-next": "15.1.2", "@storybook/addon-controls": "^8.4.6", "@storybook/addon-interactions": "^8.4.6", "@storybook/addon-styling-webpack": "^1.0.1", @@ -104,7 +103,7 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", - "eslint-config-next": "15.0.3", + "eslint-config-next": "15.1.2", "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.2", @@ -211,9 +210,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", "dev": true, "license": "MIT", "engines": { @@ -262,14 +261,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -351,7 +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, + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -391,13 +390,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", - "devOptional": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -674,17 +673,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", + "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -703,10 +702,10 @@ } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", - "devOptional": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -750,9 +749,9 @@ } }, "node_modules/@commitlint/load": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.5.0.tgz", - "integrity": "sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==", + "version": "19.6.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.6.1.tgz", + "integrity": "sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==", "dev": true, "license": "MIT", "optional": true, @@ -763,7 +762,7 @@ "@commitlint/types": "^19.5.0", "chalk": "^5.3.0", "cosmiconfig": "^9.0.0", - "cosmiconfig-typescript-loader": "^5.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", "lodash.uniq": "^4.5.0" @@ -773,9 +772,9 @@ } }, "node_modules/@commitlint/load/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", "optional": true, @@ -821,9 +820,9 @@ } }, "node_modules/@commitlint/types/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", "optional": true, @@ -923,9 +922,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", "cpu": [ "ppc64" ], @@ -940,9 +939,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", "cpu": [ "arm" ], @@ -957,9 +956,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", "cpu": [ "arm64" ], @@ -974,9 +973,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", "cpu": [ "x64" ], @@ -991,9 +990,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", "cpu": [ "arm64" ], @@ -1008,9 +1007,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", "cpu": [ "x64" ], @@ -1025,9 +1024,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", "cpu": [ "arm64" ], @@ -1042,9 +1041,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", "cpu": [ "x64" ], @@ -1059,9 +1058,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", "cpu": [ "arm" ], @@ -1076,9 +1075,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", "cpu": [ "arm64" ], @@ -1093,9 +1092,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", "cpu": [ "ia32" ], @@ -1110,9 +1109,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", "cpu": [ "loong64" ], @@ -1127,9 +1126,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", "cpu": [ "mips64el" ], @@ -1144,9 +1143,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", "cpu": [ "ppc64" ], @@ -1161,9 +1160,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", "cpu": [ "riscv64" ], @@ -1178,9 +1177,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", "cpu": [ "s390x" ], @@ -1195,9 +1194,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", "cpu": [ "x64" ], @@ -1211,10 +1210,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", "cpu": [ "x64" ], @@ -1229,9 +1245,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", "cpu": [ "arm64" ], @@ -1246,9 +1262,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", "cpu": [ "x64" ], @@ -1263,9 +1279,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", "cpu": [ "x64" ], @@ -1280,9 +1296,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", "cpu": [ "arm64" ], @@ -1297,9 +1313,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", "cpu": [ "ia32" ], @@ -1314,9 +1330,9 @@ } }, "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==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", "cpu": [ "x64" ], @@ -1373,9 +1389,9 @@ } }, "node_modules/@eslint/compat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.3.tgz", - "integrity": "sha512-wlZhwlDFxkxIZ571aH0FoK4h4Vwx7P3HJx62Gp8hTc10bfpwT2x0nULuAHmQSJBOWPgPeVf+9YtnD4j50zVHmA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.4.tgz", + "integrity": "sha512-S8ZdQj/N69YAtuqFt7653jwcvuUj131+6qGLUyDqfDg1OIoBQ66OCuXC473YQfO2AaxITTutiRQiDwoo7ZLYyg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1391,13 +1407,13 @@ } }, "node_modules/@eslint/config-array": { - "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==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.5", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -1430,11 +1446,14 @@ } }, "node_modules/@eslint/core": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", - "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1522,9 +1541,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1532,9 +1551,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1583,50 +1602,51 @@ "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.4.tgz", - "integrity": "sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz", + "integrity": "sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==", "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "2.2.3", - "@formatjs/intl-localematcher": "0.5.8", + "@formatjs/fast-memoize": "2.2.5", + "@formatjs/intl-localematcher": "0.5.9", + "decimal.js": "10", "tslib": "2" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz", - "integrity": "sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz", + "integrity": "sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==", "license": "MIT", "dependencies": { "tslib": "2" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "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==", + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.7.tgz", + "integrity": "sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.4", - "@formatjs/icu-skeleton-parser": "1.8.8", + "@formatjs/ecma402-abstract": "2.3.1", + "@formatjs/icu-skeleton-parser": "1.8.11", "tslib": "2" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.8.tgz", - "integrity": "sha512-vHwK3piXwamFcx5YQdCdJxUQ1WdTl6ANclt5xba5zLGDv5Bsur7qz8AD7BevaKxITwpgDeU0u8My3AIibW9ywA==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.11.tgz", + "integrity": "sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.4", + "@formatjs/ecma402-abstract": "2.3.1", "tslib": "2" } }, "node_modules/@formatjs/intl-localematcher": { - "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==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz", + "integrity": "sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==", "license": "MIT", "dependencies": { "tslib": "2" @@ -2283,6 +2303,82 @@ "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", + "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/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", @@ -2332,18 +2428,68 @@ } }, "node_modules/@jest/core/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==", + "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": ">=10" + "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", + "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/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_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -2359,6 +2505,19 @@ "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", @@ -2366,6 +2525,19 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -2487,58 +2659,134 @@ } } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "color-convert": "^2.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@jest/reporters/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": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "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==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", "jest-haste-map": "^29.7.0", "slash": "^3.0.0" @@ -2574,6 +2822,82 @@ "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", + "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/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", @@ -2592,10 +2916,86 @@ "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", + "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/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", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -2703,15 +3103,15 @@ } }, "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==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.2.tgz", + "integrity": "sha512-Hm3jIGsoUl6RLB1vzY+dZeqb+/kWPZ+h34yiWxW0dV87l8Im/eMOwpOA+a0L78U0HM04syEjXuRlCozqpwuojQ==", "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", - "integrity": "sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.2.tgz", + "integrity": "sha512-sgfw3+WdaYOGPKCvM1L+UucBmRfh8V2Ygefp7ELON0+0vY7uohQwXXnVWg3rY7mXDKharQR3o7uedpfvnU2hlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2719,9 +3119,9 @@ } }, "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", - "integrity": "sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.2.tgz", + "integrity": "sha512-b9TN7q+j5/7+rGLhFAVZiKJGIASuo8tWvInGfAd8wsULjB1uNGRCj1z1WZwwPWzVQbIKWFYqc+9L7W09qwt52w==", "cpu": [ "arm64" ], @@ -2735,9 +3135,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz", - "integrity": "sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.2.tgz", + "integrity": "sha512-caR62jNDUCU+qobStO6YJ05p9E+LR0EoXh1EEmyU69cYydsAy7drMcOlUlRtQihM6K6QfvNwJuLhsHcCzNpqtA==", "cpu": [ "x64" ], @@ -2751,9 +3151,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz", - "integrity": "sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.2.tgz", + "integrity": "sha512-fHHXBusURjBmN6VBUtu6/5s7cCeEkuGAb/ZZiGHBLVBXMBy4D5QpM8P33Or8JD1nlOjm/ZT9sEE5HouQ0F+hUA==", "cpu": [ "arm64" ], @@ -2767,9 +3167,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz", - "integrity": "sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.2.tgz", + "integrity": "sha512-9CF1Pnivij7+M3G74lxr+e9h6o2YNIe7QtExWq1KUK4hsOLTBv6FJikEwCaC3NeYTflzrm69E5UfwEAbV2U9/g==", "cpu": [ "arm64" ], @@ -2783,9 +3183,9 @@ } }, "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==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.2.tgz", + "integrity": "sha512-tINV7WmcTUf4oM/eN3Yuu/f8jQ5C6AkueZPKeALs/qfdfX57eNv4Ij7rt0SA6iZ8+fMobVfcFVv664Op0caCCg==", "cpu": [ "x64" ], @@ -2799,9 +3199,9 @@ } }, "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==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.2.tgz", + "integrity": "sha512-jf2IseC4WRsGkzeUw/cK3wci9pxR53GlLAt30+y+B+2qAQxMw6WAC3QrANIKxkcoPU3JFh/10uFfmoMDF9JXKg==", "cpu": [ "x64" ], @@ -2815,9 +3215,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz", - "integrity": "sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.2.tgz", + "integrity": "sha512-wvg7MlfnaociP7k8lxLX4s2iBJm4BrNiNFhVUY+Yur5yhAJHfkS8qPPeDEUH8rQiY0PX3u/P7Q/wcg6Mv6GSAA==", "cpu": [ "arm64" ], @@ -2831,9 +3231,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz", - "integrity": "sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.2.tgz", + "integrity": "sha512-D3cNA8NoT3aWISWmo7HF5Eyko/0OdOO+VagkoJuiTk7pyX3P/b+n8XA/MYvyR+xSVcbKn68B1rY9fgqjNISqzQ==", "cpu": [ "x64" ], @@ -3296,9 +3696,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz", - "integrity": "sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.0.tgz", + "integrity": "sha512-l1aJ30CXeauVYaI+btiynHpw341LthkMTv3omi1VJDX14werY2Wmv9n1yudMsq9HuY0m8PvXEVX4d8zxEb+WRg==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -3309,13 +3709,13 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", + "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -3325,13 +3725,13 @@ } }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.55.0.tgz", - "integrity": "sha512-YDCMlaQRZkziLL3t6TONRgmmGxDx6MyQDXRD0dknkkgUZtOK5+8MWft1OXzmNu6XfBOdT12MKN5rz+jHUkafKQ==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.0.tgz", + "integrity": "sha512-qIKp+tSCLqofneUWRc5XHtr9jHIq0N0BJfaJamM9gjEFO8sthV4SDXDGNOSAx16PxkbrQJ5/AxMPAGCXl8W/Hg==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/api-logs": "0.57.0", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", @@ -3346,14 +3746,14 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", + "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/core": "1.30.0", + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -3363,15 +3763,15 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.55.0.tgz", - "integrity": "sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.57.0.tgz", + "integrity": "sha512-6Kbxdu/QE9LWH7+WSLmYo3DjAq+c55TiCLXiXu6b/2m2muy5SyOG2m0MrGqetyRpfYSSbIqHmJoqNVTN3+2a9g==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/api-logs": "0.55.0", - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" + "@opentelemetry/api-logs": "0.57.0", + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0" }, "engines": { "node": ">=14" @@ -3381,14 +3781,14 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "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==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", + "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0" }, "engines": { "node": ">=14" @@ -3398,15 +3798,15 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "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==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.0.tgz", + "integrity": "sha512-RKQDaDIkV7PwizmHw+rE/FgfB2a6MBx+AEVVlAHXRG1YYxLiBpPX2KhmoB99R5vA4b72iJrjle68NDWnbrE9Dg==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0", + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -3416,9 +3816,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", "license": "Apache-2.0", "peer": true, "engines": { @@ -3444,6 +3844,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.0.4.tgz", "integrity": "sha512-ziYjwoxUty8WEvgnUZNeJlCHkYplxWFxjNVXWaNIh1wvQ37tl/qkM0kyLXiwHgSxrIPjuv6A2TwgKjjtwhP3jg==", + "license": "Apache-2.0", "engines": { "node": ">= 16.0.0" } @@ -3461,6 +3862,16 @@ "react-dom": "^17.0.0 || ^18.3.1" } }, + "node_modules/@orama/switch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.0.4.tgz", + "integrity": "sha512-naS+Sel2M2y5RIQ0HlALf52zK7VjTXWSSUrmvBxaC/3kG9nrAI+8kon6HiTM2OmNAxrIEgitH0RJXLawSliyVw==", + "license": "Apache-2.0", + "peerDependencies": { + "@orama/orama": "3.0.4", + "@oramacloud/client": "^2.1.1" + } + }, "node_modules/@orama/wc-components": { "version": "0.1.23", "resolved": "https://registry.npmjs.org/@orama/wc-components/-/wc-components-0.1.23.tgz", @@ -3483,29 +3894,11 @@ "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/@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", @@ -3551,18 +3944,18 @@ "license": "MIT" }, "node_modules/@radix-ui/primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", - "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", "license": "MIT" }, "node_modules/@radix-ui/react-accessible-icon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.0.tgz", - "integrity": "sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.1.tgz", + "integrity": "sha512-DH8vuU7oqHt9RhO3V9Z1b8ek+bOl4+9VLsh0cgL6t7f2WhbuOChm3ft0EmCCsfd4ORi7Cs3II4aNcTXi+bh+wg==", "license": "MIT", "dependencies": { - "@radix-ui/react-visually-hidden": "1.1.0" + "@radix-ui/react-visually-hidden": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -3580,12 +3973,12 @@ } }, "node_modules/@radix-ui/react-arrow": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", - "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.1.tgz", + "integrity": "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", @@ -3602,16 +3995,16 @@ } } }, - "node_modules/@radix-ui/react-avatar": { + "node_modules/@radix-ui/react-collection": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", - "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz", + "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==", "license": "MIT", "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -3628,55 +4021,14 @@ } } }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", - "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "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-collection/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "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-compose-refs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", - "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3715,14 +4067,14 @@ } }, "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==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.3.tgz", + "integrity": "sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==", "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/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, @@ -3742,17 +4094,17 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", - "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.4.tgz", + "integrity": "sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.2", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-menu": "2.1.4", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { @@ -3786,13 +4138,13 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", - "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz", + "integrity": "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { @@ -3829,12 +4181,12 @@ } }, "node_modules/@radix-ui/react-label": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", - "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.1.tgz", + "integrity": "sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", @@ -3852,29 +4204,29 @@ } }, "node_modules/@radix-ui/react-menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", - "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.4.tgz", + "integrity": "sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==", "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/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-focus-scope": "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-roving-focus": "1.1.0", - "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-roving-focus": "1.1.1", + "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-callback-ref": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "react-remove-scroll": "^2.6.1" }, "peerDependencies": { "@types/react": "*", @@ -3892,16 +4244,16 @@ } }, "node_modules/@radix-ui/react-popper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", - "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.1.tgz", + "integrity": "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==", "license": "MIT", "dependencies": { "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-arrow": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-rect": "1.1.0", @@ -3923,28 +4275,13 @@ } } }, - "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "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-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==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz", + "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { @@ -3963,12 +4300,12 @@ } }, "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==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { @@ -3987,12 +4324,12 @@ } }, "node_modules/@radix-ui/react-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", - "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz", + "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.1.0" + "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -4010,18 +4347,18 @@ } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", - "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.1.tgz", + "integrity": "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==", "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.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, @@ -4040,34 +4377,19 @@ } } }, - "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "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-scroll-area": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.1.tgz", - "integrity": "sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.2.tgz", + "integrity": "sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==", "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, @@ -4087,32 +4409,32 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", - "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.4.tgz", + "integrity": "sha512-pOkb2u8KgO47j/h7AylCj7dJsm69BXcjkrvTqMptFqsE2i0p8lHkfgneXKjAgPzBMivnoMyt8o4KiV4wYzDdyQ==", "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-focus-scope": "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-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1", "@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-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.1", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "react-remove-scroll": "^2.6.1" }, "peerDependencies": { "@types/react": "*", @@ -4130,12 +4452,12 @@ } }, "node_modules/@radix-ui/react-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", - "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0" + "@radix-ui/react-compose-refs": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -4148,18 +4470,18 @@ } }, "node_modules/@radix-ui/react-tabs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", - "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.2.tgz", + "integrity": "sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", + "@radix-ui/primitive": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@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-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-roving-focus": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { @@ -4178,23 +4500,23 @@ } }, "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==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.4.tgz", + "integrity": "sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==", "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/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", "@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-dismissable-layer": "1.1.3", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", "@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" + "@radix-ui/react-visually-hidden": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -4212,23 +4534,23 @@ } }, "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==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.6.tgz", + "integrity": "sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", "@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-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" + "@radix-ui/react-visually-hidden": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -4363,12 +4685,12 @@ } }, "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", - "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz", + "integrity": "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", @@ -4418,54 +4740,54 @@ } }, "node_modules/@shikijs/core": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.0.tgz", - "integrity": "sha512-6pvdH0KoahMzr6689yh0QJ3rCgF4j1XsXRHNEeEN6M4xJTfQ6QPWrmHzIddotg+xPJUPEPzYzYCKzpYyhTI6Gw==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.4.tgz", + "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==", "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.24.0", - "@shikijs/engine-oniguruma": "1.24.0", - "@shikijs/types": "1.24.0", - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/engine-javascript": "1.24.4", + "@shikijs/engine-oniguruma": "1.24.4", + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.3" + "hast-util-to-html": "^9.0.4" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.0.tgz", - "integrity": "sha512-ZA6sCeSsF3Mnlxxr+4wGEJ9Tto4RHmfIS7ox8KIAbH0MTVUkw3roHPHZN+LlJMOHJJOVupe6tvuAzRpN8qK1vA==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz", + "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.24.0", - "@shikijs/vscode-textmate": "^9.3.0", - "oniguruma-to-es": "0.7.0" + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", + "oniguruma-to-es": "0.8.1" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.0.tgz", - "integrity": "sha512-Eua0qNOL73Y82lGA4GF5P+G2+VXX9XnuUxkiUuwcxQPH4wom+tE39kZpBFXfUuwNYxHSkrSxpB1p4kyRW0moSg==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz", + "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.24.0", - "@shikijs/vscode-textmate": "^9.3.0" + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1" } }, "node_modules/@shikijs/types": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.0.tgz", - "integrity": "sha512-aptbEuq1Pk88DMlCe+FzXNnBZ17LCiLIGWAeCWhoFDzia5Q5Krx3DgnULLiouSdd6+LUM39XwXGppqYE0Ghtug==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.4.tgz", + "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==", "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", - "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz", + "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==", "license": "MIT" }, "node_modules/@sinclair/typebox": { @@ -4496,9 +4818,9 @@ } }, "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==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.23.0.tgz", + "integrity": "sha512-9vI8ywhoqlaDEmrcntejrZ9X76Tddv2JyWakjVpqJAdDNXgf520sYkyjzGT0p8VJfPtSaKm6pMtl5sAH1r9cFg==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -4522,9 +4844,9 @@ } }, "node_modules/@storybook/addon-controls": { - "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==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.7.tgz", + "integrity": "sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==", "dev": true, "license": "MIT", "dependencies": { @@ -4537,19 +4859,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.6" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.6.tgz", - "integrity": "sha512-sR2oUSYIGUoAdrHT+fM1zgykhad98bsJ11c79r7HfBMXEPWc1yRcjIMmz8Xz06FMROMfebqduYDf60V++/I0Jw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.7.tgz", + "integrity": "sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.6", - "@storybook/test": "8.4.6", + "@storybook/instrumenter": "8.4.7", + "@storybook/test": "8.4.7", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -4558,93 +4880,9 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "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" + "storybook": "^8.4.7" } }, - "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", @@ -4659,9 +4897,9 @@ } }, "node_modules/@storybook/addon-themes": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.6.tgz", - "integrity": "sha512-0Eyh7jxxQ8hc7KIO2bJF8BKY1CRJ9zPo2DKoRiUKDoSGSP8qdlj4V/ks892GcUffdhTjoFAJCRzG7Ff+TnVKrA==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.7.tgz", + "integrity": "sha512-MZa3eWTz0b3BQvF71WqLqvEYzDtbMhQx1IIluWBMMGzJ4sWBzLX85LoNMUlHsNd4EhEmAZ1xQQFIJpDWTBx0nQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4672,13 +4910,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.6" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.6.tgz", - "integrity": "sha512-BuQll5YzOCpMS7p5Rsw9wcmi8hTnEKyg6+qAbkZNfiZ2JhXCa1GFUqX725fF1whpYVQULtkQxU8r+vahoRn7Yg==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.7.tgz", + "integrity": "sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4689,7 +4927,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.6" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { @@ -4707,13 +4945,13 @@ } }, "node_modules/@storybook/builder-webpack5": { - "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==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.7.tgz", + "integrity": "sha512-O8LpsQ+4g2x5kh7rI9+jEUdX8k1a5egBQU1lbudmHchqsV0IKiVqBD9LL5Gj3wpit4vB8coSW4ZWTFBw8FQb4Q==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.6", + "@storybook/core-webpack": "8.4.7", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -4744,7 +4982,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.6" + "storybook": "^8.4.7" }, "peerDependenciesMeta": { "typescript": { @@ -4753,9 +4991,9 @@ } }, "node_modules/@storybook/components": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.6.tgz", - "integrity": "sha512-9tKSJJCyFT5RZMRGyozTBJkr9C9Yfk1nuOE9XbDEE1Z+3/IypKR9+iwc5mfNBStDNY+rxtYWNLKBb5GPR2yhzA==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.7.tgz", + "integrity": "sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==", "dev": true, "license": "MIT", "funding": { @@ -4767,9 +5005,9 @@ } }, "node_modules/@storybook/core": { - "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==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.7.tgz", + "integrity": "sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==", "dev": true, "license": "MIT", "dependencies": { @@ -4799,9 +5037,9 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.6.tgz", - "integrity": "sha512-5NE4pUy0iHKc8UKHm7A7SikxSMOO92udl7kcBUlQKwcAgrAk1rFpvfXGodDb48AVgfK+07qAOSjBm7GcZ7X1jw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.7.tgz", + "integrity": "sha512-Tj+CjQLpFyBJxhhMms+vbPT3+gTRAiQlrhY3L1IEVwBa3wtRMS0qjozH26d1hK4G6mUIEdwu13L54HMU/w33Sg==", "dev": true, "license": "MIT", "dependencies": { @@ -4813,13 +5051,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.6" + "storybook": "^8.4.7" } }, "node_modules/@storybook/csf": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", - "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.12.tgz", + "integrity": "sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==", "dev": true, "license": "MIT", "dependencies": { @@ -4833,10 +5071,28 @@ "dev": true, "license": "MIT" }, + "node_modules/@storybook/instrumenter": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.7.tgz", + "integrity": "sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==", + "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.7" + } + }, "node_modules/@storybook/manager-api": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.6.tgz", - "integrity": "sha512-TsXlQ5m5rTl2KNT9icPFyy822AqXrx1QplZBt/L7cFn7SpqQKDeSta21FH7MG0piAvzOweXebVSqKngJ6cCWWQ==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.7.tgz", + "integrity": "sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==", "dev": true, "license": "MIT", "funding": { @@ -4848,9 +5104,9 @@ } }, "node_modules/@storybook/node-logger": { - "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==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.4.7.tgz", + "integrity": "sha512-bsNMy9RgN4jVw5MMHMf0T04dX8a1lLTWq4iZoZkfdbshDKn5Z16brzPVwhFg2IE0YTEZi9XyA1NJLPgUTCcp7g==", "dev": true, "license": "MIT", "funding": { @@ -4862,14 +5118,14 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "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==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.7.tgz", + "integrity": "sha512-geTSBKyrBagVihil5MF7LkVFynbfHhCinvnbCZZqXW7M1vgcxvatunUENB+iV8eWg/0EJ+8O7scZL+BAxQ/2qg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.6", - "@storybook/react": "8.4.6", + "@storybook/core-webpack": "8.4.7", + "@storybook/react": "8.4.7", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", @@ -4891,7 +5147,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.6" + "storybook": "^8.4.7" }, "peerDependenciesMeta": { "typescript": { @@ -4900,9 +5156,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.6.tgz", - "integrity": "sha512-LbD+lR1FGvWaJBXteVx5xdgs1x1D7tyidBg2CsW2ex+cP0iJ176JgjPfutZxlWOfQnhfRYNnJ3WKoCIfxFOTKA==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.7.tgz", + "integrity": "sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==", "dev": true, "license": "MIT", "funding": { @@ -4914,18 +5170,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.6.tgz", - "integrity": "sha512-QAT23beoYNLhFGAXPimtuMErvpcI7eZbZ4AlLqW1fhiTZrRYw06cjC1bs9H3tODMcHH9LS5p3Wz9b29jtV2XGw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.7.tgz", + "integrity": "sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.4.6", + "@storybook/components": "8.4.7", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.4.6", - "@storybook/preview-api": "8.4.6", - "@storybook/react-dom-shim": "8.4.6", - "@storybook/theming": "8.4.6" + "@storybook/manager-api": "8.4.7", + "@storybook/preview-api": "8.4.7", + "@storybook/react-dom-shim": "8.4.7", + "@storybook/theming": "8.4.7" }, "engines": { "node": ">=18.0.0" @@ -4935,10 +5191,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.4.6", + "@storybook/test": "8.4.7", "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.6", + "storybook": "^8.4.7", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -4971,9 +5227,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "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==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.7.tgz", + "integrity": "sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==", "dev": true, "license": "MIT", "funding": { @@ -4983,19 +5239,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.6" + "storybook": "^8.4.7" } }, "node_modules/@storybook/react-webpack5": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.6.tgz", - "integrity": "sha512-qUCOUoYW09voRhk0PzEZpZz6F5Ek9aHvVto8KW3lyYEuk6qujqUTNO6Y/X7hMraVt/C3l0+Ds4D5LEmxNBvd8g==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.7.tgz", + "integrity": "sha512-T9GLqlsP4It4El7cC8rSkBPRWvORAsTDULeWlO36RST2TrYnmBOUytsi22mk7cAAAVhhD6rTrs1YdqWRMpfa1w==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.4.6", - "@storybook/preset-react-webpack": "8.4.6", - "@storybook/react": "8.4.6", + "@storybook/builder-webpack5": "8.4.7", + "@storybook/preset-react-webpack": "8.4.7", + "@storybook/react": "8.4.7", "@types/node": "^22.0.0" }, "engines": { @@ -5008,7 +5264,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.6", + "storybook": "^8.4.7", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5017,86 +5273,211 @@ } } }, - "node_modules/@storybook/theming": { - "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==", + "node_modules/@storybook/test": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.7.tgz", + "integrity": "sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==", "dev": true, "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.1.11", + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.4.7", + "@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.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "storybook": "^8.4.7" } }, - "node_modules/@swc/core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.3.tgz", - "integrity": "sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==", + "node_modules/@storybook/test/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, - "hasInstallScript": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.17" + "@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": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@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" + "node": ">=14", + "npm": ">=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" }, - "peerDependencies": { - "@swc/helpers": "*" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.3.tgz", - "integrity": "sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==", - "cpu": [ - "arm64" - ], + "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": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.3.tgz", - "integrity": "sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==", - "cpu": [ - "x64" - ], + "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": "Apache-2.0 AND MIT", - "optional": 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", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "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.7", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.7.tgz", + "integrity": "sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@swc/core": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.1.tgz", + "integrity": "sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.17" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.10.1", + "@swc/core-darwin-x64": "1.10.1", + "@swc/core-linux-arm-gnueabihf": "1.10.1", + "@swc/core-linux-arm64-gnu": "1.10.1", + "@swc/core-linux-arm64-musl": "1.10.1", + "@swc/core-linux-x64-gnu": "1.10.1", + "@swc/core-linux-x64-musl": "1.10.1", + "@swc/core-win32-arm64-msvc": "1.10.1", + "@swc/core-win32-ia32-msvc": "1.10.1", + "@swc/core-win32-x64-msvc": "1.10.1" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.1.tgz", + "integrity": "sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==", + "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.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.1.tgz", + "integrity": "sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, "os": [ "darwin" ], @@ -5105,9 +5486,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.3.tgz", - "integrity": "sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.1.tgz", + "integrity": "sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==", "cpu": [ "arm" ], @@ -5122,9 +5503,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.3.tgz", - "integrity": "sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.1.tgz", + "integrity": "sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==", "cpu": [ "arm64" ], @@ -5139,9 +5520,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.3.tgz", - "integrity": "sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.1.tgz", + "integrity": "sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==", "cpu": [ "arm64" ], @@ -5156,9 +5537,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "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==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.1.tgz", + "integrity": "sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==", "cpu": [ "x64" ], @@ -5173,9 +5554,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "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==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.1.tgz", + "integrity": "sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==", "cpu": [ "x64" ], @@ -5190,9 +5571,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.3.tgz", - "integrity": "sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.1.tgz", + "integrity": "sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==", "cpu": [ "arm64" ], @@ -5207,9 +5588,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.3.tgz", - "integrity": "sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.1.tgz", + "integrity": "sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==", "cpu": [ "ia32" ], @@ -5224,9 +5605,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.3.tgz", - "integrity": "sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.1.tgz", + "integrity": "sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==", "cpu": [ "x64" ], @@ -5247,12 +5628,12 @@ "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==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, "node_modules/@swc/types": { @@ -5294,6 +5675,82 @@ "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/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/@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", @@ -5315,6 +5772,22 @@ "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", @@ -5329,6 +5802,26 @@ "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", @@ -5336,6 +5829,29 @@ "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", @@ -5460,9 +5976,9 @@ } }, "node_modules/@types/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", + "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", "dev": true, "license": "MIT", "optional": true, @@ -5704,16 +6220,16 @@ "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", "devOptional": true, "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", - "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "version": "18.3.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", + "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -5722,13 +6238,13 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", "devOptional": true, "license": "MIT", - "dependencies": { - "@types/react": "*" + "peerDependencies": { + "@types/react": "^18.0.0" } }, "node_modules/@types/resolve": { @@ -5803,17 +6319,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", - "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.1.tgz", + "integrity": "sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/type-utils": "8.16.0", - "@typescript-eslint/utils": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/scope-manager": "8.18.1", + "@typescript-eslint/type-utils": "8.18.1", + "@typescript-eslint/utils": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -5828,25 +6344,21 @@ }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", - "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.1.tgz", + "integrity": "sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/typescript-estree": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/scope-manager": "8.18.1", + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/typescript-estree": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1", "debug": "^4.3.4" }, "engines": { @@ -5857,23 +6369,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", - "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz", + "integrity": "sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0" + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5884,14 +6392,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", - "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.1.tgz", + "integrity": "sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.16.0", - "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/typescript-estree": "8.18.1", + "@typescript-eslint/utils": "8.18.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -5903,18 +6411,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", - "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz", + "integrity": "sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==", "dev": true, "license": "MIT", "engines": { @@ -5926,14 +6430,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", - "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz", + "integrity": "sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5948,10 +6452,8 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { @@ -6001,16 +6503,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", - "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.1.tgz", + "integrity": "sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/typescript-estree": "8.16.0" + "@typescript-eslint/scope-manager": "8.18.1", + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/typescript-estree": "8.18.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6020,22 +6522,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", - "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz", + "integrity": "sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/types": "8.18.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -6047,9 +6545,9 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", "license": "ISC" }, "node_modules/@vcarl/remark-headings": { @@ -6247,9 +6745,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.5.tgz", - "integrity": "sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", + "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6273,13 +6771,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.5.tgz", - "integrity": "sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", + "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.5", + "@vitest/pretty-format": "2.1.8", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, @@ -6287,140 +6785,6 @@ "url": "https://opencollective.com/vitest" } }, - "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==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-core/node_modules/estree-walker": { - "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", - "optional": true, - "peer": true - }, - "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==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "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==", - "license": "MIT", - "optional": true, - "peer": true, - "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", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.11", - "postcss": "^8.4.48", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-sfc/node_modules/estree-walker": { - "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", - "optional": true, - "peer": true - }, - "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==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "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==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@vue/shared": "3.5.13" - } - }, - "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==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "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==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", - "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==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" - }, - "peerDependencies": { - "vue": "3.5.13" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -6686,7 +7050,7 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -6703,7 +7067,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ajv": "^8.0.0" @@ -6721,7 +7085,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" @@ -6782,18 +7146,16 @@ } }, "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==", + "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": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, "node_modules/any-promise": { @@ -6850,14 +7212,14 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -6940,16 +7302,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6959,16 +7321,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6995,20 +7357,19 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -7178,6 +7539,82 @@ "@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", + "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/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", @@ -7391,9 +7828,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", "funding": [ { "type": "opencollective", @@ -7410,9 +7847,9 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { @@ -7486,17 +7923,16 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -7505,24 +7941,55 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", "dev": true, "license": "MIT", "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "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" } }, "node_modules/camelcase": { @@ -7545,9 +8012,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001684", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", - "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", + "version": "1.0.30001690", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", + "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", "funding": [ { "type": "opencollective", @@ -7602,20 +8069,18 @@ } }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, "node_modules/char-regex": { @@ -7958,21 +8423,20 @@ } }, "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==", + "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.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "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==", + "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": { @@ -7986,6 +8450,26 @@ "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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/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", + "optional": true + }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", @@ -8141,22 +8625,22 @@ } }, "node_modules/cosmiconfig-typescript-loader": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.1.0.tgz", - "integrity": "sha512-7PtBB+6FdsOvZyJtlF3hEPpACq7RQX6BVGsgC7/lfVXnKMvNCu/XY3ykreqG5w/rBNdu2z8LCIKoF3kpHHdHlA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", + "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "jiti": "^1.21.6" + "jiti": "^2.4.1" }, "engines": { - "node": ">=v16" + "node": ">=v18" }, "peerDependencies": { "@types/node": "*", - "cosmiconfig": ">=8.2", - "typescript": ">=4" + "cosmiconfig": ">=9", + "typescript": ">=5" } }, "node_modules/create-jest": { @@ -8181,6 +8665,82 @@ "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", + "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/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", @@ -8277,13 +8837,13 @@ } }, "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==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.12.1", + "mdn-data": "2.12.2", "source-map-js": "^1.0.1" }, "engines": { @@ -8377,84 +8937,6 @@ "@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/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/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", - "engines": { - "node": ">=0.8.0" - } - }, - "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", - "engines": { - "node": ">=4" - } - }, - "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": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -8478,15 +8960,15 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8496,31 +8978,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -8532,9 +9014,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -8552,7 +9034,6 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true, "license": "MIT" }, "node_modules/decode-named-character-reference": { @@ -8883,9 +9364,9 @@ } }, "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==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.3.tgz", + "integrity": "sha512-U1U5Hzc2MO0oW3DF+G9qYN0aT7atAou4AgI0XjWz061nyBPbdxkfdhfy5uMgGn6+oLFCfn44ZGbdDqCzVmlOWA==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -8917,6 +9398,21 @@ "tslib": "^2.0.3" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -8924,9 +9420,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.64", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.64.tgz", - "integrity": "sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==", + "version": "1.5.75", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.75.tgz", + "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==", "license": "ISC" }, "node_modules/emittery": { @@ -8967,9 +9463,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -9030,58 +9526,59 @@ } }, "node_modules/es-abstract": { - "version": "1.23.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", - "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", + "version": "1.23.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", + "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.6", + "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", + "object.assign": "^4.1.7", "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "safe-array-concat": "^1.1.3", + "safe-regex-test": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -9091,14 +9588,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -9114,27 +9608,28 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz", - "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.3", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" @@ -9186,15 +9681,15 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -9236,9 +9731,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -9249,30 +9744,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" } }, "node_modules/esbuild-register": { @@ -9298,16 +9794,13 @@ } }, "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==", + "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": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/escodegen": { @@ -9404,13 +9897,13 @@ } }, "node_modules/eslint-config-next": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.0.3.tgz", - "integrity": "sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.1.2.tgz", + "integrity": "sha512-PrMm1/4zWSJ689wd/ypWIR5ZF1uvmp3EkgpgBV1Yu6PhEobBjXMGgT8bVNelwl17LXojO8D5ePFRiI4qXjsPRA==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.0.3", + "@next/eslint-plugin-next": "15.1.2", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -9418,7 +9911,7 @@ "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { @@ -10237,6 +10730,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==", + "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/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -10248,6 +10757,66 @@ "concat-map": "0.0.1" } }, + "node_modules/eslint/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/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -10268,6 +10837,19 @@ "node": "*" } }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/espree": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", @@ -10629,7 +11211,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { @@ -10703,16 +11285,6 @@ "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", @@ -10898,6 +11470,22 @@ "webpack": "^5.11.0" } }, + "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==", + "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/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", @@ -10909,6 +11497,43 @@ "concat-map": "0.0.1" } }, + "node_modules/fork-ts-checker-webpack-plugin/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/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", @@ -10941,6 +11566,16 @@ "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "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", @@ -10954,6 +11589,19 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", @@ -11055,16 +11703,18 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -11116,17 +11766,22 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -11168,15 +11823,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -11397,13 +12052,13 @@ "license": "MIT" }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11493,23 +12148,26 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", - "devOptional": true, + "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", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/has-property-descriptors": { @@ -11526,11 +12184,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -11539,9 +12200,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -11649,9 +12310,9 @@ } }, "node_modules/hast-util-to-html": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", - "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", + "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -11735,9 +12396,9 @@ } }, "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==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.0.tgz", + "integrity": "sha512-6ErL7JlGu2CNFHyRQEuDogOyGPNiqcuWdt4iSSFUPyferNTGlNTPFqeV36Y/XwA4V/TJ8l0sxp6FTnxud/mf8g==", "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" @@ -12058,9 +12719,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", - "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.12.0.tgz", + "integrity": "sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -12184,44 +12845,111 @@ "node": ">=12.0.0" } }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "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": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/intl-messageformat": { - "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.4", - "@formatjs/fast-memoize": "2.2.3", - "@formatjs/icu-messageformat-parser": "2.9.4", - "tslib": "2" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/inquirer/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": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/intl-messageformat": { + "version": "10.7.10", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.10.tgz", + "integrity": "sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.1", + "@formatjs/fast-memoize": "2.2.5", + "@formatjs/icu-messageformat-parser": "2.9.7", + "tslib": "2" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", "license": "MIT", @@ -12245,14 +12973,14 @@ } }, "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12262,14 +12990,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -12301,13 +13030,16 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12326,14 +13058,14 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12367,9 +13099,9 @@ } }, "node_modules/is-bun-module": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", - "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz", + "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==", "dev": true, "license": "MIT", "dependencies": { @@ -12390,9 +13122,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -12405,12 +13137,14 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -12421,13 +13155,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12488,13 +13223,13 @@ } }, "node_modules/is-finalizationregistry": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", - "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -12586,19 +13321,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -12609,13 +13331,14 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12654,14 +13377,16 @@ "license": "MIT" }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -12684,13 +13409,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -12713,13 +13438,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12729,13 +13455,15 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -12745,13 +13473,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -12794,27 +13522,30 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -12901,6 +13632,16 @@ "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", @@ -12917,6 +13658,19 @@ "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", @@ -12957,17 +13711,18 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", + "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "reflect.getprototypeof": "^1.0.8", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -13063,18 +13818,58 @@ } }, "node_modules/jest-circus/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==", + "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": ">=10" + "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", @@ -13090,6 +13885,16 @@ } } }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -13105,6 +13910,19 @@ "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", @@ -13112,6 +13930,19 @@ "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", @@ -13146,28 +13977,104 @@ } } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "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": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", + "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", + "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-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", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", "jest-util": "^29.7.0", "jest-validate": "^29.7.0", "micromatch": "^4.0.4", @@ -13193,18 +14100,68 @@ } }, "node_modules/jest-config/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==", + "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": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-config/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-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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -13220,6 +14177,19 @@ "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", @@ -13227,6 +14197,19 @@ "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", @@ -13244,18 +14227,68 @@ } }, "node_modules/jest-diff/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==", + "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": ">=10" + "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", + "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-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", @@ -13271,6 +14304,19 @@ "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", @@ -13278,6 +14324,19 @@ "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", @@ -13309,21 +14368,71 @@ } }, "node_modules/jest-each/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==", + "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": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "node_modules/jest-each/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-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" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", @@ -13336,6 +14445,19 @@ "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", @@ -13343,6 +14465,19 @@ "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", @@ -13507,18 +14642,68 @@ } }, "node_modules/jest-matcher-utils/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==", + "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": ">=10" + "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", + "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-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", @@ -13534,6 +14719,19 @@ "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", @@ -13541,6 +14739,19 @@ "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", @@ -13563,18 +14774,68 @@ } }, "node_modules/jest-message-util/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==", + "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": ">=10" + "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", + "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-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", @@ -13590,6 +14851,19 @@ "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", @@ -13597,6 +14871,19 @@ "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", @@ -13675,37 +14962,189 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "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": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "color-convert": "^2.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "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", + "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-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", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/jest-runtime": { @@ -13742,6 +15181,82 @@ "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==", + "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-runtime/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-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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "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_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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -13775,18 +15290,68 @@ } }, "node_modules/jest-snapshot/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==", + "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": ">=10" + "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", + "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-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", @@ -13802,6 +15367,19 @@ "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", @@ -13809,6 +15387,19 @@ "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", @@ -13824,7 +15415,83 @@ "picomatch": "^2.2.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "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", + "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-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==", + "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" + }, + "engines": { + "node": ">=8" } }, "node_modules/jest-validate": { @@ -13846,13 +15513,16 @@ } }, "node_modules/jest-validate/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==", + "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": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -13871,6 +15541,53 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-validate/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-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", @@ -13886,6 +15603,19 @@ "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", @@ -13893,6 +15623,19 @@ "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", @@ -13913,6 +15656,82 @@ "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", + "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-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", @@ -13929,6 +15748,16 @@ "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", @@ -13946,12 +15775,14 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, "license": "MIT", + "optional": true, "bin": { - "jiti": "bin/jiti.js" + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/js-tokens": { @@ -14029,9 +15860,9 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -14058,7 +15889,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { @@ -14191,9 +16022,9 @@ } }, "node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "license": "MIT", "engines": { "node": ">=14" @@ -14265,6 +16096,23 @@ "node": ">=18" } }, + "node_modules/lint-staged/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/lint-staged/node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", @@ -14623,6 +16471,82 @@ "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" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -14892,10 +16816,10 @@ } }, "node_modules/magic-string": { - "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, + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -15004,6 +16928,16 @@ "marked": ">=4 <16" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -15438,9 +17372,9 @@ "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==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "dev": true, "license": "CC0-1.0" }, @@ -16401,9 +18335,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", @@ -16442,14 +18376,14 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/next/-/next-15.0.3.tgz", - "integrity": "sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/next/-/next-15.1.2.tgz", + "integrity": "sha512-nLJDV7peNy+0oHlmY2JZjzMfJ8Aj0/dd3jCwSZS8ZiO5nkQfcZRqDrRN3U5rJtqVTQneIOGZzb6LCNrk7trMCQ==", "license": "MIT", "dependencies": { - "@next/env": "15.0.3", + "@next/env": "15.1.2", "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.13", + "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", @@ -16462,22 +18396,22 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.0.3", - "@next/swc-darwin-x64": "15.0.3", - "@next/swc-linux-arm64-gnu": "15.0.3", - "@next/swc-linux-arm64-musl": "15.0.3", - "@next/swc-linux-x64-gnu": "15.0.3", - "@next/swc-linux-x64-musl": "15.0.3", - "@next/swc-win32-arm64-msvc": "15.0.3", - "@next/swc-win32-x64-msvc": "15.0.3", + "@next/swc-darwin-arm64": "15.1.2", + "@next/swc-darwin-x64": "15.1.2", + "@next/swc-linux-arm64-gnu": "15.1.2", + "@next/swc-linux-arm64-musl": "15.1.2", + "@next/swc-linux-x64-gnu": "15.1.2", + "@next/swc-linux-x64-musl": "15.1.2", + "@next/swc-win32-arm64-msvc": "15.1.2", + "@next/swc-win32-x64-msvc": "15.1.2", "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-66855b96-20241106", - "react-dom": "^18.2.0 || 19.0.0-rc-66855b96-20241106", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "peerDependenciesMeta": { @@ -16517,9 +18451,9 @@ } }, "node_modules/next-themes": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.3.tgz", - "integrity": "sha512-nG84VPkTdUHR2YeD89YchvV4I9RbiMAql3GiLEQlPvq1ioaqPaIReK+yMRdg/zgiXws620qS1rU30TiWmmG9lA==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.4.tgz", + "integrity": "sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ==", "license": "MIT", "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", @@ -16580,9 +18514,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "license": "MIT" }, "node_modules/nopt": { @@ -16716,9 +18650,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.13", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", - "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", "dev": true, "license": "MIT" }, @@ -16764,15 +18698,17 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -16832,13 +18768,14 @@ } }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -16883,14 +18820,14 @@ } }, "node_modules/oniguruma-to-es": { - "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==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz", + "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==", "license": "MIT", "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.0.2", - "regex-recursion": "^4.3.0" + "regex-recursion": "^5.0.0" } }, "node_modules/open": { @@ -16953,6 +18890,82 @@ "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", + "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/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -17035,13 +19048,12 @@ } }, "node_modules/parse-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", @@ -17533,6 +19545,15 @@ } } }, + "node_modules/postcss-loader/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, "node_modules/postcss-mixins": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-11.0.3.tgz", @@ -17575,9 +19596,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz", - "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, "license": "MIT", "dependencies": { @@ -17985,13 +20006,16 @@ } }, "node_modules/psl": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.13.0.tgz", - "integrity": "sha512-BFwmFXiJoFqlUpZ5Qssolv15DMyc84gTBds1BjsV1BfXEo1UyyD7GsmN67n7J77uRhoSNW1AXtXKPLcBFQn9Aw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" } }, "node_modules/punycode": { @@ -18182,23 +20206,23 @@ "license": "MIT" }, "node_modules/react-remove-scroll": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", - "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.2.tgz", + "integrity": "sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==", "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.6", + "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.1", "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", + "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.2" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -18207,20 +20231,20 @@ } }, "node_modules/react-remove-scroll-bar": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", - "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", "license": "MIT", "dependencies": { - "react-style-singleton": "^2.2.1", + "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -18229,21 +20253,20 @@ } }, "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", "license": "MIT", "dependencies": { "get-nonce": "^1.0.0", - "invariant": "^2.2.4", "tslib": "^2.0.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -18436,19 +20459,20 @@ } }, "node_modules/reflect.getprototypeof": { - "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==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", + "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", + "dunder-proto": "^1.0.1", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "which-builtin-type": "^1.1.4" + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -18474,9 +20498,9 @@ } }, "node_modules/regex-recursion": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.3.0.tgz", - "integrity": "sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.0.0.tgz", + "integrity": "sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==", "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" @@ -19745,7 +21769,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -19774,18 +21798,21 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -19838,9 +21865,9 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", "engines": { @@ -19968,15 +21995,16 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -20008,15 +22036,15 @@ "license": "MIT" }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -20244,16 +22272,16 @@ } }, "node_modules/shiki": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.0.tgz", - "integrity": "sha512-qIneep7QRwxRd5oiHb8jaRzH15V/S8F3saCXOdjwRLgozZJr5x2yeBhQtqkO3FSzQDwYEFAYuifg4oHjpDghrg==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.4.tgz", + "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==", "license": "MIT", "dependencies": { - "@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", + "@shikijs/core": "1.24.4", + "@shikijs/engine-javascript": "1.24.4", + "@shikijs/engine-oniguruma": "1.24.4", + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4" } }, @@ -20265,16 +22293,73 @@ "peer": true }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -20485,13 +22570,13 @@ } }, "node_modules/storybook": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.6.tgz", - "integrity": "sha512-J6juZSZT2u3PUW0QZYZZYxBq6zU5O0OrkSgkMXGMg/QrS9to9IHmt4FjEMEyACRbXo8POcB/fSXa3VpGe7bv3g==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.7.tgz", + "integrity": "sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.4.6" + "@storybook/core": "8.4.7" }, "bin": { "getstorybook": "bin/index.cjs", @@ -20627,24 +22712,25 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -20665,16 +22751,19 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -20684,16 +22773,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -21299,16 +23392,16 @@ } }, "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==", + "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": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/supports-hyperlinks": { @@ -21328,6 +23421,29 @@ "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", @@ -21341,9 +23457,9 @@ } }, "node_modules/sval": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/sval/-/sval-0.5.2.tgz", - "integrity": "sha512-cMN4SWqQ8K2DypYVZ1DVsicvXsr4gQmAYR2faKwHttJFJAqjfc4+taG9esMIP0hMP5+4Caun99n6y+4T6nCPEA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/sval/-/sval-0.5.3.tgz", + "integrity": "sha512-neK8qQYxPTi13YxhH4uFE/aSg8idJytcotC1tKSe6yUbJFvETUiqXf6jFXjQSbmz2R0E7c6RycelXwN07cl8Dg==", "license": "MIT", "dependencies": { "acorn": "^8.11.3" @@ -21394,9 +23510,9 @@ } }, "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -21410,6 +23526,42 @@ "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", @@ -21439,9 +23591,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", - "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -21453,7 +23605,7 @@ "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.6", - "lilconfig": "^2.1.0", + "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", @@ -21503,13 +23655,13 @@ "node": ">= 6" } }, - "node_modules/tailwindcss/node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/tailwindcss/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "license": "MIT", - "engines": { - "node": ">=10" + "bin": { + "jiti": "bin/jiti.js" } }, "node_modules/tailwindcss/node_modules/postcss-import": { @@ -21540,9 +23692,9 @@ } }, "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "devOptional": true, "license": "BSD-2-Clause", "dependencies": { @@ -21559,17 +23711,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -21593,6 +23745,16 @@ } } }, + "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==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -21608,6 +23770,26 @@ "node": ">= 10.13.0" } }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "devOptional": 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": ">= 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", @@ -21877,9 +24059,9 @@ } }, "node_modules/ts-api-utils": { - "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==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", "engines": { @@ -22061,136 +24243,380 @@ "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12.20" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "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", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "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": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", + "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "@typescript-eslint/utils": "8.16.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" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", + "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/type-utils": "8.16.0", + "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.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.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", + "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.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.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", + "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.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.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", + "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/utils": "8.16.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" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", + "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", + "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.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": ">= 0.4" + "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/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", + "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", "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" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/typed-array-byte-offset": { - "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==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", + "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", "dev": true, "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.7", - "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", - "reflect.getprototypeof": "^1.0.6" + "@typescript-eslint/types": "8.16.0", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/typed-array-length": { - "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==", + "node_modules/typescript-eslint/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": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" + "@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": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.6.0" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "node_modules/typescript-eslint/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": "MIT" - }, - "node_modules/typescript": { - "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": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" }, "engines": { - "node": ">=14.17" + "node": ">= 6" } }, - "node_modules/typescript-eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", - "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", + "node_modules/typescript-eslint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.16.0", - "@typescript-eslint/parser": "8.16.0", - "@typescript-eslint/utils": "8.16.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/uc.micro": { @@ -22214,16 +24640,19 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -22670,9 +25099,9 @@ "license": "MIT" }, "node_modules/use-callback-ref": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", - "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -22681,8 +25110,8 @@ "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -22691,22 +25120,22 @@ } }, "node_modules/use-intl": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.25.3.tgz", - "integrity": "sha512-zF+GHRx7auT1qpmiPMN+RnzSad6W5ZjhOpgC5Li/TByqCkMs4SP3xcd8C0jWxT8YI8Ucl518bnkS+gvKIvrXjw==", + "version": "3.26.3", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.26.3.tgz", + "integrity": "sha512-yY0a2YseO17cKwHA9M6fcpiEJ2Uo81DEU0NOUxNTp6lJVNOuI6nULANPVVht6IFdrYFtlsMmMoc97+Eq9/Tnng==", "license": "MIT", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "intl-messageformat": "^10.5.14" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" } }, "node_modules/use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", "license": "MIT", "dependencies": { "detect-node-es": "^1.1.0", @@ -22716,8 +25145,8 @@ "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -23009,29 +25438,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", - "license": "MIT", - "optional": true, - "peer": true, - "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" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", @@ -23097,17 +25503,17 @@ } }, "node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", "devOptional": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.14.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", @@ -23173,9 +25579,9 @@ } }, "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==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, "license": "MIT", "dependencies": { @@ -23185,7 +25591,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -23311,42 +25717,45 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "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==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", + "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -23375,16 +25784,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -23447,6 +25857,75 @@ "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.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==", + "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/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", diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 5d57a40873144..59e102370bc99 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -297,30 +297,8 @@ }, "codeBox": { "unsupportedVersionWarning": "This version is out of maintenance. Find more information here:", - "fnmEnvSetup": "configure fnm environment", - "systemManagerWarning": "is not a Node.js package manager. Please ensure you already have {packageManager} installed.", "communityWarning": "Package managers and their installation scripts are not maintained by the Node.js project.", - "communityWarningReport": "If you encounter issues, please reach out to the package manager's maintainers.", - "installsNvm": "installs nvm (Node Version Manager)", - "downloadAndInstallNodejsRestartTerminal": "download and install Node.js (you may need to restart the terminal)", - "verifiesRightNodejsVersion": "verifies the right Node.js version is in the environment", - "verifiesRightNpmVersion": "verifies the right npm version is in the environment", - "shouldPrint": "should print `{version}`", - "installsFnm": "installs fnm (Fast Node Manager)", - "downloadAndInstallNodejs": "download and install Node.js", - "activateFNM": "activate fnm", - "noteWithColon": "NOTE:", - "dockerIsNotNodejsPackageManager": "Docker is not a Node.js package manager.", - "PleaseEndureAlreadyInstallOnSystem": "Please ensure it is already installed on your system.", - "dockerInstructions": "Follow official instructions at https://docs.docker.com/desktop/", - "dockerImagesLink": "Docker images are provided officially at https://github.com/nodejs/docker-node/", - "pullsNodejsDockerImage": "pulls the Node.js Docker image", - "homebrewIsNotNodejsPackageManager": "Homebrew is not a Node.js package manager.", - "homebrewInstructions": "Follow official instructions at https://brew.sh/", - "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew only supports installing major Node.js versions and might not support the latest Node.js version from the {version} release line.", - "chocolateyIsNotNodejsPackageManager": "Chocolatey is not a Node.js package manager.", - "chocolateyInstructions": "Follow official instructions at https://chocolatey.org/", - "chocolateyNotMaintanedByNodejs": "Chocolatey is not officially maintained by the Node.js project and might not support the {version} version of Node.js" + "communityWarningReport": "If you encounter issues, please reach out to the package manager's maintainers." } } } diff --git a/packages/i18n/turbo.json b/packages/i18n/turbo.json index 8607602900992..345419cd21dbd 100644 --- a/packages/i18n/turbo.json +++ b/packages/i18n/turbo.json @@ -10,10 +10,11 @@ "dependsOn": [], "outputs": ["dist/**"], "env": [ - "NEXT_PUBLIC_VERCEL_ENV", + "VERCEL_ENV", + "VERCEL_URL", + "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", "NEXT_PUBLIC_BASE_URL", - "NEXT_PUBLIC_VERCEL_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", "NEXT_PUBLIC_BASE_PATH", From 094fa47f9e3deca4eec2ff997a544e81f4fd0019 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Tue, 24 Dec 2024 19:59:53 +0100 Subject: [PATCH 0215/1385] feat(button): introduce `size` variant (#7348) --- .../components/Common/Button/index.module.css | 6 ++++++ .../components/Common/Button/index.stories.tsx | 15 ++++++++++++++- apps/site/components/Common/Button/index.tsx | 9 ++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/apps/site/components/Common/Button/index.module.css b/apps/site/components/Common/Button/index.module.css index 9bd34cb96ae97..4d8786bc63b14 100644 --- a/apps/site/components/Common/Button/index.module.css +++ b/apps/site/components/Common/Button/index.module.css @@ -17,6 +17,12 @@ @apply cursor-not-allowed; } + &.small { + @apply px-3 + py-2 + text-sm; + } + &.neutral { @apply rounded bg-neutral-900 diff --git a/apps/site/components/Common/Button/index.stories.tsx b/apps/site/components/Common/Button/index.stories.tsx index d10805dc60e54..b518ac0fbd3f7 100644 --- a/apps/site/components/Common/Button/index.stories.tsx +++ b/apps/site/components/Common/Button/index.stories.tsx @@ -11,6 +11,7 @@ export const Neutral: Story = { kind: 'neutral', children: 'Download Node (LTS)', disabled: false, + size: 'default', }, }; @@ -19,6 +20,7 @@ export const Primary: Story = { kind: 'primary', children: 'Download Node (LTS)', disabled: false, + size: 'default', }, }; @@ -27,6 +29,7 @@ export const Secondary: Story = { kind: 'secondary', children: 'Download Node (LTS)', disabled: false, + size: 'default', }, }; @@ -35,6 +38,7 @@ export const Special: Story = { kind: 'special', children: 'Download Node (LTS)', disabled: false, + size: 'default', }, }; @@ -48,7 +52,16 @@ export const WithIcon: Story = { </> ), disabled: false, + size: 'default', }, }; -export default { component: Button } as Meta; +export default { + component: Button, + argTypes: { + size: { + options: ['default', 'small'], + control: { type: 'radio' }, + }, + }, +} as Meta; diff --git a/apps/site/components/Common/Button/index.tsx b/apps/site/components/Common/Button/index.tsx index 804cc296ecf46..bf19cfc5cffd3 100644 --- a/apps/site/components/Common/Button/index.tsx +++ b/apps/site/components/Common/Button/index.tsx @@ -14,11 +14,13 @@ import styles from './index.module.css'; type ButtonProps = AnchorHTMLAttributes<HTMLAnchorElement> & { kind?: 'neutral' | 'primary' | 'secondary' | 'special'; + size?: 'default' | 'small'; disabled?: boolean; }; const Button: FC<ButtonProps> = ({ kind = 'primary', + size = 'default', disabled = false, href = undefined, children, @@ -56,7 +58,12 @@ const Button: FC<ButtonProps> = ({ role="button" href={disabled ? undefined : href} aria-disabled={disabled} - className={classNames(styles.button, styles[kind], className)} + className={classNames( + styles.button, + styles[kind], + styles[size], + className + )} tabIndex={disabled ? -1 : 0} // Ensure focusable if not disabled onClick={onClickHandler} onKeyDown={onKeyDownHandler} From f261e774d84545101f6dec57d53cc4fbb366c37a Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Tue, 24 Dec 2024 19:15:28 +0000 Subject: [PATCH 0216/1385] hotfix: attempt to fix vercel region (access fetch during initial build) (#7355) --- apps/site/next-data/blogData.ts | 7 ++++++- apps/site/next-data/downloadSnippets.ts | 7 ++++++- apps/site/next-data/releaseData.ts | 7 ++++++- apps/site/next-env.d.ts | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/apps/site/next-data/blogData.ts b/apps/site/next-data/blogData.ts index 98530274ffb1e..951cd04975245 100644 --- a/apps/site/next-data/blogData.ts +++ b/apps/site/next-data/blogData.ts @@ -3,15 +3,20 @@ import { IS_DEV_ENV, NEXT_DATA_URL, VERCEL_ENV, + VERCEL_REGION, } from '@/next.constants.mjs'; import type { BlogPostsRSC } from '@/types'; const getBlogData = (cat: string, page?: number): Promise<BlogPostsRSC> => { + const IS_NOT_VERCEL_RUNTIME_ENV = + (!IS_DEV_ENV && VERCEL_ENV && !VERCEL_REGION) || + (!IS_DEV_ENV && !VERCEL_ENV); + // When we're using Static Exports the Next.js Server is not running (during build-time) // hence the self-ingestion APIs will not be available. In this case we want to load // the data directly within the current thread, which will anyways be loaded only once // We use lazy-imports to prevent `provideBlogData` from executing on import - if (ENABLE_STATIC_EXPORT || (VERCEL_ENV !== 'production' && !IS_DEV_ENV)) { + if (ENABLE_STATIC_EXPORT || IS_NOT_VERCEL_RUNTIME_ENV) { return import('@/next-data/providers/blogData').then( ({ provideBlogPosts, providePaginatedBlogPosts }) => page ? providePaginatedBlogPosts(cat, page) : provideBlogPosts(cat) diff --git a/apps/site/next-data/downloadSnippets.ts b/apps/site/next-data/downloadSnippets.ts index c1ccaa90a59ce..909eaf725c365 100644 --- a/apps/site/next-data/downloadSnippets.ts +++ b/apps/site/next-data/downloadSnippets.ts @@ -3,6 +3,7 @@ import { IS_DEV_ENV, NEXT_DATA_URL, VERCEL_ENV, + VERCEL_REGION, } from '@/next.constants.mjs'; import { availableLocaleCodes } from '@/next.locales.mjs'; import type { DownloadSnippet } from '@/types'; @@ -14,11 +15,15 @@ const getDownloadSnippets = (lang: string): Promise<Array<DownloadSnippet>> => { return Promise.resolve([]); } + const IS_NOT_VERCEL_RUNTIME_ENV = + (!IS_DEV_ENV && VERCEL_ENV && !VERCEL_REGION) || + (!IS_DEV_ENV && !VERCEL_ENV); + // When we're using Static Exports the Next.js Server is not running (during build-time) // hence the self-ingestion APIs will not be available. In this case we want to load // the data directly within the current thread, which will anyways be loaded only once // We use lazy-imports to prevent `provideBlogData` from executing on import - if (ENABLE_STATIC_EXPORT || (VERCEL_ENV !== 'production' && !IS_DEV_ENV)) { + if (ENABLE_STATIC_EXPORT || IS_NOT_VERCEL_RUNTIME_ENV) { return import('@/next-data/providers/downloadSnippets').then( ({ default: provideDownloadSnippets }) => provideDownloadSnippets(lang)! ); diff --git a/apps/site/next-data/releaseData.ts b/apps/site/next-data/releaseData.ts index 5f238fdc6ff0f..e04c4c9373d15 100644 --- a/apps/site/next-data/releaseData.ts +++ b/apps/site/next-data/releaseData.ts @@ -3,15 +3,20 @@ import { IS_DEV_ENV, NEXT_DATA_URL, VERCEL_ENV, + VERCEL_REGION, } from '@/next.constants.mjs'; import type { NodeRelease } from '@/types'; const getReleaseData = (): Promise<Array<NodeRelease>> => { + const IS_NOT_VERCEL_RUNTIME_ENV = + (!IS_DEV_ENV && VERCEL_ENV && !VERCEL_REGION) || + (!IS_DEV_ENV && !VERCEL_ENV); + // When we're using Static Exports the Next.js Server is not running (during build-time) // hence the self-ingestion APIs will not be available. In this case we want to load // the data directly within the current thread, which will anyways be loaded only once // We use lazy-imports to prevent `provideBlogData` from executing on import - if (ENABLE_STATIC_EXPORT || (VERCEL_ENV !== 'production' && !IS_DEV_ENV)) { + if (ENABLE_STATIC_EXPORT || IS_NOT_VERCEL_RUNTIME_ENV) { return import('@/next-data/providers/releaseData').then( ({ default: provideReleaseData }) => provideReleaseData() ); diff --git a/apps/site/next-env.d.ts b/apps/site/next-env.d.ts index 3cd7048ed9471..725dd6f245153 100644 --- a/apps/site/next-env.d.ts +++ b/apps/site/next-env.d.ts @@ -3,4 +3,4 @@ /// <reference types="next/navigation-types/compat/navigation" /> // NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. From d252e0b1444a956489dbe0247e96b4c18cdd6bb1 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Tue, 24 Dec 2024 20:16:40 +0100 Subject: [PATCH 0217/1385] feat(icons): introduce package manager (#7354) * feat(icons): introduce package manager -npm -pnpm -yarn * fix: svg in tsx * add jsdoc for provenance * use righ size * Delete .DS_Store * chore: remove unnecessary see tags --------- Co-authored-by: Claudio Wunder <cwunder@gnome.org> --- .../components/Icons/PackageManager/Npm.tsx | 21 ++++++++++++++++++ .../components/Icons/PackageManager/Pnpm.tsx | 22 +++++++++++++++++++ .../components/Icons/PackageManager/Yarn.tsx | 22 +++++++++++++++++++ .../__design__/package-manager.stories.tsx | 17 ++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 apps/site/components/Icons/PackageManager/Npm.tsx create mode 100644 apps/site/components/Icons/PackageManager/Pnpm.tsx create mode 100644 apps/site/components/Icons/PackageManager/Yarn.tsx create mode 100644 apps/site/components/__design__/package-manager.stories.tsx diff --git a/apps/site/components/Icons/PackageManager/Npm.tsx b/apps/site/components/Icons/PackageManager/Npm.tsx new file mode 100644 index 0000000000000..88b3d3b3fd738 --- /dev/null +++ b/apps/site/components/Icons/PackageManager/Npm.tsx @@ -0,0 +1,21 @@ +import type { FC, SVGProps } from 'react'; + +const NpmIcon: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + width="32px" + height="32px" + viewBox="0 0 24 24" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <g fill="none" fillRule="evenodd"> + <rect width="24" height="24" fill="#D40001" /> + <path + fill="#fff" + d="M16.7179487,7.92840493 L12.2051282,7.92840493 L12.2051282,20.2494172 L4,20.2494172 L4,3 L12.2051282,3 L20,3 L20,7.92840493 L20,20.2494172 L16.7179487,20.2494172 L16.7179487,7.92840493 Z" + /> + </g> + </svg> +); + +export default NpmIcon; diff --git a/apps/site/components/Icons/PackageManager/Pnpm.tsx b/apps/site/components/Icons/PackageManager/Pnpm.tsx new file mode 100644 index 0000000000000..d5607de90a3db --- /dev/null +++ b/apps/site/components/Icons/PackageManager/Pnpm.tsx @@ -0,0 +1,22 @@ +import type { FC, SVGProps } from 'react'; + +const PnpmIcon: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + width="32px" + height="32px" + viewBox="0 0 32 32" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <path d="M30,10.75H21.251V2H30Z" fill="#f9ad00" /> + <path d="M20.374,10.75h-8.75V2h8.75Z" fill="#f9ad00" /> + <path d="M10.749,10.75H2V2h8.749Z" fill="#f9ad00" /> + <path d="M30,20.375H21.251v-8.75H30Z" fill="#f9ad00" /> + <path d="M20.374,20.375h-8.75v-8.75h8.75Z" fill="#4e4e4e" /> + <path d="M20.374,30h-8.75V21.25h8.75Z" fill="#4e4e4e" /> + <path d="M30,30H21.251V21.25H30Z" fill="#4e4e4e" /> + <path d="M10.749,30H2V21.25h8.749Z" fill="#4e4e4e" /> + </svg> +); + +export default PnpmIcon; diff --git a/apps/site/components/Icons/PackageManager/Yarn.tsx b/apps/site/components/Icons/PackageManager/Yarn.tsx new file mode 100644 index 0000000000000..90635eea6ccca --- /dev/null +++ b/apps/site/components/Icons/PackageManager/Yarn.tsx @@ -0,0 +1,22 @@ +import type { FC, SVGProps } from 'react'; + +const YarnIcon: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + width="32px" + height="32px" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 518 518" + {...props} + > + <path + fill="#2c8ebb" + d="M259 0c143 0 259 116 259 259S402 518 259 518 0 402 0 259 116 0 259 0z" + /> + <path + fill="#fff" + d="M435.2 337.5c-1.8-14.2-13.8-24-29.2-23.8-23 .3-42.3 12.2-55.1 20.1-5 3.1-9.3 5.4-13 7.1.8-11.6.1-26.8-5.9-43.5-7.3-20-17.1-32.3-24.1-39.4 8.1-11.8 19.2-29 24.4-55.6 4.5-22.7 3.1-58-7.2-77.8-2.1-4-5.6-6.9-10-8.1-1.8-.5-5.2-1.5-11.9.4C293.1 96 289.6 93.8 286.9 92c-5.6-3.6-12.2-4.4-18.4-2.1-8.3 3-15.4 11-22.1 25.2-1 2.1-1.9 4.1-2.7 6.1-12.7.9-32.7 5.5-49.6 23.8-2.1 2.3-6.2 4-10.5 5.6h.1c-8.8 3.1-12.8 10.3-17.7 23.3-6.8 18.2.2 36.1 7.1 47.7-9.4 8.4-21.9 21.8-28.5 37.5-8.2 19.4-9.1 38.4-8.8 48.7-7 7.4-17.8 21.3-19 36.9-1.6 21.8 6.3 36.6 9.8 42 1 1.6 2.1 2.9 3.3 4.2-.4 2.7-.5 5.6.1 8.6 1.3 7 5.7 12.7 12.4 16.3 13.2 7 31.6 10 45.8 2.9 5.1 5.4 14.4 10.6 31.3 10.6h1c4.3 0 58.9-2.9 74.8-6.8 7.1-1.7 12-4.7 15.2-7.4 10.2-3.2 38.4-12.8 65-30 18.8-12.2 25.3-14.8 39.3-18.2 13.6-3.3 22.1-15.7 20.4-29.4zm-23.8 14.7c-16 3.8-24.1 7.3-43.9 20.2-30.9 20-64.7 29.3-64.7 29.3s-2.8 4.2-10.9 6.1c-14 3.4-66.7 6.3-71.5 6.4-12.9.1-20.8-3.3-23-8.6-6.7-16 9.6-23 9.6-23s-3.6-2.2-5.7-4.2c-1.9-1.9-3.9-5.7-4.5-4.3-2.5 6.1-3.8 21-10.5 27.7-9.2 9.3-26.6 6.2-36.9.8-11.3-6 .8-20.1.8-20.1s-6.1 3.6-11-3.8c-4.4-6.8-8.5-18.4-7.4-32.7 1.2-16.3 19.4-32.1 19.4-32.1s-3.2-24.1 7.3-48.8c9.5-22.5 35.1-40.6 35.1-40.6s-21.5-23.8-13.5-45.2c5.2-14 7.3-13.9 9-14.5 6-2.3 11.8-4.8 16.1-9.5 21.5-23.2 48.9-18.8 48.9-18.8s13-39.5 25-31.8c3.7 2.4 17 32 17 32s14.2-8.3 15.8-5.2c8.6 16.7 9.6 48.6 5.8 68-6.4 32-22.4 49.2-28.8 60-1.5 2.5 17.2 10.4 29 43.1 10.9 29.9 1.2 55 2.9 57.8.3.5.4.7.4.7s12.5 1 37.6-14.5c13.4-8.3 29.3-17.6 47.4-17.8 17.5-.3 18.4 20.2 5.2 23.4z" + /> + </svg> +); + +export default YarnIcon; diff --git a/apps/site/components/__design__/package-manager.stories.tsx b/apps/site/components/__design__/package-manager.stories.tsx new file mode 100644 index 0000000000000..6707083b4f510 --- /dev/null +++ b/apps/site/components/__design__/package-manager.stories.tsx @@ -0,0 +1,17 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import NpmIcon from '@/components/Icons/PackageManager/Npm'; +import PnpmIcon from '@/components/Icons/PackageManager/Pnpm'; +import YarnIcon from '@/components/Icons/PackageManager/Yarn'; + +export const PackageManager: StoryObj = { + render: () => ( + <div className="flex space-x-4"> + <NpmIcon width={64} height={64} /> + <PnpmIcon width={64} height={64} /> + <YarnIcon width={64} height={64} /> + </div> + ), +}; + +export default { title: 'Design System' } as MetaObj; From 077e07e9c10df502535d167d5bd626d36b862477 Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Wed, 25 Dec 2024 03:52:06 +0300 Subject: [PATCH 0218/1385] feat: IBM AIX Icon added (#7356) * feat: AIX icon added * chore: AIX naming * chore: AIX naming --- .../Common/Select/index.stories.tsx | 6 +++ .../Release/OperatingSystemDropdown.tsx | 4 +- apps/site/components/Icons/Platform/AIX.tsx | 46 +++++++++++++++++++ .../__design__/platform-logos.stories.tsx | 2 + 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 apps/site/components/Icons/Platform/AIX.tsx diff --git a/apps/site/components/Common/Select/index.stories.tsx b/apps/site/components/Common/Select/index.stories.tsx index c233b69cf1f17..59b5da23b7f48 100644 --- a/apps/site/components/Common/Select/index.stories.tsx +++ b/apps/site/components/Common/Select/index.stories.tsx @@ -1,6 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import Select from '@/components/Common/Select'; +import AIX from '@/components/Icons/Platform/AIX'; import Apple from '@/components/Icons/Platform/Apple'; import Linux from '@/components/Icons/Platform/Linux'; import Microsoft from '@/components/Icons/Platform/Microsoft'; @@ -90,6 +91,11 @@ export const InlineSelect: Story = { label: 'Windows', iconImage: <Microsoft width={16} height={16} />, }, + { + value: 'aix', + label: 'AIX', + iconImage: <AIX width={16} height={16} />, + }, ], }, ], diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index c11cd679f6e5c..f6a903748e591 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -5,8 +5,8 @@ import { useContext, useEffect } from 'react'; import type { FC } from 'react'; import Select from '@/components/Common/Select'; +import AIX from '@/components/Icons/Platform/AIX'; 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 { useClientContext } from '@/hooks'; @@ -56,7 +56,7 @@ const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = ({ WIN: <Microsoft width={16} height={16} />, MAC: <Apple width={16} height={16} />, LINUX: <Linux width={16} height={16} />, - AIX: <Aix width={16} height={16} />, + AIX: <AIX width={16} height={16} />, }, })} defaultValue={os} diff --git a/apps/site/components/Icons/Platform/AIX.tsx b/apps/site/components/Icons/Platform/AIX.tsx new file mode 100644 index 0000000000000..53f9f40b762e5 --- /dev/null +++ b/apps/site/components/Icons/Platform/AIX.tsx @@ -0,0 +1,46 @@ +import type { FC, SVGProps } from 'react'; + +const AIX: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + width={32} + height={32} + viewBox="0 0 1341.9 1341.9" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <g> + <path + transform="matrix(133.33 0 0 -133.33 1266.2 670.93)" + d="m0 0c0-2.466-1.998-4.465-4.465-4.465-2.465 0-4.466 1.999-4.466 4.465 0 2.467 2.001 4.465 4.466 4.465 2.467 0 4.465-1.998 4.465-4.465" + fill="#80cc28" + /> + <path + transform="matrix(133.33 0 0 -133.33 1328.1 670.93)" + d="m0 0h-0.103c0-1.333-0.54-2.539-1.413-3.413-0.874-0.873-2.08-1.413-3.412-1.413-1.335 0-2.539 0.54-3.414 1.413-0.874 0.874-1.414 2.08-1.414 3.413s0.54 2.539 1.414 3.413c0.875 0.873 2.079 1.413 3.414 1.413 1.332 0 2.538-0.54 3.412-1.413 0.873-0.874 1.413-2.08 1.413-3.413h0.206c0 2.779-2.253 5.032-5.031 5.032-2.78 0-5.033-2.253-5.033-5.032s2.253-5.032 5.033-5.032c2.778 0 5.031 2.253 5.031 5.032h-0.103" + fill="#4d7ec9" + /> + <path + transform="matrix(133.33 0 0 -133.33 389.19 556.69)" + d="m0 0-5e-3 -0.016-0.347-0.904h0.7zm0.776-2.024-0.267 0.681h-1.035l-0.265-0.678-0.526-3e-3 1.11 2.677h0.465l1.066-2.677z" + fill="#fff" + /> + <path + transform="matrix(133.33 0 0 -133.33 -63646 63635)" + d="m481.83 473.74h0.49v-2.679h-0.49z" + fill="#fff" + /> + <path + transform="matrix(133.33 0 0 -133.33 974.08 826.65)" + d="m0 0-0.721 1.014-0.76-1.014h-0.603l1.061 1.383-0.987 1.296h0.608l0.696-0.936 0.693 0.936h0.592l-0.983-1.3 1.015-1.379z" + fill="#fff" + /> + <path + transform="matrix(133.33 0 0 -133.33 1120.2 787.65)" + d="m0 0c0.037 0 0.07 2e-3 0.07 0.047 0 0.035-0.031 0.042-0.062 0.042h-0.059v-0.089zm-0.051-0.162h-0.045v0.288h0.11c0.068 0 0.102-0.025 0.102-0.082 0-0.052-0.033-0.074-0.074-0.079l0.082-0.127h-0.049l-0.077 0.125h-0.049zm0.052-0.064c0.114 0 0.202 0.088 0.202 0.209 0 0.118-0.088 0.207-0.202 0.207s-0.204-0.089-0.204-0.207c0-0.121 0.09-0.209 0.204-0.209m-0.253 0.209c0 0.143 0.116 0.249 0.253 0.249s0.253-0.106 0.253-0.249c0-0.145-0.116-0.251-0.253-0.251s-0.253 0.106-0.253 0.251" + fill="#fff" + /> + </g> + </svg> +); + +export default AIX; diff --git a/apps/site/components/__design__/platform-logos.stories.tsx b/apps/site/components/__design__/platform-logos.stories.tsx index e383be1216b01..29cea28d7f916 100644 --- a/apps/site/components/__design__/platform-logos.stories.tsx +++ b/apps/site/components/__design__/platform-logos.stories.tsx @@ -1,5 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; +import AIX from '@/components/Icons/Platform/AIX'; import Apple from '@/components/Icons/Platform/Apple'; import Choco from '@/components/Icons/Platform/Choco'; import Docker from '@/components/Icons/Platform/Docker'; @@ -16,6 +17,7 @@ export const PlatformLogos: StoryObj = { <Apple width={64} height={64} /> <Linux width={64} height={64} /> <Microsoft width={64} height={64} /> + <AIX width={64} height={64} /> </div> <div className="flex flex-col items-center gap-4"> <Docker width={64} height={64} /> From 2226f7ad2b038bbcf2fa1d181ac52dbe24210783 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Fri, 27 Dec 2024 00:18:01 +0100 Subject: [PATCH 0219/1385] =?UTF-8?q?chore:=20document=20what=20we=20will/?= =?UTF-8?q?won=E2=80=99t=20translate=20(#7350)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: document what we want/wan't translate * Fix: typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> * Apply suggestions from code review Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> * update order * inclue tsc mention Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> --------- Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- TRANSLATION.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/TRANSLATION.md b/TRANSLATION.md index fa36471837cc6..32f428a95d81e 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -96,3 +96,30 @@ Translations are synced between Crowdin and the repository via GitHub Actions. - 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. + +## Why We Translate This section and Not That Section + +> First, what we mean by "section" is a part of the website. It's a collection of pages that are related to each other. They often correspond to the top-navigation of the site. For example, the "Learn" section is a collection of pages that are related to learning/discovering Node.js. + +Here we only talk about md/mdx files. The translation of React components is covered by a JSON dictionary and not covered here. + +We have these sections on the website: + +- Home page +- Learn +- About +- Download +- Blog +- Docs (not this codebase at all) + +### Sections that are translated + +- **Home page**: The landing page is translated because it's the first page that people see when they visit the website. It's important that everyone can understand what Node.js is and what it can do. +- **About**: This section is translated because it contains information about the Node.js project, its governance. There are no technical terms that are hard to translate. +- **Download**: This section is translated because it contains information about how to download Node.js. And it's really important that everyone can understand how to download Node.js. + +### Sections that are not translated + +- **Learn**: Per TSC consensus, the learn section is not translated. It contains technical terms that are hard to translate. Maintainers do not have the ability or bandwidth to ensure quality. It's better to have the content in English than to have bad translations. If you want to have more information read [this message](https://github.com/nodejs/nodejs.org/issues/6429#issuecomment-2558265376) that further explains. +- **Blog**: The blog is not translated because it's not useful to translate blog posts. Most of the blog posts are release notes, and it's not useful to translate them. +- **Docs**: The API docs are too expansive, and versioned, to be translated. From 3cddcc8e66b34d633b19fc2cc16e57b372c8febf Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 27 Dec 2024 08:21:14 -0500 Subject: [PATCH 0220/1385] chore: fix lighthouse workflow (#7361) Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/lighthouse.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index 90e649986a3ec..0e5d5365f22c4 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -35,8 +35,8 @@ jobs: name: Get Vercel Preview runs-on: ubuntu-latest outputs: - deployment_found: ${{ steps.check_deployment.outputs.deployment_found }} - url: ${{ steps.check_deployment.outputs.url }} + deployment_found: ${{ steps.set_outputs.outputs.deployment_found }} + url: ${{ steps.set_outputs.outputs.url }} steps: - name: Capture Vercel Preview id: check_deployment From 68c39964dfc247599804d8cb25fe1e28d6a5a661 Mon Sep 17 00:00:00 2001 From: Jordan Harband <ljharb@gmail.com> Date: Fri, 27 Dec 2024 10:21:00 -0800 Subject: [PATCH 0221/1385] download: restore preamble in download snippets (#7360) See https://nodejs-hj4exhlax-openjs.vercel.app/en/download/package-manager (preview from #7323) for the previous version See https://github.com/nodejs/nodejs.org/pull/7351#issuecomment-2563161476 for removal context --- apps/site/snippets/en/download/brew.bash | 6 ++++++ apps/site/snippets/en/download/choco.bash | 6 ++++++ apps/site/snippets/en/download/docker.bash | 6 ++++++ apps/site/snippets/en/download/fnm.bash | 8 +++++++- apps/site/snippets/en/download/nvm.bash | 3 +++ 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/apps/site/snippets/en/download/brew.bash b/apps/site/snippets/en/download/brew.bash index 30285746f6e3c..166fca14ed9b5 100644 --- a/apps/site/snippets/en/download/brew.bash +++ b/apps/site/snippets/en/download/brew.bash @@ -1,3 +1,9 @@ +# NOTE: +# Homebrew is not a Node.js package manager. +# Please ensure it is already installed on your system. +# Follow official instructions at https://brew.sh/ +# Homebrew only supports installing major Node.js versions and might not support the latest Node.js version from the 22 release line. + # download and install Node.js brew install node@${props.release.major} diff --git a/apps/site/snippets/en/download/choco.bash b/apps/site/snippets/en/download/choco.bash index 62b3a4783c81d..84e8cd61e0fec 100644 --- a/apps/site/snippets/en/download/choco.bash +++ b/apps/site/snippets/en/download/choco.bash @@ -1,3 +1,9 @@ +# NOTE: +# Chocolatey is not a Node.js package manager. +# Please ensure it is already installed on your system. +# Follow official instructions at https://chocolatey.org/ +# Chocolatey is not officially maintained by the Node.js project and might not support the v22.12.0 version of Node.js + # download and install Node.js choco install nodejs-lts --version="${props.release.major}" diff --git a/apps/site/snippets/en/download/docker.bash b/apps/site/snippets/en/download/docker.bash index e478cb8c1dcf6..e3617cf2d3225 100644 --- a/apps/site/snippets/en/download/docker.bash +++ b/apps/site/snippets/en/download/docker.bash @@ -1,3 +1,9 @@ +# NOTE: +# Docker is not a Node.js package manager. +# Please ensure it is already installed on your system. +# Follow official instructions at https://docs.docker.com/desktop/ +# Docker images are provided officially at https://github.com/nodejs/docker-node/ + # pulls the Node.js Docker image docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} diff --git a/apps/site/snippets/en/download/fnm.bash b/apps/site/snippets/en/download/fnm.bash index 77c235d49fbef..b4ba5d71b721d 100644 --- a/apps/site/snippets/en/download/fnm.bash +++ b/apps/site/snippets/en/download/fnm.bash @@ -1,5 +1,11 @@ +# installs fnm (Fast Node Manager) +curl -fsSL https://fnm.vercel.app/install | bash + +# activate fnm +source ~/.bashrc + # download and install Node.js -fnm install ${props.release.major} +fnm use --install-if-missing ${props.release.major} # verifies the right Node.js version is in the environment node -v # should print "${props.release.versionWithPrefix}" diff --git a/apps/site/snippets/en/download/nvm.bash b/apps/site/snippets/en/download/nvm.bash index 97653d94e28f6..74ca8f037c4be 100644 --- a/apps/site/snippets/en/download/nvm.bash +++ b/apps/site/snippets/en/download/nvm.bash @@ -1,3 +1,6 @@ +# installs nvm (Node Version Manager) +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + # download and install Node.js (you may need to restart the terminal) nvm install ${props.release.major} From 1ef006f620892ddd676335b05dcaace0d4f4c58a Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sat, 28 Dec 2024 03:09:23 +0000 Subject: [PATCH 0222/1385] feat: introduced new downloads page (#7357) Co-authored-by: Geoffrey Booth <webadmin@geoffreybooth.com> Co-authored-by: Jordan Harband <ljharb@gmail.com> --- .../blog-data/[category]/[page]/route.ts | 7 +- .../Common/AlertBox/index.module.css | 5 +- .../components/Common/BlogPostCard/index.tsx | 3 +- .../components/Common/Button/index.module.css | 1 + .../components/Common/Select/index.module.css | 10 +- .../Common/Select/index.stories.tsx | 13 +- apps/site/components/Common/Select/index.tsx | 109 +++-- .../site/components/Common/Skeleton/index.tsx | 11 +- .../components/Containers/MetaBar/index.tsx | 4 +- .../Downloads/DownloadButton/index.tsx | 14 +- .../components/Downloads/DownloadLink.tsx | 7 +- .../Downloads/Release/BitnessDropdown.tsx | 112 ----- .../Downloads/Release/DownloadButton.tsx | 32 -- .../Release/InstallationMethodDropdown.tsx | 88 ++++ .../components/Downloads/Release/NpmLink.tsx | 21 - .../Release/OperatingSystemDropdown.tsx | 70 ++- .../Release/PackageManagerDropdown.tsx | 49 +++ .../Downloads/Release/PlatformDropdown.tsx | 117 +++-- .../Release/PrebuiltDownloadButtons.tsx | 61 +++ .../Downloads/Release/ReleaseCodeBox.tsx | 134 ++++-- .../Downloads/Release/ReleaseStatus.tsx | 16 - .../Downloads/Release/ReleaseVersion.tsx | 16 - .../Downloads/Release/SourceButton.tsx | 30 -- .../Release/VerifyingBinariesLink.tsx | 11 - .../Downloads/Release/VersionDropdown.tsx | 7 +- .../{Platform => OperatingSystem}/AIX.tsx | 0 .../{Platform => OperatingSystem}/Apple.tsx | 0 .../{Platform => OperatingSystem}/Linux.tsx | 0 .../Microsoft.tsx | 0 .../components/Icons/OperatingSystem/index.ts | 6 + .../components/Icons/PackageManager/index.ts | 5 + .../components/Icons/Platform/Generic.tsx | 22 - apps/site/components/Icons/Platform/index.ts | 7 + apps/site/components/JSX/CodeBox/index.tsx | 39 -- .../__design__/package-manager.stories.tsx | 10 +- .../__design__/platform-logos.stories.tsx | 28 +- apps/site/components/withBlogCrossLinks.tsx | 3 +- .../components/withDownloadCategories.tsx | 79 ---- apps/site/components/withDownloadSection.tsx | 41 ++ apps/site/components/withLayout.tsx | 2 +- apps/site/global.d.ts | 29 ++ .../__tests__/useDetectOS.test.mjs | 22 +- apps/site/hooks/react-client/useDetectOS.ts | 40 +- .../hooks/react-generic/useSiteNavigation.ts | 2 +- apps/site/layouts/Blog.tsx | 8 +- apps/site/layouts/Download.tsx | 15 +- apps/site/layouts/GlowingBackdrop.tsx | 2 +- apps/site/next-data/blogData.ts | 7 +- apps/site/next-data/providers/blogData.ts | 42 +- apps/site/next-env.d.ts | 2 +- apps/site/next.constants.mjs | 10 - apps/site/next.jsx.compiler.mjs | 2 +- apps/site/next.mdx.use.client.mjs | 40 ++ apps/site/next.mdx.use.mjs | 49 --- apps/site/package.json | 8 +- apps/site/pages/en/download/current.mdx | 36 ++ apps/site/pages/en/download/index.mdx | 36 ++ .../en/download/package-manager/current.mdx | 24 -- .../en/download/package-manager/index.mdx | 24 -- .../en/download/prebuilt-binaries/current.mdx | 24 -- .../en/download/prebuilt-binaries/index.mdx | 24 -- .../download/prebuilt-installer/current.mdx | 26 -- .../en/download/prebuilt-installer/index.mdx | 26 -- .../pages/en/download/source-code/current.mdx | 24 -- .../pages/en/download/source-code/index.mdx | 24 -- .../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 -- .../pages/fa/download/package-manager/all.md | 392 ----------------- .../fa/download/package-manager/current.mdx | 24 -- .../fa/download/package-manager/index.mdx | 24 -- .../fa/download/prebuilt-binaries/current.mdx | 23 - .../fa/download/prebuilt-binaries/index.mdx | 23 - .../download/prebuilt-installer/current.mdx | 26 -- .../fa/download/prebuilt-installer/index.mdx | 26 -- .../pages/fa/download/source-code/current.mdx | 24 -- .../pages/fa/download/source-code/index.mdx | 24 -- .../pages/fr/download/package-manager/all.md | 400 ------------------ .../fr/download/package-manager/current.mdx | 24 -- .../fr/download/package-manager/index.mdx | 24 -- .../fr/download/prebuilt-binaries/current.mdx | 24 -- .../fr/download/prebuilt-binaries/index.mdx | 24 -- .../download/prebuilt-installer/current.mdx | 26 -- .../fr/download/prebuilt-installer/index.mdx | 26 -- .../pages/fr/download/source-code/current.mdx | 24 -- .../pages/fr/download/source-code/index.mdx | 24 -- .../pages/id/download/package-manager/all.md | 395 ----------------- .../id/download/package-manager/current.mdx | 24 -- .../id/download/package-manager/index.mdx | 24 -- .../id/download/prebuilt-binaries/current.mdx | 24 -- .../id/download/prebuilt-binaries/index.mdx | 24 -- .../download/prebuilt-installer/current.mdx | 26 -- .../id/download/prebuilt-installer/index.mdx | 26 -- .../pages/id/download/source-code/current.mdx | 24 -- .../pages/id/download/source-code/index.mdx | 24 -- .../ja/download/package-manager/current.mdx | 29 -- .../ja/download/package-manager/index.mdx | 29 -- .../ja/download/prebuilt-binaries/current.mdx | 28 -- .../ja/download/prebuilt-binaries/index.mdx | 23 - .../download/prebuilt-installer/current.mdx | 30 -- .../ja/download/prebuilt-installer/index.mdx | 30 -- .../pages/ja/download/source-code/current.mdx | 29 -- .../pages/ja/download/source-code/index.mdx | 29 -- .../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 | 25 -- .../pages/pt/download/package-manager/all.md | 387 ----------------- .../pt/download/package-manager/current.mdx | 24 -- .../pt/download/package-manager/index.mdx | 24 -- .../pt/download/prebuilt-binaries/current.mdx | 24 -- .../pt/download/prebuilt-binaries/index.mdx | 24 -- .../download/prebuilt-installer/current.mdx | 26 -- .../pt/download/prebuilt-installer/index.mdx | 26 -- .../pages/pt/download/source-code/current.mdx | 24 -- .../pages/pt/download/source-code/index.mdx | 24 -- .../pages/tr/download/package-manager/all.md | 398 ----------------- .../tr/download/package-manager/current.mdx | 24 -- .../tr/download/package-manager/index.mdx | 25 -- .../tr/download/prebuilt-binaries/current.mdx | 24 -- .../tr/download/prebuilt-binaries/index.mdx | 26 -- .../download/prebuilt-installer/current.mdx | 26 -- .../tr/download/prebuilt-installer/index.mdx | 26 -- .../pages/tr/download/source-code/current.mdx | 24 -- .../pages/tr/download/source-code/index.mdx | 24 -- .../pages/uk/download/package-manager/all.md | 392 ----------------- .../uk/download/package-manager/current.mdx | 24 -- .../uk/download/package-manager/index.mdx | 24 -- .../uk/download/prebuilt-binaries/current.mdx | 24 -- .../uk/download/prebuilt-binaries/index.mdx | 24 -- .../download/prebuilt-installer/current.mdx | 26 -- .../uk/download/prebuilt-installer/index.mdx | 26 -- .../pages/uk/download/source-code/current.mdx | 24 -- .../pages/uk/download/source-code/index.mdx | 24 -- .../zh-cn/download/package-manager/all.md | 389 ----------------- .../download/package-manager/current.mdx | 24 -- .../zh-cn/download/package-manager/index.mdx | 24 -- .../download/prebuilt-binaries/current.mdx | 24 -- .../download/prebuilt-binaries/index.mdx | 24 -- .../download/prebuilt-installer/current.mdx | 26 -- .../download/prebuilt-installer/index.mdx | 26 -- .../zh-cn/download/source-code/current.mdx | 24 -- .../zh-cn/download/source-code/index.mdx | 24 -- .../zh-tw/download/package-manager/all.md | 391 ----------------- .../download/package-manager/current.mdx | 24 -- .../zh-tw/download/package-manager/index.mdx | 24 -- .../download/prebuilt-binaries/current.mdx | 24 -- .../download/prebuilt-binaries/index.mdx | 24 -- .../download/prebuilt-installer/current.mdx | 26 -- .../download/prebuilt-installer/index.mdx | 26 -- .../zh-tw/download/source-code/current.mdx | 24 -- .../zh-tw/download/source-code/index.mdx | 24 -- .../__tests__/matterProvider.test.mjs | 9 +- apps/site/providers/releaseProvider.tsx | 122 +++--- apps/site/redirects.json | 38 +- apps/site/reducers/releaseReducer.ts | 53 +++ apps/site/snippets/en/download/brew.bash | 16 +- apps/site/snippets/en/download/choco.bash | 16 +- apps/site/snippets/en/download/docker.bash | 17 +- apps/site/snippets/en/download/fnm.bash | 21 +- apps/site/snippets/en/download/npm.bash | 2 + apps/site/snippets/en/download/nvm.bash | 12 +- apps/site/snippets/en/download/pnpm.bash | 5 + apps/site/snippets/en/download/yarn.bash | 5 + apps/site/tsconfig.json | 1 + apps/site/types/blog.ts | 5 +- apps/site/types/navigation.ts | 4 +- apps/site/types/release.ts | 44 +- apps/site/types/userOS.ts | 16 +- .../util/__tests__/downloadUtils.test.mjs | 159 ------- apps/site/util/__tests__/getBitness.test.mjs | 53 --- .../getUserBitnessByArchitecture.test.mjs | 13 - apps/site/util/downloadUtils.ts | 173 -------- apps/site/util/downloadUtils.tsx | 296 +++++++++++++ apps/site/util/getArchitecture.ts | 19 - apps/site/util/getBitness.ts | 19 - apps/site/util/getHighEntropyValues.ts | 33 ++ apps/site/util/getNodeDownloadUrl.ts | 36 +- .../site/util/getUserBitnessByArchitecture.ts | 10 - apps/site/util/getUserPlatform.ts | 15 + package-lock.json | 337 +++++++-------- packages/i18n/locales/en.json | 34 +- 193 files changed, 1566 insertions(+), 7872 deletions(-) delete mode 100644 apps/site/components/Downloads/Release/BitnessDropdown.tsx delete mode 100644 apps/site/components/Downloads/Release/DownloadButton.tsx create mode 100644 apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx delete mode 100644 apps/site/components/Downloads/Release/NpmLink.tsx create mode 100644 apps/site/components/Downloads/Release/PackageManagerDropdown.tsx create mode 100644 apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx delete mode 100644 apps/site/components/Downloads/Release/ReleaseStatus.tsx delete mode 100644 apps/site/components/Downloads/Release/ReleaseVersion.tsx delete mode 100644 apps/site/components/Downloads/Release/SourceButton.tsx delete mode 100644 apps/site/components/Downloads/Release/VerifyingBinariesLink.tsx rename apps/site/components/Icons/{Platform => OperatingSystem}/AIX.tsx (100%) rename apps/site/components/Icons/{Platform => OperatingSystem}/Apple.tsx (100%) rename apps/site/components/Icons/{Platform => OperatingSystem}/Linux.tsx (100%) rename apps/site/components/Icons/{Platform => OperatingSystem}/Microsoft.tsx (100%) create mode 100644 apps/site/components/Icons/OperatingSystem/index.ts create mode 100644 apps/site/components/Icons/PackageManager/index.ts delete mode 100644 apps/site/components/Icons/Platform/Generic.tsx create mode 100644 apps/site/components/Icons/Platform/index.ts delete mode 100644 apps/site/components/JSX/CodeBox/index.tsx delete mode 100644 apps/site/components/withDownloadCategories.tsx create mode 100644 apps/site/components/withDownloadSection.tsx create mode 100644 apps/site/global.d.ts create mode 100644 apps/site/pages/en/download/current.mdx create mode 100644 apps/site/pages/en/download/index.mdx delete mode 100644 apps/site/pages/en/download/package-manager/current.mdx delete mode 100644 apps/site/pages/en/download/package-manager/index.mdx delete mode 100644 apps/site/pages/en/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/en/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/en/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/en/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/en/download/source-code/current.mdx delete mode 100644 apps/site/pages/en/download/source-code/index.mdx delete mode 100644 apps/site/pages/es/download/package-manager/all.md delete mode 100644 apps/site/pages/es/download/package-manager/current.mdx delete mode 100644 apps/site/pages/es/download/package-manager/index.mdx delete mode 100644 apps/site/pages/es/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/es/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/es/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/es/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/es/download/source-code/current.mdx delete mode 100644 apps/site/pages/es/download/source-code/index.mdx delete mode 100644 apps/site/pages/fa/download/package-manager/all.md delete mode 100644 apps/site/pages/fa/download/package-manager/current.mdx delete mode 100644 apps/site/pages/fa/download/package-manager/index.mdx delete mode 100644 apps/site/pages/fa/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/fa/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/fa/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/fa/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/fa/download/source-code/current.mdx delete mode 100644 apps/site/pages/fa/download/source-code/index.mdx delete mode 100644 apps/site/pages/fr/download/package-manager/all.md delete mode 100644 apps/site/pages/fr/download/package-manager/current.mdx delete mode 100644 apps/site/pages/fr/download/package-manager/index.mdx delete mode 100644 apps/site/pages/fr/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/fr/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/fr/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/fr/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/fr/download/source-code/current.mdx delete mode 100644 apps/site/pages/fr/download/source-code/index.mdx delete mode 100644 apps/site/pages/id/download/package-manager/all.md delete mode 100644 apps/site/pages/id/download/package-manager/current.mdx delete mode 100644 apps/site/pages/id/download/package-manager/index.mdx delete mode 100644 apps/site/pages/id/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/id/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/id/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/id/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/id/download/source-code/current.mdx delete mode 100644 apps/site/pages/id/download/source-code/index.mdx delete mode 100644 apps/site/pages/ja/download/package-manager/current.mdx delete mode 100644 apps/site/pages/ja/download/package-manager/index.mdx delete mode 100644 apps/site/pages/ja/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/ja/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/ja/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/ja/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/ja/download/source-code/current.mdx delete mode 100644 apps/site/pages/ja/download/source-code/index.mdx delete mode 100644 apps/site/pages/ko/download/package-manager/all.md delete mode 100644 apps/site/pages/ko/download/package-manager/current.mdx delete mode 100644 apps/site/pages/ko/download/package-manager/index.mdx delete mode 100644 apps/site/pages/ko/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/ko/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/ko/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/ko/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/ko/download/source-code/current.mdx delete mode 100644 apps/site/pages/ko/download/source-code/index.mdx delete mode 100644 apps/site/pages/pt/download/package-manager/all.md delete mode 100644 apps/site/pages/pt/download/package-manager/current.mdx delete mode 100644 apps/site/pages/pt/download/package-manager/index.mdx delete mode 100644 apps/site/pages/pt/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/pt/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/pt/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/pt/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/pt/download/source-code/current.mdx delete mode 100644 apps/site/pages/pt/download/source-code/index.mdx delete mode 100644 apps/site/pages/tr/download/package-manager/all.md delete mode 100644 apps/site/pages/tr/download/package-manager/current.mdx delete mode 100644 apps/site/pages/tr/download/package-manager/index.mdx delete mode 100644 apps/site/pages/tr/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/tr/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/tr/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/tr/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/tr/download/source-code/current.mdx delete mode 100644 apps/site/pages/tr/download/source-code/index.mdx delete mode 100644 apps/site/pages/uk/download/package-manager/all.md delete mode 100644 apps/site/pages/uk/download/package-manager/current.mdx delete mode 100644 apps/site/pages/uk/download/package-manager/index.mdx delete mode 100644 apps/site/pages/uk/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/uk/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/uk/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/uk/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/uk/download/source-code/current.mdx delete mode 100644 apps/site/pages/uk/download/source-code/index.mdx delete mode 100644 apps/site/pages/zh-cn/download/package-manager/all.md delete mode 100644 apps/site/pages/zh-cn/download/package-manager/current.mdx delete mode 100644 apps/site/pages/zh-cn/download/package-manager/index.mdx delete mode 100644 apps/site/pages/zh-cn/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/zh-cn/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/zh-cn/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/zh-cn/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/zh-cn/download/source-code/current.mdx delete mode 100644 apps/site/pages/zh-cn/download/source-code/index.mdx delete mode 100644 apps/site/pages/zh-tw/download/package-manager/all.md delete mode 100644 apps/site/pages/zh-tw/download/package-manager/current.mdx delete mode 100644 apps/site/pages/zh-tw/download/package-manager/index.mdx delete mode 100644 apps/site/pages/zh-tw/download/prebuilt-binaries/current.mdx delete mode 100644 apps/site/pages/zh-tw/download/prebuilt-binaries/index.mdx delete mode 100644 apps/site/pages/zh-tw/download/prebuilt-installer/current.mdx delete mode 100644 apps/site/pages/zh-tw/download/prebuilt-installer/index.mdx delete mode 100644 apps/site/pages/zh-tw/download/source-code/current.mdx delete mode 100644 apps/site/pages/zh-tw/download/source-code/index.mdx create mode 100644 apps/site/reducers/releaseReducer.ts create mode 100644 apps/site/snippets/en/download/npm.bash create mode 100644 apps/site/snippets/en/download/pnpm.bash create mode 100644 apps/site/snippets/en/download/yarn.bash delete mode 100644 apps/site/util/__tests__/downloadUtils.test.mjs delete mode 100644 apps/site/util/__tests__/getBitness.test.mjs delete mode 100644 apps/site/util/__tests__/getUserBitnessByArchitecture.test.mjs delete mode 100644 apps/site/util/downloadUtils.ts create mode 100644 apps/site/util/downloadUtils.tsx delete mode 100644 apps/site/util/getArchitecture.ts delete mode 100644 apps/site/util/getBitness.ts create mode 100644 apps/site/util/getHighEntropyValues.ts delete mode 100644 apps/site/util/getUserBitnessByArchitecture.ts create mode 100644 apps/site/util/getUserPlatform.ts diff --git a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts index c0061c6a366ad..ed7977b3d6252 100644 --- a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts +++ b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts @@ -3,8 +3,13 @@ import { providePaginatedBlogPosts, } from '@/next-data/providers/blogData'; import { defaultLocale } from '@/next.locales.mjs'; +import type { BlogCategory } from '@/types'; -type DynamicStaticPaths = { locale: string; category: string; page: string }; +type DynamicStaticPaths = { + locale: string; + category: BlogCategory; + page: string; +}; type StaticParams = { params: Promise<DynamicStaticPaths> }; // This is the Route Handler for the `GET` method which handles the request diff --git a/apps/site/components/Common/AlertBox/index.module.css b/apps/site/components/Common/AlertBox/index.module.css index 3714979473e5d..c3e31ae888704 100644 --- a/apps/site/components/Common/AlertBox/index.module.css +++ b/apps/site/components/Common/AlertBox/index.module.css @@ -10,9 +10,10 @@ text-white; a { - @apply font-ibm-plex-mono + @apply font-bold text-white - underline; + underline + hover:text-white; &:hover { @apply no-underline; diff --git a/apps/site/components/Common/BlogPostCard/index.tsx b/apps/site/components/Common/BlogPostCard/index.tsx index 4f8696dd20565..30815ad9ed62c 100644 --- a/apps/site/components/Common/BlogPostCard/index.tsx +++ b/apps/site/components/Common/BlogPostCard/index.tsx @@ -5,13 +5,14 @@ import FormattedTime from '@/components/Common/FormattedTime'; import Preview from '@/components/Common/Preview'; import Link from '@/components/Link'; import WithAvatarGroup from '@/components/withAvatarGroup'; +import type { BlogCategory } from '@/types'; import { mapBlogCategoryToPreviewType } from '@/util/blogUtils'; import styles from './index.module.css'; type BlogPostCardProps = { title: string; - category: string; + category: BlogCategory; description?: string; authors?: Array<string>; date?: Date; diff --git a/apps/site/components/Common/Button/index.module.css b/apps/site/components/Common/Button/index.module.css index 4d8786bc63b14..6f2d69b8e9bef 100644 --- a/apps/site/components/Common/Button/index.module.css +++ b/apps/site/components/Common/Button/index.module.css @@ -3,6 +3,7 @@ relative inline-flex items-center + justify-center gap-2 py-2.5 text-center diff --git a/apps/site/components/Common/Select/index.module.css b/apps/site/components/Common/Select/index.module.css index 346ee8ee1ef1d..1e13248039a83 100644 --- a/apps/site/components/Common/Select/index.module.css +++ b/apps/site/components/Common/Select/index.module.css @@ -108,8 +108,14 @@ } } -.dropdown:has(.label) .text > span > span { - @apply pl-3; +.dropdown:has(.label) .text > span { + &:has(svg) > svg { + @apply ml-3; + } + + &:not(&:has(svg)) > span { + @apply ml-3; + } } .inline { diff --git a/apps/site/components/Common/Select/index.stories.tsx b/apps/site/components/Common/Select/index.stories.tsx index 59b5da23b7f48..4c24dd474aca0 100644 --- a/apps/site/components/Common/Select/index.stories.tsx +++ b/apps/site/components/Common/Select/index.stories.tsx @@ -1,10 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import Select from '@/components/Common/Select'; -import AIX from '@/components/Icons/Platform/AIX'; -import Apple from '@/components/Icons/Platform/Apple'; -import Linux from '@/components/Icons/Platform/Linux'; -import Microsoft from '@/components/Icons/Platform/Microsoft'; +import OSIcons from '@/components/Icons/OperatingSystem'; type Story = StoryObj<typeof Select>; type Meta = MetaObj<typeof Select>; @@ -79,22 +76,22 @@ export const InlineSelect: Story = { { value: 'linux', label: 'Linux', - iconImage: <Linux width={16} height={16} />, + iconImage: <OSIcons.Linux width={16} height={16} />, }, { value: 'macos', label: 'macOS', - iconImage: <Apple width={16} height={16} />, + iconImage: <OSIcons.Apple width={16} height={16} />, }, { value: 'windows', label: 'Windows', - iconImage: <Microsoft width={16} height={16} />, + iconImage: <OSIcons.Microsoft width={16} height={16} />, }, { value: 'aix', label: 'AIX', - iconImage: <AIX width={16} height={16} />, + iconImage: <OSIcons.AIX width={16} height={16} />, }, ], }, diff --git a/apps/site/components/Common/Select/index.tsx b/apps/site/components/Common/Select/index.tsx index 66dfed76ff0ab..b2abbbd1b848e 100644 --- a/apps/site/components/Common/Select/index.tsx +++ b/apps/site/components/Common/Select/index.tsx @@ -5,44 +5,47 @@ import * as ScrollPrimitive from '@radix-ui/react-scroll-area'; import * as SelectPrimitive from '@radix-ui/react-select'; import classNames from 'classnames'; import { useEffect, useId, useMemo, useState } from 'react'; -import type { FC } from 'react'; +import type { ReactElement, ReactNode } from 'react'; import Skeleton from '@/components/Common/Skeleton'; import type { FormattedMessage } from '@/types'; import styles from './index.module.css'; -type SelectValue = { - label: FormattedMessage; - value: string; - iconImage?: React.ReactNode; +export type SelectValue<T extends string> = { + label: FormattedMessage | string; + value: T; + iconImage?: ReactElement<SVGSVGElement>; disabled?: boolean; }; -type SelectGroup = { - label?: FormattedMessage; - items: Array<SelectValue>; +export type SelectGroup<T extends string> = { + label?: FormattedMessage | string; + items: Array<SelectValue<T>>; }; const isStringArray = (values: Array<unknown>): values is Array<string> => Boolean(values[0] && typeof values[0] === 'string'); -const isValuesArray = (values: Array<unknown>): values is Array<SelectValue> => +const isValuesArray = <T extends string>( + values: Array<unknown> +): values is Array<SelectValue<T>> => Boolean(values[0] && typeof values[0] === 'object' && 'value' in values[0]); -type SelectProps = { - values: Array<SelectGroup | string | SelectValue>; - defaultValue?: string; +type SelectProps<T extends string> = { + values: Array<SelectGroup<T>> | Array<T> | Array<SelectValue<T>>; + defaultValue?: T; placeholder?: string; label?: string; inline?: boolean; - onChange?: (value: string) => void; + onChange?: (value: T) => void; className?: string; ariaLabel?: string; loading?: boolean; + disabled?: boolean; }; -const Select: FC<SelectProps> = ({ +const Select = <T extends string>({ values = [], defaultValue, placeholder, @@ -52,7 +55,8 @@ const Select: FC<SelectProps> = ({ className, ariaLabel, loading = false, -}) => { + disabled = false, +}: SelectProps<T>): ReactNode => { const id = useId(); const [value, setValue] = useState(defaultValue); @@ -69,7 +73,7 @@ const Select: FC<SelectProps> = ({ return [{ items: mappedValues }]; } - return mappedValues as Array<SelectGroup>; + return mappedValues as Array<SelectGroup<T>>; }, [values]); // We render the actual item slotted to fix/prevent the issue @@ -82,8 +86,39 @@ const Select: FC<SelectProps> = ({ [mappedValues, value] ); + const memoizedMappedValues = useMemo(() => { + return mappedValues.map(({ label, items }, key) => ( + <SelectPrimitive.Group key={label?.toString() ?? key}> + {label && ( + <SelectPrimitive.Label + className={classNames(styles.item, styles.label)} + > + {label} + </SelectPrimitive.Label> + )} + + {items.map(({ value, label, iconImage, disabled }) => ( + <SelectPrimitive.Item + key={value} + value={value} + disabled={disabled} + className={classNames(styles.item, styles.text)} + > + <SelectPrimitive.ItemText> + {iconImage} + <span>{label}</span> + </SelectPrimitive.ItemText> + </SelectPrimitive.Item> + ))} + </SelectPrimitive.Group> + )); + // We explicitly want to recalculate these values only when the values themselves changed + // This is to prevent re-rendering and re-calcukating the values on every render + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(values)]); + // Both change the internal state and emit the change event - const handleChange = (value: string) => { + const handleChange = (value: T) => { setValue(value); if (typeof onChange === 'function') { @@ -106,15 +141,23 @@ const Select: FC<SelectProps> = ({ </label> )} - <SelectPrimitive.Root value={value} onValueChange={handleChange}> + <SelectPrimitive.Root + value={currentItem !== undefined ? value : undefined} + onValueChange={handleChange} + disabled={disabled} + > <SelectPrimitive.Trigger className={styles.trigger} aria-label={ariaLabel} id={id} > <SelectPrimitive.Value placeholder={placeholder}> - {currentItem?.iconImage} - <span>{currentItem?.label}</span> + {currentItem !== undefined && ( + <> + {currentItem.iconImage} + <span>{currentItem.label}</span> + </> + )} </SelectPrimitive.Value> <ChevronDownIcon className={styles.icon} /> </SelectPrimitive.Trigger> @@ -129,31 +172,7 @@ const Select: FC<SelectProps> = ({ <ScrollPrimitive.Root type="auto"> <SelectPrimitive.Viewport> <ScrollPrimitive.Viewport> - {mappedValues.map(({ label, items }, key) => ( - <SelectPrimitive.Group key={label?.toString() ?? key}> - {label && ( - <SelectPrimitive.Label - className={classNames(styles.item, styles.label)} - > - {label} - </SelectPrimitive.Label> - )} - - {items.map(({ value, label, iconImage, disabled }) => ( - <SelectPrimitive.Item - key={value} - value={value} - disabled={disabled} - className={classNames(styles.item, styles.text)} - > - <SelectPrimitive.ItemText> - {iconImage} - <span>{label}</span> - </SelectPrimitive.ItemText> - </SelectPrimitive.Item> - ))} - </SelectPrimitive.Group> - ))} + {memoizedMappedValues} </ScrollPrimitive.Viewport> </SelectPrimitive.Viewport> <ScrollPrimitive.Scrollbar orientation="vertical"> diff --git a/apps/site/components/Common/Skeleton/index.tsx b/apps/site/components/Common/Skeleton/index.tsx index cb5439345c09b..640c1f2e3852d 100644 --- a/apps/site/components/Common/Skeleton/index.tsx +++ b/apps/site/components/Common/Skeleton/index.tsx @@ -3,12 +3,21 @@ import { isValidElement } from 'react'; import styles from './index.module.css'; -type SkeletonProps = { loading?: boolean }; +type SkeletonProps = { hide?: boolean; loading?: boolean }; const Skeleton: FC<PropsWithChildren<SkeletonProps>> = ({ children, + hide = false, loading = true, }) => { + // This can be used to completely hide the children after the Skeleton has loaded + // If certain criterias do not match. This is useful for conditional rendering without + // changing the actual tree that the Skeleton is wrapping + if (!loading && hide) { + return null; + } + + // If we finished loading, we can hide the Skeleton and render the children tree if (!loading) { return children; } diff --git a/apps/site/components/Containers/MetaBar/index.tsx b/apps/site/components/Containers/MetaBar/index.tsx index b4bc0fccf70f8..febcc88bf3e60 100644 --- a/apps/site/components/Containers/MetaBar/index.tsx +++ b/apps/site/components/Containers/MetaBar/index.tsx @@ -8,7 +8,7 @@ import Link from '@/components/Link'; import styles from './index.module.css'; type MetaBarProps = { - items: Record<string, React.ReactNode>; + items: Partial<Record<IntlMessageKeys, React.ReactNode>>; headings?: { items: Array<Heading>; minDepth?: number; @@ -33,7 +33,7 @@ const MetaBar: FC<MetaBarProps> = ({ items, headings }) => { .filter(([, value]) => !!value) .map(([key, value]) => ( <Fragment key={key}> - <dt>{t(key)}</dt> + <dt>{t(key as IntlMessageKeys)}</dt> <dd>{value}</dd> </Fragment> ))} diff --git a/apps/site/components/Downloads/DownloadButton/index.tsx b/apps/site/components/Downloads/DownloadButton/index.tsx index c850ed362c8e3..622e655acaf02 100644 --- a/apps/site/components/Downloads/DownloadButton/index.tsx +++ b/apps/site/components/Downloads/DownloadButton/index.tsx @@ -8,7 +8,7 @@ import Button from '@/components/Common/Button'; import { useClientContext } from '@/hooks'; import type { NodeRelease } from '@/types'; import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; -import { getUserBitnessByArchitecture } from '@/util/getUserBitnessByArchitecture'; +import { getUserPlatform } from '@/util/getUserPlatform'; import styles from './index.module.css'; @@ -18,14 +18,10 @@ const DownloadButton: FC<PropsWithChildren<DownloadButtonProps>> = ({ release: { versionWithPrefix }, children, }) => { - const { - os, - bitness: userBitness, - architecture: userArchitecture, - } = useClientContext(); - - const bitness = getUserBitnessByArchitecture(userArchitecture, userBitness); - const downloadLink = getNodeDownloadUrl(versionWithPrefix, os, bitness); + const { os, bitness, architecture } = useClientContext(); + + const platform = getUserPlatform(architecture, bitness); + const downloadLink = getNodeDownloadUrl(versionWithPrefix, os, platform); return ( <> diff --git a/apps/site/components/Downloads/DownloadLink.tsx b/apps/site/components/Downloads/DownloadLink.tsx index cc23892253585..c4cc62402b7e1 100644 --- a/apps/site/components/Downloads/DownloadLink.tsx +++ b/apps/site/components/Downloads/DownloadLink.tsx @@ -5,6 +5,7 @@ import type { FC, PropsWithChildren } from 'react'; import { useClientContext } from '@/hooks'; import type { NodeRelease } from '@/types'; import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; +import { getUserPlatform } from '@/util/getUserPlatform'; type DownloadLinkProps = { release: NodeRelease }; @@ -12,8 +13,10 @@ const DownloadLink: FC<PropsWithChildren<DownloadLinkProps>> = ({ release: { versionWithPrefix }, children, }) => { - const { os, bitness } = useClientContext(); - const downloadLink = getNodeDownloadUrl(versionWithPrefix, os, bitness); + const { os, bitness, architecture } = useClientContext(); + + const platform = getUserPlatform(architecture, bitness); + const downloadLink = getNodeDownloadUrl(versionWithPrefix, os, platform); return <a href={downloadLink}>{children}</a>; }; diff --git a/apps/site/components/Downloads/Release/BitnessDropdown.tsx b/apps/site/components/Downloads/Release/BitnessDropdown.tsx deleted file mode 100644 index e48b44cba48b0..0000000000000 --- a/apps/site/components/Downloads/Release/BitnessDropdown.tsx +++ /dev/null @@ -1,112 +0,0 @@ -'use client'; - -import { useTranslations } from 'next-intl'; -import type { FC } from 'react'; -import { useEffect, useContext, useMemo } from 'react'; -import semVer from 'semver'; - -import Select from '@/components/Common/Select'; -import { useClientContext } from '@/hooks'; -import { ReleaseContext } from '@/providers/releaseProvider'; -import { bitnessItems, formatDropdownItems } from '@/util/downloadUtils'; -import { getUserBitnessByArchitecture } from '@/util/getUserBitnessByArchitecture'; - -const parseNumericBitness = (bitness: string) => - /^\d+$/.test(bitness) ? Number(bitness) : bitness; - -const BitnessDropdown: FC = () => { - const { bitness: userBitness, architecture: userArchitecture } = - useClientContext(); - const { bitness, os, release, setBitness } = useContext(ReleaseContext); - const t = useTranslations(); - - useEffect(() => { - setBitness(getUserBitnessByArchitecture(userArchitecture, userBitness)); - // we shouldn't update the effect on setter state change - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [userArchitecture, userBitness]); - - // @TODO: We should have a proper utility that gives - // disabled OSs, Platforms, based on specific criteria - // this can be an optimisation for the future - // to remove this logic from this component - const disabledItems = useMemo(() => { - const disabledItems = []; - - if (os === 'WIN' && semVer.satisfies(release.version, '< 19.9.0')) { - disabledItems.push('arm64'); - } - - if (os === 'WIN' && semVer.satisfies(release.version, '>= 23.0.0')) { - disabledItems.push('86'); - } - - if (os === 'LINUX' && semVer.satisfies(release.version, '< 4.0.0')) { - disabledItems.push('arm64', 'armv7l'); - } - - if (os === 'LINUX' && semVer.satisfies(release.version, '< 4.4.0')) { - disabledItems.push('ppc64le'); - } - - if (os === 'LINUX' && semVer.satisfies(release.version, '< 6.6.0')) { - disabledItems.push('s390x'); - } - - if (os === 'AIX' && semVer.satisfies(release.version, '< 6.7.0')) { - disabledItems.push('ppc64'); - } - - return disabledItems; - }, [os, release.version]); - - // @TODO: We should have a proper utility that gives - // disabled OSs, Platforms, based on specific criteria - // this can be an optimisation for the future - // to remove this logic from this component - useEffect(() => { - const mappedBitnessValues = bitnessItems[os].map(({ value }) => value); - - const currentBitnessExcluded = - // Different OSs support different Bitnessess, hence we should also check - // if besides the current bitness not being supported for a given release version - // we also should check if it is not supported by the OS - disabledItems.includes(String(bitness)) || - !mappedBitnessValues.includes(String(bitness)); - - const nonExcludedBitness = mappedBitnessValues.find( - bitness => !disabledItems.includes(bitness) - ); - - if (currentBitnessExcluded && nonExcludedBitness) { - // We set it as a Number for cases where it is 64 or 86 otherwise we are - // setting it as a string (ARMv7, ARMv6, etc.) - const numericBitness = Number(nonExcludedBitness); - - setBitness( - numericBitness.toString() === nonExcludedBitness - ? numericBitness - : nonExcludedBitness - ); - } - // we shouldn't react when "actions" change - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [os, disabledItems]); - - return ( - <Select - values={formatDropdownItems({ - items: bitnessItems[os], - disabledItems, - })} - loading={os === 'LOADING'} - ariaLabel={t('layouts.download.dropdown.bitness')} - defaultValue={String(bitness)} - onChange={bitness => setBitness(parseNumericBitness(bitness))} - className="min-w-28" - inline={true} - /> - ); -}; - -export default BitnessDropdown; diff --git a/apps/site/components/Downloads/Release/DownloadButton.tsx b/apps/site/components/Downloads/Release/DownloadButton.tsx deleted file mode 100644 index 706111c45803b..0000000000000 --- a/apps/site/components/Downloads/Release/DownloadButton.tsx +++ /dev/null @@ -1,32 +0,0 @@ -'use client'; - -import { CloudArrowDownIcon } from '@heroicons/react/24/outline'; -import { useTranslations } from 'next-intl'; -import { useContext } from 'react'; -import type { FC } from 'react'; - -import Button from '@/components/Common/Button'; -import { ReleaseContext } from '@/providers/releaseProvider'; -import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; - -type DownloadButtonProps = { kind: 'installer' | 'binary' | 'source' }; - -const DownloadButton: FC<DownloadButtonProps> = ({ kind = 'installer' }) => { - const t = useTranslations(); - const { release, os, bitness } = useContext(ReleaseContext); - - const version = release.versionWithPrefix; - const url = getNodeDownloadUrl(version, os, bitness, kind); - - return ( - <div className="mb-2 mt-6"> - <Button href={url} disabled={!version}> - <CloudArrowDownIcon /> - - {t('layouts.download.buttons.prebuilt', { version })} - </Button> - </div> - ); -}; - -export default DownloadButton; diff --git a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx new file mode 100644 index 0000000000000..a5d4a9307db52 --- /dev/null +++ b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx @@ -0,0 +1,88 @@ +'use client'; + +import { useTranslations } from 'next-intl'; +import { useContext, useEffect, useMemo } from 'react'; +import type { FC } from 'react'; + +import Select from '@/components/Common/Select'; +import { ReleaseContext } from '@/providers/releaseProvider'; +import type { InstallationMethod } from '@/types/release'; +import { nextItem, INSTALL_METHODS, parseCompat } from '@/util/downloadUtils'; + +const InstallationMethodDropdown: FC = () => { + const release = useContext(ReleaseContext); + const t = useTranslations(); + + // We parse the compatibility of the dropdown items + const parsedInstallMethods = useMemo( + () => parseCompat(INSTALL_METHODS, release), + // We only want to react on the change of the OS and Version + // eslint-disable-next-line react-hooks/exhaustive-deps + [release.os, release.version] + ); + + // We group Platforms on the Platform Dropdown to provide the User + // understanding of what is recommended/official and what is not. + const grouppedMethods = useMemo( + () => [ + { + label: t('layouts.download.dropdown.platformGroups.official'), + items: parsedInstallMethods.filter(({ recommended }) => recommended), + }, + { + label: t('layouts.download.dropdown.platformGroups.unofficial'), + items: parsedInstallMethods.filter(({ recommended }) => !recommended), + }, + ], + // We only want to react on the change of the parsedPlatforms + // eslint-disable-next-line react-hooks/exhaustive-deps + [parsedInstallMethods] + ); + + useEffect(() => { + // We should only define the initial Platform if the current platform is empty + // (aka has not yet been set) and the OS has finished loading (in the sense that) + // `detectOS` has finished running and decided what platform we are running on. + if (release.os !== 'LOADING' && release.installMethod === '') { + const installationMethod = + // Sets either the utmost recommended platform or the first non-disabled one + // Note that the first item of groupped platforms is always the recommended one + nextItem<InstallationMethod | ''>('', grouppedMethods[0].items) || + nextItem<InstallationMethod | ''>('', parsedInstallMethods); + + // This will never return an empty string as there should always be an item + // when the OS has finished loading for a given installation method + release.setInstallMethod(installationMethod as InstallationMethod); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [parsedInstallMethods, release.installMethod, release.os]); + + // We set the Platform to the next available platform when the current + // one is not valid anymore due to OS or Version changes + useEffect( + () => { + if (release.os !== 'LOADING' && release.installMethod !== '') { + release.setInstallMethod( + nextItem(release.installMethod, parsedInstallMethods) + ); + } + }, + // We only want to react on the change of the OS and Version + // eslint-disable-next-line react-hooks/exhaustive-deps + [release.os, release.version] + ); + + return ( + <Select<InstallationMethod | ''> + values={grouppedMethods} + defaultValue={release.installMethod} + loading={release.os === 'LOADING' || release.installMethod === ''} + ariaLabel={t('layouts.download.dropdown.platform')} + onChange={platform => platform && release.setInstallMethod(platform)} + className="min-w-28" + inline={true} + /> + ); +}; + +export default InstallationMethodDropdown; diff --git a/apps/site/components/Downloads/Release/NpmLink.tsx b/apps/site/components/Downloads/Release/NpmLink.tsx deleted file mode 100644 index bdf65fe1d40b3..0000000000000 --- a/apps/site/components/Downloads/Release/NpmLink.tsx +++ /dev/null @@ -1,21 +0,0 @@ -'use client'; - -import { useContext } from 'react'; -import type { FC } from 'react'; - -import LinkWithArrow from '@/components/Downloads/Release/LinkWithArrow'; -import { ReleaseContext } from '@/providers/releaseProvider'; - -const NpmLink: FC = () => { - const { release } = useContext(ReleaseContext); - - return ( - <LinkWithArrow - href={`https://github.com/npm/cli/releases/tag/v${release.npm}`} - > - npm ({release.npm}) - </LinkWithArrow> - ); -}; - -export default NpmLink; diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index f6a903748e591..385717528faf9 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -1,68 +1,48 @@ 'use client'; import { useTranslations } from 'next-intl'; -import { useContext, useEffect } from 'react'; +import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; import Select from '@/components/Common/Select'; -import AIX from '@/components/Icons/Platform/AIX'; -import Apple from '@/components/Icons/Platform/Apple'; -import Linux from '@/components/Icons/Platform/Linux'; -import Microsoft from '@/components/Icons/Platform/Microsoft'; import { useClientContext } from '@/hooks'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { UserOS } from '@/types/userOS'; -import { - formatDropdownItems, - operatingSystemItems, -} from '@/util/downloadUtils'; +import { OPERATING_SYSTEMS, parseCompat } from '@/util/downloadUtils'; type OperatingSystemDropdownProps = { exclude?: Array<UserOS> }; -const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = ({ - exclude = [], -}) => { - const { os: userOS } = useClientContext(); - const { os, setOS } = useContext(ReleaseContext); +const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = () => { + const { os } = useClientContext(); + const release = useContext(ReleaseContext); const t = useTranslations(); - // eslint-disable-next-line react-hooks/exhaustive-deps - useEffect(() => setOS(userOS), [userOS]); - - // @TODO: We should have a proper utility that gives - // disabled OSs, Platforms, based on specific criteria - // this can be an optimisation for the future - // to remove this logic from this component useEffect(() => { - const currentOSExcluded = exclude.includes(os); - - const nonExcludedOS = operatingSystemItems - .map(({ value }) => value) - .find(os => !exclude.includes(os)); - - if (currentOSExcluded && nonExcludedOS) { - setOS(nonExcludedOS); + if (os !== 'LOADING') { + release.setOS(os); } - // we shouldn't react when "actions" change + // Reacts on Client Context change of OS + // Only this Hook is allowed to bypass the `setOS` from above + // As this Hook is what defined the initial OS state // eslint-disable-next-line react-hooks/exhaustive-deps - }, [os, exclude]); + }, [os]); + + // We parse the compatibility of the dropdown items + const parsedOperatingSystems = useMemo( + () => parseCompat(OPERATING_SYSTEMS, release), + // We only want to react on the change of the OS, Bitness, and Version + // eslint-disable-next-line react-hooks/exhaustive-deps + [release.os, release.platform, release.version] + ); return ( - <Select - values={formatDropdownItems({ - items: operatingSystemItems, - disabledItems: exclude, - icons: { - WIN: <Microsoft width={16} height={16} />, - MAC: <Apple width={16} height={16} />, - LINUX: <Linux width={16} height={16} />, - AIX: <AIX width={16} height={16} />, - }, - })} - defaultValue={os} - loading={os === 'LOADING'} + <Select<UserOS> + values={parsedOperatingSystems} + defaultValue={release.os !== 'LOADING' ? release.os : undefined} + loading={release.os === 'LOADING'} + placeholder={t('layouts.download.dropdown.unknown')} ariaLabel={t('layouts.download.dropdown.os')} - onChange={value => setOS(value as UserOS)} + onChange={value => release.setOS(value)} className="min-w-[8.5rem]" inline={true} /> diff --git a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx new file mode 100644 index 0000000000000..0a0fdafe5173c --- /dev/null +++ b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx @@ -0,0 +1,49 @@ +'use client'; + +import { useTranslations } from 'next-intl'; +import { useContext, useEffect, useMemo } from 'react'; +import type { FC } from 'react'; + +import Select from '@/components/Common/Select'; +import { ReleaseContext } from '@/providers/releaseProvider'; +import type { PackageManager } from '@/types/release'; +import { nextItem, PACKAGE_MANAGERS, parseCompat } from '@/util/downloadUtils'; + +const PackageManagerDropdown: FC = () => { + const release = useContext(ReleaseContext); + const t = useTranslations(); + + // We parse the compatibility of the dropdown items + const parsedPackageManagers = useMemo( + () => parseCompat(PACKAGE_MANAGERS, release), + // We only want to react on the change of the Version + // eslint-disable-next-line react-hooks/exhaustive-deps + [release.version] + ); + + // We set the Package Manager to the next available Package Manager when the current + // one is not valid anymore due to Version changes + useEffect( + () => + release.setPackageManager( + nextItem(release.packageManager, parsedPackageManagers) + ), + // We only want to react on the change of the Version + // eslint-disable-next-line react-hooks/exhaustive-deps + [release.version] + ); + + return ( + <Select<PackageManager> + values={parsedPackageManagers} + defaultValue={release.packageManager} + loading={release.os === 'LOADING' || release.installMethod === ''} + ariaLabel={t('layouts.download.dropdown.packageManager')} + onChange={manager => release.setPackageManager(manager)} + className="min-w-28" + inline={true} + /> + ); +}; + +export default PackageManagerDropdown; diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index 2839fab44b357..6acb57beb0872 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -1,87 +1,70 @@ 'use client'; import { useTranslations } from 'next-intl'; -import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; +import { useEffect, useContext, 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 { useClientContext } from '@/hooks'; import { ReleaseContext } from '@/providers/releaseProvider'; -import type { PackageManager } from '@/types/release'; -import { formatDropdownItems, platformItems } from '@/util/downloadUtils'; - -const supportedHomebrewVersions = ['LTS', 'Current']; +import type { UserPlatform } from '@/types/userOS'; +import { PLATFORMS, nextItem, parseCompat } from '@/util/downloadUtils'; +import { getUserPlatform } from '@/util/getUserPlatform'; const PlatformDropdown: FC = () => { - const { release, os, platform, setPlatform } = useContext(ReleaseContext); - const t = useTranslations(); - - // @TODO: We should have a proper utility that gives - // disabled OSs, Platforms, based on specific criteria - // this can be an optimisation for the future - // to remove this logic from this component - const disabledItems = useMemo(() => { - const disabledItems = []; - - if (os === 'WIN') { - disabledItems.push('BREW', 'NVM'); - } - - if (os === 'LINUX' || os === 'MAC') { - disabledItems.push('CHOCO'); - } - - const releaseSupportsHomebrew = supportedHomebrewVersions.includes( - release.status - ); + const { architecture, bitness } = useClientContext(); - if (!releaseSupportsHomebrew) { - disabledItems.push('BREW'); - } + const release = useContext(ReleaseContext); + const t = useTranslations(); - return disabledItems; - }, [os, release.status]); + useEffect( + () => { + if (architecture && bitness) { + const autoDetectedPlatform = getUserPlatform(architecture, bitness); - // @TODO: We should have a proper utility that gives - // disabled OSs, Platforms, based on specific criteria - // this can be an optimisation for the future - // to remove this logic from this component - useEffect(() => { - const currentPlatformExcluded = disabledItems.includes(platform); + release.setPlatform(autoDetectedPlatform); + } + }, + // Only react on the change of the Client Context Architecture and Bitness + // eslint-disable-next-line react-hooks/exhaustive-deps + [architecture, bitness] + ); - const nonExcludedPlatform = platformItems - .map(({ value }) => value) - .find(platform => !disabledItems.includes(platform)); + // We parse the compatibility of the dropdown items + const parsedPlatforms = useMemo( + () => + // We only want to parse the compatibility when the OS has finished loading + // Otherwise, we would be parsing the compatibility of an empty array + release.os !== 'LOADING' + ? parseCompat(PLATFORMS[release.os], release) + : [], + // We only want to react on the change of the OS, Platform, and Version + // eslint-disable-next-line react-hooks/exhaustive-deps + [release.os, release.platform, release.version] + ); - if (currentPlatformExcluded && nonExcludedPlatform) { - setPlatform(nonExcludedPlatform); - } - // we shouldn't react when "actions" change + // We set the Platform to the next available Architecture when the current + // one is not valid anymore due to OS or Version changes + useEffect( + () => { + if (release.os !== 'LOADING' && release.platform !== '') { + release.setPlatform(nextItem(release.platform, parsedPlatforms)); + } + }, + // We only want to react on the change of the OS and Version // eslint-disable-next-line react-hooks/exhaustive-deps - }, [release.status, disabledItems, platform]); + [release.os, release.version, release.platform] + ); return ( - <Select - values={formatDropdownItems({ - items: platformItems, - icons: { - NVM: <NVM width={16} height={16} />, - FNM: <FNM width={16} height={16} />, - BREW: <Homebrew width={16} height={16} />, - DOCKER: <Docker width={16} height={16} />, - CHOCO: <Choco width={16} height={16} />, - }, - disabledItems, - })} - defaultValue={platform} - loading={os === 'LOADING'} - ariaLabel={t('layouts.download.dropdown.platform')} - onChange={platform => setPlatform(platform as PackageManager)} - className="min-w-28" + <Select<UserPlatform> + values={parsedPlatforms} + defaultValue={release.platform !== '' ? release.platform : undefined} + loading={release.os === 'LOADING' || release.platform === ''} + placeholder={t('layouts.download.dropdown.unknown')} + ariaLabel={t('layouts.download.dropdown.installMethod')} + onChange={platform => platform && release.setPlatform(platform)} + className="min-w-20" inline={true} /> ); diff --git a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx new file mode 100644 index 0000000000000..8be309c5f46da --- /dev/null +++ b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx @@ -0,0 +1,61 @@ +'use client'; + +import { CloudArrowDownIcon } from '@heroicons/react/24/outline'; +import { useTranslations } from 'next-intl'; +import { useContext } from 'react'; +import type { FC } from 'react'; + +import Button from '@/components/Common/Button'; +import Skeleton from '@/components/Common/Skeleton'; +import { ReleaseContext } from '@/providers/releaseProvider'; +import { + OperatingSystemLabel, + OS_NOT_SUPPORTING_INSTALLERS, +} from '@/util/downloadUtils'; +import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; + +// Retrieves the pure extension piece from the input string +const getExtension = (input: string) => String(input.split('.').slice(-1)); + +const PrebuiltDownloadButtons: FC = () => { + const t = useTranslations(); + const { release, os, platform } = useContext(ReleaseContext); + + const installerUrl = platform + ? getNodeDownloadUrl(release.versionWithPrefix, os, platform, 'installer') + : ''; + + const binaryUrl = platform + ? getNodeDownloadUrl(release.versionWithPrefix, os, platform, 'binary') + : ''; + + return ( + <div className="my-4 flex gap-2"> + <Skeleton + loading={os === 'LOADING' || platform === ''} + hide={OS_NOT_SUPPORTING_INSTALLERS.includes(os)} + > + <Button href={installerUrl} size="small" className="min-w-56"> + <CloudArrowDownIcon /> + + {t('layouts.download.buttons.installer', { + os: OperatingSystemLabel[os], + extension: getExtension(installerUrl), + })} + </Button> + </Skeleton> + + <Skeleton loading={os === 'LOADING' || platform === ''}> + <Button href={binaryUrl} size="small" className="min-w-56"> + <CloudArrowDownIcon /> + + {t('layouts.download.buttons.binary', { + extension: getExtension(binaryUrl), + })} + </Button> + </Skeleton> + </div> + ); +}; + +export default PrebuiltDownloadButtons; diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 86b5145724134..46701c5b17fa6 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -3,53 +3,131 @@ import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useContext, useMemo } from 'react'; -import semVer from 'semver'; -import Banner from '@/components/Common/Banner'; +import AlertBox from '@/components/Common/AlertBox'; +import CodeBox from '@/components/Common/CodeBox'; import Skeleton from '@/components/Common/Skeleton'; -import JSXCodeBox from '@/components/JSX/CodeBox'; -import { ESP_SUPPORT_THRESHOLD_VERSION } from '@/next.constants.mjs'; +import Link from '@/components/Link'; import { createSval } from '@/next.jsx.compiler.mjs'; -import { ReleaseContext } from '@/providers/releaseProvider'; +import { ReleaseContext, ReleasesContext } from '@/providers/releaseProvider'; +import type { ReleaseContextType } from '@/types/release'; +import { INSTALL_METHODS } from '@/util/downloadUtils'; +import { highlightToHtml } from '@/util/getHighlighter'; + +import LinkWithArrow from './LinkWithArrow'; + +// Creates a minimal JavaScript interpreter for parsing the JavaScript code from the snippets +// Note: that the code runs inside a sandboxed environment and cannot interact with any code outside of the sandbox +// It also does not have access to any Global or Window objects, nor it can execute code on the end-user's browser +// It also only allows a return statement for a string and it forces the return value to also be a string and only be used +// by Shiki to render the highlighted syntax. Hence XSS attacks or JavaScript injections are not possible. +const interpreter = createSval({}, 'script'); + +const parseSnippet = (s: string, releaseContext: ReleaseContextType) => { + // Adds the release context to the interpreter context + interpreter.import({ props: releaseContext }); + + // Evaluates the JavaScript code applying the release context to the code + interpreter.run(`exports.content = \`${s}\``); + + // Sets the parsed raw string to be used by the JSX CodeBox + return String(interpreter.exports.content); +}; const ReleaseCodeBox: FC = () => { - const { platform, os, release, snippet } = useContext(ReleaseContext); + const { snippets } = useContext(ReleasesContext); + const { installMethod, os, packageManager, release } = + useContext(ReleaseContext); const t = useTranslations(); - const parsedSnippet = useMemo(() => { - // Creates a minimal JavaScript interpreter for parsing the JavaScript code from the snippets - const interpreter = createSval({ props: { release } }, 'script'); + // Retrieves the current platform (Dropdown Item) based on the selected platform value + const currentPlatform = useMemo( + () => INSTALL_METHODS.find(({ value }) => value === installMethod), + [installMethod] + ); + + // Parses the snippets based on the selected platform, package manager, and release context + const parsedSnippets = useMemo(() => { + // Retrieves a snippet for the given Installation Method (aka Platform) + const installMethodSnippet = snippets.find( + ({ name }) => name === installMethod.toLowerCase() + ); + + // Retrieves a snippet for the given Package Manager to be bundled with the Platform snippet + const packageManagerSnippet = snippets.find( + ({ name }) => name === packageManager.toLowerCase() + ); - // Evaluates the JavaScript code applying the release context to the code - interpreter.run(`exports.content = \`${snippet?.content ?? ''}\``); + // Prevents numerous recalculations of `sval` and `Shiki` when not necessary + // As we only want to parse the snippets when both the Platform and Package Manager snippets are available + if (installMethodSnippet && packageManagerSnippet) { + const content = parseSnippet( + // Bundles the Platform and Package Manager snippets + `${installMethodSnippet.content}\n${packageManagerSnippet.content}`, + // Passes a partial state of only the things we need to the parser + { release, os } as ReleaseContextType + ); - // Sets the parsed raw string to be used by the JSX CodeBox - return interpreter.exports.content; - // Only react when the specific release number changed + // We use Shikis's `hast-util-to-html` to convert the highlighted code into plain HTML (Pretty much using Rehype) + // This is actually faster than using `hast-util-to-jsx-runtime` and then rendering the JSX + // As it requires React's runtime to interpolate and build these components dynamically + // Which also leads to a lot o GC being emitted. (Tested via Profiling) + return highlightToHtml(content, os === 'WIN' ? 'ps1' : 'bash'); + } + + return ''; + // Only change to these specific properties which are relevant for the re-rendering of the CodeBox // eslint-disable-next-line react-hooks/exhaustive-deps - }, [release.versionWithPrefix, os, platform]); + }, [release.versionWithPrefix, installMethod, os, packageManager]); + + // Determines the code language based on the OS + const displayName = os === 'WIN' ? 'PowerShell' : 'Bash'; - const codeLanguage = os === 'WIN' ? 'ps1' : 'bash'; + // Determines if the code box should render the skeleton loader + const renderSkeleton = os === 'LOADING' || installMethod === ''; + + // Defines fallbacks for the currentPlatform object + const { + label = '', + url = '', + info = 'layouts.download.codeBox.platformInfo.default', + } = currentPlatform ?? {}; return ( - <div className="mb-2 mt-6 flex flex-col gap-2"> - {semVer.lt(release.versionWithPrefix, ESP_SUPPORT_THRESHOLD_VERSION) && ( - <Banner type="error" link="/about/previous-releases/"> - {t('layouts.download.codeBox.unsupportedVersionWarning')}  - </Banner> + <div className="mb-6 mt-4 flex flex-col gap-2"> + {release.status === 'End-of-life' && ( + <AlertBox title="Warning" level="warning" size="small"> + {t.rich('layouts.download.codeBox.unsupportedVersionWarning', { + link: text => <Link href="/about/previous-releases/">{text}</Link>, + })} + </AlertBox> + )} + + {!currentPlatform || currentPlatform.recommended || ( + <AlertBox title="Info" level="info" size="small"> + {t('layouts.download.codeBox.communityPlatformInfo')} + </AlertBox> )} - <Skeleton loading={os === 'LOADING'}> - <JSXCodeBox language={codeLanguage} className="min-h-[12rem]"> - {parsedSnippet} - </JSXCodeBox> + <Skeleton loading={renderSkeleton}> + <CodeBox language={displayName} className="min-h-[16rem]"> + <code dangerouslySetInnerHTML={{ __html: parsedSnippets }} /> + </CodeBox> </Skeleton> <span className="text-center text-xs text-neutral-800 dark:text-neutral-200"> - {t('layouts.download.codeBox.communityWarning')} - <br /> - <b>{t('layouts.download.codeBox.communityWarningReport')}</b> + <Skeleton loading={renderSkeleton} hide={!currentPlatform}> + {t(info, { platform: label })}{' '} + {t.rich('layouts.download.codeBox.externalSupportInfo', { + platform: label, + link: text => ( + <LinkWithArrow href={url}> + <b>{text}</b> + </LinkWithArrow> + ), + })} + </Skeleton> </span> </div> ); diff --git a/apps/site/components/Downloads/Release/ReleaseStatus.tsx b/apps/site/components/Downloads/Release/ReleaseStatus.tsx deleted file mode 100644 index a1ec10b34713a..0000000000000 --- a/apps/site/components/Downloads/Release/ReleaseStatus.tsx +++ /dev/null @@ -1,16 +0,0 @@ -'use client'; - -import { useContext } from 'react'; -import type { FC } from 'react'; - -import { ReleaseContext } from '@/providers/releaseProvider'; - -const ReleaseStatus: FC = () => { - const { - release: { status }, - } = useContext(ReleaseContext); - - return status; -}; - -export default ReleaseStatus; diff --git a/apps/site/components/Downloads/Release/ReleaseVersion.tsx b/apps/site/components/Downloads/Release/ReleaseVersion.tsx deleted file mode 100644 index 9c759611eb9c6..0000000000000 --- a/apps/site/components/Downloads/Release/ReleaseVersion.tsx +++ /dev/null @@ -1,16 +0,0 @@ -'use client'; - -import { useContext } from 'react'; -import type { FC } from 'react'; - -import { ReleaseContext } from '@/providers/releaseProvider'; - -const ReleaseVersion: FC = () => { - const { - release: { version }, - } = useContext(ReleaseContext); - - return version; -}; - -export default ReleaseVersion; diff --git a/apps/site/components/Downloads/Release/SourceButton.tsx b/apps/site/components/Downloads/Release/SourceButton.tsx deleted file mode 100644 index ef500376281c4..0000000000000 --- a/apps/site/components/Downloads/Release/SourceButton.tsx +++ /dev/null @@ -1,30 +0,0 @@ -'use client'; - -import { CloudArrowDownIcon } from '@heroicons/react/24/outline'; -import { useTranslations } from 'next-intl'; -import { useContext } from 'react'; -import type { FC } from 'react'; - -import Button from '@/components/Common/Button'; -import { ReleaseContext } from '@/providers/releaseProvider'; - -const SourceButton: FC = () => { - const t = useTranslations(); - const { release } = useContext(ReleaseContext); - - const version = release.versionWithPrefix; - const url = `https://nodejs.org/dist/${version}/node-${version}.tar.gz`; - - return ( - <div className="mb-2 mt-6 flex items-center gap-2"> - <Button href={url} disabled={!version}> - <CloudArrowDownIcon /> - {t('layouts.download.buttons.source', { - version: version, - })} - </Button> - </div> - ); -}; - -export default SourceButton; diff --git a/apps/site/components/Downloads/Release/VerifyingBinariesLink.tsx b/apps/site/components/Downloads/Release/VerifyingBinariesLink.tsx deleted file mode 100644 index ff6fc2e1a4dae..0000000000000 --- a/apps/site/components/Downloads/Release/VerifyingBinariesLink.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import type { FC, PropsWithChildren } from 'react'; - -import LinkWithArrow from '@/components/Downloads/Release/LinkWithArrow'; - -const VerifyingBinariesLink: FC<PropsWithChildren> = ({ children }) => ( - <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries"> - {children} - </LinkWithArrow> -); - -export default VerifyingBinariesLink; diff --git a/apps/site/components/Downloads/Release/VersionDropdown.tsx b/apps/site/components/Downloads/Release/VersionDropdown.tsx index bbaf307317c0c..9cdff66faab24 100644 --- a/apps/site/components/Downloads/Release/VersionDropdown.tsx +++ b/apps/site/components/Downloads/Release/VersionDropdown.tsx @@ -5,7 +5,7 @@ import type { FC } from 'react'; import { useContext } from 'react'; import Select from '@/components/Common/Select'; -import { ReleaseContext } from '@/providers/releaseProvider'; +import { ReleaseContext, ReleasesContext } from '@/providers/releaseProvider'; const getDropDownStatus = (version: string, status: string) => { if (status === 'LTS') { @@ -20,7 +20,8 @@ const getDropDownStatus = (version: string, status: string) => { }; const VersionDropdown: FC = () => { - const { releases, release, setVersion } = useContext(ReleaseContext); + const { releases } = useContext(ReleasesContext); + const { release, setVersion } = useContext(ReleaseContext); const t = useTranslations(); return ( @@ -32,7 +33,7 @@ const VersionDropdown: FC = () => { }))} defaultValue={release.versionWithPrefix} onChange={setVersion} - className="min-w-40" + className="min-w-36" inline={true} /> ); diff --git a/apps/site/components/Icons/Platform/AIX.tsx b/apps/site/components/Icons/OperatingSystem/AIX.tsx similarity index 100% rename from apps/site/components/Icons/Platform/AIX.tsx rename to apps/site/components/Icons/OperatingSystem/AIX.tsx diff --git a/apps/site/components/Icons/Platform/Apple.tsx b/apps/site/components/Icons/OperatingSystem/Apple.tsx similarity index 100% rename from apps/site/components/Icons/Platform/Apple.tsx rename to apps/site/components/Icons/OperatingSystem/Apple.tsx diff --git a/apps/site/components/Icons/Platform/Linux.tsx b/apps/site/components/Icons/OperatingSystem/Linux.tsx similarity index 100% rename from apps/site/components/Icons/Platform/Linux.tsx rename to apps/site/components/Icons/OperatingSystem/Linux.tsx diff --git a/apps/site/components/Icons/Platform/Microsoft.tsx b/apps/site/components/Icons/OperatingSystem/Microsoft.tsx similarity index 100% rename from apps/site/components/Icons/Platform/Microsoft.tsx rename to apps/site/components/Icons/OperatingSystem/Microsoft.tsx diff --git a/apps/site/components/Icons/OperatingSystem/index.ts b/apps/site/components/Icons/OperatingSystem/index.ts new file mode 100644 index 0000000000000..167e970f87135 --- /dev/null +++ b/apps/site/components/Icons/OperatingSystem/index.ts @@ -0,0 +1,6 @@ +import AIX from '@/components/Icons/OperatingSystem/AIX'; +import Apple from '@/components/Icons/OperatingSystem/Apple'; +import Linux from '@/components/Icons/OperatingSystem/Linux'; +import Microsoft from '@/components/Icons/OperatingSystem/Microsoft'; + +export default { AIX, Apple, Linux, Microsoft }; diff --git a/apps/site/components/Icons/PackageManager/index.ts b/apps/site/components/Icons/PackageManager/index.ts new file mode 100644 index 0000000000000..4ba989918ca4c --- /dev/null +++ b/apps/site/components/Icons/PackageManager/index.ts @@ -0,0 +1,5 @@ +import NPM from '@/components/Icons/PackageManager/Npm'; +import PNPM from '@/components/Icons/PackageManager/Pnpm'; +import YARN from '@/components/Icons/PackageManager/Yarn'; + +export default { NPM, PNPM, YARN }; diff --git a/apps/site/components/Icons/Platform/Generic.tsx b/apps/site/components/Icons/Platform/Generic.tsx deleted file mode 100644 index e2ae454f062a1..0000000000000 --- a/apps/site/components/Icons/Platform/Generic.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import type { FC, SVGProps } from 'react'; - -const Generic: FC<SVGProps<SVGSVGElement>> = props => ( - <svg - width="32" - height="32" - viewBox="0 0 32 32" - fill="none" - stroke="#CBD4D9" - xmlns="http://www.w3.org/2000/svg" - {...props} - > - <path - d="M16 29.333c7.364 0 13.333-5.97 13.333-13.333 0-7.364-5.97-13.334-13.333-13.334C8.636 2.666 2.667 8.636 2.667 16S8.637 29.333 16 29.333Z" - strokeWidth="2.667" - strokeLinecap="round" - strokeLinejoin="round" - /> - </svg> -); - -export default Generic; diff --git a/apps/site/components/Icons/Platform/index.ts b/apps/site/components/Icons/Platform/index.ts new file mode 100644 index 0000000000000..8e362d2bdaf6d --- /dev/null +++ b/apps/site/components/Icons/Platform/index.ts @@ -0,0 +1,7 @@ +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'; + +export default { Choco, Docker, FNM, Homebrew, NVM }; diff --git a/apps/site/components/JSX/CodeBox/index.tsx b/apps/site/components/JSX/CodeBox/index.tsx deleted file mode 100644 index 6e2b657b71817..0000000000000 --- a/apps/site/components/JSX/CodeBox/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import classNames from 'classnames'; -import dedent from 'dedent'; -import { toJsxRuntime } from 'hast-util-to-jsx-runtime'; -import type { FC, PropsWithChildren } from 'react'; - -import MDXCodeBox from '@/components/MDX/CodeBox'; -import { reactRuntime } from '@/next.mdx.compiler.mjs'; -import { highlightToHast } from '@/util/getHighlighter'; - -type CodeBoxProps = { - language: string; - showCopyButton?: boolean; - className?: string; -}; - -const CodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ - children, - language, - showCopyButton, - className, -}) => { - const highlighted = highlightToHast(dedent(String(children)), language); - - return toJsxRuntime(highlighted, { - ...reactRuntime, - components: { - pre: ({ children }) => ( - <MDXCodeBox - showCopyButton={showCopyButton ? 'true' : undefined} - className={classNames(`language-${language}`, className)} - > - {children} - </MDXCodeBox> - ), - }, - }); -}; - -export default CodeBox; diff --git a/apps/site/components/__design__/package-manager.stories.tsx b/apps/site/components/__design__/package-manager.stories.tsx index 6707083b4f510..76ecbe338b8eb 100644 --- a/apps/site/components/__design__/package-manager.stories.tsx +++ b/apps/site/components/__design__/package-manager.stories.tsx @@ -1,15 +1,13 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NpmIcon from '@/components/Icons/PackageManager/Npm'; -import PnpmIcon from '@/components/Icons/PackageManager/Pnpm'; -import YarnIcon from '@/components/Icons/PackageManager/Yarn'; +import PackageManagerIcons from '@/components/Icons/PackageManager'; export const PackageManager: StoryObj = { render: () => ( <div className="flex space-x-4"> - <NpmIcon width={64} height={64} /> - <PnpmIcon width={64} height={64} /> - <YarnIcon width={64} height={64} /> + <PackageManagerIcons.NPM width={64} height={64} /> + <PackageManagerIcons.PNPM width={64} height={64} /> + <PackageManagerIcons.YARN width={64} height={64} /> </div> ), }; diff --git a/apps/site/components/__design__/platform-logos.stories.tsx b/apps/site/components/__design__/platform-logos.stories.tsx index 29cea28d7f916..18f1adfd45d19 100644 --- a/apps/site/components/__design__/platform-logos.stories.tsx +++ b/apps/site/components/__design__/platform-logos.stories.tsx @@ -1,32 +1,24 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import AIX from '@/components/Icons/Platform/AIX'; -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'; +import OSIcons from '@/components/Icons/OperatingSystem'; +import PlatformIcons from '@/components/Icons/Platform'; export const PlatformLogos: StoryObj = { render: () => ( <div className="flex flex-row gap-4"> <div className="flex flex-col items-center gap-4"> - <Apple width={64} height={64} /> - <Linux width={64} height={64} /> - <Microsoft width={64} height={64} /> - <AIX width={64} height={64} /> + <OSIcons.Apple width={64} height={64} /> + <OSIcons.Linux width={64} height={64} /> + <OSIcons.Microsoft width={64} height={64} /> + <OSIcons.AIX width={64} height={64} /> </div> <div className="flex flex-col items-center gap-4"> - <Docker width={64} height={64} /> - <Homebrew width={64} height={64} /> - <NVM width={64} height={64} /> + <PlatformIcons.Docker width={64} height={64} /> + <PlatformIcons.Homebrew width={64} height={64} /> + <PlatformIcons.NVM width={64} height={64} /> </div> <div className="flex flex-col items-center gap-4"> - <Generic width={64} height={64} /> - <Choco width={64} height={64} /> + <PlatformIcons.Choco width={64} height={64} /> </div> </div> ), diff --git a/apps/site/components/withBlogCrossLinks.tsx b/apps/site/components/withBlogCrossLinks.tsx index ee0068d488cdc..07d05fa8900d2 100644 --- a/apps/site/components/withBlogCrossLinks.tsx +++ b/apps/site/components/withBlogCrossLinks.tsx @@ -3,6 +3,7 @@ import type { FC } from 'react'; import { getClientContext } from '@/client-context'; import CrossLink from '@/components/Common/CrossLink'; import getBlogData from '@/next-data/blogData'; +import type { BlogCategory } from '@/types'; const WithBlogCrossLinks: FC = async () => { const { pathname } = getClientContext(); @@ -10,7 +11,7 @@ const WithBlogCrossLinks: FC = async () => { // Extracts from the static URL the components used for the Blog Post slug const [, , category, postname] = pathname.split('/'); - const { posts } = await getBlogData(category); + const { posts } = await getBlogData(category as BlogCategory); const currentItem = posts.findIndex( ({ slug }) => slug === `/blog/${category}/${postname}` diff --git a/apps/site/components/withDownloadCategories.tsx b/apps/site/components/withDownloadCategories.tsx deleted file mode 100644 index ced8346b39d47..0000000000000 --- a/apps/site/components/withDownloadCategories.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { getLocale, getTranslations } from 'next-intl/server'; -import type { FC, PropsWithChildren } from 'react'; - -import { getClientContext } from '@/client-context'; -import LinkTabs from '@/components/Common/LinkTabs'; -import WithNodeRelease from '@/components/withNodeRelease'; -import getDownloadSnippets from '@/next-data/downloadSnippets'; -import getReleaseData from '@/next-data/releaseData'; -import { defaultLocale } from '@/next.locales.mjs'; -import { ReleaseProvider } from '@/providers/releaseProvider'; -import type { NodeReleaseStatus } from '@/types'; -import { getDownloadCategory, mapCategoriesToTabs } from '@/util/downloadUtils'; - -// By default the translated languages do not contain all the download snippets -// Hence we always merge any translated snippet with the fallbacks for missing snippets -const fallbackSnippets = await getDownloadSnippets(defaultLocale.code); - -const WithDownloadCategories: FC<PropsWithChildren> = async ({ children }) => { - const locale = await getLocale(); - const t = await getTranslations(); - const releases = await getReleaseData(); - const snippets = await getDownloadSnippets(locale); - - const { pathname } = getClientContext(); - const { page, category, subCategory } = getDownloadCategory(pathname); - - const initialRelease: NodeReleaseStatus = pathname.includes('current') - ? 'Current' - : 'LTS'; - - // Some available translations do not have download snippets translated or have them partially translated - // This aims to merge the available translated snippets with the fallback snippets - const memoizedSnippets = fallbackSnippets - .filter(snippet => !snippets.some(s => s.name === snippet.name)) - .concat(snippets); - - return ( - <LinkTabs - activeTab={category} - label={t('layouts.download.selectCategory')} - tabs={mapCategoriesToTabs({ - page: page, - categories: [ - { - category: 'package-manager', - label: t('layouts.download.categories.package-manager'), - }, - { - category: 'prebuilt-installer', - label: t('layouts.download.categories.prebuilt-installer'), - }, - { - category: 'prebuilt-binaries', - label: t('layouts.download.categories.prebuilt-binaries'), - }, - { - category: 'source-code', - label: t('layouts.download.categories.source-code'), - }, - ], - subCategory: subCategory, - })} - > - <WithNodeRelease status={initialRelease}> - {({ release }) => ( - <ReleaseProvider - initialRelease={release} - releases={releases} - snippets={memoizedSnippets} - > - {children} - </ReleaseProvider> - )} - </WithNodeRelease> - </LinkTabs> - ); -}; - -export default WithDownloadCategories; diff --git a/apps/site/components/withDownloadSection.tsx b/apps/site/components/withDownloadSection.tsx new file mode 100644 index 0000000000000..ebc48602665b8 --- /dev/null +++ b/apps/site/components/withDownloadSection.tsx @@ -0,0 +1,41 @@ +import { getLocale } from 'next-intl/server'; +import type { FC, PropsWithChildren } from 'react'; + +import { getClientContext } from '@/client-context'; +import WithNodeRelease from '@/components/withNodeRelease'; +import getDownloadSnippets from '@/next-data/downloadSnippets'; +import getReleaseData from '@/next-data/releaseData'; +import { defaultLocale } from '@/next.locales.mjs'; +import { ReleaseProvider, ReleasesProvider } from '@/providers/releaseProvider'; + +// By default the translated languages do not contain all the download snippets +// Hence we always merge any translated snippet with the fallbacks for missing snippets +const fallbackSnippets = await getDownloadSnippets(defaultLocale.code); + +const WithDownloadSection: FC<PropsWithChildren> = async ({ children }) => { + const locale = await getLocale(); + const releases = await getReleaseData(); + const snippets = await getDownloadSnippets(locale); + const { pathname } = getClientContext(); + + // Some available translations do not have download snippets translated or have them partially translated + // This aims to merge the available translated snippets with the fallback snippets + const memoizedSnippets = fallbackSnippets + .filter(snippet => !snippets.some(s => s.name === snippet.name)) + .concat(snippets); + + // Decides which initial release to use based on the current pathname + const initialRelease = pathname.endsWith('/current') ? 'Current' : 'LTS'; + + return ( + <WithNodeRelease status={initialRelease}> + {({ release }) => ( + <ReleasesProvider releases={releases} snippets={memoizedSnippets}> + <ReleaseProvider initialRelease={release}>{children}</ReleaseProvider> + </ReleasesProvider> + )} + </WithNodeRelease> + ); +}; + +export default WithDownloadSection; diff --git a/apps/site/components/withLayout.tsx b/apps/site/components/withLayout.tsx index 23eab80e4efd6..0c4a1638ee5b3 100644 --- a/apps/site/components/withLayout.tsx +++ b/apps/site/components/withLayout.tsx @@ -12,7 +12,7 @@ import type { Layouts } from '@/types'; const layouts = { about: AboutLayout, - home: props => <GlowingBackdropLayout kind="home" {...props} />, + home: GlowingBackdropLayout, learn: LearnLayout, page: DefaultLayout, 'blog-post': PostLayout, diff --git a/apps/site/global.d.ts b/apps/site/global.d.ts new file mode 100644 index 0000000000000..8959340122443 --- /dev/null +++ b/apps/site/global.d.ts @@ -0,0 +1,29 @@ +import type baseMessages from '@node-core/website-i18n/locales/en.json'; +import type { MessageKeys, NestedValueOf, NestedKeyOf } from 'next-intl'; + +declare global { + // Defines a type for all the IntlMessage shape (which is used internall by next-intl) + // @see https://next-intl.dev/docs/workflows/typescript + type IntlMessages = typeof baseMessages; + + // Defines a generic type for all available i18n translation keys, by default not using any namespace + type IntlMessageKeys< + NestedKey extends NamespaceKeys< + IntlMessages, + NestedKeyOf<IntlMessages> + > = never, + > = MessageKeys< + NestedValueOf< + { '!': IntlMessages }, + [NestedKey] extends [never] ? '!' : `!.${NestedKey}` + >, + NestedKeyOf< + NestedValueOf< + { '!': IntlMessages }, + [NestedKey] extends [never] ? '!' : `!.${NestedKey}` + > + > + >; +} + +export {}; diff --git a/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs b/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs index 214ab70a7c88a..41e683a44647e 100644 --- a/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs @@ -23,7 +23,7 @@ describe('useDetectOS', () => { value: { userAgent: windowsUserAgent, userAgentData: { - getHighEntropyValues: jest.fn().mockResolvedValue({ bitness: 64 }), + getHighEntropyValues: jest.fn().mockResolvedValue({ bitness: '64' }), }, }, writable: true, @@ -34,17 +34,15 @@ describe('useDetectOS', () => { await waitFor(() => { expect(result.current).toStrictEqual({ os: 'WIN', - bitness: 64, - architecture: '', + bitness: '64', + architecture: 'x86', }); }); }); it('should detect WIN OS and 64 bitness from user agent', async () => { Object.defineProperty(global, 'navigator', { - value: { - userAgent: windowsUserAgent, - }, + value: { userAgent: windowsUserAgent }, writable: true, }); @@ -53,17 +51,15 @@ describe('useDetectOS', () => { await waitFor(() => { expect(result.current).toStrictEqual({ os: 'WIN', - bitness: 64, - architecture: '', + bitness: '64', + architecture: 'x86', }); }); }); it('should detect MAC OS and default bitness', async () => { Object.defineProperty(global, 'navigator', { - value: { - userAgent: macUserAgent, - }, + value: { userAgent: macUserAgent }, writable: true, }); @@ -72,8 +68,8 @@ describe('useDetectOS', () => { await waitFor(() => { expect(result.current).toStrictEqual({ os: 'MAC', - bitness: 64, - architecture: '', + bitness: '32', + architecture: 'x86', }); }); }); diff --git a/apps/site/hooks/react-client/useDetectOS.ts b/apps/site/hooks/react-client/useDetectOS.ts index df5a8d7061643..68854dee2abf5 100644 --- a/apps/site/hooks/react-client/useDetectOS.ts +++ b/apps/site/hooks/react-client/useDetectOS.ts @@ -2,21 +2,20 @@ import { useEffect, useState } from 'react'; -import type { UserOS } from '@/types/userOS'; +import type { UserArchitecture, UserBitness, UserOS } from '@/types/userOS'; import { detectOS } from '@/util/detectOS'; -import { getArchitecture } from '@/util/getArchitecture'; -import { getBitness } from '@/util/getBitness'; +import { getHighEntropyValues } from '@/util/getHighEntropyValues'; type UserOSState = { - os: UserOS; - bitness: number; - architecture: string; + os: UserOS | 'LOADING'; + bitness: UserBitness | ''; + architecture: UserArchitecture | ''; }; const useDetectOS = () => { const [userOSState, setUserOSState] = useState<UserOSState>({ os: 'LOADING', - bitness: 64, + bitness: '', architecture: '', }); @@ -31,17 +30,22 @@ const useDetectOS = () => { // the server-side rendering versus what the initial state is from the client-side setUserOSState(current => ({ ...current, os: detectOS() })); - // We then update the bitness based on the detected OS and the user agent - getBitness().then((bitness = '64') => - setUserOSState(current => ({ - ...current, - bitness: bitness === '64' || uaIndicates64 ? 64 : 86, - })) - ); - - // We then update the architecture based on the detected OS - getArchitecture().then((architecture = '') => - setUserOSState(current => ({ ...current, architecture })) + // We attempt to get the high entropy values from the Browser and set the User OS State + // based from the values we get from the Browser, if it fails we fallback to the User Agent + // to determine the bitness and architecture of the User OS. + getHighEntropyValues(['bitness', 'architecture']).then( + ({ + // If there is no getHighEntropyValues API on the Browser or it failed to resolve + // we attempt to fallback to what the User Agent indicates + bitness = uaIndicates64 ? '64' : '32', + architecture = 'x86', + }) => { + setUserOSState(current => ({ + ...current, + bitness: bitness as UserBitness, + architecture: architecture as UserArchitecture, + })); + } ); }, []); diff --git a/apps/site/hooks/react-generic/useSiteNavigation.ts b/apps/site/hooks/react-generic/useSiteNavigation.ts index d3c520790158b..a6c2024f00783 100644 --- a/apps/site/hooks/react-generic/useSiteNavigation.ts +++ b/apps/site/hooks/react-generic/useSiteNavigation.ts @@ -38,7 +38,7 @@ const useSiteNavigation = () => { const t = useTranslations(); const mapNavigationEntries = (entries: Navigation, context: Context = {}) => { - const getFormattedMessage = (label: string, key: string) => + const getFormattedMessage = (label: IntlMessageKeys, key: string) => t.rich(label, context[key] || {}) as FormattedMessage; return Object.entries(entries).map( diff --git a/apps/site/layouts/Blog.tsx b/apps/site/layouts/Blog.tsx index 1b3e1084e8191..b8a57d5a9a5f3 100644 --- a/apps/site/layouts/Blog.tsx +++ b/apps/site/layouts/Blog.tsx @@ -7,6 +7,7 @@ import WithBlogCategories from '@/components/withBlogCategories'; import WithFooter from '@/components/withFooter'; import WithNavBar from '@/components/withNavBar'; import getBlogData from '@/next-data/blogData'; +import type { BlogCategory } from '@/types'; import styles from './layouts.module.css'; @@ -18,7 +19,10 @@ const getBlogCategory = async (pathname: string) => { // note that malformed routes can't happen as they are all statically generated const [, , category = 'all', , page = 1] = pathname.split('/'); - const { posts, pagination } = await getBlogData(category, Number(page)); + const { posts, pagination } = await getBlogData( + category as BlogCategory, + Number(page) + ); return { category, posts, pagination, page: Number(page) }; }; @@ -27,7 +31,7 @@ const BlogLayout: FC = async () => { const { pathname } = getClientContext(); const t = await getTranslations(); - const mapCategoriesToTabs = (categories: Array<string>) => + const mapCategoriesToTabs = (categories: Array<BlogCategory>) => categories.map(category => ({ key: category, label: t(`layouts.blog.categories.${category}`), diff --git a/apps/site/layouts/Download.tsx b/apps/site/layouts/Download.tsx index db6c83ad7fc1b..cedae914aab5a 100644 --- a/apps/site/layouts/Download.tsx +++ b/apps/site/layouts/Download.tsx @@ -1,17 +1,14 @@ import type { FC, PropsWithChildren } from 'react'; -import WithDownloadCategories from '@/components/withDownloadCategories'; +import { getClientContext } from '@/client-context'; +import WithDownloadSection from '@/components/withDownloadSection'; import WithFooter from '@/components/withFooter'; import WithNavBar from '@/components/withNavBar'; -import { useClientContext } from '@/hooks/react-server'; import styles from './layouts.module.css'; const DownloadLayout: FC<PropsWithChildren> = async ({ children }) => { - const { - frontmatter: { title, subtitle }, - // eslint-disable-next-line react-hooks/rules-of-hooks - } = useClientContext(); + const { frontmatter } = getClientContext(); return ( <> @@ -19,11 +16,9 @@ const DownloadLayout: FC<PropsWithChildren> = async ({ children }) => { <div className={styles.downloadLayout}> <main> - <h1>{title}</h1> + <h1>{frontmatter.title}</h1> - <p>{subtitle}</p> - - <WithDownloadCategories>{children}</WithDownloadCategories> + <WithDownloadSection>{children}</WithDownloadSection> </main> </div> diff --git a/apps/site/layouts/GlowingBackdrop.tsx b/apps/site/layouts/GlowingBackdrop.tsx index 2457baf8e0877..377eac2e18903 100644 --- a/apps/site/layouts/GlowingBackdrop.tsx +++ b/apps/site/layouts/GlowingBackdrop.tsx @@ -12,7 +12,7 @@ type GlowingBackdropLayoutProps = PropsWithChildren<{ }>; const GlowingBackdropLayout: FC<GlowingBackdropLayoutProps> = ({ - kind, + kind = 'home', children, }) => ( <> diff --git a/apps/site/next-data/blogData.ts b/apps/site/next-data/blogData.ts index 951cd04975245..32e2b71494bc3 100644 --- a/apps/site/next-data/blogData.ts +++ b/apps/site/next-data/blogData.ts @@ -5,9 +5,12 @@ import { VERCEL_ENV, VERCEL_REGION, } from '@/next.constants.mjs'; -import type { BlogPostsRSC } from '@/types'; +import type { BlogCategory, BlogPostsRSC } from '@/types'; -const getBlogData = (cat: string, page?: number): Promise<BlogPostsRSC> => { +const getBlogData = ( + cat: BlogCategory, + page?: number +): Promise<BlogPostsRSC> => { const IS_NOT_VERCEL_RUNTIME_ENV = (!IS_DEV_ENV && VERCEL_ENV && !VERCEL_REGION) || (!IS_DEV_ENV && !VERCEL_ENV); diff --git a/apps/site/next-data/providers/blogData.ts b/apps/site/next-data/providers/blogData.ts index 4f26637eac2a6..bf06a7891665e 100644 --- a/apps/site/next-data/providers/blogData.ts +++ b/apps/site/next-data/providers/blogData.ts @@ -2,35 +2,37 @@ import { cache } from 'react'; import generateBlogData from '@/next-data/generators/blogData.mjs'; import { BLOG_POSTS_PER_PAGE } from '@/next.constants.mjs'; -import type { BlogPostsRSC } from '@/types'; +import type { BlogCategory, BlogPostsRSC } from '@/types'; const { categories, posts } = await generateBlogData(); export const provideBlogCategories = cache(() => categories); -export const provideBlogPosts = cache((category: string): BlogPostsRSC => { - const categoryPosts = posts - .filter(post => post.categories.includes(category)) - .sort((a, b) => b.date.getTime() - a.date.getTime()); +export const provideBlogPosts = cache( + (category: BlogCategory): BlogPostsRSC => { + const categoryPosts = posts + .filter(post => post.categories.includes(category)) + .sort((a, b) => b.date.getTime() - a.date.getTime()); - // Total amount of possible pages given the amount of blog posts - const total = categoryPosts.length / BLOG_POSTS_PER_PAGE; + // Total amount of possible pages given the amount of blog posts + const total = categoryPosts.length / BLOG_POSTS_PER_PAGE; - return { - posts: categoryPosts, - pagination: { - prev: null, - next: null, - // In case the division results on a remainder we need - // to have an extra page containing the remainder entries - pages: Math.floor(total % 1 === 0 ? total : total + 1), - total: categoryPosts.length, - }, - }; -}); + return { + posts: categoryPosts, + pagination: { + prev: null, + next: null, + // In case the division results on a remainder we need + // to have an extra page containing the remainder entries + pages: Math.floor(total % 1 === 0 ? total : total + 1), + total: categoryPosts.length, + }, + }; + } +); export const providePaginatedBlogPosts = cache( - (category: string, page: number): BlogPostsRSC => { + (category: BlogCategory, page: number): BlogPostsRSC => { const { posts, pagination } = provideBlogPosts(category); // This autocorrects if invalid numbers are given to only allow diff --git a/apps/site/next-env.d.ts b/apps/site/next-env.d.ts index 725dd6f245153..3cd7048ed9471 100644 --- a/apps/site/next-env.d.ts +++ b/apps/site/next-env.d.ts @@ -3,4 +3,4 @@ /// <reference types="next/navigation-types/compat/navigation" /> // NOTE: This file should not be edited -// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index ea8fd0be2ea29..c1d75c04dd6f0 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -187,13 +187,3 @@ export const ORAMA_CLOUD_API_KEY = * Note: This has no NEXT_PUBLIC prefix as it should not be exposed to the Browser. */ export const GITHUB_API_KEY = process.env.NEXT_GITHUB_API_KEY || ''; - -/** - * OpenJS Ecosystem Support Program (ESP) partners provide security updates and support for end-of-life and unsupported versions - * - * See https://openjsf.org/ecosystem-sustainability-program - * - * This is the minimum version Node.js support according to https://nodejs.org/en/about/previous-releases - */ -export const ESP_SUPPORT_THRESHOLD_VERSION = - process.env.ESP_SUPPORT_THRESHOLD_VERSION || '18.0.0'; diff --git a/apps/site/next.jsx.compiler.mjs b/apps/site/next.jsx.compiler.mjs index 51e8886d08983..f536b14e84502 100644 --- a/apps/site/next.jsx.compiler.mjs +++ b/apps/site/next.jsx.compiler.mjs @@ -10,7 +10,7 @@ import Sval from 'sval'; * * @returns {Sval} Returns an Sandboxed instance of a JavaScript interpreter */ -export const createSval = (dependencies, mode = 'module') => { +export const createSval = (dependencies = {}, mode = 'module') => { const svalInterpreter = new Sval({ ecmaVer: 'latest', sandBox: true, diff --git a/apps/site/next.mdx.use.client.mjs b/apps/site/next.mdx.use.client.mjs index bff703e1c72d4..40b5959d455ca 100644 --- a/apps/site/next.mdx.use.client.mjs +++ b/apps/site/next.mdx.use.client.mjs @@ -2,11 +2,23 @@ import Blockquote from './components/Common/Blockquote'; import Button from './components/Common/Button'; +import DownloadButton from './components/Downloads/DownloadButton'; +import DownloadLink from './components/Downloads/DownloadLink'; +import BlogPostLink from './components/Downloads/Release/BlogPostLink'; +import ChangelogLink from './components/Downloads/Release/ChangelogLink'; +import InstallationMethodDropdown from './components/Downloads/Release/InstallationMethodDropdown'; import LinkWithArrow from './components/Downloads/Release/LinkWithArrow'; +import OperatingSystemDropdown from './components/Downloads/Release/OperatingSystemDropdown'; +import PackageManagerDropdown from './components/Downloads/Release/PackageManagerDropdown'; +import PlatformDropdown from './components/Downloads/Release/PlatformDropdown'; +import PrebuiltDownloadButtons from './components/Downloads/Release/PrebuiltDownloadButtons'; +import ReleaseCodeBox from './components/Downloads/Release/ReleaseCodeBox'; +import VersionDropdown from './components/Downloads/Release/VersionDropdown'; import Link from './components/Link'; import MDXCodeBox from './components/MDX/CodeBox'; import MDXCodeTabs from './components/MDX/CodeTabs'; import MDXImage from './components/MDX/Image'; +import { ReleaseProvider } from './providers/releaseProvider'; /** * A full list of React Components that we want to pass through to MDX @@ -22,6 +34,34 @@ export const clientMdxComponents = { LinkWithArrow: LinkWithArrow, // Regular links (without arrow) Link: Link, + // Renders a Download Button + DownloadButton: DownloadButton, + // Renders a Download Link + DownloadLink: DownloadLink, + // Group of components that enable you to select versions for Node.js + // releases and download selected versions. Uses `releaseProvider` as a provider + Release: { + // Provides an individual Node.js Release Context for Downloads + Provider: ReleaseProvider, + // Renders a drop-down menu to select a version + VersionDropdown: VersionDropdown, + // Renders a drop-down menu to select a platform + InstallationMethodDropdown: InstallationMethodDropdown, + // Renders a drop-down menu to select a package manager + PackageManagerDropdown: PackageManagerDropdown, + // Renders a drop-down menu to select a bitness + PlatformDropdown: PlatformDropdown, + // Renders a drop-down menu to select an operating system + OperatingSystemDropdown: OperatingSystemDropdown, + // Renders a Blog Post Link for the selected release + BlogPostLink: BlogPostLink, + // Renders a Download Button for the selected release + PrebuiltDownloadButtons: PrebuiltDownloadButtons, + // Renders a Release CodeBox + ReleaseCodeBox: ReleaseCodeBox, + // Renders a Changelog Modal Link Button + ChangelogLink: ChangelogLink, + }, }; /** diff --git a/apps/site/next.mdx.use.mjs b/apps/site/next.mdx.use.mjs index 67c8adaf9082f..2f44a0bab6dce 100644 --- a/apps/site/next.mdx.use.mjs +++ b/apps/site/next.mdx.use.mjs @@ -1,21 +1,6 @@ 'use strict'; -import DownloadButton from './components/Downloads/DownloadButton'; -import DownloadLink from './components/Downloads/DownloadLink'; import DownloadReleasesTable from './components/Downloads/DownloadReleasesTable'; -import BitnessDropdown from './components/Downloads/Release/BitnessDropdown'; -import BlogPostLink from './components/Downloads/Release/BlogPostLink'; -import ChangelogLink from './components/Downloads/Release/ChangelogLink'; -import ReleaseDownloadButton from './components/Downloads/Release/DownloadButton'; -import NpmLink from './components/Downloads/Release/NpmLink'; -import OperatingSystemDropdown from './components/Downloads/Release/OperatingSystemDropdown'; -import PlatformDropdown from './components/Downloads/Release/PlatformDropdown'; -import ReleaseCodeBox from './components/Downloads/Release/ReleaseCodeBox'; -import ReleaseStatus from './components/Downloads/Release/ReleaseStatus'; -import ReleaseVersion from './components/Downloads/Release/ReleaseVersion'; -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 WithBadge from './components/withBadge'; import WithBanner from './components/withBanner'; @@ -34,40 +19,6 @@ export const mdxComponents = { WithBanner: WithBanner, // HOC for providing Badge Data WithBadge: WithBadge, - // Renders a Download Button - DownloadButton: DownloadButton, - // Renders a Download Link - DownloadLink: DownloadLink, // Renders an container for Upcoming Node.js Meetings UpcomingMeetings: UpcomingMeetings, - // Group of components that enable you to select versions for Node.js - // releases and download selected versions. Uses `releaseProvider` as a provider - Release: { - // Renders a drop-down menu from which the version can select - VersionDropdown: VersionDropdown, - // Renders a drop-down menu from which the platform can select - PlatformDropdown: PlatformDropdown, - // Renders a drop-down menu from which the bitness can select - BitnessDropdown: BitnessDropdown, - // Renders a drop-down menu from which the operating system can select - OperatingSystemDropdown: OperatingSystemDropdown, - // Renders a link to the npm version of the selected release - NpmLink: NpmLink, - // Renders a release version of the selected release - Version: ReleaseVersion, - // Renders a release status of the selected release - Status: ReleaseStatus, - // Renders a Blog Post Link for the selected release - BlogPostLink: BlogPostLink, - // Renders a Verifying Binaries Link - VerifyingBinariesLink: VerifyingBinariesLink, - // Renders a Download Button for the selected release - DownloadButton: ReleaseDownloadButton, - // Renders a Source Download Button for the selected release - SourceButton: SourceButton, - // Renders a Release CodeBox - ReleaseCodeBox: ReleaseCodeBox, - // Renders a Changelog Modal Link Button - ChangelogLink: ChangelogLink, - }, }; diff --git a/apps/site/package.json b/apps/site/package.json index 89e6e95ea1b39..5349cd5823cc2 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -52,8 +52,8 @@ "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "15.1.2", - "next-intl": "~3.25.3", + "next": "15.1.3", + "next-intl": "~3.26.3", "next-themes": "~0.4.3", "postcss": "~8.4.49", "postcss-calc": "~10.0.2", @@ -77,7 +77,7 @@ }, "devDependencies": { "@eslint/compat": "~1.2.3", - "@next/eslint-plugin-next": "15.1.2", + "@next/eslint-plugin-next": "15.1.3", "@storybook/addon-controls": "^8.4.6", "@storybook/addon-interactions": "^8.4.6", "@storybook/addon-styling-webpack": "^1.0.1", @@ -92,7 +92,7 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", - "eslint-config-next": "15.1.2", + "eslint-config-next": "15.1.3", "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.2", diff --git a/apps/site/pages/en/download/current.mdx b/apps/site/pages/en/download/current.mdx new file mode 100644 index 0000000000000..ee6cab110ddc2 --- /dev/null +++ b/apps/site/pages/en/download/current.mdx @@ -0,0 +1,36 @@ +--- +layout: download +title: Download Node.js® +--- + +<section> + +Get Node.js® <Release.VersionDropdown /> for <Release.OperatingSystemDropdown /> using <Release.InstallationMethodDropdown /> with <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + +Or get a prebuilt Node.js® for <Release.OperatingSystemDropdown /> running a <Release.PlatformDropdown /> architecture. + +<Release.PrebuiltDownloadButtons /> + +</Release.Provider> + +</section> + +<section> + +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. + +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. + +Learn how to <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verify</LinkWithArrow> signed SHASUMS. + +Learn how to <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">build Node.js</LinkWithArrow> from source. + +Check out our <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> binaries or +all <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">previous releases</Link> +or the <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">unofficial</LinkWithArrow> binaries for other platforms. + +</section> diff --git a/apps/site/pages/en/download/index.mdx b/apps/site/pages/en/download/index.mdx new file mode 100644 index 0000000000000..ee6cab110ddc2 --- /dev/null +++ b/apps/site/pages/en/download/index.mdx @@ -0,0 +1,36 @@ +--- +layout: download +title: Download Node.js® +--- + +<section> + +Get Node.js® <Release.VersionDropdown /> for <Release.OperatingSystemDropdown /> using <Release.InstallationMethodDropdown /> with <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + +Or get a prebuilt Node.js® for <Release.OperatingSystemDropdown /> running a <Release.PlatformDropdown /> architecture. + +<Release.PrebuiltDownloadButtons /> + +</Release.Provider> + +</section> + +<section> + +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. + +Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. + +Learn how to <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verify</LinkWithArrow> signed SHASUMS. + +Learn how to <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">build Node.js</LinkWithArrow> from source. + +Check out our <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> binaries or +all <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">previous releases</Link> +or the <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">unofficial</LinkWithArrow> binaries for other platforms. + +</section> diff --git a/apps/site/pages/en/download/package-manager/current.mdx b/apps/site/pages/en/download/package-manager/current.mdx deleted file mode 100644 index 961e0249003b0..0000000000000 --- a/apps/site/pages/en/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Download Node.js® -subtitle: Download Node.js the way you want. ---- - -<section> -Install Node.js <Release.VersionDropdown /> on <Release.OperatingSystemDropdown exclude={["AIX"]} /> using <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js includes <Release.NpmLink />. - -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. - -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. - -Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> - -Check out other community supported <LinkWithArrow href="/download/package-manager/all">package managers</LinkWithArrow> - -</section> diff --git a/apps/site/pages/en/download/package-manager/index.mdx b/apps/site/pages/en/download/package-manager/index.mdx deleted file mode 100644 index e95a9a81e6ba1..0000000000000 --- a/apps/site/pages/en/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Download Node.js® -subtitle: Download Node.js the way you want. ---- - -<section> -Install Node.js <Release.VersionDropdown /> on <Release.OperatingSystemDropdown exclude={["AIX"]} /> using <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js includes <Release.NpmLink />. - -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version - -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version - -Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> - -Check out other community supported <LinkWithArrow href="/download/package-manager/all">package managers</LinkWithArrow> - -</section> diff --git a/apps/site/pages/en/download/prebuilt-binaries/current.mdx b/apps/site/pages/en/download/prebuilt-binaries/current.mdx deleted file mode 100644 index 3abcdae3a99ce..0000000000000 --- a/apps/site/pages/en/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Download Node.js® -subtitle: Download Node.js the way you want. ---- - -<section> -I want the <Release.VersionDropdown /> version of Node.js for <Release.OperatingSystemDropdown /> running <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js includes <Release.NpmLink />. - -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version - -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version - -Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> - -Check out <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> prebuilt binaries or <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Unofficial Builds</LinkWithArrow> for other platforms - -</section> diff --git a/apps/site/pages/en/download/prebuilt-binaries/index.mdx b/apps/site/pages/en/download/prebuilt-binaries/index.mdx deleted file mode 100644 index b2fa05168d3a3..0000000000000 --- a/apps/site/pages/en/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Download Node.js® -subtitle: Download Node.js the way you want. ---- - -<section> -I want the <Release.VersionDropdown /> version of Node.js for <Release.OperatingSystemDropdown /> running <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js includes <Release.NpmLink />. - -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. - -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. - -Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink>. - -Check out <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> prebuilt binaries, all <LinkWithArrow href="https://nodejs.org/download/release/">Release</LinkWithArrow> prebuilt binaries, or <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Unofficial Builds</LinkWithArrow> for other platforms. - -</section> diff --git a/apps/site/pages/en/download/prebuilt-installer/current.mdx b/apps/site/pages/en/download/prebuilt-installer/current.mdx deleted file mode 100644 index 4ce954640ae9d..0000000000000 --- a/apps/site/pages/en/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Download Node.js® -subtitle: Download Node.js the way you want. ---- - -<section> -I want the <Release.VersionDropdown /> version of Node.js for <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> running <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js includes <Release.NpmLink />. - -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version - -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version - -Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> - -Check out all available Node.js <LinkWithArrow href="https://nodejs.org/dist/">download options</LinkWithArrow> - -Learn about <LinkWithArrow href="about/previous-releases">Node.js Releases</LinkWithArrow> - -</section> diff --git a/apps/site/pages/en/download/prebuilt-installer/index.mdx b/apps/site/pages/en/download/prebuilt-installer/index.mdx deleted file mode 100644 index 5b7a8a46d1fee..0000000000000 --- a/apps/site/pages/en/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Download Node.js® -subtitle: Download Node.js the way you want. ---- - -<section> -I want the <Release.VersionDropdown /> version of Node.js for <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> running <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js includes <Release.NpmLink />. - -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. - -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. - -Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> - -Check out all available Node.js <LinkWithArrow href="https://nodejs.org/dist/">download options</LinkWithArrow> - -Learn about <LinkWithArrow href="/about/previous-releases">Node.js Releases</LinkWithArrow> - -</section> diff --git a/apps/site/pages/en/download/source-code/current.mdx b/apps/site/pages/en/download/source-code/current.mdx deleted file mode 100644 index 03d27779f88d3..0000000000000 --- a/apps/site/pages/en/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Download Node.js® -subtitle: Download Node.js the way you want. ---- - -<section> -I want the <Release.VersionDropdown /> version of the Node.js source code. - -<Release.SourceButton /> -</section> - -<section> -Node.js includes <Release.NpmLink />. - -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. - -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. - -Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> - -Check out how to <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">build Node.js</LinkWithArrow> from source. - -</section> diff --git a/apps/site/pages/en/download/source-code/index.mdx b/apps/site/pages/en/download/source-code/index.mdx deleted file mode 100644 index 03d27779f88d3..0000000000000 --- a/apps/site/pages/en/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Download Node.js® -subtitle: Download Node.js the way you want. ---- - -<section> -I want the <Release.VersionDropdown /> version of the Node.js source code. - -<Release.SourceButton /> -</section> - -<section> -Node.js includes <Release.NpmLink />. - -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. - -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. - -Learn how to <Release.VerifyingBinariesLink>verify signed SHASUMS</Release.VerifyingBinariesLink> - -Check out how to <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">build Node.js</LinkWithArrow> from source. - -</section> diff --git a/apps/site/pages/es/download/package-manager/all.md b/apps/site/pages/es/download/package-manager/all.md deleted file mode 100644 index e3d87b3af2a9d..0000000000000 --- a/apps/site/pages/es/download/package-manager/all.md +++ /dev/null @@ -1,393 +0,0 @@ ---- -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:<stream> -``` - -donde `<stream>` 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<major version> - -# 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 deleted file mode 100644 index 3146d367bf9da..0000000000000 --- a/apps/site/pages/es/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descargar Node.js® -subtitle: Descarga Node.js de la forma que quieras. ---- - -<section> -Instalar Node.js <Release.VersionDropdown /> en <Release.OperatingSystemDropdown exclude={["AIX"]} /> utilizando <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js incluye <Release.NpmLink />. - -Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. - -Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. - -Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> - -Comprueba otros <LinkWithArrow href="/download/package-manager/all">gestores de paquetes</LinkWithArrow> soportados por la comunidad - -</section> diff --git a/apps/site/pages/es/download/package-manager/index.mdx b/apps/site/pages/es/download/package-manager/index.mdx deleted file mode 100644 index 52f4acbabc1a9..0000000000000 --- a/apps/site/pages/es/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descargar Node.js® -subtitle: Descarga Node.js de la forma que quieras. ---- - -<section> -Instala Node.js <Release.VersionDropdown /> en <Release.OperatingSystemDropdown exclude={["AIX"]} /> utilizando <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js incluye <Release.NpmLink />. - -Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión - -Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión - -Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> - -Comprueba otros <LinkWithArrow href="/download/package-manager/all">gestores de paquetes</LinkWithArrow> soportados por la comunidad - -</section> diff --git a/apps/site/pages/es/download/prebuilt-binaries/current.mdx b/apps/site/pages/es/download/prebuilt-binaries/current.mdx deleted file mode 100644 index 04509a058ed20..0000000000000 --- a/apps/site/pages/es/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descargar Node.js® -subtitle: Descarga Node.js de la forma que quieras. ---- - -<section> -Quiero la versión <Release.VersionDropdown /> de Node.js para <Release.OperatingSystemDropdown /> corriendo <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js incluye <Release.NpmLink />. - -Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión - -Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión - -Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> - -Comprueba los binarios pre construidos de <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> o las <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Construcciones no oficiales</LinkWithArrow> para otras plataformas - -</section> diff --git a/apps/site/pages/es/download/prebuilt-binaries/index.mdx b/apps/site/pages/es/download/prebuilt-binaries/index.mdx deleted file mode 100644 index 5420e8b6ba326..0000000000000 --- a/apps/site/pages/es/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descargar Node.js® -subtitle: Descarga Node.js de la forma que quieras. ---- - -<section> -Quiero la versión <Release.VersionDropdown /> de Node.js para <Release.OperatingSystemDropdown /> corriendo <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js incluye <Release.NpmLink />. - -Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. - -Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. - -Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink>. - -Échale un vistazo a los binarios precompilados <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow>, todos los binarios precompilados de los <LinkWithArrow href="https://nodejs.org/download/release/">Lanzamiento</LinkWithArrow>, o las <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">versiones no oficiales</LinkWithArrow> para otras plataformas. - -</section> diff --git a/apps/site/pages/es/download/prebuilt-installer/current.mdx b/apps/site/pages/es/download/prebuilt-installer/current.mdx deleted file mode 100644 index 7a86bfca08da8..0000000000000 --- a/apps/site/pages/es/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Descargar Node.js® -subtitle: Descarga Node.js de la forma que quieras. ---- - -<section> -Quiero la versión <Release.VersionDropdown /> de Node.js para <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> ejecutada en <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js incluye <Release.NpmLink />. - -Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión - -Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión - -Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> - -Vea todas las <LinkWithArrow href="https://nodejs.org/dist/">opciones de descarga</LinkWithArrow> de Node.js disponibles - -Aprende sobre <LinkWithArrow href="about/previous-releases">Versiones de Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/es/download/prebuilt-installer/index.mdx b/apps/site/pages/es/download/prebuilt-installer/index.mdx deleted file mode 100644 index 3eb5c29645c3b..0000000000000 --- a/apps/site/pages/es/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Descargar Node.js® -subtitle: Descarga Node.js de la forma que quieras. ---- - -<section> -Quiero la versión <Release.VersionDropdown /> de Node.js para <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> ejecutar en <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js incluye <Release.NpmLink />. - -Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. - -Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. - -Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> - -Vea todas las <LinkWithArrow href="https://nodejs.org/dist/">opciones de descarga</LinkWithArrow> de Node.js disponibles - -Aprende sobre <LinkWithArrow href="/about/previous-releases">Versiones de Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/es/download/source-code/current.mdx b/apps/site/pages/es/download/source-code/current.mdx deleted file mode 100644 index 059d8e9d82a3b..0000000000000 --- a/apps/site/pages/es/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descargar Node.js® -subtitle: Descarga Node.js de la forma que quieras. ---- - -<section> -Quiero la versión <Release.VersionDropdown /> del código fuente de Node.js. - -<Release.SourceButton /> -</section> - -<section> -Node.js incluye <Release.NpmLink />. - -Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. - -Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. - -Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> - -Consulta cómo <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">construir Node.js</LinkWithArrow> desde el código fuente. - -</section> diff --git a/apps/site/pages/es/download/source-code/index.mdx b/apps/site/pages/es/download/source-code/index.mdx deleted file mode 100644 index 07cc059e9e693..0000000000000 --- a/apps/site/pages/es/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descargar Node.js® -subtitle: Descarga Node.js de la forma que quieras. ---- - -<section> -Quiero la versión <Release.VersionDropdown /> del código fuente de Node.js. - -<Release.SourceButton /> -</section> - -<section> -Node.js incluye <Release.NpmLink />. - -Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. - -Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. - -Aprende a cómo <Release.VerifyingBinariesLink>verificar la firma SHASUMS</Release.VerifyingBinariesLink> - -Verifica cómo <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">construir Node.js</LinkWithArrow> desde el código fuente. - -</section> diff --git a/apps/site/pages/fa/download/package-manager/all.md b/apps/site/pages/fa/download/package-manager/all.md deleted file mode 100644 index c301c512de83e..0000000000000 --- a/apps/site/pages/fa/download/package-manager/all.md +++ /dev/null @@ -1,392 +0,0 @@ ---- -layout: article -title: از طریق پکیج منیجر Node.js نصب ---- - -# نصب Node.js از طریق پکیج منیجر - -> پکیج‌های این صفحه توسط پکیج منیجر های مربوطه نگهداری و پشتیبانی می‌شوند، **نه** توسط تیم هسته Node.js. لطفاً اگر به هرگونه مشکلی برخوردید آن را به نگه دارنده پکیج گزارش دهید. اگر مشکل شما یک باگ در خود Node.js باشد، نگه دارنده آن را به مرجع اصلی گزارش خواهد داد. - -## Alpine Linux - -بسته‌های Node.js LTS و npm در مخزن اصلی موجود هستند. - -```bash -apk add nodejs npm -``` - -Node.js Current نیز می‌تواند از مخزن کامیونیتی نصب شود. - -```bash -apk add nodejs-current -``` - -## Android - -پشتیبانی از اندروید در Node.js هنوز در مرحله آزمایشی است، بنابراین باینری‌های از پیش کامپایل شده هنوز توسط توسعه دهندگان Node.js ارائه نشده‌اند. - -با این حال، برخی راه حل‌های شخص ثالث وجود دارند. به عنوان مثال، کامیونیتی [Termux](https://termux.com/) یک شبیه‌ساز ترمینال و محیط لینوکس برای اندروید، به همراه پکیج منیجر مخصوص و [مجموعه گسترده‌ای](https://github.com/termux/termux-packages) از بسیاری از برنامه‌های از پیش کامپایل شده را ارائه می‌دهد. این دستور در برنامه Termux، آخرین نسخه موجود از Node.js را نصب خواهد کرد: - -```bash -pkg install nodejs -``` - -در حال حاضر، باینری‌های Node.js در Termux به `system-icu` لینک شده‌اند (وابسته به بسته `libicu`). - -## Arch Linux - -بسته‌های Node.js و npm در مخزن کامیونیتی موجود هستند. - -```bash -pacman -S nodejs npm -``` - -## CentOS - Fedora - Red Hat Enterprise Linux - -Node.js در CentOS/RHEL 8 و Fedora به عنوان یک ماژول با نام `nodejs` موجود است. - -```bash -dnf module install nodejs:<stream> -``` - -که در آن `<stream>` مربوط به نسخه اصلی 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 نگهداری و پشتیبانی می‌شوند. -- [توزیع‌های باینری Node.js](#debian-and-ubuntu-based-linux-distributions) که توسط [NodeSource](https://github.com/nodesource/distributions) نگهداری و پشتیبانی می‌شوند. - -## توزیع‌های لینوکس مبتنی بر Debian و Ubuntu - -[توزیع‌های باینری Node.js](https://github.com/nodesource/distributions) از NodeSource در دسترس هستند. - -### جایگزین - -بسته‌هایی که با توزیع‌های لینوکس مبتنی بر دبیان و اوبونتو سازگار هستند، از طریق [Node.js snaps](#snap) در دسترس می‌باشند. - -## Exherbo Linux - -بسته های Node.js و npm در [مخزن arbor](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node) در دسترس است. - -```bash -cave resolve -x node -``` - -## fnm - -مدیر نسخه سریع و ساده Node.js که با Rust ساخته شده است و برای مدیریت نسخه‌های مختلف منتشر شده Node.js استفاده می‌شود. به شما امکان می‌دهد عملیاتی مانند نصب، حذف، تغییر نسخه‌های Node را براساس پوشه فعلی به صورت خودکار انجام دهید و غیره. -برای نصب fnm از این [اسکریپت نصب](https://github.com/Schniz/fnm#using-a-script-macoslinux) استفاده کنید. - -fnm پشتیبانی از پلتفرم‌های متعدد (macOS ، Windows ، Linux) و تمام شل‌های محبوب (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 در portage tree موجود است. - -```bash -emerge nodejs -``` - -## IBM i - -نسخه‌های LTS از Node.js در دسترس هستند و از طریق [پکیج منیجر '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](/#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<major version> - -# 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` یک مدیر نسخه ساده برای استفاده Node.js برای Mac و Linux است. نسخه مورد نظر برای نصب را مشخص کنید، یا از میان منوی نسخه‌های قبلاً دانلود شده انتخاب نمایید. نسخه‌ها در سطح سیستم یا در سطح کاربر نصب می‌شوند و برای استفاده هدفمندتر می‌توانید نسخه‌ای را مستقیماً از دانلودهای ذخیره شده اجرا کنید. - -برای روش‌های نصب (bootstrap, npm, Homebrew, third-party) و تمام جزئیات استفاده، به [صفحه اصلی](https://github.com/tj/n) مراجعه کنید. - -اگر قبلاً `npm` را داشته باشید، نصب `n` و سپس نسخه LTS جدیدترین `node` به این سادگی است: - -``` -npm install -g n -n lts -``` - -## NetBSD - -Node.js در pkgsrc tree موجود است: - -```bash -cd /usr/pkgsrc/lang/nodejs && make install -``` - -یا یک بسته باینری را نصب کنید (در صورت موجود بودن برای پلتفرم شما) با استفاده از pkgin: - -```bash -pkgin -y install nodejs -``` - -## Nodenv - -`nodenv` یک مدیر نسخه سبک Node، مشابه `nvm` است. ساده و قابل پیش‌بینی است. یک اکوسیستم پلاگین غنی به شما امکان می‌دهد آن را برای تطابق با نیازهایتان سفارشی کنید. از `nodenv` برای انتخاب نسخه Node برای برنامه خود استفاده کنید و اطمینان حاصل کنید که محیط توسعه شما با محیط تولید مطابقت دارد. - -دستورالعمل‌های نصب Nodenv در [صفحه گیت‌هاب آن](https://github.com/nodenv/nodenv#installation) نگهداری می‌شوند. لطفاً به آن صفحه مراجعه کنید تا از آخرین نسخه مراحل نصب پیروی کنید. - -## nvm - -Node Version Manager یک اسکریپت bash است که برای مدیریت نسخه‌های مختلف منتشر شده Node.js استفاده می‌شود. به شما امکان می‌دهد عملیاتی مانند نصب، حذف، تغییر نسخه و غیره را انجام دهید. -برای نصب nvm، از این [اسکریپت نصب](https://github.com/nvm-sh/nvm#install--update-script) استفاده کنید. - -در سیستم‌های Unix / OS X، می‌توانیم Node.js ساخته شده از سورس کد را با استفاده از [nvm](https://github.com/creationix/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` چندسکویی است و می‌تواند در ویندوز، macOS و سیستم‌های شبیه یونیکس استفاده شود. - -برای نصب `nvs` در ویندوز به [صفحه انتشار](https://github.com/jasongin/nvs/releases) بروید و فایل نصب‌کننده MSI از آخرین نسخه را دانلود کنید. - -همچنین می‌توانید از `chocolatey` برای نصب آن استفاده کنید: - -```bash -choco install nvs -``` - -#### macOS، UnixLike - -می‌توانید مستندات مربوط به مراحل نصب `nvs` در سیستم‌های macOS/Unix-like را [اینجا](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) پیدا کنید. - -#### استفاده - -پس از این می‌توانید از `nvs` برای تغییر بین نسخه‌های مختلف node استفاده کنید. - -برای اضافه کردن آخرین نسخه از node: - -```bash -nvs add latest -``` - -یا برای اضافه کردن آخرین نسخه LTS از node: - -```bash -nvs add lts -``` - -سپس دستور `nvs use` را اجرا کنید تا یک نسخه از node را به `PATH` برای شل فعلی اضافه کنید: - -```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 از طریق سیستم پورت‌ها در دسترس است. - -```bash -/usr/ports/lang/node -``` - -با استفاده از [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) در OpenBSD: - -```bash -pkg_add node -``` - -## openSUSE و SLE - -Node.js در مخازن اصلی تحت بسته‌های زیر موجود است: - -- `nodejs10` ، `nodejs12` ، `nodejs14` :**openSUSE Leap 15.2** -- - `nodejs20` :**openSUSE Tumbleweed** -- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, and `nodejs14` - (باید [ماژول "Web and Scripting"](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated) فعال شود.) -- `nodejs10`، `nodejs12` ، `nodejs14` :**SUSE Linux Enterprise Server (SLES) 15 SP2** - (باید [ماژول "Web and Scripting"](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module) فعال شود.) - -به عنوان مثال، برای نصب Node.js 14.x در openSUSE Leap 15.2، با دسترسی root دستور زیر را اجرا کنید: - -```bash -zypper install nodejs14 -``` - -نسخه‌های مختلف اصلی Node می‌توانند همزمان نصب و استفاده شوند. - -## SmartOS و illumos - -image های 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](https://github.com/nodejs/snap) تحت عنوان [`node`](https://snapcraft.io/node) در فروشگاه Snap در دسترس هستند. - -## Solus - -Solus، بسته Node.js را در مخزن اصلی خود ارائه می‌دهد. - -```bash -sudo eopkg install nodejs -``` - -## vfox - -یک مدیر نسخه چندسکویی (ویندوز، macOS، لینوکس) و قابل **گسترش**. - -به شما اجازه می‌دهد که **نسخه‌های مختلف برای پروژه‌های مختلف**، **نسخه‌های مختلف برای شل‌های مختلف**، و تغییر خودکار نسخه Node بر اساس دایرکتوری فعلی، و غیره را انجام دهید. - -این نرم‌افزار تمام پوسته‌های محبوب را پشتیبانی می‌کند (Bash, Zsh, Fish, PowerShell, Clink, Cmder). - -به [شروع سریع](https://vfox.lhan.me/guides/quick-start.html) برای استفاده سریع از vfox و تمام جزئیات استفاده مراجعه کنید. - -## Void Linux - -Void Linux نسخه پایدار Node.js را در مخزن اصلی خود ارائه می‌کند. - -```bash -xbps-install -Sy nodejs -``` - -## Windows - -مستقیماً [نصب‌کننده ویندوز](/#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 برای Node.js - z/OS® در دو قالب نصب، SMP/E و PAX در دسترس است. قالب نصب مربوط به خود را انتخاب کنید: - -- [نصب و پیکربندی نسخه SMP/E از Node.js در z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) -- [نصب و پیکربندی نسخه PAX از Node.js در z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/fa/download/package-manager/current.mdx b/apps/site/pages/fa/download/package-manager/current.mdx deleted file mode 100644 index 2fac9d78fe9a3..0000000000000 --- a/apps/site/pages/fa/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: دانلود Node.js -subtitle: Node.js را به شیوه‌ای که می‌خواهید دانلود کنید. ---- - -<section> -نصب Node.js <Release.VersionDropdown /> روی <Release.OperatingSystemDropdown exclude={["AIX"]} /> با استفاده از <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js شامل <Release.NpmLink /> است. - -گزارش تغییرات <Release.ChangelogLink>این نسخه</Release.ChangelogLink> را بخوانید - -پست بلاگ مربوط به <Release.BlogPostLink>این نسخه</Release.BlogPostLink> را بخوانید - -یاد بگیرید که چگونه <Release.VerifyingBinariesLink>امضاهای SHASUMS را تایید کنید</Release.VerifyingBinariesLink> - -دیگر <LinkWithArrow href="/download/package-manager/all">پکیج منیجر ها</LinkWithArrow> که توسط جامعه پشتیبانی می‌شوند را ببینید - -</section> diff --git a/apps/site/pages/fa/download/package-manager/index.mdx b/apps/site/pages/fa/download/package-manager/index.mdx deleted file mode 100644 index 8ad4424230a8d..0000000000000 --- a/apps/site/pages/fa/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: دانلود Node.js -subtitle: Node.js را به شیوه‌ای که می‌خواهید دانلود کنید. ---- - -<section> -نصب Node.js <Release.VersionDropdown /> روی <Release.OperatingSystemDropdown exclude={["AIX"]} /> با استفاده از <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js شامل <Release.NpmLink /> است. - -پست بلاگ مربوط به <Release.ChangelogLink>این نسخه</Release.ChangelogLink> را بخوانید. - -پست بلاگ مربوط به <Release.BlogPostLink>این نسخه</Release.BlogPostLink> را بخوانید - -یاد بگیرید که چگونه <Release.VerifyingBinariesLink>امضاهای SHASUMS را تایید کنید</Release.VerifyingBinariesLink> - -دیگر <LinkWithArrow href="/download/package-manager/all">پکیج منیجر ها</LinkWithArrow> که توسط جامعه پشتیبانی می‌شوند را ببینید - -</section> diff --git a/apps/site/pages/fa/download/prebuilt-binaries/current.mdx b/apps/site/pages/fa/download/prebuilt-binaries/current.mdx deleted file mode 100644 index 85514a07dd72c..0000000000000 --- a/apps/site/pages/fa/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: download -title: دانلود Node.js -subtitle: Node.js را به شیوه‌ای که می‌خواهید دانلود کنید. ---- - -<section> -من نسخه <Release.VersionDropdown /> از Node.js را برای <Release.OperatingSystemDropdown /> در حال اجرا <Release.BitnessDropdown /> می‌خواهم - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js شامل <Release.NpmLink /> است. - -گزارش تغییرات <Release.ChangelogLink>این نسخه</Release.ChangelogLink> را بخوانید - -پست بلاگ مربوط به <Release.BlogPostLink>این نسخه</Release.BlogPostLink> را بخوانید - -یاد بگیرید که چگونه <Release.VerifyingBinariesLink>امضاهای SHASUMS را تایید کنید</Release.VerifyingBinariesLink> - -<LinkWithArrow href="https://nodejs.org/download/nightly/">نسخه‌های پیش‌ساخته شبانه</LinkWithArrow> یا <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">ساخت‌های غیررسمی</LinkWithArrow> را برای دیگر پلتفرم‌ها بررسی کنید -</section> diff --git a/apps/site/pages/fa/download/prebuilt-binaries/index.mdx b/apps/site/pages/fa/download/prebuilt-binaries/index.mdx deleted file mode 100644 index 85514a07dd72c..0000000000000 --- a/apps/site/pages/fa/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: download -title: دانلود Node.js -subtitle: Node.js را به شیوه‌ای که می‌خواهید دانلود کنید. ---- - -<section> -من نسخه <Release.VersionDropdown /> از Node.js را برای <Release.OperatingSystemDropdown /> در حال اجرا <Release.BitnessDropdown /> می‌خواهم - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js شامل <Release.NpmLink /> است. - -گزارش تغییرات <Release.ChangelogLink>این نسخه</Release.ChangelogLink> را بخوانید - -پست بلاگ مربوط به <Release.BlogPostLink>این نسخه</Release.BlogPostLink> را بخوانید - -یاد بگیرید که چگونه <Release.VerifyingBinariesLink>امضاهای SHASUMS را تایید کنید</Release.VerifyingBinariesLink> - -<LinkWithArrow href="https://nodejs.org/download/nightly/">نسخه‌های پیش‌ساخته شبانه</LinkWithArrow> یا <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">ساخت‌های غیررسمی</LinkWithArrow> را برای دیگر پلتفرم‌ها بررسی کنید -</section> diff --git a/apps/site/pages/fa/download/prebuilt-installer/current.mdx b/apps/site/pages/fa/download/prebuilt-installer/current.mdx deleted file mode 100644 index 5fb580d31fa6f..0000000000000 --- a/apps/site/pages/fa/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: دانلود Node.js -subtitle: Node.js را به شیوه‌ای که می‌خواهید دانلود کنید. ---- - -<section> -من نسخه <Release.VersionDropdown /> از Node.js را برای <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> در حال اجرا <Release.BitnessDropdown /> می‌خواهم - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js شامل <Release.NpmLink /> است. - -گزارش تغییرات <Release.ChangelogLink>این نسخه</Release.ChangelogLink> را بخوانید - -پست بلاگ مربوط به <Release.BlogPostLink>این نسخه</Release.BlogPostLink> را بخوانید - -یاد بگیرید که چگونه <Release.VerifyingBinariesLink>امضاهای SHASUMS را تایید کنید</Release.VerifyingBinariesLink> - -تمام <LinkWithArrow href="https://nodejs.org/dist/">آپشن‌های دانلود Node.js</LinkWithArrow> را ببینید - -درباره <LinkWithArrow href="about/previous-releases"> Node.js مطالعه کنید </LinkWithArrow> - -</section> diff --git a/apps/site/pages/fa/download/prebuilt-installer/index.mdx b/apps/site/pages/fa/download/prebuilt-installer/index.mdx deleted file mode 100644 index a74e2634d9e89..0000000000000 --- a/apps/site/pages/fa/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: دانلود Node.js -subtitle: Node.js را به شیوه‌ای که می‌خواهید دانلود کنید. ---- - -<section> -من نسخه <Release.VersionDropdown /> از Node.js را برای <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> در حال اجرا <Release.BitnessDropdown /> می‌خواهم - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js شامل <Release.NpmLink /> است. - -گزارش تغییرات <Release.ChangelogLink>این نسخه</Release.ChangelogLink> را بخوانید - -پست بلاگ مربوط به <Release.BlogPostLink>این نسخه</Release.BlogPostLink> را بخوانید - -یاد بگیرید که چگونه <Release.VerifyingBinariesLink>امضاهای SHASUMS را تأیید کنید</Release.VerifyingBinariesLink> - -تمام <LinkWithArrow href="https://nodejs.org/dist/">آپشن‌های دانلود Node.js</LinkWithArrow> را ببینید - -درباره <LinkWithArrow href="about/previous-releases"> Node.js مطالعه کنید </LinkWithArrow> - -</section> diff --git a/apps/site/pages/fa/download/source-code/current.mdx b/apps/site/pages/fa/download/source-code/current.mdx deleted file mode 100644 index 25599aa1b2b0e..0000000000000 --- a/apps/site/pages/fa/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: دانلود Node.js -subtitle: Node.js را به شیوه‌ای که می‌خواهید دانلود کنید. ---- - -<section> -من نسخه <Release.VersionDropdown /> از سورس کد Node.js را می‌خواهم. - -<Release.SourceButton /> -</section> - -<section> -Node.js شامل <Release.NpmLink /> است. - -گزارش تغییرات <Release.ChangelogLink>این نسخه</Release.ChangelogLink> را بخوانید - -پست بلاگ مربوط به <Release.BlogPostLink>این نسخه</Release.BlogPostLink> را بخوانید - -یاد بگیرید که چگونه <Release.VerifyingBinariesLink>امضاهای SHASUMS را تایید کنید</Release.VerifyingBinariesLink> - -نحوه <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">ساخت Node.js</LinkWithArrow> از سورس کد را ببینید. - -</section> diff --git a/apps/site/pages/fa/download/source-code/index.mdx b/apps/site/pages/fa/download/source-code/index.mdx deleted file mode 100644 index 25599aa1b2b0e..0000000000000 --- a/apps/site/pages/fa/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: دانلود Node.js -subtitle: Node.js را به شیوه‌ای که می‌خواهید دانلود کنید. ---- - -<section> -من نسخه <Release.VersionDropdown /> از سورس کد Node.js را می‌خواهم. - -<Release.SourceButton /> -</section> - -<section> -Node.js شامل <Release.NpmLink /> است. - -گزارش تغییرات <Release.ChangelogLink>این نسخه</Release.ChangelogLink> را بخوانید - -پست بلاگ مربوط به <Release.BlogPostLink>این نسخه</Release.BlogPostLink> را بخوانید - -یاد بگیرید که چگونه <Release.VerifyingBinariesLink>امضاهای SHASUMS را تایید کنید</Release.VerifyingBinariesLink> - -نحوه <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">ساخت Node.js</LinkWithArrow> از سورس کد را ببینید. - -</section> diff --git a/apps/site/pages/fr/download/package-manager/all.md b/apps/site/pages/fr/download/package-manager/all.md deleted file mode 100644 index e3cc8139496c1..0000000000000 --- a/apps/site/pages/fr/download/package-manager/all.md +++ /dev/null @@ -1,400 +0,0 @@ ---- -layout: article -title: Installer Node.js via le gestionnaire de paquets ---- - -# Installer Node.js via le gestionnaire de paquets - -> Les paquets sur cette page sont maintenus et supportés par leurs auteurs respectifs, **pas** par l'équipe de base de Node.js. Veuillez rapporter tout problème que vous rencontrez au mainteneur du paquet. S'il s'avère que votre problème est un bogue dans Node.js lui-même, le mainteneur rapportera le problème en amont. - -## Alpine Linux - -Les paquets Node.js LTS et npm sont disponibles dans le dépôt principal. - -```bash -apk add nodejs npm -``` - -Node.js actuel peut être installé à partir du Repository de la Communauté. - -```bash -apk add nodejs-current -``` - -## Android - -Le support d'Android est encore expérimental dans Node.js, donc les binaires précompilés ne sont pas encore fournis par les développeurs de Node.js. - -Toutefois, il existe des solutions tierces. Par exemple, la communauté [Termux](https://termux.com/) fournit un émulateur de terminal et un environnement Linux pour Android, ainsi que son propre gestionnaire de paquets et une [vaste collection](https://github.com/termux/termux-packages) de nombreuses applications précompilées. Cette commande dans l'application Termux installera la dernière version disponible de Node.js : - -```bash -pkg install nodejs -``` - -Actuellement, les binaires de Termux Node.js sont liés à `system-icu` (dépendant du paquet `libicu`). - -## Arch Linux - -Les paquets Node.js et npm sont disponibles dans le Dépôt de la communauté. - -```bash -pacman -S nodejs npm -``` - -## CentOS, Fedora et Red Hat Enterprise Linux - -Node.js est disponible en tant que module appelé `nodejs` dans CentOS/RHEL 8 et Fedora. - -```bash -dnf module install nodejs:<stream> -``` - -où `<stream>` correspond à la version majeure de Node.js. -Pour voir la liste des flux disponibles : - -```bash -dnf module list nodejs -``` - -Par exemple, pour installer Node.js 18 : - -```bash -dnf module install nodejs:18/common -``` - -### Alternatives - -Ces ressources fournissent des paquets compatibles avec CentOS, Fedora et RHEL. - -- [Node.js snaps](#snap) maintenu et supporté à https://github.com/nodejs/snap -- [Distributions binaires Node.js](#debian-and-ubuntu-based-linux-distributions) maintenues et supportées par [NodeSource](https://github.com/nodesource/distributions) - -## Distributions basées sur Debian et Ubuntu - -Des [distributions binaires de Node.js](https://github.com/nodesource/distributions) sont disponibles auprès de NodeSource. - -### Alternatives - -Les paquets compatibles avec les distributions Linux basées sur Debian et Ubuntu sont disponibles via [Node.js snaps](#snap). - -## Exherbo Linux - -Les paquets Node.js et npm sont disponibles dans le [dépôt d'arborescence](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). - -```bash -cave resolve -x node -``` - -## fnm - -Gestionnaire de versions Node.js simple et rapide, construit en Rust, utilisé pour gérer plusieurs versions de Node.js. Il vous permet d'effectuer des opérations telles que l'installation, la désinstallation, le changement automatique de version de Node en fonction du répertoire courant, etc. -Pour installer fnm, utilisez ce [script d'installation](https://github.com/Schniz/fnm#using-a-script-macoslinux). - -fnm est multiplateforme (macOS, Windows, Linux) et supporte tous les shells populaires (Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt). -fnm est construit avec la vitesse à l'esprit et le support de compatibilité pour les fichiers `.node-version` et `.nvmrc`. - -## FreeBSD - -La version la plus récente de Node.js est disponible via le port [www/node](https://www.freshports.org/www/node). - -Installer un paquetage binaire via [pkg](https://www.freebsd.org/cgi/man.cgi?pkg) : - -```bash -pkg install node -``` - -Vous pouvez également le compiler vous-même en utilisant [ports](https://www.freebsd.org/cgi/man.cgi?ports) : - -```bash -cd /usr/ports/www/node && make install -``` - -## Gentoo - -Node.js est disponible dans l'arbre de portage. - -```bash -emerge nodejs -``` - -## IBM i - -Les versions LTS de Node.js sont disponibles auprès d'IBM, et sont disponibles via [le gestionnaire de paquets 'yum'](https://ibm.biz/ibmi-rpms). Le nom du paquet est `nodejs` suivi du numéro de la version majeure (par exemple, `nodejs18`, `nodejs20`, etc) - -Pour installer Node.js 14.x à partir de la ligne de commande, exécutez la commande suivante en tant qu'utilisateur disposant de l'autorisation spéciale \*ALLOBJ : - -```bash -yum install nodejs20 -``` - -Node.js peut également être installé avec le produit IBM i Access Client Solutions. Voir [ce document d'assistance](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) pour plus de détails - -## macOS - -Téléchargez l'[installateur macOS](/#home-downloadhead) directement depuis le site web [nodejs.org](https://nodejs.org/). - -Si vous voulez télécharger le paquet avec 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 "/" -``` - -### Alternatives - -Utilisation de **[Homebrew](https://brew.sh/)** : - -```bash -brew install node -``` - -Utilisation de **[MacPorts](https://www.macports.org/)** : - -```bash -port install nodejs<major version> - -# Example -port install nodejs7 -``` - -Utilisation de **[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)** : - -Installer le paquet binaire : - -```bash -pkgin -y install nodejs -``` - -Ou compiler manuellement à partir de pkgsrc : - -```bash -cd pkgsrc/lang/nodejs && bmake install -``` - -## n - -`n` est un gestionnaire de version Node.js simple à utiliser pour Mac et Linux. Spécifiez la version cible à installer en utilisant une syntaxe riche, -ou choisissez parmi un menu de versions précédemment téléchargées. Les versions sont installées à l'échelle du système ou de l'utilisateur, et pour une utilisation plus ciblée, vous pouvez exécuter une version directement à partir de votre ordinateur. -Pour une utilisation plus ciblée, vous pouvez exécuter une version directement à partir des téléchargements mis en cache. - -Voir la [page d'accueil](https://github.com/tj/n) pour les méthodes d'installation (bootstrap, npm, Homebrew, tierce partie), et tous les détails d'utilisation. - -Si vous avez déjà `npm`, l'installation de `n` et de la dernière version LTS de `node` est aussi simple que cela : - -``` -npm install -g n -n lts -``` - -## NetBSD - -Node.js est disponible dans l'arborescence pkgsrc : - -```bash -cd /usr/pkgsrc/lang/nodejs && make install -``` - -Ou installez un paquetage binaire (si disponible pour votre plateforme) en utilisant pkgin : - -```bash -pkgin -y install nodejs -``` - -## Nodenv - -`nodenv` est un gestionnaire de version léger pour les nœuds, similaire à `nvm`. Il est simple et prévisible. Un riche écosystème de plugins vous permet de l'adapter à vos besoins. Utilisez `nodenv` pour choisir une version de Node pour votre application et garantissez que votre environnement de développement correspond à la production. - -Les instructions d'installation de Nodenv sont maintenues [sur sa page Github](https://github.com/nodenv/nodenv#installation). Veuillez consulter cette page pour vous assurer que vous suivez la dernière version des étapes d'installation. - -## nvm - -Node Version Manager est un script bash utilisé pour gérer plusieurs versions de Node.js. Il permet -d'effectuer des opérations telles que l'installation, la désinstallation, le changement de version, etc. -Pour installer nvm, utilisez ce [script d'installation](https://github.com/nvm-sh/nvm#install--update-script). - -Sur les systèmes Unix / OS X, Node.js construit à partir des sources peut être installé à l'aide de -[nvm](https://github.com/creationix/nvm) en l'installant à l'emplacement attendu par nvm : - -```bash -env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" -``` - -Après cela, vous pouvez utiliser `nvm` pour basculer entre les versions publiées et les versions -compilées à partir des sources. -Par exemple, si la version de Node.js est v8.0.0-pre : - -```bash -nvm use 8 -``` - -Une fois que la version officielle sera disponible, vous voudrez désinstaller la version construite -à partir des sources : - -```bash -nvm uninstall 8 -``` - -## nvs - -#### Windows - -Le gestionnaire de versions `nvs` est multiplateforme et peut être utilisé sur Windows, macOS et les systèmes de type Unix - -Pour installer `nvs` sur Windows, allez sur la [page de publication](https://github.com/jasongin/nvs/releases) ici et téléchargez le fichier d'installation MSI de la dernière version. - -Vous pouvez également utiliser `chocolatey` pour l'installer : - -```bash -choco install nvs -``` - -#### macOS et tous les systèmes de type Unix - -Vous pouvez trouver la documentation concernant les étapes d'installation de `nvs` dans les systèmes macOS/Unix-like [ici](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) - -#### Usage - -Après cela, vous pouvez utiliser `nvs` pour passer d'une version à l'autre de node. - -Pour ajouter la dernière version du node : - -```bash -nvs add latest -``` - -Ou d'ajouter la dernière version LTS de node : - -```bash -nvs add lts -``` - -Ensuite, lancez la commande `nvs use` pour ajouter une version de node à votre `PATH` pour l'interpréteur de commandes actuel : - -```bash -$ nvs use lts -PATH -= %LOCALAPPDATA%\nvs\default -PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 -``` - -Pour l'ajouter à `PATH` de façon permanente, utilisez `nvs link` : - -```bash -nvs link lts -``` - -## OpenBSD - -Node.js est disponible via le système des ports. - -```bash -/usr/ports/lang/node -``` - -Utilisation de [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) sur OpenBSD : - -```bash -pkg_add node -``` - -## openSUSE et SLE - -Node.js est disponible dans les dépôts principaux sous les paquets suivants : - -- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` -- **openSUSE Tumbleweed**: `nodejs20` -- **SUSE Linux Enterprise Server (SLES) 12** : `nodejs10`, `nodejs12`, et `nodejs14` - (Le "Web et Scripting Module" doit être [activé](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) -- **SUSE Linux Enterprise Server (SLES) 15 SP2** : `nodejs10`, `nodejs12`, et `nodejs14` - (Le "Web etScripting Module" doit être [activés](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) - -Par exemple, pour installer Node.js 14.x sur openSUSE Leap 15.2, exécutez ce qui suit en tant que root : - -```bash -zypper install nodejs14 -``` - -Différentes versions majeures de Node peuvent être installées et utilisées simultanément. - -## SmartOS et illumos - -Les images de SmartOS sont livrées avec pkgsrc pré-installé. Sur les autres distributions illumos, installez d'abord **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, puis vous pouvez installer le paquetage binaire normalement : - -```bash -pkgin -y install nodejs -``` - -Ou compiler manuellement à partir de pkgsrc : - -```bash -cd pkgsrc/lang/nodejs && bmake install -``` - -## Snap - -Les [snaps Node.js](https://github.com/nodejs/snap) sont disponibles en tant que [`node`](https://snapcraft.io/node) sur le magasin Snap. - -## Solus - -Solus fournit Node.js dans son dépôt principal. - -```bash -sudo eopkg install nodejs -``` - -## vfox - -Un gestionnaire de versions multiplateforme (Windows, macOS, Linux) et **extensible**. - -Il vous permet de **différentes versions pour différents projets**, **différentes versions pour différents shells**, et de changer de version de Node automatiquement en fonction du répertoire courant, etc. - -Il supporte tous les shells populaires (Bash, Zsh, Fish, PowerShell, Clink, Cmder). - -Voir le [Démarrage rapide](https://vfox.lhan.me/guides/quick-start.html) pour une utilisation rapide de vfox, et tous les détails d'utilisation. - -## Void Linux - -Void Linux fournit Node.js stable dans le dépôt principal. - -```bash -xbps-install -Sy nodejs -``` - -## Windows - -Téléchargez l'[Installateur Windowsr](/#home-downloadhead) directement depuis le site web [nodejs.org](https://nodejs.org/). - -### Alternatives - -Utilisation **[Winget](https://aka.ms/winget-cli)**: - -```bash -winget install OpenJS.NodeJS -# or for LTS -winget install OpenJS.NodeJS.LTS -``` - -Après avoir exécuté l'une des deux commandes ci-dessus, il peut être nécessaire de redémarrer l'émulateur de terminal avant que la commande CLI `node` ne soit disponible. -l'émulateur de terminal avant que la commande CLI `node` ne soit disponible. - -Utilisation **[Chocolatey](https://chocolatey.org/)**: - -```bash -cinst nodejs -# or for full install with npm -cinst nodejs.install -``` - -Utilisation **[Scoop](https://scoop.sh/)**: - -```bash -scoop install nodejs -# or for LTS -scoop install nodejs-lts -``` - -## z/OS - -IBM® SDK pour Node.js - z/OS® est disponible en deux formats d'installation, -SMP/E et PAX. Sélectionnez le format d'installation qui vous convient : - -- [Installation et configuration de l'édition SMP/E de Node.js sur z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) -- [Installation et configuration de l'édition PAX de Node.js sur z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/fr/download/package-manager/current.mdx b/apps/site/pages/fr/download/package-manager/current.mdx deleted file mode 100644 index a7b2f9969b4f7..0000000000000 --- a/apps/site/pages/fr/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Télécharger Node.js® -subtitle: Téléchargez Node.js comme vous le souhaitez. ---- - -<section> -Installer Node.js <Release.VersionDropdown /> sur <Release.OperatingSystemDropdown exclude={["AIX"]} /> en utilisant <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js inclut <Release.NpmLink />. - -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. - -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. - -Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> signés - -Consultez d'autres <LinkWithArrow href="/download/package-manager/all">gestionnaires de paquets</LinkWithArrow> soutenus par la communauté - -</section> diff --git a/apps/site/pages/fr/download/package-manager/index.mdx b/apps/site/pages/fr/download/package-manager/index.mdx deleted file mode 100644 index b9b4197b0960c..0000000000000 --- a/apps/site/pages/fr/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Télécharger Node.js® -subtitle: Téléchargez Node.js comme vous le souhaitez. ---- - -<section> -Installer Node.js <Release.VersionDropdown /> sur <Release.OperatingSystemDropdown exclude={["AIX"]} /> en utilisant <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js inclut <Release.NpmLink />. - -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version - -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version - -Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> signés - -Consultez d'autres <LinkWithArrow href="/download/package-manager/all">gestionnaires de paquets</LinkWithArrow> soutenus par la communauté - -</section> diff --git a/apps/site/pages/fr/download/prebuilt-binaries/current.mdx b/apps/site/pages/fr/download/prebuilt-binaries/current.mdx deleted file mode 100644 index dcdad7cc77e90..0000000000000 --- a/apps/site/pages/fr/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Télécharger Node.js® -subtitle: Téléchargez Node.js comme vous le souhaitez. ---- - -<section> -Je veux la version <Release.VersionDropdown /> de Node.js pour <Release.OperatingSystemDropdown /> exécutant <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js inclut <Release.NpmLink />. - -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version - -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version - -Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> signés - -Consultez les binaires préconstruits <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> ou les <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Unofficial Builds</LinkWithArrow> pour d'autres plateformes. - -</section> diff --git a/apps/site/pages/fr/download/prebuilt-binaries/index.mdx b/apps/site/pages/fr/download/prebuilt-binaries/index.mdx deleted file mode 100644 index 4bed42857cf5d..0000000000000 --- a/apps/site/pages/fr/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Télécharger Node.js® -subtitle: Téléchargez Node.js comme vous le souhaitez. ---- - -<section> -Je veux la version <Release.VersionDropdown /> de Node.js pour <Release.OperatingSystemDropdown /> exécutant <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js inclut <Release.NpmLink />. - -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. - -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. - -Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS signés</Release.VerifyingBinariesLink>. - -Consultez les binaires préconstruits <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow>, tous les binaires préconstruits <LinkWithArrow href="https://nodejs.org/download/release/">Release</LinkWithArrow> ou <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Builds Non Officiels</LinkWithArrow> pour les autres plateformes. - -</section> diff --git a/apps/site/pages/fr/download/prebuilt-installer/current.mdx b/apps/site/pages/fr/download/prebuilt-installer/current.mdx deleted file mode 100644 index 1a51285899b70..0000000000000 --- a/apps/site/pages/fr/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Télécharger Node.js® -subtitle: Téléchargez Node.js comme vous le souhaitez. ---- - -<section> -Je veux la version <Release.VersionDropdown /> de Node.js pour <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />fonctionner <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js inclut <Release.NpmLink />. - -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version - -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version - -Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> signés - -Consultez toutes les <LinkWithArrow href="https://nodejs.org/dist/">options de téléchargement</LinkWithArrow> de Node.js. - -En savoir plus sur les <LinkWithArrow href="about/previous-releases">Versions Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/fr/download/prebuilt-installer/index.mdx b/apps/site/pages/fr/download/prebuilt-installer/index.mdx deleted file mode 100644 index b28ec06f8e16a..0000000000000 --- a/apps/site/pages/fr/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Télécharger Node.js® -subtitle: Téléchargez Node.js comme vous le souhaitez. ---- - -<section> -Je veux la version <Release.VersionDropdown /> de Node.js pour <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />fonctionner <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js inclut <Release.NpmLink />. - -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. - -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. - -Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> signés - -Consultez toutes les <LinkWithArrow href="https://nodejs.org/dist/">options de téléchargement</LinkWithArrow> de Node.js. - -En savoir plus sur les <LinkWithArrow href="/about/previous-releases">Versions Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/fr/download/source-code/current.mdx b/apps/site/pages/fr/download/source-code/current.mdx deleted file mode 100644 index d4fbc07f30be7..0000000000000 --- a/apps/site/pages/fr/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Télécharger Node.js® -subtitle: Téléchargez Node.js comme vous le souhaitez. ---- - -<section> -Je veux la version <Release.VersionDropdown /> du code source de Node.js. - -<Release.SourceButton /> -</section> - -<section> -Node.js inclut <Release.NpmLink />. - -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. - -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. - -Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> signés - -Découvrez comment <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">compiler Node.js</LinkWithArrow> à partir des sources. - -</section> diff --git a/apps/site/pages/fr/download/source-code/index.mdx b/apps/site/pages/fr/download/source-code/index.mdx deleted file mode 100644 index d4fbc07f30be7..0000000000000 --- a/apps/site/pages/fr/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Télécharger Node.js® -subtitle: Téléchargez Node.js comme vous le souhaitez. ---- - -<section> -Je veux la version <Release.VersionDropdown /> du code source de Node.js. - -<Release.SourceButton /> -</section> - -<section> -Node.js inclut <Release.NpmLink />. - -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. - -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. - -Apprenez à <Release.VerifyingBinariesLink>vérifier les SHASUMS</Release.VerifyingBinariesLink> signés - -Découvrez comment <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">compiler Node.js</LinkWithArrow> à partir des sources. - -</section> diff --git a/apps/site/pages/id/download/package-manager/all.md b/apps/site/pages/id/download/package-manager/all.md deleted file mode 100644 index 892c7d0f1e9c9..0000000000000 --- a/apps/site/pages/id/download/package-manager/all.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -layout: article -title: Menginstal Node.js melalui manajer paket ---- - -# Menginstal Node.js melalui manajer paket - -> Paket-paket di halaman ini dijaga dan didukung oleh para pemberi paket mereka masing-masing, bukan tim inti Node.js. Harap laporkan setiap masalah yang Anda temui kepada pemelihara paket. Jika masalah Anda ternyata adalah bug dalam Node.js itu sendiri, pemelihara akan melaporkan masalah tersebut ke hulu. - -## Alpine Linux - -Paket Node.js LTS dan npm tersedia di Repository Utama. - -```bash -apk add nodejs npm -``` - -Node.js Current dapat diinstal dari Repository Komunitas. - -```bash -apk add nodejs-current -``` - -## Android - -Dukungan Android masih eksperimental di Node.js, jadi biner pra-kompilasi belum disediakan oleh pengembang Node.js. - -Namun, ada beberapa solusi pihak ketiga. Misalnya, komunitas [Termux](https://termux.com/) menyediakan emulator terminal dan lingkungan Linux untuk Android, serta pengelola paket sendiri dan [koleksi ekstensif](https://github.com/termux/termux-packages) dari banyak aplikasi pra-kompilasi. Perintah ini di aplikasi Termux akan menginstal versi Node.js terakhir yang tersedia: - -```bash -pkg install nodejs -``` - -Saat ini, biner Termux Node.js terhubung dengan `system-icu` (bergantung pada paket `libicu`). - -## Arch Linux - -Paket Node.js dan npm tersedia di Repository Komunitas. - -```bash -pacman -S nodejs npm -``` - -## CentOS, Fedora dan Red Hat Enterprise Linux - -Node.js tersedia sebagai modul yang disebut `nodejs` di CentOS/RHEL 8 dan Fedora. - -```bash -dnf module install nodejs:<stream> -``` - -di mana `<stream>` sesuai dengan versi utama dari Node.js. -Untuk melihat daftar stream yang tersedia: - -```bash -dnf module list nodejs -``` - -Misalnya, untuk menginstal Node.js 18: - -```bash -dnf module install nodejs:18/common -``` - -### Alternatif - -Sumber-sumber ini menyediakan paket yang kompatibel dengan CentOS, Fedora, dan RHEL. - -- [Node.js snaps](#snap) yang dikelola dan didukung di https://github.com/nodejs/snap -- [Distribusi biner Node.js](#distribusi-linux-berbasis-debian-dan-ubuntu) yang dikelola dan didukung oleh [NodeSource](https://github.com/nodesource/distributions) - -## Distribusi Linux berbasis Debian dan Ubuntu - -[Distribusi biner Node.js](https://github.com/nodesource/distributions) tersedia dari NodeSource. - -### Alternatif - -Paket yang kompatibel dengan distribusi Linux berbasis Debian dan Ubuntu tersedia melalui [Node.js snaps](#snap). - -## Exherbo Linux - -Paket Node.js dan npm tersedia di [arbor repository](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). - -```bash -cave resolve -x node -``` - -## fnm - -Manajer versi Node.js yang cepat dan sederhana yang dibangun di Rust digunakan untuk mengelola beberapa versi Node.js yang dirilis. Ini memungkinkan Anda untuk melakukan operasi seperti menginstal, mencopot, beralih versi Node secara otomatis berdasarkan direktori saat ini, dll. -Untuk menginstal fnm, gunakan [script instalasi](https://github.com/Schniz/fnm#using-a-script-macoslinux) ini. - -fnm mendukung lintas platform (macOS, Windows, Linux) & semua shell populer (Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt). -fnm dibangun dengan kecepatan dalam pikiran dan dukungan kompatibilitas untuk file `.node-version` dan `.nvmrc`. - -## FreeBSD - -Rilis terbaru Node.js tersedia melalui port [www/node](https://www.freshports.org/www/node). - -Instal paket biner melalui [pkg](https://www.freebsd.org/cgi/man.cgi?pkg): - -```bash -pkg install node -``` - -Atau kompilasi sendiri menggunakan [ports](https://www.freebsd.org/cgi/man.cgi?ports): - -```bash -cd /usr/ports/www/node && make install -``` - -## Gentoo - -Node.js tersedia di portage tree. - -```bash -emerge nodejs -``` - -## IBM i - -Versi LTS dari Node.js tersedia dari IBM, dan tersedia melalui [pengelola paket 'yum'](https://ibm.biz/ibmi-rpms). Nama paketnya adalah `nodejs` diikuti oleh nomor versi utama (misalnya, `nodejs18`, `nodejs20`, dll.) - -Untuk menginstal Node.js 20.x dari baris perintah, jalankan yang berikut ini sebagai pengguna dengan otoritas khusus \*ALLOBJ: - -```bash -yum install nodejs20 -``` - -Node.js juga dapat diinstal dengan produk IBM i Access Client Solutions. Lihat [dokumen dukungan ini](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) untuk detail lebih lanjut - -## macOS - -Unduh [Penginstal macOS](/#home-downloadhead) langsung dari situs web [nodejs.org](https://nodejs.org/). - -_Jika Anda ingin mengunduh paket dengan 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 "/" -``` - -### Alternatif - -Menggunakan **[Homebrew](https://brew.sh/)**: - -```bash -brew install node -``` - -Menggunakan **[MacPorts](https://www.macports.org/)**: - -```bash -port install nodejs<major version> - -# Example -port install nodejs7 -``` - -Menggunakan **[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)**: - -Instal paket biner: - -```bash -pkgin -y install nodejs -``` - -Atau buat secara manual dari pkgsrc: - -```bash -cd pkgsrc/lang/nodejs && bmake install -``` - -## n - -`n` adalah manajer versi Node.js yang mudah digunakan untuk Mac dan Linux. Tentukan versi target untuk menginstal menggunakan sintaks yang kaya, atau pilih dari menu versi yang diunduh sebelumnya. Versi diinstal di seluruh sistem atau di seluruh pengguna, dan untuk lebih banyak lagi penggunaan yang ditargetkan, Anda dapat menjalankan versi langsung dari unduhan yang di-cache. - -Lihat [Beranda](https://github.com/tj/n) untuk metode cara penginstalan (boostrap, npm, Homebrew, pihak ketiga), dan semua detail penggunaan. - -Jika Anda sudah memiliki `npm` maka menginstal `n` dan kemudian versi LTS `node` terbaru sesederhana ini: - -``` -npm install -g n -n lts -``` - -## NetBSD - -Node.js tersedia di tree pkgsrc: - -```bash -cd /usr/pkgsrc/lang/nodejs && make install -``` - -Atau instal paket biner (jika tersedia untuk platform Anda) menggunakan pkgin: - -```bash -pkgin -y install nodejs -``` - -## Nodenv - -`nodenv` adalah manajer versi node yang ringan, mirip dengan `nvm`. Ini sederhana dan dapat diprediksi. Ekosistem plugin yang kaya memungkinkan Anda menyesuaikannya sesuai kebutuhan Anda. Gunakan `nodenv` untuk memilih versi Node untuk aplikasi Anda dan menjamin bahwa lingkungan pengembangan Anda cocok dengan produksi. - -Petunjuk instalasi Nodenv dikelola [di halaman Github-nya](https://github.com/nodenv/nodenv#installation). Silakan kunjungi halaman tersebut untuk memastikan Anda mengikuti versi terbaru dari langkah-langkah instalasi. - -## nvm - -Node Version Manager adalah skrip bash yang digunakan untuk mengelola beberapa versi Node.js yang dirilis. Ini memungkinkan -Anda untuk melakukan operasi seperti menginstal, mencopot, beralih versi, dll. -Untuk menginstal nvm, gunakan [skrip instalsi](https://github.com/nvm-sh/nvm#install--update-script). - -Di sistem Unix / OS X, Node.js yang dibangun dari sumber dapat diinstal menggunakan -[nvm](https://github.com/creationix/nvm) dengan menginstalasi ke lokasi yang diharapkan nvm: - -```bash -env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" -``` - -Setelah ini, Anda dapat menggunakan `nvm` untuk beralih antara versi yang dirilis dan versi -yang dibangun dari sumber. -Misalnya, jika versi Node.js adalah v8.0.0-pre: - -```bash -nvm use 8 -``` - -Setelah perilisan resmi keluar, Anda akan menghapus versi yang dibuat dari sumber: - -```bash -nvm uninstall 8 -``` - -## nvs - -#### Windows - -Manajer versi `nvs` bersifat lintas platform dan dapat digunakan pada sistem Windows, macOS, dan seperti Unix - -Untuk menginstal `nvs` di Windows, kunjungi halaman [release](https://github.com/jasongin/nvs/releases) ini dan unduh file instalator MSI dari rilis terbaru. - -Anda juga dapat menggunakan `chocolatey` untuk menginstalnya: - -```bash -choco install nvs -``` - -#### macOS,UnixLike - -Anda dapat menemukan dokumentasi mengenai langkah-langkah instalasi `nvs` di sistem macOS/Unix-like [di sini](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) - -#### Penggunaan - -Setelah ini, Anda dapat menggunakan `nvs` untuk beralih di antara versi node yang berbeda. - -Untuk menambahkan versi terbaru node: - -```bash -nvs add latest -``` - -Atau pun bash untuk menambahkan node versi LTS terbaru: - -```bash -nvs add lts -``` - -Kemudian jalankan perintah `nvs use` untuk menambahkan versi node ke `PATH` shell saat ini: - -```bash -$ nvs use lts -PATH -= %LOCALAPPDATA%\nvs\default -PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 -``` - -Kemudian jalankan perintah `nvs use` untuk menambahkan versi node ke `PATH` shell saat ini: - -```bash -nvs link lts -``` - -## OpenBSD - -Node.js tersedia melalui sistem ports. - -```bash -/usr/ports/lang/node -``` - -Menggunakan [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) di OpenBSD: - -```bash -pkg_add node -``` - -## openSUSE and SLE - -Node.js is available in the main repositories under the following packages: - -- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` -- **openSUSE Tumbleweed**: `nodejs20` -- - **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, dan `nodejs14` - (Modul "Web and Scripting Module" harus [diaktifkan](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) -- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, dan `nodejs14` - (Modul "Web and Scripting Module" harus [diaktifkan](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) - -Sebagai contoh, untuk menginstal Node.js 14.x pada openSUSE Leap 15.2, jalankan perintah berikut sebagai root: - -```bash -zypper install nodejs14 -``` - -Versi utama Node yang berbeda dapat diinstal dan digunakan secara bersamaan. - -## SmartOS dan illumos - -Gambar SmartOS dilengkapi dengan pkgsrc yang telah diinstal. Pada distribusi illumos lainnya, pertama-tama instal **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, kemudian Anda dapat menginstal paket biner seperti biasa: - -```bash -pkgin -y install nodejs -``` - -Atau bangun secara manual dari pkgsrc: - -```bash -cd pkgsrc/lang/nodejs && bmake install -``` - -## Snap - -[Node.js snaps](https://github.com/nodejs/snap) tersedia sebagai [`node`](https://snapcraft.io/node) di Snap store. - -## Solus - -Solus menyediakan Node.js di repositori utamanya. - -```bash -sudo eopkg install nodejs -``` - -## vfox - -Manajer versi yang lintas-platform (Windows, macOS, Linux) dan **dapat diperluas**. - -Ini memungkinkan Anda untuk **versi yang berbeda untuk proyek yang berbeda**, **versi yang berbeda untuk shell yang berbeda**, dan beralih otomatis antar versi Node berdasarkan direktori saat ini, dll. - -Dukung semua shell populer (Bash, Zsh, Fish, PowerShell, Clink, Cmder). - -Lihat [Panduan Memulai Cepat](https://vfox.lhan.me/guides/quick-start.html) untuk menggunakan vfox dengan cepat, dan semua detail penggunaannya. - -## Void Linux - -Void Linux mengirimkan Node.js stabil di repositori utama. - -```bash -xbps-install -Sy nodejs -``` - -## Windows - -Unduh [Pemasang Windows](/#home-downloadhead) langsung dari situs web [nodejs.org](https://nodejs.org/). - -### Windows - -Unduh [Pemasang Windows](/#home-downloadhead) langsung dari situs web [nodejs.org](https://nodejs.org/). - -```bash -winget install OpenJS.NodeJS -# or for LTS -winget install OpenJS.NodeJS.LTS -``` - -Menggunakan **[Winget](https://aka.ms/winget-cli)**: - -Menggunakan **[Chocolatey](https://chocolatey.org/)**: - -```bash -cinst nodejs -# or for full install with npm -cinst nodejs.install -``` - -Menggunakan **[Scoop](https://scoop.sh/)**: - -```bash -scoop install nodejs -# or for LTS -scoop install nodejs-lts -``` - -## z/OS - -IBM® SDK untuk Node.js - z/OS® tersedia dalam dua format instalasi, SMP/E dan PAX. Pilih format instalasi yang sesuai untuk Anda: - -- [Menginstal dan mengkonfigurasi edisi SMP/E Node.js di z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) -- [Menginstal dan mengkonfigurasi edisi PAX Node.js di z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/id/download/package-manager/current.mdx b/apps/site/pages/id/download/package-manager/current.mdx deleted file mode 100644 index 34202cba92cd1..0000000000000 --- a/apps/site/pages/id/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Unduh Node.js® -subtitle: Unduh Node.js sesuai keinginan Anda. ---- - -<section> -Instal Node.js <Release.VersionDropdown /> di <Release.OperatingSystemDropdown exclude={["AIX"]} /> menggunakan <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js disertakan <Release.NpmLink />. - -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. - -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. - -Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> - -Lihat <LinkWithArrow href="/download/package-manager/all">pengelola paket</LinkWithArrow> yang didukung komunitas lainnya - -</section> diff --git a/apps/site/pages/id/download/package-manager/index.mdx b/apps/site/pages/id/download/package-manager/index.mdx deleted file mode 100644 index 0e8e32f0ae34e..0000000000000 --- a/apps/site/pages/id/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Unduh Node.js® -subtitle: Unduh Node.js sesuai keinginan Anda. ---- - -<section> -Instal Node.js <Release.VersionDropdown /> di <Release.OperatingSystemDropdown exclude={["AIX"]} /> menggunakan <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js disertakan <Release.NpmLink />. - -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini - -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini - -Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> - -Lihat <LinkWithArrow href="/download/package-manager/all">pengelola paket</LinkWithArrow> yang didukung komunitas lainnya - -</section> diff --git a/apps/site/pages/id/download/prebuilt-binaries/current.mdx b/apps/site/pages/id/download/prebuilt-binaries/current.mdx deleted file mode 100644 index f9063133c81d7..0000000000000 --- a/apps/site/pages/id/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Unduh Node.js® -subtitle: Unduh Node.js sesuai keinginan Anda. ---- - -<section> -Saya ingin versi Node.js <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> yang berjalan <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js disertakan <Release.NpmLink />. - -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini - -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini - -Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> - -Lihat <LinkWithArrow href="https://nodejs.org/download/nightly/">biner pra-dibangun secara Nightly</LinkWithArrow> atau <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Bangunan Tidak Resmi</LinkWithArrow> untuk platform lain - -</section> diff --git a/apps/site/pages/id/download/prebuilt-binaries/index.mdx b/apps/site/pages/id/download/prebuilt-binaries/index.mdx deleted file mode 100644 index a3620eb74aa01..0000000000000 --- a/apps/site/pages/id/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Unduh Node.js® -subtitle: Unduh Node.js sesuai keinginan Anda. ---- - -<section> -Saya ingin versi Node.js <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> yang berjalan <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js disertakan <Release.NpmLink />. - -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. - -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. - -Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink>. - -Lihat <LinkWithArrow href="https://nodejs.org/download/nightly/">biner pra-dibangun secara Nightly</LinkWithArrow>, semua <LinkWithArrow href="https://nodejs.org/download/release/">biner pra-dibangun Rilis</LinkWithArrow>, atau <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Bangunan Tidak Resmi</LinkWithArrow> untuk platform lain. - -</section> diff --git a/apps/site/pages/id/download/prebuilt-installer/current.mdx b/apps/site/pages/id/download/prebuilt-installer/current.mdx deleted file mode 100644 index eac81f06f0310..0000000000000 --- a/apps/site/pages/id/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Unduh Node.js® -subtitle: Unduh Node.js sesuai keinginan Anda. ---- - -<section> -Saya ingin versi Node.js <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> yang berjalan <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"penginstal"} /> -</section> - -<section> -Node.js disertakan <Release.NpmLink />. - -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini - -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini - -Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> - -Lihat semua opsi <LinkWithArrow href="https://nodejs.org/dist/">unduh Node.js</LinkWithArrow> yang tersedia - -Pelajari tentang <LinkWithArrow href="about/previous-releases">Rilis Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/id/download/prebuilt-installer/index.mdx b/apps/site/pages/id/download/prebuilt-installer/index.mdx deleted file mode 100644 index 9eedb9693390e..0000000000000 --- a/apps/site/pages/id/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Unduh Node.js® -subtitle: Unduh Node.js sesuai keinginan Anda. ---- - -<section> -Saya ingin versi Node.js <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> yang berjalan <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"penginstal"} /> -</section> - -<section> -Node.js disertakan <Release.NpmLink />. - -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. - -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. - -Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> - -Lihat semua opsi <LinkWithArrow href="https://nodejs.org/dist/">unduh Node.js</LinkWithArrow> yang tersedia - -Pelajari tentang <LinkWithArrow href="/about/previous-releases">Rilis Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/id/download/source-code/current.mdx b/apps/site/pages/id/download/source-code/current.mdx deleted file mode 100644 index 823a8bc7e5478..0000000000000 --- a/apps/site/pages/id/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Unduh Node.js® -subtitle: Unduh Node.js sesuai keinginan Anda. ---- - -<section> -Saya ingin versi kode sumber Node.js <Release.VersionDropdown />. - -<Release.SourceButton /> -</section> - -<section> -Node.js disertakan <Release.NpmLink />. - -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. - -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. - -Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> - -Lihat bagaimana cara <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">membangun Node.js</LinkWithArrow> dari sumber. - -</section> diff --git a/apps/site/pages/id/download/source-code/index.mdx b/apps/site/pages/id/download/source-code/index.mdx deleted file mode 100644 index 823a8bc7e5478..0000000000000 --- a/apps/site/pages/id/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Unduh Node.js® -subtitle: Unduh Node.js sesuai keinginan Anda. ---- - -<section> -Saya ingin versi kode sumber Node.js <Release.VersionDropdown />. - -<Release.SourceButton /> -</section> - -<section> -Node.js disertakan <Release.NpmLink />. - -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. - -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. - -Pelajari cara <Release.VerifyingBinariesLink>memverifikasi SHASUMS yang ditandatangani</Release.VerifyingBinariesLink> - -Lihat bagaimana cara <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">membangun Node.js</LinkWithArrow> dari sumber. - -</section> diff --git a/apps/site/pages/ja/download/package-manager/current.mdx b/apps/site/pages/ja/download/package-manager/current.mdx deleted file mode 100644 index 81bc85396d4f4..0000000000000 --- a/apps/site/pages/ja/download/package-manager/current.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: download -title: Node.js®をダウンロードする -subtitle: 好きな方法でNode.jsをダウンロードできます。 ---- - -<section> -<Release.PlatformDropdown />を利用して<Release.OperatingSystemDropdown exclude={["AIX"]} />にNode.js <Release.VersionDropdown />をインストールする。 - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.jsは<Release.NpmLink />を同梱しています。 - -<Release.ChangelogLink>このバージョン</Release.ChangelogLink> -に関する変更点を確認する。 - -<Release.BlogPostLink>このバージョン</Release.BlogPostLink> -に関するブログ記事を確認する。 - -<Release.VerifyingBinariesLink> - 署名済みSHASUMSの検証方法 -</Release.VerifyingBinariesLink> -を確認する。 - -コミュニティーによってサポートされているその他の<LinkWithArrow href="/download/package-manager/all">パッケージマネージャー</LinkWithArrow>を確認する。 - -</section> diff --git a/apps/site/pages/ja/download/package-manager/index.mdx b/apps/site/pages/ja/download/package-manager/index.mdx deleted file mode 100644 index 9235e0c26895a..0000000000000 --- a/apps/site/pages/ja/download/package-manager/index.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: download -title: Node.js®をダウンロードする -subtitle: 好きな方法でNode.jsをダウンロードできます。 ---- - -<section> -<Release.PlatformDropdown />を利用して<Release.OperatingSystemDropdown exclude={["AIX"]} />用のNode.js <Release.VersionDropdown />をインストールする。 - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.jsは<Release.NpmLink />を同梱しています。 - -<Release.ChangelogLink>このバージョン</Release.ChangelogLink> -に関する変更点を確認する。 - -<Release.BlogPostLink>このバージョン</Release.BlogPostLink> -に関するブログ記事を確認する。 - -<Release.VerifyingBinariesLink> - 署名済みSHASUMSの検証方法 -</Release.VerifyingBinariesLink> -を確認する。 - -コミュニティーによってサポートされているその他の<LinkWithArrow href="/download/package-manager/all">パッケージマネージャー</LinkWithArrow>を確認する。 - -</section> diff --git a/apps/site/pages/ja/download/prebuilt-binaries/current.mdx b/apps/site/pages/ja/download/prebuilt-binaries/current.mdx deleted file mode 100644 index 5219eba628248..0000000000000 --- a/apps/site/pages/ja/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: download -title: Node.js®をダウンロードする -subtitle: 好きな方法でNode.jsをダウンロードできます。 ---- - -<section> -<Release.BitnessDropdown />で動作している<Release.OperatingSystemDropdown />用のNode.js<Release.VersionDropdown />をダウンロードする。 - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.jsは<Release.NpmLink />を同梱しています。 - -<Release.ChangelogLink>このバージョン</Release.ChangelogLink> -の変更点を確認する。 - -<Release.BlogPostLink>このバージョン</Release.BlogPostLink> -に関するブログ記事を確認する。 - -<Release.VerifyingBinariesLink> - 署名済みSHASUMSの検証方法 -</Release.VerifyingBinariesLink> -を確認する。 - -<LinkWithArrow href="https://nodejs.org/download/nightly/">ナイトリービルド</LinkWithArrow>や他のプラットフォーム用の<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非公式のビルド</LinkWithArrow>があります。 -</section> diff --git a/apps/site/pages/ja/download/prebuilt-binaries/index.mdx b/apps/site/pages/ja/download/prebuilt-binaries/index.mdx deleted file mode 100644 index c5dd9fc686009..0000000000000 --- a/apps/site/pages/ja/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: download -title: Node.js®をダウンロードする -subtitle: 好きな方法でNode.jsをダウンロードできます。 ---- - -<section> -<Release.BitnessDropdown />で動作している<Release.OperatingSystemDropdown />用のNode.js<Release.VersionDropdown />をダウンロードする。 - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.jsは<Release.NpmLink />を同梱しています。 - -このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 - -このバージョンに関する<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>も合わせて確認してください。 - -署名済みSHASUMSの<Release.VerifyingBinariesLink>検証方法</Release.VerifyingBinariesLink>を確認してください。 - -<LinkWithArrow href="https://nodejs.org/download/nightly/">ナイトリー版</LinkWithArrow>や<LinkWithArrow href="https://nodejs.org/download/release/">リリース版</LinkWithArrow>のビルド済みバイナリ、その他のプラットフォーム用の<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非公式版</LinkWithArrow>のビルドもあります。 -</section> diff --git a/apps/site/pages/ja/download/prebuilt-installer/current.mdx b/apps/site/pages/ja/download/prebuilt-installer/current.mdx deleted file mode 100644 index 800de822c8fb2..0000000000000 --- a/apps/site/pages/ja/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: download -title: Node.js®をダウンロードする -subtitle: 好きな方法でNode.jsをダウンロードできます。 ---- - -<section> -<Release.BitnessDropdown />で動作している<Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />用のNode.js <Release.VersionDropdown />をダウンロードする。 - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.jsは<Release.NpmLink />を同梱しています。 - -<Release.ChangelogLink>このバージョン</Release.ChangelogLink> -の変更点を確認する。 - -<Release.BlogPostLink>このバージョン</Release.BlogPostLink> -に関するブログ記事を確認する。 - -<Release.VerifyingBinariesLink> - 署名済みSHASUMSの検証方法 -</Release.VerifyingBinariesLink> -を確認する。 - -すべての<LinkWithArrow href="https://nodejs.org/dist/">ダウンロードオプション</LinkWithArrow>を確認する。 - -<LinkWithArrow href="about/previous-releases">Node.jsのリリース</LinkWithArrow>について学ぶ -</section> diff --git a/apps/site/pages/ja/download/prebuilt-installer/index.mdx b/apps/site/pages/ja/download/prebuilt-installer/index.mdx deleted file mode 100644 index 800de822c8fb2..0000000000000 --- a/apps/site/pages/ja/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: download -title: Node.js®をダウンロードする -subtitle: 好きな方法でNode.jsをダウンロードできます。 ---- - -<section> -<Release.BitnessDropdown />で動作している<Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />用のNode.js <Release.VersionDropdown />をダウンロードする。 - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.jsは<Release.NpmLink />を同梱しています。 - -<Release.ChangelogLink>このバージョン</Release.ChangelogLink> -の変更点を確認する。 - -<Release.BlogPostLink>このバージョン</Release.BlogPostLink> -に関するブログ記事を確認する。 - -<Release.VerifyingBinariesLink> - 署名済みSHASUMSの検証方法 -</Release.VerifyingBinariesLink> -を確認する。 - -すべての<LinkWithArrow href="https://nodejs.org/dist/">ダウンロードオプション</LinkWithArrow>を確認する。 - -<LinkWithArrow href="about/previous-releases">Node.jsのリリース</LinkWithArrow>について学ぶ -</section> diff --git a/apps/site/pages/ja/download/source-code/current.mdx b/apps/site/pages/ja/download/source-code/current.mdx deleted file mode 100644 index 2d5e3c07bd222..0000000000000 --- a/apps/site/pages/ja/download/source-code/current.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: download -title: Node.js®をダウンロードする -subtitle: 好きな方法でNode.jsをダウンロードできます。 ---- - -<section> -Node.js <Release.VersionDropdown />のソースコードをダウンロードする。 - -<Release.SourceButton /> -</section> - -<section> -Node.jsは<Release.NpmLink />を同梱しています。 - -<Release.ChangelogLink>このバージョン</Release.ChangelogLink> -の変更点を確認する。 - -<Release.BlogPostLink>このバージョン</Release.BlogPostLink> -に関するブログ記事を確認する。 - -<Release.VerifyingBinariesLink> - 署名済みSHASUMSの検証方法 -</Release.VerifyingBinariesLink> -を確認する。 - -ソースコードから<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.jsをビルドする方法</LinkWithArrow>を確認する。 - -</section> diff --git a/apps/site/pages/ja/download/source-code/index.mdx b/apps/site/pages/ja/download/source-code/index.mdx deleted file mode 100644 index 2d5e3c07bd222..0000000000000 --- a/apps/site/pages/ja/download/source-code/index.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: download -title: Node.js®をダウンロードする -subtitle: 好きな方法でNode.jsをダウンロードできます。 ---- - -<section> -Node.js <Release.VersionDropdown />のソースコードをダウンロードする。 - -<Release.SourceButton /> -</section> - -<section> -Node.jsは<Release.NpmLink />を同梱しています。 - -<Release.ChangelogLink>このバージョン</Release.ChangelogLink> -の変更点を確認する。 - -<Release.BlogPostLink>このバージョン</Release.BlogPostLink> -に関するブログ記事を確認する。 - -<Release.VerifyingBinariesLink> - 署名済みSHASUMSの検証方法 -</Release.VerifyingBinariesLink> -を確認する。 - -ソースコードから<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.jsをビルドする方法</LinkWithArrow>を確認する。 - -</section> diff --git a/apps/site/pages/ko/download/package-manager/all.md b/apps/site/pages/ko/download/package-manager/all.md deleted file mode 100644 index 4f04273c4f5b0..0000000000000 --- a/apps/site/pages/ko/download/package-manager/all.md +++ /dev/null @@ -1,390 +0,0 @@ ---- -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:<stream> -``` - -여기서 `<stream>`은 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<major version> - -# 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 deleted file mode 100644 index 0f279d8b4cecf..0000000000000 --- a/apps/site/pages/ko/download/package-manager/current.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: download -title: Node.js® 다운로드 -subtitle: 원하는 방식으로 Node.js를 다운로드하세요. ---- - -<section> -<Release.PlatformDropdown />를 사용하여 <Release.OperatingSystemDropdown exclude={["AIX"]} />에 Node.js <Release.VersionDropdown />를 설치하세요. - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js에는 <Release.NpmLink />가 포함되어 있습니다. - -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. - -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. - -<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 -확인하는 방법을 알아보세요. - -커뮤니티에서 지원하는 다른 <LinkWithArrow href="/download/package-manager/all">패키지 관리자</LinkWithArrow>도 확인하세요. - -</section> diff --git a/apps/site/pages/ko/download/package-manager/index.mdx b/apps/site/pages/ko/download/package-manager/index.mdx deleted file mode 100644 index 0f279d8b4cecf..0000000000000 --- a/apps/site/pages/ko/download/package-manager/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: download -title: Node.js® 다운로드 -subtitle: 원하는 방식으로 Node.js를 다운로드하세요. ---- - -<section> -<Release.PlatformDropdown />를 사용하여 <Release.OperatingSystemDropdown exclude={["AIX"]} />에 Node.js <Release.VersionDropdown />를 설치하세요. - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js에는 <Release.NpmLink />가 포함되어 있습니다. - -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. - -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. - -<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 -확인하는 방법을 알아보세요. - -커뮤니티에서 지원하는 다른 <LinkWithArrow href="/download/package-manager/all">패키지 관리자</LinkWithArrow>도 확인하세요. - -</section> diff --git a/apps/site/pages/ko/download/prebuilt-binaries/current.mdx b/apps/site/pages/ko/download/prebuilt-binaries/current.mdx deleted file mode 100644 index c537c8a3ad8a0..0000000000000 --- a/apps/site/pages/ko/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Node.js® 다운로드 -subtitle: 원하는 방식으로 Node.js를 다운로드하세요. ---- - -<section> -<Release.BitnessDropdown />에서 실행되는 <Release.OperatingSystemDropdown />용 Node.js의 <Release.VersionDropdown /> 버전을 원합니다. - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js에는 <Release.NpmLink />가 포함되어 있습니다. - -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. - -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. - -<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 -확인하는 방법을 배워보세요. - -<LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> 사전 빌드된 바이너리 또는 다른 플랫폼에 맞는 <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">비공식 빌드</LinkWithArrow>를 확인하세요. -</section> diff --git a/apps/site/pages/ko/download/prebuilt-binaries/index.mdx b/apps/site/pages/ko/download/prebuilt-binaries/index.mdx deleted file mode 100644 index b938501de8686..0000000000000 --- a/apps/site/pages/ko/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Node.js® 다운로드 -subtitle: 원하는 방식으로 Node.js를 다운로드하세요. ---- - -<section> -<Release.BitnessDropdown />에서 실행되는 <Release.OperatingSystemDropdown />용 Node.js의 <Release.VersionDropdown /> 버전을 원합니다. - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js에는 <Release.NpmLink />가 포함되어 있습니다. - -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. - -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. - -<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 -확인하는 방법을 배워보세요. - -<LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> 사전 빌드된 바이너리, 모든 <LinkWithArrow href="https://nodejs.org/download/release/">Release</LinkWithArrow> 사전 빌드된 바이너리, 또는 다른 플랫폼에 맞는 <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">비공식 빌드</LinkWithArrow>를 확인하세요. -</section> diff --git a/apps/site/pages/ko/download/prebuilt-installer/current.mdx b/apps/site/pages/ko/download/prebuilt-installer/current.mdx deleted file mode 100644 index 269e4bb2ad06e..0000000000000 --- a/apps/site/pages/ko/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Node.js® 다운로드 -subtitle: 원하는 방식으로 Node.js를 다운로드하세요. ---- - -<section> -<Release.BitnessDropdown />에서 실행되는 <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />용 Node.js의 <Release.VersionDropdown /> 버전을 원합니다. - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js에는 <Release.NpmLink />가 포함되어 있습니다. - -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. - -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. - -<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 -확인하는 방법을 배워보세요. - -모든 사용 가능한 Node.js <LinkWithArrow href="https://nodejs.org/dist/">다운로드 옵션</LinkWithArrow>을 확인하세요. - -<LinkWithArrow href="about/previous-releases">Node.js 릴리스</LinkWithArrow>를 알아보세요. -</section> diff --git a/apps/site/pages/ko/download/prebuilt-installer/index.mdx b/apps/site/pages/ko/download/prebuilt-installer/index.mdx deleted file mode 100644 index 40170f98fb381..0000000000000 --- a/apps/site/pages/ko/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Node.js® 다운로드 -subtitle: 원하는 방법으로 Node.js를 다운로드 하세요. ---- - -<section> -<Release.BitnessDropdown />에서 실행되는 <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />용 Node.js의 <Release.VersionDropdown /> 버전을 원합니다. - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js에는 <Release.NpmLink />가 포함되어 있습니다. - -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. - -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. - -<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>를 -확인하는 방법을 배워보세요. - -모든 사용 가능한 Node.js <LinkWithArrow href="https://nodejs.org/dist/">다운로드 옵션</LinkWithArrow>을 확인하세요. - -<LinkWithArrow href="about/previous-releases">Node.js 릴리스</LinkWithArrow>를 알아보세요. -</section> diff --git a/apps/site/pages/ko/download/source-code/current.mdx b/apps/site/pages/ko/download/source-code/current.mdx deleted file mode 100644 index 85b8cba1c0dce..0000000000000 --- a/apps/site/pages/ko/download/source-code/current.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: download -title: Node.js® 다운로드 -subtitle: 원하는 방식으로 Node.js를 다운로드하세요. ---- - -<section> -<Release.VersionDropdown /> 버전의 Node.js 소스 코드를 원합니다. - -<Release.SourceButton /> -</section> - -<section> -Node.js에는 <Release.NpmLink />가 포함되어 있습니다. - -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. - -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. - -<Release.VerifyingBinariesLink>서명된 SHASUMS</Release.VerifyingBinariesLink>을 -확인하는 방법을 알아보세요. - -Node.js를 <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">소스에서 빌드하는 방법</LinkWithArrow>을 확인하세요. - -</section> diff --git a/apps/site/pages/ko/download/source-code/index.mdx b/apps/site/pages/ko/download/source-code/index.mdx deleted file mode 100644 index 9917328435164..0000000000000 --- a/apps/site/pages/ko/download/source-code/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: download -title: Node.js® 다운로드 -subtitle: 원하는 방법으로 Node.js를 다운로드 하세요. ---- - -<section> -원하는 버전 <Release.VersionDropdown />의 Node.js 소스 코드 - -<Release.SourceButton /> -</section> - -<section> -Node.js에는 <Release.NpmLink />이 포함되어 있습니다. - -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 확인하세요. - -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. - -<Release.VerifyingBinariesLink>SHA 서명 확인</Release.VerifyingBinariesLink>라는 -방법을 배워보세요. - -코드에서 <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.js를 빌드하는 법</LinkWithArrow>을 확인해보세요. - -</section> diff --git a/apps/site/pages/pt/download/package-manager/all.md b/apps/site/pages/pt/download/package-manager/all.md deleted file mode 100644 index 2df1370f6a692..0000000000000 --- a/apps/site/pages/pt/download/package-manager/all.md +++ /dev/null @@ -1,387 +0,0 @@ ---- -layout: article -title: Instalação da Node.js através do Gestor de Pacote ---- - -# Instalação da Node.js através dos Gestores de Pacote - -> Os pacotes nesta página são mantidos e suportados por seus respetivos empacotadores, **não** pela equipa principal da Node.js. Precisamos reportar quaisquer problemas que encontrarmos ao responsável do pacote. Se o nosso problema for um erro de programação na própria Node.js, o responsável reportará o problema. - -## Linux Alpino - -Os pacotes da Node.js com suporte de longo prazo e npm estão disponíveis no repositório principal. - -```bash -apk add nodejs npm -``` - -A versão atual da Node.js pode ser instalada a partir do repositório da comunidade. - -```bash -apk add nodejs-current -``` - -## Android - -O suporte de Android ainda é experimental na Node.js, pelo que os binários pré-compilados ainda não são fornecidos pelos programadores da Node.js. - -No entanto, existem algumas soluções de terceiros. Por exemplo, a comunidade da [Termux](https://termux.com/) fornece um emulador de terminal e um ambiente de Linux para Android, bem como um gestor de pacote e uma [vasta coleção](https://github.com/termux/termux-packages) de muitas aplicações pré-compiladas. Este comando na aplicação Termux instalará a última versão disponível da Node.js: - -```bash -pkg install nodejs -``` - -Atualmente, os binários da Node.js da Termux estão ligados ao `system-icu` (dependendo do pacote `libicu`). - -## Linux Arch - -Os pacotes da Node.js e npm estão disponíveis no repositório da comunidade. - -```bash -pacman -S nodejs npm -``` - -## CentOS, Fedora e Red Hat Enterprise Linux - -A Node.js está disponível como um módulo chamado `nodejs` no CentOS/RHEL 8 e Fedora. - -```bash -dnf module install nodejs:<stream> -``` - -onde `<stream>` corresponde à versão principal da Node.js. Para ver uma lista de fluxos disponíveis: - -```bash -dnf module list nodejs -``` - -Por exemplo, para instalar a Node.js 18: - -```bash -dnf module install nodejs:18/common -``` - -### Alternativas - -Estes recursos fornecem pacotes compatíveis com CentOS, Fedora, e RHEL. - -- [Os snaps da Node.js](#snap) mantidos e suportados na https://github.com/nodejs/snap -- [Distribuições binárias da Node.js](#distribuicoes-de-linux-baseadas-em-debian-e-ubuntu) mantidas e suportadas pela [NodeSource](https://github.com/nodesource/distributions) - -## Distribuições de Linux baseadas em Debian e Ubuntu - -As [distribuições binárias da Node.js](https://github.com/nodesource/distributions) estão disponíveis a partir da NodeSource. - -### Alternativas - -Os pacotes compatíveis com as distribuições de Linux baseadas em Debian e Ubuntu estão disponíveis através dos [snaps da Node.js](#snap). - -## Exherbo Linux - -Os pacotes da Node.js e npm estão disponíveis no [repositório da arbor](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). - -```bash -cave resolve -x node -``` - -## fnm - -Rápido e simples gestor de versão da Node.js, construído em Rust, usado para gerir várias versões lançadas da Node.js. Permite-nos realizar operações como instalar, desinstalar, mudar automaticamente as versões da Node com base no diretório atual, etc. -Para instalar o `fnm`, usamos este [programa de instalação](https://github.com/Schniz/fnm#using-a-script-macoslinux). - -O `fnm` suporta várias plataformas (macOS, Windows, Linux) & todas as conchas populares (Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt). -O `fnm` foi construído com a velocidade em mente e suporte de compatibilidade para ficheiros `.node-version` e `.nvmrc`. - -## FreeBSD - -O lançamento mais recente da Node.js está disponível através da porta [www/node](https://www.freshports.org/www/node). - -Instalamos um pacote binário através do [pkg](https://www.freebsd.org/cgi/man.cgi?pkg): - -```bash -pkg install node -``` - -Ou o compilamos nós mesmos usando as [portas](https://www.freebsd.org/cgi/man.cgi?ports): - -```bash -cd /usr/ports/www/node && make install -``` - -## Gentoo - -A Node.js está disponível na árvore de transporte. - -```bash -emerge nodejs -``` - -## IBM i - -As versões de suporte de longo prazo da Node.js estão disponíveis a partir da IBM, e estão disponíveis através do [gestor de pacote `yum`](https://ibm.biz/ibmi-rpms). O nome do pacote é `nodejs` seguido pelo número da versão principal (por exemplo, `nodejs18`, `nodejs20`, etc). - -Para instalar a Node.js 20.x a partir da linha de comando, executamos o seguinte como um utilizador com autorização especial \*ALLOBJ: - -```bash -yum install nodejs20 -``` - -A Node.js também pode ser instalada com o produto de soluções de cliente de acesso IBM i. Consultar [este documento de suporte](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) por mais detalhes. - -## macOS - -Descarregamos o [instalador do macOS](/#home-downloadhead) diretamente a partir do sítio da Web [nodejs.org](https://nodejs.org/). - -_Se quisermos descarregar o pacote com o 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 - -Com o uso do **[Homebrew](https://brew.sh/)**: - -```bash -brew install node -``` - -Com o uso do **[MacPorts](https://www.macports.org/)**: - -```bash -port install nodejs<major version> - -# Example -port install nodejs7 -``` - -Com o uso do **[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)**: - -Instalar o pacote binário: - -```bash -pkgin -y install nodejs -``` - -Ou construir manualmente a partir do `pkgsrc`: - -```bash -cd pkgsrc/lang/nodejs && bmake install -``` - -## n - -`n` é um gestor de versão da Node.js simples de usar para Mac e Linux. Especificamos a versão de destino a instalar usando uma sintaxe rica, ou selecionamos a partir de um menu de versões previamente descarregadas. As versões são instaladas em todo o sistema ou em todo o utilizador, e para um uso mais específico, podemos executar uma versão diretamente a partir das transferências provisionadas. - -Consultar a [página principal](https://github.com/tj/n) por métodos de instalação (inicialização, npm, Homebrew, terceiros) e todos os detalhes de uso. - -Se já tivermos o `npm`, então instalar o `n` e depois a versão mais recente da `node` com suporte de longo prazo é tão simples quanto: - -``` -npm install -g n -n lts -``` - -## NetBSD - -A Node.js está disponível na árvore do `pkgsrc`: - -```bash -cd /usr/pkgsrc/lang/nodejs && make install -``` - -Ou instalamos um pacote binário (se estiver disponível para nossa plataforma) usando `pkgin`: - -```bash -pkgin -y install nodejs -``` - -## Nodenv - -`nodeenv` é um gestor de versão de Node leve, semelhante ao `nvm`. É simples e previsível. Um rico ecossistema de extensão permite-nos adaptá-lo às nossas necessidades. Usamos `nodenv` para escolher uma versão de Node para a nossa aplicação e garantir que o nosso ambiente de desenvolvimento seja igual ao de produção. - -As instruções de instalação da Nodeenv são mantidos [na sua página da GitHub](https://github.com/nodenv/nodenv#installation). Precisamos visitar esta página para assegurar que seguimos versão mais recente dos passos de instalação. - -## nvm - -O gestor de versão da Node é um programa de bash usado para gerir várias versões lançadas da Node.js. Permite-nos realizar operações como instalar, desinstalar, alternar versão, etc. Para instalar a `nvm`, usamos este [programa de instalação](https://github.com/nvm-sh/nvm#install--update-script). - -Nos sistemas Unix ou OS X, a Node.js construída a partir do código-fonte pode ser instalada usando [nvm](https://github.com/creationix/nvm) ao instalar numa localização esperada pelo `nvm`: - -```bash -env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" -``` - -Depois disto, podemos usar o `nvm` para alternar entre versões lançadas e versões construídas a partir do código-fonte. Por exemplo, se a versão da Node.js for v8.0.0-pre: - -```bash -nvm use 8 -``` - -Quando a versão oficial for lançada, desejaremos desinstalar a versão construída a partir do código-fonte: - -```bash -nvm uninstall 8 -``` - -## nvs - -#### Windows - -O gestor de versão `nvs` suporta várias plataformas e pode ser usado no Windows, macOS, e sistemas parecidos com Unix. - -Para instalar `nvs` no Windows seguimos para [página de lançamento](https://github.com/jasongin/nvs/releases) e descarregamos o ficheiro instalador MSI do lançamento mais recente. - -Nós também podemos usar `chocolatey` para instalá-lo: - -```bash -choco install nvs -``` - -#### macOS,UnixLike - -Podemos encontrar documentação sobre os passos de instalação do `nvs` nos sistemas macOS ou parecidos com Unix [nesta hiperligação](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux). - -#### Uso - -Depois disto podemos usar `nvs` para alternar entre diferentes versões da Node. - -Para adicionar a versão mais recente da Node: - -```bash -nvs add latest -``` - -Ou adicionar a versão mais recente com suporte de longo prazo da Node: - -```bash -nvs add lts -``` - -Depois executamos o comando `nvs use` para adicionar uma versão de Node ao `PATH` para concha atual: - -```bash -$ nvs use lts -PATH -= %LOCALAPPDATA%\nvs\default -PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 -``` - -Para adicioná-lo ao `PATH` permanentemente, usamos `nvs link`: - -```bash -nvs link lts -``` - -## OpenBSD - -A Node.js está disponível através do sistema de portas. - -```bash -/usr/ports/lang/node -``` - -Com o uso do [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) no OpenBSD: - -```bash -pkg_add node -``` - -## openSUSE e SLE - -A Node.js está disponível nos repositórios principais sob os seguintes pacotes: - -- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` -- **openSUSE Tumbleweed**: `nodejs20` -- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, e `nodejs14` (O "Web and Scripting Module" deve estar [ativado](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) -- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, e `nodejs14` (O "Web and Scripting Module" deve estar [ativado](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) - -Por exemplo, para instalar a Node.js 14.x no openSUSE Leap 15.2, executamos o seguinte como administrador (root ou raiz): - -```bash -zypper install nodejs14 -``` - -Diferentes versões principais da Node podem ser instaladas e usadas simultaneamente. - -## SmartOS e illumos - -As imagens do SmartOS vêm com `pkgsrc` pré-instalado. Em outras distribuições de illumos, primeiro instalamos **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, depois podemos instalar o pacote binário conforme o habitual: - -```bash -pkgin -y install nodejs -``` - -Ou compilar manualmente a partir do `pkgsrc`: - -```bash -cd pkgsrc/lang/nodejs && bmake install -``` - -## Snap - -Os [snaps da Node.js](https://github.com/nodejs/snap) estão disponíveis como [`node`](https://snapcraft.io/node) na loja da Snap. - -## Solus - -O Solus fornece a Node.js no seu repositório principal. - -```bash -sudo eopkg install nodejs -``` - -## vfox - -Um gestor de versão que suporta várias plataformas (Windows, macOS, Linux) e **extensível**. - -Permite-nos **diferenciar versões para diferentes projetos**, **diferenciar versões para diferentes conchas**, e alternar versões da Node automaticamente com base no diretório atual, etc. - -Suporta todas as conchas populares (Bash, Zsh, Fish, PowerShell, Clink, Cmder). - -Consultar a [Introdução Rápida](https://vfox.lhan.me/guides/quick-start.html) para rapidamente usar o `vfox`, e todos os detalhes de uso. - -## Void Linux - -O Void Linux entrega a Node.js estável no repositório principal. - -```bash -xbps-install -Sy nodejs -``` - -## Windows - -Descarregamos o [instalador da Node.js](/#home-downloadhead) diretamente a partir do sítio da Web [nodejs.org](https://nodejs.org/). - -### Alternativas - -Com o uso do **[Winget](https://aka.ms/winget-cli)**: - -```bash -winget install OpenJS.NodeJS -# or for LTS -winget install OpenJS.NodeJS.LTS -``` - -Após executarmos um dos dois comandos acima, pode ser necessário reiniciar o emulador de terminal antes do comando `node` da interface da linha de comando torne-se disponível. - -Com o uso do **[Chocolatey](https://chocolatey.org/)**: - -```bash -cinst nodejs -# or for full install with npm -cinst nodejs.install -``` - -Com o uso do **[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á disponível em dois formatos de instalação, SMP/E e PAX. Selecionamos o formato de instalação que se aplica a nós: - -- [Instalar e configurar a edição SMP/E da Node.js no z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) -- [Instalar e configurar a edição PAX da Node.js no z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/pt/download/package-manager/current.mdx b/apps/site/pages/pt/download/package-manager/current.mdx deleted file mode 100644 index 5da09b77522cc..0000000000000 --- a/apps/site/pages/pt/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descarregar a Node.js® -subtitle: Podemos descarregar a Node.js como quisermos. ---- - -<section> -Instalar a Node.js <Release.VersionDropdown /> no <Release.OperatingSystemDropdown exclude={["AIX"]} /> usando o <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -A Node.js inclui o <Release.NpmLink />. - -Ler o registo de alterações <Release.ChangelogLink>desta versão</Release.ChangelogLink> - -Ler a publicação do blogue <Release.BlogPostLink>desta versão</Release.BlogPostLink> - -Saber como <Release.VerifyingBinariesLink>verificar o SHASUMS assinado</Release.VerifyingBinariesLink> - -Consultar outros <LinkWithArrow href="/download/package-manager/all">gestores de pacote</LinkWithArrow> suportados da comunidade - -</section> diff --git a/apps/site/pages/pt/download/package-manager/index.mdx b/apps/site/pages/pt/download/package-manager/index.mdx deleted file mode 100644 index 6772ace86659f..0000000000000 --- a/apps/site/pages/pt/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descarregar a Node.js® -subtitle: Podemos descarregar a Node.js como quisermos. ---- - -<section> -Instalar a Node.js<Release.VersionDropdown /> no <Release.OperatingSystemDropdown exclude={["AIX"]} /> usando o <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -A Node.js inclui o <Release.NpmLink />. - -Ler o registo de alterações <Release.ChangelogLink>desta versão</Release.ChangelogLink> - -Ler a publicação do blogue <Release.BlogPostLink>desta versão</Release.BlogPostLink> - -Saber como <Release.VerifyingBinariesLink>verificar o SHASUMS assinado</Release.VerifyingBinariesLink> - -Consultar outros <LinkWithArrow href="/download/package-manager/all">gestores de pacote</LinkWithArrow> suportados da comunidade - -</section> diff --git a/apps/site/pages/pt/download/prebuilt-binaries/current.mdx b/apps/site/pages/pt/download/prebuilt-binaries/current.mdx deleted file mode 100644 index 7d8805c02a7c2..0000000000000 --- a/apps/site/pages/pt/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descarregar a Node.js® -subtitle: Podemos descarregar a Node.js como quisermos. ---- - -<section> -Quero a versão <Release.VersionDropdown /> da Node.js para <Release.OperatingSystemDropdown /> executando sobre <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -A Node.js inclui o <Release.NpmLink />. - -Ler o registo de alterações <Release.ChangelogLink>desta versão</Release.ChangelogLink> - -Ler a publicação do blogue <Release.BlogPostLink>desta versão</Release.BlogPostLink> - -Saber como <Release.VerifyingBinariesLink>verificar o SHASUMS assinado</Release.VerifyingBinariesLink> - -Consultar os binários pré-compilados <LinkWithArrow href="https://nodejs.org/download/nightly/"> Noturnos </LinkWithArrow> ou <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/"> Compilações Não Oficiais </LinkWithArrow> para outras plataformas - -</section> diff --git a/apps/site/pages/pt/download/prebuilt-binaries/index.mdx b/apps/site/pages/pt/download/prebuilt-binaries/index.mdx deleted file mode 100644 index 7d8805c02a7c2..0000000000000 --- a/apps/site/pages/pt/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descarregar a Node.js® -subtitle: Podemos descarregar a Node.js como quisermos. ---- - -<section> -Quero a versão <Release.VersionDropdown /> da Node.js para <Release.OperatingSystemDropdown /> executando sobre <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -A Node.js inclui o <Release.NpmLink />. - -Ler o registo de alterações <Release.ChangelogLink>desta versão</Release.ChangelogLink> - -Ler a publicação do blogue <Release.BlogPostLink>desta versão</Release.BlogPostLink> - -Saber como <Release.VerifyingBinariesLink>verificar o SHASUMS assinado</Release.VerifyingBinariesLink> - -Consultar os binários pré-compilados <LinkWithArrow href="https://nodejs.org/download/nightly/"> Noturnos </LinkWithArrow> ou <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/"> Compilações Não Oficiais </LinkWithArrow> para outras plataformas - -</section> diff --git a/apps/site/pages/pt/download/prebuilt-installer/current.mdx b/apps/site/pages/pt/download/prebuilt-installer/current.mdx deleted file mode 100644 index 4f5ddee39b502..0000000000000 --- a/apps/site/pages/pt/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Descarregar a Node.js® -subtitle: Podemos descarregar a Node.js como quisermos. ---- - -<section> -Quero a versão <Release.VersionDropdown /> da Node.js para <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> executando sobre <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -A Node.js inclui o <Release.NpmLink />. - -Ler o registo de alterações <Release.ChangelogLink>desta versão</Release.ChangelogLink> - -Ler a publicação do blogue <Release.BlogPostLink>desta versão</Release.BlogPostLink> - -Saber como <Release.VerifyingBinariesLink>verificar o SHASUMS assinado</Release.VerifyingBinariesLink> - -Consultar todas as <LinkWithArrow href="https://nodejs.org/dist/"> opções de descarga disponíveis </LinkWithArrow> da Node.js - -Saber mais sobre os <LinkWithArrow href="about/previous-releases"> Lançamentos da Node.js </LinkWithArrow> - -</section> diff --git a/apps/site/pages/pt/download/prebuilt-installer/index.mdx b/apps/site/pages/pt/download/prebuilt-installer/index.mdx deleted file mode 100644 index ce5d362e13d0a..0000000000000 --- a/apps/site/pages/pt/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Descarregar a Node.js® -subtitle: Podemos descarregar a Node.js como quisermos. ---- - -<section> -Quero a versão <Release.VersionDropdown /> da Node.js para <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> executando sobre <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -A Node.js inclui o <Release.NpmLink />. - -Ler o registo de alterações <Release.ChangelogLink>desta versão</Release.ChangelogLink> - -Ler a publicação do blogue <Release.BlogPostLink>desta versão</Release.BlogPostLink> - -Saber como <Release.VerifyingBinariesLink>verificar o SHASUMS assinado</Release.VerifyingBinariesLink> - -Consultar todas as<LinkWithArrow href="https://nodejs.org/dist/"> opções de descarga disponíveis</LinkWithArrow> da Node.js - -Saber mais sobre os <LinkWithArrow href="/about/previous-releases"> Lançamentos da Node.js </LinkWithArrow> - -</section> diff --git a/apps/site/pages/pt/download/source-code/current.mdx b/apps/site/pages/pt/download/source-code/current.mdx deleted file mode 100644 index c65b0284f74c1..0000000000000 --- a/apps/site/pages/pt/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descarregar a Node.js® -subtitle: Podemos descarregar a Node.js como quisermos. ---- - -<section> -Quero o código-fonte da versão <Release.VersionDropdown /> da Node.js. - -<Release.SourceButton /> -</section> - -<section> -A Node.js inclui o <Release.NpmLink />. - -Ler o registo de alterações <Release.ChangelogLink>desta versão</Release.ChangelogLink> - -Ler a publicação do blogue <Release.BlogPostLink>desta versão</Release.BlogPostLink> - -Saber como <Release.VerifyingBinariesLink>verificar o SHASUMS assinado</Release.VerifyingBinariesLink> - -Consultar como <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms"> compilar a Node.js </LinkWithArrow> a partir do código-fonte. - -</section> diff --git a/apps/site/pages/pt/download/source-code/index.mdx b/apps/site/pages/pt/download/source-code/index.mdx deleted file mode 100644 index c65b0284f74c1..0000000000000 --- a/apps/site/pages/pt/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Descarregar a Node.js® -subtitle: Podemos descarregar a Node.js como quisermos. ---- - -<section> -Quero o código-fonte da versão <Release.VersionDropdown /> da Node.js. - -<Release.SourceButton /> -</section> - -<section> -A Node.js inclui o <Release.NpmLink />. - -Ler o registo de alterações <Release.ChangelogLink>desta versão</Release.ChangelogLink> - -Ler a publicação do blogue <Release.BlogPostLink>desta versão</Release.BlogPostLink> - -Saber como <Release.VerifyingBinariesLink>verificar o SHASUMS assinado</Release.VerifyingBinariesLink> - -Consultar como <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms"> compilar a Node.js </LinkWithArrow> a partir do código-fonte. - -</section> diff --git a/apps/site/pages/tr/download/package-manager/all.md b/apps/site/pages/tr/download/package-manager/all.md deleted file mode 100644 index fd38a3884c4a2..0000000000000 --- a/apps/site/pages/tr/download/package-manager/all.md +++ /dev/null @@ -1,398 +0,0 @@ ---- -layout: article -title: Node.js'i paket yöneticisi aracılığıyla yüklemek ---- - -# Paket Yöneticileri Aracılığıyla Node.js Kurulumu - -> Bu sayfadaki paketler, ilgili paketleyiciler tarafından sürdürülür ve desteklenir, Node.js çekirdek ekibi tarafından **değil**. Karşılaştığınız herhangi bir sorunu paketin bakımını üstlenen kişiye bildirin. Sorununuzun Node.js'in kendisinde bir hata olduğu ortaya çıkarsa, bakımı üstlenen kişi bu sorunu yukarıya raporlayacaktır. - -## Alpine Linux - -Node.js LTS ve npm paketleri Ana Depo'da bulunmaktadır. - -```bash -apk add nodejs npm -``` - -Node.js Current, Topluluk Deposu'ndan kurulabilir. - -```bash -apk add nodejs-current -``` - -## Android - -Android desteği Node.js'de hala deneyseldir, bu nedenle önceden derlenmiş ikili (binary) dosyalar henüz Node.js geliştiricileri tarafından sağlanmamaktadır. - -Ancak, bazı üçüncü parti çözümler de mevcuttur. Örneğin, [Termux](https://termux.com/) topluluğu, Android için terminal emülatörü ve Linux ortamının yanı sıra kendi paket yöneticisini ve önceden derlenmiş birçok uygulamanın [kapsamlı koleksiyonunu](https://github.com/termux/termux-packages) sağlar. Termux uygulamasındaki bu komut mevcut son Node.js sürümünü yükleyecektir: - -```bash -pkg install nodejs -``` - -Şu anda, Termux Node.js ikili dosyaları system-icu'ya (`libicu` paketine bağlı olarak) bağlanmıştır. - -## Arch Linux - -Node.js ve npm paketleri Topluluk Deposu'nda bulunmaktadır. - -```bash -pacman -S nodejs npm -``` - -## CentOS, Fedora ve Red Hat Enterprise Linux - -CentOS/RHEL 8 ve Fedora'da, Node.js `nodejs` adında bir modül olarak mevcuttur. - -```bash -dnf module install nodejs:<stream> -``` - -`<stream>` düğümü, Node.js'in ana sürümüne karşılık gelir. -Kullanılabilir akışların listesini görmek için: - -```bash -dnf module list nodejs -``` - -Örneğin, Node.js 18'i yüklemek için: - -```bash -dnf module install nodejs:18/common -``` - -### Alternatifler - -Bu kaynaklar CentOS, Fedora ve RHEL ile uyumlu paketler sağlamaktadır. - -- [Node.js snapleri](#snap) https://github.com/nodejs/snap adresinde tutulmakta ve desteklenmektedir -- [Node.js ikili dağıtımları](#debian-and-ubuntu-based-linux-distributions) [NodeSource](https://github.com/nodesource/distributions) tarafından sürdürülür ve desteklenir - -## Debian ve Ubuntu tabanlı Linux dağıtımları - -[Node.js ikili dağıtımları](https://github.com/nodesource/distributions) NodeSource'tan temin edilebilir. - -### Alternatifler - -Debian ve Ubuntu tabanlı Linux dağıtımları ile uyumlu paketler [Node.js snapleri](#snap) üzerinden temin edilebilir. - -## Exherbo Linux - -Node.js ve npm paketleri [arbor deposunda](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node) mevcuttur. - -```bash -cave resolve -x node -``` - -## fnm - -Rust'ta yerleşik hızlı ve basit Node.js sürüm yöneticisi, birden fazla yayınlanan Node.js sürümünü yönetmek için kullanılır. Yükleme, kaldırma, geçerli dizine göre Node sürümlerini otomatik olarak değiştirme vb. işlemleri gerçekleştirmenize olanak tanır. -Fnm'yi yüklemek için bu [install script](https://github.com/Schniz/fnm#using-a-script-macoslinux) kullanın. - -fnm, macOS, Windows, Linux gibi çapraz platform desteği sunar ve tüm yaygın kabuklar (Bash, Zsh, Fish, PowerShell, Windows Komut İstemi) ile uyumludur. fnm, hızlı bir şekilde oluşturulmuştur ve.node-version ve.nvmrc dosyaları için uyumluluk desteği sunar. - -## FreeBSD - -Node.js'nin en güncel sürümü [www/node](https://www.freshports.org/www/node) bağlantısı üzerinden erişilebilir. - -[pkg](https://www.freebsd.org/cgi/man.cgi?pkg) aracılığıyla ikili bir paket yükleyin: - -```bash -pkg install node -``` - -Ya da [ports](https://www.freebsd.org/cgi/man.cgi?ports) kullanarak kendi başınıza derleyin: - -```bash -cd /usr/ports/www/node && make install -``` - -## Gentoo - -Node.js portage ağacında mevcuttur. - -```bash -emerge nodejs -``` - -## IBM i - -Node.js'nin LTS sürümleri IBM'den temin edilebilir ve [yum paket yöneticisi](https://ibm.biz/ibmi-rpms) aracılığıyla kullanılabilir. Paket adı `nodejs` ve ardından ana sürüm numarasıdır (örneğin, `nodejs18`, `nodejs20` vb.) - -Node.js 20.x'i komut satırından yüklemek için, \*ALLOBJ özel yetkisine sahip bir kullanıcı olarak aşağıdakileri çalıştırın: - -```bash -yum install nodejs20 -``` - -Node.js, IBM i Access Client Solutions ürünü ile de kurulabilir. Daha fazla ayrıntı için [bu destek belgesine](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) bakın - -## macOS - -MacOS Installer](/#home-downloadhead) doğrudan [nodejs.org](https://nodejs.org/) web sitesinden indirin. - -_Eğer paketi bash ile indirmek istiyorsanız:_ - -```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 "/" -``` - -### Alternatifler - -[Homebrew](https://brew.sh/)\*\* kullanarak: - -```bash -brew install node -``` - -[MacPorts](https://www.macports.org/)\*\* kullanarak: - -```bash -port install nodejs<major version> - -# Example -port install nodejs7 -``` - -**[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)** kullanılıyor: - -binary paketi yükleyin: - -```bash -pkgin -y install nodejs -``` - -Veya pkgsrc'den manuel olarak derleyin: - -```bash -cd pkgsrc/lang/nodejs && bmake install -``` - -## n - -n\`, Mac ve Linux için kullanımı kolay bir Node.js sürüm yöneticisidir. Zengin bir sözdizimi kullanarak yüklemek için hedef sürümü belirtin, -veya önceden indirilmiş sürümlerden oluşan bir menüden seçim yapabilirsiniz. Sürümler sistem genelinde veya kullanıcı genelinde yüklenir ve daha fazlası için -Hedeflenen kullanım için bir sürümü doğrudan önbelleğe alınmış indirmelerden çalıştırabilirsiniz. - -Yükleme yöntemleri (bootstrap, npm, Homebrew, üçüncü taraf) ve tüm kullanım ayrıntıları için [homepage](https://github.com/tj/n) adresine bakın. - -Eğer zaten `npm` kullanıyorsanız, `n` ve ardından en yeni LTS `node` sürümünü yüklemek kadar basittir: - -``` -npm install -g n -n lts -``` - -## NetBSD - -Node.js pkgsrc ağacında mevcuttur: - -```bash -cd /usr/pkgsrc/lang/nodejs && make install -``` - -Veya pkgin kullanarak binary paket (platformunuz için mevcutsa) yükleyin: - -```bash -pkgin -y install nodejs -``` - -## Nodenv - -nodenv`, `nvm`ye benzer hafif bir node sürüm yöneticisidir. Basit ve öngörülebilirdir. Zengin bir eklenti ekosistemi, onu ihtiyaçlarınıza göre uyarlamanızı sağlar. Uygulamanız için bir Node sürümü seçmek ve geliştirme ortamınızın üretimle eşleşmesini garanti etmek için `nodenv\` kullanın. - -Nodenv kurulum talimatları [Github sayfasında](https://github.com/nodenv/nodenv#installation) tutulmaktadır. Kurulum adımlarının en son sürümünü takip ettiğinizden emin olmak için lütfen bu sayfayı ziyaret edin. - -## nvm - -Node Version Manager, birden fazla yayınlanmış Node.js sürümünü yönetmek için kullanılan bir bash betiğidir. İzin verir -yükleme, kaldırma, sürüm değiştirme vb. işlemleri gerçekleştirebilirsiniz. -Nvm yüklemek için bu [install script](https://github.com/nvm-sh/nvm#install--update-script) kullanın. - -Unix / OS X sistemlerinde kaynaktan oluşturulan Node.js şu şekilde kurulabilir -nvm'nin beklediği konuma yükleyerek [nvm](https://github.com/creationix/nvm): - -```bash -env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" -``` - -Bundan sonra, yayınlanan sürümler ve sürümler arasında geçiş yapmak için `nvm` kullanabilirsiniz -kaynaktan oluşturulmuştur. -Örneğin, Node.js sürümü v8.0.0-pre ise: - -```bash -nvm use 8 -``` - -Resmi sürüm çıktığında, oluşturulmuş sürümü kaldırmak isteyeceksiniz -Kaynaktan: - -```bash -nvm uninstall 8 -``` - -## nvs - -#### Windows - -`nvs` sürüm yöneticisi çapraz platformdur ve Windows, macOS ve Unix benzeri sistemlerde kullanılabilir - -Windows'a `nvs` yüklemek için buradan [sürüm sayfasına](https://github.com/jasongin/nvs/releases) gidin ve en son sürümün MSI yükleyici dosyasını indirin. - -Yüklemek için `chocolatey` de kullanabilirsiniz: - -```bash -choco install nvs -``` - -#### macos, Unix benzeri - -MacOS/Unix benzeri sistemlerde `nvs` kurulum adımlarına ilişkin belgelere [buradan](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) ulaşabilirsiniz - -#### Kullanım - -Bundan sonra farklı node sürümleri arasında geçiş yapmak için `nvs` kullanabilirsiniz. - -Node'un en son sürümünü eklemek için: - -```bash -nvs add latest -``` - -Veya node'un en son LTS sürümünü eklemek için: - -```bash -nvs add lts -``` - -Ardından, geçerli kabuk için `PATH`inize bir node sürümü eklemek için `nvs use` komutunu çalıştırın: - -```bash -$ nvs use lts -PATH -= %LOCALAPPDATA%\nvs\default -PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 -``` - -Then run the `nvs use` command to add a version of node to your `PATH` for the current shell: - -```bash -nvs link lts -``` - -## OpenBSD - -Node.js port sistemi aracılığıyla kullanılabilir. - -```bash -/usr/ports/lang/node -``` - -OpenBSD üzerinde [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) kullanımı: - -```bash -pkg_add node -``` - -## openSUSE ve SLE - -Node.js ana depolarda aşağıdaki paketler altında mevcuttur: - -- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` -- **openSUSE Tumbleweed**: `nodejs20` -- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12` ve `nodejs14` - ("Web ve Komut Dosyası Modülü" [etkin](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated) olmalıdır.) -- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12` ve `nodejs14` - ("Web ve Komut Dosyası Modülü" [etkin](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module) olmalıdır.) - -Örneğin, openSUSE Leap 15.2 üzerinde Node.js 14.x yüklemek için aşağıdakileri root olarak çalıştırın: - -```bash -zypper install nodejs14 -``` - -Node'un farklı ana sürümleri aynı anda kurulabilir ve kullanılabilir. - -## SmartOS ve illumos - -SmartOS imajları pkgsrc önceden yüklenmiş olarak gelir. Diğer illumos dağıtımlarında, önce **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)** yükleyin, ardından ikili paketi normal şekilde yükleyebilirsiniz: - -```bash -pkgin -y install nodejs -``` - -Veya pkgsrc'den manuel olarak derleyin: - -```bash -cd pkgsrc/lang/nodejs && bmake install -``` - -## Yakala - -[Node.js snaps](https://github.com/nodejs/snap), Snap deposunda [`node`](https://snapcraft.io/node) olarak mevcuttur. - -## Solus - -Solus, ana deposunda Node.js sağlar. - -```bash -sudo eopkg install nodejs -``` - -## vfox - -Platformlar arası (Windows, macOS, Linux) ve **genişletilebilir** bir sürüm yöneticisi. - -**Farklı projeler için farklı sürümler**, **farklı kabuklar için farklı sürümler** ve geçerli dizine göre Node sürümlerini otomatik olarak değiştirmenize vb. olanak tanır. - -Tüm popüler kabukları (Bash, Zsh, Fish, PowerShell, Clink, Cmder) destekler. - -Vfox'u hızlı bir şekilde kullanmak ve tüm kullanım ayrıntıları için [Hızlı Başlangıç](https://vfox.lhan.me/guides/quick-start.html) bölümüne bakın. - -## Void Linux - -Void Linux, Node.js'yi ana depoda kararlı olarak gönderir. - -```bash -xbps-install -Sy nodejs -``` - -## Windows - -Windows Installer](/#home-downloadhead) doğrudan [nodejs.org](https://nodejs.org/) web sitesinden indirin. - -### Alternatifler - -[Winget](https://aka.ms/winget-cli)\*\* kullanarak: - -```bash -winget install OpenJS.NodeJS -# or for LTS -winget install OpenJS.NodeJS.LTS -``` - -Yukarıdaki iki komuttan birini çalıştırdıktan sonra, yeniden başlatmak gerekebilir -CLI komutu kullanılabilir hale gelmeden önce terminal emülatörü. - -[Chocolatey](https://chocolatey.org/)\*\* kullanarak: - -```bash -cinst nodejs -# or for full install with npm -cinst nodejs.install -``` - -[Scoop](https://scoop.sh/)\*\* kullanarak: - -```bash -scoop install nodejs -# or for LTS -scoop install nodejs-lts -``` - -## z/OS - -IBM® SDK for Node.js - z/OS® SMP/E ve PAX olarak iki kurulum formatında sunulur. Size uygun olan kurulum formatını seçin: - -- [z/OS üzerinde Node.js'nin SMP/E sürümünün kurulması ve yapılandırılması](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) -- [z/OS üzerinde Node.js PAX sürümünün kurulması ve yapılandırılması](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/tr/download/package-manager/current.mdx b/apps/site/pages/tr/download/package-manager/current.mdx deleted file mode 100644 index 1d22f74b12455..0000000000000 --- a/apps/site/pages/tr/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Node.js® İndir -subtitle: Node.js'i istediğiniz şekilde indirin. ---- - -<section> -<Release.PlatformDropdown /> kullanarak <Release.OperatingSystemDropdown exclude={["AIX"]} />'a Node.js <Release.VersionDropdown /> yükleyin - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js <Release.NpmLink /> içerir. - -Bu sürüm için <Release.ChangelogLink> değişiklik günlüğünü </Release.ChangelogLink> okuyun - -Bu sürüm için blog yazısını <Release.BlogPostLink>buradan </Release.BlogPostLink> okuyun - -İmzalı SHASUMS'u nasıl doğrulayacağınızı <Release.VerifyingBinariesLink>buradan </Release.VerifyingBinariesLink> öğrenin - -Diğer topluluk tarafından desteklenen <LinkWithArrow href="/download/package-manager/all">paket yöneticilerine</LinkWithArrow> göz atın - -</section> diff --git a/apps/site/pages/tr/download/package-manager/index.mdx b/apps/site/pages/tr/download/package-manager/index.mdx deleted file mode 100644 index 9e4ff5cdf845f..0000000000000 --- a/apps/site/pages/tr/download/package-manager/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: download -title: Node.js® İndir -subtitle: Node.js'i istediğiniz şekilde indirin. ---- - -<section> -<Release.PlatformDropdown /> kullanarak <Release.OperatingSystemDropdown exclude={["AIX"]} /> üzerinde Node.js <Release.VersionDropdown /> yükleyin - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js <Release.NpmLink /> içerir. - -<Release.ChangelogLink>Bu sürüm</Release.ChangelogLink> için değişiklik -günlüğünü okuyun - -<Release.BlogPostLink> Bu sürüm için</Release.BlogPostLink> blog yazısını okuyun - -İmzalı SHASUMS'u nasıl doğrulayacağınızı <Release.VerifyingBinariesLink>buradan </Release.VerifyingBinariesLink> öğrenin - -Diğer topluluk tarafından desteklenen <LinkWithArrow href="/download/package-manager/all">paket yöneticilerine</LinkWithArrow> göz atın - -</section> diff --git a/apps/site/pages/tr/download/prebuilt-binaries/current.mdx b/apps/site/pages/tr/download/prebuilt-binaries/current.mdx deleted file mode 100644 index 8c8033438df85..0000000000000 --- a/apps/site/pages/tr/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Node.js® İndir -subtitle: Node.js'i istediğiniz şekilde indirin. ---- - -<section> -Node.js'ın <Release.OperatingSystemDropdown /> işletim sistemi için <Release.BitnessDropdown /> çalışan <Release.VersionDropdown /> sürümünü istiyorum - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js <Release.NpmLink /> içerir. - -Bu sürüm için <Release.ChangelogLink> değişiklik günlüğünü </Release.ChangelogLink> okuyun - -Bu sürüm için blog yazısını <Release.BlogPostLink>buradan</Release.BlogPostLink> okuyun - -İmzalı SHASUMS'u nasıl doğrulayacağınızı <Release.VerifyingBinariesLink>buradan </Release.VerifyingBinariesLink> öğrenin - -Diğer platformlar için <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> önceden oluşturulmuş ikili dosyalara veya <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Resmi Olmayan Derlemeler</LinkWithArrow>'e göz atın - -</section> diff --git a/apps/site/pages/tr/download/prebuilt-binaries/index.mdx b/apps/site/pages/tr/download/prebuilt-binaries/index.mdx deleted file mode 100644 index 5f0516b982eef..0000000000000 --- a/apps/site/pages/tr/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Node.js® İndir -subtitle: Node.js'i istediğiniz şekilde indirin. ---- - -<section> -Node.js'in <Release.OperatingSystemDropdown /> işletim sistemi için <Release.BitnessDropdown /> çalışan <Release.VersionDropdown /> sürümünü istiyorum - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js <Release.NpmLink /> içerir. - -<Release.ChangelogLink>Bu sürüm</Release.ChangelogLink> için değişiklik -günlüğünü okuyun. - -Bu sürüm için blog yazısını <Release.BlogPostLink>buradan</Release.BlogPostLink> okuyun. - -<Release.VerifyingBinariesLink>imzalı SHASUMS</Release.VerifyingBinariesLink> doğrulamayı -öğrenin. - -Diğer platformlar için <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> önceden oluşturulmuş ikili dosyalara, tüm <LinkWithArrow href="https://nodejs.org/download/release/">Release</LinkWithArrow> önceden oluşturulmuş ikili dosyalarına veya <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">Resmi Olmayan Derlemeler</LinkWithArrow>'e göz atın. - -</section> diff --git a/apps/site/pages/tr/download/prebuilt-installer/current.mdx b/apps/site/pages/tr/download/prebuilt-installer/current.mdx deleted file mode 100644 index bc0f788a4fe04..0000000000000 --- a/apps/site/pages/tr/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Node.js® İndir -subtitle: Node.js'i istediğiniz şekilde indirin. ---- - -<section> -Node.js'in <Release.BitnessDropdown /> çalıştıran <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> için <Release.VersionDropdown /> sürümünü istiyorum - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js <Release.NpmLink /> içerir. - -<Release.ChangelogLink>Bu sürüm</Release.ChangelogLink> için değişiklik -günlüğünü okuyun - -Bu sürüm için blog yazısını <Release.BlogPostLink>buradan</Release.BlogPostLink> okuyun - -İmzalı SHASUMS'u nasıl doğrulayacağınızı <Release.VerifyingBinariesLink>buradan </Release.VerifyingBinariesLink> öğrenin - -Mevcut tüm Node.js <LinkWithArrow href="https://nodejs.org/dist/">indirme seçeneklerine </LinkWithArrow> göz atın - -<LinkWithArrow href="about/previous-releases">Node.js Sürümleri</LinkWithArrow> hakkında bilgi alın -</section> diff --git a/apps/site/pages/tr/download/prebuilt-installer/index.mdx b/apps/site/pages/tr/download/prebuilt-installer/index.mdx deleted file mode 100644 index 4aaca742f05a1..0000000000000 --- a/apps/site/pages/tr/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Node.js® İndir -subtitle: Node.js'i istediğiniz şekilde indirin. ---- - -<section> -Node.js'in <Release.BitnessDropdown /> çalıştıran <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> için <Release.VersionDropdown /> sürümünü istiyorum - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js <Release.NpmLink /> içerir. - -<Release.ChangelogLink>Bu sürüm</Release.ChangelogLink> için değişiklik -günlüğünü okuyun - -Bu sürüm için blog yazısını <Release.BlogPostLink>buradan</Release.BlogPostLink> okuyun - -İmzalı SHASUMS'u nasıl doğrulayacağınızı <Release.VerifyingBinariesLink>buradan </Release.VerifyingBinariesLink> öğrenin - -Mevcut tüm Node.js <LinkWithArrow href="https://nodejs.org/dist/">indirme seçeneklerine </LinkWithArrow> göz atın - -<LinkWithArrow href="/about/previous-releases">Node.js Sürümleri</LinkWithArrow> hakkında bilgi alın -</section> diff --git a/apps/site/pages/tr/download/source-code/current.mdx b/apps/site/pages/tr/download/source-code/current.mdx deleted file mode 100644 index b0e68f2b2598c..0000000000000 --- a/apps/site/pages/tr/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Node.js® İndir -subtitle: Node.js'i istediğiniz şekilde indirin. ---- - -<section> -Node.js kaynak kodunun <Release.VersionDropdown /> sürümünü istiyorum. - -<Release.SourceButton /> -</section> - -<section> -Node.js <Release.NpmLink /> içerir. - -<Release.ChangelogLink>Bu sürüm</Release.ChangelogLink> için değişiklik -günlüğünü okuyun - -Bu sürüm için blog yazısını <Release.BlogPostLink>buradan</Release.BlogPostLink> okuyun - -İmzalı SHASUMS'u nasıl doğrulayacağınızı <Release.VerifyingBinariesLink>buradan </Release.VerifyingBinariesLink> öğrenin - -<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.js'i kaynaktan </LinkWithArrow>'nasıl oluşturacağınıza göz atın. -</section> diff --git a/apps/site/pages/tr/download/source-code/index.mdx b/apps/site/pages/tr/download/source-code/index.mdx deleted file mode 100644 index fede6378b5d53..0000000000000 --- a/apps/site/pages/tr/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Node.js® İndir -subtitle: Node.js'i istediğiniz şekilde indirin. ---- - -<section> -Node.js kaynak kodunun <Release.VersionDropdown /> sürümünü istiyorum. - -<Release.SourceButton /> -</section> - -<section> -Node.js <Release.NpmLink /> içerir. - -<Release.ChangelogLink>Bu sürüm</Release.ChangelogLink> için değişiklik -günlüğünü okuyun - -Bu sürüm için blog yazısını <Release.BlogPostLink>buradan</Release.BlogPostLink> okuyun - -İmzalı SHASUMS'u nasıl doğrulayacağınızı <Release.VerifyingBinariesLink>buradan </Release.VerifyingBinariesLink> öğrenin - -<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.js'i kaynaktan</LinkWithArrow> nasıl oluşturacağınıza göz atın. -</section> diff --git a/apps/site/pages/uk/download/package-manager/all.md b/apps/site/pages/uk/download/package-manager/all.md deleted file mode 100644 index f603bf86ddaf6..0000000000000 --- a/apps/site/pages/uk/download/package-manager/all.md +++ /dev/null @@ -1,392 +0,0 @@ ---- -layout: article -title: Установка Node.js через менеджер пакетів ---- - -# Установка Node.js через менеджери пакетів - -> Пакети на цій сторінці обслуговуються та підтримуються їхніми відповідними розробниками, **не** командою Node.js. Будь ласка, повідомляйте про проблеми цих пакетів їхнім розробникам. Якщо виявиться, що проблема є помилкою Node.js, то вони повідомлять нас про неї. - -## Alpine Linux - -Node.js LTS та пакети npm доступні в головному репозиторії. - -```bash -apk add nodejs npm -``` - -Node.js Current можна встановити через репозиторій спільноти. - -```bash -apk add nodejs-current -``` - -## Android - -Підтримка Android досі є експериментальною в Node.js, тому попередньо скомпільовані бінарні файли ще не надаються розробниками Node.js. - -Однак, є сторонні рішення. Наприклад, спільнота [Termux](https://termux.com/) надає емулятор термінала та середовище Linux для Android, а також власний менеджер пакетів та [великий набір](https://github.com/termux/termux-packages) попередньо скомпільованих застосунків. Ця команда в застосунку Termux установить останню доступну версію Node.js: - -```bash -pkg install nodejs -``` - -Наразі бінарні файли Termux Node.js компонуються із `system-icu` (залежно від пакета `libicu`). - -## Arch Linux - -Node.js та пакети npm доступні в репозиторії спільноти. - -```bash -pacman -S nodejs npm -``` - -## CentOS, Fedora та Red Hat Enterprise Linux - -Node.js доступний як модуль із назвою `nodejs` у CentOS/RHEL 8 та Fedora. - -```bash -dnf module install nodejs:<stream> -``` - -де `<stream>` — основна версія Node.js. -Щоб побачити список доступних потоків: - -```bash -dnf module list nodejs -``` - -Наприклад, щоб установити Node.js 18: - -```bash -dnf module install nodejs:18/common -``` - -### Альтернативи - -Ці ресурси надають пакети, які сумісні з CentOS, Fedora та RHEL. - -- [Snaps Node.js](#snap) обслуговуються та підтримуються на https://github.com/nodejs/snap -- [Бінарні дистрибутиви Node.js](#debian-and-ubuntu-based-linux-distributions) обслуговуються та підтримуються [NodeSource](https://github.com/nodesource/distributions) - -## Дистрибутиви Linux на базі Debian та Ubuntu - -[Бінарні дистрибутиви Node.js](https://github.com/nodesource/distributions) доступні на NodeSource. - -### Альтернативи - -Пакети, сумісні з дистрибутивами Linux на базі Debian та Ubuntu, доступні на [snaps Node.js](#snap). - -## Exherbo Linux - -Node.js і пакети npm доступні в [репозиторії arbor](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). - -```bash -cave resolve -x node -``` - -## fnm - -Швидкий і простий менеджер версій Node.js, створений на Rust, використовується для керування багатьма випущеними версіями Node.js. Він дозволяє виконувати такі операції, як установка, видалення, автоматична зміна версій Node залежно від поточної директорії тощо. -Щоб установити fnm, використайте [цей скрипт](https://github.com/Schniz/fnm#using-a-script-macoslinux). - -fnm кросплатформний (macOS, Windows, Linux) та підтримує всі популярні оболонки (Bash, Zsh, Fish, PowerShell, командний рядок Windows). -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 -``` - -Або скомпілюйте його самостійно через [порти](https://www.freebsd.org/cgi/man.cgi?ports): - -```bash -cd /usr/ports/www/node && make install -``` - -## Gentoo - -Node.js доступний у дереві portage. - -```bash -emerge nodejs -``` - -## IBM i - -LTS-версії Node.js доступні від 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](/#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<major version> - -# 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` — простий у використанні менеджер версій Node.js для платформ Mac і Linux. Укажіть цільову версію для встановлення за допомогою розширеного синтаксису або оберіть у меню раніше завантажених версій. Версії встановлюються на рівні системи чи користувача, а для більш цільового використання можна запускати її безпосередньо з кешованих завантажень. - -Відвідайте [головну сторінку](https://github.com/tj/n), щоб дізнатися методи установки (bootstrap, npm, Homebrew, сторонні) та деталі використання. - -Якщо у вас уже є `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` — легковаговий менеджер версій Node, подібний до `nvm`. Простий та інтуїтивний у використанні. Широка екосистема плагінів дозволяє налаштувати його відповідно до ваших потреб. Використовуйте `nodenv`, щоб обрати версію Node для вашої програми та переконатися, що ваше середовище розробки відповідає клієнтському середовищу. - -Інструкції зі встановлення Nodenv є [на його сторінці Github](https://github.com/nodenv/nodenv#installation). Будь ласка, відвідайте її, щоб використовувати останню версію кроків установки. - -## nvm - -Node Version Manager — це bash-скрипт, що використовується для керування різними випущеними версіями Node.js. Він дозволяє виконувати наступні операції: установка, видалення, зміна версії тощо. Щоб установити nvm, використайте [цей скрипт](https://github.com/nvm-sh/nvm#install--update-script). - -На системах Unix / OS X Node.js, зібраний із вихідного коду, можна встановити за допомогою [nvm](https://github.com/creationix/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 - -Щоб установити `nvs` на Windows, перейдіть на [сторінку релізів](https://github.com/jasongin/nvs/releases) і завантажте MSI-інсталятор останнього релізу. - -Ви також можете використати `chocolatey` для установки: - -```bash -choco install nvs -``` - -#### macOS, системи типу Unix - -Ви можете знайти документацію щодо кроків інсталяції `nvs` на macOS та системах типу Unix [тут](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) - -#### Використання - -Після цього ви можете використовувати `nvs`, щоб перемикатися між різними версіями Node. - -Щоб додати її останню версію: - -```bash -nvs add latest -``` - -Чи додати її останню LTS-версію: - -```bash -nvs add lts -``` - -Тоді запустіть команду `nvs use`, щоб додати версію Node до своєї `PATH` для поточної оболонки: - -```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 доступний через систему портів. - -```bash -/usr/ports/lang/node -``` - -Через [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) на 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`, and `nodejs14` - (Модуль «Web and Scripting Module» має бути [ввімкнений](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) -- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, and `nodejs14` - (Модуль «Web and Scripting Module» має бути [ввімкнений](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) - -Для прикладу, щоб встановити Node.js 14.x на openSUSE Leap 15.2, запустіть наступну команду в корені: - -```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 - -[Snaps Node.js](https://github.com/nodejs/snap) доступні як [`node`](https://snapcraft.io/node) у крамниці Snap. - -## Solus - -Solus надає Node.js у своєму головному репозиторії. - -```bash -sudo eopkg install nodejs -``` - -## vfox - -Кросплатформний (Windows, macOS, Linux) і **розширюваний** менеджер версій. - -Підтримує **різні версії для різних проєктів**, **різні версії для різних оболонок**, а також дає можливість перемикати версії Node автоматично на основі поточної директорії тощо. - -Підтримує всі популярні оболонки (Bash, Zsh, Fish, PowerShell, Clink, Cmder). - -Перегляньте [швидкий старт](https://vfox.lhan.me/guides/quick-start.html), щоб почати використовувати vfox та дізнатися всі деталі його використання. - -## Void Linux - -Void Linux надає стабільний Node.js в основному репозиторії. - -```bash -xbps-install -Sy nodejs -``` - -## Windows - -Завантажте [інсталятор Windows](/#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 -``` - -Після запуску однієї з двох команд вище, можливо, необхідно буде перезапустити емулятор термінала, перш ніж CLI-команда `node` стане доступною. - -Через **[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 для Node.js — z/OS® доступний у двох інсталяційних форматах: -SMP/E та PAX. Оберіть підхожий вам формат: - -- [Установка та налаштування Node.js із SMP/E на z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) -- [Установка та налаштування Node.js із PAX на z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/uk/download/package-manager/current.mdx b/apps/site/pages/uk/download/package-manager/current.mdx deleted file mode 100644 index 8b614025c7f37..0000000000000 --- a/apps/site/pages/uk/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Завантаження Node.js® -subtitle: Завантажте Node.js так, як ви бажаєте. ---- - -<section> -Установити Node.js <Release.VersionDropdown /> на <Release.OperatingSystemDropdown exclude={["AIX"]} /> за допомогою <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js містить <Release.NpmLink />. - -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. - -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. - -Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> - -Перегляньте інші <LinkWithArrow href="/download/package-manager/all">менеджери пакетів</LinkWithArrow>, які підтримуються спільнотою - -</section> diff --git a/apps/site/pages/uk/download/package-manager/index.mdx b/apps/site/pages/uk/download/package-manager/index.mdx deleted file mode 100644 index d772ef049cc28..0000000000000 --- a/apps/site/pages/uk/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Завантаження Node.js® -subtitle: Завантажте Node.js так, як ви бажаєте. ---- - -<section> -Установити Node.js <Release.VersionDropdown /> на <Release.OperatingSystemDropdown exclude={["AIX"]} /> за допомогою <Release.PlatformDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js містить <Release.NpmLink />. - -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії - -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію - -Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> - -Перегляньте інші <LinkWithArrow href="/download/package-manager/all">менеджери пакетів</LinkWithArrow>, які підтримуються спільнотою - -</section> diff --git a/apps/site/pages/uk/download/prebuilt-binaries/current.mdx b/apps/site/pages/uk/download/prebuilt-binaries/current.mdx deleted file mode 100644 index ee5f2d83f0638..0000000000000 --- a/apps/site/pages/uk/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Завантаження Node.js® -subtitle: Завантажте Node.js так, як ви бажаєте. ---- - -<section> -Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> з архітектурою <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js містить <Release.NpmLink />. - -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії - -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію - -Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> - -Перегляньте бінарні файли <LinkWithArrow href="https://nodejs.org/download/nightly/">нічних збірок</LinkWithArrow> або <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">неофіційні збірки</LinkWithArrow> для інших платформ - -</section> diff --git a/apps/site/pages/uk/download/prebuilt-binaries/index.mdx b/apps/site/pages/uk/download/prebuilt-binaries/index.mdx deleted file mode 100644 index 0d0a6e3a5d189..0000000000000 --- a/apps/site/pages/uk/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Завантаження Node.js® -subtitle: Завантажте Node.js так, як ви бажаєте. ---- - -<section> -Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> з архітектурою <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js містить <Release.NpmLink />. - -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. - -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. - -Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink>. - -Перегляньте бінарні файли <LinkWithArrow href="https://nodejs.org/download/nightly/">нічних збірок</LinkWithArrow>, усі бінарні файли <LinkWithArrow href="https://nodejs.org/download/release/">релізу</LinkWithArrow> або <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">неофіційні збірки</LinkWithArrow> для інших платформ. - -</section> diff --git a/apps/site/pages/uk/download/prebuilt-installer/current.mdx b/apps/site/pages/uk/download/prebuilt-installer/current.mdx deleted file mode 100644 index 05ba45d1fab18..0000000000000 --- a/apps/site/pages/uk/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Завантаження Node.js® -subtitle: Завантажте Node.js так, як ви бажаєте. ---- - -<section> -Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> з архітектурою <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js містить <Release.NpmLink />. - -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії - -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію - -Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> - -Перегляньте всі доступні <LinkWithArrow href="https://nodejs.org/dist/">опції завантаження</LinkWithArrow> Node.js - -Дізнайтеся більше про <LinkWithArrow href="about/previous-releases">релізи Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/uk/download/prebuilt-installer/index.mdx b/apps/site/pages/uk/download/prebuilt-installer/index.mdx deleted file mode 100644 index 2fcb5bd6067bb..0000000000000 --- a/apps/site/pages/uk/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: Завантажити Node.js® -subtitle: Завантажте Node.js так, як ви бажаєте. ---- - -<section> -Мені потрібний Node.js <Release.VersionDropdown /> для <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /> з архітектурою <Release.BitnessDropdown /> - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js містить <Release.NpmLink />. - -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. - -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. - -Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> - -Перегляньте всі доступні <LinkWithArrow href="https://nodejs.org/dist/">опції завантаження</LinkWithArrow> Node.js - -Дізнайтеся більше про <LinkWithArrow href="/about/previous-releases">релізи Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/uk/download/source-code/current.mdx b/apps/site/pages/uk/download/source-code/current.mdx deleted file mode 100644 index 2d2846ddc04c7..0000000000000 --- a/apps/site/pages/uk/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Завантаження Node.js® -subtitle: Завантажте Node.js так, як ви бажаєте. ---- - -<section> -Мені потрібна версія <Release.VersionDropdown /> вихідного коду Node.js. - -<Release.SourceButton /> -</section> - -<section> -Node.js містить <Release.NpmLink />. - -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. - -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. - -Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> - -Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">зібрати Node.js</LinkWithArrow> із вихідного коду. - -</section> diff --git a/apps/site/pages/uk/download/source-code/index.mdx b/apps/site/pages/uk/download/source-code/index.mdx deleted file mode 100644 index 2d2846ddc04c7..0000000000000 --- a/apps/site/pages/uk/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: Завантаження Node.js® -subtitle: Завантажте Node.js так, як ви бажаєте. ---- - -<section> -Мені потрібна версія <Release.VersionDropdown /> вихідного коду Node.js. - -<Release.SourceButton /> -</section> - -<section> -Node.js містить <Release.NpmLink />. - -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. - -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. - -Дізнайтеся, як <Release.VerifyingBinariesLink>перевірити підписані SHASUMS</Release.VerifyingBinariesLink> - -Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">зібрати Node.js</LinkWithArrow> із вихідного коду. - -</section> diff --git a/apps/site/pages/zh-cn/download/package-manager/all.md b/apps/site/pages/zh-cn/download/package-manager/all.md deleted file mode 100644 index e7eeeef51ecaa..0000000000000 --- a/apps/site/pages/zh-cn/download/package-manager/all.md +++ /dev/null @@ -1,389 +0,0 @@ ---- -layout: article -title: 通过包管理器安装 Node.js ---- - -# 通过包管理器安装 Node.js - -> 这个页面上的软件包由各自的打包者维护和支持,而不是 Node.js 核心团队。当将您遇到的任何疑问时,请将问题报告给软件包维护者。如果问题最终是 Node.js 本身的 bug,则维护者将向上报告该问题。 - -## Alpine Linux - -Node.js LTS 和 npm 软件包可在主仓库中获得。 - -```bash -apk add nodejs npm -``` - -Node.js Current 可从社区仓库安装。 - -```bash -apk add nodejs-current -``` - -## Android - -在 Node.js 中,Android 支持仍处于实验阶段,因此 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 包管理器可在社区库中使用。 - -```bash -pacman -S nodejs npm -``` - -## CentOS、Fedora 和 Red Hat Enterprise Linux - -Node.js 在 CentOS/RHEL 8 和 Fedora 中作为一个名为 `nodejs` 的模块可用。 - -```bash -dnf module install nodejs:<stream> -``` - -`<stream>` 对应于 Node.js 的主要版本号。如需查看可用stream的列表: - -```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 维护并得到支持 -- [Node.js 二进制发行版](#debian-and-ubuntu-based-linux-distributions) 由 [NodeSource](https://github.com/nodesource/distributions) 维护并得到支持。 - -## 基于 Linux 的 Debian 和 Ubuntu 发行版 - -[Node.js 二进制发行版](https://github.com/nodesource/distributions) 可从 NodeSource 获取。 - -### 备选资源 - -与基于 Linux 的 Debian 和 Ubuntu 发行版兼容的软件包可以通过 [Node.js snaps](#snap) 获取。 - -## Exherbo Linux - -Node.js 和 npm 软件包可以在 [arbor 仓库](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node)当中找到。 - -```bash -cave resolve -x node -``` - -## fnm - -"fnm" 是一个用 Rust 构建的快速简单的 Node.js 版本管理器,用于管理多个已发布的 Node.js 版本。它允许您执行诸如安装、卸载、根据当前目录自动切换 Node 版本等操作。 -要安装 fnm,请使用此[安装脚本](https://github.com/Schniz/fnm#using-a-script-macoslinux)。 - -fnm 具有跨平台支持(macOS、Windows、Linux)和所有流行的 shell(Bash、Zsh、Fish、PowerShell、Windows 命令行提示符)。 -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 可以在 Portage 树中找到。 - -```bash -emerge nodejs -``` - -## IBM i - -LTS 版本的 Node.js 可以从 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 - -直接从 [nodejs.org](https://nodejs.org/) 网站下载 [macOS 安装程序](/#home-downloadhead)。 - -_如果您想使用 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<major version> - -# 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` 是一个简单易用的 Node.js 版本管理器,适用于 Mac 和 Linux。使用丰富的语法指定要安装的目标版本,或从先前下载的版本菜单中进行选择。这些版本可以系统范围或用户范围安装,对于更有针对性的使用,您可以直接从缓存的下载文件中运行一个版本。 - -请查看 [首页](https://github.com/tj/n) 获取安装方法(bootstrap、npm、Homebrew、第三方)以及所有的使用详情。 - -如果您已经安装了 `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` 是一个轻量级的 Node 版本管理器,类似于 `nvm`。它简单而可预测。丰富的插件生态系统让您可以根据自己的需求进行定制。使用 `nodenv` 为您的应用选择一个 Node 版本,并确保您的开发环境与生产环境匹配。 - -Nodenv 的安装说明维护于 [Github 页面](https://github.com/nodenv/nodenv#installation) 上。请访问该页面以确保您遵循最新版本的安装步骤。 - -## nvm - -Node Version Manager(nvm)是一个 bash 脚本,用于管理多个发布的 Node.js 版本。它允许您执行诸如安装、卸载、切换版本等操作。 -要安装 nvm,请使用这个 [安装脚本](https://github.com/nvm-sh/nvm#install--update-script)。 - -在 Unix / OS X 系统上,可以使用[nvm](https://github.com/creationix/nvm)从源代码构建安装 Node.js,方法是安装到 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 - -您可以在[这里](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux)找到关于在 macOS/类 Unix 系统上安装 `nvs` 的文档。 - -#### 用法 - -之后,您可以使用 `nvs` 在不同的 Node. js 版本之间进行切换。 - -要添加最新版本的 Node. js: - -```bash -nvs add latest -``` - -或者添加最新的 LTS 版本的 Node. js: - -```bash -nvs add lts -``` - -然后运行 `nvs use` 命令将一个 Node. js 版本添加到当前 shell 的 `PATH` 中: - -```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 可通过 ports 系统获得。 - -```bash -/usr/ports/lang/node -``` - -在 OpenBSD 上使用 [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1): - -```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)“Web 和脚本模块”)。 -- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, 和 `nodejs14`(必须[启用](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module)“Web 和脚本模块”)。 - -例如,在 openSUSE Leap 15.2 上安装 Node.js 14.x,作为 root 运行以下命令: - -```bash -zypper install nodejs14 -``` - -可以同时安装和使用不同的 Node. js 主要版本。 - -## 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 store 上以 [`node`](https://snapcraft.io/node) 提供。 - -## Solus - -Solus 在其主软件仓库中提供 Node.js。 - -```bash -sudo eopkg install nodejs -``` - -## vfox - -一个跨平台(Windows、macOS、Linux)并**可拓展的**版本管理器。 - -它允许你为**不同的项目使用不同的版本**,**为不同的Shell使用不同的版本**,并根据当前目录自动切换Node版本等等。 - -它支持所有主流的Shell(Bash、Zsh、Fish、PowerShell、Clink、Cmder)。 - -查看[快速入门](https://vfox.lhan.me/guides/quick-start.html),了解vfox如何上手及所有使用细节。 - -## Void Linux - -Void Linux 在其主仓库中提供 Node.js 的稳定版本。 - -```bash -xbps-install -Sy nodejs -``` - -## Windows - -直接从 [nodejs.org](https://nodejs.org/) 网站下载 [Windows 安装程序](/#home-downloadhead)。 - -### 备选资源 - -使用 **[Winget](https://aka.ms/winget-cli)**: - -```bash -winget install OpenJS.NodeJS -# or for LTS -winget install OpenJS.NodeJS.LTS -``` - -在运行上述两个命令之后,可能需要重新启动终端模拟器,然后 `node` 命令行界面命令才能生效。 - -使用 **[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 上安装和配置 SMP/E 版本的 Node.js](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) -- [在 z/OS 上安装和配置 PAX 版本的 Node.js](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/zh-cn/download/package-manager/current.mdx b/apps/site/pages/zh-cn/download/package-manager/current.mdx deleted file mode 100644 index c59483b9d967a..0000000000000 --- a/apps/site/pages/zh-cn/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下载 Node.js® -subtitle: 以您喜欢的方式下载 Node.js。 ---- - -<section> -在 <Release.OperatingSystemDropdown exclude={["AIX"]} /> 上使用 <Release.PlatformDropdown /> 安装 Node.js <Release.VersionDropdown /> - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js 已包含 <Release.NpmLink />。 - -阅读关于 <Release.ChangelogLink>此版本</Release.ChangelogLink> 的更新日志。 - -阅读关于 <Release.BlogPostLink>此版本</Release.BlogPostLink> 的博客文章。 - -学习如何 <Release.VerifyingBinariesLink>验证签名的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看其他社区支持的 <LinkWithArrow href="/download/package-manager/all">软件包管理器</LinkWithArrow>。 - -</section> diff --git a/apps/site/pages/zh-cn/download/package-manager/index.mdx b/apps/site/pages/zh-cn/download/package-manager/index.mdx deleted file mode 100644 index 99400408c129e..0000000000000 --- a/apps/site/pages/zh-cn/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下载 Node.js® -subtitle: 以您喜欢的方式下载 Node.js。 ---- - -<section> -安装 Node.js <Release.VersionDropdown /> 于 <Release.OperatingSystemDropdown exclude={["AIX"]} /> 上并使用 <Release.PlatformDropdown />。 - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js 包含 <Release.NpmLink /> - -阅读 <Release.ChangelogLink>此版本</Release.ChangelogLink> 的变更日志 - -阅读关于 <Release.BlogPostLink>此版本</Release.BlogPostLink> 的博客文章 - -学习如何 <Release.VerifyingBinariesLink>验证签名的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看其他社区支持的 <LinkWithArrow href="/download/package-manager/all">软件包管理器</LinkWithArrow>。 - -</section> diff --git a/apps/site/pages/zh-cn/download/prebuilt-binaries/current.mdx b/apps/site/pages/zh-cn/download/prebuilt-binaries/current.mdx deleted file mode 100644 index 19df1eff32f9a..0000000000000 --- a/apps/site/pages/zh-cn/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下载 Node.js® -subtitle: 以您喜欢的方式下载 Node.js。 ---- - -<section> -我需要用于<Release.OperatingSystemDropdown /><Release.BitnessDropdown />的<Release.VersionDropdown /> 版本 - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js 已包含 <Release.NpmLink />。 - -阅读 <Release.ChangelogLink>此版本</Release.ChangelogLink> 的变更日志 - -阅读关于 <Release.BlogPostLink>此版本</Release.BlogPostLink> 的博客文章。 - -学习如何 <Release.VerifyingBinariesLink>验证签名的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看 <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> 的预编译二进制文件或者适用于其他平台的 <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非官方构建</LinkWithArrow> 版本 - -</section> diff --git a/apps/site/pages/zh-cn/download/prebuilt-binaries/index.mdx b/apps/site/pages/zh-cn/download/prebuilt-binaries/index.mdx deleted file mode 100644 index 8ffabcc6b3349..0000000000000 --- a/apps/site/pages/zh-cn/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下载 Node.js® -subtitle: 以您喜欢的方式下载 Node.js。 ---- - -<section> -我需要用于<Release.OperatingSystemDropdown /><Release.BitnessDropdown />的 Node.js <Release.VersionDropdown /> 版本 - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js 已包含 <Release.NpmLink />。 - -阅读关于 <Release.ChangelogLink>此版本</Release.ChangelogLink> 的变更日志. - -阅读关于 <Release.BlogPostLink>此版本</Release.BlogPostLink> 的博客文章. - -学习如何 <Release.VerifyingBinariesLink>验证签名的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看 <LinkWithArrow href="https://nodejs.org/download/nightly/">Nightly</LinkWithArrow> 的预编译二进制文件,所有 <LinkWithArrow href="https://nodejs.org/download/release/">Release</LinkWithArrow> 预编译二进制文件,或者适用于其他平台的 <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非官方构建</LinkWithArrow> 版本. - -</section> diff --git a/apps/site/pages/zh-cn/download/prebuilt-installer/current.mdx b/apps/site/pages/zh-cn/download/prebuilt-installer/current.mdx deleted file mode 100644 index 1dc0c7a4887d0..0000000000000 --- a/apps/site/pages/zh-cn/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: 下载 Node.js® -subtitle: 以您喜欢的方式下载 Node.js。 ---- - -<section> -我需要用于<Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /><Release.BitnessDropdown />的 Node.js <Release.VersionDropdown /> 版本 - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js 已包含 <Release.NpmLink />。 - -阅读关于 <Release.ChangelogLink>此版本</Release.ChangelogLink> 的更新日志。 - -阅读关于 <Release.BlogPostLink>此版本</Release.BlogPostLink> 的博客文章。 - -学习如何 <Release.VerifyingBinariesLink>验证签名的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看所有可用的 Node.js <LinkWithArrow href="https://nodejs.org/dist/">下载选项</LinkWithArrow>。 - -了解 <LinkWithArrow href="about/previous-releases">Node.js 版本</LinkWithArrow> - -</section> diff --git a/apps/site/pages/zh-cn/download/prebuilt-installer/index.mdx b/apps/site/pages/zh-cn/download/prebuilt-installer/index.mdx deleted file mode 100644 index 1dc0c7a4887d0..0000000000000 --- a/apps/site/pages/zh-cn/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: 下载 Node.js® -subtitle: 以您喜欢的方式下载 Node.js。 ---- - -<section> -我需要用于<Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} /><Release.BitnessDropdown />的 Node.js <Release.VersionDropdown /> 版本 - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js 已包含 <Release.NpmLink />。 - -阅读关于 <Release.ChangelogLink>此版本</Release.ChangelogLink> 的更新日志。 - -阅读关于 <Release.BlogPostLink>此版本</Release.BlogPostLink> 的博客文章。 - -学习如何 <Release.VerifyingBinariesLink>验证签名的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看所有可用的 Node.js <LinkWithArrow href="https://nodejs.org/dist/">下载选项</LinkWithArrow>。 - -了解 <LinkWithArrow href="about/previous-releases">Node.js 版本</LinkWithArrow> - -</section> diff --git a/apps/site/pages/zh-cn/download/source-code/current.mdx b/apps/site/pages/zh-cn/download/source-code/current.mdx deleted file mode 100644 index 4c8c17a39128e..0000000000000 --- a/apps/site/pages/zh-cn/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下载 Node.js® -subtitle: 以您喜欢的方式下载 Node.js。 ---- - -<section> -我想要 Node.js 源代码的<Release.VersionDropdown />版本 。 - -<Release.SourceButton /> -</section> - -<section> -Node.js 已包含 <Release.NpmLink />。 - -阅读 <Release.ChangelogLink>此版本</Release.ChangelogLink> 的变更日志 - -阅读 <Release.BlogPostLink>此版本</Release.BlogPostLink> 的博客文章。 - -学习如何 <Release.VerifyingBinariesLink>验证签名的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看如何<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">从源代码构建 Node.js</LinkWithArrow>。 - -</section> diff --git a/apps/site/pages/zh-cn/download/source-code/index.mdx b/apps/site/pages/zh-cn/download/source-code/index.mdx deleted file mode 100644 index 79c96f973038b..0000000000000 --- a/apps/site/pages/zh-cn/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下载 Node.js® -subtitle: 以您喜欢的方式下载 Node.js。 ---- - -<section> -我想要 Node.js 源代码的<Release.VersionDropdown />版本 。 - -<Release.SourceButton /> -</section> - -<section> -Node.js 已包含 <Release.NpmLink />。 - -阅读 <Release.ChangelogLink>此版本</Release.ChangelogLink> 的变更日志 - -阅读关于 <Release.BlogPostLink>此版本</Release.BlogPostLink> 的博客文章。 - -学习如何 <Release.VerifyingBinariesLink>验证签名的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看如何<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">从源代码构建 Node.js</LinkWithArrow>。 - -</section> diff --git a/apps/site/pages/zh-tw/download/package-manager/all.md b/apps/site/pages/zh-tw/download/package-manager/all.md deleted file mode 100644 index 1eca25ec8b5ea..0000000000000 --- a/apps/site/pages/zh-tw/download/package-manager/all.md +++ /dev/null @@ -1,391 +0,0 @@ ---- -layout: article -title: 使用套件管理器安裝 Node.js ---- - -# 使用套件管理器安裝 Node.js - -> 本站上的套件皆由各自的套件管理器維護與支援,**並非**由 Node.js 的核心團隊維護。若遭遇任何問題,請向該套件的維護者回報。如果問題確實是 Node.js 本身的錯誤,將由維護者負責向上游回報。 - -## Alpine Linux - -Node.js LTS 與 npm 套件皆收錄於主儲存庫。 - -```bash -apk add nodejs npm -``` - -你可以從社群儲存庫下載 Node.js 的最新版本。 - -```bash -apk add nodejs-current -``` - -## Android - -Node.js 對於 Android 的支援系統仍在測試階段,因此 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 套件皆收錄於主儲存庫。 - -```bash -pacman -S nodejs npm -``` - -## CentOS、Fedora 與 Red Hat Enterprise Linux - -Node.js 在 CentOS/RHEL 8 和 Fedora 中以 `nodejs` 模組的名稱開放使用。 - -```bash -dnf module install nodejs:<stream> -``` - -其中 <stream> 對應 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 維護與支援 -- [Node.js 二進制發行版](#debian-and-ubuntu-based-linux-distributions)由 [NodeSource](https://github.com/nodesource/distributions) 維護與支援 - -## 基於 Debian 或 Ubuntu 的 Linux 發行版 - -[Node.js 二進制發行版](https://github.com/nodesource/distributions)收錄於 NodeSource。 - -### 替代方案 - -和基於 Debian 與 Ubuntu 的 Linux 發行版相容的套件可以透過 [Node.js snaps](#snap) 取得。 - -## Exherbo Linux - -Node.js 和 npm 套件在收錄於 [arbor 版本庫](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node)。 - -```bash -cave resolve -x node -``` - -## fnm - -快速簡單的 Node.js 版本管理器,使用 Rust 構建,用於管理多個已釋出的 Node.js 版本。其功能包含安裝、解除安裝、根據目錄自動切換 Node 版本等。如欲安裝 fnm,請使用此[安裝腳本](https://github.com/Schniz/fnm#using-a-script-macoslinux)。 - -fnm 支援跨平台 (macOS、Windows、Linux) 以及所有主流的 shell 指令 (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 可以透過 portage 樹取得。 - -```bash -emerge nodejs -``` - -## IBM i - -IBM 提供的 Node.js LTS 版本可以透過 [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 - -直接從 [nodejs.org](https://nodejs.org/) 網站下載 [macOS 安裝器](/#home-downloadhead)。 - -如欲使用 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<major version> - -# 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` 是一款簡單易用的 Node.js 版本管理器,適用於 Mac 和 Linux。你可以使用豐富的語法指定欲安裝的目標版本,或者從之前下載的版本清單中進行選擇。安裝範圍可選擇全系統或以使用者為限,也可以直接從快取的下載檔案中執行特定版本。 - -請參閱[首頁](https://github.com/tj/n)以了解安裝方法 (bootstrap、npm、Homebrew、第三方) 以及所有使用詳細資訊。 - -如果你已經有 `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` 是一款輕量級的 Node 版本管理器,類似於 `nvm`。它不但設計簡潔,還穩定可靠。豐富的插件生態系統可以讓使用者可以隨心個人化。使用 `nodenv` 為你的應用程式選擇 Node 版本,並確保開發環境與生產環境保持一致。 - -Nodenv 安裝說明在其 [Github 頁面上](https://github.com/nodenv/nodenv#installation) 進行維護。請前往該頁面以遵循最新版本的安裝步驟。 - -## nvm - -Node Version Manager 是一個 Bash 腳本,用於管理多個已釋出的 Node.js 版本。其功能包含安裝、解除安裝、切換版本等。 -如欲安裝 nvm,請使用[此安裝腳本](https://github.com/nvm-sh/nvm#install--update-script)。 - -在 Unix / OS X 系統上,可以使用 [nvm](https://github.com/creationix/nvm) 安裝從原始碼構建的 Node.js,方法是安裝到 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 系統安裝步驟文件請[見此](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) - -#### 使用方法 - -安裝後可以使用 `nvs` 切換不同版本的 node。 - -新增最新版本的 node: - -```bash -nvs add latest -``` - -或是新增最新 LTS 版本的 node: - -```bash -nvs add lts -``` - -隨後執行 `nvs use` 命令將 Node. js 版本加入目前 shell 指令的 `PATH` 中: - -```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 可透過 ports 系統取得。 - -```bash -/usr/ports/lang/node -``` - -在 OpenBSD 上使用 [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1): - -```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` - (「Web 與腳本模組」必須[啟用](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated)。) -- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, and `nodejs14` (「Web 與腳本模組」必須[啟用](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) 的**可擴充的**版本管理器。 - -你可以**在不同的專案使用不同的版本**、**在不同的shell使用不同的版本**,也可以根據當下的目錄自動切換 Node 版本等。 - -它支援所有主流的 shell 指令 (Bash、Zsh、Fish、PowerShell、Clink、Cmder)。 - -請參閱[快速入門](https://vfox.lhan.me/guides/quick-start.html)瞭解 vfox 的所有使用細節。 - -## Void Linux - -Void Linux 在主儲存庫中提供了 Node.js 的穩定版本。 - -```bash -xbps-install -Sy nodejs -``` - -## Windows - -直接從 [nodejs.org](https://nodejs.org/) 網站下載 [Windows 安裝器](/#home-downloadhead)。 - -### 替代方案 - -使用 **[Winget](https://aka.ms/winget-cli)**: - -```bash -winget install OpenJS.NodeJS -# or for LTS -winget install OpenJS.NodeJS.LTS -``` - -執行上述的兩個命令之一後,可能需要重新啟動,這樣 `node` 的指令才能使用。 - -使用 **[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/zh-tw/download/package-manager/current.mdx b/apps/site/pages/zh-tw/download/package-manager/current.mdx deleted file mode 100644 index 4ff53d5b588ee..0000000000000 --- a/apps/site/pages/zh-tw/download/package-manager/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下載 Node.js® -subtitle: 使用偏好的管道下載 Node.js ---- - -<section> -在 <Release.OperatingSystemDropdown exclude={["AIX"]} /> 上使用 <Release.PlatformDropdown /> 安裝 <Release.VersionDropdown /> 版本的 Node.js - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js 內含 <Release.NpmLink />。 - -閱讀<Release.ChangelogLink>此版本</Release.ChangelogLink>的更新紀錄 - -閱讀<Release.BlogPostLink>此版本</Release.BlogPostLink>的部落格文章 - -瞭解如何<Release.VerifyingBinariesLink>驗證已簽署的 SHASUMS</Release.VerifyingBinariesLink> - -查看其他社群支援的<LinkWithArrow href="/download/package-manager/all">套件管理器</LinkWithArrow> - -</section> diff --git a/apps/site/pages/zh-tw/download/package-manager/index.mdx b/apps/site/pages/zh-tw/download/package-manager/index.mdx deleted file mode 100644 index 4ff53d5b588ee..0000000000000 --- a/apps/site/pages/zh-tw/download/package-manager/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下載 Node.js® -subtitle: 使用偏好的管道下載 Node.js ---- - -<section> -在 <Release.OperatingSystemDropdown exclude={["AIX"]} /> 上使用 <Release.PlatformDropdown /> 安裝 <Release.VersionDropdown /> 版本的 Node.js - -<Release.ReleaseCodeBox /> -</section> - -<section> -Node.js 內含 <Release.NpmLink />。 - -閱讀<Release.ChangelogLink>此版本</Release.ChangelogLink>的更新紀錄 - -閱讀<Release.BlogPostLink>此版本</Release.BlogPostLink>的部落格文章 - -瞭解如何<Release.VerifyingBinariesLink>驗證已簽署的 SHASUMS</Release.VerifyingBinariesLink> - -查看其他社群支援的<LinkWithArrow href="/download/package-manager/all">套件管理器</LinkWithArrow> - -</section> diff --git a/apps/site/pages/zh-tw/download/prebuilt-binaries/current.mdx b/apps/site/pages/zh-tw/download/prebuilt-binaries/current.mdx deleted file mode 100644 index 1889a774bc4fc..0000000000000 --- a/apps/site/pages/zh-tw/download/prebuilt-binaries/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下載 Node.js® -subtitle: 使用偏好的管道下載 Node.js ---- - -<section> -我想要 <Release.VersionDropdown /> 版本的 Node.js,執行系統為 <Release.BitnessDropdown /> 的 <Release.OperatingSystemDropdown />。 - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js 內含 <Release.NpmLink />。 - -閱讀<Release.ChangelogLink>此版本</Release.ChangelogLink>的更新紀錄 - -閱讀<Release.BlogPostLink>此版本</Release.BlogPostLink>的部落格文章 - -瞭解如何<Release.VerifyingBinariesLink>驗證已簽署的 SHASUMS</Release.VerifyingBinariesLink> - -查看其他平台的<LinkWithArrow href="https://nodejs.org/download/nightly/">每日</LinkWithArrow>預建構二進制文件或<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非官方建構版本</LinkWithArrow> - -</section> diff --git a/apps/site/pages/zh-tw/download/prebuilt-binaries/index.mdx b/apps/site/pages/zh-tw/download/prebuilt-binaries/index.mdx deleted file mode 100644 index 2a208b48376ea..0000000000000 --- a/apps/site/pages/zh-tw/download/prebuilt-binaries/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下載 Node.js® -subtitle: 使用偏好的管道下載 Node.js ---- - -<section> -我想要 <Release.VersionDropdown /> 版本的 Node.js,執行系統為 <Release.BitnessDropdown /> 的 <Release.OperatingSystemDropdown />。 - -<Release.DownloadButton kind={"binary"} /> -</section> - -<section> -Node.js 內含 <Release.NpmLink />。 - -閱讀<Release.ChangelogLink>此版本</Release.ChangelogLink>的更新紀錄. - -閱讀<Release.BlogPostLink>此版本</Release.BlogPostLink>的部落格文章。 - -瞭解如何<Release.VerifyingBinariesLink>驗證已簽署的 SHASUMS</Release.VerifyingBinariesLink>。 - -查看其他平台的<LinkWithArrow href="https://nodejs.org/download/nightly/">每日</LinkWithArrow>預建構二進制檔案、所有<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">版本</LinkWithArrow>建建構二進制檔案或<LinkWithArrow href="https://nodejs.org/download/release/">非官方建構檔案</LinkWithArrow>。 - -</section> diff --git a/apps/site/pages/zh-tw/download/prebuilt-installer/current.mdx b/apps/site/pages/zh-tw/download/prebuilt-installer/current.mdx deleted file mode 100644 index 3093a495af0a7..0000000000000 --- a/apps/site/pages/zh-tw/download/prebuilt-installer/current.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: 下載 Node.js® -subtitle: 使用偏好的管道下載 Node.js ---- - -<section> -我想要 <Release.VersionDropdown /> 版本的 Node.js,執行系統為 <Release.BitnessDropdown /> 的 <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />。 - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js 內含 <Release.NpmLink />。 - -閱讀<Release.ChangelogLink>此版本</Release.ChangelogLink>的更新紀錄 - -閱讀<Release.BlogPostLink>此版本</Release.BlogPostLink>的部落格文章 - -瞭解如何<Release.VerifyingBinariesLink>驗證已簽署的 SHASUMS</Release.VerifyingBinariesLink> - -查看所有 Node.js 的<LinkWithArrow href="https://nodejs.org/dist/">下載選項</LinkWithArrow> - -檢視 <LinkWithArrow href="about/previous-releases">Node.js 版本清單</LinkWithArrow> - -</section> diff --git a/apps/site/pages/zh-tw/download/prebuilt-installer/index.mdx b/apps/site/pages/zh-tw/download/prebuilt-installer/index.mdx deleted file mode 100644 index 3093a495af0a7..0000000000000 --- a/apps/site/pages/zh-tw/download/prebuilt-installer/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: download -title: 下載 Node.js® -subtitle: 使用偏好的管道下載 Node.js ---- - -<section> -我想要 <Release.VersionDropdown /> 版本的 Node.js,執行系統為 <Release.BitnessDropdown /> 的 <Release.OperatingSystemDropdown exclude={["LINUX", "AIX"]} />。 - -<Release.DownloadButton kind={"installer"} /> -</section> - -<section> -Node.js 內含 <Release.NpmLink />。 - -閱讀<Release.ChangelogLink>此版本</Release.ChangelogLink>的更新紀錄 - -閱讀<Release.BlogPostLink>此版本</Release.BlogPostLink>的部落格文章 - -瞭解如何<Release.VerifyingBinariesLink>驗證已簽署的 SHASUMS</Release.VerifyingBinariesLink> - -查看所有 Node.js 的<LinkWithArrow href="https://nodejs.org/dist/">下載選項</LinkWithArrow> - -檢視 <LinkWithArrow href="about/previous-releases">Node.js 版本清單</LinkWithArrow> - -</section> diff --git a/apps/site/pages/zh-tw/download/source-code/current.mdx b/apps/site/pages/zh-tw/download/source-code/current.mdx deleted file mode 100644 index 66421f326582c..0000000000000 --- a/apps/site/pages/zh-tw/download/source-code/current.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下載 Node.js® -subtitle: 使用偏好的管道下載 Node.js ---- - -<section> -我想要 Node.js <Release.VersionDropdown /> 版本的原始碼。 - -<Release.SourceButton /> -</section> - -<section> -Node.js 內含 <Release.NpmLink />。 - -閱讀<Release.ChangelogLink>此版本</Release.ChangelogLink>的更新紀錄 - -閱讀<Release.BlogPostLink>此版本</Release.BlogPostLink>的部落格文章 - -瞭解如何<Release.VerifyingBinariesLink>驗證已簽署的 SHASUMS</Release.VerifyingBinariesLink> - -探索如何從原始碼<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">建構 Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/pages/zh-tw/download/source-code/index.mdx b/apps/site/pages/zh-tw/download/source-code/index.mdx deleted file mode 100644 index 66421f326582c..0000000000000 --- a/apps/site/pages/zh-tw/download/source-code/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: download -title: 下載 Node.js® -subtitle: 使用偏好的管道下載 Node.js ---- - -<section> -我想要 Node.js <Release.VersionDropdown /> 版本的原始碼。 - -<Release.SourceButton /> -</section> - -<section> -Node.js 內含 <Release.NpmLink />。 - -閱讀<Release.ChangelogLink>此版本</Release.ChangelogLink>的更新紀錄 - -閱讀<Release.BlogPostLink>此版本</Release.BlogPostLink>的部落格文章 - -瞭解如何<Release.VerifyingBinariesLink>驗證已簽署的 SHASUMS</Release.VerifyingBinariesLink> - -探索如何從原始碼<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">建構 Node.js</LinkWithArrow> - -</section> diff --git a/apps/site/providers/__tests__/matterProvider.test.mjs b/apps/site/providers/__tests__/matterProvider.test.mjs index 4114da6537eeb..bfc0aba9faa74 100644 --- a/apps/site/providers/__tests__/matterProvider.test.mjs +++ b/apps/site/providers/__tests__/matterProvider.test.mjs @@ -8,18 +8,15 @@ const mockContext = { headings: [], readingTime: { text: '', minutes: 0, time: 0, words: 0 }, filename: '', - // @TODO: For some reason the initial value of the provider is flipping between - // LOADING and OTHER, although the initial state is LOADING, render() might be doing more - // than just initial rendering; This requires more investigation. - os: expect.any(String), + os: 'LOADING', architecture: '', - bitness: 64, + bitness: '', }; describe('MatterProvider', () => { it('renders the provider with the provided context value', () => { render( - <MatterProvider> + <MatterProvider os="LOADING"> <MatterContext.Consumer> {value => { expect(value).toEqual(mockContext); diff --git a/apps/site/providers/releaseProvider.tsx b/apps/site/providers/releaseProvider.tsx index 8666b8029769b..80105503d5aa4 100644 --- a/apps/site/providers/releaseProvider.tsx +++ b/apps/site/providers/releaseProvider.tsx @@ -1,95 +1,73 @@ 'use client'; -import type { Dispatch, PropsWithChildren, FC } from 'react'; -import { createContext, useMemo, useReducer } from 'react'; +import type { PropsWithChildren, FC } from 'react'; +import { + createContext, + useContext, + useEffect, + useMemo, + useReducer, +} from 'react'; -import type { DownloadSnippet, NodeRelease } from '@/types'; -import type { - ReleaseDispatchActions, - ReleaseAction, - ReleaseContextType, - ReleaseProviderProps, - ReleaseState, -} from '@/types/release'; +import reducer, { getActions, releaseState } from '@/reducers/releaseReducer'; +import type { NodeRelease } from '@/types'; +import type * as Types from '@/types/release'; -const initialState: ReleaseState = { - os: 'LOADING', - bitness: '', - platform: 'NVM', - version: '', -}; - -const createDispatchActions = ( - dispatch: Dispatch<ReleaseAction> -): ReleaseDispatchActions => ({ - setVersion: payload => dispatch({ type: 'SET_VERSION', payload }), - setOS: payload => dispatch({ type: 'SET_OS', payload }), - setBitness: payload => dispatch({ type: 'SET_BITNESS', payload }), - setPlatform: payload => dispatch({ type: 'SET_PLATFORM', payload }), -}); - -export const ReleaseContext = createContext<ReleaseContextType>({ - ...initialState, - ...createDispatchActions(() => {}), +export const ReleasesContext = createContext<Types.ReleasesContextType>({ releases: [], snippets: [], +}); + +export const ReleaseContext = createContext<Types.ReleaseContextType>({ + ...releaseState, + ...getActions(() => {}), release: {} as NodeRelease, - snippet: {} as DownloadSnippet, }); -export const ReleaseProvider: FC<PropsWithChildren<ReleaseProviderProps>> = ({ - children, - releases, - snippets, - initialRelease, -}) => { - const releaseReducer = (state: ReleaseState, action: ReleaseAction) => { - switch (action.type) { - case 'SET_VERSION': - return { ...state, version: action.payload }; - case 'SET_OS': - return { ...state, os: action.payload }; - case 'SET_BITNESS': - return { ...state, bitness: action.payload }; - case 'SET_PLATFORM': - return { ...state, platform: action.payload }; - default: - return state; - } - }; +export const ReleasesProvider: FC< + PropsWithChildren<Types.ReleasesProviderProps> +> = ({ children, releases, snippets }) => ( + <ReleasesContext.Provider value={{ releases, snippets }}> + {children} + </ReleasesContext.Provider> +); + +export const ReleaseProvider: FC< + PropsWithChildren<Types.ReleaseProviderProps> +> = ({ children, initialRelease }) => { + const { releases } = useContext(ReleasesContext); + const parentProvider = useContext(ReleaseContext); - const [state, dispatch] = useReducer(releaseReducer, { - ...initialState, - version: initialRelease.versionWithPrefix, + const [state, dispatch] = useReducer(reducer, { + ...releaseState, + // The initialRelease can only be `undefined` if a parent provider exists + // This is an intentional design flaw, forcing a context to exist. + // Note that if there is no parent provider the initial state for said provider will be used + version: initialRelease?.versionWithPrefix || parentProvider?.version, }); - const actions = useMemo(() => createDispatchActions(dispatch), [dispatch]); + const actions = useMemo(() => getActions(dispatch), [dispatch]); - const releaseFromVersion = useMemo( + useEffect(() => { + // This allows us to nest one Release Provider unto another (whenever possible) + // and to actually set the version of a given provider based on a parent provider + // Which is super handy for the Download page to reuse other current Node.js states + if (parentProvider.version && parentProvider.version !== state.version) { + actions.setVersion(parentProvider.version); + } + // We should only react if the parentProvider changes + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [actions, parentProvider]); + + const release = useMemo( () => releases.find(r => r.versionWithPrefix === state.version)!, // Memoizes the release based on the version // eslint-disable-next-line react-hooks/exhaustive-deps [state.version] ); - const snippetFromPlatform = useMemo( - () => snippets.find(s => s.name === state.platform.toLowerCase())!, - // Memoizes the snippet based on the platform - // eslint-disable-next-line react-hooks/exhaustive-deps - [state.platform] - ); - - const providerContext = { - ...state, - ...actions, - releases, - snippets, - release: releaseFromVersion, - snippet: snippetFromPlatform, - }; - return ( - <ReleaseContext.Provider value={providerContext}> + <ReleaseContext.Provider value={{ ...state, ...actions, release }}> {children} </ReleaseContext.Provider> ); diff --git a/apps/site/redirects.json b/apps/site/redirects.json index a00cf971566a0..c1d2841a801ea 100644 --- a/apps/site/redirects.json +++ b/apps/site/redirects.json @@ -285,24 +285,44 @@ "destination": "/:locale/blog/weekly/:path*" }, { - "source": "/:locale/download", + "source": "/download/package-manager", + "destination": "/en/download" + }, + { + "source": "/:locale/learn/getting-started/nodejs-with-typescript", + "destination": "/:locale/learn/typescript/introduction" + }, + { + "source": "/:locale/learn/getting-started/how-to-install-nodejs", "destination": "/:locale/download/package-manager" }, { - "source": "/download/package-manager", - "destination": "/en/download/package-manager" + "source": "/:locale/download/package-manager", + "destination": "/:locale/download" }, { - "source": "/:locale/download/current", - "destination": "/:locale/download/package-manager/current" + "source": "/:locale/download/package-manager/current", + "destination": "/:locale/download/current" }, { - "source": "/:locale/learn/getting-started/nodejs-with-typescript", - "destination": "/:locale/learn/typescript/introduction" + "source": "/:locale/download/prebuilt-binaries", + "destination": "/:locale/download" }, { - "source": "/:locale/learn/getting-started/how-to-install-nodejs", - "destination": "/en/download/package-manager" + "source": "/:locale/download/prebuilt-binaries/current", + "destination": "/:locale/download/current" + }, + { + "source": "/:locale/download/prebuilt-installer", + "destination": "/:locale/download" + }, + { + "source": "/:locale/download/source-code/current", + "destination": "/:locale/download/current" + }, + { + "source": "/:locale/download/source-code/current", + "destination": "/:locale/download/current" } ], "internal": [] diff --git a/apps/site/reducers/releaseReducer.ts b/apps/site/reducers/releaseReducer.ts new file mode 100644 index 0000000000000..6b475f170e92c --- /dev/null +++ b/apps/site/reducers/releaseReducer.ts @@ -0,0 +1,53 @@ +import type { Dispatch } from 'react'; + +import type * as Types from '@/types/release'; + +export const releaseState: Types.ReleaseState = { + // The selected Node.js version to be downloaded + version: '', + // The initial LOADING state is used to render a skeleton loader + // Until the User's OS is detected (or failed to be detected) + os: 'LOADING', + // The detected User Platform from a combination of Bitness and Architecture + // We set the default value to `x64` as it is the most common platform for modern systems + platform: 'x64', + // The selected installation method when not choosing an installer or prebuilt binary + installMethod: '', + // The package manager field is always set by default to `NPM` + // as that is the default package manager for the Node.js ecosystem + // and the one mainly recommended by the project. + packageManager: 'NPM', +}; + +export const getActions = ( + dispatch: Dispatch<Types.ReleaseAction> +): Types.ReleaseDispatchActions => ({ + setVersion: payload => dispatch({ type: 'SET_VERSION', payload }), + setOS: payload => dispatch({ type: 'SET_OS', payload }), + setPlatform: payload => dispatch({ type: 'SET_PLATFORM', payload }), + setInstallMethod: payload => + dispatch({ type: 'SET_INSTALL_METHOD', payload }), + setPackageManager: payload => dispatch({ type: 'SET_MANAGER', payload }), +}); + +const reducer = ( + state: Types.ReleaseState, + action: Types.ReleaseAction +): Types.ReleaseState => { + switch (action.type) { + case 'SET_VERSION': + return { ...state, version: action.payload }; + case 'SET_OS': + return { ...state, os: action.payload }; + case 'SET_PLATFORM': + return { ...state, platform: action.payload }; + case 'SET_INSTALL_METHOD': + return { ...state, installMethod: action.payload }; + case 'SET_MANAGER': + return { ...state, packageManager: action.payload }; + default: + return state; + } +}; + +export default reducer; diff --git a/apps/site/snippets/en/download/brew.bash b/apps/site/snippets/en/download/brew.bash index 166fca14ed9b5..5e9920102fa4f 100644 --- a/apps/site/snippets/en/download/brew.bash +++ b/apps/site/snippets/en/download/brew.bash @@ -1,14 +1,8 @@ -# NOTE: -# Homebrew is not a Node.js package manager. -# Please ensure it is already installed on your system. -# Follow official instructions at https://brew.sh/ -# Homebrew only supports installing major Node.js versions and might not support the latest Node.js version from the 22 release line. +# Download and install Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash -# download and install Node.js +# Download and install Node.js: brew install node@${props.release.major} -# verifies the right Node.js version is in the environment -node -v # should print "${props.release.versionWithPrefix}" - -# verifies the right npm version is in the environment -npm -v # should print "${props.release.npm}" +# Verify the Node.js version: +node -v # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/en/download/choco.bash b/apps/site/snippets/en/download/choco.bash index 84e8cd61e0fec..b6fb9190def21 100644 --- a/apps/site/snippets/en/download/choco.bash +++ b/apps/site/snippets/en/download/choco.bash @@ -1,14 +1,8 @@ -# NOTE: -# Chocolatey is not a Node.js package manager. -# Please ensure it is already installed on your system. -# Follow official instructions at https://chocolatey.org/ -# Chocolatey is not officially maintained by the Node.js project and might not support the v22.12.0 version of Node.js +# Download and install Chocolatey: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" -# download and install Node.js +# Download and install Node.js: choco install nodejs-lts --version="${props.release.major}" -# verifies the right Node.js version is in the environment -node -v # should print "${props.release.versionWithPrefix}" - -# verifies the right npm version is in the environment -npm -v # should print "${props.release.npm}" +# Verify the Node.js version: +node -v # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/en/download/docker.bash b/apps/site/snippets/en/download/docker.bash index e3617cf2d3225..9be099e1d7373 100644 --- a/apps/site/snippets/en/download/docker.bash +++ b/apps/site/snippets/en/download/docker.bash @@ -1,14 +1,11 @@ -# NOTE: -# Docker is not a Node.js package manager. -# Please ensure it is already installed on your system. -# Follow official instructions at https://docs.docker.com/desktop/ -# Docker images are provided officially at https://github.com/nodejs/docker-node/ +# Docker has specific installation instructions for each operating system. +# Please refer to the official documentation at https://docker.com/get-started/ -# pulls the Node.js Docker image +# Pull the Node.js Docker image: docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} -# verifies the right Node.js version is in the environment -docker run node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} node -v # should print "${props.release.versionWithPrefix}" +# Create a Node.js container and start a Shell session: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} -# verifies the right npm version is in the environment -docker run node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} npm -v # should print "${props.release.npm}" +# Verify the Node.js version: +node -v # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/en/download/fnm.bash b/apps/site/snippets/en/download/fnm.bash index b4ba5d71b721d..5692c0b633f25 100644 --- a/apps/site/snippets/en/download/fnm.bash +++ b/apps/site/snippets/en/download/fnm.bash @@ -1,14 +1,11 @@ -# installs fnm (Fast Node Manager) -curl -fsSL https://fnm.vercel.app/install | bash +# Download and install fnm: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} -# activate fnm -source ~/.bashrc +# Download and install Node.js: +fnm install ${props.release.major} -# download and install Node.js -fnm use --install-if-missing ${props.release.major} - -# verifies the right Node.js version is in the environment -node -v # should print "${props.release.versionWithPrefix}" - -# verifies the right npm version is in the environment -npm -v # should print "${props.release.npm}" +# Verify the Node.js version: +node -v # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/en/download/npm.bash b/apps/site/snippets/en/download/npm.bash new file mode 100644 index 0000000000000..b16d9cc5eb581 --- /dev/null +++ b/apps/site/snippets/en/download/npm.bash @@ -0,0 +1,2 @@ +# Verify npm version: +npm -v # Should print "${props.release.npm}". diff --git a/apps/site/snippets/en/download/nvm.bash b/apps/site/snippets/en/download/nvm.bash index 74ca8f037c4be..f2d3d4798f296 100644 --- a/apps/site/snippets/en/download/nvm.bash +++ b/apps/site/snippets/en/download/nvm.bash @@ -1,11 +1,9 @@ -# installs nvm (Node Version Manager) +# Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash -# download and install Node.js (you may need to restart the terminal) +# Download and install Node.js: nvm install ${props.release.major} -# verifies the right Node.js version is in the environment -node -v # should print "${props.release.versionWithPrefix}" - -# verifies the right npm version is in the environment -npm -v # should print "${props.release.npm}" +# Verify the Node.js version: +node -v # Should print "${props.release.versionWithPrefix}". +nvm current # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/en/download/pnpm.bash b/apps/site/snippets/en/download/pnpm.bash new file mode 100644 index 0000000000000..1bab2907480ce --- /dev/null +++ b/apps/site/snippets/en/download/pnpm.bash @@ -0,0 +1,5 @@ +# Download and install pnpm: +corepack enable pnpm + +# Verify pnpm version: +pnpm -v diff --git a/apps/site/snippets/en/download/yarn.bash b/apps/site/snippets/en/download/yarn.bash new file mode 100644 index 0000000000000..e9f8ae4d9b791 --- /dev/null +++ b/apps/site/snippets/en/download/yarn.bash @@ -0,0 +1,5 @@ +# Download and install Yarn: +corepack enable yarn + +# Verify Yarn version: +yarn -v diff --git a/apps/site/tsconfig.json b/apps/site/tsconfig.json index b9c7f4ce06c9a..3aee2c1724e0e 100644 --- a/apps/site/tsconfig.json +++ b/apps/site/tsconfig.json @@ -20,6 +20,7 @@ }, "include": [ "next-env.d.ts", + "global.d.ts", "**/*.mdx", "**/*.ts", "**/*.tsx", diff --git a/apps/site/types/blog.ts b/apps/site/types/blog.ts index d59650087c380..33e917c19a761 100644 --- a/apps/site/types/blog.ts +++ b/apps/site/types/blog.ts @@ -1,17 +1,18 @@ export type BlogPreviewType = 'announcements' | 'release' | 'vulnerability'; +export type BlogCategory = IntlMessageKeys<'layouts.blog.categories'>; export interface BlogPost { title: string; author: string; username: string; date: Date; - categories: Array<string>; + categories: Array<BlogCategory>; slug: string; } export interface BlogData { posts: Array<BlogPost>; - categories: Array<string>; + categories: Array<BlogCategory>; } export interface BlogPagination { diff --git a/apps/site/types/navigation.ts b/apps/site/types/navigation.ts index 73ff3aabb562f..b45d233bbb890 100644 --- a/apps/site/types/navigation.ts +++ b/apps/site/types/navigation.ts @@ -1,7 +1,7 @@ import type { HTMLAttributeAnchorTarget } from 'react'; export interface FooterConfig { - text: string; + text: IntlMessageKeys; link: string; } @@ -21,7 +21,7 @@ export type NavigationKeys = | 'blog'; export interface NavigationEntry { - label?: string; + label?: IntlMessageKeys; link?: string; items?: Record<string, NavigationEntry>; target?: HTMLAttributeAnchorTarget | undefined; diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index bb609e091bf6a..3ac64a633d340 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -1,43 +1,51 @@ -import type { ReactNode } from 'react'; - import type { DownloadSnippet } from '@/types/downloads'; import type { NodeRelease } from '@/types/releases'; -import type { UserOS } from '@/types/userOS'; +import type { UserOS, UserPlatform } from '@/types/userOS'; -export type PackageManager = 'NVM' | 'FNM' | 'BREW' | 'DOCKER' | 'CHOCO'; +export type InstallationMethod = 'NVM' | 'FNM' | 'BREW' | 'DOCKER' | 'CHOCO'; +export type PackageManager = 'NPM' | 'YARN' | 'PNPM'; +// Items with a pipe/default value mean that they are auto inferred +// during runtime and do not have necessarily a consistent initial value export interface ReleaseState { - os: UserOS; version: string; - bitness: string | number; - platform: PackageManager; + os: UserOS | 'LOADING'; + platform: UserPlatform | ''; + installMethod: InstallationMethod | ''; + packageManager: PackageManager; } export type ReleaseAction = - | { type: 'SET_OS'; payload: UserOS } | { type: 'SET_VERSION'; payload: string } - | { type: 'SET_BITNESS'; payload: string | number } - | { type: 'SET_PLATFORM'; payload: PackageManager }; + | { type: 'SET_OS'; payload: UserOS } + | { type: 'SET_PLATFORM'; payload: UserPlatform } + | { type: 'SET_INSTALL_METHOD'; payload: InstallationMethod } + | { type: 'SET_MANAGER'; payload: PackageManager }; export interface ReleaseDispatchActions { setVersion: (version: string) => void; setOS: (os: UserOS) => void; - setBitness: (bitness: string | number) => void; - setPlatform: (platform: PackageManager) => void; + setPlatform: (bitness: UserPlatform) => void; + setInstallMethod: (installMethod: InstallationMethod) => void; + setPackageManager: (packageManager: PackageManager) => void; +} + +export interface ReleasesContextType { + releases: Array<NodeRelease>; + snippets: Array<DownloadSnippet>; } export interface ReleaseContextType extends ReleaseState, ReleaseDispatchActions { - releases: Array<NodeRelease>; - snippets: Array<DownloadSnippet>; release: NodeRelease; - snippet: DownloadSnippet; } -export interface ReleaseProviderProps { - children: ReactNode; +export interface ReleasesProviderProps { releases: Array<NodeRelease>; snippets: Array<DownloadSnippet>; - initialRelease: NodeRelease; +} + +export interface ReleaseProviderProps { + initialRelease?: NodeRelease; } diff --git a/apps/site/types/userOS.ts b/apps/site/types/userOS.ts index 3c3ea522e213d..39a3911e55b0e 100644 --- a/apps/site/types/userOS.ts +++ b/apps/site/types/userOS.ts @@ -1 +1,15 @@ -export type UserOS = 'MAC' | 'WIN' | 'LINUX' | 'AIX' | 'OTHER' | 'LOADING'; +export type UserOS = 'MAC' | 'WIN' | 'LINUX' | 'AIX' | 'OTHER'; + +export type UserBitness = '64' | '32'; + +export type UserArchitecture = 'arm' | 'x86'; + +export type UserPlatform = + | 'arm64' + | 'armv7l' + | 'ppc64le' + | 'ppc64' + | 's390x' + | 'ppc64' + | 'x64' + | 'x86'; diff --git a/apps/site/util/__tests__/downloadUtils.test.mjs b/apps/site/util/__tests__/downloadUtils.test.mjs deleted file mode 100644 index f879487bab25a..0000000000000 --- a/apps/site/util/__tests__/downloadUtils.test.mjs +++ /dev/null @@ -1,159 +0,0 @@ -import { - getDownloadCategory, - mapCategoriesToTabs, - formatDropdownItems, -} from '@/util/downloadUtils'; - -describe('formatDropdownItems', () => { - it('should format dropdown items correctly', () => { - const items = [ - { value: 'item1', label: 'Item 1' }, - { value: 'item2', label: 'Item 2' }, - ]; - const disabledItems = ['item2']; - const icons = { item1: 'icon' }; - const defaultIcon = 'defaultIcon'; - - const result = formatDropdownItems({ - items: items, - disabledItems: disabledItems, - icons: icons, - defaultIcon: defaultIcon, - }); - - expect(result).toEqual([ - { value: 'item1', label: 'Item 1', disabled: false, iconImage: 'icon' }, - { - value: 'item2', - label: 'Item 2', - disabled: true, - iconImage: 'defaultIcon', - }, - ]); - }); - - it('should mark all items as disabled when all items are in the disabledItems list', () => { - const items = [ - { value: 'item1', label: 'Item 1' }, - { value: 'item2', label: 'Item 2' }, - ]; - const disabledItems = ['item1', 'item2']; - - const result = formatDropdownItems({ - items: items, - disabledItems: disabledItems, - }); - - expect(result).toEqual([ - { value: 'item1', label: 'Item 1', disabled: true }, - { value: 'item2', label: 'Item 2', disabled: true }, - ]); - }); - - it('should not mark any items as disabled when disabledItems list is empty', () => { - const items = [ - { value: 'item1', label: 'Item 1' }, - { value: 'item2', label: 'Item 2' }, - ]; - - const result = formatDropdownItems({ items: items }); - - expect(result).toEqual([ - { value: 'item1', label: 'Item 1', disabled: false }, - { value: 'item2', label: 'Item 2', disabled: false }, - ]); - }); -}); - -describe('getDownloadCategory', () => { - it('should return correct category information for /download/current', () => { - const result = getDownloadCategory('/download/current'); - - expect(result).toEqual({ - page: 'download', - category: 'download', - subCategory: 'current', - }); - }); - - it('should return correct category information for /download/category/subcategory', () => { - const result = getDownloadCategory('/download/category/subcategory'); - - expect(result).toEqual({ - page: 'download', - category: 'category', - subCategory: 'subcategory', - }); - }); - - it('should return correct category information for /download/category', () => { - const result = getDownloadCategory('/download/category'); - - expect(result).toEqual({ - page: 'download', - category: 'category', - subCategory: undefined, - }); - }); -}); - -describe('mapCategoriesToTabs', () => { - it('should return correct tabs for download page when subcategory current', () => { - const result = mapCategoriesToTabs({ - page: 'download', - categories: [ - { - category: 'prebuilt-binaries', - label: 'Prebuilt Binaries', - }, - { - category: 'package-manager', - label: 'Package Manager', - }, - ], - subCategory: 'current', - }); - - expect(result).toEqual([ - { - key: 'prebuilt-binaries', - label: 'Prebuilt Binaries', - link: '/download/prebuilt-binaries/current', - }, - { - key: 'package-manager', - label: 'Package Manager', - link: '/download/package-manager/current', - }, - ]); - }); - - it('should return correct tabs for download page when subcategory not defined', () => { - const result = mapCategoriesToTabs({ - page: 'download', - categories: [ - { - category: 'prebuilt-binaries', - label: 'Prebuilt Binaries', - }, - { - category: 'package-manager', - label: 'Package Manager', - }, - ], - }); - - expect(result).toEqual([ - { - key: 'prebuilt-binaries', - label: 'Prebuilt Binaries', - link: '/download/prebuilt-binaries', - }, - { - key: 'package-manager', - label: 'Package Manager', - link: '/download/package-manager', - }, - ]); - }); -}); diff --git a/apps/site/util/__tests__/getBitness.test.mjs b/apps/site/util/__tests__/getBitness.test.mjs deleted file mode 100644 index 9fe4feeba15f5..0000000000000 --- a/apps/site/util/__tests__/getBitness.test.mjs +++ /dev/null @@ -1,53 +0,0 @@ -import { getBitness } from '@/util/getBitness'; - -describe('getBitness', () => { - it('returns the bitness value when available', async () => { - const mockGetHighEntropyValues = jest - .fn() - .mockResolvedValue({ bitness: 64 }); - - const mockNavigator = { - userAgentData: { getHighEntropyValues: mockGetHighEntropyValues }, - }; - - jest.spyOn(global, 'navigator', 'get').mockReturnValue(mockNavigator); - - const result = await getBitness(); - - expect(result).toBe(64); - expect(mockGetHighEntropyValues).toHaveBeenCalledWith(['bitness']); - - jest.restoreAllMocks(); - }); - - it('returns undefined when navigator.userAgentData or getHighEntropyValues is not available', async () => { - const mockNavigator = {}; - - jest.spyOn(global, 'navigator', 'get').mockReturnValue(mockNavigator); - - const result = await getBitness(); - - expect(result).toBeUndefined(); - - jest.restoreAllMocks(); - }); - - it('returns undefined when getHighEntropyValues fails', async () => { - const mockGetHighEntropyValues = jest - .fn() - .mockRejectedValue(new Error('Some error')); - - const mockNavigator = { - userAgentData: { getHighEntropyValues: mockGetHighEntropyValues }, - }; - - jest.spyOn(global, 'navigator', 'get').mockReturnValue(mockNavigator); - - const result = await getBitness(); - - expect(result).toBeUndefined(); - expect(mockGetHighEntropyValues).toHaveBeenCalledWith(['bitness']); - - jest.restoreAllMocks(); - }); -}); diff --git a/apps/site/util/__tests__/getUserBitnessByArchitecture.test.mjs b/apps/site/util/__tests__/getUserBitnessByArchitecture.test.mjs deleted file mode 100644 index e6243c4cf344f..0000000000000 --- a/apps/site/util/__tests__/getUserBitnessByArchitecture.test.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { getUserBitnessByArchitecture } from '@/util/getUserBitnessByArchitecture'; - -describe('getUserBitnessByArchitecture', () => { - it('should return "arm64" for arm architecture and 64-bit', () => { - const result = getUserBitnessByArchitecture('arm', 64); - expect(result).toBe('arm64'); - }); - - it('should return the user bitness for other architectures', () => { - const result = getUserBitnessByArchitecture('x86', 32); - expect(result).toBe(32); - }); -}); diff --git a/apps/site/util/downloadUtils.ts b/apps/site/util/downloadUtils.ts deleted file mode 100644 index 0aa6c19a0fea2..0000000000000 --- a/apps/site/util/downloadUtils.ts +++ /dev/null @@ -1,173 +0,0 @@ -import type { JSX } from 'react'; - -import type { PackageManager } from '@/types/release'; -import type { UserOS } from '@/types/userOS'; - -export enum OperatingSystemLabel { - WIN = 'Windows', - MAC = 'macOS', - LINUX = 'Linux', - AIX = 'AIX', - OTHER = 'Other', -} - -export enum PackageManagerLabel { - NVM = 'nvm', - FNM = 'fnm', - BREW = 'Brew', - CHOCO = 'Chocolatey', - DOCKER = 'Docker', -} - -export const operatingSystemItems = [ - { - label: OperatingSystemLabel.WIN, - value: 'WIN' as UserOS, - }, - { - label: OperatingSystemLabel.MAC, - value: 'MAC' as UserOS, - }, - { - label: OperatingSystemLabel.LINUX, - value: 'LINUX' as UserOS, - }, - { - label: OperatingSystemLabel.AIX, - value: 'AIX' as UserOS, - }, -]; - -export const platformItems = [ - { - label: PackageManagerLabel.NVM, - value: 'NVM' as PackageManager, - }, - { - label: PackageManagerLabel.FNM, - value: 'FNM' as PackageManager, - }, - { - label: PackageManagerLabel.BREW, - value: 'BREW' as PackageManager, - }, - { - label: PackageManagerLabel.CHOCO, - value: 'CHOCO' as PackageManager, - }, - { - label: PackageManagerLabel.DOCKER, - value: 'DOCKER' as PackageManager, - }, -]; - -export const bitnessItems = { - WIN: [ - { - label: 'x64', - value: '64', - }, - { - label: 'x86', - value: '86', - }, - { - label: 'ARM64', - value: 'arm64', - }, - ], - MAC: [ - { - label: 'x64', - value: '64', - }, - { - label: 'ARM64', - value: 'arm64', - }, - ], - LINUX: [ - { - label: 'x64', - value: '64', - }, - { - label: 'ARMv7', - value: 'armv7l', - }, - { - label: 'ARM64', - value: 'arm64', - }, - { - label: 'Power LE', - value: 'ppc64le', - }, - { - label: 'System Z', - value: 's390x', - }, - ], - AIX: [ - { - label: 'Power', - value: 'ppc64', - }, - ], - OTHER: [], - LOADING: [], -}; - -type formatDropdownItemsType = { - items: Array<{ label: string; value: string }>; - disabledItems?: Array<string>; - icons?: Record<string, JSX.Element>; - defaultIcon?: JSX.Element; -}; - -// Formats the dropdown items to be used in the `Select` component in the -// download page and adds the icons, and disabled status to the dropdown items. -export const formatDropdownItems = ({ - items, - disabledItems = [], - icons = {}, - defaultIcon, -}: formatDropdownItemsType) => - items.map(item => ({ - ...item, - disabled: disabledItems.includes(item.value), - iconImage: icons[item.value] || defaultIcon, - })); - -// Returns the page, category and subCategoy information to be used in the page -// from the pathname information on the download pages. -export const getDownloadCategory = (pathname: string) => { - const segments = pathname.split('/').filter(Boolean); - const [, c] = segments; - - if (c === 'current' || typeof c === 'undefined') { - segments.unshift('download'); - } - - const [page, category, subCategory] = segments; - - return { page, category, subCategory }; -}; - -type CategoryTabMappingParams = { - page: string; - categories: Array<{ category: string; label: string }>; - subCategory: string; -}; - -// Utility method used to create URLs and labels to be used in Tabs -export const mapCategoriesToTabs = ({ - page, - categories, - subCategory, -}: CategoryTabMappingParams) => - categories.map(({ category, label }) => ({ - key: category, - label: label, - link: `/${[page, category, subCategory].filter(Boolean).join('/')}`, - })); diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx new file mode 100644 index 0000000000000..61ff7ccba9937 --- /dev/null +++ b/apps/site/util/downloadUtils.tsx @@ -0,0 +1,296 @@ +import satisfies from 'semver/functions/satisfies'; + +import type { SelectValue } from '@/components/Common/Select'; +import OSIcons from '@/components/Icons/OperatingSystem'; +import PackageManagerIcons from '@/components/Icons/PackageManager'; +import PlatformIcons from '@/components/Icons/Platform'; +import type { NodeReleaseStatus } from '@/types'; +import type * as Types from '@/types/release'; +import type { UserOS, UserPlatform } from '@/types/userOS'; + +// This is a manual list of OS's that do not support/have a way of being installed +// with an executable installer. This is used to disable the installer button. +// Note: Windows has one tiny exception for x64 on Node.js versions < 4.0.0 +export const OS_NOT_SUPPORTING_INSTALLERS: Array<UserOS | 'LOADING'> = [ + 'LINUX', + 'AIX', + 'OTHER', + 'LOADING', +]; + +export enum OperatingSystemLabel { + WIN = 'Windows', + MAC = 'macOS', + LINUX = 'Linux', + AIX = 'AIX', + OTHER = 'Other', + LOADING = 'N/A', +} + +export enum InstallationMethodLabel { + NVM = 'nvm', + FNM = 'fnm', + BREW = 'Brew', + CHOCO = 'Chocolatey', + DOCKER = 'Docker', +} + +export enum PackageManagerLabel { + NPM = 'npm', + YARN = 'Yarn', + PNPM = 'pnpm', +} + +type DownloadCompatibility = { + os: Array<UserOS>; + installMethod: Array<Types.InstallationMethod>; + platform: Array<UserPlatform>; + semver: Array<string>; + releases: Array<NodeReleaseStatus>; +}; + +// Defines the Type definition for a Release Dropdown Item +type DownloadDropdownItem<T extends string> = { + // A label to be used within the Dropdown message + label: string; + // A flag that indicates if the item is recommended or not (official or community based) + recommended?: boolean; + // A URL pointing to the docs or support page for the item + url?: string; + // A bottom info that provides additional information about the item + info?: IntlMessageKeys; + // A compatibility object that defines the compatibility of the item with the current Release Context + compatibility: Partial<DownloadCompatibility>; +} & Omit<SelectValue<T>, 'label'>; + +// This function is used to get the next item in the dropdown +// when the current item is disabeld/excluded/not valid +// And this is useful when a parent release value (i.e. OS) is changed +// and requires the current dropdown (i.e. Platform) to be updated +export const nextItem = <T extends string>( + current: T, + items: Array<DownloadDropdownItem<T>> +): T => { + const item = items.find(({ value }) => String(value) === String(current)); + + const isDisabledOrExcluded = !item || item.disabled; + + if (isDisabledOrExcluded) { + const nextItem = items.find(({ disabled }) => !disabled); + + if (nextItem) { + return nextItem.value; + } + } + + return current; +}; + +// This function is used to parse the compatibility of the dropdown items +// In a nice and static way that allows a lot of abstraction and flexibility +export const parseCompat = < + K extends string, + T extends DownloadDropdownItem<K>, +>( + items: Array<T>, + { os, installMethod, platform, version, release }: Types.ReleaseContextType +): Array<T> => { + const satisfiesSemver = (semver: string) => satisfies(version, semver); + + const supportsOS = (i: T['compatibility']) => + os === 'LOADING' || (i.os?.includes(os) ?? true); + + const supportsInstallMethod = (i: T['compatibility']) => + (installMethod === '' || i.installMethod?.includes(installMethod)) ?? true; + + const supportsPlatform = (i: T['compatibility']) => + platform === '' || (i.platform?.includes(platform) ?? true); + + const supportsVersion = (i: T['compatibility']) => + i.semver?.some(satisfiesSemver) ?? true; + + const supportsRelease = (i: T['compatibility']) => + i.releases?.includes(release.status) ?? true; + + return items.map(item => ({ + ...item, + disabled: + !supportsOS(item.compatibility) || + !supportsInstallMethod(item.compatibility) || + !supportsPlatform(item.compatibility) || + !supportsVersion(item.compatibility) || + !supportsRelease(item.compatibility), + })); +}; + +export const OPERATING_SYSTEMS: Array<DownloadDropdownItem<UserOS>> = [ + { + label: OperatingSystemLabel.WIN, + value: 'WIN', + compatibility: {}, + iconImage: <OSIcons.Microsoft width={16} height={16} />, + }, + { + label: OperatingSystemLabel.MAC, + value: 'MAC', + compatibility: {}, + iconImage: <OSIcons.Apple width={16} height={16} />, + }, + { + label: OperatingSystemLabel.LINUX, + value: 'LINUX', + compatibility: {}, + iconImage: <OSIcons.Linux width={16} height={16} />, + }, + { + label: OperatingSystemLabel.AIX, + value: 'AIX', + compatibility: { installMethod: [] }, + iconImage: <OSIcons.AIX width={16} height={16} />, + }, +]; + +export const INSTALL_METHODS: Array< + DownloadDropdownItem<Types.InstallationMethod> & + // Since the ReleaseCodeBox requires an info key to be provided, we force this + // to be mandatory for install methods + Required< + Pick<DownloadDropdownItem<Types.InstallationMethod>, 'info' | 'url'> + > +> = [ + { + label: InstallationMethodLabel.NVM, + value: 'NVM', + compatibility: { os: ['MAC', 'LINUX', 'OTHER'] }, + iconImage: <PlatformIcons.NVM width={16} height={16} />, + recommended: true, + url: 'https://github.com/nvm-sh/nvm', + info: 'layouts.download.codeBox.platformInfo.nvm', + }, + { + label: InstallationMethodLabel.FNM, + value: 'FNM', + compatibility: { os: ['MAC', 'LINUX', 'WIN'] }, + iconImage: <PlatformIcons.FNM width={16} height={16} />, + url: 'https://github.com/Schniz/fnm', + info: 'layouts.download.codeBox.platformInfo.fnm', + }, + { + label: InstallationMethodLabel.BREW, + value: 'BREW', + compatibility: { os: ['MAC', 'LINUX'], releases: ['Current', 'LTS'] }, + iconImage: <PlatformIcons.Homebrew width={16} height={16} />, + url: 'https://brew.sh/', + info: 'layouts.download.codeBox.platformInfo.brew', + }, + { + label: InstallationMethodLabel.CHOCO, + value: 'CHOCO', + compatibility: { os: ['WIN'] }, + iconImage: <PlatformIcons.Choco width={16} height={16} />, + url: 'https://chocolatey.org/', + info: 'layouts.download.codeBox.platformInfo.choco', + }, + { + label: InstallationMethodLabel.DOCKER, + value: 'DOCKER', + compatibility: { os: ['WIN', 'MAC', 'LINUX'] }, + iconImage: <PlatformIcons.Docker width={16} height={16} />, + recommended: true, + url: 'https://docs.docker.com/get-started/get-docker/', + info: 'layouts.download.codeBox.platformInfo.docker', + }, +]; + +export const PACKAGE_MANAGERS: Array< + DownloadDropdownItem<Types.PackageManager> +> = [ + { + label: PackageManagerLabel.NPM, + value: 'NPM', + compatibility: {}, + iconImage: <PackageManagerIcons.NPM width={16} height={16} />, + }, + { + label: PackageManagerLabel.YARN, + value: 'YARN', + compatibility: { semver: ['>= v14.19.0', '>= v16.9.0'] }, + iconImage: <PackageManagerIcons.YARN width={16} height={16} />, + }, + { + label: PackageManagerLabel.PNPM, + value: 'PNPM', + compatibility: { semver: ['>= v14.19.0', '>= v16.9.0'] }, + iconImage: <PackageManagerIcons.PNPM width={16} height={16} />, + }, +]; + +export const PLATFORMS: Record< + UserOS, + Array<DownloadDropdownItem<UserPlatform>> +> = { + WIN: [ + { + label: 'x64', + value: 'x64', + compatibility: {}, + }, + { + label: 'x86', + value: 'x86', + compatibility: { semver: ['< 23.0.0'] }, + }, + { + label: 'ARM64', + value: 'arm64', + compatibility: { semver: ['>= 19.9.0'] }, + }, + ], + MAC: [ + { + label: 'x64', + value: 'x64', + compatibility: {}, + }, + { + label: 'ARM64', + value: 'arm64', + compatibility: {}, + }, + ], + LINUX: [ + { + label: 'x64', + value: 'x64', + compatibility: {}, + }, + { + label: 'ARMv7', + value: 'armv7l', + compatibility: { semver: ['>= 4.0.0'] }, + }, + { + label: 'ARM64', + value: 'arm64', + compatibility: { semver: ['>= 4.0.0'] }, + }, + { + label: 'Power LE', + value: 'ppc64le', + compatibility: { semver: ['>= 4.4.0'] }, + }, + { + label: 'System Z', + value: 's390x', + compatibility: { semver: ['>= 6.6.0'] }, + }, + ], + AIX: [ + { + label: 'Power', + value: 'ppc64', + compatibility: { semver: ['>= 6.7.0'] }, + }, + ], + OTHER: [], +}; diff --git a/apps/site/util/getArchitecture.ts b/apps/site/util/getArchitecture.ts deleted file mode 100644 index 1601e3cb828df..0000000000000 --- a/apps/site/util/getArchitecture.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// <reference types="user-agent-data-types" /> - -export const getArchitecture = async () => { - // This is necessary to detect Windows 11 on Edge. - // [MDN](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues) - // [MSFT](https://learn.microsoft.com/en-us/microsoft-edge/web-platform/how-to-detect-win11) - if (typeof navigator?.userAgentData?.getHighEntropyValues === 'function') { - const entropyValues = navigator.userAgentData.getHighEntropyValues([ - 'architecture', - ]); - - // Apparently in some cases this is not a Promise, we can Promisify it. - return Promise.resolve(entropyValues) - .then(({ architecture }) => architecture) - .catch(() => undefined); - } - - return undefined; -}; diff --git a/apps/site/util/getBitness.ts b/apps/site/util/getBitness.ts deleted file mode 100644 index 55f9509e86635..0000000000000 --- a/apps/site/util/getBitness.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// <reference types="user-agent-data-types" /> - -export const getBitness = async () => { - // This is necessary to detect Windows 11 on Edge. - // [MDN](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues) - // [MSFT](https://learn.microsoft.com/en-us/microsoft-edge/web-platform/how-to-detect-win11) - if (typeof navigator?.userAgentData?.getHighEntropyValues === 'function') { - const entropyValues = navigator.userAgentData.getHighEntropyValues([ - 'bitness', - ]); - - // Apparently in some cases this is not a Promise, we can Promisify it. - return Promise.resolve(entropyValues) - .then(({ bitness }) => bitness) - .catch(() => undefined); - } - - return undefined; -}; diff --git a/apps/site/util/getHighEntropyValues.ts b/apps/site/util/getHighEntropyValues.ts new file mode 100644 index 0000000000000..8a066490bb666 --- /dev/null +++ b/apps/site/util/getHighEntropyValues.ts @@ -0,0 +1,33 @@ +/// <reference types="user-agent-data-types" /> + +// This method is used to retrieve a User's platform based on their architecture and bitness. +// @see https://wicg.github.io/ua-client-hints/#http-ua-hints +export const getHighEntropyValues = async <T extends Array<keyof UADataValues>>( + hints: T +) => { + let result: UADataValues = {}; + + // This is necessary to detect Windows 11 on Edge. + // [MDN](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues) + // [MSFT](https://learn.microsoft.com/en-us/microsoft-edge/web-platform/how-to-detect-win11) + if (typeof navigator?.userAgentData?.getHighEntropyValues === 'function') { + const entropyValues = navigator.userAgentData.getHighEntropyValues(hints); + + // Apparently in some cases this is not a Promise, we can Promisify it. + result = await Promise.resolve(entropyValues).catch( + // Fallback to an empty object if the Promise fails. + () => ({}) as UADataValues + ); + } + + const mappedResult = hints.map(hint => [ + hint, + // Since the values could come as empty string in some situations + // we should check if the hint is present in the result and if it's not an empty string. + hint in result && result[hint] ? result[hint] : undefined, + ]); + + return Object.fromEntries(mappedResult) as { + [K in T[number]]: UADataValues[K]; + }; +}; diff --git a/apps/site/util/getNodeDownloadUrl.ts b/apps/site/util/getNodeDownloadUrl.ts index 12ad77e8e02c9..9775c4c675188 100644 --- a/apps/site/util/getNodeDownloadUrl.ts +++ b/apps/site/util/getNodeDownloadUrl.ts @@ -1,12 +1,14 @@ import { DIST_URL } from '@/next.constants.mjs'; -import type { UserOS } from '@/types/userOS'; +import type { UserOS, UserPlatform } from '@/types/userOS'; + +type DownloadKind = 'installer' | 'binary' | 'source'; export const getNodeDownloadUrl = ( versionWithPrefix: string, - os: UserOS, - bitness: string | number, - kind: 'installer' | 'binary' | 'source' = 'installer' -): string => { + os: UserOS | 'LOADING', + platform: UserPlatform = 'x64', + kind: DownloadKind = 'installer' +) => { const baseURL = `${DIST_URL}${versionWithPrefix}`; if (kind === 'source') { @@ -21,8 +23,8 @@ export const getNodeDownloadUrl = ( } // Prepares a downloadable Node.js link for the ARM64 platform - if (typeof bitness === 'string') { - return `${baseURL}/node-${versionWithPrefix}-darwin-${bitness}.tar.gz`; + if (typeof platform === 'string') { + return `${baseURL}/node-${versionWithPrefix}-darwin-${platform}.tar.gz`; } // Prepares a downloadable Node.js link for the x64 platform. @@ -32,27 +34,27 @@ export const getNodeDownloadUrl = ( case 'WIN': { if (kind === 'installer') { // Prepares a downloadable Node.js installer link for the ARM platforms - if (typeof bitness === 'string') { - return `${baseURL}/node-${versionWithPrefix}-${bitness}.msi`; + if (typeof platform === 'string') { + return `${baseURL}/node-${versionWithPrefix}-${platform}.msi`; } // Prepares a downloadable Node.js installer link for the x64 and x86 platforms - return `${baseURL}/node-${versionWithPrefix}-x${bitness}.msi`; + return `${baseURL}/node-${versionWithPrefix}-x${platform}.msi`; } // Prepares a downloadable Node.js link for the ARM64 platform - if (typeof bitness === 'string') { - return `${baseURL}/node-${versionWithPrefix}-win-${bitness}.zip`; + if (typeof platform === 'string') { + return `${baseURL}/node-${versionWithPrefix}-win-${platform}.zip`; } // Prepares a downloadable Node.js link for the x64 and x86 platforms - return `${baseURL}/node-${versionWithPrefix}-win-x${bitness}.zip`; + return `${baseURL}/node-${versionWithPrefix}-win-x${platform}.zip`; } case 'LINUX': // Prepares a downloadable Node.js link for the ARM platforms such as // ARMv7 and ARMv8 - if (typeof bitness === 'string') { - return `${baseURL}/node-${versionWithPrefix}-linux-${bitness}.tar.xz`; + if (typeof platform === 'string') { + return `${baseURL}/node-${versionWithPrefix}-linux-${platform}.tar.xz`; } // Prepares a downloadable Node.js link for the x64 platform. @@ -61,8 +63,8 @@ export const getNodeDownloadUrl = ( return `${baseURL}/node-${versionWithPrefix}-linux-x64.tar.xz`; case 'AIX': // Prepares a downloadable Node.js link for AIX - if (typeof bitness === 'string') { - return `${baseURL}/node-${versionWithPrefix}-aix-${bitness}.tar.gz`; + if (typeof platform === 'string') { + return `${baseURL}/node-${versionWithPrefix}-aix-${platform}.tar.gz`; } return `${baseURL}/node-${versionWithPrefix}-aix-ppc64.tar.gz`; diff --git a/apps/site/util/getUserBitnessByArchitecture.ts b/apps/site/util/getUserBitnessByArchitecture.ts deleted file mode 100644 index b6c1461ad7a8c..0000000000000 --- a/apps/site/util/getUserBitnessByArchitecture.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const getUserBitnessByArchitecture = ( - userArchitecture: string, - userBitness: number -) => { - if (userArchitecture === 'arm' && userBitness === 64) { - return 'arm64'; - } - - return userBitness; -}; diff --git a/apps/site/util/getUserPlatform.ts b/apps/site/util/getUserPlatform.ts new file mode 100644 index 0000000000000..3341cccca5286 --- /dev/null +++ b/apps/site/util/getUserPlatform.ts @@ -0,0 +1,15 @@ +import type * as Types from '@/types/userOS'; + +// This method is used to retrieve a User's platform based on their architecture and bitness. +// Note: This is only used for automatic Platform detection for supported platforms by using `useDetectOS` +// @see https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues +export const getUserPlatform = ( + userArchitecture: Types.UserArchitecture | '', + userBitness: Types.UserBitness | '' +): Types.UserPlatform => { + if (userArchitecture === 'arm' && userBitness === '64') { + return 'arm64'; + } + + return userBitness === '64' ? 'x64' : 'x86'; +}; diff --git a/package-lock.json b/package-lock.json index e564e248048b6..e2427520fb397 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,8 +63,8 @@ "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "15.1.2", - "next-intl": "~3.25.3", + "next": "15.1.3", + "next-intl": "~3.26.3", "next-themes": "~0.4.3", "postcss": "~8.4.49", "postcss-calc": "~10.0.2", @@ -88,7 +88,7 @@ }, "devDependencies": { "@eslint/compat": "~1.2.3", - "@next/eslint-plugin-next": "15.1.2", + "@next/eslint-plugin-next": "15.1.3", "@storybook/addon-controls": "^8.4.6", "@storybook/addon-interactions": "^8.4.6", "@storybook/addon-styling-webpack": "^1.0.1", @@ -103,7 +103,7 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", - "eslint-config-next": "15.1.2", + "eslint-config-next": "15.1.3", "eslint-import-resolver-typescript": "~3.6.3", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.2", @@ -3103,15 +3103,15 @@ } }, "node_modules/@next/env": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.2.tgz", - "integrity": "sha512-Hm3jIGsoUl6RLB1vzY+dZeqb+/kWPZ+h34yiWxW0dV87l8Im/eMOwpOA+a0L78U0HM04syEjXuRlCozqpwuojQ==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.3.tgz", + "integrity": "sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.2.tgz", - "integrity": "sha512-sgfw3+WdaYOGPKCvM1L+UucBmRfh8V2Ygefp7ELON0+0vY7uohQwXXnVWg3rY7mXDKharQR3o7uedpfvnU2hlQ==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.3.tgz", + "integrity": "sha512-oeP1vnc5Cq9UoOb8SYHAEPbCXMzOgG70l+Zfd+Ie00R25FOm+CCVNrcIubJvB1tvBgakXE37MmqSycksXVPRqg==", "dev": true, "license": "MIT", "dependencies": { @@ -3119,9 +3119,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.2.tgz", - "integrity": "sha512-b9TN7q+j5/7+rGLhFAVZiKJGIASuo8tWvInGfAd8wsULjB1uNGRCj1z1WZwwPWzVQbIKWFYqc+9L7W09qwt52w==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.3.tgz", + "integrity": "sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==", "cpu": [ "arm64" ], @@ -3135,9 +3135,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.2.tgz", - "integrity": "sha512-caR62jNDUCU+qobStO6YJ05p9E+LR0EoXh1EEmyU69cYydsAy7drMcOlUlRtQihM6K6QfvNwJuLhsHcCzNpqtA==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.3.tgz", + "integrity": "sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==", "cpu": [ "x64" ], @@ -3151,9 +3151,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.2.tgz", - "integrity": "sha512-fHHXBusURjBmN6VBUtu6/5s7cCeEkuGAb/ZZiGHBLVBXMBy4D5QpM8P33Or8JD1nlOjm/ZT9sEE5HouQ0F+hUA==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.3.tgz", + "integrity": "sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==", "cpu": [ "arm64" ], @@ -3167,9 +3167,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.2.tgz", - "integrity": "sha512-9CF1Pnivij7+M3G74lxr+e9h6o2YNIe7QtExWq1KUK4hsOLTBv6FJikEwCaC3NeYTflzrm69E5UfwEAbV2U9/g==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.3.tgz", + "integrity": "sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==", "cpu": [ "arm64" ], @@ -3183,9 +3183,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.2.tgz", - "integrity": "sha512-tINV7WmcTUf4oM/eN3Yuu/f8jQ5C6AkueZPKeALs/qfdfX57eNv4Ij7rt0SA6iZ8+fMobVfcFVv664Op0caCCg==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.3.tgz", + "integrity": "sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==", "cpu": [ "x64" ], @@ -3199,9 +3199,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.2.tgz", - "integrity": "sha512-jf2IseC4WRsGkzeUw/cK3wci9pxR53GlLAt30+y+B+2qAQxMw6WAC3QrANIKxkcoPU3JFh/10uFfmoMDF9JXKg==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.3.tgz", + "integrity": "sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==", "cpu": [ "x64" ], @@ -3215,9 +3215,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.2.tgz", - "integrity": "sha512-wvg7MlfnaociP7k8lxLX4s2iBJm4BrNiNFhVUY+Yur5yhAJHfkS8qPPeDEUH8rQiY0PX3u/P7Q/wcg6Mv6GSAA==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.3.tgz", + "integrity": "sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==", "cpu": [ "arm64" ], @@ -3231,9 +3231,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.2.tgz", - "integrity": "sha512-D3cNA8NoT3aWISWmo7HF5Eyko/0OdOO+VagkoJuiTk7pyX3P/b+n8XA/MYvyR+xSVcbKn68B1rY9fgqjNISqzQ==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.3.tgz", + "integrity": "sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==", "cpu": [ "x64" ], @@ -5055,9 +5055,9 @@ } }, "node_modules/@storybook/csf": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.12.tgz", - "integrity": "sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.13.tgz", + "integrity": "sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5413,9 +5413,9 @@ } }, "node_modules/@swc/core": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.1.tgz", - "integrity": "sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.2.tgz", + "integrity": "sha512-d3reIYowBL6gbp4jC6FRZ3hE0eWcWwqh0XcHd6k5rKF/oZA6jLb7gxIRduJhrn+jyLz/HCC8WyfomUkEcs7iZQ==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -5431,16 +5431,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.10.1", - "@swc/core-darwin-x64": "1.10.1", - "@swc/core-linux-arm-gnueabihf": "1.10.1", - "@swc/core-linux-arm64-gnu": "1.10.1", - "@swc/core-linux-arm64-musl": "1.10.1", - "@swc/core-linux-x64-gnu": "1.10.1", - "@swc/core-linux-x64-musl": "1.10.1", - "@swc/core-win32-arm64-msvc": "1.10.1", - "@swc/core-win32-ia32-msvc": "1.10.1", - "@swc/core-win32-x64-msvc": "1.10.1" + "@swc/core-darwin-arm64": "1.10.2", + "@swc/core-darwin-x64": "1.10.2", + "@swc/core-linux-arm-gnueabihf": "1.10.2", + "@swc/core-linux-arm64-gnu": "1.10.2", + "@swc/core-linux-arm64-musl": "1.10.2", + "@swc/core-linux-x64-gnu": "1.10.2", + "@swc/core-linux-x64-musl": "1.10.2", + "@swc/core-win32-arm64-msvc": "1.10.2", + "@swc/core-win32-ia32-msvc": "1.10.2", + "@swc/core-win32-x64-msvc": "1.10.2" }, "peerDependencies": { "@swc/helpers": "*" @@ -5452,9 +5452,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.1.tgz", - "integrity": "sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.2.tgz", + "integrity": "sha512-xPDbCUfGdVjA/0yhRFVSyog73wO3/W3JNgx1PkOcCc+0OgZtgAnt4YD8QbSsUE+euc5bQJs/7HfJQ3305+HWVA==", "cpu": [ "arm64" ], @@ -5469,9 +5469,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.1.tgz", - "integrity": "sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.2.tgz", + "integrity": "sha512-Dm4R9ffQw4yrGjvdYxxuO5RViwkRkSsn64WF7YGYZIlhkyFoseibPnQlOsx5qnjquc8f3h1C8/806XG+y3rMaQ==", "cpu": [ "x64" ], @@ -5486,9 +5486,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.1.tgz", - "integrity": "sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.2.tgz", + "integrity": "sha512-aXTqgel7AueM7CcCOFFUq6+gJyD/A3rFBWxPT6wA34IC7oQ0IIFpJjBLl8zN6/0aZ4OQ1ExlQ7zoKaTlk5tBug==", "cpu": [ "arm" ], @@ -5503,9 +5503,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.1.tgz", - "integrity": "sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.2.tgz", + "integrity": "sha512-HYFag6ULpnVMnHuKKAFuZH3kco/2eKKZ24I+gI2M4JlIW4soDmP8Oc2eAADIloln4SfQXzADX34m6merCWp65g==", "cpu": [ "arm64" ], @@ -5520,9 +5520,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.1.tgz", - "integrity": "sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.2.tgz", + "integrity": "sha512-N8es+V+M9GijYsxfiIG3NJ+lHgoZosX+yjblc5eOx0xrBDeqH3kNLhJpctOczrJk0rUjN+zX5x+8H8qurcEAaw==", "cpu": [ "arm64" ], @@ -5537,9 +5537,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.1.tgz", - "integrity": "sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.2.tgz", + "integrity": "sha512-fI4rxJkWQaNeG4UcuqKJrc1JM+nAwIzzFba9+A4Aohc6z0EgPokrA1v7WmPUObO+cdZjVXdMpDGkhGQhbok1aQ==", "cpu": [ "x64" ], @@ -5554,9 +5554,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.1.tgz", - "integrity": "sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.2.tgz", + "integrity": "sha512-ycDOxBgII/2xkusMgq2S9n81IQ8SeWk1FU0zuUsZrUkaXEq/78+nHFo/0IStPLrtRxzG2gJ0JZvfaa6jMxr79Q==", "cpu": [ "x64" ], @@ -5571,9 +5571,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.1.tgz", - "integrity": "sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.2.tgz", + "integrity": "sha512-s7/UrbdfYGdUar+Nj8jxNeXaFdryWnKuJU5udDONgk9gb1xp7K5TPxBL9j7EtCrAenM2sR9Bd84ZemwzyZ/VLw==", "cpu": [ "arm64" ], @@ -5588,9 +5588,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.1.tgz", - "integrity": "sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.2.tgz", + "integrity": "sha512-sz8f+dmrzb816Ji25G+vs8HMq6zHq1IMKF4hVUnSJKdNr2k789+qRjF1fnv3YDcz5kkeYSvolXqVS1mCezDebg==", "cpu": [ "ia32" ], @@ -5605,9 +5605,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.1.tgz", - "integrity": "sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.2.tgz", + "integrity": "sha512-XXYHuc5KdhuLx1nP8cEKW+5Kakxy+iq/jcuJ52+27E2uB+xxzLeXvbPvz645je3Cti5nQ4la2HIn6tpST5ufSw==", "cpu": [ "x64" ], @@ -6319,17 +6319,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.1.tgz", - "integrity": "sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz", + "integrity": "sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/type-utils": "8.18.1", - "@typescript-eslint/utils": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/type-utils": "8.18.2", + "@typescript-eslint/utils": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -6349,16 +6349,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.1.tgz", - "integrity": "sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.2.tgz", + "integrity": "sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/typescript-estree": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "debug": "^4.3.4" }, "engines": { @@ -6374,14 +6374,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz", - "integrity": "sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz", + "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1" + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6392,14 +6392,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.1.tgz", - "integrity": "sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz", + "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.18.1", - "@typescript-eslint/utils": "8.18.1", + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/utils": "8.18.2", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -6416,9 +6416,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz", - "integrity": "sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz", + "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==", "dev": true, "license": "MIT", "engines": { @@ -6430,14 +6430,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz", - "integrity": "sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz", + "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6503,16 +6503,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.1.tgz", - "integrity": "sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz", + "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/typescript-estree": "8.18.1" + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6527,13 +6527,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz", - "integrity": "sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz", + "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/types": "8.18.2", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -9420,9 +9420,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.75", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.75.tgz", - "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==", + "version": "1.5.76", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", + "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", "license": "ISC" }, "node_modules/emittery": { @@ -9636,9 +9636,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", "devOptional": true, "license": "MIT" }, @@ -9897,13 +9897,13 @@ } }, "node_modules/eslint-config-next": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.1.2.tgz", - "integrity": "sha512-PrMm1/4zWSJ689wd/ypWIR5ZF1uvmp3EkgpgBV1Yu6PhEobBjXMGgT8bVNelwl17LXojO8D5ePFRiI4qXjsPRA==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.1.3.tgz", + "integrity": "sha512-wGYlNuWnh4ujuKtZvH+7B2Z2vy9nONZE6ztd+DKF7hAsIabkrxmD4TzYHzASHENo42lmz2tnT2B+zN2sOHvpJg==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.1.2", + "@next/eslint-plugin-next": "15.1.3", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -10568,29 +10568,29 @@ "license": "ISC" }, "node_modules/eslint-plugin-react": { - "version": "7.37.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", - "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "version": "7.37.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", + "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", "dev": true, "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", + "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", + "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "engines": { @@ -11225,9 +11225,9 @@ } }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -12396,9 +12396,9 @@ } }, "node_modules/highlight.js": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.0.tgz", - "integrity": "sha512-6ErL7JlGu2CNFHyRQEuDogOyGPNiqcuWdt4iSSFUPyferNTGlNTPFqeV36Y/XwA4V/TJ8l0sxp6FTnxud/mf8g==", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" @@ -18376,12 +18376,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/next/-/next-15.1.2.tgz", - "integrity": "sha512-nLJDV7peNy+0oHlmY2JZjzMfJ8Aj0/dd3jCwSZS8ZiO5nkQfcZRqDrRN3U5rJtqVTQneIOGZzb6LCNrk7trMCQ==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/next/-/next-15.1.3.tgz", + "integrity": "sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==", "license": "MIT", "dependencies": { - "@next/env": "15.1.2", + "@next/env": "15.1.3", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -18396,14 +18396,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.1.2", - "@next/swc-darwin-x64": "15.1.2", - "@next/swc-linux-arm64-gnu": "15.1.2", - "@next/swc-linux-arm64-musl": "15.1.2", - "@next/swc-linux-x64-gnu": "15.1.2", - "@next/swc-linux-x64-musl": "15.1.2", - "@next/swc-win32-arm64-msvc": "15.1.2", - "@next/swc-win32-x64-msvc": "15.1.2", + "@next/swc-darwin-arm64": "15.1.3", + "@next/swc-darwin-x64": "15.1.3", + "@next/swc-linux-arm64-gnu": "15.1.3", + "@next/swc-linux-arm64-musl": "15.1.3", + "@next/swc-linux-x64-gnu": "15.1.3", + "@next/swc-linux-x64-musl": "15.1.3", + "@next/swc-win32-arm64-msvc": "15.1.3", + "@next/swc-win32-x64-msvc": "15.1.3", "sharp": "^0.33.5" }, "peerDependencies": { @@ -18430,9 +18430,9 @@ } }, "node_modules/next-intl": { - "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==", + "version": "3.26.3", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.26.3.tgz", + "integrity": "sha512-6Y97ODrDsEE1J8cXKMHwg1laLdtkN66QMIqG8BzH4zennJRUNTtM8UMtBDyhfmF6uiZ+xsbWLXmHUgmUymUsfQ==", "funding": [ { "type": "individual", @@ -18443,11 +18443,11 @@ "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "negotiator": "^1.0.0", - "use-intl": "^3.25.3" + "use-intl": "^3.26.3" }, "peerDependencies": { "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" } }, "node_modules/next-themes": { @@ -20489,20 +20489,21 @@ "license": "MIT" }, "node_modules/regex": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.0.2.tgz", - "integrity": "sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.0.tgz", + "integrity": "sha512-KNCzMdCkhhFKcWnqKIixAKDRzERQ/RTvENLRuLSqNFYdvn/XEgKSrpBHluYqnQxuDnzOB+iZRNGidQeEVe9upw==", "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" } }, "node_modules/regex-recursion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.0.0.tgz", - "integrity": "sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.0.tgz", + "integrity": "sha512-8PNVYEQEw5fyIGDuLqXMP5WSSjNey+9q+pUFdVqBbPxo9PL8nl7ucZRa3jzooTz7D6wMOHDrCMdwc6fqL60EXw==", "license": "MIT", "dependencies": { + "regex": "^5.1.0", "regex-utilities": "^2.3.0" } }, diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 59e102370bc99..37af22658066d 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -279,26 +279,34 @@ }, "download": { "selectCategory": "Categories", - "categories": { - "prebuilt-installer": "Prebuilt Installer", - "prebuilt-binaries": "Prebuilt Binaries", - "package-manager": "Package Manager", - "source-code": "Source Code" - }, "buttons": { - "prebuilt": "Download Node.js {version}", - "source": "Download Node.js {version} source" + "installer": "{os} Installer (.{extension})", + "binary": "Standalone Binary (.{extension})" }, "dropdown": { - "bitness": "Bitness", + "platform": "Platform", "os": "Operating System", "version": "Version", - "platform": "Platform" + "installMethod": "Install Method", + "packageManager": "Package Manager", + "unknown": "Unknown", + "platformGroups": { + "official": "Recommended (Official)", + "unofficial": "Community (Unofficial)" + } }, "codeBox": { - "unsupportedVersionWarning": "This version is out of maintenance. Find more information here:", - "communityWarning": "Package managers and their installation scripts are not maintained by the Node.js project.", - "communityWarningReport": "If you encounter issues, please reach out to the package manager's maintainers." + "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version. <link>Understand EOL support.</link>", + "communityPlatformInfo": "Installation methods that involve community software are supported by the teams maintaining that software.", + "externalSupportInfo": "If you encounter any issues please visit <link>{platform}'s website</link>", + "platformInfo": { + "default": "{platform} and their installation scripts are not maintained by the Node.js project.", + "nvm": "\"nvm\" is a cross-platform Node.js version manager.", + "fnm": "\"fnm\" is a cross-platform Node.js version manager.", + "brew": "Homebrew is a package manager for macOS and Linux.", + "choco": "Chocolatey is a package manager for Windows.", + "docker": "Docker is a containerization platform." + } } } } From fa9d844457d88953adc9e5e4e42edbc79c0b6c7d Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sat, 28 Dec 2024 15:11:56 +0000 Subject: [PATCH 0223/1385] chore: remove express example (#7359) It feels weird to provide an example of one specific framework so in-depth. Signed-off-by: Claudio W <cwunder@gnome.org> --- ...ence-between-development-and-production.md | 37 ------------------- 1 file changed, 37 deletions(-) diff --git a/apps/site/pages/en/learn/getting-started/nodejs-the-difference-between-development-and-production.md b/apps/site/pages/en/learn/getting-started/nodejs-the-difference-between-development-and-production.md index 2d815be587a9a..efd3155f0218b 100644 --- a/apps/site/pages/en/learn/getting-started/nodejs-the-difference-between-development-and-production.md +++ b/apps/site/pages/en/learn/getting-started/nodejs-the-difference-between-development-and-production.md @@ -12,43 +12,6 @@ Always run your Node.js with the `NODE_ENV=production` set. A popular way of configuring your application is by using the [twelve factor methodology](https://12factor.net/). -## NODE_ENV in Express - -In the wildly popular [express](https://expressjs.com/) framework, setting the `NODE_ENV` to `production` generally ensures that: - -- logging is kept to a minimum, essential level -- more caching levels take place to optimize performance - -This is usually done by executing the command - -```bash -export NODE_ENV=production -``` - -in the shell, but it's better to put it in your shell configuration file (e.g. `.bash_profile` with the Bash shell) because otherwise the setting does not persist in case of a system restart. - -You can also apply the environment variable by prepending it to your application initialization command: - -```bash -NODE_ENV=production node app.js -``` - -For example, in an Express app, you can use this to set different error handlers per environment: - -```js -if (process.env.NODE_ENV === 'development') { - app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); -} - -if (process.env.NODE_ENV === 'production') { - app.use(express.errorHandler()); -} -``` - -For example [Pug](https://pugjs.org), the templating library used by [Express](https://expressjs.com), compiles in debug mode if `NODE_ENV` is not set to `production`. Express views are compiled in every request in development mode, while in production they are cached. There are many more examples. - -**This environment variable is a convention widely used in external libraries, but not within Node.js itself**. - ## Why is NODE_ENV considered an antipattern? An environment is a digital platform or a system where engineers can build, test, _deploy_, and manage software products. Conventionally, there are four stages or types of environments where our application is run: From c8e604f02c7322bb66e12ba5861ee755fbea8722 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sat, 28 Dec 2024 18:16:39 +0000 Subject: [PATCH 0224/1385] fix: compatibility engine should run even on initial state (#7366) --- .../Downloads/Release/OperatingSystemDropdown.tsx | 4 ++-- .../Downloads/Release/PackageManagerDropdown.tsx | 2 +- .../Downloads/Release/PlatformDropdown.tsx | 2 +- .../Downloads/Release/PrebuiltDownloadButtons.tsx | 2 +- apps/site/util/downloadUtils.tsx | 15 +++++++-------- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index 385717528faf9..d4a4fb31c825c 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -30,9 +30,9 @@ const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = () => { // We parse the compatibility of the dropdown items const parsedOperatingSystems = useMemo( () => parseCompat(OPERATING_SYSTEMS, release), - // We only want to react on the change of the OS, Bitness, and Version + // We only want to react on the change of the Install Method // eslint-disable-next-line react-hooks/exhaustive-deps - [release.os, release.platform, release.version] + [release.installMethod, release.os] ); return ( diff --git a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx index 0a0fdafe5173c..3faf61f0a1e9e 100644 --- a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx +++ b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx @@ -30,7 +30,7 @@ const PackageManagerDropdown: FC = () => { ), // We only want to react on the change of the Version // eslint-disable-next-line react-hooks/exhaustive-deps - [release.version] + [release.version, release.packageManager] ); return ( diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index 6acb57beb0872..46e3b8ec33c21 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -40,7 +40,7 @@ const PlatformDropdown: FC = () => { : [], // We only want to react on the change of the OS, Platform, and Version // eslint-disable-next-line react-hooks/exhaustive-deps - [release.os, release.platform, release.version] + [release.os, release.version] ); // We set the Platform to the next available Architecture when the current diff --git a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx index 8be309c5f46da..f3c8a2d57c7b0 100644 --- a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx +++ b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx @@ -30,7 +30,7 @@ const PrebuiltDownloadButtons: FC = () => { : ''; return ( - <div className="my-4 flex gap-2"> + <div className="my-4 flex flex-wrap gap-2"> <Skeleton loading={os === 'LOADING' || platform === ''} hide={OS_NOT_SUPPORTING_INSTALLERS.includes(os)} diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index 61ff7ccba9937..a7368a97e761a 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -42,9 +42,9 @@ export enum PackageManagerLabel { } type DownloadCompatibility = { - os: Array<UserOS>; - installMethod: Array<Types.InstallationMethod>; - platform: Array<UserPlatform>; + os: Array<UserOS | 'LOADING'>; + installMethod: Array<Types.InstallationMethod | ''>; + platform: Array<UserPlatform | ''>; semver: Array<string>; releases: Array<NodeReleaseStatus>; }; @@ -97,14 +97,13 @@ export const parseCompat = < ): Array<T> => { const satisfiesSemver = (semver: string) => satisfies(version, semver); - const supportsOS = (i: T['compatibility']) => - os === 'LOADING' || (i.os?.includes(os) ?? true); + const supportsOS = (i: T['compatibility']) => i.os?.includes(os) ?? true; const supportsInstallMethod = (i: T['compatibility']) => - (installMethod === '' || i.installMethod?.includes(installMethod)) ?? true; + i.installMethod?.includes(installMethod) ?? true; const supportsPlatform = (i: T['compatibility']) => - platform === '' || (i.platform?.includes(platform) ?? true); + i.platform?.includes(platform) ?? true; const supportsVersion = (i: T['compatibility']) => i.semver?.some(satisfiesSemver) ?? true; @@ -145,7 +144,7 @@ export const OPERATING_SYSTEMS: Array<DownloadDropdownItem<UserOS>> = [ { label: OperatingSystemLabel.AIX, value: 'AIX', - compatibility: { installMethod: [] }, + compatibility: { installMethod: [''] }, iconImage: <OSIcons.AIX width={16} height={16} />, }, ]; From 53591f95a3b5bc39a394dc997ec0e153ccc4f246 Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Sun, 29 Dec 2024 00:36:45 +0300 Subject: [PATCH 0225/1385] chore: Minor changes on download page (#7367) * chore: mobile layout and skeleton sizes * chore: layout on not-found page * chore: mobile skeleton size * chore: review updates * chore: error page layout --- apps/site/app/[locale]/error.tsx | 2 +- apps/site/app/[locale]/not-found.tsx | 2 +- .../components/Downloads/Release/BlogPostLink.tsx | 6 ++---- .../Downloads/Release/PlatformDropdown.tsx | 2 +- .../Downloads/Release/PrebuiltDownloadButtons.tsx | 14 +++++++++++--- .../Downloads/Release/ReleaseCodeBox.tsx | 2 +- apps/site/layouts/GlowingBackdrop.tsx | 9 ++++----- 7 files changed, 21 insertions(+), 16 deletions(-) diff --git a/apps/site/app/[locale]/error.tsx b/apps/site/app/[locale]/error.tsx index 2a4d2e3431e71..79feae5ccf4c0 100644 --- a/apps/site/app/[locale]/error.tsx +++ b/apps/site/app/[locale]/error.tsx @@ -11,7 +11,7 @@ const ErrorPage: FC<{ error: Error }> = () => { const t = useTranslations(); return ( - <GlowingBackdropLayout> + <GlowingBackdropLayout kind="default"> 500 <h1 className="special -mt-4 text-center"> {t('layouts.error.internalServerError.title')} diff --git a/apps/site/app/[locale]/not-found.tsx b/apps/site/app/[locale]/not-found.tsx index ec3a343628e52..9ab34ca5bbf2e 100644 --- a/apps/site/app/[locale]/not-found.tsx +++ b/apps/site/app/[locale]/not-found.tsx @@ -12,7 +12,7 @@ const NotFoundPage: FC = () => { const t = useTranslations(); return ( - <GlowingBackdropLayout> + <GlowingBackdropLayout kind="default"> 404 <h1 className="special -mt-4 text-center"> {t('layouts.error.notFound.title')} diff --git a/apps/site/components/Downloads/Release/BlogPostLink.tsx b/apps/site/components/Downloads/Release/BlogPostLink.tsx index d9d1f90d60aad..3082da9c3c5c8 100644 --- a/apps/site/components/Downloads/Release/BlogPostLink.tsx +++ b/apps/site/components/Downloads/Release/BlogPostLink.tsx @@ -3,16 +3,14 @@ import type { FC, PropsWithChildren } from 'react'; import { useContext } from 'react'; -import LinkWithArrow from '@/components/Downloads/Release/LinkWithArrow'; +import Link from '@/components/Link'; import { ReleaseContext } from '@/providers/releaseProvider'; const BlogPostLink: FC<PropsWithChildren> = ({ children }) => { const { release } = useContext(ReleaseContext); const version = release.versionWithPrefix; - return ( - <LinkWithArrow href={`/blog/release/${version}`}>{children}</LinkWithArrow> - ); + return <Link href={`/blog/release/${version}`}>{children}</Link>; }; export default BlogPostLink; diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index 46e3b8ec33c21..de595264ab5d9 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -64,7 +64,7 @@ const PlatformDropdown: FC = () => { placeholder={t('layouts.download.dropdown.unknown')} ariaLabel={t('layouts.download.dropdown.installMethod')} onChange={platform => platform && release.setPlatform(platform)} - className="min-w-20" + className="min-w-28" inline={true} /> ); diff --git a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx index f3c8a2d57c7b0..5a943b0472a8b 100644 --- a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx +++ b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx @@ -30,12 +30,16 @@ const PrebuiltDownloadButtons: FC = () => { : ''; return ( - <div className="my-4 flex flex-wrap gap-2"> + <div className="my-4 flex flex-col gap-2 sm:flex-row"> <Skeleton loading={os === 'LOADING' || platform === ''} hide={OS_NOT_SUPPORTING_INSTALLERS.includes(os)} > - <Button href={installerUrl} size="small" className="min-w-56"> + <Button + href={installerUrl} + size="small" + className="w-full min-w-56 sm:w-auto" + > <CloudArrowDownIcon /> {t('layouts.download.buttons.installer', { @@ -46,7 +50,11 @@ const PrebuiltDownloadButtons: FC = () => { </Skeleton> <Skeleton loading={os === 'LOADING' || platform === ''}> - <Button href={binaryUrl} size="small" className="min-w-56"> + <Button + href={binaryUrl} + size="small" + className="w-full min-w-56 sm:w-auto" + > <CloudArrowDownIcon /> {t('layouts.download.buttons.binary', { diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 46701c5b17fa6..f3ffb8057cf62 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -111,7 +111,7 @@ const ReleaseCodeBox: FC = () => { )} <Skeleton loading={renderSkeleton}> - <CodeBox language={displayName} className="min-h-[16rem]"> + <CodeBox language={displayName} className="min-h-[16.5rem]"> <code dangerouslySetInnerHTML={{ __html: parsedSnippets }} /> </CodeBox> </Skeleton> diff --git a/apps/site/layouts/GlowingBackdrop.tsx b/apps/site/layouts/GlowingBackdrop.tsx index 377eac2e18903..a291865f640d8 100644 --- a/apps/site/layouts/GlowingBackdrop.tsx +++ b/apps/site/layouts/GlowingBackdrop.tsx @@ -8,13 +8,12 @@ import WithNavBar from '@/components/withNavBar'; import styles from './layouts.module.css'; type GlowingBackdropLayoutProps = PropsWithChildren<{ - kind?: 'home'; + kind?: 'home' | 'default'; }>; -const GlowingBackdropLayout: FC<GlowingBackdropLayoutProps> = ({ - kind = 'home', - children, -}) => ( +const GlowingBackdropLayout: FC< + PropsWithChildren<GlowingBackdropLayoutProps> +> = ({ kind = 'home', children }) => ( <> <WithNavBar /> <div className={styles.centeredLayout}> From c9b01b52fda3aa8559f5f547091f182392679b61 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sat, 28 Dec 2024 21:37:34 +0000 Subject: [PATCH 0226/1385] fix: numerous minor improvements and fixes for downloads page (#7368) * fix: numerous minor improvements and fixes for downloads page * chore: little cleanup for the hook * chore: fix tests --- .../site/components/Common/AlertBox/index.tsx | 2 +- .../Release/OperatingSystemDropdown.tsx | 19 ++++++-- .../Downloads/Release/ReleaseCodeBox.tsx | 28 ++++++++++- .../__tests__/useMediaQuery.test.mjs | 37 ++++----------- apps/site/hooks/react-client/useMediaQuery.ts | 42 ++++++----------- apps/site/navigation.json | 40 ---------------- apps/site/pages/es/search.mdx | 6 --- apps/site/util/downloadUtils.tsx | 2 +- packages/i18n/locales/en.json | 46 +++---------------- 9 files changed, 72 insertions(+), 150 deletions(-) delete mode 100644 apps/site/pages/es/search.mdx diff --git a/apps/site/components/Common/AlertBox/index.tsx b/apps/site/components/Common/AlertBox/index.tsx index 1e0b78844935a..346c8fb07e999 100644 --- a/apps/site/components/Common/AlertBox/index.tsx +++ b/apps/site/components/Common/AlertBox/index.tsx @@ -17,7 +17,7 @@ const AlertBox: FC<AlertBoxProps> = ({ }) => ( <div className={classNames(styles.alertBox, styles[level], styles[size])}> <span className={styles.title}>{title}</span> - {children} + <span>{children}</span> </div> ); diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index d4a4fb31c825c..536707ad2c506 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -8,7 +8,7 @@ import Select from '@/components/Common/Select'; import { useClientContext } from '@/hooks'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { UserOS } from '@/types/userOS'; -import { OPERATING_SYSTEMS, parseCompat } from '@/util/downloadUtils'; +import { nextItem, OPERATING_SYSTEMS, parseCompat } from '@/util/downloadUtils'; type OperatingSystemDropdownProps = { exclude?: Array<UserOS> }; @@ -30,9 +30,22 @@ const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = () => { // We parse the compatibility of the dropdown items const parsedOperatingSystems = useMemo( () => parseCompat(OPERATING_SYSTEMS, release), - // We only want to react on the change of the Install Method + // We only want to react on the change of the Install Method and Version // eslint-disable-next-line react-hooks/exhaustive-deps - [release.installMethod, release.os] + [release.installMethod, release.version] + ); + + // We set the OS to the next available OS when the current + // one is not valid anymore due to Version changes + useEffect( + () => { + if (release.os !== 'LOADING') { + release.setOS(nextItem(release.os, parsedOperatingSystems)); + } + }, + // We only want to react on the change of the Version, Install Method and OS + // eslint-disable-next-line react-hooks/exhaustive-deps + [release.installMethod, release.version, release.os] ); return ( diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index f3ffb8057cf62..e8a1684aef5f5 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -96,8 +96,28 @@ const ReleaseCodeBox: FC = () => { return ( <div className="mb-6 mt-4 flex flex-col gap-2"> + <noscript> + <AlertBox + title={t('components.common.alertBox.warning')} + level="warning" + size="small" + > + {t.rich('layouts.download.codeBox.noScriptDetected', { + link: text => ( + <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch"> + <b>{text}</b> + </Link> + ), + })} + </AlertBox> + </noscript> + {release.status === 'End-of-life' && ( - <AlertBox title="Warning" level="warning" size="small"> + <AlertBox + title={t('components.common.alertBox.warning')} + level="warning" + size="small" + > {t.rich('layouts.download.codeBox.unsupportedVersionWarning', { link: text => <Link href="/about/previous-releases/">{text}</Link>, })} @@ -105,7 +125,11 @@ const ReleaseCodeBox: FC = () => { )} {!currentPlatform || currentPlatform.recommended || ( - <AlertBox title="Info" level="info" size="small"> + <AlertBox + title={t('components.common.alertBox.info')} + level="info" + size="small" + > {t('layouts.download.codeBox.communityPlatformInfo')} </AlertBox> )} diff --git a/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs b/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs index 2b3024ebdecba..afe88261f4bcb 100644 --- a/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs @@ -3,75 +3,56 @@ import { renderHook } from '@testing-library/react'; import useMediaQuery from '@/hooks/react-client/useMediaQuery'; describe('useMediaQuery', () => { - it('should check for matchMedia support', () => { + it('should return undefined initially', () => { const { result } = renderHook(() => useMediaQuery('media-query-mock')); - - expect(result.current).toBe(undefined); + expect(result.current).toBe(false); }); it('should return true for matched query', () => { Object.defineProperty(window, 'matchMedia', { writable: true, - value: () => ({ + value: query => ({ matches: true, + media: query, addEventListener: jest.fn(), removeEventListener: jest.fn(), }), }); const { result } = renderHook(() => useMediaQuery('media-query-mock')); - expect(result.current).toBe(true); }); it('should return false for not-matched query', () => { Object.defineProperty(window, 'matchMedia', { writable: true, - value: () => ({ + value: query => ({ matches: false, + media: query, addEventListener: jest.fn(), removeEventListener: jest.fn(), }), }); const { result } = renderHook(() => useMediaQuery('media-query-mock')); - expect(result.current).toBe(false); }); it('should subscribe for media changes', () => { const listenerMock = jest.fn().mockImplementation((_, handler) => { - handler(); + handler({ matches: false }); }); Object.defineProperty(window, 'matchMedia', { writable: true, - value: () => ({ + value: query => ({ matches: false, + media: query, addEventListener: listenerMock, removeEventListener: jest.fn(), }), }); - renderHook(() => useMediaQuery('media-query-mock')); - - expect(listenerMock).toHaveBeenCalledTimes(1); - }); - - it("should support MediaQueryList's old event listeners", () => { - const listenerMock = jest.fn().mockImplementation(handler => { - handler(); - }); - - Object.defineProperty(window, 'matchMedia', { - writable: true, - value: () => ({ - matches: false, - addListener: listenerMock, - removeListener: jest.fn(), - }), - }); - renderHook(() => useMediaQuery('media-query-mock')); expect(listenerMock).toHaveBeenCalledTimes(1); }); diff --git a/apps/site/hooks/react-client/useMediaQuery.ts b/apps/site/hooks/react-client/useMediaQuery.ts index 4d28baa033584..224dac5b88998 100644 --- a/apps/site/hooks/react-client/useMediaQuery.ts +++ b/apps/site/hooks/react-client/useMediaQuery.ts @@ -2,40 +2,24 @@ import { useState, useEffect } from 'react'; -const mediaQueryChangeSubscribe = (mq: MediaQueryList, handler: () => void) => { - if (mq.addEventListener) { - mq.addEventListener('change', handler); - } else { - mq.addListener(handler); - } -}; - -const mediaQueryChangeUnsubscribe = ( - mq: MediaQueryList, - handler: () => void -) => { - if (mq.removeEventListener) { - mq.removeEventListener('change', handler); - } else { - mq.removeListener(handler); - } -}; - -const useMediaQuery = (query: string): boolean | undefined => { - const [matches, setMatches] = useState<boolean>(); +const useMediaQuery = (query: string) => { + const [matches, setMatches] = useState(false); useEffect(() => { - if (typeof window?.matchMedia === 'function') { - const mq = window.matchMedia(query); - setMatches(mq.matches); + const { matches, addEventListener, removeEventListener } = + window.matchMedia?.(query) ?? { + matches: false, + addEventListener: () => {}, + removeEventListener: () => {}, + }; + + setMatches(matches); - const handler = (): void => setMatches(mq.matches); - mediaQueryChangeSubscribe(mq, handler); + const handler = (event: MediaQueryListEvent) => setMatches(event.matches); - return (): void => mediaQueryChangeUnsubscribe(mq, handler); - } + addEventListener('change', handler); - return undefined; + return () => removeEventListener('change', handler); }, [query]); return matches; diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 8f7fd86cf6c0c..363bffd0c523f 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -380,45 +380,5 @@ } } } - }, - "download": { - "items": { - "shaSums": { - "link": "https://nodejs.org/dist/{nodeVersion}/SHASUMS256.txt.asc", - "label": "components.downloadList.links.shaSums.title" - }, - "allDownloads": { - "link": "https://nodejs.org/dist/{nodeVersion}/", - "label": "components.downloadList.links.allDownloads" - }, - "packageManager": { - "link": "/download/package-manager", - "label": "components.downloadList.links.packageManager" - }, - "previousReleases": { - "link": "/about/previous-releases", - "label": "components.downloadList.links.previousReleases" - }, - "nightlyReleases": { - "link": "https://nodejs.org/download/nightly/", - "label": "components.downloadList.links.nightlyReleases" - }, - "unofficialBuilds": { - "link": "https://unofficial-builds.nodejs.org/download/", - "label": "components.downloadList.links.unofficialBuilds" - }, - "buildingFromSource": { - "link": "https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms", - "label": "components.downloadList.links.buildingFromSource" - }, - "installingOnLinux": { - "link": "https://github.com/nodejs/help/wiki/Installation", - "label": "components.downloadList.links.installingOnLinux" - }, - "installingOnWsl": { - "link": "https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms", - "label": "components.downloadList.links.installingOnWsl" - } - } } } diff --git a/apps/site/pages/es/search.mdx b/apps/site/pages/es/search.mdx deleted file mode 100644 index 048d829afa13f..0000000000000 --- a/apps/site/pages/es/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: Resultados de Búsqueda ---- - -<SearchPage /> diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index a7368a97e761a..7b756641f4d3c 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -144,7 +144,7 @@ export const OPERATING_SYSTEMS: Array<DownloadDropdownItem<UserOS>> = [ { label: OperatingSystemLabel.AIX, value: 'AIX', - compatibility: { installMethod: [''] }, + compatibility: { installMethod: [''], semver: ['>= 6.7.0'] }, iconImage: <OSIcons.AIX width={16} height={16} />, }, ]; diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 37af22658066d..9d6aff319e36f 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -136,22 +136,6 @@ } } }, - "downloadList": { - "links": { - "previousReleases": "Node.js Releases", - "packageManager": "Installing Node.js via package manager", - "shaSums": { - "title": "Signed SHASUMS for release files", - "howToVerify": " (How to verify)" - }, - "allDownloads": "All download options", - "nightlyReleases": "Nightly builds", - "unofficialBuilds": "Unofficial builds", - "buildingFromSource": "Building Node.js from source on supported platforms", - "installingOnLinux": "Installing Node.js via binary archive", - "installingOnWsl": "Install on Windows Subsystem for Linux (WSL)" - } - }, "downloadReleasesTable": { "changelog": "Changelog", "releases": "Releases", @@ -162,6 +146,11 @@ "previous": "Previous" }, "common": { + "alertBox": { + "info": "Info", + "warning": "Warning", + "danger": "Danger" + }, "breadcrumbs": { "navigateToHome": "Navigate to Home" }, @@ -202,32 +191,9 @@ "viewAs": "View as", "tableOfContents": "Table of Contents" }, - "downloads": { - "changelogModal": { - "startContributing": "Start Contributing" - } - }, "search": { "searchBox": { "placeholder": "Start typing..." - }, - "seeAll": { - "text": "See all {count} results" - }, - "searchError": { - "text": "An error occurred while searching. Please try again later." - }, - "poweredBy": { - "text": "Powered by" - }, - "noResults": { - "text": "No results found for \"{query}\"." - }, - "emptyState": { - "text": "Search something..." - }, - "searchPage": { - "title": "You're searching: {query}" } }, "blog": { @@ -278,7 +244,6 @@ "backToHome": "Back to Home" }, "download": { - "selectCategory": "Categories", "buttons": { "installer": "{os} Installer (.{extension})", "binary": "Standalone Binary (.{extension})" @@ -299,6 +264,7 @@ "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version. <link>Understand EOL support.</link>", "communityPlatformInfo": "Installation methods that involve community software are supported by the teams maintaining that software.", "externalSupportInfo": "If you encounter any issues please visit <link>{platform}'s website</link>", + "noScriptDetected": "This page requires JavaScript. You can download Node.js without JavaScript by visiting the <link>releases page</link> directly.", "platformInfo": { "default": "{platform} and their installation scripts are not maintained by the Node.js project.", "nvm": "\"nvm\" is a cross-platform Node.js version manager.", From 060f050e9ac45c403c03be1bc344a09ade209b54 Mon Sep 17 00:00:00 2001 From: Carlos Espa <43477095+Ceres6@users.noreply.github.com> Date: Sun, 29 Dec 2024 13:43:33 +0100 Subject: [PATCH 0227/1385] feat: add streams guide (#7123) * feat: add streams guide Co-authored-by: Matteo Collina <matteo.collina@gmail.com> * Apply suggestions from code review Add authors and original content attribution Signed-off-by: Carlos Espa <43477095+Ceres6@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Aviv Keller <redyetidev@gmail.com> Signed-off-by: Carlos Espa <43477095+Ceres6@users.noreply.github.com> * fixup! Apply suggestions from code review * fixup! fixup! Apply suggestions from code review --------- Signed-off-by: Carlos Espa <43477095+Ceres6@users.noreply.github.com> Co-authored-by: Matteo Collina <matteo.collina@gmail.com> Co-authored-by: Claudio W <cwunder@gnome.org> Co-authored-by: Aviv Keller <redyetidev@gmail.com> --- apps/site/navigation.json | 4 + .../en/learn/modules/how-to-use-streams.md | 878 ++++++++++++++++++ packages/i18n/locales/en.json | 1 + 3 files changed, 883 insertions(+) create mode 100644 apps/site/pages/en/learn/modules/how-to-use-streams.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 363bffd0c523f..850e6899a0681 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -330,6 +330,10 @@ "link": "/learn/modules/abi-stability", "label": "components.navigation.learn.modules.links.abiStability" }, + "howToUseStreams": { + "link": "/learn/modules/how-to-use-streams", + "label": "components.navigation.learn.modules.links.howToUseStreams" + }, "backpressuringInStreams": { "link": "/learn/modules/backpressuring-in-streams", "label": "components.navigation.learn.modules.links.backpressuringInStreams" diff --git a/apps/site/pages/en/learn/modules/how-to-use-streams.md b/apps/site/pages/en/learn/modules/how-to-use-streams.md new file mode 100644 index 0000000000000..2dca4746165a4 --- /dev/null +++ b/apps/site/pages/en/learn/modules/how-to-use-streams.md @@ -0,0 +1,878 @@ +--- +title: How to use Streams +layout: learn +authors: mcollina, ceres6, simoneb, codyzu +--- + +# How To Use Streams + +Working with large amounts of data in Node.js applications can be a double-edged sword. The ability to handle massive amounts of data is extremely handy but can also lead to performance bottlenecks and memory exhaustion. Traditionally, developers tackled this challenge by reading the entire dataset into memory at once. This approach, while intuitive for smaller datasets, becomes inefficient and resource-intensive for large data (e.g., files, network requests…). + +This is where Node.js streams come in. Streams offer a fundamentally different approach, allowing you to process data incrementally and optimize memory usage. By handling data in manageable chunks, streams empower you to build scalable applications that can efficiently tackle even the most daunting datasets. As popularly quoted, “streams are arrays over time.” + +In this guide, we give an overview of the Stream concept, history, and API as well as some recommendations on how to use and operate them. + +## What are Node.js Streams? + +Node.js streams offer a powerful abstraction for managing data flow in your applications. They excel at processing large datasets, such as reading or writing from files and network requests, without compromising performance. + +This approach differs from loading the entire dataset into memory at once. Streams process data in chunks, significantly reducing memory usage. All streams in Node.js inherit from the [`EventEmitter`][] class, allowing them to emit events at various stages of data processing. These streams can be readable, writable, or both, providing flexibility for different data-handling scenarios. + +### Event-Driven Architecture + +Node.js thrives on an event-driven architecture, making it ideal for real-time I/O. This means consuming input as soon as it's available and sending output as soon as the application generates it. Streams seamlessly integrate with this approach, enabling continuous data processing. + +They achieve this by emitting events at key stages. These events include signals for received data ([`data`][] event) and the stream's completion ([`end`][] event). Developers can listen to these events and execute custom logic accordingly. This event-driven nature makes streams highly efficient for the processing of data from external sources. + +## Why use Streams? + +Streams provide three key advantages over other data-handling methods: + +- **Memory Efficiency**: Streams process data incrementally, consuming and processing data in chunks rather than loading the entire dataset into memory. This is a major advantage when dealing with large datasets, as it significantly reduces memory usage and prevents memory-related performance issues. +- **Improved Response Time**: Streams allow for immediate data processing. When a chunk of data arrives, it can be processed without waiting for the entire payload or dataset to be received. This reduces latency and improves your application's overall responsiveness. +- **Scalability for Real-Time Processing**: By handling data in chunks, Node.js streams can efficiently handle large amounts of data with limited resources. This scalability makes streams ideal for applications that process high volumes of data in real time. + +These advantages make streams a powerful tool for building high-performance, scalable Node.js applications, particularly when working with large datasets or real-time data processing. + +### Note on performance + +If your application already has all the data readily available in memory, using streams might add unnecessary overhead, complexity, and slow down your application. + +## Stream history + +This section is a reference of the history of streams in Node.js. Unless you’re working with a codebase written for a Node.js version prior to 0.11.5 (2013), you will rarely encounter older versions of the streams API, but the terms might still be in use. + +### Streams 0 + +The first version of streams was released at the same time as Node.js. Although there wasn't a Stream class yet, different modules used the concept and implemented the `read`/`write` functions. The `util.pump()` function was available to control the flow of data between streams. + +### Streams 1 (Classic) + +With the release of Node v0.4.0 in 2011, the Stream class was introduced, as well as the `pipe()` method. + +### Streams 2 + +In 2012, with the release of Node v0.10.0, Streams 2 were unveiled. This update brought new stream subclasses, including Readable, Writable, Duplex, and Transform. Additionally, the `readable` event was added. To maintain backwards compatibility, streams could be switched to the old mode by adding a `data` event listener or calling `pause()` or `resume()` methods. + +### Streams 3 + +In 2013, Streams 3 were released with Node v0.11.5, to address the problem of a stream having both a `data` and `readable` event handlers. This removed the need to choose between 'current' and 'old' modes. Streams 3 is the current version of streams in Node.js. + +## Stream types + +### Readable + +[`Readable`][] is the class that we use to sequentially read a source of data. Typical examples of `Readable` streams in Node.js API are [`fs.ReadStream` ][] when reading files, [`http.IncomingMessage` ][] when reading HTTP requests, and [`process.stdin` ][] when reading from the standard input. + +#### Key Methods and Events + +A readable stream operates with several core methods and events that allow fine control over data handling: + +- **[`on('data')`][]**: This event is triggered whenever data is available from the stream. It is very fast, as the stream pushes data as quickly as it can handle, making it suitable for high-throughput scenarios. +- **[`on('end')`][]**: Emitted when there is no more data to read from the stream. It signifies the completion of data delivery. This event is only fired when all the data from the stream has been consumed. +- **[`on('readable')`][]**: This event is triggered when there is data available to read from the stream or when the end of the stream has been reached. It allows for more controlled data reading when needed. +- **[`on('close')`][]**: This event is emitted when the stream and its underlying resources have been closed and indicates that no more events will be emitted. +- **[`on('error')`][]**: This event can be emitted at any point, signaling that there was an error processing. A handler for this event can be used to avoid uncaught exceptions. + +A demonstration of the use of these events can be seen in the following sections. + +#### Basic Readable Stream + +Here's an example of a simple readable stream implementation that generates data dynamically: + +```cjs +const { Readable } = require('node:stream'); + +class MyStream extends Readable { + #count = 0; + _read(size) { + this.push(':-)'); + if (++this.#count === 5) { + this.push(null); + } + } +} + +const stream = new MyStream(); + +stream.on('data', chunk => { + console.log(chunk.toString()); +}); +``` + +```mjs +import { Readable } from 'node:stream'; + +class MyStream extends Readable { + #count = 0; + _read(size) { + this.push(':-)'); + if (++this.#count === 5) { + this.push(null); + } + } +} + +const stream = new MyStream(); + +stream.on('data', chunk => { + console.log(chunk.toString()); +}); +``` + +In this code, the `MyStream` class extends Readable and overrides the [`_read`][] method to push a string ":-)" to the internal buffer. After pushing the string five times, it signals the end of the stream by pushing `null`. The [`on('data')`][] event handler logs each chunk to the console as it is received. + +#### Advanced Control with the readable Event + +For even finer control over data flow, the readable event can be used. This event is more complex but provides better performance for certain applications by allowing explicit control over when data is read from the stream: + +```cjs +const stream = new MyStream({ + highWaterMark: 1, +}); + +stream.on('readable', () => { + console.count('>> readable event'); + let chunk; + while ((chunk = stream.read()) !== null) { + console.log(chunk.toString()); // Process the chunk + } +}); +stream.on('end', () => console.log('>> end event')); +``` + +```mjs +const stream = new MyStream({ + highWaterMark: 1, +}); + +stream.on('readable', () => { + console.count('>> readable event'); + let chunk; + while ((chunk = stream.read()) !== null) { + console.log(chunk.toString()); // Process the chunk + } +}); +stream.on('end', () => console.log('>> end event')); +``` + +Here, the readable event is used to pull data from the stream as needed manually. The loop inside the readable event handler continues to read data from the stream buffer until it returns `null`, indicating that the buffer is temporarily empty or the stream has ended. Setting `highWaterMark` to 1 keeps the buffer size small, triggering the readable event more frequently and allowing more granular control over the data flow. + +With the previous code, you’ll get an output like + +```bash +>> readable event: 1 +:-):-) +:-) +:-) +:-) +>> readable event: 2 +>> readable event: 3 +>> readable event: 4 +>> end event +``` + +Let’s try to digest that. When we attach the `on('readable')` event, it makes a first call to `read()` because that is what might trigger the emission of a `readable` event. After the emission of said event, we call `read` on the first iteration of the `while` loop. That’s why we get the first two smileys in one row. After that, we keep calling `read` until `null` is pushed. Each call to `read` programs the emission of a new `readable` event, but as we are in “flow” mode (i.e., using the `readable` event), the emission is scheduled for the `nextTick`. That’s why we get them all at the end, when the synchronous code of the loop is finished. + +NOTE: You can try to run the code with `NODE_DEBUG=stream` to see that `emitReadable` is triggered after each `push`. + +If we want to see readable events called before each smiley, we can wrap `push` into a `setImmediate` or `process.nextTick` like this: + +```cjs +class MyStream extends Readable { + #count = 0; + _read(size) { + setImmediate(() => { + this.push(':-)'); + if (++this.#count === 5) { + return this.push(null); + } + }); + } +} +``` + +```mjs +class MyStream extends Readable { + #count = 0; + _read(size) { + setImmediate(() => { + this.push(':-)'); + if (++this.#count === 5) { + return this.push(null); + } + }); + } +} +``` + +And we’ll get: + +```bash +>> readable event: 1 +:-) +>> readable event: 2 +:-) +>> readable event: 3 +:-) +>> readable event: 4 +:-) +>> readable event: 5 +:-) +>> readable event: 6 +>> end event +``` + +### Writable + +[`Writable`][] streams are useful for creating files, uploading data, or any task that involves sequentially outputting data. While readable streams provide the source of data, writable streams in Node.js act as the destination for your data. Typical examples of writable streams in the Node.js API are [`fs.WriteStream` ][], [`process.stdout` ][], and [`process.stderr` ][]. + +#### Key Methods and Events in Writable Streams + +- **[`.write()`][]**: This method is used to write a chunk of data to the stream. It handles the data by buffering it up to a defined limit (highWaterMark), and returns a boolean indicating whether more data can be written immediately. +- **[`.end()`][]**: This method signals the end of the data writing process. It signals the stream to complete the write operation and potentially perform any necessary cleanup. + +#### Creating a Writable + +Here's an example of creating a writable stream that converts all incoming data to uppercase before writing it to the standard output: + +```cjs +const { Writable } = require('node:stream'); +const { once } = require('node:events'); + +class MyStream extends Writable { + constructor() { + super({ highWaterMark: 10 /* 10 bytes */ }); + } + _write(data, encode, cb) { + process.stdout.write(data.toString().toUpperCase() + '\n', cb); + } +} +const stream = new MyStream(); + +for (let i = 0; i < 10; i++) { + const waitDrain = !stream.write('hello'); + + if (waitDrain) { + console.log('>> wait drain'); + await once(stream, 'drain'); + } +} + +stream.end('world'); +``` + +```mjs +import { Writable } from 'node:stream'; +import { once } from 'node:events'; + +class MyStream extends Writable { + constructor() { + super({ highWaterMark: 10 /* 10 bytes */ }); + } + _write(data, encode, cb) { + process.stdout.write(data.toString().toUpperCase() + '\n', cb); + } +} +const stream = new MyStream(); + +for (let i = 0; i < 10; i++) { + const waitDrain = !stream.write('hello'); + + if (waitDrain) { + console.log('>> wait drain'); + await once(stream, 'drain'); + } +} + +stream.end('world'); +``` + +In this code, `MyStream` is a custom [`Writable`][] stream with a buffer capacity ([`highWaterMark`][]) of 10 bytes. It overrides the [`_write`][] method to convert data to uppercase before writing it out. + +The loop attempts to write hello ten times to the stream. If the buffer fills up (`waitDrain` becomes `true`), it waits for a [`drain`][] event before continuing, ensuring we do not overwhelm the stream's buffer. + +The output will be: + +```bash +HELLO +>> wait drain +HELLO +HELLO +>> wait drain +HELLO +HELLO +>> wait drain +HELLO +HELLO +>> wait drain +HELLO +HELLO +>> wait drain +HELLO +WORLD +``` + +### Duplex + +[`Duplex`][] streams implement both the readable and writable interfaces. + +#### Key Methods and Events in Duplex Streams + +Duplex streams implement all the methods and events described in Readable and Writable Streams. + +A good example of a duplex stream is the `Socket` class in the `net` module: + +```cjs +const net = require('node:net'); + +// Create a TCP server +const server = net.createServer(socket => { + socket.write('Hello from server!\n'); + + socket.on('data', data => { + console.log(`Client says: ${data.toString()}`); + }); + + // Handle client disconnection + socket.on('end', () => { + console.log('Client disconnected'); + }); +}); + +// Start the server on port 8080 +server.listen(8080, () => { + console.log('Server listening on port 8080'); +}); +``` + +```mjs +import { net } from 'node:net'; + +// Create a TCP server +const server = net.createServer(socket => { + socket.write('Hello from server!\n'); + + socket.on('data', data => { + console.log(`Client says: ${data.toString()}`); + }); + + // Handle client disconnection + socket.on('end', () => { + console.log('Client disconnected'); + }); +}); + +// Start the server on port 8080 +server.listen(8080, () => { + console.log('Server listening on port 8080'); +}); +``` + +The previous code will open a TCP socket on port 8080, send `Hello from server!` to any connecting client, and log any data received. + +```cjs +const net = require('node:net'); + +// Connect to the server at localhost:8080 +const client = net.createConnection({ port: 8080 }, () => { + client.write('Hello from client!\n'); +}); + +client.on('data', data => { + console.log(`Server says: ${data.toString()}`); +}); + +// Handle the server closing the connection +client.on('end', () => { + console.log('Disconnected from server'); +}); +``` + +```mjs +import { net } from 'node:net'; + +// Connect to the server at localhost:8080 +const client = net.createConnection({ port: 8080 }, () => { + client.write('Hello from client!\n'); +}); + +client.on('data', data => { + console.log(`Server says: ${data.toString()}`); +}); + +// Handle the server closing the connection +client.on('end', () => { + console.log('Disconnected from server'); +}); +``` + +The previous code will connect to the TCP socket, send a `Hello from client` message, and log any received data. + +### Transform + +[`Transform`][] streams are duplex streams, where the output is computed based on the input. As the name suggests, they are usually used between a readable and a writable stream to transform the data as it passes through. + +#### Key Methods and Events in Transform Streams + +Apart from all the methods and events in Duplex Streams, there is: + +- **[`_transform`][]**: This function is called internally to handle the flow of data between the readable and writable parts. This MUST NOT be called by application code. + +#### Creating a Transform Stream + +To create a new transform stream, we can pass an `options` object to the `Transform` constructor, including a `transform` function that handles how the output data is computed from the input data using the `push` method. + +```cjs +const { Transform } = require('node:stream'); + +const upper = new Transform({ + transform: function (data, enc, cb) { + this.push(data.toString().toUpperCase()); + cb(); + }, +}); +``` + +```mjs +import { Transform } from 'node:stream'; + +const upper = new Transform({ + transform: function (data, enc, cb) { + this.push(data.toString().toUpperCase()); + cb(); + }, +}); +``` + +This stream will take any input and output it in uppercase. + +## How to operate with streams + +When working with streams, we usually want to read from a source and write to a destination, possibly needing some transformation of the data in between. The following sections will cover different ways to do so. + +### `.pipe()` + +The [`.pipe()`][] method concatenates one readable stream to a writable (or transform) stream. Although this seems like a simple way to achieve our goal, it delegates all error handling to the programmer, making it difficult to get it right. + +The following example shows a pipe trying to output the current file in uppercase to the console. + +```cjs +const fs = require('node:fs'); +const { Transform } = require('node:stream'); + +let errorCount = 0; +const upper = new Transform({ + transform: function (data, enc, cb) { + if (errorCount === 10) { + return cb(new Error('BOOM!')); + } + errorCount++; + this.push(data.toString().toUpperCase()); + cb(); + }, +}); + +const readStream = fs.createReadStream(__filename, { highWaterMark: 1 }); +const writeStream = process.stdout; + +readStream.pipe(upper).pipe(writeStream); + +readStream.on('close', () => { + console.log('Readable stream closed'); +}); + +upper.on('close', () => { + console.log('Transform stream closed'); +}); + +upper.on('error', err => { + console.error('\nError in transform stream:', err.message); +}); + +writeStream.on('close', () => { + console.log('Writable stream closed'); +}); +``` + +```mjs +import fs from 'node:fs'; +import { Transform } from 'node:stream'; + +let errorCount = 0; +const upper = new Transform({ + transform: function (data, enc, cb) { + if (errorCount === 10) { + return cb(new Error('BOOM!')); + } + errorCount++; + this.push(data.toString().toUpperCase()); + cb(); + }, +}); + +const readStream = fs.createReadStream(import.meta.filename, { + highWaterMark: 1, +}); +const writeStream = process.stdout; + +readStream.pipe(upper).pipe(writeStream); + +readStream.on('close', () => { + console.log('Readable stream closed'); +}); + +upper.on('close', () => { + console.log('Transform stream closed'); +}); + +upper.on('error', err => { + console.error('\nError in transform stream:', err.message); +}); + +writeStream.on('close', () => { + console.log('Writable stream closed'); +}); +``` + +After writing 10 characters, `upper` will return an error in the callback, which will cause the stream to close. However, the other streams won’t be notified, resulting in memory leaks. The output will be: + +```bash +CONST FS = +Error in transform stream: BOOM! +Transform stream closed +``` + +### `pipeline()` + +To avoid the pitfalls and low-level complexity of the `.pipe()` method, in most cases, it is recommended to use the [`pipeline()`][] method. This method is a safer and more robust way to pipe streams together, handling errors and cleanup automatically. + +The following example demonstrates how using `pipeline()` prevents the pitfalls of the previous example: + +```cjs +const fs = require('node:fs'); +const { Transform, pipeline } = require('node:stream'); + +let errorCount = 0; +const upper = new Transform({ + transform: function (data, enc, cb) { + if (errorCount === 10) { + return cb(new Error('BOOM!')); + } + errorCount++; + this.push(data.toString().toUpperCase()); + cb(); + }, +}); + +const readStream = fs.createReadStream(__filename, { highWaterMark: 1 }); +const writeStream = process.stdout; + +readStream.on('close', () => { + console.log('Readable stream closed'); +}); + +upper.on('close', () => { + console.log('\nTransform stream closed'); +}); + +writeStream.on('close', () => { + console.log('Writable stream closed'); +}); + +pipeline(readStream, upper, writeStream, err => { + if (err) { + return console.error('Pipeline error:', err.message); + } + console.log('Pipeline succeeded'); +}); +``` + +```mjs +import fs from 'node:fs'; +import { Transform, pipeline } from 'node:stream'; + +let errorCount = 0; +const upper = new Transform({ + transform: function (data, enc, cb) { + if (errorCount === 10) { + return cb(new Error('BOOM!')); + } + errorCount++; + this.push(data.toString().toUpperCase()); + cb(); + }, +}); + +const readStream = fs.createReadStream(import.meta.filename, { + highWaterMark: 1, +}); +const writeStream = process.stdout; + +readStream.on('close', () => { + console.log('Readable stream closed'); +}); + +upper.on('close', () => { + console.log('\nTransform stream closed'); +}); + +writeStream.on('close', () => { + console.log('Writable stream closed'); +}); + +pipeline(readStream, upper, writeStream, err => { + if (err) { + return console.error('Pipeline error:', err.message); + } + console.log('Pipeline succeeded'); +}); +``` + +In this case, all streams will be closed with the following output: + +```bash +CONST FS = +Transform stream closed +Writable stream closed +Pipeline error: BOOM! +Readable stream closed +``` + +The [`pipeline()`][] method also has an [`async pipeline()`][] version, which doesn’t accept a callback but instead returns a promise that is rejected if the pipeline fails. + +### Async Iterators + +Async iterators are recommended as the standard way of interfacing with the Streams API. Compared to all the stream primitives in both the Web and Node.js, async iterators are easier to understand and use, contributing to fewer bugs and more maintainable code. In recent versions of Node.js, async iterators have emerged as a more elegant and readable way to interact with streams. Building upon the foundation of events, async iterators provide a higher-level abstraction that simplifies stream consumption. + +In Node.js, all readable streams are asynchronous iterables. This means you can use the `for await...of` syntax to loop through the stream's data as it becomes available, handling each piece of data with the efficiency and simplicity of asynchronous code. + +#### Benefits of Using Async Iterators with Streams + +Using async iterators with streams simplifies the handling of asynchronous data flows in several ways: + +- **Enhanced Readability**: The code structure is cleaner and more readable, particularly when dealing with multiple asynchronous data sources. +- **Error Handling**: Async iterators allow straightforward error handling using try/catch blocks, akin to regular asynchronous functions. +- **Flow Control**: They inherently manage backpressure, as the consumer controls the flow by awaiting the next piece of data, allowing for more efficient memory usage and processing. + +Async iterators offer a more modern and often more readable way to work with readable streams, especially when dealing with asynchronous data sources or when you prefer a more sequential, loop-based approach to data processing. + +Here's an example demonstrating the use of async iterators with a readable stream: + +```cjs +const fs = require('node:fs'); +const { pipeline } = require('node:stream/promises'); + +await pipeline( + fs.createReadStream(import.meta.filename), + async function* (source) { + for await (let chunk of source) { + yield chunk.toString().toUpperCase(); + } + }, + process.stdout +); +``` + +```mjs +import fs from 'fs'; +import { pipeline } from 'stream/promises'; + +await pipeline( + fs.createReadStream(import.meta.filename), + async function* (source) { + for await (let chunk of source) { + yield chunk.toString().toUpperCase(); + } + }, + process.stdout +); +``` + +This code achieves the same result as the previous examples, without the need to define a new transform stream. The error from the previous examples has been removed for the sake of brevity. The async version of the pipeline has been used, and it should be wrapped in a `try...catch` block to handle possible errors. + +### Object mode + +By default, streams can work with strings, [`Buffer`][], [`TypedArray`][], or [`DataView`][]. If an arbitrary value different from these (e.g., an object) is pushed into a stream, a `TypeError` will be thrown. However, it is possible to work with objects by setting the `objectMode` option to `true`. This allows the stream to work with any JavaScript value, except for `null`, which is used to signal the end of the stream. This means you can `push` and `read` any value in a readable stream, and `write` any value in a writable stream. + +```cjs +const { Readable } = require('node:stream'); + +const readable = Readable({ + objectMode: true, + read() { + this.push({ hello: 'world' }); + this.push(null); + }, +}); +``` + +```mjs +import { Readable } from 'node:stream'; + +const readable = Readable({ + objectMode: true, + read() { + this.push({ hello: 'world' }); + this.push(null); + }, +}); +``` + +When working in object mode, it is important to remember that the `highWaterMark` option refers to the number of objects, not bytes. + +### Backpressure + +When using streams, it is important to make sure the producer doesn't overwhelm the consumer. For this, the backpressure mechanism is used in all streams in the Node.js API, and implementors are responsible for maintaining that behavior. + +In any scenario where the data buffer has exceeded the [`highWaterMark`][] or the write queue is currently busy, [`.write()`][] will return `false`. + +When a `false` value is returned, the backpressure system kicks in. It will pause the incoming [`Readable`][] stream from sending any data and wait until the consumer is ready again. Once the data buffer is emptied, a [`'drain'`][] event will be emitted to resume the incoming data flow. + +For a deeper understanding of backpressure, check the [`backpressure guide`][]. + +## Streams vs Web streams + +The stream concept is not exclusive to Node.js. In fact, Node.js has a different implementation of the stream concept called [`Web Streams`][], which implements the [`WHATWG Streams Standard`][]. Although the concepts behind them are similar, it is important to be aware that they have different APIs and are not directly compatible. + +[`Web Streams`][] implement the [`ReadableStream`][], [`WritableStream`][], and [`TransformStream`][] classes, which are homologous to Node.js's [`Readable`][], [`Writable`][], and [`Transform`][] streams. + +### Interoperability of streams and Web Streams + +Node.js provides utility functions to convert to/from Web Streams and Node.js streams. These functions are implemented as `toWeb` and `fromWeb` methods in each stream class. + +The following example in the [`Duplex`][] class demonstrates how to work with both readable and writable streams converted to Web Streams: + +```cjs +const { Duplex } = require('node:stream'); + +const duplex = Duplex({ + read() { + this.push('world'); + this.push(null); + }, + write(chunk, encoding, callback) { + console.log('writable', chunk); + callback(); + }, +}); + +const { readable, writable } = Duplex.toWeb(duplex); +writable.getWriter().write('hello'); + +readable + .getReader() + .read() + .then(result => { + console.log('readable', result.value); + }); +``` + +```mjs +import { Duplex } from 'node:stream'; + +const duplex = Duplex({ + read() { + this.push('world'); + this.push(null); + }, + write(chunk, encoding, callback) { + console.log('writable', chunk); + callback(); + }, +}); + +const { readable, writable } = Duplex.toWeb(duplex); +writable.getWriter().write('hello'); + +readable + .getReader() + .read() + .then(result => { + console.log('readable', result.value); + }); +``` + +The helper functions are useful if you need to return a Web Stream from a Node.js module or vice versa. For regular consumption of streams, async iterators enable seamless interaction with both Node.js and Web Streams. + +```cjs +const { pipeline } = require('node:stream/promises'); + +const { body } = await fetch('https://nodejs.org/api/stream.html'); + +await pipeline( + body, + new TextDecoderStream(), + async function* (source) { + for await (const chunk of source) { + yield chunk.toString().toUpperCase(); + } + }, + process.stdout +); +``` + +```mjs +import { pipeline } from 'node:stream/promises'; + +const { body } = await fetch('https://nodejs.org/api/stream.html'); + +await pipeline( + body, + new TextDecoderStream(), + async function* (source) { + for await (const chunk of source) { + yield chunk.toString().toUpperCase(); + } + }, + process.stdout +); +``` + +Be aware that the fetch body is a `ReadableStream<Uint8Array>`, and therefore a [`TextDecoderStream`][] is needed to work with chunks as strings. + +This work is derived from content published by [Matteo Collina][] in [Platformatic's Blog][]. + +[`Stream`]: https://nodejs.org/api/stream.html +[`Buffer`]: https://nodejs.org/api/buffer.html +[`TypedArray`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray +[`DataView`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView +[`TextDecoderStream`]: https://developer.mozilla.org/en-US/docs/Web/API/TextDecoderStream +[`EventEmitter`]: https://nodejs.org/api/events.html#class-eventemitter +[`Writable`]: https://nodejs.org/api/stream.html#stream_writable_streams +[`Readable`]: https://nodejs.org/api/stream.html#stream_readable_streams +[`Duplex`]: https://nodejs.org/api/stream.html#stream_duplex_and_transform_streams +[`Transform`]: https://nodejs.org/api/stream.html#stream_duplex_and_transform_streams +[`drain`]: https://nodejs.org/api/stream.html#stream_event_drain +[`on('data')`]: https://nodejs.org/api/stream.html#stream_event_data +[`data`]: https://nodejs.org/api/stream.html#stream_event_data +[`on('end')`]: https://nodejs.org/api/stream.html#event-end +[`end`]: https://nodejs.org/api/stream.html#event-end +[`on('readable')`]: https://nodejs.org/api/stream.html#event-readable +[`on('close')`]: https://nodejs.org/api/stream.html#event-close_1 +[`on('error')`]: https://nodejs.org/api/stream.html#event-error_1 +[`.read()`]: https://nodejs.org/docs/latest/api/stream.html#stream_readable_read_size +[`.write()`]: https://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback +[`_write`]: https://nodejs.org/api/stream.html#writable_writechunk-encoding-callback +[`.end()`]: https://nodejs.org/api/stream.html#writableendchunk-encoding-callback +[`'drain'`]: https://nodejs.org/api/stream.html#stream_event_drain +[`_transform`]: https://nodejs.org/api/stream.html#transform_transformchunk-encoding-callback +[`Readable.from()`]: https://nodejs.org/api/stream.html#streamreadablefromiterable-options +[`highWaterMark`]: https://nodejs.org/api/stream.html#stream_buffering +[`.pipe()`]: https://nodejs.org/docs/latest/api/stream.html#stream_readable_pipe_destination_options +[`pipeline()`]: https://nodejs.org/api/stream.html#stream_stream_pipeline_streams_callback +[`async pipeline()`]: https://nodejs.org/api/stream.html#streampipelinesource-transforms-destination-options +[`Web Streams`]: https://nodejs.org/api/webstreams.html +[`ReadableStream`]: https://nodejs.org/api/webstreams.html#class-readablestream +[`WritableStream`]: https://nodejs.org/api/webstreams.html#class-writablestream +[`TransformStream`]: https://nodejs.org/api/webstreams.html#class-transformstream +[`WHATWG Streams Standard`]: https://streams.spec.whatwg.org/ +[`backpressure guide`]: /learn/modules/backpressuring-in-streams +[`fs.readStream`]: https://nodejs.org/api/fs.html#class-fsreadstream +[`http.IncomingMessage`]: https://nodejs.org/api/http.html#class-httpincomingmessage +[`process.stdin`]: https://nodejs.org/api/process.html#processstdin +[`fs.WriteStream`]: https://nodejs.org/api/fs.html#class-fswritestream +[`process.stdout`]: https://nodejs.org/api/process.html#processstdout +[`process.stderr`]: https://nodejs.org/api/process.html#processstderr +[Matteo Collina]: https://github.com/mcollina +[Platformatic's Blog]: https://blog.platformatic.dev/a-guide-to-reading-and-writing-nodejs-streams diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 9d6aff319e36f..b26a0ab739471 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -94,6 +94,7 @@ "publishingNodeApiModules": "How to publish a Node-API package", "anatomyOfAnHttpTransaction": "Anatomy of an HTTP Transaction", "abiStability": "ABI Stability", + "howToUseStreams": "How to use streams", "backpressuringInStreams": "Backpressuring in Streams" } }, From 27c8deb25faa274c3e2177e65cd60a1a56a6b88d Mon Sep 17 00:00:00 2001 From: Iurii Kucherov <yuyokk@gmail.com> Date: Thu, 2 Jan 2025 01:54:21 +0100 Subject: [PATCH 0228/1385] docs: Fix 'Down the rabbit-hole' link on 'Publishing a package' page (#7373) docs: Fix 'Down the rabbit-hole' anchor link --- .../pages/en/learn/modules/publishing-a-package.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/site/pages/en/learn/modules/publishing-a-package.mdx b/apps/site/pages/en/learn/modules/publishing-a-package.mdx index 5c0b82e6f89dc..aee351ebe14cc 100644 --- a/apps/site/pages/en/learn/modules/publishing-a-package.mdx +++ b/apps/site/pages/en/learn/modules/publishing-a-package.mdx @@ -8,7 +8,7 @@ authors: JakobJingleheimer All the provided `package.json` configurations (not specifically marked “does not work”) work in Node.js 12.22.x (v12 latest, the oldest supported line) and 17.2.0 (current latest at the time)[^1], and for grins, with webpack 5.53.0 and 5.63.0 respectively. These are available: [JakobJingleheimer/nodejs-module-config-examples](https://github.com/JakobJingleheimer/nodejs-module-config-examples). -For curious cats, [How did we get here](#how-did-we-get-here) and [Down the rabbit-hole](#down-the-rabbithole) provide background and deeper explanations. +For curious cats, [How did we get here](#how-did-we-get-here) and [Down the rabbit-hole](#down-the-rabbit-hole) provide background and deeper explanations. ## Pick your fix @@ -333,7 +333,7 @@ We're not in Kansas anymore, Toto. The configurations (there are 2 options) are nearly the same as [ESM source and both CJS & ESM distribution](#esm-source-and-both-cjs-amp-esm-distribution), just exclude `packageJson.exports.import`. -💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbithole) and [Gotchas](#gotchas) below. +💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbit-hole) and [Gotchas](#gotchas) below. **Working example**: [esm-with-cjs-distro](https://github.com/JakobJingleheimer/nodejs-module-config-examples/tree/main/packages/esm/cjs-distro) @@ -382,7 +382,7 @@ If your files explicitly _all_ use `.cjs` and/or `.mjs` file extensions (none us } ``` -💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbithole) and [Gotchas](#gotchas) below. +💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbit-hole) and [Gotchas](#gotchas) below. #### Publish a CJS distribution with an ESM wrapper @@ -422,7 +422,7 @@ This is also almost identical to the [CJS source and dual distribution using an } ``` -💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbithole) and [Gotchas](#gotchas) below. +💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbit-hole) and [Gotchas](#gotchas) below. #### Publish both full CJS & ESM distributions @@ -494,7 +494,7 @@ Alternatively, you can use `"default"` and `"node"` keys, which are less counter } ``` -💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbithole) and [Gotchas](#gotchas) below. +💡 Using `"type": "module"`[^2] paired with the `.cjs` file extension (for commonjs files) yields best results. For more information on why, see [Down the rabbit-hole](#down-the-rabbit-hole) and [Gotchas](#gotchas) below. ##### Use the `.mjs` (or equivalent) file extension for all source code files From e23598dca6cf1a43432b7ca3365599c2ffa6b2e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Jan 2025 15:25:28 -0800 Subject: [PATCH 0229/1385] meta: bump @types/node from 22.10.1 to 22.10.3 (#7381) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.10.1 to 22.10.3. - [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-patch ... Signed-off-by: dependabot[bot] <support@github.com> 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 e2427520fb397..71e28e12cfe58 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.10.1", + "@types/node": "22.10.3", "cz-conventional-changelog": "3.3.0", "eslint": "~9.16.0", "eslint-plugin-import-x": "~4.4.3", @@ -6203,11 +6203,10 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "version": "22.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.3.tgz", + "integrity": "sha512-DifAyw4BkrufCILvD3ucnuN8eydUfc/C1GlyrnI+LK6543w5/L3VeVgf05o3B4fqSXP1dKYLOZsKfutpxPzZrw==", "devOptional": true, - "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } diff --git a/package.json b/package.json index 8491f970da2ae..da8493ef76bad 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.10.1", + "@types/node": "22.10.3", "cz-conventional-changelog": "3.3.0", "eslint": "~9.16.0", "eslint-plugin-import-x": "~4.4.3", From 3e1c9cd63b9d5193239b1df119d71a1df5646a86 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Jan 2025 15:27:13 -0800 Subject: [PATCH 0230/1385] meta: bump @testing-library/react from 16.0.1 to 16.1.0 in the testing group (#7377) meta: bump @testing-library/react in the testing group Bumps the testing group with 1 update: [@testing-library/react](https://github.com/testing-library/react-testing-library). Updates `@testing-library/react` from 16.0.1 to 16.1.0 - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v16.0.1...v16.1.0) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 5349cd5823cc2..043c07245b0a9 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -86,7 +86,7 @@ "@storybook/addon-webpack5-compiler-swc": "^1.0.5", "@storybook/react-webpack5": "^8.4.6", "@testing-library/jest-dom": "~6.6.3", - "@testing-library/react": "~16.0.1", + "@testing-library/react": "~16.1.0", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.14", "@types/react": "^18.3.12", diff --git a/package-lock.json b/package-lock.json index 71e28e12cfe58..302b69d8eb22e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -97,7 +97,7 @@ "@storybook/addon-webpack5-compiler-swc": "^1.0.5", "@storybook/react-webpack5": "^8.4.6", "@testing-library/jest-dom": "~6.6.3", - "@testing-library/react": "~16.0.1", + "@testing-library/react": "~16.1.0", "@testing-library/user-event": "~14.5.2", "@types/jest": "29.5.14", "@types/react": "^18.3.12", @@ -5853,11 +5853,10 @@ } }, "node_modules/@testing-library/react": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", - "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.1.0.tgz", + "integrity": "sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -5866,10 +5865,10 @@ }, "peerDependencies": { "@testing-library/dom": "^10.0.0", - "@types/react": "^18.0.0", - "@types/react-dom": "^18.0.0", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { From e20a8012417e2fddfa003bd79aee2e027fbf06a5 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Fri, 3 Jan 2025 16:11:42 +0000 Subject: [PATCH 0231/1385] chore: add more unit tests (#7371) * chore: add more unit tests * chore: text correction --- .../ActiveLink/__tests__/index.test.mjs | 1 - apps/site/jest.config.mjs | 4 +- .../navigationStateProvider.test.mjs | 25 +++ .../__tests__/releaseProvider.test.mjs | 39 +++++ .../__tests__/releaseReducer.test.mjs | 78 ++++++++++ apps/site/util/__tests__/authorUtils.test.mjs | 25 ++- apps/site/util/__tests__/blogUtils.test.mjs | 12 ++ apps/site/util/__tests__/dateUtils.test.mjs | 16 +- apps/site/util/__tests__/debounce.test.mjs | 15 +- apps/site/util/__tests__/deepMerge.test.mjs | 17 +++ apps/site/util/__tests__/detectOS.test.mjs | 92 +++++++---- .../util/__tests__/downloadUtils.test.mjs | 143 ++++++++++++++++++ .../__tests__/getHighEntropyValues.test.mjs | 42 +++++ .../__tests__/getLanguageDisplayName.test.mjs | 24 +++ .../util/__tests__/getNodeApiLink.test.mjs | 18 ++- .../__tests__/getNodeDownloadUrl.test.mjs | 22 ++- .../util/__tests__/getUserPlatform.test.mjs | 15 ++ apps/site/util/__tests__/gitHubUtils.test.mjs | 26 +++- apps/site/util/__tests__/hexToRGBA.test.mjs | 8 + apps/site/util/__tests__/imageUtils.test.mjs | 11 ++ apps/site/util/__tests__/stringUtils.test.mjs | 39 +++++ 21 files changed, 626 insertions(+), 46 deletions(-) create mode 100644 apps/site/providers/__tests__/navigationStateProvider.test.mjs create mode 100644 apps/site/providers/__tests__/releaseProvider.test.mjs create mode 100644 apps/site/reducers/__tests__/releaseReducer.test.mjs create mode 100644 apps/site/util/__tests__/blogUtils.test.mjs create mode 100644 apps/site/util/__tests__/deepMerge.test.mjs create mode 100644 apps/site/util/__tests__/downloadUtils.test.mjs create mode 100644 apps/site/util/__tests__/getHighEntropyValues.test.mjs create mode 100644 apps/site/util/__tests__/getLanguageDisplayName.test.mjs create mode 100644 apps/site/util/__tests__/getUserPlatform.test.mjs diff --git a/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs b/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs index 8ba0755b294c6..df11e03aa6f3f 100644 --- a/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs +++ b/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs @@ -2,7 +2,6 @@ import { render, screen } from '@testing-library/react'; import ActiveLink from '..'; -// mock usePathname, but retain all the other imports jest.mock('@/navigation.mjs', () => ({ ...jest.requireActual('@/navigation.mjs'), usePathname: jest.fn(), diff --git a/apps/site/jest.config.mjs b/apps/site/jest.config.mjs index 5bdcdf737d1ae..68b9b84b76716 100644 --- a/apps/site/jest.config.mjs +++ b/apps/site/jest.config.mjs @@ -1,8 +1,6 @@ import nextJest from 'next/jest.js'; -const createJestConfig = nextJest({ - dir: './', -}); +const createJestConfig = nextJest({ dir: './' }); /** @type {import('jest').Config} */ const customJestConfig = { diff --git a/apps/site/providers/__tests__/navigationStateProvider.test.mjs b/apps/site/providers/__tests__/navigationStateProvider.test.mjs new file mode 100644 index 0000000000000..0d1bcfedecbc9 --- /dev/null +++ b/apps/site/providers/__tests__/navigationStateProvider.test.mjs @@ -0,0 +1,25 @@ +import { render } from '@testing-library/react'; + +import { NavigationStateProvider } from '@/providers/navigationStateProvider'; + +describe('NavigationStateProvider', () => { + it('should render without crashing', () => { + const { container } = render( + <NavigationStateProvider> + <div /> + </NavigationStateProvider> + ); + + expect(container).toBeDefined(); + }); + + it('should provide navigation state context', () => { + const { getByText } = render( + <NavigationStateProvider> + <div>Navigation State</div> + </NavigationStateProvider> + ); + + expect(getByText('Navigation State')).toBeDefined(); + }); +}); diff --git a/apps/site/providers/__tests__/releaseProvider.test.mjs b/apps/site/providers/__tests__/releaseProvider.test.mjs new file mode 100644 index 0000000000000..96db4199e8b6c --- /dev/null +++ b/apps/site/providers/__tests__/releaseProvider.test.mjs @@ -0,0 +1,39 @@ +import { render } from '@testing-library/react'; + +import { ReleaseProvider, ReleasesProvider } from '@/providers/releaseProvider'; + +describe('ReleaseProvider', () => { + it('should render without crashing', () => { + const initialRelease = { versionWithPrefix: 'v14.17.0' }; + const releases = [initialRelease]; + const snippets = []; + + const { container } = render( + <ReleasesProvider releases={releases} snippets={snippets}> + <ReleaseProvider initialRelease={initialRelease}> + <div /> + </ReleaseProvider> + </ReleasesProvider> + ); + + expect(container).toBeDefined(); + }); + + it('should set version from parent provider', () => { + const initialRelease = { versionWithPrefix: 'v14.17.0' }; + const releases = [initialRelease]; + const snippets = []; + + const { getByText } = render( + <ReleasesProvider releases={releases} snippets={snippets}> + <ReleaseProvider initialRelease={initialRelease}> + <ReleaseProvider> + <div>Child Provider</div> + </ReleaseProvider> + </ReleaseProvider> + </ReleasesProvider> + ); + + expect(getByText('Child Provider')).toBeDefined(); + }); +}); diff --git a/apps/site/reducers/__tests__/releaseReducer.test.mjs b/apps/site/reducers/__tests__/releaseReducer.test.mjs new file mode 100644 index 0000000000000..d8688bc9ee874 --- /dev/null +++ b/apps/site/reducers/__tests__/releaseReducer.test.mjs @@ -0,0 +1,78 @@ +import reducer, { releaseState, getActions } from '@/reducers/releaseReducer'; + +describe('releaseReducer', () => { + it('should return the initial state', () => { + const initialState = releaseState; + const action = { type: 'UNKNOWN_ACTION' }; + expect(reducer(initialState, action)).toEqual(initialState); + }); + + it('should handle SET_VERSION action', () => { + const initialState = releaseState; + const action = { type: 'SET_VERSION', payload: 'v14.17.0' }; + const expectedState = { ...initialState, version: 'v14.17.0' }; + expect(reducer(initialState, action)).toEqual(expectedState); + }); + + it('should handle SET_OS action', () => { + const initialState = releaseState; + const action = { type: 'SET_OS', payload: 'Linux' }; + const expectedState = { ...initialState, os: 'Linux' }; + expect(reducer(initialState, action)).toEqual(expectedState); + }); + + it('should handle SET_PLATFORM action', () => { + const initialState = releaseState; + const action = { type: 'SET_PLATFORM', payload: 'arm64' }; + const expectedState = { ...initialState, platform: 'arm64' }; + expect(reducer(initialState, action)).toEqual(expectedState); + }); + + it('should handle SET_INSTALL_METHOD action', () => { + const initialState = releaseState; + const action = { type: 'SET_INSTALL_METHOD', payload: 'binary' }; + const expectedState = { ...initialState, installMethod: 'binary' }; + expect(reducer(initialState, action)).toEqual(expectedState); + }); + + it('should handle SET_MANAGER action', () => { + const initialState = releaseState; + const action = { type: 'SET_MANAGER', payload: 'Yarn' }; + const expectedState = { ...initialState, packageManager: 'Yarn' }; + expect(reducer(initialState, action)).toEqual(expectedState); + }); +}); + +describe('getActions', () => { + it('should create actions correctly', () => { + const dispatch = jest.fn(); + const actions = getActions(dispatch); + + actions.setVersion('v14.17.0'); + expect(dispatch).toHaveBeenCalledWith({ + type: 'SET_VERSION', + payload: 'v14.17.0', + }); + + actions.setOS('Linux'); + expect(dispatch).toHaveBeenCalledWith({ type: 'SET_OS', payload: 'Linux' }); + + actions.setPlatform('arm64'); + expect(dispatch).toHaveBeenCalledWith({ + type: 'SET_PLATFORM', + payload: 'arm64', + }); + + actions.setInstallMethod('binary'); + expect(dispatch).toHaveBeenCalledWith({ + type: 'SET_INSTALL_METHOD', + payload: 'binary', + }); + + actions.setPackageManager('Yarn'); + expect(dispatch).toHaveBeenCalledWith({ + type: 'SET_MANAGER', + payload: 'Yarn', + }); + }); +}); diff --git a/apps/site/util/__tests__/authorUtils.test.mjs b/apps/site/util/__tests__/authorUtils.test.mjs index 7a5a41d35db3a..868c2f2de40c8 100644 --- a/apps/site/util/__tests__/authorUtils.test.mjs +++ b/apps/site/util/__tests__/authorUtils.test.mjs @@ -2,7 +2,8 @@ import { mapAuthorToCardAuthors, getAuthorWithId, getAuthorWithName, -} from '../authorUtils'; + getAuthors, +} from '@/util/authorUtils'; describe('mapAuthorToCardAuthors', () => { it('maps authors to card authors with default avatar source', () => { @@ -96,3 +97,25 @@ describe('getAuthorWithName', () => { ]); }); }); + +describe('authorUtils', () => { + test('mapAuthorToCardAuthors splits authors by common separators', () => { + const result = mapAuthorToCardAuthors('Node, React & prepared by Vue'); + expect(result).toEqual(['Node', 'React', 'Vue']); + }); + + test('getAuthorWithId returns objects with GitHub avatars', () => { + const result = getAuthorWithId(['someUser'], false); + expect(result[0].image).toContain('github'); + }); + + test('getAuthorWithName returns known author details or fallback to acronym', () => { + const result = getAuthorWithName(['unknownAuthor'], true); + expect(result[0].fallback).toBe('U'); + }); + + test('getAuthors uses getAuthorWithId if usernames array is provided', () => { + const result = getAuthors({ usernames: ['testUser'] }); + expect(result[0].nickname).toBe('testUser'); + }); +}); diff --git a/apps/site/util/__tests__/blogUtils.test.mjs b/apps/site/util/__tests__/blogUtils.test.mjs new file mode 100644 index 0000000000000..5f573ab1e1127 --- /dev/null +++ b/apps/site/util/__tests__/blogUtils.test.mjs @@ -0,0 +1,12 @@ +import { mapBlogCategoryToPreviewType } from '@/util/blogUtils'; + +describe('mapBlogCategoryToPreviewType', () => { + test('returns the correct preview type for recognized categories', () => { + expect(mapBlogCategoryToPreviewType('release')).toBe('release'); + expect(mapBlogCategoryToPreviewType('events')).toBe('announcements'); + }); + + test('defaults to announcements for unknown categories', () => { + expect(mapBlogCategoryToPreviewType('random')).toBe('announcements'); + }); +}); diff --git a/apps/site/util/__tests__/dateUtils.test.mjs b/apps/site/util/__tests__/dateUtils.test.mjs index 5fe75341814bb..7b20dec68f750 100644 --- a/apps/site/util/__tests__/dateUtils.test.mjs +++ b/apps/site/util/__tests__/dateUtils.test.mjs @@ -1,7 +1,7 @@ import { dateIsBetween } from '@/util/dateUtils'; describe('dateIsBetween', () => { - it('returns true when the current date is between start and end dates', () => { + it('should return true when the current date is between start and end dates', () => { const startDate = '2022-01-01T00:00:00.000Z'; const endDate = '2069-01-01T00:00:00.000Z'; @@ -10,7 +10,7 @@ describe('dateIsBetween', () => { expect(result).toBe(true); }); - it('returns false when the current date is not between start and end dates', () => { + it('should return false when the current date is not between start and end dates', () => { const startDate = '2010-01-01T00:00:00.000Z'; const endDate = '2020-01-01T00:00:00.000Z'; @@ -19,7 +19,7 @@ describe('dateIsBetween', () => { expect(result).toBe(false); }); - it('throws when either start or end date is invalid', () => { + it('should throw an error when either start or end date is invalid', () => { const invalidStartDate = 'Invalid Start Date'; const validEndDate = '2024-01-01T00:00:00.000Z'; @@ -27,4 +27,14 @@ describe('dateIsBetween', () => { 'dateIsBetween got called with invalid dates' ); }); + + it('should return true if now is between startDate and endDate', () => { + const start = new Date(Date.now() - 1000).toISOString(); + const end = new Date(Date.now() + 1000).toISOString(); + expect(dateIsBetween(start, end)).toBe(true); + }); + + it('should throw an error if dates are invalid', () => { + expect(() => dateIsBetween('invalid', 'invalid')).toThrow(); + }); }); diff --git a/apps/site/util/__tests__/debounce.test.mjs b/apps/site/util/__tests__/debounce.test.mjs index 401feb699b65c..17188ab8f00a1 100644 --- a/apps/site/util/__tests__/debounce.test.mjs +++ b/apps/site/util/__tests__/debounce.test.mjs @@ -1,8 +1,8 @@ import { debounce } from '@/util/debounce'; -describe('debounce', () => { - jest.useFakeTimers(); +jest.useFakeTimers(); +describe('debounce', () => { it('should call the function only once', () => { const fn = jest.fn(); const debouncedFn = debounce(fn, 1000); @@ -28,4 +28,15 @@ describe('debounce', () => { expect(fn).toHaveBeenCalledWith(3); }); + + it('should call the function after the delay', () => { + const mockFn = jest.fn(); + const debouncedFn = debounce(mockFn, 500); + + debouncedFn(); + expect(mockFn).not.toBeCalled(); + + jest.advanceTimersByTime(500); + expect(mockFn).toBeCalled(); + }); }); diff --git a/apps/site/util/__tests__/deepMerge.test.mjs b/apps/site/util/__tests__/deepMerge.test.mjs new file mode 100644 index 0000000000000..8e895740b3fc7 --- /dev/null +++ b/apps/site/util/__tests__/deepMerge.test.mjs @@ -0,0 +1,17 @@ +import deepMerge from '@/util/deepMerge'; + +describe('deepMerge', () => { + it('should merge nested objects', () => { + const obj1 = { a: { b: 1 }, c: 2 }; + const obj2 = { a: { d: 3 }, e: 4 }; + const result = deepMerge(obj1, obj2); + expect(result).toEqual({ a: { b: 1, d: 3 }, c: 2, e: 4 }); + }); + + it('should overwrite primitive properties', () => { + const obj1 = { a: 1 }; + const obj2 = { a: 2 }; + const result = deepMerge(obj1, obj2); + expect(result).toEqual({ a: 2 }); + }); +}); diff --git a/apps/site/util/__tests__/detectOS.test.mjs b/apps/site/util/__tests__/detectOS.test.mjs index 9e006f96144ee..dd3ccd94da954 100644 --- a/apps/site/util/__tests__/detectOS.test.mjs +++ b/apps/site/util/__tests__/detectOS.test.mjs @@ -1,31 +1,69 @@ -import { detectOsInUserAgent } from '@/util/detectOS'; +import { detectOsInUserAgent, detectOS } from '@/util/detectOS'; + +const userAgentTestCases = [ + [ + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246', + 'WIN', + ], + [ + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36', + 'MAC', + ], + [ + 'Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36', + 'OTHER', + ], + [ + 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1', + 'LINUX', + ], + [ + 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.3 Mobile/15E148 Safari/604.1', + 'MAC', + ], + ['', 'OTHER'], + ['OTHERAgent/1.0', 'OTHER'], + [undefined, 'OTHER'], +]; describe('detectOsInUserAgent', () => { - it.each([ - [ - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246', - 'WIN', - ], - [ - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36', - 'MAC', - ], - [ - 'Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36', - 'OTHER', - ], - [ - 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1', - 'LINUX', - ], - [ - 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.3 Mobile/15E148 Safari/604.1', - 'MAC', - ], - ['', 'OTHER'], - ['OTHERAgent/1.0', 'OTHER'], - [undefined, 'OTHER'], - ])('detectOsInUserAgent(%s) returns %s', (os, expected) => { - expect(detectOsInUserAgent(os)).toBe(expected); + it.each(userAgentTestCases)( + 'should return %s for userAgent %s', + (userAgent, expected) => { + expect(detectOsInUserAgent(userAgent)).toBe(expected); + } + ); + + it('should return OTHER if no match is found', () => { + const result = detectOsInUserAgent('no-match'); + expect(result).toBe('OTHER'); + }); + + it('should detect Windows', () => { + const result = detectOsInUserAgent('Mozilla Win something'); + expect(result).toBe('WIN'); + }); + + it('should detect Linux', () => { + const result = detectOsInUserAgent('Mozilla/5.0 (X11; Linux x86_64)'); + expect(result).toBe('LINUX'); + }); +}); + +describe('detectOS', () => { + it('should call detectOsInUserAgent', () => { + Object.defineProperty(global, 'navigator', { + value: { userAgent: 'Mac' }, + configurable: true, + }); + expect(detectOS()).toBe('MAC'); + }); + + it('should return OTHER if navigator is undefined', () => { + Object.defineProperty(global, 'navigator', { + value: undefined, + configurable: true, + }); + expect(detectOS()).toBe('OTHER'); }); }); diff --git a/apps/site/util/__tests__/downloadUtils.test.mjs b/apps/site/util/__tests__/downloadUtils.test.mjs new file mode 100644 index 0000000000000..78f7dd3ab5333 --- /dev/null +++ b/apps/site/util/__tests__/downloadUtils.test.mjs @@ -0,0 +1,143 @@ +import { + parseCompat, + nextItem, + OPERATING_SYSTEMS, + INSTALL_METHODS, + PACKAGE_MANAGERS, + PLATFORMS, +} from '@/util/downloadUtils'; + +describe('parseCompat', () => { + it('should handle all OS, install methods, and package managers', () => { + OPERATING_SYSTEMS.forEach(os => { + INSTALL_METHODS.forEach(method => { + PACKAGE_MANAGERS.forEach(pm => { + const releaseContext = { + os: os.value, + installMethod: method.value, + platform: 'x64', + version: 'v16.0.0', + release: { status: 'LTS' }, + }; + const result = parseCompat([os, pm, method], releaseContext); + expect(Array.isArray(result)).toBe(true); + }); + }); + }); + }); + + it('should validate platform compatibility', () => { + OPERATING_SYSTEMS.forEach(os => { + const platforms = PLATFORMS[os.value] || []; + platforms.forEach(platform => { + const releaseContext = { + os: os.value, + installMethod: '', + platform: platform.value, + version: 'v16.0.0', + release: { status: 'LTS' }, + }; + const result = parseCompat([platform], releaseContext); + expect(result.length).toBe(1); + }); + }); + }); + + describe('extended tests', () => { + it('should disable items if OS is not supported', () => { + const items = [ + { + value: 'testItem', + compatibility: { os: ['MAC'] }, + }, + ]; + const result = parseCompat(items, { + os: 'WIN', + installMethod: '', + platform: '', + version: 'v16.0.0', + release: { status: 'LTS' }, + }); + expect(result[0].disabled).toBe(true); + }); + + it('should disable items if installMethod is not supported', () => { + const items = [ + { + value: 'testItem', + compatibility: { installMethod: ['NVM'] }, + }, + ]; + const result = parseCompat(items, { + os: 'MAC', + installMethod: 'FNM', + platform: '', + version: 'v16.0.0', + release: { status: 'Current' }, + }); + expect(result[0].disabled).toBe(true); + }); + + it('should disable items if platform is not supported', () => { + const items = [ + { + value: 'testItem', + compatibility: { platform: ['arm64'] }, + }, + ]; + const result = parseCompat(items, { + os: 'LINUX', + installMethod: '', + platform: 'x64', + version: 'v16.0.0', + release: { status: 'LTS' }, + }); + expect(result[0].disabled).toBe(true); + }); + + it('should disable items if semver constraint is not satisfied', () => { + const items = [ + { + value: 'testItem', + compatibility: { semver: ['>= 16.9.0'] }, + }, + ]; + const result = parseCompat(items, { + os: 'MAC', + installMethod: '', + platform: 'x64', + version: 'v16.0.0', + release: { status: 'LTS' }, + }); + expect(result[0].disabled).toBe(true); + }); + + it('should disable items if release status is not supported', () => { + const items = [ + { + value: 'testItem', + compatibility: { releases: ['Current'] }, + }, + ]; + const result = parseCompat(items, { + os: 'WIN', + installMethod: '', + platform: 'x64', + version: 'v18.0.0', + release: { status: 'LTS' }, + }); + expect(result[0].disabled).toBe(true); + }); + }); +}); + +describe('nextItem', () => { + it('should find the first valid item if current is invalid', () => { + const items = [ + { value: 'invalid', disabled: true }, + { value: 'valid', disabled: false }, + ]; + expect(nextItem('invalid', items)).toBe('valid'); + expect(nextItem('valid', items)).toBe('valid'); + }); +}); diff --git a/apps/site/util/__tests__/getHighEntropyValues.test.mjs b/apps/site/util/__tests__/getHighEntropyValues.test.mjs new file mode 100644 index 0000000000000..c1f3345d04dd8 --- /dev/null +++ b/apps/site/util/__tests__/getHighEntropyValues.test.mjs @@ -0,0 +1,42 @@ +import { getHighEntropyValues } from '@/util/getHighEntropyValues'; + +describe('getHighEntropyValues', () => { + beforeEach(() => { + Object.defineProperty(global, 'navigator', { + value: { + userAgentData: { + getHighEntropyValues: jest + .fn() + .mockResolvedValue({ platform: 'Win32', architecture: 'x86' }), + }, + }, + configurable: true, + }); + }); + + it('should resolve and return hint values', async () => { + const hints = ['platform']; + const result = await getHighEntropyValues(hints); + expect(result.platform).toBe('Win32'); + }); + + it('should return an empty object on rejection', async () => { + navigator.userAgentData.getHighEntropyValues.mockRejectedValue(null); + const hints = ['platform']; + const result = await getHighEntropyValues(hints); + expect(result.platform).toBeUndefined(); + }); + + it('should return multiple hint values', async () => { + const hints = ['platform', 'architecture']; + const result = await getHighEntropyValues(hints); + expect(result.platform).toBe('Win32'); + expect(result.architecture).toBe('x86'); + }); + + it('should return undefined for unsupported hints', async () => { + const hints = ['unsupportedHint']; + const result = await getHighEntropyValues(hints); + expect(result.unsupportedHint).toBeUndefined(); + }); +}); diff --git a/apps/site/util/__tests__/getLanguageDisplayName.test.mjs b/apps/site/util/__tests__/getLanguageDisplayName.test.mjs new file mode 100644 index 0000000000000..4af7fe416a71b --- /dev/null +++ b/apps/site/util/__tests__/getLanguageDisplayName.test.mjs @@ -0,0 +1,24 @@ +import { getLanguageDisplayName } from '@/util/getLanguageDisplayName'; + +jest.mock('@/shiki.config.mjs', () => ({ + LANGUAGES: [ + { name: 'javascript', aliases: ['js'], displayName: 'JavaScript' }, + { name: 'typescript', aliases: ['ts'], displayName: 'TypeScript' }, + ], +})); + +describe('getLanguageDisplayName', () => { + it('should return the display name for a known language', () => { + expect(getLanguageDisplayName('javascript')).toBe('JavaScript'); + expect(getLanguageDisplayName('js')).toBe('JavaScript'); + }); + + it('should return the display name for another known language', () => { + expect(getLanguageDisplayName('typescript')).toBe('TypeScript'); + expect(getLanguageDisplayName('ts')).toBe('TypeScript'); + }); + + it('should return the input language if it is not known', () => { + expect(getLanguageDisplayName('unknown')).toBe('unknown'); + }); +}); diff --git a/apps/site/util/__tests__/getNodeApiLink.test.mjs b/apps/site/util/__tests__/getNodeApiLink.test.mjs index 5317855c62aa7..2a23f9b90eb0e 100644 --- a/apps/site/util/__tests__/getNodeApiLink.test.mjs +++ b/apps/site/util/__tests__/getNodeApiLink.test.mjs @@ -1,7 +1,7 @@ import { getNodeApiLink } from '@/util/getNodeApiLink'; describe('getNodeApiLink', () => { - it('returns the correct API link for versions >=0.3.1 and <0.5.1', () => { + it('should return the correct API link for versions >=0.3.1 and <0.5.1', () => { const version = '0.4.0'; const expectedLink = `https://nodejs.org/docs/${version}/api/`; @@ -10,7 +10,12 @@ describe('getNodeApiLink', () => { expect(result).toBe(expectedLink); }); - it('returns the correct API link for versions >=0.1.14 and <0.3.1', () => { + it('should return the correct URL for versions >=0.3.1 and <0.5.1', () => { + const url = getNodeApiLink('v0.4.10'); + expect(url).toContain('/api/'); + }); + + it('should return the correct API link for versions >=0.1.14 and <0.3.1', () => { const version = '0.2.0'; const expectedLink = `https://nodejs.org/docs/${version}/api.html`; @@ -19,7 +24,7 @@ describe('getNodeApiLink', () => { expect(result).toBe(expectedLink); }); - it('returns the correct API link for versions >=1.0.0 and <4.0.0', () => { + it('should return the correct API link for versions >=1.0.0 and <4.0.0', () => { const version = '2.3.0'; const expectedLink = `https://iojs.org/dist/${version}/docs/api/`; @@ -28,7 +33,12 @@ describe('getNodeApiLink', () => { expect(result).toBe(expectedLink); }); - it('returns the correct API link for other versions', () => { + it('should form the correct URL for versions >=1.0.0 and <4.0.0', () => { + const url = getNodeApiLink('v1.2.3'); + expect(url).toContain('iojs.org/dist/v1.2.3/docs/api/'); + }); + + it('should return the correct API link for other versions', () => { const version = '5.0.0'; const expectedLink = `https://nodejs.org/dist/${version}/docs/api/`; diff --git a/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs b/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs index c95fa48e66126..da1c00f317b0f 100644 --- a/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs +++ b/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs @@ -3,7 +3,7 @@ import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; const version = 'v18.16.0'; describe('getNodeDownloadUrl', () => { - it('returns the correct download URL for Mac', () => { + it('should return the correct download URL for Mac', () => { const os = 'MAC'; const bitness = 86; const expectedUrl = 'https://nodejs.org/dist/v18.16.0/node-v18.16.0.pkg'; @@ -11,7 +11,7 @@ describe('getNodeDownloadUrl', () => { expect(getNodeDownloadUrl(version, os, bitness)).toBe(expectedUrl); }); - it('returns the correct download URL for Windows (32-bit)', () => { + it('should return the correct download URL for Windows (32-bit)', () => { const os = 'WIN'; const bitness = 86; const expectedUrl = @@ -20,7 +20,7 @@ describe('getNodeDownloadUrl', () => { expect(getNodeDownloadUrl(version, os, bitness)).toBe(expectedUrl); }); - it('returns the correct download URL for Windows (64-bit)', () => { + it('should return the correct download URL for Windows (64-bit)', () => { const os = 'WIN'; const bitness = 64; const expectedUrl = @@ -29,11 +29,25 @@ describe('getNodeDownloadUrl', () => { expect(getNodeDownloadUrl(version, os, bitness)).toBe(expectedUrl); }); - it('returns the default download URL for other operating systems', () => { + it('should return the default download URL for other operating systems', () => { const os = 'OTHER'; const bitness = 86; const expectedUrl = 'https://nodejs.org/dist/v18.16.0/node-v18.16.0.tar.gz'; expect(getNodeDownloadUrl(version, os, bitness)).toBe(expectedUrl); }); + + describe('MAC', () => { + it('should return .pkg link for installer', () => { + const url = getNodeDownloadUrl('v18.0.0', 'MAC', 'x64', 'installer'); + expect(url).toContain('.pkg'); + }); + }); + + describe('WIN', () => { + it('should return an MSI link for installer', () => { + const url = getNodeDownloadUrl('v18.0.0', 'WIN', 'x64', 'installer'); + expect(url).toContain('.msi'); + }); + }); }); diff --git a/apps/site/util/__tests__/getUserPlatform.test.mjs b/apps/site/util/__tests__/getUserPlatform.test.mjs new file mode 100644 index 0000000000000..5584ea836f717 --- /dev/null +++ b/apps/site/util/__tests__/getUserPlatform.test.mjs @@ -0,0 +1,15 @@ +import { getUserPlatform } from '@/util/getUserPlatform'; + +describe('getUserPlatform', () => { + it('should return arm64 for arm + 64', () => { + expect(getUserPlatform('arm', '64')).toBe('arm64'); + }); + + it('should return x64 for non-arm + 64', () => { + expect(getUserPlatform('amd64', '64')).toBe('x64'); + }); + + it('should return x86 otherwise', () => { + expect(getUserPlatform('amd64', '32')).toBe('x86'); + }); +}); diff --git a/apps/site/util/__tests__/gitHubUtils.test.mjs b/apps/site/util/__tests__/gitHubUtils.test.mjs index a749a403af062..6fc326df82570 100644 --- a/apps/site/util/__tests__/gitHubUtils.test.mjs +++ b/apps/site/util/__tests__/gitHubUtils.test.mjs @@ -5,7 +5,7 @@ import { getGitHubApiDocsUrl, } from '@/util/gitHubUtils'; -describe('GitHub utils', () => { +describe('gitHubUtils', () => { it('getGitHubAvatarUrl returns the correct URL', () => { expect(getGitHubAvatarUrl('octocat')).toBe( 'https://avatars.githubusercontent.com/octocat' @@ -30,4 +30,28 @@ describe('GitHub utils', () => { 'https://api.github.com/repos/nodejs/node/contents/doc/api?ref=assert'; expect(result).toBe(expected); }); + + describe('getGitHubAvatarUrl', () => { + it('should return a valid GitHub avatar URL', () => { + expect(getGitHubAvatarUrl('octocat')).toBe( + 'https://avatars.githubusercontent.com/octocat' + ); + }); + }); + + describe('getGitHubBlobUrl', () => { + it('should return the correct blob URL', () => { + expect(getGitHubBlobUrl('testfile.md')).toContain( + 'blob/main/apps/site/pages/en/testfile.md' + ); + }); + }); + + describe('getGitHubApiDocsUrl', () => { + it('should return the correct API docs URL', () => { + expect(getGitHubApiDocsUrl('v18.x')).toBe( + 'https://api.github.com/repos/nodejs/node/contents/doc/api?ref=v18.x' + ); + }); + }); }); diff --git a/apps/site/util/__tests__/hexToRGBA.test.mjs b/apps/site/util/__tests__/hexToRGBA.test.mjs index 2e7ca9e00b3d2..b477784d388b7 100644 --- a/apps/site/util/__tests__/hexToRGBA.test.mjs +++ b/apps/site/util/__tests__/hexToRGBA.test.mjs @@ -14,4 +14,12 @@ describe('hexToRGBA', () => { expect(rgbaColor).toBe('rgba(255, 255, 255, 0.5)'); }); + + it('should convert hex to RGBA correctly', () => { + expect(hexToRGBA('#FFFFFF')).toBe('rgba(255, 255, 255, 0.9)'); + }); + + it('should handle custom alpha value', () => { + expect(hexToRGBA('#000000', 0.5)).toBe('rgba(0, 0, 0, 0.5)'); + }); }); diff --git a/apps/site/util/__tests__/imageUtils.test.mjs b/apps/site/util/__tests__/imageUtils.test.mjs index 3e2ec00245ca1..f52a7fb9bfb4e 100644 --- a/apps/site/util/__tests__/imageUtils.test.mjs +++ b/apps/site/util/__tests__/imageUtils.test.mjs @@ -41,3 +41,14 @@ describe('isSvgImage', () => { }); }); }); + +describe('imageUtils', () => { + describe('isSvgImage', () => { + it('should detect .svg extension properly', () => { + expect(isSvgImage('icon.svg')).toBe(true); + }); + it('should return false for non-svg source', () => { + expect(isSvgImage('logo.png')).toBe(false); + }); + }); +}); diff --git a/apps/site/util/__tests__/stringUtils.test.mjs b/apps/site/util/__tests__/stringUtils.test.mjs index 27e65f1b0355e..ad2f3ef59aaea 100644 --- a/apps/site/util/__tests__/stringUtils.test.mjs +++ b/apps/site/util/__tests__/stringUtils.test.mjs @@ -72,4 +72,43 @@ describe('String utils', () => { it('dashToCamelCase returns correct camelCase with numbers', () => { expect(dashToCamelCase('foo-123-bar')).toBe('foo123Bar'); }); + + test('getAcronymFromString returns an acronym for a simple string', () => { + const result = getAcronymFromString('Node JS'); + expect(result).toBe('NJ'); + }); + + test('parseRichTextIntoPlainText removes markdown syntax', () => { + const result = parseRichTextIntoPlainText( + 'Hello **world**!\n*italic text*' + ); + expect(result).toBe('Hello world!\nitalic text'); + }); + + test('dashToCamelCase converts dashed strings to camelCase', () => { + const result = dashToCamelCase('es-2015'); + expect(result).toBe('es2015'); + }); + + describe('stringUtils', () => { + describe('getAcronymFromString', () => { + it('should return correct acronym', () => { + const result = getAcronymFromString('Hello World'); + expect(result).toBe('HW'); + }); + }); + + describe('parseRichTextIntoPlainText', () => { + it('should remove markdown and HTML', () => { + const result = parseRichTextIntoPlainText('<h1>Hello</h1> *world*'); + expect(result).toBe('Hello world'); + }); + }); + + describe('dashToCamelCase', () => { + it('should convert dash-case to camelCase', () => { + expect(dashToCamelCase('es-2015-config')).toBe('es2015Config'); + }); + }); + }); }); From 879077098b2c4198e0641e1ffd9f5de1bff2babb Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Fri, 3 Jan 2025 19:19:32 +0300 Subject: [PATCH 0232/1385] fix: breadcrumb overflow on mobile resolution (#7372) fix: breadcrumb overflow --- .../Common/Breadcrumbs/BreadcrumbItem/index.module.css | 4 ++-- .../Common/Breadcrumbs/BreadcrumbRoot/index.module.css | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css b/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css index eca19df43f8ef..713fad32dac39 100644 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css +++ b/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css @@ -7,8 +7,8 @@ text-sm font-medium; - &:last-child { - @apply w-full; + &:not(:last-child) { + @apply shrink-0; } a { diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css b/apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css index a0d9c35c8a58c..51043398d4657 100644 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css +++ b/apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css @@ -1,6 +1,7 @@ .list { - @apply flex - w-full + @apply xs:w-full + flex + w-screen gap-5 px-6; } From d8240d1443c47568f867d46459200650b41c9a37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 13:25:46 -0600 Subject: [PATCH 0233/1385] meta: bump lint-staged from 15.2.10 to 15.3.0 (#7379) Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 15.2.10 to 15.3.0. - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/master/CHANGELOG.md) - [Commits](https://github.com/lint-staged/lint-staged/compare/v15.2.10...v15.3.0) --- updated-dependencies: - dependency-name: lint-staged dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 50 ++++++++++++++--------------------------------- package.json | 2 +- 2 files changed, 16 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 302b69d8eb22e..c38db50a43f97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ ], "dependencies": { "husky": "9.1.7", - "lint-staged": "15.2.10", + "lint-staged": "15.3.0", "turbo": "2.3.3" }, "devDependencies": { @@ -16047,21 +16047,20 @@ } }, "node_modules/lint-staged": { - "version": "15.2.10", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", - "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", - "license": "MIT", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.3.0.tgz", + "integrity": "sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==", "dependencies": { - "chalk": "~5.3.0", + "chalk": "~5.4.1", "commander": "~12.1.0", - "debug": "~4.3.6", + "debug": "~4.4.0", "execa": "~8.0.1", - "lilconfig": "~3.1.2", - "listr2": "~8.2.4", + "lilconfig": "~3.1.3", + "listr2": "~8.2.5", "micromatch": "~4.0.8", "pidtree": "~0.6.0", "string-argv": "~0.3.2", - "yaml": "~2.5.0" + "yaml": "~2.6.1" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -16074,10 +16073,9 @@ } }, "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "license": "MIT", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -16094,23 +16092,6 @@ "node": ">=18" } }, - "node_modules/lint-staged/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/lint-staged/node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", @@ -26029,10 +26010,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", - "license": "ISC", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index da8493ef76bad..2fca0ca816715 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ }, "dependencies": { "husky": "9.1.7", - "lint-staged": "15.2.10", + "lint-staged": "15.3.0", "turbo": "2.3.3" }, "devDependencies": { From 6db0c9ca9075888b4da26cf68fe2f796ee7a033e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:31:51 +0000 Subject: [PATCH 0234/1385] meta: bump the lint group with 7 updates (#7375) Bumps the lint group with 7 updates: | Package | From | To | | --- | --- | --- | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.16.0` | `9.17.0` | | [eslint](https://github.com/eslint/eslint) | `9.16.0` | `9.17.0` | | [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) | `4.4.3` | `4.6.1` | | [eslint-import-resolver-typescript](https://github.com/import-js/eslint-import-resolver-typescript) | `3.6.3` | `3.7.0` | | [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) | `5.0.0` | `5.1.0` | | [stylelint](https://github.com/stylelint/stylelint) | `16.11.0` | `16.12.0` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.16.0` | `8.19.0` | Updates `@eslint/js` from 9.16.0 to 9.17.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.17.0/packages/js) Updates `eslint` from 9.16.0 to 9.17.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.16.0...v9.17.0) Updates `eslint-plugin-import-x` from 4.4.3 to 4.6.1 - [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.3...v4.6.1) Updates `eslint-import-resolver-typescript` from 3.6.3 to 3.7.0 - [Release notes](https://github.com/import-js/eslint-import-resolver-typescript/releases) - [Changelog](https://github.com/import-js/eslint-import-resolver-typescript/blob/master/CHANGELOG.md) - [Commits](https://github.com/import-js/eslint-import-resolver-typescript/compare/v3.6.3...v3.7.0) Updates `eslint-plugin-react-hooks` from 5.0.0 to 5.1.0 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks) Updates `stylelint` from 16.11.0 to 16.12.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.11.0...16.12.0) Updates `typescript-eslint` from 8.16.0 to 8.19.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.19.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-minor dependency-group: lint - dependency-name: eslint-import-resolver-typescript dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint-plugin-react-hooks 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 8 +- package-lock.json | 435 ++++++++----------------------------- package.json | 6 +- packages/i18n/package.json | 4 +- 4 files changed, 95 insertions(+), 358 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 043c07245b0a9..a0073ca09e9de 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -93,10 +93,10 @@ "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", "eslint-config-next": "15.1.3", - "eslint-import-resolver-typescript": "~3.6.3", + "eslint-import-resolver-typescript": "~3.7.0", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.2", - "eslint-plugin-react-hooks": "5.0.0", + "eslint-plugin-react-hooks": "5.1.0", "eslint-plugin-storybook": "~0.11.0", "handlebars": "4.7.8", "jest": "29.7.0", @@ -105,12 +105,12 @@ "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", "storybook": "^8.4.4", - "stylelint": "16.11.0", + "stylelint": "16.12.0", "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.7.2", - "typescript-eslint": "~8.16.0", + "typescript-eslint": "~8.19.0", "user-agent-data-types": "0.4.2" } } diff --git a/package-lock.json b/package-lock.json index c38db50a43f97..d7fed72d51f28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,12 +16,12 @@ "turbo": "2.3.3" }, "devDependencies": { - "@eslint/js": "~9.16.0", + "@eslint/js": "~9.17.0", "@types/eslint__js": "8.42.3", "@types/node": "22.10.3", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.16.0", - "eslint-plugin-import-x": "~4.4.3", + "eslint": "~9.17.0", + "eslint-plugin-import-x": "~4.6.1", "eslint-plugin-no-relative-import-paths": "~1.5.5", "prettier": "3.4.1", "prettier-plugin-tailwindcss": "0.6.9" @@ -104,10 +104,10 @@ "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", "eslint-config-next": "15.1.3", - "eslint-import-resolver-typescript": "~3.6.3", + "eslint-import-resolver-typescript": "~3.7.0", "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.2", - "eslint-plugin-react-hooks": "5.0.0", + "eslint-plugin-react-hooks": "5.1.0", "eslint-plugin-storybook": "~0.11.0", "handlebars": "4.7.8", "jest": "29.7.0", @@ -116,12 +116,12 @@ "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", "storybook": "^8.4.4", - "stylelint": "16.11.0", + "stylelint": "16.12.0", "stylelint-config-standard": "36.0.1", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.7.2", - "typescript-eslint": "~8.16.0", + "typescript-eslint": "~8.19.0", "user-agent-data-types": "0.4.2" } }, @@ -1531,11 +1531,10 @@ } }, "node_modules/@eslint/js": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", - "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -6317,17 +6316,16 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz", - "integrity": "sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz", + "integrity": "sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.18.2", - "@typescript-eslint/type-utils": "8.18.2", - "@typescript-eslint/utils": "8.18.2", - "@typescript-eslint/visitor-keys": "8.18.2", + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/type-utils": "8.19.0", + "@typescript-eslint/utils": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -6347,16 +6345,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.2.tgz", - "integrity": "sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.0.tgz", + "integrity": "sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.18.2", - "@typescript-eslint/types": "8.18.2", - "@typescript-eslint/typescript-estree": "8.18.2", - "@typescript-eslint/visitor-keys": "8.18.2", + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4" }, "engines": { @@ -6372,14 +6369,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz", - "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz", + "integrity": "sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.2", - "@typescript-eslint/visitor-keys": "8.18.2" + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6390,14 +6386,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz", - "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz", + "integrity": "sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.18.2", - "@typescript-eslint/utils": "8.18.2", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/utils": "8.19.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -6414,11 +6409,10 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz", - "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.0.tgz", + "integrity": "sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -6428,14 +6422,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz", - "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz", + "integrity": "sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.2", - "@typescript-eslint/visitor-keys": "8.18.2", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6459,7 +6452,6 @@ "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", @@ -6476,7 +6468,6 @@ "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" }, @@ -6489,7 +6480,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6501,16 +6491,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz", - "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.0.tgz", + "integrity": "sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.2", - "@typescript-eslint/types": "8.18.2", - "@typescript-eslint/typescript-estree": "8.18.2" + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6525,13 +6514,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz", - "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz", + "integrity": "sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/types": "8.19.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -9835,18 +9823,17 @@ } }, "node_modules/eslint": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", - "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.9.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.16.0", + "@eslint/js": "9.17.0", "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -9855,7 +9842,7 @@ "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -9945,20 +9932,19 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", - "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz", + "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==", "dev": true, - "license": "ISC", "dependencies": { "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.3.5", + "debug": "^4.3.7", "enhanced-resolve": "^5.15.0", - "eslint-module-utils": "^2.8.1", "fast-glob": "^3.3.2", "get-tsconfig": "^4.7.5", "is-bun-module": "^1.0.2", - "is-glob": "^4.0.3" + "is-glob": "^4.0.3", + "stable-hash": "^0.0.4" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -10137,15 +10123,17 @@ } }, "node_modules/eslint-plugin-import-x": { - "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==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.6.1.tgz", + "integrity": "sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==", "dev": true, - "license": "MIT", "dependencies": { + "@types/doctrine": "^0.0.9", + "@typescript-eslint/scope-manager": "^8.1.0", "@typescript-eslint/utils": "^8.1.0", "debug": "^4.3.4", "doctrine": "^3.0.0", + "enhanced-resolve": "^5.17.1", "eslint-import-resolver-node": "^0.3.9", "get-tsconfig": "^4.7.3", "is-glob": "^4.0.3", @@ -10599,11 +10587,10 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -22936,9 +22923,9 @@ } }, "node_modules/stylelint": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.11.0.tgz", - "integrity": "sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==", + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz", + "integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==", "dev": true, "funding": [ { @@ -22950,7 +22937,6 @@ "url": "https://github.com/sponsors/stylelint" } ], - "license": "MIT", "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", @@ -22988,7 +22974,7 @@ "string-width": "^4.2.3", "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", - "table": "^6.8.2", + "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -24329,15 +24315,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", - "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.0.tgz", + "integrity": "sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.16.0", - "@typescript-eslint/parser": "8.16.0", - "@typescript-eslint/utils": "8.16.0" + "@typescript-eslint/eslint-plugin": "8.19.0", + "@typescript-eslint/parser": "8.19.0", + "@typescript-eslint/utils": "8.19.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -24347,256 +24332,8 @@ "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/eslint-plugin": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", - "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/type-utils": "8.16.0", - "@typescript-eslint/utils": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.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.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", - "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/typescript-estree": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.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.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", - "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.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.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", - "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.16.0", - "@typescript-eslint/utils": "8.16.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" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", - "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", - "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.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", - "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.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/utils": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", - "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/typescript-estree": "8.16.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" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", - "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.16.0", - "eslint-visitor-keys": "^4.2.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/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/typescript-eslint/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/typescript-eslint/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/uc.micro": { @@ -26075,9 +25812,9 @@ "packages/i18n": { "name": "@node-core/website-i18n", "devDependencies": { - "eslint-import-resolver-typescript": "~3.6.3", + "eslint-import-resolver-typescript": "~3.7.0", "typescript": "~5.7.2", - "typescript-eslint": "~8.16.0" + "typescript-eslint": "~8.19.0" } } } diff --git a/package.json b/package.json index 2fca0ca816715..e9ca1e77de2ca 100644 --- a/package.json +++ b/package.json @@ -40,12 +40,12 @@ "turbo": "2.3.3" }, "devDependencies": { - "@eslint/js": "~9.16.0", + "@eslint/js": "~9.17.0", "@types/eslint__js": "8.42.3", "@types/node": "22.10.3", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.16.0", - "eslint-plugin-import-x": "~4.4.3", + "eslint": "~9.17.0", + "eslint-plugin-import-x": "~4.6.1", "eslint-plugin-no-relative-import-paths": "~1.5.5", "prettier": "3.4.1", "prettier-plugin-tailwindcss": "0.6.9" diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 0aab7b7f3e21f..e836541feda41 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -16,8 +16,8 @@ "lint:js": "eslint \"**/*.{js,mjs,ts}\"" }, "devDependencies": { - "eslint-import-resolver-typescript": "~3.6.3", + "eslint-import-resolver-typescript": "~3.7.0", "typescript": "~5.7.2", - "typescript-eslint": "~8.16.0" + "typescript-eslint": "~8.19.0" } } From baae0f1e50bf317971b4aefd1e10c1a22d58caac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:32:20 +0000 Subject: [PATCH 0235/1385] meta: bump prettier from 3.4.1 to 3.4.2 (#7380) Bumps [prettier](https://github.com/prettier/prettier) from 3.4.1 to 3.4.2. - [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.4.1...3.4.2) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> 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 d7fed72d51f28..569c9367d9c92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "eslint": "~9.17.0", "eslint-plugin-import-x": "~4.6.1", "eslint-plugin-no-relative-import-paths": "~1.5.5", - "prettier": "3.4.1", + "prettier": "3.4.2", "prettier-plugin-tailwindcss": "0.6.9" }, "engines": { @@ -19754,11 +19754,10 @@ } }, "node_modules/prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", - "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, diff --git a/package.json b/package.json index e9ca1e77de2ca..17ceca5084fac 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "eslint": "~9.17.0", "eslint-plugin-import-x": "~4.6.1", "eslint-plugin-no-relative-import-paths": "~1.5.5", - "prettier": "3.4.1", + "prettier": "3.4.2", "prettier-plugin-tailwindcss": "0.6.9" } } From 6093af99216cf10430fc203559e3c11f23a964b9 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Mon, 6 Jan 2025 09:02:26 -0600 Subject: [PATCH 0236/1385] Visually differentiate table of content heading levels (#7385) * propose heading indentation within metabar toc * adds test for heading visibility --- .../MetaBar/__tests__/index.test.mjs | 60 +++++++++++++++++++ .../Containers/MetaBar/index.stories.tsx | 15 +++++ .../components/Containers/MetaBar/index.tsx | 9 ++- 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 apps/site/components/Containers/MetaBar/__tests__/index.test.mjs diff --git a/apps/site/components/Containers/MetaBar/__tests__/index.test.mjs b/apps/site/components/Containers/MetaBar/__tests__/index.test.mjs new file mode 100644 index 0000000000000..ae7bb85bf8dc9 --- /dev/null +++ b/apps/site/components/Containers/MetaBar/__tests__/index.test.mjs @@ -0,0 +1,60 @@ +import { render } from '@testing-library/react'; + +import MetaBar from '..'; + +describe('MetaBar', () => { + it('does not render h5s in the table of contents', () => { + const { queryByText, getByText } = render( + <MetaBar + items={{}} + headings={{ + items: [ + { + value: 'Heading Level 1', + depth: 1, + data: { id: 'heading-1' }, + }, + { + value: 'Heading Level 2', + depth: 2, + data: { id: 'heading-2' }, + }, + { + value: 'Heading Level 3', + depth: 3, + data: { id: 'heading-3' }, + }, + { + value: 'Heading Level 4', + depth: 4, + data: { id: 'heading-4' }, + }, + { + value: 'Heading Level 5', + depth: 5, + data: { id: 'heading-5' }, + }, + { + value: 'Heading Level 6', + depth: 6, + data: { id: 'heading-6' }, + }, + ], + }} + /> + ); + + const h1Element = queryByText('Heading Level 1'); + expect(h1Element).not.toBeInTheDocument(); + + getByText('Heading Level 2'); + getByText('Heading Level 3'); + getByText('Heading Level 4'); + + const h5Element = queryByText('Heading Level 5'); + expect(h5Element).not.toBeInTheDocument(); + + const h6Element = queryByText('Heading Level 6'); + expect(h6Element).not.toBeInTheDocument(); + }); +}); diff --git a/apps/site/components/Containers/MetaBar/index.stories.tsx b/apps/site/components/Containers/MetaBar/index.stories.tsx index 9d31de185720c..adc1cb49d6c6a 100644 --- a/apps/site/components/Containers/MetaBar/index.stories.tsx +++ b/apps/site/components/Containers/MetaBar/index.stories.tsx @@ -78,6 +78,21 @@ export const Default: Story = { depth: 3, data: { id: 'contact_and_future_updates' }, }, + { + value: 'Email', + depth: 4, + data: { id: 'email' }, + }, + { + value: 'Slack', + depth: 4, + data: { id: 'slack' }, + }, + { + value: '#node-website', + depth: 5, // h5s do not get shown + data: { id: 'node-website' }, + }, ], }, }, diff --git a/apps/site/components/Containers/MetaBar/index.tsx b/apps/site/components/Containers/MetaBar/index.tsx index febcc88bf3e60..e1b06d74f7104 100644 --- a/apps/site/components/Containers/MetaBar/index.tsx +++ b/apps/site/components/Containers/MetaBar/index.tsx @@ -44,8 +44,13 @@ const MetaBar: FC<MetaBarProps> = ({ items, headings }) => { <dd> <ol> {heading.map(head => ( - <li key={head.value}> - <Link href={`#${head?.data?.id}`}>{head.value}</Link> + <li + key={head.value} + className={ + head.depth === 3 ? 'pl-2' : head.depth === 4 ? 'pl-4' : '' + } + > + <Link href={`#${head?.data?.id}`}> {head.value}</Link> </li> ))} </ol> From 4b710a9fe1dcaaf8b82c251c2b6c353bd5b548c1 Mon Sep 17 00:00:00 2001 From: "mpruser.k" <mpruser.k@gmail.com> Date: Tue, 7 Jan 2025 00:10:11 +0900 Subject: [PATCH 0237/1385] fix: ensure code elements within links display correct link styling (#7339) (#7386) Co-authored-by: mpruser <mpruser.@gmail.com> --- apps/site/styles/markdown.css | 4 ++++ apps/site/tailwind.config.ts | 1 + 2 files changed, 5 insertions(+) diff --git a/apps/site/styles/markdown.css b/apps/site/styles/markdown.css index 3984a3ed9c03c..4f60ba4a38a91 100644 --- a/apps/site/styles/markdown.css +++ b/apps/site/styles/markdown.css @@ -93,6 +93,10 @@ main { &:has(code) { @apply max-xs:decoration-neutral-800 dark:max-xs:decoration-neutral-200; + + code { + @apply text-inherit; + } } } diff --git a/apps/site/tailwind.config.ts b/apps/site/tailwind.config.ts index 946e81166d6b8..6138046a3960f 100644 --- a/apps/site/tailwind.config.ts +++ b/apps/site/tailwind.config.ts @@ -99,6 +99,7 @@ export default { white: '#FFFFFF', transparent: 'transparent', shadow: '#101828', + inherit: 'inherit', }, fontSize: { xs: ['0.75rem', '1rem'], From fef1932cc7b8c3f6f09ca90e21c7cdef43ced6c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Jos=C3=A9=20Borba=20Fernandes?= <rodrigoj.borba@gmail.com> Date: Mon, 6 Jan 2025 12:28:28 -0300 Subject: [PATCH 0238/1385] chore: reduce Searchbox button layout shift (#7358) --- apps/site/components/Common/Search/utils.ts | 3 +++ apps/site/components/Common/Skeleton/index.tsx | 6 ++++-- .../components/Containers/NavBar/index.module.css | 11 +++++++++++ apps/site/components/Containers/NavBar/index.tsx | 4 ++++ 4 files changed, 22 insertions(+), 2 deletions(-) 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/Skeleton/index.tsx b/apps/site/components/Common/Skeleton/index.tsx index 640c1f2e3852d..8b8d43753d608 100644 --- a/apps/site/components/Common/Skeleton/index.tsx +++ b/apps/site/components/Common/Skeleton/index.tsx @@ -1,12 +1,14 @@ +import classNames from 'classnames'; import type { FC, PropsWithChildren } from 'react'; import { isValidElement } from 'react'; import styles from './index.module.css'; -type SkeletonProps = { hide?: boolean; loading?: boolean }; +type SkeletonProps = { hide?: boolean; loading?: boolean; className?: string }; const Skeleton: FC<PropsWithChildren<SkeletonProps>> = ({ children, + className, hide = false, loading = true, }) => { @@ -26,7 +28,7 @@ const Skeleton: FC<PropsWithChildren<SkeletonProps>> = ({ <span tabIndex={-1} aria-hidden="true" - className={styles.skeleton} + className={classNames(styles.skeleton, className)} data-inline-skeleton={isValidElement(children) ? undefined : true} > {children} diff --git a/apps/site/components/Containers/NavBar/index.module.css b/apps/site/components/Containers/NavBar/index.module.css index e31532c14c759..3cc1412b8c0e2 100644 --- a/apps/site/components/Containers/NavBar/index.module.css +++ b/apps/site/components/Containers/NavBar/index.module.css @@ -86,6 +86,17 @@ dark:border-neutral-900; } +span.searchButtonSkeleton { + @apply my-px + mr-2 + flex-grow + rounded-xl; + + &:empty { + @apply h-10; + } +} + .ghIconWrapper { @apply size-9 rounded-md diff --git a/apps/site/components/Containers/NavBar/index.tsx b/apps/site/components/Containers/NavBar/index.tsx index 5af65deddd09a..19239f1c4f6c9 100644 --- a/apps/site/components/Containers/NavBar/index.tsx +++ b/apps/site/components/Containers/NavBar/index.tsx @@ -8,6 +8,7 @@ import { useState } from 'react'; import type { FC, ComponentProps, HTMLAttributeAnchorTarget } from 'react'; import LanguageDropdown from '@/components/Common/LanguageDropDown'; +import Skeleton from '@/components/Common/Skeleton'; import ThemeToggle from '@/components/Common/ThemeToggle'; import NavItem from '@/components/Containers/NavBar/NavItem'; import GitHub from '@/components/Icons/Social/GitHub'; @@ -19,6 +20,9 @@ import style from './index.module.css'; const SearchButton = dynamic(() => import('@/components/Common/Search'), { ssr: false, + loading: () => ( + <Skeleton className={style.searchButtonSkeleton} loading={true} /> + ), }); const navInteractionIcons = { From 20e35b7b81be64886a426a43c0fe4f54d23a7b5e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:37:14 +0000 Subject: [PATCH 0239/1385] [automated]: crowdin sync (#7384) * 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 <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .../pages/es/download/package-manager/all.md | 393 +++++++++++++++++ .../pages/fa/download/package-manager/all.md | 392 +++++++++++++++++ apps/site/pages/fr/about/index.mdx | 6 +- .../pages/fr/download/package-manager/all.md | 400 ++++++++++++++++++ .../pages/id/download/package-manager/all.md | 395 +++++++++++++++++ apps/site/pages/ja/about/branding.mdx | 92 ++-- .../ja/about/get-involved/collab-summit.md | 16 + .../site/pages/ja/about/get-involved/index.md | 28 +- apps/site/pages/ja/about/governance.md | 32 ++ .../site/pages/ja/about/previous-releases.mdx | 4 + .../pages/ja/download/package-manager/all.md | 387 +++++++++++++++++ apps/site/pages/ja/index.mdx | 248 +++++------ apps/site/pages/ko/download/current.mdx | 28 ++ apps/site/pages/ko/download/index.mdx | 28 ++ .../pages/ko/download/package-manager/all.md | 390 +++++++++++++++++ .../pages/pt/download/package-manager/all.md | 387 +++++++++++++++++ .../pages/tr/download/package-manager/all.md | 398 +++++++++++++++++ .../pages/uk/download/package-manager/all.md | 392 +++++++++++++++++ .../zh-cn/download/package-manager/all.md | 389 +++++++++++++++++ apps/site/pages/zh-tw/download/index.mdx | 29 ++ .../zh-tw/download/package-manager/all.md | 391 +++++++++++++++++ apps/site/snippets/fr/download/brew.bash | 8 + apps/site/snippets/fr/download/choco.bash | 8 + apps/site/snippets/fr/download/docker.bash | 11 + apps/site/snippets/fr/download/nvm.bash | 9 + apps/site/snippets/ja/download/brew.bash | 8 + apps/site/snippets/ko/download/brew.bash | 8 + apps/site/snippets/ko/download/choco.bash | 8 + apps/site/snippets/ko/download/docker.bash | 11 + apps/site/snippets/ko/download/fnm.bash | 11 + apps/site/snippets/ko/download/npm.bash | 2 + apps/site/snippets/ko/download/nvm.bash | 9 + apps/site/snippets/ko/download/pnpm.bash | 5 + apps/site/snippets/ko/download/yarn.bash | 5 + packages/i18n/locales/fr.json | 104 ++--- packages/i18n/locales/ko.json | 105 ++--- 36 files changed, 4811 insertions(+), 326 deletions(-) create mode 100644 apps/site/pages/es/download/package-manager/all.md create mode 100644 apps/site/pages/fa/download/package-manager/all.md create mode 100644 apps/site/pages/fr/download/package-manager/all.md create mode 100644 apps/site/pages/id/download/package-manager/all.md create mode 100644 apps/site/pages/ja/about/get-involved/collab-summit.md create mode 100644 apps/site/pages/ja/about/governance.md create mode 100644 apps/site/pages/ja/download/package-manager/all.md create mode 100644 apps/site/pages/ko/download/current.mdx create mode 100644 apps/site/pages/ko/download/index.mdx create mode 100644 apps/site/pages/ko/download/package-manager/all.md create mode 100644 apps/site/pages/pt/download/package-manager/all.md create mode 100644 apps/site/pages/tr/download/package-manager/all.md create mode 100644 apps/site/pages/uk/download/package-manager/all.md create mode 100644 apps/site/pages/zh-cn/download/package-manager/all.md create mode 100644 apps/site/pages/zh-tw/download/index.mdx create mode 100644 apps/site/pages/zh-tw/download/package-manager/all.md create mode 100644 apps/site/snippets/fr/download/brew.bash create mode 100644 apps/site/snippets/fr/download/choco.bash create mode 100644 apps/site/snippets/fr/download/docker.bash create mode 100644 apps/site/snippets/fr/download/nvm.bash create mode 100644 apps/site/snippets/ja/download/brew.bash create mode 100644 apps/site/snippets/ko/download/brew.bash create mode 100644 apps/site/snippets/ko/download/choco.bash create mode 100644 apps/site/snippets/ko/download/docker.bash create mode 100644 apps/site/snippets/ko/download/fnm.bash create mode 100644 apps/site/snippets/ko/download/npm.bash create mode 100644 apps/site/snippets/ko/download/nvm.bash create mode 100644 apps/site/snippets/ko/download/pnpm.bash create mode 100644 apps/site/snippets/ko/download/yarn.bash 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:<stream> +``` + +donde `<stream>` 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<major version> + +# 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/fa/download/package-manager/all.md b/apps/site/pages/fa/download/package-manager/all.md new file mode 100644 index 0000000000000..c301c512de83e --- /dev/null +++ b/apps/site/pages/fa/download/package-manager/all.md @@ -0,0 +1,392 @@ +--- +layout: article +title: از طریق پکیج منیجر Node.js نصب +--- + +# نصب Node.js از طریق پکیج منیجر + +> پکیج‌های این صفحه توسط پکیج منیجر های مربوطه نگهداری و پشتیبانی می‌شوند، **نه** توسط تیم هسته Node.js. لطفاً اگر به هرگونه مشکلی برخوردید آن را به نگه دارنده پکیج گزارش دهید. اگر مشکل شما یک باگ در خود Node.js باشد، نگه دارنده آن را به مرجع اصلی گزارش خواهد داد. + +## Alpine Linux + +بسته‌های Node.js LTS و npm در مخزن اصلی موجود هستند. + +```bash +apk add nodejs npm +``` + +Node.js Current نیز می‌تواند از مخزن کامیونیتی نصب شود. + +```bash +apk add nodejs-current +``` + +## Android + +پشتیبانی از اندروید در Node.js هنوز در مرحله آزمایشی است، بنابراین باینری‌های از پیش کامپایل شده هنوز توسط توسعه دهندگان Node.js ارائه نشده‌اند. + +با این حال، برخی راه حل‌های شخص ثالث وجود دارند. به عنوان مثال، کامیونیتی [Termux](https://termux.com/) یک شبیه‌ساز ترمینال و محیط لینوکس برای اندروید، به همراه پکیج منیجر مخصوص و [مجموعه گسترده‌ای](https://github.com/termux/termux-packages) از بسیاری از برنامه‌های از پیش کامپایل شده را ارائه می‌دهد. این دستور در برنامه Termux، آخرین نسخه موجود از Node.js را نصب خواهد کرد: + +```bash +pkg install nodejs +``` + +در حال حاضر، باینری‌های Node.js در Termux به `system-icu` لینک شده‌اند (وابسته به بسته `libicu`). + +## Arch Linux + +بسته‌های Node.js و npm در مخزن کامیونیتی موجود هستند. + +```bash +pacman -S nodejs npm +``` + +## CentOS - Fedora - Red Hat Enterprise Linux + +Node.js در CentOS/RHEL 8 و Fedora به عنوان یک ماژول با نام `nodejs` موجود است. + +```bash +dnf module install nodejs:<stream> +``` + +که در آن `<stream>` مربوط به نسخه اصلی 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 نگهداری و پشتیبانی می‌شوند. +- [توزیع‌های باینری Node.js](#debian-and-ubuntu-based-linux-distributions) که توسط [NodeSource](https://github.com/nodesource/distributions) نگهداری و پشتیبانی می‌شوند. + +## توزیع‌های لینوکس مبتنی بر Debian و Ubuntu + +[توزیع‌های باینری Node.js](https://github.com/nodesource/distributions) از NodeSource در دسترس هستند. + +### جایگزین + +بسته‌هایی که با توزیع‌های لینوکس مبتنی بر دبیان و اوبونتو سازگار هستند، از طریق [Node.js snaps](#snap) در دسترس می‌باشند. + +## Exherbo Linux + +بسته های Node.js و npm در [مخزن arbor](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node) در دسترس است. + +```bash +cave resolve -x node +``` + +## fnm + +مدیر نسخه سریع و ساده Node.js که با Rust ساخته شده است و برای مدیریت نسخه‌های مختلف منتشر شده Node.js استفاده می‌شود. به شما امکان می‌دهد عملیاتی مانند نصب، حذف، تغییر نسخه‌های Node را براساس پوشه فعلی به صورت خودکار انجام دهید و غیره. +برای نصب fnm از این [اسکریپت نصب](https://github.com/Schniz/fnm#using-a-script-macoslinux) استفاده کنید. + +fnm پشتیبانی از پلتفرم‌های متعدد (macOS ، Windows ، Linux) و تمام شل‌های محبوب (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 در portage tree موجود است. + +```bash +emerge nodejs +``` + +## IBM i + +نسخه‌های LTS از Node.js در دسترس هستند و از طریق [پکیج منیجر '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](/#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<major version> + +# 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` یک مدیر نسخه ساده برای استفاده Node.js برای Mac و Linux است. نسخه مورد نظر برای نصب را مشخص کنید، یا از میان منوی نسخه‌های قبلاً دانلود شده انتخاب نمایید. نسخه‌ها در سطح سیستم یا در سطح کاربر نصب می‌شوند و برای استفاده هدفمندتر می‌توانید نسخه‌ای را مستقیماً از دانلودهای ذخیره شده اجرا کنید. + +برای روش‌های نصب (bootstrap, npm, Homebrew, third-party) و تمام جزئیات استفاده، به [صفحه اصلی](https://github.com/tj/n) مراجعه کنید. + +اگر قبلاً `npm` را داشته باشید، نصب `n` و سپس نسخه LTS جدیدترین `node` به این سادگی است: + +``` +npm install -g n +n lts +``` + +## NetBSD + +Node.js در pkgsrc tree موجود است: + +```bash +cd /usr/pkgsrc/lang/nodejs && make install +``` + +یا یک بسته باینری را نصب کنید (در صورت موجود بودن برای پلتفرم شما) با استفاده از pkgin: + +```bash +pkgin -y install nodejs +``` + +## Nodenv + +`nodenv` یک مدیر نسخه سبک Node، مشابه `nvm` است. ساده و قابل پیش‌بینی است. یک اکوسیستم پلاگین غنی به شما امکان می‌دهد آن را برای تطابق با نیازهایتان سفارشی کنید. از `nodenv` برای انتخاب نسخه Node برای برنامه خود استفاده کنید و اطمینان حاصل کنید که محیط توسعه شما با محیط تولید مطابقت دارد. + +دستورالعمل‌های نصب Nodenv در [صفحه گیت‌هاب آن](https://github.com/nodenv/nodenv#installation) نگهداری می‌شوند. لطفاً به آن صفحه مراجعه کنید تا از آخرین نسخه مراحل نصب پیروی کنید. + +## nvm + +Node Version Manager یک اسکریپت bash است که برای مدیریت نسخه‌های مختلف منتشر شده Node.js استفاده می‌شود. به شما امکان می‌دهد عملیاتی مانند نصب، حذف، تغییر نسخه و غیره را انجام دهید. +برای نصب nvm، از این [اسکریپت نصب](https://github.com/nvm-sh/nvm#install--update-script) استفاده کنید. + +در سیستم‌های Unix / OS X، می‌توانیم Node.js ساخته شده از سورس کد را با استفاده از [nvm](https://github.com/creationix/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` چندسکویی است و می‌تواند در ویندوز، macOS و سیستم‌های شبیه یونیکس استفاده شود. + +برای نصب `nvs` در ویندوز به [صفحه انتشار](https://github.com/jasongin/nvs/releases) بروید و فایل نصب‌کننده MSI از آخرین نسخه را دانلود کنید. + +همچنین می‌توانید از `chocolatey` برای نصب آن استفاده کنید: + +```bash +choco install nvs +``` + +#### macOS، UnixLike + +می‌توانید مستندات مربوط به مراحل نصب `nvs` در سیستم‌های macOS/Unix-like را [اینجا](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) پیدا کنید. + +#### استفاده + +پس از این می‌توانید از `nvs` برای تغییر بین نسخه‌های مختلف node استفاده کنید. + +برای اضافه کردن آخرین نسخه از node: + +```bash +nvs add latest +``` + +یا برای اضافه کردن آخرین نسخه LTS از node: + +```bash +nvs add lts +``` + +سپس دستور `nvs use` را اجرا کنید تا یک نسخه از node را به `PATH` برای شل فعلی اضافه کنید: + +```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 از طریق سیستم پورت‌ها در دسترس است. + +```bash +/usr/ports/lang/node +``` + +با استفاده از [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) در OpenBSD: + +```bash +pkg_add node +``` + +## openSUSE و SLE + +Node.js در مخازن اصلی تحت بسته‌های زیر موجود است: + +- `nodejs10` ، `nodejs12` ، `nodejs14` :**openSUSE Leap 15.2** +- - `nodejs20` :**openSUSE Tumbleweed** +- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, and `nodejs14` + (باید [ماژول "Web and Scripting"](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated) فعال شود.) +- `nodejs10`، `nodejs12` ، `nodejs14` :**SUSE Linux Enterprise Server (SLES) 15 SP2** + (باید [ماژول "Web and Scripting"](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module) فعال شود.) + +به عنوان مثال، برای نصب Node.js 14.x در openSUSE Leap 15.2، با دسترسی root دستور زیر را اجرا کنید: + +```bash +zypper install nodejs14 +``` + +نسخه‌های مختلف اصلی Node می‌توانند همزمان نصب و استفاده شوند. + +## SmartOS و illumos + +image های 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](https://github.com/nodejs/snap) تحت عنوان [`node`](https://snapcraft.io/node) در فروشگاه Snap در دسترس هستند. + +## Solus + +Solus، بسته Node.js را در مخزن اصلی خود ارائه می‌دهد. + +```bash +sudo eopkg install nodejs +``` + +## vfox + +یک مدیر نسخه چندسکویی (ویندوز، macOS، لینوکس) و قابل **گسترش**. + +به شما اجازه می‌دهد که **نسخه‌های مختلف برای پروژه‌های مختلف**، **نسخه‌های مختلف برای شل‌های مختلف**، و تغییر خودکار نسخه Node بر اساس دایرکتوری فعلی، و غیره را انجام دهید. + +این نرم‌افزار تمام پوسته‌های محبوب را پشتیبانی می‌کند (Bash, Zsh, Fish, PowerShell, Clink, Cmder). + +به [شروع سریع](https://vfox.lhan.me/guides/quick-start.html) برای استفاده سریع از vfox و تمام جزئیات استفاده مراجعه کنید. + +## Void Linux + +Void Linux نسخه پایدار Node.js را در مخزن اصلی خود ارائه می‌کند. + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +مستقیماً [نصب‌کننده ویندوز](/#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 برای Node.js - z/OS® در دو قالب نصب، SMP/E و PAX در دسترس است. قالب نصب مربوط به خود را انتخاب کنید: + +- [نصب و پیکربندی نسخه SMP/E از Node.js در z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [نصب و پیکربندی نسخه PAX از Node.js در z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/fr/about/index.mdx b/apps/site/pages/fr/about/index.mdx index c08e7bff80aa4..914d165ead2ad 100644 --- a/apps/site/pages/fr/about/index.mdx +++ b/apps/site/pages/fr/about/index.mdx @@ -5,10 +5,8 @@ layout: about À propos de Node.js® -En tant que moteur d'exécution JavaScript asynchrone piloté par les événements, Node.js est conçu pour construire des applications réseau évolutives. -des applications réseau évolutives. Dans l'exemple suivant, "hello world", de nombreuses -peuvent être gérées simultanément. À chaque connexion, le rappel est -mais s'il n'y a pas de travail à faire, Node.js se met en veille. +En tant que moteur d'exécution JavaScript asynchrone orienté événements, Node.js est conçu pour construire des applications réseau évolutives. Dans l'exemple "hello world" suivant, de nombreuses connexions peuvent être gérées simultanément. +chaque connexion, la fonction callback est exécutée, mais s'il n'y a pas de travail à faire, Node.js se met en veille. ```cjs const { createServer } = require('node:http'); diff --git a/apps/site/pages/fr/download/package-manager/all.md b/apps/site/pages/fr/download/package-manager/all.md new file mode 100644 index 0000000000000..e3cc8139496c1 --- /dev/null +++ b/apps/site/pages/fr/download/package-manager/all.md @@ -0,0 +1,400 @@ +--- +layout: article +title: Installer Node.js via le gestionnaire de paquets +--- + +# Installer Node.js via le gestionnaire de paquets + +> Les paquets sur cette page sont maintenus et supportés par leurs auteurs respectifs, **pas** par l'équipe de base de Node.js. Veuillez rapporter tout problème que vous rencontrez au mainteneur du paquet. S'il s'avère que votre problème est un bogue dans Node.js lui-même, le mainteneur rapportera le problème en amont. + +## Alpine Linux + +Les paquets Node.js LTS et npm sont disponibles dans le dépôt principal. + +```bash +apk add nodejs npm +``` + +Node.js actuel peut être installé à partir du Repository de la Communauté. + +```bash +apk add nodejs-current +``` + +## Android + +Le support d'Android est encore expérimental dans Node.js, donc les binaires précompilés ne sont pas encore fournis par les développeurs de Node.js. + +Toutefois, il existe des solutions tierces. Par exemple, la communauté [Termux](https://termux.com/) fournit un émulateur de terminal et un environnement Linux pour Android, ainsi que son propre gestionnaire de paquets et une [vaste collection](https://github.com/termux/termux-packages) de nombreuses applications précompilées. Cette commande dans l'application Termux installera la dernière version disponible de Node.js : + +```bash +pkg install nodejs +``` + +Actuellement, les binaires de Termux Node.js sont liés à `system-icu` (dépendant du paquet `libicu`). + +## Arch Linux + +Les paquets Node.js et npm sont disponibles dans le Dépôt de la communauté. + +```bash +pacman -S nodejs npm +``` + +## CentOS, Fedora et Red Hat Enterprise Linux + +Node.js est disponible en tant que module appelé `nodejs` dans CentOS/RHEL 8 et Fedora. + +```bash +dnf module install nodejs:<stream> +``` + +où `<stream>` correspond à la version majeure de Node.js. +Pour voir la liste des flux disponibles : + +```bash +dnf module list nodejs +``` + +Par exemple, pour installer Node.js 18 : + +```bash +dnf module install nodejs:18/common +``` + +### Alternatives + +Ces ressources fournissent des paquets compatibles avec CentOS, Fedora et RHEL. + +- [Node.js snaps](#snap) maintenu et supporté à https://github.com/nodejs/snap +- [Distributions binaires Node.js](#debian-and-ubuntu-based-linux-distributions) maintenues et supportées par [NodeSource](https://github.com/nodesource/distributions) + +## Distributions basées sur Debian et Ubuntu + +Des [distributions binaires de Node.js](https://github.com/nodesource/distributions) sont disponibles auprès de NodeSource. + +### Alternatives + +Les paquets compatibles avec les distributions Linux basées sur Debian et Ubuntu sont disponibles via [Node.js snaps](#snap). + +## Exherbo Linux + +Les paquets Node.js et npm sont disponibles dans le [dépôt d'arborescence](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). + +```bash +cave resolve -x node +``` + +## fnm + +Gestionnaire de versions Node.js simple et rapide, construit en Rust, utilisé pour gérer plusieurs versions de Node.js. Il vous permet d'effectuer des opérations telles que l'installation, la désinstallation, le changement automatique de version de Node en fonction du répertoire courant, etc. +Pour installer fnm, utilisez ce [script d'installation](https://github.com/Schniz/fnm#using-a-script-macoslinux). + +fnm est multiplateforme (macOS, Windows, Linux) et supporte tous les shells populaires (Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt). +fnm est construit avec la vitesse à l'esprit et le support de compatibilité pour les fichiers `.node-version` et `.nvmrc`. + +## FreeBSD + +La version la plus récente de Node.js est disponible via le port [www/node](https://www.freshports.org/www/node). + +Installer un paquetage binaire via [pkg](https://www.freebsd.org/cgi/man.cgi?pkg) : + +```bash +pkg install node +``` + +Vous pouvez également le compiler vous-même en utilisant [ports](https://www.freebsd.org/cgi/man.cgi?ports) : + +```bash +cd /usr/ports/www/node && make install +``` + +## Gentoo + +Node.js est disponible dans l'arbre de portage. + +```bash +emerge nodejs +``` + +## IBM i + +Les versions LTS de Node.js sont disponibles auprès d'IBM, et sont disponibles via [le gestionnaire de paquets 'yum'](https://ibm.biz/ibmi-rpms). Le nom du paquet est `nodejs` suivi du numéro de la version majeure (par exemple, `nodejs18`, `nodejs20`, etc) + +Pour installer Node.js 14.x à partir de la ligne de commande, exécutez la commande suivante en tant qu'utilisateur disposant de l'autorisation spéciale \*ALLOBJ : + +```bash +yum install nodejs20 +``` + +Node.js peut également être installé avec le produit IBM i Access Client Solutions. Voir [ce document d'assistance](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) pour plus de détails + +## macOS + +Téléchargez l'[installateur macOS](/#home-downloadhead) directement depuis le site web [nodejs.org](https://nodejs.org/). + +Si vous voulez télécharger le paquet avec 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 "/" +``` + +### Alternatives + +Utilisation de **[Homebrew](https://brew.sh/)** : + +```bash +brew install node +``` + +Utilisation de **[MacPorts](https://www.macports.org/)** : + +```bash +port install nodejs<major version> + +# Example +port install nodejs7 +``` + +Utilisation de **[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)** : + +Installer le paquet binaire : + +```bash +pkgin -y install nodejs +``` + +Ou compiler manuellement à partir de pkgsrc : + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## n + +`n` est un gestionnaire de version Node.js simple à utiliser pour Mac et Linux. Spécifiez la version cible à installer en utilisant une syntaxe riche, +ou choisissez parmi un menu de versions précédemment téléchargées. Les versions sont installées à l'échelle du système ou de l'utilisateur, et pour une utilisation plus ciblée, vous pouvez exécuter une version directement à partir de votre ordinateur. +Pour une utilisation plus ciblée, vous pouvez exécuter une version directement à partir des téléchargements mis en cache. + +Voir la [page d'accueil](https://github.com/tj/n) pour les méthodes d'installation (bootstrap, npm, Homebrew, tierce partie), et tous les détails d'utilisation. + +Si vous avez déjà `npm`, l'installation de `n` et de la dernière version LTS de `node` est aussi simple que cela : + +``` +npm install -g n +n lts +``` + +## NetBSD + +Node.js est disponible dans l'arborescence pkgsrc : + +```bash +cd /usr/pkgsrc/lang/nodejs && make install +``` + +Ou installez un paquetage binaire (si disponible pour votre plateforme) en utilisant pkgin : + +```bash +pkgin -y install nodejs +``` + +## Nodenv + +`nodenv` est un gestionnaire de version léger pour les nœuds, similaire à `nvm`. Il est simple et prévisible. Un riche écosystème de plugins vous permet de l'adapter à vos besoins. Utilisez `nodenv` pour choisir une version de Node pour votre application et garantissez que votre environnement de développement correspond à la production. + +Les instructions d'installation de Nodenv sont maintenues [sur sa page Github](https://github.com/nodenv/nodenv#installation). Veuillez consulter cette page pour vous assurer que vous suivez la dernière version des étapes d'installation. + +## nvm + +Node Version Manager est un script bash utilisé pour gérer plusieurs versions de Node.js. Il permet +d'effectuer des opérations telles que l'installation, la désinstallation, le changement de version, etc. +Pour installer nvm, utilisez ce [script d'installation](https://github.com/nvm-sh/nvm#install--update-script). + +Sur les systèmes Unix / OS X, Node.js construit à partir des sources peut être installé à l'aide de +[nvm](https://github.com/creationix/nvm) en l'installant à l'emplacement attendu par nvm : + +```bash +env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" +``` + +Après cela, vous pouvez utiliser `nvm` pour basculer entre les versions publiées et les versions +compilées à partir des sources. +Par exemple, si la version de Node.js est v8.0.0-pre : + +```bash +nvm use 8 +``` + +Une fois que la version officielle sera disponible, vous voudrez désinstaller la version construite +à partir des sources : + +```bash +nvm uninstall 8 +``` + +## nvs + +#### Windows + +Le gestionnaire de versions `nvs` est multiplateforme et peut être utilisé sur Windows, macOS et les systèmes de type Unix + +Pour installer `nvs` sur Windows, allez sur la [page de publication](https://github.com/jasongin/nvs/releases) ici et téléchargez le fichier d'installation MSI de la dernière version. + +Vous pouvez également utiliser `chocolatey` pour l'installer : + +```bash +choco install nvs +``` + +#### macOS et tous les systèmes de type Unix + +Vous pouvez trouver la documentation concernant les étapes d'installation de `nvs` dans les systèmes macOS/Unix-like [ici](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) + +#### Usage + +Après cela, vous pouvez utiliser `nvs` pour passer d'une version à l'autre de node. + +Pour ajouter la dernière version du node : + +```bash +nvs add latest +``` + +Ou d'ajouter la dernière version LTS de node : + +```bash +nvs add lts +``` + +Ensuite, lancez la commande `nvs use` pour ajouter une version de node à votre `PATH` pour l'interpréteur de commandes actuel : + +```bash +$ nvs use lts +PATH -= %LOCALAPPDATA%\nvs\default +PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 +``` + +Pour l'ajouter à `PATH` de façon permanente, utilisez `nvs link` : + +```bash +nvs link lts +``` + +## OpenBSD + +Node.js est disponible via le système des ports. + +```bash +/usr/ports/lang/node +``` + +Utilisation de [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) sur OpenBSD : + +```bash +pkg_add node +``` + +## openSUSE et SLE + +Node.js est disponible dans les dépôts principaux sous les paquets suivants : + +- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` +- **openSUSE Tumbleweed**: `nodejs20` +- **SUSE Linux Enterprise Server (SLES) 12** : `nodejs10`, `nodejs12`, et `nodejs14` + (Le "Web et Scripting Module" doit être [activé](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) +- **SUSE Linux Enterprise Server (SLES) 15 SP2** : `nodejs10`, `nodejs12`, et `nodejs14` + (Le "Web etScripting Module" doit être [activés](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) + +Par exemple, pour installer Node.js 14.x sur openSUSE Leap 15.2, exécutez ce qui suit en tant que root : + +```bash +zypper install nodejs14 +``` + +Différentes versions majeures de Node peuvent être installées et utilisées simultanément. + +## SmartOS et illumos + +Les images de SmartOS sont livrées avec pkgsrc pré-installé. Sur les autres distributions illumos, installez d'abord **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, puis vous pouvez installer le paquetage binaire normalement : + +```bash +pkgin -y install nodejs +``` + +Ou compiler manuellement à partir de pkgsrc : + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## Snap + +Les [snaps Node.js](https://github.com/nodejs/snap) sont disponibles en tant que [`node`](https://snapcraft.io/node) sur le magasin Snap. + +## Solus + +Solus fournit Node.js dans son dépôt principal. + +```bash +sudo eopkg install nodejs +``` + +## vfox + +Un gestionnaire de versions multiplateforme (Windows, macOS, Linux) et **extensible**. + +Il vous permet de **différentes versions pour différents projets**, **différentes versions pour différents shells**, et de changer de version de Node automatiquement en fonction du répertoire courant, etc. + +Il supporte tous les shells populaires (Bash, Zsh, Fish, PowerShell, Clink, Cmder). + +Voir le [Démarrage rapide](https://vfox.lhan.me/guides/quick-start.html) pour une utilisation rapide de vfox, et tous les détails d'utilisation. + +## Void Linux + +Void Linux fournit Node.js stable dans le dépôt principal. + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +Téléchargez l'[Installateur Windowsr](/#home-downloadhead) directement depuis le site web [nodejs.org](https://nodejs.org/). + +### Alternatives + +Utilisation **[Winget](https://aka.ms/winget-cli)**: + +```bash +winget install OpenJS.NodeJS +# or for LTS +winget install OpenJS.NodeJS.LTS +``` + +Après avoir exécuté l'une des deux commandes ci-dessus, il peut être nécessaire de redémarrer l'émulateur de terminal avant que la commande CLI `node` ne soit disponible. +l'émulateur de terminal avant que la commande CLI `node` ne soit disponible. + +Utilisation **[Chocolatey](https://chocolatey.org/)**: + +```bash +cinst nodejs +# or for full install with npm +cinst nodejs.install +``` + +Utilisation **[Scoop](https://scoop.sh/)**: + +```bash +scoop install nodejs +# or for LTS +scoop install nodejs-lts +``` + +## z/OS + +IBM® SDK pour Node.js - z/OS® est disponible en deux formats d'installation, +SMP/E et PAX. Sélectionnez le format d'installation qui vous convient : + +- [Installation et configuration de l'édition SMP/E de Node.js sur z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [Installation et configuration de l'édition PAX de Node.js sur z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/id/download/package-manager/all.md b/apps/site/pages/id/download/package-manager/all.md new file mode 100644 index 0000000000000..892c7d0f1e9c9 --- /dev/null +++ b/apps/site/pages/id/download/package-manager/all.md @@ -0,0 +1,395 @@ +--- +layout: article +title: Menginstal Node.js melalui manajer paket +--- + +# Menginstal Node.js melalui manajer paket + +> Paket-paket di halaman ini dijaga dan didukung oleh para pemberi paket mereka masing-masing, bukan tim inti Node.js. Harap laporkan setiap masalah yang Anda temui kepada pemelihara paket. Jika masalah Anda ternyata adalah bug dalam Node.js itu sendiri, pemelihara akan melaporkan masalah tersebut ke hulu. + +## Alpine Linux + +Paket Node.js LTS dan npm tersedia di Repository Utama. + +```bash +apk add nodejs npm +``` + +Node.js Current dapat diinstal dari Repository Komunitas. + +```bash +apk add nodejs-current +``` + +## Android + +Dukungan Android masih eksperimental di Node.js, jadi biner pra-kompilasi belum disediakan oleh pengembang Node.js. + +Namun, ada beberapa solusi pihak ketiga. Misalnya, komunitas [Termux](https://termux.com/) menyediakan emulator terminal dan lingkungan Linux untuk Android, serta pengelola paket sendiri dan [koleksi ekstensif](https://github.com/termux/termux-packages) dari banyak aplikasi pra-kompilasi. Perintah ini di aplikasi Termux akan menginstal versi Node.js terakhir yang tersedia: + +```bash +pkg install nodejs +``` + +Saat ini, biner Termux Node.js terhubung dengan `system-icu` (bergantung pada paket `libicu`). + +## Arch Linux + +Paket Node.js dan npm tersedia di Repository Komunitas. + +```bash +pacman -S nodejs npm +``` + +## CentOS, Fedora dan Red Hat Enterprise Linux + +Node.js tersedia sebagai modul yang disebut `nodejs` di CentOS/RHEL 8 dan Fedora. + +```bash +dnf module install nodejs:<stream> +``` + +di mana `<stream>` sesuai dengan versi utama dari Node.js. +Untuk melihat daftar stream yang tersedia: + +```bash +dnf module list nodejs +``` + +Misalnya, untuk menginstal Node.js 18: + +```bash +dnf module install nodejs:18/common +``` + +### Alternatif + +Sumber-sumber ini menyediakan paket yang kompatibel dengan CentOS, Fedora, dan RHEL. + +- [Node.js snaps](#snap) yang dikelola dan didukung di https://github.com/nodejs/snap +- [Distribusi biner Node.js](#distribusi-linux-berbasis-debian-dan-ubuntu) yang dikelola dan didukung oleh [NodeSource](https://github.com/nodesource/distributions) + +## Distribusi Linux berbasis Debian dan Ubuntu + +[Distribusi biner Node.js](https://github.com/nodesource/distributions) tersedia dari NodeSource. + +### Alternatif + +Paket yang kompatibel dengan distribusi Linux berbasis Debian dan Ubuntu tersedia melalui [Node.js snaps](#snap). + +## Exherbo Linux + +Paket Node.js dan npm tersedia di [arbor repository](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). + +```bash +cave resolve -x node +``` + +## fnm + +Manajer versi Node.js yang cepat dan sederhana yang dibangun di Rust digunakan untuk mengelola beberapa versi Node.js yang dirilis. Ini memungkinkan Anda untuk melakukan operasi seperti menginstal, mencopot, beralih versi Node secara otomatis berdasarkan direktori saat ini, dll. +Untuk menginstal fnm, gunakan [script instalasi](https://github.com/Schniz/fnm#using-a-script-macoslinux) ini. + +fnm mendukung lintas platform (macOS, Windows, Linux) & semua shell populer (Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt). +fnm dibangun dengan kecepatan dalam pikiran dan dukungan kompatibilitas untuk file `.node-version` dan `.nvmrc`. + +## FreeBSD + +Rilis terbaru Node.js tersedia melalui port [www/node](https://www.freshports.org/www/node). + +Instal paket biner melalui [pkg](https://www.freebsd.org/cgi/man.cgi?pkg): + +```bash +pkg install node +``` + +Atau kompilasi sendiri menggunakan [ports](https://www.freebsd.org/cgi/man.cgi?ports): + +```bash +cd /usr/ports/www/node && make install +``` + +## Gentoo + +Node.js tersedia di portage tree. + +```bash +emerge nodejs +``` + +## IBM i + +Versi LTS dari Node.js tersedia dari IBM, dan tersedia melalui [pengelola paket 'yum'](https://ibm.biz/ibmi-rpms). Nama paketnya adalah `nodejs` diikuti oleh nomor versi utama (misalnya, `nodejs18`, `nodejs20`, dll.) + +Untuk menginstal Node.js 20.x dari baris perintah, jalankan yang berikut ini sebagai pengguna dengan otoritas khusus \*ALLOBJ: + +```bash +yum install nodejs20 +``` + +Node.js juga dapat diinstal dengan produk IBM i Access Client Solutions. Lihat [dokumen dukungan ini](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) untuk detail lebih lanjut + +## macOS + +Unduh [Penginstal macOS](/#home-downloadhead) langsung dari situs web [nodejs.org](https://nodejs.org/). + +_Jika Anda ingin mengunduh paket dengan 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 "/" +``` + +### Alternatif + +Menggunakan **[Homebrew](https://brew.sh/)**: + +```bash +brew install node +``` + +Menggunakan **[MacPorts](https://www.macports.org/)**: + +```bash +port install nodejs<major version> + +# Example +port install nodejs7 +``` + +Menggunakan **[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)**: + +Instal paket biner: + +```bash +pkgin -y install nodejs +``` + +Atau buat secara manual dari pkgsrc: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## n + +`n` adalah manajer versi Node.js yang mudah digunakan untuk Mac dan Linux. Tentukan versi target untuk menginstal menggunakan sintaks yang kaya, atau pilih dari menu versi yang diunduh sebelumnya. Versi diinstal di seluruh sistem atau di seluruh pengguna, dan untuk lebih banyak lagi penggunaan yang ditargetkan, Anda dapat menjalankan versi langsung dari unduhan yang di-cache. + +Lihat [Beranda](https://github.com/tj/n) untuk metode cara penginstalan (boostrap, npm, Homebrew, pihak ketiga), dan semua detail penggunaan. + +Jika Anda sudah memiliki `npm` maka menginstal `n` dan kemudian versi LTS `node` terbaru sesederhana ini: + +``` +npm install -g n +n lts +``` + +## NetBSD + +Node.js tersedia di tree pkgsrc: + +```bash +cd /usr/pkgsrc/lang/nodejs && make install +``` + +Atau instal paket biner (jika tersedia untuk platform Anda) menggunakan pkgin: + +```bash +pkgin -y install nodejs +``` + +## Nodenv + +`nodenv` adalah manajer versi node yang ringan, mirip dengan `nvm`. Ini sederhana dan dapat diprediksi. Ekosistem plugin yang kaya memungkinkan Anda menyesuaikannya sesuai kebutuhan Anda. Gunakan `nodenv` untuk memilih versi Node untuk aplikasi Anda dan menjamin bahwa lingkungan pengembangan Anda cocok dengan produksi. + +Petunjuk instalasi Nodenv dikelola [di halaman Github-nya](https://github.com/nodenv/nodenv#installation). Silakan kunjungi halaman tersebut untuk memastikan Anda mengikuti versi terbaru dari langkah-langkah instalasi. + +## nvm + +Node Version Manager adalah skrip bash yang digunakan untuk mengelola beberapa versi Node.js yang dirilis. Ini memungkinkan +Anda untuk melakukan operasi seperti menginstal, mencopot, beralih versi, dll. +Untuk menginstal nvm, gunakan [skrip instalsi](https://github.com/nvm-sh/nvm#install--update-script). + +Di sistem Unix / OS X, Node.js yang dibangun dari sumber dapat diinstal menggunakan +[nvm](https://github.com/creationix/nvm) dengan menginstalasi ke lokasi yang diharapkan nvm: + +```bash +env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" +``` + +Setelah ini, Anda dapat menggunakan `nvm` untuk beralih antara versi yang dirilis dan versi +yang dibangun dari sumber. +Misalnya, jika versi Node.js adalah v8.0.0-pre: + +```bash +nvm use 8 +``` + +Setelah perilisan resmi keluar, Anda akan menghapus versi yang dibuat dari sumber: + +```bash +nvm uninstall 8 +``` + +## nvs + +#### Windows + +Manajer versi `nvs` bersifat lintas platform dan dapat digunakan pada sistem Windows, macOS, dan seperti Unix + +Untuk menginstal `nvs` di Windows, kunjungi halaman [release](https://github.com/jasongin/nvs/releases) ini dan unduh file instalator MSI dari rilis terbaru. + +Anda juga dapat menggunakan `chocolatey` untuk menginstalnya: + +```bash +choco install nvs +``` + +#### macOS,UnixLike + +Anda dapat menemukan dokumentasi mengenai langkah-langkah instalasi `nvs` di sistem macOS/Unix-like [di sini](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) + +#### Penggunaan + +Setelah ini, Anda dapat menggunakan `nvs` untuk beralih di antara versi node yang berbeda. + +Untuk menambahkan versi terbaru node: + +```bash +nvs add latest +``` + +Atau pun bash untuk menambahkan node versi LTS terbaru: + +```bash +nvs add lts +``` + +Kemudian jalankan perintah `nvs use` untuk menambahkan versi node ke `PATH` shell saat ini: + +```bash +$ nvs use lts +PATH -= %LOCALAPPDATA%\nvs\default +PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 +``` + +Kemudian jalankan perintah `nvs use` untuk menambahkan versi node ke `PATH` shell saat ini: + +```bash +nvs link lts +``` + +## OpenBSD + +Node.js tersedia melalui sistem ports. + +```bash +/usr/ports/lang/node +``` + +Menggunakan [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) di OpenBSD: + +```bash +pkg_add node +``` + +## openSUSE and SLE + +Node.js is available in the main repositories under the following packages: + +- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` +- **openSUSE Tumbleweed**: `nodejs20` +- - **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, dan `nodejs14` + (Modul "Web and Scripting Module" harus [diaktifkan](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, dan `nodejs14` + (Modul "Web and Scripting Module" harus [diaktifkan](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) + +Sebagai contoh, untuk menginstal Node.js 14.x pada openSUSE Leap 15.2, jalankan perintah berikut sebagai root: + +```bash +zypper install nodejs14 +``` + +Versi utama Node yang berbeda dapat diinstal dan digunakan secara bersamaan. + +## SmartOS dan illumos + +Gambar SmartOS dilengkapi dengan pkgsrc yang telah diinstal. Pada distribusi illumos lainnya, pertama-tama instal **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, kemudian Anda dapat menginstal paket biner seperti biasa: + +```bash +pkgin -y install nodejs +``` + +Atau bangun secara manual dari pkgsrc: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## Snap + +[Node.js snaps](https://github.com/nodejs/snap) tersedia sebagai [`node`](https://snapcraft.io/node) di Snap store. + +## Solus + +Solus menyediakan Node.js di repositori utamanya. + +```bash +sudo eopkg install nodejs +``` + +## vfox + +Manajer versi yang lintas-platform (Windows, macOS, Linux) dan **dapat diperluas**. + +Ini memungkinkan Anda untuk **versi yang berbeda untuk proyek yang berbeda**, **versi yang berbeda untuk shell yang berbeda**, dan beralih otomatis antar versi Node berdasarkan direktori saat ini, dll. + +Dukung semua shell populer (Bash, Zsh, Fish, PowerShell, Clink, Cmder). + +Lihat [Panduan Memulai Cepat](https://vfox.lhan.me/guides/quick-start.html) untuk menggunakan vfox dengan cepat, dan semua detail penggunaannya. + +## Void Linux + +Void Linux mengirimkan Node.js stabil di repositori utama. + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +Unduh [Pemasang Windows](/#home-downloadhead) langsung dari situs web [nodejs.org](https://nodejs.org/). + +### Windows + +Unduh [Pemasang Windows](/#home-downloadhead) langsung dari situs web [nodejs.org](https://nodejs.org/). + +```bash +winget install OpenJS.NodeJS +# or for LTS +winget install OpenJS.NodeJS.LTS +``` + +Menggunakan **[Winget](https://aka.ms/winget-cli)**: + +Menggunakan **[Chocolatey](https://chocolatey.org/)**: + +```bash +cinst nodejs +# or for full install with npm +cinst nodejs.install +``` + +Menggunakan **[Scoop](https://scoop.sh/)**: + +```bash +scoop install nodejs +# or for LTS +scoop install nodejs-lts +``` + +## z/OS + +IBM® SDK untuk Node.js - z/OS® tersedia dalam dua format instalasi, SMP/E dan PAX. Pilih format instalasi yang sesuai untuk Anda: + +- [Menginstal dan mengkonfigurasi edisi SMP/E Node.js di z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [Menginstal dan mengkonfigurasi edisi PAX Node.js di z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/ja/about/branding.mdx b/apps/site/pages/ja/about/branding.mdx index 70bfbb817e3a0..2e2e19b65d342 100644 --- a/apps/site/pages/ja/about/branding.mdx +++ b/apps/site/pages/ja/about/branding.mdx @@ -1,14 +1,16 @@ --- -title: Node.jsのブランド +title: Node.jsのブランドについて layout: about --- -Node.jsのブランド +Node.jsのブランドについて -Node.jsのロゴやシンボルマークの許可されている利用方法については[トレードマークポリシー](https://trademark-policy.openjsf.org/)を確認してください。 +Node.jsのロゴやシンボルマークの許可されている利用方法については[商標ポリシー](https://trademark-policy.openjsf.org/)を確認してください。 ## Node.js®マスコット +ロケットタートルは作者である[Angela Angelini](https://www.linkedin.com/in/angeliningl/)から提供されたものです。 + <img alt="Node.jsマスコット" src="/static/images/node-mascot.svg" @@ -22,51 +24,61 @@ Node.jsのロゴやシンボルマークの許可されている利用方法に ### Node.js®横型ロゴ <table> -<tr> - <td> - <img alt="Node.jsダーク横型ロゴ" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Node.jsライト横型ロゴ" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="Node.jsダーク横型ロゴ" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Node.jsライト横型ロゴ" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + + </tr> +</tbody> </table> ### Node.js®スタック型ロゴ <table> -<tr> - <td> - <img alt="Node.jsダークスタック型ロゴ" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Node.jsライトスタック型ロゴ" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> -</tr> - -<tr> - <td> - <img alt="Node.jsブラックスタック型ロゴ" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Node.jsホワイトスタック型ロゴ" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="Node.jsダークスタック型ロゴ" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Node.jsライトスタック型ロゴ" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + + </tr> + + <tr> + <td> + <img alt="Node.jsブラックスタック型ロゴ" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Node.jsホワイトスタック型ロゴ" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + + </tr> +</tbody> </table> ### JSアイコン <table> -<tr> - <td> - <img alt="JSアイコングリーン" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="JSアイコンホワイト" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> -</tr> +<tbody> + <tr> + <td> + <img alt="JSアイコングリーン" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="JSアイコンホワイト" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + + </tr> +</tbody> </table> diff --git a/apps/site/pages/ja/about/get-involved/collab-summit.md b/apps/site/pages/ja/about/get-involved/collab-summit.md new file mode 100644 index 0000000000000..b9fde1d0cfe56 --- /dev/null +++ b/apps/site/pages/ja/about/get-involved/collab-summit.md @@ -0,0 +1,16 @@ +--- +title: コラボレーションサミット +layout: about +--- + +# コラボレーションサミット + +Node.jsの協力者会議は、現在Node.jsに貢献している人たちや将来貢献する可能性のある人たちが一堂に集まり、活発なコラボレーション・教育・知識を共有し、Node.jsについて議論するためのアンカンファレンスです。チーム、ワーキンググループ、そしてコミュニティの貢献者が年に2回集まり、意思決定を助けるための議論を行い、直接推進したい課題に取り組むことができます。 + +## 誰が参加しますか? + +協力者会議は、主に既存の貢献者とコミュニティーのメンバーが参加しますが、まだ貢献者ではない方々も歓迎されます。もしNode.jsへの貢献に新しい場合、協力者会議はコミュニティ内で何が起こっているかを学び、自分が持っているスキルを活かして貢献するのに良い機会になるでしょう。 + +サミットの前に、貢献者とコミュニティのメンバーがセッション提案を送信してスケジュールを作成します。参加者は現地に到着する前にセッションに慣れ親しみ、一般的な協力者の議論を行い、その後セッションに参加します。廊下トラックやブレインストーミングの機会もたくさんあります。 + +今後の予定や過去の協力者会議に関する情報は、[会議のリポジトリー](https://github.com/openjs-foundation/summit)をご覧ください。貢献者やコミュニティのメンバーが直接議論したいことを提案している[issues](https://github.com/nodejs/summit/issues)もチェックしてください。 diff --git a/apps/site/pages/ja/about/get-involved/index.md b/apps/site/pages/ja/about/get-involved/index.md index bdb21e9846047..afc7935d98e4b 100644 --- a/apps/site/pages/ja/about/get-involved/index.md +++ b/apps/site/pages/ja/about/get-involved/index.md @@ -1,26 +1,36 @@ --- -title: 参加しよう +title: 活動への参加 layout: about --- -# 参加しよう +# 活動への参加 + +Node.jsのコミュニティーへの参加の仕方にはさまざまな方法があります。Node.jsプロジェクトは大規模で多様なコミュニティーとなっているため、コードを書くこと以外にも貢献する方法はたくさんあります。 ## コミュニティーでの議論 -- [GitHub issues](https://github.com/nodejs/node/issues)がNode.jsのコア機能に関する議論の場となっています。 -- Node.jsの開発に関するリアルタイムのチャットには次のプラットフォームを利用してください。 - - IRCの場合は[IRCクライアント](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients)または[ウェブクライアント](https://kiwiirc.com/nextclient/)を利用して`irc.libera.chat`の`#node.js`チャンネルに参加してください。 - - Slackの場合は2つの選択肢があります: - - [OpenJSFのSlack](https://slack-invite.openjsf.org/)にはいくつかのNode.jsに関するチャンネルがあります(接頭辞として`#nodejs-`がつくチャンネル)。 - - [Node Slackers](https://www.nodeslackers.com/)はNode.jsに特化したSlackコミュニティーです。 +- [GitHub issues](https://github.com/nodejs/node/issues)はNode.jsの主機能について議論する場となっています。Node.jsについて疑問がある場合は[github discussions](https://github.com/orgs/nodejs/discussions)も利用できます。 +- [`nodejs/help`](https://github.com/nodejs/help/issues)リポジトリーでもNode.jsに関する質問を受け付けています。 - Node.jsの公式Twitterアカウントは[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/ja/about/governance.md b/apps/site/pages/ja/about/governance.md new file mode 100644 index 0000000000000..b52e03304333e --- /dev/null +++ b/apps/site/pages/ja/about/governance.md @@ -0,0 +1,32 @@ +--- +title: プロジェクトの管理体制 +layout: about +--- + +# プロジェクトの管理体制 + +## 合意を求めるプロセス + +Node.jsプロジェクトは、[合意を求める][Consensus Seeking]意思決定モデルに従います。 + +## コラボレーター + +[nodejs/node][]のGitHubリポジトリーは推薦されたコラボレーター同士によって継続的に維持管理されています。 + +重要かつ貴重な貢献を行った方はコラボレーターに任命され、プロジェクトへのコミット権限が与えられます。これらの個人は他のコラボレーターによって指名され、その指名については既存のコラボレーター間で議論されます。 + +現在のコラボレーターの一覧はプロジェクトの[README.md][]を確認してください。 + +コラボレーターに関する詳細は[collaborator-guide.md][]に記載されています。 + +## 技術運営委員会 + +プロジェクトは[技術運営委員会(TSC)][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/ja/about/previous-releases.mdx b/apps/site/pages/ja/about/previous-releases.mdx index 251c19f344f41..b7ab7d96b6a86 100644 --- a/apps/site/pages/ja/about/previous-releases.mdx +++ b/apps/site/pages/ja/about/previous-releases.mdx @@ -13,6 +13,10 @@ Node.jsのメジャーバージョンは6か月間\_Current\_ステータスと Node.jsのリリーススケジュールに関する詳しい情報は[GitHub](https://github.com/nodejs/release#release-schedule)で確認できます。 +### 商用サポート + +メンテナンス期間を終了したバージョンの商用サポートは私たちのOpenJSエコシステム持続可能性プログラムのパートナーである[HeroDevs](https://herodevs.com/)を通して利用可能です。 + ## 各バージョンの最新のリリース <DownloadReleasesTable /> diff --git a/apps/site/pages/ja/download/package-manager/all.md b/apps/site/pages/ja/download/package-manager/all.md new file mode 100644 index 0000000000000..168ae91fd4f2e --- /dev/null +++ b/apps/site/pages/ja/download/package-manager/all.md @@ -0,0 +1,387 @@ +--- +layout: article +title: パッケージマネージャーを利用したNode.jsのインストール +--- + +# パッケージマネージャーを利用したNode.jsのインストール + +> このページにあるパッケージはNode.jsコアチームではなく、それぞれのパッケージの管理者によって管理・サポートされています。問題が発生した場合は、パッケージの管理者に報告してください。問題がNode.js自体の問題であることが判明した場合、パッケージの管理者がその問題をNode.jsに報告します。 + +## Alpine Linux + +Node.jsのLTSとnpmがメインリポジトリーから利用できます。 + +```bash +apk add nodejs npm +``` + +Node.jsのCurrentはコミュニティーリポジトリーからインストールできます。 + +```bash +apk add nodejs-current +``` + +## Android + +AndroidのサポートはNode.jsではまだ実験的なものです。Node.js開発者によるコンパイル済みバイナリーはまだ提供されていません。 + +しかしながらサードパーティーによるソリューションはあります。例えば、[Termux](https://termux.com/)コミュニティーはAndroid用にターミナルエミュレーターとLinux環境を提供しています。独自にパッケージマネージャーと多くのコンパイル済みアプリケーションの[さまざまなコレクション](https://github.com/termux/termux-packages)を用意しています。 + +```bash +pkg install nodejs +``` + +現在、TermuxのNode.jsバイナリーは`system-icu`にリンクされています(`libicu`パッケージに依存)。 + +## Arch Linux + +Node.jsとnpmがコミュニティーリポジトリーから利用できます。 + +```bash +pacman -S nodejs npm +``` + +## CentOS, Fedora and Red Hat Enterprise Linux + +CentOS/RHEL 8とFedoraでは`nodejs`というモジュールとしてNode.jsが利用できます。 + +```bash +dnf module install nodejs:<stream> +``` + +`<stream>`にはNode.jsのメジャーバージョンが当てはまります。利用できるstreamは次のコマンドで確認できます。 + +```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 and Ubuntu based Linux distributions + +NodeSourceが提供している[Node.jsバイナリー](https://github.com/nodesource/distributions)を利用できます。 + +### その他のインストール方法 + +DebianやUbuntuベースのLinuxディストリビューションと互換性のあるパッケージは[Node.js snaps](#snap)を通して利用できます。 + +## Exherbo Linux + +Node.jsとnpmパッケージは[arborリポジトリー](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node)から利用できます。 + +```bash +cave resolve -x node +``` + +## fnm + +複数のNode.jsのバージョンを管理できるRustで開発された高速でシンプルなNode.jsのバージョンマネージャーです。ディレクトリー上でNode.jsのインストールやアンインストール、Node.jsのバージョンの自動切り替えといったことができます。fnmをインストールする場合は[インストールスクリプト](https://github.com/Schniz/fnm#using-a-script-macoslinux)を利用してください。 + +fnmはクロスプラットフォーム(macOS、Windows、Linux)で動作し、主要なシェル(Bash、Zsh、Fish、PowerShell、Windows Command Line Prompt)もサポートしています。fnmはスピードを念頭に作られており、`.node-version`ファイルや`.nvmrc`ファイルとの互換サポートもあります。 + +## FreeBSD + +[www/node](https://www.freshports.org/www/node) portから最新のリリースをインストールできます。 + +[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はportageツリーからインストールできます。 + +```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 + +[nodejs.org](https://nodejs.org/)から直接[macOS用のインストーラー](/#home-downloadhead)をダウンロードできます。 + +_もし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<major version> + +# 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のバージョンマネージャーです。さまざまな構文でインストールするNode.jsのバージョンを指定したり、過去にダウンロードしたバージョンから選択してNode.jsをインストールできます。これらのバージョンはシステム単位やユーザー単位でインストールできます。キャッシュされたダウンロードデータからも直接Node.jsを実行することができます。 + +詳しいインストール方法や利用方法は`n`の[ホームページ](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.jsのバージョンマネージャーです。シンプルで直感的に利用できます。機能が豊富なプラグインエコシステムによって、さまざまなカスタマイズができます。開発環境や本番環境のNode.jsのバージョンを一致させるために`nodenv`を利用できます。 + +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](https://github.com/creationix/nvm)を使用してnvmが期待する場所にインストールできます: + +```bash +env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" +``` + +このあとはリリースされたバージョンやソースからビルドされたバージョンの間で`nvm`を使用してNode.jsを切り替えることができます。例えば、Node.jsのバージョンがv8.0.0-preである場合はこのようにできます: + +```bash +nvm use 8 +``` + +公式リリースが出た際にソースからビルドしたNode.jsをアンインストールしたい場合はこうのようにできます: + +```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,UnixLike + +macOS / Unix系システムの`nvs`のインストール手順に関するドキュメントは[こちら](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux)を参照してください。 + +#### 使用方法 + +これ以降、`nvs`を使用して異なるバージョンのNode.jsを切り替えることができます。 + +最新のNode.jsを追加する場合: + +```bash +nvs add latest +``` + +最新のLTSバージョンのNode.jsを追加する場合: + +```bash +nvs add lts +``` + +`nvs use`コマンドを実行してシェルの`PATH`にNode.jsを追加できます: + +```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はポートシステムを通じて利用できます。 + +```bash +/usr/ports/lang/node +``` + +OpenBSDで[pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1)を使用する: + +```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` + (「Webおよびスクリプティングモジュール」を[有効にする](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated)必要があります。) +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`、`nodejs12`、`nodejs14` + (「Webおよびスクリプティングモジュール」を[有効にする](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インストーラー](/#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®は、2つのインストール形式(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/ja/index.mdx b/apps/site/pages/ja/index.mdx index c886eb3ebd072..935fef71d8b3d 100644 --- a/apps/site/pages/ja/index.mdx +++ b/apps/site/pages/ja/index.mdx @@ -1,133 +1,137 @@ --- -title: Run JavaScript Everywhere +title: どこでもJavaScriptを使おう layout: home --- <section> - <WithBadge section="index" /> - - <div> - <h1 className="special">Run JavaScript Everywhere</h1> - - Node.js®は自由かつオープンソースでクロスプラットフォームに対応したJavaScript実行環境です。 - 開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトの開発環境を提供します。 - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js (LTS)をダウンロードする</DownloadButton> - <small> - 長期サポート版Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>をダウンロードする。 - <Link href="/download/package-manager">パッケージマネージャー</Link>を利用したインストール方法もあります。 - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( +<WithBadge section="index" /> + +<div> + <h1 className="special">どこでもJavaScriptを使おう</h1> + +Node.js®はクロスプラットフォームに対応したフリーでオープンソースのJavaScript実行環境です。開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトなどを開発する環境を提供します。 + +</div> + +<div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Node.js (LTS)をダウンロードする</DownloadButton> <small> - 最新の機能をすぐに試したい場合は - <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>をインストールできます。 + 長期サポート版Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>をダウンロードする。 + <Link href="/download/package-manager">パッケージマネージャー</Link>を利用したインストール方法もあります。 </small> - )} - </WithNodeRelease> - - </div> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( + <small> + 最新の機能をすぐに試したい場合は + <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>をインストールできます。 + </small> + )} + </WithNodeRelease> +</div> </section> <section> - <div> - ```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` - ``` - - </div> - 私たちの[学習教材](/learn)でNode.jsでできることをさらに学んでみましょう。 +<div> + ```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` +``` + +</div> + +私たちの[学習教材](/learn)でNode.jsでできることをさらに学んでみましょう。 + </section> diff --git a/apps/site/pages/ko/download/current.mdx b/apps/site/pages/ko/download/current.mdx new file mode 100644 index 0000000000000..546eb0aaa58e5 --- /dev/null +++ b/apps/site/pages/ko/download/current.mdx @@ -0,0 +1,28 @@ +--- +layout: download +title: Node.js® 다운로드 +--- + +<section> +Node.js®를 다운로드하세요. <Release.VersionDropdown /> 버전을 <Release.OperatingSystemDropdown /> 운영체제에서 <Release.InstallationMethodDropdown /> 방법으로 <Release.PackageManagerDropdown /> 패키지 관리자를 사용하여 설치할 수 있습니다. + +<Release.ReleaseCodeBox /> + +<Release.Provider> + 또는 <Release.PlatformDropdown /> 아키텍처가 실행 중인 <Release.OperatingSystemDropdown /> 운영체제용으로 미리 빌드된 Node.js®를 다운로드할 수 있습니다. + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 읽어보세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +서명된 SHASUMS를 <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">검증</LinkWithArrow>하는 방법을 배워보세요. + +소스에서 <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.js를 빌드</LinkWithArrow>하는 방법을 확인하세요. + +<LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> 바이너리나 모든 <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">이전 릴리스</Link> 또는 다른 플랫폼용 <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">비공식</LinkWithArrow> 바이너리를 확인해보세요. +</section> diff --git a/apps/site/pages/ko/download/index.mdx b/apps/site/pages/ko/download/index.mdx new file mode 100644 index 0000000000000..42ae6e26f04ad --- /dev/null +++ b/apps/site/pages/ko/download/index.mdx @@ -0,0 +1,28 @@ +--- +layout: download +title: Node.js® 다운로드 +--- + +<section> +Node.js® <Release.VersionDropdown />를 <Release.OperatingSystemDropdown /> 환경에서 <Release.InstallationMethodDropdown /> 방식으로 <Release.PackageManagerDropdown />를(을) 사용해 설치하세요. + +<Release.ReleaseCodeBox /> + +<Release.Provider> + 또는 <Release.PlatformDropdown /> 아키텍처가 실행 중인 <Release.OperatingSystemDropdown /> 환경에서 미리 빌드된 Node.js®를 다운로드하세요. + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 읽어보세요. + +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. + +서명된 SHASUMS를 <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">검증</LinkWithArrow>하는 방법을 배워보세요. + +소스에서 <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.js를 빌드</LinkWithArrow>하는 방법을 확인하세요. + +<LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> 바이너리나 모든 <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">이전 릴리스</Link> 또는 다른 플랫폼용 <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">비공식</LinkWithArrow> 바이너리를 확인해보세요. +</section> 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:<stream> +``` + +여기서 `<stream>`은 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<major version> + +# 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/pt/download/package-manager/all.md b/apps/site/pages/pt/download/package-manager/all.md new file mode 100644 index 0000000000000..2df1370f6a692 --- /dev/null +++ b/apps/site/pages/pt/download/package-manager/all.md @@ -0,0 +1,387 @@ +--- +layout: article +title: Instalação da Node.js através do Gestor de Pacote +--- + +# Instalação da Node.js através dos Gestores de Pacote + +> Os pacotes nesta página são mantidos e suportados por seus respetivos empacotadores, **não** pela equipa principal da Node.js. Precisamos reportar quaisquer problemas que encontrarmos ao responsável do pacote. Se o nosso problema for um erro de programação na própria Node.js, o responsável reportará o problema. + +## Linux Alpino + +Os pacotes da Node.js com suporte de longo prazo e npm estão disponíveis no repositório principal. + +```bash +apk add nodejs npm +``` + +A versão atual da Node.js pode ser instalada a partir do repositório da comunidade. + +```bash +apk add nodejs-current +``` + +## Android + +O suporte de Android ainda é experimental na Node.js, pelo que os binários pré-compilados ainda não são fornecidos pelos programadores da Node.js. + +No entanto, existem algumas soluções de terceiros. Por exemplo, a comunidade da [Termux](https://termux.com/) fornece um emulador de terminal e um ambiente de Linux para Android, bem como um gestor de pacote e uma [vasta coleção](https://github.com/termux/termux-packages) de muitas aplicações pré-compiladas. Este comando na aplicação Termux instalará a última versão disponível da Node.js: + +```bash +pkg install nodejs +``` + +Atualmente, os binários da Node.js da Termux estão ligados ao `system-icu` (dependendo do pacote `libicu`). + +## Linux Arch + +Os pacotes da Node.js e npm estão disponíveis no repositório da comunidade. + +```bash +pacman -S nodejs npm +``` + +## CentOS, Fedora e Red Hat Enterprise Linux + +A Node.js está disponível como um módulo chamado `nodejs` no CentOS/RHEL 8 e Fedora. + +```bash +dnf module install nodejs:<stream> +``` + +onde `<stream>` corresponde à versão principal da Node.js. Para ver uma lista de fluxos disponíveis: + +```bash +dnf module list nodejs +``` + +Por exemplo, para instalar a Node.js 18: + +```bash +dnf module install nodejs:18/common +``` + +### Alternativas + +Estes recursos fornecem pacotes compatíveis com CentOS, Fedora, e RHEL. + +- [Os snaps da Node.js](#snap) mantidos e suportados na https://github.com/nodejs/snap +- [Distribuições binárias da Node.js](#distribuicoes-de-linux-baseadas-em-debian-e-ubuntu) mantidas e suportadas pela [NodeSource](https://github.com/nodesource/distributions) + +## Distribuições de Linux baseadas em Debian e Ubuntu + +As [distribuições binárias da Node.js](https://github.com/nodesource/distributions) estão disponíveis a partir da NodeSource. + +### Alternativas + +Os pacotes compatíveis com as distribuições de Linux baseadas em Debian e Ubuntu estão disponíveis através dos [snaps da Node.js](#snap). + +## Exherbo Linux + +Os pacotes da Node.js e npm estão disponíveis no [repositório da arbor](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). + +```bash +cave resolve -x node +``` + +## fnm + +Rápido e simples gestor de versão da Node.js, construído em Rust, usado para gerir várias versões lançadas da Node.js. Permite-nos realizar operações como instalar, desinstalar, mudar automaticamente as versões da Node com base no diretório atual, etc. +Para instalar o `fnm`, usamos este [programa de instalação](https://github.com/Schniz/fnm#using-a-script-macoslinux). + +O `fnm` suporta várias plataformas (macOS, Windows, Linux) & todas as conchas populares (Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt). +O `fnm` foi construído com a velocidade em mente e suporte de compatibilidade para ficheiros `.node-version` e `.nvmrc`. + +## FreeBSD + +O lançamento mais recente da Node.js está disponível através da porta [www/node](https://www.freshports.org/www/node). + +Instalamos um pacote binário através do [pkg](https://www.freebsd.org/cgi/man.cgi?pkg): + +```bash +pkg install node +``` + +Ou o compilamos nós mesmos usando as [portas](https://www.freebsd.org/cgi/man.cgi?ports): + +```bash +cd /usr/ports/www/node && make install +``` + +## Gentoo + +A Node.js está disponível na árvore de transporte. + +```bash +emerge nodejs +``` + +## IBM i + +As versões de suporte de longo prazo da Node.js estão disponíveis a partir da IBM, e estão disponíveis através do [gestor de pacote `yum`](https://ibm.biz/ibmi-rpms). O nome do pacote é `nodejs` seguido pelo número da versão principal (por exemplo, `nodejs18`, `nodejs20`, etc). + +Para instalar a Node.js 20.x a partir da linha de comando, executamos o seguinte como um utilizador com autorização especial \*ALLOBJ: + +```bash +yum install nodejs20 +``` + +A Node.js também pode ser instalada com o produto de soluções de cliente de acesso IBM i. Consultar [este documento de suporte](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) por mais detalhes. + +## macOS + +Descarregamos o [instalador do macOS](/#home-downloadhead) diretamente a partir do sítio da Web [nodejs.org](https://nodejs.org/). + +_Se quisermos descarregar o pacote com o 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 + +Com o uso do **[Homebrew](https://brew.sh/)**: + +```bash +brew install node +``` + +Com o uso do **[MacPorts](https://www.macports.org/)**: + +```bash +port install nodejs<major version> + +# Example +port install nodejs7 +``` + +Com o uso do **[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)**: + +Instalar o pacote binário: + +```bash +pkgin -y install nodejs +``` + +Ou construir manualmente a partir do `pkgsrc`: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## n + +`n` é um gestor de versão da Node.js simples de usar para Mac e Linux. Especificamos a versão de destino a instalar usando uma sintaxe rica, ou selecionamos a partir de um menu de versões previamente descarregadas. As versões são instaladas em todo o sistema ou em todo o utilizador, e para um uso mais específico, podemos executar uma versão diretamente a partir das transferências provisionadas. + +Consultar a [página principal](https://github.com/tj/n) por métodos de instalação (inicialização, npm, Homebrew, terceiros) e todos os detalhes de uso. + +Se já tivermos o `npm`, então instalar o `n` e depois a versão mais recente da `node` com suporte de longo prazo é tão simples quanto: + +``` +npm install -g n +n lts +``` + +## NetBSD + +A Node.js está disponível na árvore do `pkgsrc`: + +```bash +cd /usr/pkgsrc/lang/nodejs && make install +``` + +Ou instalamos um pacote binário (se estiver disponível para nossa plataforma) usando `pkgin`: + +```bash +pkgin -y install nodejs +``` + +## Nodenv + +`nodeenv` é um gestor de versão de Node leve, semelhante ao `nvm`. É simples e previsível. Um rico ecossistema de extensão permite-nos adaptá-lo às nossas necessidades. Usamos `nodenv` para escolher uma versão de Node para a nossa aplicação e garantir que o nosso ambiente de desenvolvimento seja igual ao de produção. + +As instruções de instalação da Nodeenv são mantidos [na sua página da GitHub](https://github.com/nodenv/nodenv#installation). Precisamos visitar esta página para assegurar que seguimos versão mais recente dos passos de instalação. + +## nvm + +O gestor de versão da Node é um programa de bash usado para gerir várias versões lançadas da Node.js. Permite-nos realizar operações como instalar, desinstalar, alternar versão, etc. Para instalar a `nvm`, usamos este [programa de instalação](https://github.com/nvm-sh/nvm#install--update-script). + +Nos sistemas Unix ou OS X, a Node.js construída a partir do código-fonte pode ser instalada usando [nvm](https://github.com/creationix/nvm) ao instalar numa localização esperada pelo `nvm`: + +```bash +env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" +``` + +Depois disto, podemos usar o `nvm` para alternar entre versões lançadas e versões construídas a partir do código-fonte. Por exemplo, se a versão da Node.js for v8.0.0-pre: + +```bash +nvm use 8 +``` + +Quando a versão oficial for lançada, desejaremos desinstalar a versão construída a partir do código-fonte: + +```bash +nvm uninstall 8 +``` + +## nvs + +#### Windows + +O gestor de versão `nvs` suporta várias plataformas e pode ser usado no Windows, macOS, e sistemas parecidos com Unix. + +Para instalar `nvs` no Windows seguimos para [página de lançamento](https://github.com/jasongin/nvs/releases) e descarregamos o ficheiro instalador MSI do lançamento mais recente. + +Nós também podemos usar `chocolatey` para instalá-lo: + +```bash +choco install nvs +``` + +#### macOS,UnixLike + +Podemos encontrar documentação sobre os passos de instalação do `nvs` nos sistemas macOS ou parecidos com Unix [nesta hiperligação](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux). + +#### Uso + +Depois disto podemos usar `nvs` para alternar entre diferentes versões da Node. + +Para adicionar a versão mais recente da Node: + +```bash +nvs add latest +``` + +Ou adicionar a versão mais recente com suporte de longo prazo da Node: + +```bash +nvs add lts +``` + +Depois executamos o comando `nvs use` para adicionar uma versão de Node ao `PATH` para concha atual: + +```bash +$ nvs use lts +PATH -= %LOCALAPPDATA%\nvs\default +PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 +``` + +Para adicioná-lo ao `PATH` permanentemente, usamos `nvs link`: + +```bash +nvs link lts +``` + +## OpenBSD + +A Node.js está disponível através do sistema de portas. + +```bash +/usr/ports/lang/node +``` + +Com o uso do [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) no OpenBSD: + +```bash +pkg_add node +``` + +## openSUSE e SLE + +A Node.js está disponível nos repositórios principais sob os seguintes pacotes: + +- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` +- **openSUSE Tumbleweed**: `nodejs20` +- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, e `nodejs14` (O "Web and Scripting Module" deve estar [ativado](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, e `nodejs14` (O "Web and Scripting Module" deve estar [ativado](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) + +Por exemplo, para instalar a Node.js 14.x no openSUSE Leap 15.2, executamos o seguinte como administrador (root ou raiz): + +```bash +zypper install nodejs14 +``` + +Diferentes versões principais da Node podem ser instaladas e usadas simultaneamente. + +## SmartOS e illumos + +As imagens do SmartOS vêm com `pkgsrc` pré-instalado. Em outras distribuições de illumos, primeiro instalamos **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, depois podemos instalar o pacote binário conforme o habitual: + +```bash +pkgin -y install nodejs +``` + +Ou compilar manualmente a partir do `pkgsrc`: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## Snap + +Os [snaps da Node.js](https://github.com/nodejs/snap) estão disponíveis como [`node`](https://snapcraft.io/node) na loja da Snap. + +## Solus + +O Solus fornece a Node.js no seu repositório principal. + +```bash +sudo eopkg install nodejs +``` + +## vfox + +Um gestor de versão que suporta várias plataformas (Windows, macOS, Linux) e **extensível**. + +Permite-nos **diferenciar versões para diferentes projetos**, **diferenciar versões para diferentes conchas**, e alternar versões da Node automaticamente com base no diretório atual, etc. + +Suporta todas as conchas populares (Bash, Zsh, Fish, PowerShell, Clink, Cmder). + +Consultar a [Introdução Rápida](https://vfox.lhan.me/guides/quick-start.html) para rapidamente usar o `vfox`, e todos os detalhes de uso. + +## Void Linux + +O Void Linux entrega a Node.js estável no repositório principal. + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +Descarregamos o [instalador da Node.js](/#home-downloadhead) diretamente a partir do sítio da Web [nodejs.org](https://nodejs.org/). + +### Alternativas + +Com o uso do **[Winget](https://aka.ms/winget-cli)**: + +```bash +winget install OpenJS.NodeJS +# or for LTS +winget install OpenJS.NodeJS.LTS +``` + +Após executarmos um dos dois comandos acima, pode ser necessário reiniciar o emulador de terminal antes do comando `node` da interface da linha de comando torne-se disponível. + +Com o uso do **[Chocolatey](https://chocolatey.org/)**: + +```bash +cinst nodejs +# or for full install with npm +cinst nodejs.install +``` + +Com o uso do **[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á disponível em dois formatos de instalação, SMP/E e PAX. Selecionamos o formato de instalação que se aplica a nós: + +- [Instalar e configurar a edição SMP/E da Node.js no z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [Instalar e configurar a edição PAX da Node.js no z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/tr/download/package-manager/all.md b/apps/site/pages/tr/download/package-manager/all.md new file mode 100644 index 0000000000000..fd38a3884c4a2 --- /dev/null +++ b/apps/site/pages/tr/download/package-manager/all.md @@ -0,0 +1,398 @@ +--- +layout: article +title: Node.js'i paket yöneticisi aracılığıyla yüklemek +--- + +# Paket Yöneticileri Aracılığıyla Node.js Kurulumu + +> Bu sayfadaki paketler, ilgili paketleyiciler tarafından sürdürülür ve desteklenir, Node.js çekirdek ekibi tarafından **değil**. Karşılaştığınız herhangi bir sorunu paketin bakımını üstlenen kişiye bildirin. Sorununuzun Node.js'in kendisinde bir hata olduğu ortaya çıkarsa, bakımı üstlenen kişi bu sorunu yukarıya raporlayacaktır. + +## Alpine Linux + +Node.js LTS ve npm paketleri Ana Depo'da bulunmaktadır. + +```bash +apk add nodejs npm +``` + +Node.js Current, Topluluk Deposu'ndan kurulabilir. + +```bash +apk add nodejs-current +``` + +## Android + +Android desteği Node.js'de hala deneyseldir, bu nedenle önceden derlenmiş ikili (binary) dosyalar henüz Node.js geliştiricileri tarafından sağlanmamaktadır. + +Ancak, bazı üçüncü parti çözümler de mevcuttur. Örneğin, [Termux](https://termux.com/) topluluğu, Android için terminal emülatörü ve Linux ortamının yanı sıra kendi paket yöneticisini ve önceden derlenmiş birçok uygulamanın [kapsamlı koleksiyonunu](https://github.com/termux/termux-packages) sağlar. Termux uygulamasındaki bu komut mevcut son Node.js sürümünü yükleyecektir: + +```bash +pkg install nodejs +``` + +Şu anda, Termux Node.js ikili dosyaları system-icu'ya (`libicu` paketine bağlı olarak) bağlanmıştır. + +## Arch Linux + +Node.js ve npm paketleri Topluluk Deposu'nda bulunmaktadır. + +```bash +pacman -S nodejs npm +``` + +## CentOS, Fedora ve Red Hat Enterprise Linux + +CentOS/RHEL 8 ve Fedora'da, Node.js `nodejs` adında bir modül olarak mevcuttur. + +```bash +dnf module install nodejs:<stream> +``` + +`<stream>` düğümü, Node.js'in ana sürümüne karşılık gelir. +Kullanılabilir akışların listesini görmek için: + +```bash +dnf module list nodejs +``` + +Örneğin, Node.js 18'i yüklemek için: + +```bash +dnf module install nodejs:18/common +``` + +### Alternatifler + +Bu kaynaklar CentOS, Fedora ve RHEL ile uyumlu paketler sağlamaktadır. + +- [Node.js snapleri](#snap) https://github.com/nodejs/snap adresinde tutulmakta ve desteklenmektedir +- [Node.js ikili dağıtımları](#debian-and-ubuntu-based-linux-distributions) [NodeSource](https://github.com/nodesource/distributions) tarafından sürdürülür ve desteklenir + +## Debian ve Ubuntu tabanlı Linux dağıtımları + +[Node.js ikili dağıtımları](https://github.com/nodesource/distributions) NodeSource'tan temin edilebilir. + +### Alternatifler + +Debian ve Ubuntu tabanlı Linux dağıtımları ile uyumlu paketler [Node.js snapleri](#snap) üzerinden temin edilebilir. + +## Exherbo Linux + +Node.js ve npm paketleri [arbor deposunda](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node) mevcuttur. + +```bash +cave resolve -x node +``` + +## fnm + +Rust'ta yerleşik hızlı ve basit Node.js sürüm yöneticisi, birden fazla yayınlanan Node.js sürümünü yönetmek için kullanılır. Yükleme, kaldırma, geçerli dizine göre Node sürümlerini otomatik olarak değiştirme vb. işlemleri gerçekleştirmenize olanak tanır. +Fnm'yi yüklemek için bu [install script](https://github.com/Schniz/fnm#using-a-script-macoslinux) kullanın. + +fnm, macOS, Windows, Linux gibi çapraz platform desteği sunar ve tüm yaygın kabuklar (Bash, Zsh, Fish, PowerShell, Windows Komut İstemi) ile uyumludur. fnm, hızlı bir şekilde oluşturulmuştur ve.node-version ve.nvmrc dosyaları için uyumluluk desteği sunar. + +## FreeBSD + +Node.js'nin en güncel sürümü [www/node](https://www.freshports.org/www/node) bağlantısı üzerinden erişilebilir. + +[pkg](https://www.freebsd.org/cgi/man.cgi?pkg) aracılığıyla ikili bir paket yükleyin: + +```bash +pkg install node +``` + +Ya da [ports](https://www.freebsd.org/cgi/man.cgi?ports) kullanarak kendi başınıza derleyin: + +```bash +cd /usr/ports/www/node && make install +``` + +## Gentoo + +Node.js portage ağacında mevcuttur. + +```bash +emerge nodejs +``` + +## IBM i + +Node.js'nin LTS sürümleri IBM'den temin edilebilir ve [yum paket yöneticisi](https://ibm.biz/ibmi-rpms) aracılığıyla kullanılabilir. Paket adı `nodejs` ve ardından ana sürüm numarasıdır (örneğin, `nodejs18`, `nodejs20` vb.) + +Node.js 20.x'i komut satırından yüklemek için, \*ALLOBJ özel yetkisine sahip bir kullanıcı olarak aşağıdakileri çalıştırın: + +```bash +yum install nodejs20 +``` + +Node.js, IBM i Access Client Solutions ürünü ile de kurulabilir. Daha fazla ayrıntı için [bu destek belgesine](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) bakın + +## macOS + +MacOS Installer](/#home-downloadhead) doğrudan [nodejs.org](https://nodejs.org/) web sitesinden indirin. + +_Eğer paketi bash ile indirmek istiyorsanız:_ + +```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 "/" +``` + +### Alternatifler + +[Homebrew](https://brew.sh/)\*\* kullanarak: + +```bash +brew install node +``` + +[MacPorts](https://www.macports.org/)\*\* kullanarak: + +```bash +port install nodejs<major version> + +# Example +port install nodejs7 +``` + +**[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)** kullanılıyor: + +binary paketi yükleyin: + +```bash +pkgin -y install nodejs +``` + +Veya pkgsrc'den manuel olarak derleyin: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## n + +n\`, Mac ve Linux için kullanımı kolay bir Node.js sürüm yöneticisidir. Zengin bir sözdizimi kullanarak yüklemek için hedef sürümü belirtin, +veya önceden indirilmiş sürümlerden oluşan bir menüden seçim yapabilirsiniz. Sürümler sistem genelinde veya kullanıcı genelinde yüklenir ve daha fazlası için +Hedeflenen kullanım için bir sürümü doğrudan önbelleğe alınmış indirmelerden çalıştırabilirsiniz. + +Yükleme yöntemleri (bootstrap, npm, Homebrew, üçüncü taraf) ve tüm kullanım ayrıntıları için [homepage](https://github.com/tj/n) adresine bakın. + +Eğer zaten `npm` kullanıyorsanız, `n` ve ardından en yeni LTS `node` sürümünü yüklemek kadar basittir: + +``` +npm install -g n +n lts +``` + +## NetBSD + +Node.js pkgsrc ağacında mevcuttur: + +```bash +cd /usr/pkgsrc/lang/nodejs && make install +``` + +Veya pkgin kullanarak binary paket (platformunuz için mevcutsa) yükleyin: + +```bash +pkgin -y install nodejs +``` + +## Nodenv + +nodenv`, `nvm`ye benzer hafif bir node sürüm yöneticisidir. Basit ve öngörülebilirdir. Zengin bir eklenti ekosistemi, onu ihtiyaçlarınıza göre uyarlamanızı sağlar. Uygulamanız için bir Node sürümü seçmek ve geliştirme ortamınızın üretimle eşleşmesini garanti etmek için `nodenv\` kullanın. + +Nodenv kurulum talimatları [Github sayfasında](https://github.com/nodenv/nodenv#installation) tutulmaktadır. Kurulum adımlarının en son sürümünü takip ettiğinizden emin olmak için lütfen bu sayfayı ziyaret edin. + +## nvm + +Node Version Manager, birden fazla yayınlanmış Node.js sürümünü yönetmek için kullanılan bir bash betiğidir. İzin verir +yükleme, kaldırma, sürüm değiştirme vb. işlemleri gerçekleştirebilirsiniz. +Nvm yüklemek için bu [install script](https://github.com/nvm-sh/nvm#install--update-script) kullanın. + +Unix / OS X sistemlerinde kaynaktan oluşturulan Node.js şu şekilde kurulabilir +nvm'nin beklediği konuma yükleyerek [nvm](https://github.com/creationix/nvm): + +```bash +env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" +``` + +Bundan sonra, yayınlanan sürümler ve sürümler arasında geçiş yapmak için `nvm` kullanabilirsiniz +kaynaktan oluşturulmuştur. +Örneğin, Node.js sürümü v8.0.0-pre ise: + +```bash +nvm use 8 +``` + +Resmi sürüm çıktığında, oluşturulmuş sürümü kaldırmak isteyeceksiniz +Kaynaktan: + +```bash +nvm uninstall 8 +``` + +## nvs + +#### Windows + +`nvs` sürüm yöneticisi çapraz platformdur ve Windows, macOS ve Unix benzeri sistemlerde kullanılabilir + +Windows'a `nvs` yüklemek için buradan [sürüm sayfasına](https://github.com/jasongin/nvs/releases) gidin ve en son sürümün MSI yükleyici dosyasını indirin. + +Yüklemek için `chocolatey` de kullanabilirsiniz: + +```bash +choco install nvs +``` + +#### macos, Unix benzeri + +MacOS/Unix benzeri sistemlerde `nvs` kurulum adımlarına ilişkin belgelere [buradan](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) ulaşabilirsiniz + +#### Kullanım + +Bundan sonra farklı node sürümleri arasında geçiş yapmak için `nvs` kullanabilirsiniz. + +Node'un en son sürümünü eklemek için: + +```bash +nvs add latest +``` + +Veya node'un en son LTS sürümünü eklemek için: + +```bash +nvs add lts +``` + +Ardından, geçerli kabuk için `PATH`inize bir node sürümü eklemek için `nvs use` komutunu çalıştırın: + +```bash +$ nvs use lts +PATH -= %LOCALAPPDATA%\nvs\default +PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 +``` + +Then run the `nvs use` command to add a version of node to your `PATH` for the current shell: + +```bash +nvs link lts +``` + +## OpenBSD + +Node.js port sistemi aracılığıyla kullanılabilir. + +```bash +/usr/ports/lang/node +``` + +OpenBSD üzerinde [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) kullanımı: + +```bash +pkg_add node +``` + +## openSUSE ve SLE + +Node.js ana depolarda aşağıdaki paketler altında mevcuttur: + +- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` +- **openSUSE Tumbleweed**: `nodejs20` +- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12` ve `nodejs14` + ("Web ve Komut Dosyası Modülü" [etkin](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated) olmalıdır.) +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12` ve `nodejs14` + ("Web ve Komut Dosyası Modülü" [etkin](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module) olmalıdır.) + +Örneğin, openSUSE Leap 15.2 üzerinde Node.js 14.x yüklemek için aşağıdakileri root olarak çalıştırın: + +```bash +zypper install nodejs14 +``` + +Node'un farklı ana sürümleri aynı anda kurulabilir ve kullanılabilir. + +## SmartOS ve illumos + +SmartOS imajları pkgsrc önceden yüklenmiş olarak gelir. Diğer illumos dağıtımlarında, önce **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)** yükleyin, ardından ikili paketi normal şekilde yükleyebilirsiniz: + +```bash +pkgin -y install nodejs +``` + +Veya pkgsrc'den manuel olarak derleyin: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## Yakala + +[Node.js snaps](https://github.com/nodejs/snap), Snap deposunda [`node`](https://snapcraft.io/node) olarak mevcuttur. + +## Solus + +Solus, ana deposunda Node.js sağlar. + +```bash +sudo eopkg install nodejs +``` + +## vfox + +Platformlar arası (Windows, macOS, Linux) ve **genişletilebilir** bir sürüm yöneticisi. + +**Farklı projeler için farklı sürümler**, **farklı kabuklar için farklı sürümler** ve geçerli dizine göre Node sürümlerini otomatik olarak değiştirmenize vb. olanak tanır. + +Tüm popüler kabukları (Bash, Zsh, Fish, PowerShell, Clink, Cmder) destekler. + +Vfox'u hızlı bir şekilde kullanmak ve tüm kullanım ayrıntıları için [Hızlı Başlangıç](https://vfox.lhan.me/guides/quick-start.html) bölümüne bakın. + +## Void Linux + +Void Linux, Node.js'yi ana depoda kararlı olarak gönderir. + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +Windows Installer](/#home-downloadhead) doğrudan [nodejs.org](https://nodejs.org/) web sitesinden indirin. + +### Alternatifler + +[Winget](https://aka.ms/winget-cli)\*\* kullanarak: + +```bash +winget install OpenJS.NodeJS +# or for LTS +winget install OpenJS.NodeJS.LTS +``` + +Yukarıdaki iki komuttan birini çalıştırdıktan sonra, yeniden başlatmak gerekebilir +CLI komutu kullanılabilir hale gelmeden önce terminal emülatörü. + +[Chocolatey](https://chocolatey.org/)\*\* kullanarak: + +```bash +cinst nodejs +# or for full install with npm +cinst nodejs.install +``` + +[Scoop](https://scoop.sh/)\*\* kullanarak: + +```bash +scoop install nodejs +# or for LTS +scoop install nodejs-lts +``` + +## z/OS + +IBM® SDK for Node.js - z/OS® SMP/E ve PAX olarak iki kurulum formatında sunulur. Size uygun olan kurulum formatını seçin: + +- [z/OS üzerinde Node.js'nin SMP/E sürümünün kurulması ve yapılandırılması](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [z/OS üzerinde Node.js PAX sürümünün kurulması ve yapılandırılması](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/uk/download/package-manager/all.md b/apps/site/pages/uk/download/package-manager/all.md new file mode 100644 index 0000000000000..f603bf86ddaf6 --- /dev/null +++ b/apps/site/pages/uk/download/package-manager/all.md @@ -0,0 +1,392 @@ +--- +layout: article +title: Установка Node.js через менеджер пакетів +--- + +# Установка Node.js через менеджери пакетів + +> Пакети на цій сторінці обслуговуються та підтримуються їхніми відповідними розробниками, **не** командою Node.js. Будь ласка, повідомляйте про проблеми цих пакетів їхнім розробникам. Якщо виявиться, що проблема є помилкою Node.js, то вони повідомлять нас про неї. + +## Alpine Linux + +Node.js LTS та пакети npm доступні в головному репозиторії. + +```bash +apk add nodejs npm +``` + +Node.js Current можна встановити через репозиторій спільноти. + +```bash +apk add nodejs-current +``` + +## Android + +Підтримка Android досі є експериментальною в Node.js, тому попередньо скомпільовані бінарні файли ще не надаються розробниками Node.js. + +Однак, є сторонні рішення. Наприклад, спільнота [Termux](https://termux.com/) надає емулятор термінала та середовище Linux для Android, а також власний менеджер пакетів та [великий набір](https://github.com/termux/termux-packages) попередньо скомпільованих застосунків. Ця команда в застосунку Termux установить останню доступну версію Node.js: + +```bash +pkg install nodejs +``` + +Наразі бінарні файли Termux Node.js компонуються із `system-icu` (залежно від пакета `libicu`). + +## Arch Linux + +Node.js та пакети npm доступні в репозиторії спільноти. + +```bash +pacman -S nodejs npm +``` + +## CentOS, Fedora та Red Hat Enterprise Linux + +Node.js доступний як модуль із назвою `nodejs` у CentOS/RHEL 8 та Fedora. + +```bash +dnf module install nodejs:<stream> +``` + +де `<stream>` — основна версія Node.js. +Щоб побачити список доступних потоків: + +```bash +dnf module list nodejs +``` + +Наприклад, щоб установити Node.js 18: + +```bash +dnf module install nodejs:18/common +``` + +### Альтернативи + +Ці ресурси надають пакети, які сумісні з CentOS, Fedora та RHEL. + +- [Snaps Node.js](#snap) обслуговуються та підтримуються на https://github.com/nodejs/snap +- [Бінарні дистрибутиви Node.js](#debian-and-ubuntu-based-linux-distributions) обслуговуються та підтримуються [NodeSource](https://github.com/nodesource/distributions) + +## Дистрибутиви Linux на базі Debian та Ubuntu + +[Бінарні дистрибутиви Node.js](https://github.com/nodesource/distributions) доступні на NodeSource. + +### Альтернативи + +Пакети, сумісні з дистрибутивами Linux на базі Debian та Ubuntu, доступні на [snaps Node.js](#snap). + +## Exherbo Linux + +Node.js і пакети npm доступні в [репозиторії arbor](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). + +```bash +cave resolve -x node +``` + +## fnm + +Швидкий і простий менеджер версій Node.js, створений на Rust, використовується для керування багатьма випущеними версіями Node.js. Він дозволяє виконувати такі операції, як установка, видалення, автоматична зміна версій Node залежно від поточної директорії тощо. +Щоб установити fnm, використайте [цей скрипт](https://github.com/Schniz/fnm#using-a-script-macoslinux). + +fnm кросплатформний (macOS, Windows, Linux) та підтримує всі популярні оболонки (Bash, Zsh, Fish, PowerShell, командний рядок Windows). +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 +``` + +Або скомпілюйте його самостійно через [порти](https://www.freebsd.org/cgi/man.cgi?ports): + +```bash +cd /usr/ports/www/node && make install +``` + +## Gentoo + +Node.js доступний у дереві portage. + +```bash +emerge nodejs +``` + +## IBM i + +LTS-версії Node.js доступні від 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](/#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<major version> + +# 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` — простий у використанні менеджер версій Node.js для платформ Mac і Linux. Укажіть цільову версію для встановлення за допомогою розширеного синтаксису або оберіть у меню раніше завантажених версій. Версії встановлюються на рівні системи чи користувача, а для більш цільового використання можна запускати її безпосередньо з кешованих завантажень. + +Відвідайте [головну сторінку](https://github.com/tj/n), щоб дізнатися методи установки (bootstrap, npm, Homebrew, сторонні) та деталі використання. + +Якщо у вас уже є `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` — легковаговий менеджер версій Node, подібний до `nvm`. Простий та інтуїтивний у використанні. Широка екосистема плагінів дозволяє налаштувати його відповідно до ваших потреб. Використовуйте `nodenv`, щоб обрати версію Node для вашої програми та переконатися, що ваше середовище розробки відповідає клієнтському середовищу. + +Інструкції зі встановлення Nodenv є [на його сторінці Github](https://github.com/nodenv/nodenv#installation). Будь ласка, відвідайте її, щоб використовувати останню версію кроків установки. + +## nvm + +Node Version Manager — це bash-скрипт, що використовується для керування різними випущеними версіями Node.js. Він дозволяє виконувати наступні операції: установка, видалення, зміна версії тощо. Щоб установити nvm, використайте [цей скрипт](https://github.com/nvm-sh/nvm#install--update-script). + +На системах Unix / OS X Node.js, зібраний із вихідного коду, можна встановити за допомогою [nvm](https://github.com/creationix/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 + +Щоб установити `nvs` на Windows, перейдіть на [сторінку релізів](https://github.com/jasongin/nvs/releases) і завантажте MSI-інсталятор останнього релізу. + +Ви також можете використати `chocolatey` для установки: + +```bash +choco install nvs +``` + +#### macOS, системи типу Unix + +Ви можете знайти документацію щодо кроків інсталяції `nvs` на macOS та системах типу Unix [тут](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) + +#### Використання + +Після цього ви можете використовувати `nvs`, щоб перемикатися між різними версіями Node. + +Щоб додати її останню версію: + +```bash +nvs add latest +``` + +Чи додати її останню LTS-версію: + +```bash +nvs add lts +``` + +Тоді запустіть команду `nvs use`, щоб додати версію Node до своєї `PATH` для поточної оболонки: + +```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 доступний через систему портів. + +```bash +/usr/ports/lang/node +``` + +Через [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) на 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`, and `nodejs14` + (Модуль «Web and Scripting Module» має бути [ввімкнений](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, and `nodejs14` + (Модуль «Web and Scripting Module» має бути [ввімкнений](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) + +Для прикладу, щоб встановити Node.js 14.x на openSUSE Leap 15.2, запустіть наступну команду в корені: + +```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 + +[Snaps Node.js](https://github.com/nodejs/snap) доступні як [`node`](https://snapcraft.io/node) у крамниці Snap. + +## Solus + +Solus надає Node.js у своєму головному репозиторії. + +```bash +sudo eopkg install nodejs +``` + +## vfox + +Кросплатформний (Windows, macOS, Linux) і **розширюваний** менеджер версій. + +Підтримує **різні версії для різних проєктів**, **різні версії для різних оболонок**, а також дає можливість перемикати версії Node автоматично на основі поточної директорії тощо. + +Підтримує всі популярні оболонки (Bash, Zsh, Fish, PowerShell, Clink, Cmder). + +Перегляньте [швидкий старт](https://vfox.lhan.me/guides/quick-start.html), щоб почати використовувати vfox та дізнатися всі деталі його використання. + +## Void Linux + +Void Linux надає стабільний Node.js в основному репозиторії. + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +Завантажте [інсталятор Windows](/#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 +``` + +Після запуску однієї з двох команд вище, можливо, необхідно буде перезапустити емулятор термінала, перш ніж CLI-команда `node` стане доступною. + +Через **[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 для Node.js — z/OS® доступний у двох інсталяційних форматах: +SMP/E та PAX. Оберіть підхожий вам формат: + +- [Установка та налаштування Node.js із SMP/E на z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [Установка та налаштування Node.js із PAX на z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/zh-cn/download/package-manager/all.md b/apps/site/pages/zh-cn/download/package-manager/all.md new file mode 100644 index 0000000000000..e7eeeef51ecaa --- /dev/null +++ b/apps/site/pages/zh-cn/download/package-manager/all.md @@ -0,0 +1,389 @@ +--- +layout: article +title: 通过包管理器安装 Node.js +--- + +# 通过包管理器安装 Node.js + +> 这个页面上的软件包由各自的打包者维护和支持,而不是 Node.js 核心团队。当将您遇到的任何疑问时,请将问题报告给软件包维护者。如果问题最终是 Node.js 本身的 bug,则维护者将向上报告该问题。 + +## Alpine Linux + +Node.js LTS 和 npm 软件包可在主仓库中获得。 + +```bash +apk add nodejs npm +``` + +Node.js Current 可从社区仓库安装。 + +```bash +apk add nodejs-current +``` + +## Android + +在 Node.js 中,Android 支持仍处于实验阶段,因此 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 包管理器可在社区库中使用。 + +```bash +pacman -S nodejs npm +``` + +## CentOS、Fedora 和 Red Hat Enterprise Linux + +Node.js 在 CentOS/RHEL 8 和 Fedora 中作为一个名为 `nodejs` 的模块可用。 + +```bash +dnf module install nodejs:<stream> +``` + +`<stream>` 对应于 Node.js 的主要版本号。如需查看可用stream的列表: + +```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 维护并得到支持 +- [Node.js 二进制发行版](#debian-and-ubuntu-based-linux-distributions) 由 [NodeSource](https://github.com/nodesource/distributions) 维护并得到支持。 + +## 基于 Linux 的 Debian 和 Ubuntu 发行版 + +[Node.js 二进制发行版](https://github.com/nodesource/distributions) 可从 NodeSource 获取。 + +### 备选资源 + +与基于 Linux 的 Debian 和 Ubuntu 发行版兼容的软件包可以通过 [Node.js snaps](#snap) 获取。 + +## Exherbo Linux + +Node.js 和 npm 软件包可以在 [arbor 仓库](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node)当中找到。 + +```bash +cave resolve -x node +``` + +## fnm + +"fnm" 是一个用 Rust 构建的快速简单的 Node.js 版本管理器,用于管理多个已发布的 Node.js 版本。它允许您执行诸如安装、卸载、根据当前目录自动切换 Node 版本等操作。 +要安装 fnm,请使用此[安装脚本](https://github.com/Schniz/fnm#using-a-script-macoslinux)。 + +fnm 具有跨平台支持(macOS、Windows、Linux)和所有流行的 shell(Bash、Zsh、Fish、PowerShell、Windows 命令行提示符)。 +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 可以在 Portage 树中找到。 + +```bash +emerge nodejs +``` + +## IBM i + +LTS 版本的 Node.js 可以从 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 + +直接从 [nodejs.org](https://nodejs.org/) 网站下载 [macOS 安装程序](/#home-downloadhead)。 + +_如果您想使用 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<major version> + +# 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` 是一个简单易用的 Node.js 版本管理器,适用于 Mac 和 Linux。使用丰富的语法指定要安装的目标版本,或从先前下载的版本菜单中进行选择。这些版本可以系统范围或用户范围安装,对于更有针对性的使用,您可以直接从缓存的下载文件中运行一个版本。 + +请查看 [首页](https://github.com/tj/n) 获取安装方法(bootstrap、npm、Homebrew、第三方)以及所有的使用详情。 + +如果您已经安装了 `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` 是一个轻量级的 Node 版本管理器,类似于 `nvm`。它简单而可预测。丰富的插件生态系统让您可以根据自己的需求进行定制。使用 `nodenv` 为您的应用选择一个 Node 版本,并确保您的开发环境与生产环境匹配。 + +Nodenv 的安装说明维护于 [Github 页面](https://github.com/nodenv/nodenv#installation) 上。请访问该页面以确保您遵循最新版本的安装步骤。 + +## nvm + +Node Version Manager(nvm)是一个 bash 脚本,用于管理多个发布的 Node.js 版本。它允许您执行诸如安装、卸载、切换版本等操作。 +要安装 nvm,请使用这个 [安装脚本](https://github.com/nvm-sh/nvm#install--update-script)。 + +在 Unix / OS X 系统上,可以使用[nvm](https://github.com/creationix/nvm)从源代码构建安装 Node.js,方法是安装到 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 + +您可以在[这里](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux)找到关于在 macOS/类 Unix 系统上安装 `nvs` 的文档。 + +#### 用法 + +之后,您可以使用 `nvs` 在不同的 Node. js 版本之间进行切换。 + +要添加最新版本的 Node. js: + +```bash +nvs add latest +``` + +或者添加最新的 LTS 版本的 Node. js: + +```bash +nvs add lts +``` + +然后运行 `nvs use` 命令将一个 Node. js 版本添加到当前 shell 的 `PATH` 中: + +```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 可通过 ports 系统获得。 + +```bash +/usr/ports/lang/node +``` + +在 OpenBSD 上使用 [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1): + +```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)“Web 和脚本模块”)。 +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, 和 `nodejs14`(必须[启用](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module)“Web 和脚本模块”)。 + +例如,在 openSUSE Leap 15.2 上安装 Node.js 14.x,作为 root 运行以下命令: + +```bash +zypper install nodejs14 +``` + +可以同时安装和使用不同的 Node. js 主要版本。 + +## 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 store 上以 [`node`](https://snapcraft.io/node) 提供。 + +## Solus + +Solus 在其主软件仓库中提供 Node.js。 + +```bash +sudo eopkg install nodejs +``` + +## vfox + +一个跨平台(Windows、macOS、Linux)并**可拓展的**版本管理器。 + +它允许你为**不同的项目使用不同的版本**,**为不同的Shell使用不同的版本**,并根据当前目录自动切换Node版本等等。 + +它支持所有主流的Shell(Bash、Zsh、Fish、PowerShell、Clink、Cmder)。 + +查看[快速入门](https://vfox.lhan.me/guides/quick-start.html),了解vfox如何上手及所有使用细节。 + +## Void Linux + +Void Linux 在其主仓库中提供 Node.js 的稳定版本。 + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +直接从 [nodejs.org](https://nodejs.org/) 网站下载 [Windows 安装程序](/#home-downloadhead)。 + +### 备选资源 + +使用 **[Winget](https://aka.ms/winget-cli)**: + +```bash +winget install OpenJS.NodeJS +# or for LTS +winget install OpenJS.NodeJS.LTS +``` + +在运行上述两个命令之后,可能需要重新启动终端模拟器,然后 `node` 命令行界面命令才能生效。 + +使用 **[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 上安装和配置 SMP/E 版本的 Node.js](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [在 z/OS 上安装和配置 PAX 版本的 Node.js](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/zh-tw/download/index.mdx b/apps/site/pages/zh-tw/download/index.mdx new file mode 100644 index 0000000000000..d9053f8c812f7 --- /dev/null +++ b/apps/site/pages/zh-tw/download/index.mdx @@ -0,0 +1,29 @@ +--- +layout: download +title: 下載 Node.js® +--- + +<section> +取得適用於 <Release.VersionDropdown /> 的 Node.js® <Release.OperatingSystemDropdown />,透過 <Release.InstallationMethodDropdown /> 並包含 <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + 或者取得適用於 <Release.OperatingSystemDropdown /> <Release.PlatformDropdown /> 平台的 Node.js® 組建。 + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +閱讀此版本的<Release.ChangelogLink>更新備註</Release.ChangelogLink>。 + +閱讀此版本的<Release.BlogPostLink>部落格文章</Release.BlogPostLink>。 + +瞭解如何<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">驗證已簽署的 SHASUMS</LinkWithArrow>。 + +暸解如何自原始碼<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">建置 Node.js</LinkWithArrow>。 + +查看我們的<LinkWithArrow href="https://nodejs.org/download/nightly/">每日</LinkWithArrow>組建版本、所有<Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">先前版本</Link>或適用於其他平台的<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非官方</LinkWithArrow>組建。 + +</section> diff --git a/apps/site/pages/zh-tw/download/package-manager/all.md b/apps/site/pages/zh-tw/download/package-manager/all.md new file mode 100644 index 0000000000000..1eca25ec8b5ea --- /dev/null +++ b/apps/site/pages/zh-tw/download/package-manager/all.md @@ -0,0 +1,391 @@ +--- +layout: article +title: 使用套件管理器安裝 Node.js +--- + +# 使用套件管理器安裝 Node.js + +> 本站上的套件皆由各自的套件管理器維護與支援,**並非**由 Node.js 的核心團隊維護。若遭遇任何問題,請向該套件的維護者回報。如果問題確實是 Node.js 本身的錯誤,將由維護者負責向上游回報。 + +## Alpine Linux + +Node.js LTS 與 npm 套件皆收錄於主儲存庫。 + +```bash +apk add nodejs npm +``` + +你可以從社群儲存庫下載 Node.js 的最新版本。 + +```bash +apk add nodejs-current +``` + +## Android + +Node.js 對於 Android 的支援系統仍在測試階段,因此 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 套件皆收錄於主儲存庫。 + +```bash +pacman -S nodejs npm +``` + +## CentOS、Fedora 與 Red Hat Enterprise Linux + +Node.js 在 CentOS/RHEL 8 和 Fedora 中以 `nodejs` 模組的名稱開放使用。 + +```bash +dnf module install nodejs:<stream> +``` + +其中 <stream> 對應 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 維護與支援 +- [Node.js 二進制發行版](#debian-and-ubuntu-based-linux-distributions)由 [NodeSource](https://github.com/nodesource/distributions) 維護與支援 + +## 基於 Debian 或 Ubuntu 的 Linux 發行版 + +[Node.js 二進制發行版](https://github.com/nodesource/distributions)收錄於 NodeSource。 + +### 替代方案 + +和基於 Debian 與 Ubuntu 的 Linux 發行版相容的套件可以透過 [Node.js snaps](#snap) 取得。 + +## Exherbo Linux + +Node.js 和 npm 套件在收錄於 [arbor 版本庫](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node)。 + +```bash +cave resolve -x node +``` + +## fnm + +快速簡單的 Node.js 版本管理器,使用 Rust 構建,用於管理多個已釋出的 Node.js 版本。其功能包含安裝、解除安裝、根據目錄自動切換 Node 版本等。如欲安裝 fnm,請使用此[安裝腳本](https://github.com/Schniz/fnm#using-a-script-macoslinux)。 + +fnm 支援跨平台 (macOS、Windows、Linux) 以及所有主流的 shell 指令 (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 可以透過 portage 樹取得。 + +```bash +emerge nodejs +``` + +## IBM i + +IBM 提供的 Node.js LTS 版本可以透過 [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 + +直接從 [nodejs.org](https://nodejs.org/) 網站下載 [macOS 安裝器](/#home-downloadhead)。 + +如欲使用 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<major version> + +# 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` 是一款簡單易用的 Node.js 版本管理器,適用於 Mac 和 Linux。你可以使用豐富的語法指定欲安裝的目標版本,或者從之前下載的版本清單中進行選擇。安裝範圍可選擇全系統或以使用者為限,也可以直接從快取的下載檔案中執行特定版本。 + +請參閱[首頁](https://github.com/tj/n)以了解安裝方法 (bootstrap、npm、Homebrew、第三方) 以及所有使用詳細資訊。 + +如果你已經有 `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` 是一款輕量級的 Node 版本管理器,類似於 `nvm`。它不但設計簡潔,還穩定可靠。豐富的插件生態系統可以讓使用者可以隨心個人化。使用 `nodenv` 為你的應用程式選擇 Node 版本,並確保開發環境與生產環境保持一致。 + +Nodenv 安裝說明在其 [Github 頁面上](https://github.com/nodenv/nodenv#installation) 進行維護。請前往該頁面以遵循最新版本的安裝步驟。 + +## nvm + +Node Version Manager 是一個 Bash 腳本,用於管理多個已釋出的 Node.js 版本。其功能包含安裝、解除安裝、切換版本等。 +如欲安裝 nvm,請使用[此安裝腳本](https://github.com/nvm-sh/nvm#install--update-script)。 + +在 Unix / OS X 系統上,可以使用 [nvm](https://github.com/creationix/nvm) 安裝從原始碼構建的 Node.js,方法是安裝到 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 系統安裝步驟文件請[見此](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) + +#### 使用方法 + +安裝後可以使用 `nvs` 切換不同版本的 node。 + +新增最新版本的 node: + +```bash +nvs add latest +``` + +或是新增最新 LTS 版本的 node: + +```bash +nvs add lts +``` + +隨後執行 `nvs use` 命令將 Node. js 版本加入目前 shell 指令的 `PATH` 中: + +```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 可透過 ports 系統取得。 + +```bash +/usr/ports/lang/node +``` + +在 OpenBSD 上使用 [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1): + +```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` + (「Web 與腳本模組」必須[啟用](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated)。) +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, and `nodejs14` (「Web 與腳本模組」必須[啟用](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) 的**可擴充的**版本管理器。 + +你可以**在不同的專案使用不同的版本**、**在不同的shell使用不同的版本**,也可以根據當下的目錄自動切換 Node 版本等。 + +它支援所有主流的 shell 指令 (Bash、Zsh、Fish、PowerShell、Clink、Cmder)。 + +請參閱[快速入門](https://vfox.lhan.me/guides/quick-start.html)瞭解 vfox 的所有使用細節。 + +## Void Linux + +Void Linux 在主儲存庫中提供了 Node.js 的穩定版本。 + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +直接從 [nodejs.org](https://nodejs.org/) 網站下載 [Windows 安裝器](/#home-downloadhead)。 + +### 替代方案 + +使用 **[Winget](https://aka.ms/winget-cli)**: + +```bash +winget install OpenJS.NodeJS +# or for LTS +winget install OpenJS.NodeJS.LTS +``` + +執行上述的兩個命令之一後,可能需要重新啟動,這樣 `node` 的指令才能使用。 + +使用 **[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/snippets/fr/download/brew.bash b/apps/site/snippets/fr/download/brew.bash new file mode 100644 index 0000000000000..9d6a848b726f2 --- /dev/null +++ b/apps/site/snippets/fr/download/brew.bash @@ -0,0 +1,8 @@ +# Télécharger et installer Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Télécharger et installer Node.js: +brew install node@${props.release.major} + +# Vérifier la version de Node.js : +node -v # Doit afficher "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/fr/download/choco.bash b/apps/site/snippets/fr/download/choco.bash new file mode 100644 index 0000000000000..a296bf6ca9301 --- /dev/null +++ b/apps/site/snippets/fr/download/choco.bash @@ -0,0 +1,8 @@ +# Téléchargez et installez Chocolatey : +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# Télécharger et installer Node.js : +choco install nodejs-lts --version="${props.release.major}" + +# Vérifier la version de Node.js : +node -v # Doit afficher "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/fr/download/docker.bash b/apps/site/snippets/fr/download/docker.bash new file mode 100644 index 0000000000000..18644131decdf --- /dev/null +++ b/apps/site/snippets/fr/download/docker.bash @@ -0,0 +1,11 @@ +# Docker a des instructions d'installation spécifiques pour chaque système d'exploitation. +# Veuillez vous référer à la documentation officielle à l'adresse suivante : https://docker.com/get-started/ + +# Récupère l'image Docker de Node.js : +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Créer un conteneur Node.js et démarrer une session Shell : +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Vérifier la version de Node.js : +node -v # Doit afficher "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/fr/download/nvm.bash b/apps/site/snippets/fr/download/nvm.bash new file mode 100644 index 0000000000000..35db0529a00f6 --- /dev/null +++ b/apps/site/snippets/fr/download/nvm.bash @@ -0,0 +1,9 @@ +# Télécharger et installer nvm : +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + +# Télécharger et installer Node.js : +nvm install ${props.release.major} + +# Vérifier la version de Node.js : +node -v # Doit afficher "${props.release.versionWithPrefix}". +nvm current # Doit afficher "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/ja/download/brew.bash b/apps/site/snippets/ja/download/brew.bash new file mode 100644 index 0000000000000..b2eafe88986fa --- /dev/null +++ b/apps/site/snippets/ja/download/brew.bash @@ -0,0 +1,8 @@ +# Homebrewをダウンロードしてインストールする +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Node.jsをダウンロードしてインストールする: +brew install node@${props.release.major} + +# Node.jsのバージョンを確認する: +node -v # "${props.release.versionWithPrefix}"が表示される。 diff --git a/apps/site/snippets/ko/download/brew.bash b/apps/site/snippets/ko/download/brew.bash new file mode 100644 index 0000000000000..5da3b3a84ebca --- /dev/null +++ b/apps/site/snippets/ko/download/brew.bash @@ -0,0 +1,8 @@ +# Homebrew 다운로드 및 설치: +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Node.js 다운로드 및 설치: +brew install node@${props.release.major} + +# Node.js 버전 확인: +node -v # "${props.release.versionWithPrefix}"가 출력되어야 합니다. diff --git a/apps/site/snippets/ko/download/choco.bash b/apps/site/snippets/ko/download/choco.bash new file mode 100644 index 0000000000000..559b77587836a --- /dev/null +++ b/apps/site/snippets/ko/download/choco.bash @@ -0,0 +1,8 @@ +# Chocolatey 다운로드 및 설치: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# Node.js 다운로드 및 설치: +choco install nodejs-lts --version="${props.release.major}" + +# Node.js 버전 확인: +node -v # "${props.release.versionWithPrefix}"가 출력되어야 합니다. diff --git a/apps/site/snippets/ko/download/docker.bash b/apps/site/snippets/ko/download/docker.bash new file mode 100644 index 0000000000000..30aeae3d563bd --- /dev/null +++ b/apps/site/snippets/ko/download/docker.bash @@ -0,0 +1,11 @@ +# Docker는 각 운영 체제별로 설치 지침을 제공합니다. +# 공식 문서는 https://docker.com/get-started/에서 확인하세요. + +# Node.js Docker 이미지를 풀(Pull)하세요: +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Node.js 컨테이너를 생성하고 쉘 세션을 시작하세요: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Node.js 버전 확인: +node -v # "${props.release.versionWithPrefix}"가 출력되어야 합니다. diff --git a/apps/site/snippets/ko/download/fnm.bash b/apps/site/snippets/ko/download/fnm.bash new file mode 100644 index 0000000000000..f49f9bc5bc7f3 --- /dev/null +++ b/apps/site/snippets/ko/download/fnm.bash @@ -0,0 +1,11 @@ +# fnm 다운로드 및 설치: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# Node.js 다운로드 및 설치: +fnm install ${props.release.major} + +# Node.js 버전 확인: +node -v # "${props.release.versionWithPrefix}"가 출력되어야 합니다. diff --git a/apps/site/snippets/ko/download/npm.bash b/apps/site/snippets/ko/download/npm.bash new file mode 100644 index 0000000000000..467118aa8e610 --- /dev/null +++ b/apps/site/snippets/ko/download/npm.bash @@ -0,0 +1,2 @@ +npm 버전 확인: +npm -v # ${props.release.npm}가 출력되어야 합니다. diff --git a/apps/site/snippets/ko/download/nvm.bash b/apps/site/snippets/ko/download/nvm.bash new file mode 100644 index 0000000000000..dcacc326f88d2 --- /dev/null +++ b/apps/site/snippets/ko/download/nvm.bash @@ -0,0 +1,9 @@ +# nvm 다운로드 및 설치: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + +# Node.js 다운로드 및 설치: +nvm install ${props.release.major} + +# Node.js 버전 확인: +node -v # "${props.release.versionWithPrefix}"가 출력되어야 합니다. +nvm current # "${props.release.versionWithPrefix}"가 출력되어야 합니다. diff --git a/apps/site/snippets/ko/download/pnpm.bash b/apps/site/snippets/ko/download/pnpm.bash new file mode 100644 index 0000000000000..f34b899b68299 --- /dev/null +++ b/apps/site/snippets/ko/download/pnpm.bash @@ -0,0 +1,5 @@ +# pnpm 다운로드 및 설치: +corepack enable pnpm + +# pnpm 버전 확인: +pnpm -v diff --git a/apps/site/snippets/ko/download/yarn.bash b/apps/site/snippets/ko/download/yarn.bash new file mode 100644 index 0000000000000..0d2aefb104b74 --- /dev/null +++ b/apps/site/snippets/ko/download/yarn.bash @@ -0,0 +1,5 @@ +# Yarn 다운로드 및 설치: +corepack enable yarn + +# Yarn 버전 확인: +yarn -v diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index 7d0d4af7657d5..ed3e27d351f13 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -90,9 +90,11 @@ "modules": { "links": { "modules": "Modules", + "publishingAPackage": "Publication d'un paquet", "publishingNodeApiModules": "Comment publier le paquet N-API", "anatomyOfAnHttpTransaction": "Anatomie d'une transaction HTTP", "abiStability": "Stabilité de l'ABI", + "howToUseStreams": "Comment utiliser les flux", "backpressuringInStreams": "La contre-pression dans Streams" } }, @@ -135,22 +137,6 @@ } } }, - "downloadList": { - "links": { - "previousReleases": "Versions de Node.js", - "packageManager": "Installer Node.js via le gestionnaire de paquets", - "shaSums": { - "title": "SHASUMS signés pour les fichiers des versions", - "howToVerify": " (Comment vérifier)" - }, - "allDownloads": "Toutes les options de téléchargement", - "nightlyReleases": "Versions quotidiennes", - "unofficialBuilds": "Constructions non officielles", - "buildingFromSource": "Compiler Node.js à partir du code source sur les systèmes d'exploitation maintenus", - "installingOnLinux": "Installation de Node.js via une archive binaire", - "installingOnWsl": "Installation sur le sous-système Windows pour Linux (WSL)" - } - }, "downloadReleasesTable": { "changelog": "Journal de modifications", "releases": "Sorties", @@ -161,6 +147,11 @@ "previous": "Précédent" }, "common": { + "alertBox": { + "info": "Information", + "warning": "Avertissement", + "danger": "Danger" + }, "breadcrumbs": { "navigateToHome": "Naviguer à l'accueil" }, @@ -201,32 +192,9 @@ "viewAs": "Afficher en tant que", "tableOfContents": "Table des matières" }, - "downloads": { - "changelogModal": { - "startContributing": "Commencer à contribuer" - } - }, "search": { "searchBox": { "placeholder": "Commencer à écrire..." - }, - "seeAll": { - "text": "Voir les {count} résultats" - }, - "searchError": { - "text": "Une erreur est survenue lors de la recherche. Veuillez réessayer plus tard." - }, - "poweredBy": { - "text": "Propulsé par" - }, - "noResults": { - "text": "Aucun résultat trouvé pour \"{query}\"." - }, - "emptyState": { - "text": "Chercher quelque chose..." - }, - "searchPage": { - "title": "Vous recherchez : {query}" } }, "blog": { @@ -277,49 +245,35 @@ "backToHome": "Retourner à l'accueil" }, "download": { - "selectCategory": "Catégories", - "categories": { - "prebuilt-installer": "Installateur préconstruit", - "prebuilt-binaries": "Binaires préconstruits", - "package-manager": "Gestionnaire de paquets", - "source-code": "Code source" - }, "buttons": { - "prebuilt": "Télécharger Node.js {version}", - "source": "Télécharger les sources de Node.js {version}" + "installer": "{os} Installateur (.{extension})", + "binary": "Binaire autonome (.{extension})" }, "dropdown": { - "bitness": "Bitness", + "platform": "Plateforme", "os": "Système d'exploitation", "version": "Version", - "platform": "Plateforme" + "installMethod": "Méthode d'installation", + "packageManager": "Gestionnaire de paquets", + "unknown": "Inconnu", + "platformGroups": { + "official": "Recommandé (officiel)", + "unofficial": "Communauté (non officielle)" + } }, "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.", - "communityWarningReport": "Si vous rencontrez des problèmes, veuillez contacter les responsables du gestionnaire de paquets.", - "installsNvm": "installe nvm (Gestionnaire de version node)", - "downloadAndInstallNodejsRestartTerminal": "télécharger et installer Node.js (il peut être nécessaire de redémarrer le terminal)", - "verifiesRightNodejsVersion": "vérifie que la bonne version de Node.js est présente dans l'environnement", - "verifiesRightNpmVersion": "vérifie que la bonne version de npm est présente dans l'environnement", - "shouldPrint": "devrait imprimer `{version}`", - "installsFnm": "installe fnm (Fast Node Manager)", - "downloadAndInstallNodejs": "télécharger et installer Node.js", - "activateFNM": "activer le fnm", - "noteWithColon": "NOTE:", - "dockerIsNotNodejsPackageManager": "Docker n'est pas un gestionnaire de paquets Node.js.", - "PleaseEndureAlreadyInstallOnSystem": "Assurez-vous qu'il est déjà installé sur votre système.", - "dockerInstructions": "Suivez les instructions officielles à l'adresse suivante : https://docs.docker.com/desktop/", - "dockerImagesLink": "Les images Docker sont fournies officiellement à l'adresse https://github.com/nodejs/docker-node/", - "pullsNodejsDockerImage": "tire l'image Docker de Node.js", - "homebrewIsNotNodejsPackageManager": "Homebrew n'est pas un gestionnaire de paquets Node.js.", - "homebrewInstructions": "Suivez les instructions officielles à l'adresse suivante : https://brew.sh/", - "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew ne prend en charge que l'installation des versions majeures de Node.js et peut ne pas prendre en charge la dernière version de Node.js de la ligne de publication {version}.", - "chocolateyIsNotNodejsPackageManager": "Chocolatey n'est pas un gestionnaire de paquets Node.js.", - "chocolateyInstructions": "Suivez les instructions officielles à l'adresse suivante : https://chocolatey.org/", - "chocolateyNotMaintanedByNodejs": "Chocolatey n'est pas officiellement maintenu par le projet Node.js et pourrait ne pas supporter la version {version} de Node.js" + "unsupportedVersionWarning": "Cette version ne fait plus l'objet d'une maintenance. Veuillez utiliser une version actuellement supportée. <link>Comprendre l'accompagnement de fin de vie.</link>", + "communityPlatformInfo": "Les méthodes d'installation qui impliquent des logiciels communautaires sont soutenues par les équipes qui maintiennent ces logiciels.", + "externalSupportInfo": "Si vous rencontrez des problèmes, veuillez consulter <link>le site web de {platform}</link>", + "noScriptDetected": "Cette page nécessite JavaScript. Vous pouvez télécharger Node.js sans JavaScript en visitant directement la page <link>page de diffusion</link> directement.", + "platformInfo": { + "default": "{platform} et leurs scripts d'installation ne sont pas maintenus par le projet Node.js.", + "nvm": "\"nvm\" est un gestionnaire de versions Node.js multiplateforme.", + "fnm": "\"fnm\" est un gestionnaire de versions Node.js multiplateforme.", + "brew": "Homebrew est un gestionnaire de paquets pour macOS et Linux.", + "choco": "Chocolatey est un gestionnaire de paquets pour Windows.", + "docker": "Docker est une plateforme de conteneurisation." + } } } } diff --git a/packages/i18n/locales/ko.json b/packages/i18n/locales/ko.json index 28661422f9285..f1e56962e2c85 100644 --- a/packages/i18n/locales/ko.json +++ b/packages/i18n/locales/ko.json @@ -30,7 +30,6 @@ "links": { "gettingStarted": "시작하기", "introductionToNodejs": "Node.js 소개", - "howToInstallNodejs": "Node.js 설치 방법", "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Node.js를 사용하기 위해 얼마나 많은 JavaScript를 알아야 할까요?", "differencesBetweenNodejsAndTheBrowser": "Node.js와 브라우저 간의 차이", "theV8JavascriptEngine": "V8 JavaScript 엔진", @@ -91,9 +90,11 @@ "modules": { "links": { "modules": "모듈", + "publishingAPackage": "패키지 배포하기", "publishingNodeApiModules": "Node-API 패키지 배포하기", "anatomyOfAnHttpTransaction": "HTTP 트랜잭션의 구조", "abiStability": "ABI 안정성", + "howToUseStreams": "스트림 사용하는 방법", "backpressuringInStreams": "스트림의 배압(Backpressure)" } }, @@ -136,22 +137,6 @@ } } }, - "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": "릴리스", @@ -162,6 +147,11 @@ "previous": "이전" }, "common": { + "alertBox": { + "info": "정보", + "warning": "경고", + "danger": "위험" + }, "breadcrumbs": { "navigateToHome": "홈으로 이동" }, @@ -202,32 +192,9 @@ "viewAs": "보기", "tableOfContents": "목차" }, - "downloads": { - "changelogModal": { - "startContributing": "기여 시작하기" - } - }, "search": { "searchBox": { "placeholder": "검색어를 입력하세요..." - }, - "seeAll": { - "text": "{count} 개 결과 모두 보기" - }, - "searchError": { - "text": "검색 중 오류가 발생했습니다. 나중에 다시 시도해 주세요." - }, - "poweredBy": { - "text": "제공" - }, - "noResults": { - "text": "\"{query}\"에 대한 결과를 찾을 수 없습니다." - }, - "emptyState": { - "text": "검색어를 입력하세요..." - }, - "searchPage": { - "title": "검색 중: {query}" } }, "blog": { @@ -278,49 +245,35 @@ "backToHome": "홈으로 돌아가기" }, "download": { - "selectCategory": "카테고리", - "categories": { - "prebuilt-installer": "사전 빌드된 설치 프로그램", - "prebuilt-binaries": "사전 빌드된 바이너리", - "package-manager": "패키지 관리자", - "source-code": "소스 코드" - }, "buttons": { - "prebuilt": "Node.js {version} 다운로드", - "source": "Node.js {version} 소스 다운로드" + "installer": "{os} 설치 프로그램 (.{extension})", + "binary": "Standalone Binary (.{extension})" }, "dropdown": { - "bitness": "비트", + "platform": "플랫폼", "os": "운영 체제", "version": "버전", - "platform": "플랫폼" + "installMethod": "설치 방법", + "packageManager": "패키지 관리자", + "unknown": "알 수 없음", + "platformGroups": { + "official": "권장됨 (공식)", + "unofficial": "커뮤니티 (비공식)" + } }, "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를 지원하지 않을 수 있습니다." + "unsupportedVersionWarning": "이 버전은 유지 관리가 종료되었습니다. 현재 지원되는 버전을 사용하세요. <link>EOL 지원 이해하기</link>", + "communityPlatformInfo": "커뮤니티 소프트웨어를 사용하는 설치 방법은 해당 소프트웨어를 유지 관리하는 팀에서 지원합니다.", + "externalSupportInfo": "문제가 발생하면 <link>{platform}'s 웹사이트</link>를 방문하세요.", + "noScriptDetected": "이 페이지는 JavaScript가 필요합니다. JavaScript 없이 Node.js를 다운로드하려면 <link>릴리스 페이지</link>를 직접 방문하세요.", + "platformInfo": { + "default": "{platform}과 설치 스크립트는 Node.js 프로젝트에서 유지 관리되지 않습니다.", + "nvm": "\"nvm\"은 플랫폼 간 Node.js 버전 관리자입니다.", + "fnm": "\"fnm\"은 플랫폼 간 Node.js 버전 관리자입니다.", + "brew": "Homebrew는 macOS와 Linux용 패키지 관리자입니다.", + "choco": "Chocolatey는 Windows용 패키지 관리자입니다.", + "docker": "Docker는 컨테이너화 플랫폼입니다. " + } } } } From 5a69946286150d85fe8f713c8da0eed82a6ffd40 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Mon, 6 Jan 2025 16:04:23 -0300 Subject: [PATCH 0240/1385] blog: add Upcoming CVE for EOL Versions post (#7328) * blog: add Upcoming CVE for EOL Versions post Refs: https://github.com/nodejs/security-wg/issues/1401 * update: mention openjs ecosystem sustainability program * update: mention openjs ecosystem sustainability program * fixup! update: mention openjs ecosystem sustainability program * Update apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md Co-authored-by: Michael Dawson <mdawson@devrus.com> Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> * fixup! Update apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md --------- Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> Co-authored-by: Michael Dawson <mdawson@devrus.com> --- .../upcoming-cve-for-eol-versions.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md diff --git a/apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md b/apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md new file mode 100644 index 0000000000000..f8276463cf55f --- /dev/null +++ b/apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md @@ -0,0 +1,84 @@ +--- +date: '2025-01-06:00:00.000Z' +category: vulnerability +title: Upcoming CVE for End-of-Life Node.js Versions +layout: blog-post +author: The Node.js Project +--- + +The Node.js Project is committed to ensuring the security and reliability of +applications built on Node.js. As part of this commitment, we regularly review +measures to help our users stay informed about security risks. + +## Announcement + +We will soon issue a Common Vulnerabilities and Exposures (CVE) identifier for +**End-of-Life (EOL)** versions of Node.js. This CVE will serve as an official +notification to inform users that these versions are no longer maintained and +may pose significant security risks. + +The CVE will cite **Unsupported When Assigned** under +[CWE-1104](https://cwe.mitre.org/data/definitions/1104.html): _Use of Unmaintained Third Party Components_. +For more details on this decision, you can refer to the discussion in +[this GitHub issue](https://github.com/nodejs/security-wg/issues/1401). + +## Why Issue a CVE? + +Many organizations rely on CVE notifications to track security issues across +their software stacks. The Node.js project aims for a timely resolution and disclosure +for all reported vulnerabilities for the _maintained_ release lines. +However, we do not issue CVEs for EOL release lines. +By issuing a CVE for EOL versions of Node.js, we aim to: + +- **Raise Awareness:** Inform users that running EOL versions exposes their + applications to potential vulnerabilities. +- **Encourage Upgrades:** Prompt organizations and developers to update to + actively supported Node.js versions. +- **Improve Security:** Reduce the number of applications running outdated and + unsupported versions of Node.js. + +> Node.js v16, despite being EOL for over a year, has still 11 million downloads per month. + +## What Does This Mean for You? + +If you are using an EOL version of Node.js, we strongly encourage you to upgrade +to a supported version immediately. You can find the list of actively supported +versions and their maintenance schedules in the [Node.js Release Schedule](https://github.com/nodejs/release#release-schedule). + +To check which version of Node.js your application is running, execute the +following command in your terminal: + +```bash +node -v +``` + +You can also run [`is-my-node-vulnerable`](https://github.com/nodejs/is-my-node-vulnerable) +to check if you are using an EOL version or any version with an CVE issued to it. + +```bash +npx is-my-node-vulnerable +``` + +## Supported Versions + +As of the date of this announcement, the following versions are actively supported: + +- Node.js 23 (Current) +- Node.js 22 (LTS) +- Node.js 20 (Maintenance LTS) +- Node.js 18 (Maintenance LTS) + +All other versions are no longer supported and should be considered deprecated. + +## Questions and Feedback + +We understand that upgrading may require effort, and we’re here to help. If you have +any questions or need assistance, please reach out to us via: + +- [Node.js Help Repository](https://github.com/nodejs/help) + +For organizations or developers who require continued use of EOL Node.js versions, +the [OpenJS Ecosystem Sustainability Program](https://nodejs.org/en/about/previous-releases#commercial-support) +provides commercial support options. + +Thank you for your attention to this important matter. From b417a6415e67cea0b3e52a8aba9e9da1f2d30a85 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Tue, 7 Jan 2025 00:40:39 -0300 Subject: [PATCH 0241/1385] feat: official vs community and instructions for downloads page (#7365) * feat: official vs community and instructions for downloads page * chore: semantical fixes * chore: removed unused code * chore: transform into a requirements table * chore: update requirements * chore: review changes * Apply suggestions from code review Co-authored-by: Michael Esteban <mickel13@gmail.com> Signed-off-by: Claudio W <cwunder@gnome.org> * Update apps/site/pages/en/about/previous-releases.mdx Co-authored-by: Jordan Harband <ljharb@gmail.com> Signed-off-by: Claudio W <cwunder@gnome.org> * Update apps/site/pages/en/about/previous-releases.mdx Co-authored-by: Jordan Harband <ljharb@gmail.com> Signed-off-by: Claudio W <cwunder@gnome.org> * Update previous-releases.mdx Signed-off-by: Claudio W <cwunder@gnome.org> * Update COLLABORATOR_GUIDE.md Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * Update COLLABORATOR_GUIDE.md Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * Update COLLABORATOR_GUIDE.md Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * Update COLLABORATOR_GUIDE.md Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * Apply suggestions from code review Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Claudio W <cwunder@gnome.org> --------- Signed-off-by: Claudio W <cwunder@gnome.org> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Michael Esteban <mickel13@gmail.com> Co-authored-by: Jordan Harband <ljharb@gmail.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Caner Akdas <canerakdas@gmail.com> --- COLLABORATOR_GUIDE.md | 114 ++++++++++++++++++ .../Downloads/DownloadReleasesTable.tsx | 34 +++--- .../Downloads/Release/ChangelogLink.tsx | 2 +- .../Downloads/Release/ReleaseCodeBox.tsx | 3 +- .../Choco.tsx | 0 .../Docker.tsx | 0 .../{Platform => InstallationMethod}/FNM.tsx | 0 .../Homebrew.tsx | 0 .../{Platform => InstallationMethod}/NVM.tsx | 0 .../Icons/InstallationMethod/index.ts | 7 ++ apps/site/components/Icons/Platform/index.ts | 7 -- .../{Downloads/Release => }/LinkWithArrow.tsx | 0 .../__design__/platform-logos.stories.tsx | 10 +- apps/site/i18n.tsx | 9 +- apps/site/next.mdx.use.client.mjs | 2 +- .../site/pages/en/about/previous-releases.mdx | 21 +++- .../__tests__/getNodeJsChangelog.test.mjs | 51 -------- apps/site/util/downloadUtils.tsx | 12 +- apps/site/util/getNodeJsChangelog.ts | 51 -------- packages/i18n/locales/en.json | 13 +- 20 files changed, 184 insertions(+), 152 deletions(-) rename apps/site/components/Icons/{Platform => InstallationMethod}/Choco.tsx (100%) rename apps/site/components/Icons/{Platform => InstallationMethod}/Docker.tsx (100%) rename apps/site/components/Icons/{Platform => InstallationMethod}/FNM.tsx (100%) rename apps/site/components/Icons/{Platform => InstallationMethod}/Homebrew.tsx (100%) rename apps/site/components/Icons/{Platform => InstallationMethod}/NVM.tsx (100%) create mode 100644 apps/site/components/Icons/InstallationMethod/index.ts delete mode 100644 apps/site/components/Icons/Platform/index.ts rename apps/site/components/{Downloads/Release => }/LinkWithArrow.tsx (100%) delete mode 100644 apps/site/util/__tests__/getNodeJsChangelog.test.mjs delete mode 100644 apps/site/util/getNodeJsChangelog.ts diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index c4842f7e3e029..00b0939cf28fd 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -13,6 +13,9 @@ - [Best practices when creating a Component](#best-practices-when-creating-a-component) - [How a new Component should look like when freshly created](#how-a-new-component-should-look-like-when-freshly-created) - [Best practices for Component development in general](#best-practices-for-component-development-in-general) +- [The new Downloads page](#the-new-downloads-page) + - [Adding a Download Installation Method](#adding-a-download-installation-method) + - [Adding a Download Package Manager](#adding-a-download-package-manager) - [Unit Tests and Storybooks](#unit-tests-and-storybooks) - [General Guidelines for Unit Tests](#general-guidelines-for-unit-tests) - [General Guidelines for Storybooks](#general-guidelines-for-storybooks) @@ -259,6 +262,117 @@ export default MyComponent; Use utilities or Hooks when you need a Reactive state - Avoid making your Component too big. Deconstruct it into smaller Components/Hooks whenever possible +## The new Downloads page + +### Adding a Download Installation Method + +To add a new download installation method, follow these steps: + +1. **Update `INSTALL_METHODS` in `apps/site/util/downloadUtils.tsx`:** + + - Add a new entry to the `INSTALL_METHODS` array. + - Each entry should have the following properties: + - `iconImage`: The React component of the icon image for the installation method. This should be an SVG component stored within `apps/site/components/Icons/InstallationMethod` and must follow the other icon component references (being a `FC` supporting `SVGSVGElement` props). + - Don't forget to add it on the `index.tsx` file from the `InstallationMethod` folder. + - `recommended`: A boolean indicating if this method is recommended. This property is available only for official installation methods. + - `url`: The URL for the installation method. + - `value`: The key of the installation method, which must be unique. + + Example: + + ```javascript + // filepath: /nodejs.org/apps/site/util/downloadUtils.tsx + // See full reference of INSTALL_METHODS within `downloadUtils.tsx` + export const INSTALL_METHODS = [ + // ...existing methods... + { + iconImage: <InstallMethodIcons.YourIconImage width={16} height={16} />, + url: 'https://example.com/install', + value: 'exampleMethod', + }, + ]; + ``` + +2. **Add translation key in `packages/i18n/locales/en.json`:** + + - Add an entry under `layouts.download.codeBox.platformInfo` for the `info` property of the new installation method. + + Example: + + ```json + // filepath: /nodejs.org/packages/i18n/locales/en.json + { + "layouts": { + "download": { + "codeBox": { + "platformInfo": { + "exampleMethod": "Example installation method description." + } + } + } + } + } + ``` + +3. **Update `InstallationMethodLabel` and `InstallationMethod` in `@/types/release.ts`:** + + - Add the new method to the `InstallationMethodLabel` and `InstallationMethod` types. + + Example: + + ```typescript + // filepath: /nodejs.org/apps/site/types/release.ts + export type InstallationMethod = 'exampleMethod' | 'anotherMethod' | ...; + + export const InstallationMethodLabel: Record<InstallationMethod, string> = { + exampleMethod: 'Example Method', + anotherMethod: 'Another Method', + // ...existing methods... + }; + ``` + +4. **Add a snippet in `apps/site/snippets/en/download`:** + + - Create a new file with the same key as the `value` property (e.g., `exampleMethod.bash`). + - Add the installation instructions in this file. + - The snippet file can use JavaScript template syntax and has access to a `props` variable of type `ReleaseContextType`. + + Example: + + ```bash + // filepath: /nodejs.org/apps/site/snippets/en/download/exampleMethod.bash + echo "Installing Node.js version ${props.version} using Example Method" + ``` + +5. **Configure `compatibility` within the `INSTALL_METHODS` object in `downloadUtils.ts`:** + +- Use the `compatibility` property to enable/list the installation method for specific OSs, Node.js version ranges, or architectures/platforms. + +Example: + +```javascript +// filepath: /nodejs.org/apps/site/util/downloadUtils.tsx +// See full reference of compatibility property within `downloadUtils.tsx` +export const INSTALL_METHODS = [ + { + iconImage: 'path/to/icon.svg', + url: 'https://example.com/install', + value: 'exampleMethod', + compatibility: { + os: ['LINUX', 'MAC'], + semver: ['>=14.0.0'], + platform: ['x64', 'arm64'], + }, + }, +]; +``` + +By following these steps, you can successfully add a new download installation method to the Node.js website. + +### Adding a Download Package Manager + +You can add a PACKAGE_MANAGER the same way as adding an INSTALLATION_METHOD (from the section above, "Adding a Download Installation Method") but it should be added to the PACKAGE_MANAGERS object in `apps/site/util/downloadUtils.tsx`. + ## Unit Tests and Storybooks Each new feature or bug fix should be accompanied by a unit test (when deemed valuable). diff --git a/apps/site/components/Downloads/DownloadReleasesTable.tsx b/apps/site/components/Downloads/DownloadReleasesTable.tsx index 2893cca1e776f..0c0acff74e59c 100644 --- a/apps/site/components/Downloads/DownloadReleasesTable.tsx +++ b/apps/site/components/Downloads/DownloadReleasesTable.tsx @@ -1,9 +1,10 @@ import { getTranslations } from 'next-intl/server'; import type { FC } from 'react'; +import LinkWithArrow from '@/components/LinkWithArrow'; import getReleaseData from '@/next-data/releaseData'; +import { BASE_CHANGELOG_URL } from '@/next.constants.mjs'; import { getNodeApiLink } from '@/util/getNodeApiLink'; -import { getNodeJsChangelog } from '@/util/getNodeJsChangelog'; // This is a React Async Server Component // Note that Hooks cannot be used in a RSC async component @@ -17,11 +18,12 @@ const DownloadReleasesTable: FC = async () => { <table id="tbVersions" className="download-table full-width"> <thead> <tr> - <th>Node.js Version</th> - <th>Module Version</th> - <th>Codename</th> - <th>Release Date</th> - <th colSpan={2}>npm</th> + <th>{t('components.downloadReleasesTable.version')}</th> + <th>{t('components.downloadReleasesTable.nApiVersion')}</th> + <th>{t('components.downloadReleasesTable.codename')}</th> + <th>{t('components.downloadReleasesTable.releaseDate')}</th> + <th>{t('components.downloadReleasesTable.npmVersion')}</th> + <th></th> </tr> </thead> <tbody> @@ -35,17 +37,19 @@ const DownloadReleasesTable: FC = async () => { </td> <td data-label="npm">v{release.npm}</td> <td className="download-table-last"> - <a + <LinkWithArrow href={`https://nodejs.org/download/release/${release.versionWithPrefix}/`} > - {t('components.downloadReleasesTable.releases')} - </a> - <a href={getNodeJsChangelog(release.versionWithPrefix)}> - {t('components.downloadReleasesTable.changelog')} - </a> - <a href={getNodeApiLink(release.versionWithPrefix)}> - {t('components.downloadReleasesTable.docs')} - </a> + {t('components.downloadReleasesTable.actions.releases')} + </LinkWithArrow> + + <LinkWithArrow href={`${BASE_CHANGELOG_URL}${release.version}`}> + {t('components.downloadReleasesTable.actions.changelog')} + </LinkWithArrow> + + <LinkWithArrow href={getNodeApiLink(release.versionWithPrefix)}> + {t('components.downloadReleasesTable.actions.docs')} + </LinkWithArrow> </td> </tr> ))} diff --git a/apps/site/components/Downloads/Release/ChangelogLink.tsx b/apps/site/components/Downloads/Release/ChangelogLink.tsx index 740c0adaec12d..ff3e08d616ea9 100644 --- a/apps/site/components/Downloads/Release/ChangelogLink.tsx +++ b/apps/site/components/Downloads/Release/ChangelogLink.tsx @@ -3,8 +3,8 @@ import type { FC, PropsWithChildren } from 'react'; import { useContext } from 'react'; -import LinkWithArrow from '@/components/Downloads/Release/LinkWithArrow'; import Link from '@/components/Link'; +import LinkWithArrow from '@/components/LinkWithArrow'; import { BASE_CHANGELOG_URL } from '@/next.constants.mjs'; import { ReleaseContext } from '@/providers/releaseProvider'; diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index e8a1684aef5f5..70de6d02fc989 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -8,14 +8,13 @@ import AlertBox from '@/components/Common/AlertBox'; import CodeBox from '@/components/Common/CodeBox'; import Skeleton from '@/components/Common/Skeleton'; import Link from '@/components/Link'; +import LinkWithArrow from '@/components/LinkWithArrow'; import { createSval } from '@/next.jsx.compiler.mjs'; import { ReleaseContext, ReleasesContext } from '@/providers/releaseProvider'; import type { ReleaseContextType } from '@/types/release'; import { INSTALL_METHODS } from '@/util/downloadUtils'; import { highlightToHtml } from '@/util/getHighlighter'; -import LinkWithArrow from './LinkWithArrow'; - // Creates a minimal JavaScript interpreter for parsing the JavaScript code from the snippets // Note: that the code runs inside a sandboxed environment and cannot interact with any code outside of the sandbox // It also does not have access to any Global or Window objects, nor it can execute code on the end-user's browser diff --git a/apps/site/components/Icons/Platform/Choco.tsx b/apps/site/components/Icons/InstallationMethod/Choco.tsx similarity index 100% rename from apps/site/components/Icons/Platform/Choco.tsx rename to apps/site/components/Icons/InstallationMethod/Choco.tsx diff --git a/apps/site/components/Icons/Platform/Docker.tsx b/apps/site/components/Icons/InstallationMethod/Docker.tsx similarity index 100% rename from apps/site/components/Icons/Platform/Docker.tsx rename to apps/site/components/Icons/InstallationMethod/Docker.tsx diff --git a/apps/site/components/Icons/Platform/FNM.tsx b/apps/site/components/Icons/InstallationMethod/FNM.tsx similarity index 100% rename from apps/site/components/Icons/Platform/FNM.tsx rename to apps/site/components/Icons/InstallationMethod/FNM.tsx diff --git a/apps/site/components/Icons/Platform/Homebrew.tsx b/apps/site/components/Icons/InstallationMethod/Homebrew.tsx similarity index 100% rename from apps/site/components/Icons/Platform/Homebrew.tsx rename to apps/site/components/Icons/InstallationMethod/Homebrew.tsx diff --git a/apps/site/components/Icons/Platform/NVM.tsx b/apps/site/components/Icons/InstallationMethod/NVM.tsx similarity index 100% rename from apps/site/components/Icons/Platform/NVM.tsx rename to apps/site/components/Icons/InstallationMethod/NVM.tsx diff --git a/apps/site/components/Icons/InstallationMethod/index.ts b/apps/site/components/Icons/InstallationMethod/index.ts new file mode 100644 index 0000000000000..6e2a87de11aee --- /dev/null +++ b/apps/site/components/Icons/InstallationMethod/index.ts @@ -0,0 +1,7 @@ +import Choco from '@/components/Icons/InstallationMethod/Choco'; +import Docker from '@/components/Icons/InstallationMethod/Docker'; +import FNM from '@/components/Icons/InstallationMethod/FNM'; +import Homebrew from '@/components/Icons/InstallationMethod/Homebrew'; +import NVM from '@/components/Icons/InstallationMethod/NVM'; + +export default { Choco, Docker, FNM, Homebrew, NVM }; diff --git a/apps/site/components/Icons/Platform/index.ts b/apps/site/components/Icons/Platform/index.ts deleted file mode 100644 index 8e362d2bdaf6d..0000000000000 --- a/apps/site/components/Icons/Platform/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -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'; - -export default { Choco, Docker, FNM, Homebrew, NVM }; diff --git a/apps/site/components/Downloads/Release/LinkWithArrow.tsx b/apps/site/components/LinkWithArrow.tsx similarity index 100% rename from apps/site/components/Downloads/Release/LinkWithArrow.tsx rename to apps/site/components/LinkWithArrow.tsx diff --git a/apps/site/components/__design__/platform-logos.stories.tsx b/apps/site/components/__design__/platform-logos.stories.tsx index 18f1adfd45d19..87c773c121066 100644 --- a/apps/site/components/__design__/platform-logos.stories.tsx +++ b/apps/site/components/__design__/platform-logos.stories.tsx @@ -1,7 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; +import InstallMethodIcons from '@/components/Icons/InstallationMethod'; import OSIcons from '@/components/Icons/OperatingSystem'; -import PlatformIcons from '@/components/Icons/Platform'; export const PlatformLogos: StoryObj = { render: () => ( @@ -13,12 +13,12 @@ export const PlatformLogos: StoryObj = { <OSIcons.AIX width={64} height={64} /> </div> <div className="flex flex-col items-center gap-4"> - <PlatformIcons.Docker width={64} height={64} /> - <PlatformIcons.Homebrew width={64} height={64} /> - <PlatformIcons.NVM width={64} height={64} /> + <InstallMethodIcons.Docker width={64} height={64} /> + <InstallMethodIcons.Homebrew width={64} height={64} /> + <InstallMethodIcons.NVM width={64} height={64} /> </div> <div className="flex flex-col items-center gap-4"> - <PlatformIcons.Choco width={64} height={64} /> + <InstallMethodIcons.Choco width={64} height={64} /> </div> </div> ), diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index 88cd1cf3e9341..b11472b589d77 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -1,4 +1,5 @@ import { importLocale } from '@node-core/website-i18n'; +import defaultMessages from '@node-core/website-i18n/locales/en.json'; import { getRequestConfig } from 'next-intl/server'; import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; @@ -7,12 +8,6 @@ import deepMerge from './util/deepMerge'; // Loads the Application Locales/Translations Dynamically const loadLocaleDictionary = async (locale: string) => { - // This enables HMR on the English Locale, so that instant refresh - // happens while we add/change texts on the source locale - const defaultMessages = await import( - '@node-core/website-i18n/locales/en.json' - ).then(f => f.default); - if (locale === defaultLocale.code) { return defaultMessages; } @@ -20,7 +15,7 @@ const loadLocaleDictionary = async (locale: string) => { if (availableLocaleCodes.includes(locale)) { // Other languages don't really require HMR as they will never be development languages // so we can load them dynamically - const messages = await importLocale(locale); + const messages = importLocale(locale); // Use default messages as fallback return deepMerge(defaultMessages, messages); diff --git a/apps/site/next.mdx.use.client.mjs b/apps/site/next.mdx.use.client.mjs index 40b5959d455ca..88d11389a9ec9 100644 --- a/apps/site/next.mdx.use.client.mjs +++ b/apps/site/next.mdx.use.client.mjs @@ -7,7 +7,6 @@ import DownloadLink from './components/Downloads/DownloadLink'; import BlogPostLink from './components/Downloads/Release/BlogPostLink'; import ChangelogLink from './components/Downloads/Release/ChangelogLink'; import InstallationMethodDropdown from './components/Downloads/Release/InstallationMethodDropdown'; -import LinkWithArrow from './components/Downloads/Release/LinkWithArrow'; import OperatingSystemDropdown from './components/Downloads/Release/OperatingSystemDropdown'; import PackageManagerDropdown from './components/Downloads/Release/PackageManagerDropdown'; import PlatformDropdown from './components/Downloads/Release/PlatformDropdown'; @@ -15,6 +14,7 @@ import PrebuiltDownloadButtons from './components/Downloads/Release/PrebuiltDown import ReleaseCodeBox from './components/Downloads/Release/ReleaseCodeBox'; import VersionDropdown from './components/Downloads/Release/VersionDropdown'; import Link from './components/Link'; +import LinkWithArrow from './components/LinkWithArrow'; import MDXCodeBox from './components/MDX/CodeBox'; import MDXCodeTabs from './components/MDX/CodeTabs'; import MDXImage from './components/MDX/Image'; diff --git a/apps/site/pages/en/about/previous-releases.mdx b/apps/site/pages/en/about/previous-releases.mdx index 14488ef23cf68..0ad5938f64e67 100644 --- a/apps/site/pages/en/about/previous-releases.mdx +++ b/apps/site/pages/en/about/previous-releases.mdx @@ -14,12 +14,27 @@ Production applications should only use _Active LTS_ or _Maintenance LTS_ releas ![Releases](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) -Full details regarding Node.js release schedule are available [on GitHub](https://github.com/nodejs/release#release-schedule). +Full details regarding the Node.js release schedule are available [on GitHub](https://github.com/nodejs/release#release-schedule). ### Commercial Support -Commercial support for versions past Maintenance phase is available through our OpenJS Ecosystem Sustainability Program partner [HeroDevs](https://herodevs.com/). +Commercial support for versions past the Maintenance phase is available through our OpenJS Ecosystem Sustainability Program partner [HeroDevs](https://herodevs.com/). -## Looking for latest release of a version branch? +## Looking for the latest release of a version branch? <DownloadReleasesTable /> + +## Official versus Community + +The Node.js website offers numerous installation methods that allow Node.js to be installed in a non-interactive manner, +for example, via CLIs, OS package managers (such as `apt`), or Node.js version managers (such as `nvm`). + +The Node.js project, in an attempt to popularize and advertise community efforts, has introduced a new Downloads page that lists both Official and Community installation methods, providing more versatility and options for users. +With this change, we introduced the concept of "Official" and "Community" installation methods. In order to be considered "Official", the installation method must meet the following requirements: + +| Requirements | +| ---------------------------------------------------------------------------------------------------------------------------------- | +| New Node.js releases must be available simultaneously upon the official release | +| Project maintainers have a close relationship with Node.js, including direct communication | +| Installation method downloads the official binaries bundled by the Node.js project | +| Installation method does **not** build from source when binaries are available, or alter the official binaries provided by Node.js | diff --git a/apps/site/util/__tests__/getNodeJsChangelog.test.mjs b/apps/site/util/__tests__/getNodeJsChangelog.test.mjs deleted file mode 100644 index d225ee21179fe..0000000000000 --- a/apps/site/util/__tests__/getNodeJsChangelog.test.mjs +++ /dev/null @@ -1,51 +0,0 @@ -import { getNodeJsChangelog } from '@/util/getNodeJsChangelog'; - -describe('getNodeJsChangelog', () => { - it('returns the correct changelog URL for major version >= 4', () => { - const version = '14.2.0'; - const expectedUrl = - 'https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V14.md#14.2.0'; - - const result = getNodeJsChangelog(version); - - expect(result).toBe(expectedUrl); - }); - - it('returns the correct changelog URL for major version >= 1', () => { - const version = '1.8.3'; - const expectedUrl = - 'https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_IOJS.md#1.8.3'; - - const result = getNodeJsChangelog(version); - - expect(result).toBe(expectedUrl); - }); - - it('returns the correct changelog URL for minor version 12 or 10', () => { - const version1 = '6.12.0'; - const expectedUrl1 = - 'https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V6.md#6.12.0'; - - const result1 = getNodeJsChangelog(version1); - - expect(result1).toBe(expectedUrl1); - - const version2 = '8.10.0'; - const expectedUrl2 = - 'https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V8.md#8.10.0'; - - const result2 = getNodeJsChangelog(version2); - - expect(result2).toBe(expectedUrl2); - }); - - it('returns the correct changelog URL for other versions', () => { - const version = '0.12.7'; - const expectedUrl = - 'https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V012.md#0.12.7'; - - const result = getNodeJsChangelog(version); - - expect(result).toBe(expectedUrl); - }); -}); diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index 7b756641f4d3c..4720ed990a156 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -1,9 +1,9 @@ import satisfies from 'semver/functions/satisfies'; import type { SelectValue } from '@/components/Common/Select'; +import InstallMethodIcons from '@/components/Icons/InstallationMethod'; import OSIcons from '@/components/Icons/OperatingSystem'; import PackageManagerIcons from '@/components/Icons/PackageManager'; -import PlatformIcons from '@/components/Icons/Platform'; import type { NodeReleaseStatus } from '@/types'; import type * as Types from '@/types/release'; import type { UserOS, UserPlatform } from '@/types/userOS'; @@ -161,7 +161,7 @@ export const INSTALL_METHODS: Array< label: InstallationMethodLabel.NVM, value: 'NVM', compatibility: { os: ['MAC', 'LINUX', 'OTHER'] }, - iconImage: <PlatformIcons.NVM width={16} height={16} />, + iconImage: <InstallMethodIcons.NVM width={16} height={16} />, recommended: true, url: 'https://github.com/nvm-sh/nvm', info: 'layouts.download.codeBox.platformInfo.nvm', @@ -170,7 +170,7 @@ export const INSTALL_METHODS: Array< label: InstallationMethodLabel.FNM, value: 'FNM', compatibility: { os: ['MAC', 'LINUX', 'WIN'] }, - iconImage: <PlatformIcons.FNM width={16} height={16} />, + iconImage: <InstallMethodIcons.FNM width={16} height={16} />, url: 'https://github.com/Schniz/fnm', info: 'layouts.download.codeBox.platformInfo.fnm', }, @@ -178,7 +178,7 @@ export const INSTALL_METHODS: Array< label: InstallationMethodLabel.BREW, value: 'BREW', compatibility: { os: ['MAC', 'LINUX'], releases: ['Current', 'LTS'] }, - iconImage: <PlatformIcons.Homebrew width={16} height={16} />, + iconImage: <InstallMethodIcons.Homebrew width={16} height={16} />, url: 'https://brew.sh/', info: 'layouts.download.codeBox.platformInfo.brew', }, @@ -186,7 +186,7 @@ export const INSTALL_METHODS: Array< label: InstallationMethodLabel.CHOCO, value: 'CHOCO', compatibility: { os: ['WIN'] }, - iconImage: <PlatformIcons.Choco width={16} height={16} />, + iconImage: <InstallMethodIcons.Choco width={16} height={16} />, url: 'https://chocolatey.org/', info: 'layouts.download.codeBox.platformInfo.choco', }, @@ -194,7 +194,7 @@ export const INSTALL_METHODS: Array< label: InstallationMethodLabel.DOCKER, value: 'DOCKER', compatibility: { os: ['WIN', 'MAC', 'LINUX'] }, - iconImage: <PlatformIcons.Docker width={16} height={16} />, + iconImage: <InstallMethodIcons.Docker width={16} height={16} />, recommended: true, url: 'https://docs.docker.com/get-started/get-docker/', info: 'layouts.download.codeBox.platformInfo.docker', diff --git a/apps/site/util/getNodeJsChangelog.ts b/apps/site/util/getNodeJsChangelog.ts deleted file mode 100644 index 9b3b7d7f1fba4..0000000000000 --- a/apps/site/util/getNodeJsChangelog.ts +++ /dev/null @@ -1,51 +0,0 @@ -import semVer from 'semver'; - -/** - * Returns the URL of the Node.js changelog for the specified version. - * - * @param version The version of Node.js to get the changelog for. - * @returns The URL of the Node.js changelog for the specified version. - */ -export const getNodeJsChangelog = (version: string): string => { - const changelogsUrl = - 'https://github.com/nodejs/node/blob/main/doc/changelogs'; - - // Parse the version string and get the major and minor versions - const cleanVersion = semVer.clean(version) as string; - const majorVersion = semVer.major(cleanVersion); - const minorVersion = semVer.minor(cleanVersion); - - // Determine the URL of the changelog based on the version - if (majorVersion >= 4) { - return `${changelogsUrl}/CHANGELOG_V${majorVersion}.md#${cleanVersion}`; - } - - if (majorVersion >= 1) { - return `${changelogsUrl}/CHANGELOG_IOJS.md#${cleanVersion}`; - } - - if (minorVersion === 12 || minorVersion === 10) { - return `${changelogsUrl}/CHANGELOG_V${majorVersion}${minorVersion}.md#${cleanVersion}`; - } - - return `https://github.com/nodejs/node-v0.x-archive/blob/${version}/ChangeLog`; -}; - -export const getNodeJsChangelogAuthor = (changelog: string) => { - // looking for the @author part of the release header, eg: - // ## 2016-03-08, Version 5.8.0 (Stable). @Fishrock123 - // ## 2015-10-13, Version 4.2.1 'Argon' (LTS), @jasnell - // ## 2015-09-08, Version 4.0.0 (Stable), @rvagg - const [, changelogAuthor] = - changelog.match(/^## .*? \([^)]+\)[,.] @(\S+)/m) || []; - - return changelogAuthor || 'The Node.js Project'; -}; - -export const getNodeJsChangelogSlug = (changelog: string) => { - // looking for the release header eg: - // ## 2016-03-08, Version 5.8.0 (Stable) - const [, changelogHeading] = changelog.match(/^## (.*)$/m) || []; - - return changelogHeading || ''; -}; diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index b26a0ab739471..9f56b5c8fa6f9 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -138,9 +138,16 @@ } }, "downloadReleasesTable": { - "changelog": "Changelog", - "releases": "Releases", - "docs": "Docs" + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "Codename", + "releaseDate": "Released at", + "actions": { + "changelog": "Changelog", + "releases": "Releases", + "docs": "Docs" + } }, "pagination": { "next": "Next", From 90719ac015d63338e50f6efe9690fee4be3e8191 Mon Sep 17 00:00:00 2001 From: Michael Esteban <mickel13@gmail.com> Date: Tue, 7 Jan 2025 18:30:53 +1000 Subject: [PATCH 0242/1385] chore: bump @storybook/addon-webpack5-compiler-swc from 1.0.5 to 2.0.0 (#7388) chore: update SWC configuration for TypeScript support & bump addon-webpack5-compiler-swc --- apps/site/.storybook/main.ts | 14 +++++++++++++- apps/site/package.json | 2 +- package-lock.json | 9 ++++----- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/apps/site/.storybook/main.ts b/apps/site/.storybook/main.ts index 5fe13732dc295..f6b01fc299b9a 100644 --- a/apps/site/.storybook/main.ts +++ b/apps/site/.storybook/main.ts @@ -11,7 +11,19 @@ const config: StorybookConfig = { typescript: { reactDocgen: false, check: false }, core: { disableTelemetry: true, disableWhatsNewNotifications: true }, framework: '@storybook/react-webpack5', - swc: () => ({ jsc: { transform: { react: { runtime: 'automatic' } } } }), + swc: () => ({ + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + }, + transform: { + react: { + runtime: 'automatic', + }, + }, + }, + }), addons: [ '@storybook/addon-webpack5-compiler-swc', '@storybook/addon-controls', diff --git a/apps/site/package.json b/apps/site/package.json index a0073ca09e9de..ffe43f6ce390e 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -83,7 +83,7 @@ "@storybook/addon-styling-webpack": "^1.0.1", "@storybook/addon-themes": "^8.4.6", "@storybook/addon-viewport": "^8.4.6", - "@storybook/addon-webpack5-compiler-swc": "^1.0.5", + "@storybook/addon-webpack5-compiler-swc": "^2.0.0", "@storybook/react-webpack5": "^8.4.6", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.1.0", diff --git a/package-lock.json b/package-lock.json index 569c9367d9c92..b1ce683922363 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,7 +94,7 @@ "@storybook/addon-styling-webpack": "^1.0.1", "@storybook/addon-themes": "^8.4.6", "@storybook/addon-viewport": "^8.4.6", - "@storybook/addon-webpack5-compiler-swc": "^1.0.5", + "@storybook/addon-webpack5-compiler-swc": "^2.0.0", "@storybook/react-webpack5": "^8.4.6", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.1.0", @@ -4930,11 +4930,10 @@ } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-1.0.5.tgz", - "integrity": "sha512-1NlM3noit2vA22OyWb8Ma2lhcEKCS1Snv2kr+EkaVABUqNDfVc9AD/GgYQhF7F/2CoF5N2JU7uzXDzFHd5TzZg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-2.0.0.tgz", + "integrity": "sha512-8lL6vzXMgBFYQ89TFNPG4KjQ1WcRjKOubCTsnv0lRWC6KbF1ipyMFiEDpHOxxHbKhfk2kvQKZVqt8KLNV5zwcg==", "dev": true, - "license": "MIT", "dependencies": { "@swc/core": "^1.7.3", "swc-loader": "^0.2.3" From 7a20bd20a6aa1475f7b02d4f242b59c1cc31ea1c Mon Sep 17 00:00:00 2001 From: Marco Ippolito <marcoippolito54@gmail.com> Date: Tue, 7 Jan 2025 18:44:03 +0100 Subject: [PATCH 0243/1385] Blog: v23.6.0 release post (#7392) Refs: https://github.com/nodejs/node/pull/56450 --- apps/site/pages/en/blog/release/v23.6.0.md | 169 +++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.6.0.md diff --git a/apps/site/pages/en/blog/release/v23.6.0.md b/apps/site/pages/en/blog/release/v23.6.0.md new file mode 100644 index 0000000000000..41f466ebc9960 --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.6.0.md @@ -0,0 +1,169 @@ +--- +date: '2025-01-07T17:33:37.965Z' +category: release +title: Node v23.6.0 (Current) +layout: blog-post +author: Marco Ippolito +--- + +## 2025-01-07, Version 23.6.0 (Current), @marco-ippolito + +### Notable Changes + +#### Unflagging --experimental-strip-types + +This release enables the flag `--experimental-strip-types` by default. +Node.js will be able to execute TypeScript files without additional configuration: + +```bash +node file.ts +``` + +There are some limitations in the supported syntax documented at <https://nodejs.org/api/typescript.html#type-stripping> +This feature is experimental and is subject to change. + +Contributed by Marco Ippolito in [#56350](https://github.com/nodejs/node/pull/56350) + +### Other Notable Changes + +- \[[`c1023284c3`](https://github.com/nodejs/node/commit/c1023284c3)] - **(SEMVER-MINOR)** **lib**: add typescript support to STDIN eval (Marco Ippolito) [#56359](https://github.com/nodejs/node/pull/56359) +- \[[`8dc39e5e2e`](https://github.com/nodejs/node/commit/8dc39e5e2e)] - **(SEMVER-MINOR)** **process**: add process.ref() and process.unref() methods (James M Snell) [#56400](https://github.com/nodejs/node/pull/56400) +- \[[`8b20cc212b`](https://github.com/nodejs/node/commit/8b20cc212b)] - **(SEMVER-MINOR)** **worker**: add eval ts input (Marco Ippolito) [#56394](https://github.com/nodejs/node/pull/56394) + +### Commits + +- \[[`7b4d288116`](https://github.com/nodejs/node/commit/7b4d288116)] - **assert**: make partialDeepStrictEqual throw when comparing \[0] with \[-0] (Giovanni) [#56237](https://github.com/nodejs/node/pull/56237) +- \[[`0ec2ed0a0b`](https://github.com/nodejs/node/commit/0ec2ed0a0b)] - **build**: fix GN build for ngtcp2 (Cheng) [#56300](https://github.com/nodejs/node/pull/56300) +- \[[`ab3e64630b`](https://github.com/nodejs/node/commit/ab3e64630b)] - **build**: test macos-13 on GitHub actions (Michaël Zasso) [#56307](https://github.com/nodejs/node/pull/56307) +- \[[`46fb69daca`](https://github.com/nodejs/node/commit/46fb69daca)] - **build**: build v8 with -fvisibility=hidden on macOS (Joyee Cheung) [#56275](https://github.com/nodejs/node/pull/56275) +- \[[`9d4930b993`](https://github.com/nodejs/node/commit/9d4930b993)] - **deps**: update simdutf to 5.7.2 (Node.js GitHub Bot) [#56388](https://github.com/nodejs/node/pull/56388) +- \[[`6afe36397e`](https://github.com/nodejs/node/commit/6afe36397e)] - **deps**: update amaro to 0.2.1 (Node.js GitHub Bot) [#56390](https://github.com/nodejs/node/pull/56390) +- \[[`195990a0ee`](https://github.com/nodejs/node/commit/195990a0ee)] - **deps**: update googletest to 7d76a23 (Node.js GitHub Bot) [#56387](https://github.com/nodejs/node/pull/56387) +- \[[`b9c0852fc6`](https://github.com/nodejs/node/commit/b9c0852fc6)] - **deps**: update googletest to e54519b (Node.js GitHub Bot) [#56370](https://github.com/nodejs/node/pull/56370) +- \[[`eaefd90128`](https://github.com/nodejs/node/commit/eaefd90128)] - **deps**: update ngtcp2 to 1.10.0 (Node.js GitHub Bot) [#56334](https://github.com/nodejs/node/pull/56334) +- \[[`06de0c65cf`](https://github.com/nodejs/node/commit/06de0c65cf)] - **deps**: update simdutf to 5.7.0 (Node.js GitHub Bot) [#56332](https://github.com/nodejs/node/pull/56332) +- \[[`03df76cdec`](https://github.com/nodejs/node/commit/03df76cdec)] - **doc**: add example for piping ReadableStream (Gabriel Schulhof) [#56415](https://github.com/nodejs/node/pull/56415) +- \[[`38ce249b07`](https://github.com/nodejs/node/commit/38ce249b07)] - **doc**: expand description of `parseArg`'s `default` (Kevin Gibbons) [#54431](https://github.com/nodejs/node/pull/54431) +- \[[`ecc718cef2`](https://github.com/nodejs/node/commit/ecc718cef2)] - **doc**: use `<ul>` instead of `<ol>` in `SECURITY.md` (Antoine du Hamel) [#56346](https://github.com/nodejs/node/pull/56346) +- \[[`3db4809130`](https://github.com/nodejs/node/commit/3db4809130)] - **doc**: clarify that WASM is trusted (Matteo Collina) [#56345](https://github.com/nodejs/node/pull/56345) +- \[[`384ccbacd5`](https://github.com/nodejs/node/commit/384ccbacd5)] - **doc**: update macOS and Xcode versions for releases (Michaël Zasso) [#56337](https://github.com/nodejs/node/pull/56337) +- \[[`3943986e88`](https://github.com/nodejs/node/commit/3943986e88)] - **doc**: fix the `crc32` documentation (Kevin Toshihiro Uehara) [#55898](https://github.com/nodejs/node/pull/55898) +- \[[`710b8fc6ed`](https://github.com/nodejs/node/commit/710b8fc6ed)] - **doc**: add entry to changelog about SQLite Session Extension (Bart Louwers) [#56318](https://github.com/nodejs/node/pull/56318) +- \[[`4c978b4d77`](https://github.com/nodejs/node/commit/4c978b4d77)] - **doc**: fix links in `module.md` (Antoine du Hamel) [#56283](https://github.com/nodejs/node/pull/56283) +- \[[`cdb631efe7`](https://github.com/nodejs/node/commit/cdb631efe7)] - **esm**: add experimental support for addon modules (Chengzhong Wu) [#55844](https://github.com/nodejs/node/pull/55844) +- \[[`db83d2f0ee`](https://github.com/nodejs/node/commit/db83d2f0ee)] - _**Revert**_ "**events**: add hasEventListener util for validate" (origranot) [#56282](https://github.com/nodejs/node/pull/56282) +- \[[`c2baae84ce`](https://github.com/nodejs/node/commit/c2baae84ce)] - **lib**: refactor execution.js (Marco Ippolito) [#56358](https://github.com/nodejs/node/pull/56358) +- \[[`c1023284c3`](https://github.com/nodejs/node/commit/c1023284c3)] - **(SEMVER-MINOR)** **lib**: add typescript support to STDIN eval (Marco Ippolito) [#56359](https://github.com/nodejs/node/pull/56359) +- \[[`e4b795ec4a`](https://github.com/nodejs/node/commit/e4b795ec4a)] - **lib**: optimize `prepareStackTrace` on builtin frames (Chengzhong Wu) [#56299](https://github.com/nodejs/node/pull/56299) +- \[[`d1b009b623`](https://github.com/nodejs/node/commit/d1b009b623)] - **lib**: suppress source map lookup exceptions (Chengzhong Wu) [#56299](https://github.com/nodejs/node/pull/56299) +- \[[`c2837f0805`](https://github.com/nodejs/node/commit/c2837f0805)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#56342](https://github.com/nodejs/node/pull/56342) +- \[[`72336233f2`](https://github.com/nodejs/node/commit/72336233f2)] - **meta**: move MoLow to TSC regular member (Moshe Atlow) [#56276](https://github.com/nodejs/node/pull/56276) +- \[[`4f77920a9d`](https://github.com/nodejs/node/commit/4f77920a9d)] - **module**: fix async resolution error within the sync `findPackageJSON` (Jacob Smith) [#56382](https://github.com/nodejs/node/pull/56382) +- \[[`e5ba216501`](https://github.com/nodejs/node/commit/e5ba216501)] - **(SEMVER-MINOR)** **module**: unflag --experimental-strip-types (Marco Ippolito) [#56350](https://github.com/nodejs/node/pull/56350) +- \[[`959f133a22`](https://github.com/nodejs/node/commit/959f133a22)] - **module**: support eval with ts syntax detection (Marco Ippolito) [#56285](https://github.com/nodejs/node/pull/56285) +- \[[`717cfa4fac`](https://github.com/nodejs/node/commit/717cfa4fac)] - **module**: use buffer.toString base64 (Chengzhong Wu) [#56315](https://github.com/nodejs/node/pull/56315) +- \[[`c2f4d8d688`](https://github.com/nodejs/node/commit/c2f4d8d688)] - **node-api**: define version 10 (Gabriel Schulhof) [#55676](https://github.com/nodejs/node/pull/55676) +- \[[`417a8ebdec`](https://github.com/nodejs/node/commit/417a8ebdec)] - **node-api**: remove deprecated attribute from napi_module_register (Vladimir Morozov) [#56162](https://github.com/nodejs/node/pull/56162) +- \[[`8dc39e5e2e`](https://github.com/nodejs/node/commit/8dc39e5e2e)] - **(SEMVER-MINOR)** **process**: add process.ref() and process.unref() methods (James M Snell) [#56400](https://github.com/nodejs/node/pull/56400) +- \[[`d194f1ab5f`](https://github.com/nodejs/node/commit/d194f1ab5f)] - **sqlite**: pass conflict type to conflict resolution handler (Bart Louwers) [#56352](https://github.com/nodejs/node/pull/56352) +- \[[`29f5d70452`](https://github.com/nodejs/node/commit/29f5d70452)] - **src**: use v8::LocalVector consistently with other minor cleanups (James M Snell) [#56417](https://github.com/nodejs/node/pull/56417) +- \[[`2a5543b78e`](https://github.com/nodejs/node/commit/2a5543b78e)] - **src**: use starts_with in fs_permission.cc (ishabi) [#55811](https://github.com/nodejs/node/pull/55811) +- \[[`3a3f5c9a64`](https://github.com/nodejs/node/commit/3a3f5c9a64)] - **stream**: validate undefined sizeAlgorithm in WritableStream (Jason Zhang) [#56067](https://github.com/nodejs/node/pull/56067) +- \[[`6e6f6b071a`](https://github.com/nodejs/node/commit/6e6f6b071a)] - **test**: add ts eval snapshots (Marco Ippolito) [#56358](https://github.com/nodejs/node/pull/56358) +- \[[`8a87e39052`](https://github.com/nodejs/node/commit/8a87e39052)] - **test**: remove empty lines from snapshots (Marco Ippolito) [#56358](https://github.com/nodejs/node/pull/56358) +- \[[`510649f617`](https://github.com/nodejs/node/commit/510649f617)] - **test**: use unusual chars in the path to ensure our tests are robust (Antoine du Hamel) [#48409](https://github.com/nodejs/node/pull/48409) +- \[[`54f6d681a0`](https://github.com/nodejs/node/commit/54f6d681a0)] - **test**: remove flaky designation (Luigi Pinca) [#56369](https://github.com/nodejs/node/pull/56369) +- \[[`20ace0bb01`](https://github.com/nodejs/node/commit/20ace0bb01)] - **test**: remove test-worker-arraybuffer-zerofill flaky designation (Luigi Pinca) [#56364](https://github.com/nodejs/node/pull/56364) +- \[[`b757e40525`](https://github.com/nodejs/node/commit/b757e40525)] - **test**: remove test-net-write-fully-async-hex-string flaky designation (Luigi Pinca) [#56365](https://github.com/nodejs/node/pull/56365) +- \[[`64556baddc`](https://github.com/nodejs/node/commit/64556baddc)] - **test**: improve abort signal dropping test (Edy Silva) [#56339](https://github.com/nodejs/node/pull/56339) +- \[[`accbdad329`](https://github.com/nodejs/node/commit/accbdad329)] - **test**: enable ts test on win arm64 (Marco Ippolito) [#56349](https://github.com/nodejs/node/pull/56349) +- \[[`4188ee00d1`](https://github.com/nodejs/node/commit/4188ee00d1)] - **test**: deflake test-watch-file-shared-dependency (Luigi Pinca) [#56344](https://github.com/nodejs/node/pull/56344) +- \[[`079cee0609`](https://github.com/nodejs/node/commit/079cee0609)] - **test**: skip `test-sqlite-extensions` when SQLite is not built by us (Antoine du Hamel) [#56341](https://github.com/nodejs/node/pull/56341) +- \[[`96a38044ee`](https://github.com/nodejs/node/commit/96a38044ee)] - **test**: increase spin for eventloop test on s390 (Michael Dawson) [#56228](https://github.com/nodejs/node/pull/56228) +- \[[`c062ffc242`](https://github.com/nodejs/node/commit/c062ffc242)] - **test**: add coverage for pipeline (jakecastelli) [#56278](https://github.com/nodejs/node/pull/56278) +- \[[`d4404f0d0e`](https://github.com/nodejs/node/commit/d4404f0d0e)] - **test**: migrate message eval tests from Python to JS (Yiyun Lei) [#50482](https://github.com/nodejs/node/pull/50482) +- \[[`9369942745`](https://github.com/nodejs/node/commit/9369942745)] - **test**: check typescript loader (Marco Ippolito) [#54657](https://github.com/nodejs/node/pull/54657) +- \[[`4930244484`](https://github.com/nodejs/node/commit/4930244484)] - **test**: remove async-hooks/test-writewrap flaky designation (Luigi Pinca) [#56048](https://github.com/nodejs/node/pull/56048) +- \[[`7819bfec69`](https://github.com/nodejs/node/commit/7819bfec69)] - **test**: deflake test-esm-loader-hooks-inspect-brk (Luigi Pinca) [#56050](https://github.com/nodejs/node/pull/56050) +- \[[`e9762bf005`](https://github.com/nodejs/node/commit/e9762bf005)] - **test**: add test case for listeners (origranot) [#56282](https://github.com/nodejs/node/pull/56282) +- \[[`c1627e9d19`](https://github.com/nodejs/node/commit/c1627e9d19)] - **test**: make `test-permission-sqlite-load-extension` more robust (Antoine du Hamel) [#56295](https://github.com/nodejs/node/pull/56295) +- \[[`97d854e1d5`](https://github.com/nodejs/node/commit/97d854e1d5)] - **test_runner,cli**: mark test isolation as stable (Colin Ihrig) [#56298](https://github.com/nodejs/node/pull/56298) +- \[[`a4f336fdd4`](https://github.com/nodejs/node/commit/a4f336fdd4)] - **tools**: fix `require-common-first` lint rule from subfolder (Antoine du Hamel) [#56325](https://github.com/nodejs/node/pull/56325) +- \[[`dc3dafcb50`](https://github.com/nodejs/node/commit/dc3dafcb50)] - **tools**: add release line label when opening release proposal (Antoine du Hamel) [#56317](https://github.com/nodejs/node/pull/56317) +- \[[`2a5ac932ac`](https://github.com/nodejs/node/commit/2a5ac932ac)] - **url**: use resolved path to convert UNC paths to URL (Antoine du Hamel) [#56302](https://github.com/nodejs/node/pull/56302) +- \[[`8b20cc212b`](https://github.com/nodejs/node/commit/8b20cc212b)] - **(SEMVER-MINOR)** **worker**: add eval ts input (Marco Ippolito) [#56394](https://github.com/nodejs/node/pull/56394) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.6.0/node-v23.6.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.6.0/node-v23.6.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.6.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.6.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.6.0/node-v23.6.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.6.0/node-v23.6.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.6.0/node-v23.6.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.6.0/node-v23.6.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.6.0/node-v23.6.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.6.0/node-v23.6.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.6.0/node-v23.6.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.6.0/node-v23.6.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.6.0/node-v23.6.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.6.0/node-v23.6.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.6.0/ \ +Documentation: https://nodejs.org/docs/v23.6.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +6320c05068ec7d34997d11a343eab0360ff7c59711c69116446056918c868b45 node-v23.6.0-aix-ppc64.tar.gz +d45c16ed0206db0fa92d8ca65d60797140f8bfa2a9e454e41cec6a4f0ba957a6 node-v23.6.0-arm64.msi +93e84485e41e7f35246e11329ea920ee5a8e7e12e90bfcea2f8205953c869bc2 node-v23.6.0-darwin-arm64.tar.gz +764857a0ab3cb956f16baeb05f89007d9ee1d9daa70c98d45005da0a35e769a0 node-v23.6.0-darwin-arm64.tar.xz +009f4b4955ddbebaad86e306ad4c65b568f06fd76d855e7fd617eb2748cd5f2d node-v23.6.0-darwin-x64.tar.gz +ebc91565c93053b4fd9d04770960752328091b40df123c8ef8a7d4c61ae05934 node-v23.6.0-darwin-x64.tar.xz +f0c76e11bfbc9ca671a726c212946f8be3ba5608ecc5eff75032cb25fbf2a6a3 node-v23.6.0-headers.tar.gz +d748448b26bba978acd274eb0a04c8e883d4fbc156dbc6b7ea5b6dedd0e6a74f node-v23.6.0-headers.tar.xz +f851e86f5022949a02329230fd1cf374a7485bf8826596b090c4c950698b9e0d node-v23.6.0-linux-arm64.tar.gz +7554f6ed6171d0e25938978a67868cadb6eed6f0393ed72b6aaf8f1195028ec2 node-v23.6.0-linux-arm64.tar.xz +60a319b55afa11c646066a6c1f1a368d586e40bd27fa38c855acccae7f262065 node-v23.6.0-linux-armv7l.tar.gz +c2f09d6f7f7d1c7d0a9fa489bf892405c3edd7edefdff3e864584cf23d869ac4 node-v23.6.0-linux-armv7l.tar.xz +6fcf84abbd9fa95856664e3cbd28b8359dde7d46b6831dc8d240184285fea93a node-v23.6.0-linux-ppc64le.tar.gz +9b1ce4f04edd33f9cc356ca5af54eb1264b3f4a1de58c246c41d34518df16903 node-v23.6.0-linux-ppc64le.tar.xz +3d3a5fe270de4f0e5f3b3c4a9023d9fdbf3c269656e37c4b52c17f2ad67f547c node-v23.6.0-linux-s390x.tar.gz +3cfd38f7ee8578d9c1358a86e648ea8084c5f6afc379b4bd4c5676275f07794e node-v23.6.0-linux-s390x.tar.xz +14a2b49629e74820bd6d94b92498f658774e3819bb71b0cb8b3717d9c0c81b70 node-v23.6.0-linux-x64.tar.gz +90e3c96e2464978e8309db2e8bb7c5c1b606f85afa80314195f01c30eccf4ffc node-v23.6.0-linux-x64.tar.xz +cfe71d64ded340cae85cc734645a4aacab2355186ec3a45f43953f2af71ad859 node-v23.6.0.pkg +9cd2aaa44d7d658833bb03ab4ce4c57273ba4c9b716094c931c709e6948fd71d node-v23.6.0.tar.gz +d6f3f136dc26d61bd1bafae2a9fc0d5e7f713a6f0067c5e10351bc7ca6574dcd node-v23.6.0.tar.xz +f3cbe62de5d09e95ec574af1b4004da34590c8c32720057b8fd3d5dfbd4de0b2 node-v23.6.0-win-arm64.7z +e553f0841582570875b667aaa0bd9b94c37e558c909cab9505a85db23f3a7c65 node-v23.6.0-win-arm64.zip +f68d5ac65b8b5607eb5cc613c7b70c5bae09cad827e5a9c35beacfbeace92911 node-v23.6.0-win-x64.7z +9daeb5894273b820fb3bf2485aa433ff9653feb2c1a3daebd1a06b0e4fbe4309 node-v23.6.0-win-x64.zip +d6113ec6743a5da957c9cd47189942c5e7d5a2304d1e12e3cdf255f1cfb84d43 node-v23.6.0-x64.msi +f580fef0a0b05a0c191196c6dbca1b46b6eda8081b0be20f4db205048de26a7a win-arm64/node.exe +46a85ee5432885387948e02ced2499975b34cc2080ea3ed4e99b6c7323d38d74 win-arm64/node.lib +bd85da81c92e27372a1a1aff63f3950407db919ad7a3fcdb176ce66bbd5faecd win-arm64/node_pdb.7z +466beaa7ec64d742340711c04f936f2ec49af16aaf15bcc85a62ba416e181620 win-arm64/node_pdb.zip +6436502ba62375ca9bc30840428145bc9e34f21d80129d2684c9e42277b10067 win-x64/node.exe +4a54d5aeab30bb14dbad9260f6430c81f1e1afb430c68c40f6e5fec7ce288e2e win-x64/node.lib +409233a718d91323ca0c1e7d356510ce06d10ddbc7442158d411053e3ffd99e2 win-x64/node_pdb.7z +bd10fad5a054735243b113dccb41ed7c94878f15f188356fbedd5db2ad561fa2 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEzGj1oxBv9EgyLkjtJ/XjjVsKIV8FAmd9ZJAACgkQJ/XjjVsK +IV9w6w//TDx7zCLA3y59coOIujjdhW3H0azpcCtKXT5KnjlajUKBg/FNwXbNg8ja +plzm2/C0UkZmoJFkF7rX+Lmb9SY3QfuWdFYJsX1akX5fQuh7bKG3neupWOcS+WF8 +oJk2a2QaGhZFVCXCYI8JNKWtMtAxfgeop/sTlBDw3iqgdPGNFxUbv8ukv89lHMrK +rWKxd3DIglugRPPWN4LA1bKvpSONhSKOrjV+ct3WY1DY/tSFFpgIRyqOXIJ+LBuk +vSlbjZLfPpeFYUlPC9pIXOkLaWFb4s+Cjm164z76+YQb5lC+EgTpDoJGGQ3qn/Ux +Gj1KPiFb1WTKJ0IcLl6xDx7lHnmknVKxchNGEHpp7tZGdWt23Gjty/pbDBEiGCuo +CxMS7ATx7vOMMDBsvtlCnDx3d3bVDXbfrvO4SiDwjChm3YoaAQqzz1Q4eN6HKxDH +Ca8kpOW+nVBLPz7DLIfIc/+QpNquEIAwSTX2DKdGVA5xYQkXYaPVrQOiaIAp33jB +sMMlTqNWqpIB+mHLyW5VfwKT4vGfAG+0ZJSYDxRa99hhu+nuvjEV9syc8xyRtOXw +hw1MAwuRDMeo8W7lK0602RWEo+GHz3VmWdX9ft7dZ2FIziyIG/rFw6aP8tFE2ETJ +ZlwU3KdrCyaqmjitSBLlPL7vOB3z4I2QohUgkAHYzoH8sRo7Jps= +=5/XI +-----END PGP SIGNATURE----- +``` From 6cd9e1394e1d7e7b9001b6c542b7d93bf27ca01e Mon Sep 17 00:00:00 2001 From: Ruy Adorno <ruyadorno@google.com> Date: Tue, 7 Jan 2025 15:15:27 -0500 Subject: [PATCH 0244/1385] Blog: v22.13.0 release post (#7393) Refs: https://github.com/nodejs/node/pull/56329 --- apps/site/pages/en/blog/release/v22.13.0.md | 333 ++++++++++++++++++++ 1 file changed, 333 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v22.13.0.md diff --git a/apps/site/pages/en/blog/release/v22.13.0.md b/apps/site/pages/en/blog/release/v22.13.0.md new file mode 100644 index 0000000000000..3a0ef10bb93f3 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.13.0.md @@ -0,0 +1,333 @@ +--- +date: '2025-01-07T19:45:45.672Z' +category: release +title: Node v22.13.0 (LTS) +layout: blog-post +author: Ruy Adorno +--- + +## 2025-01-07, Version 22.13.0 'Jod' (LTS), @ruyadorno + +### Notable Changes + +#### Stabilize Permission Model + +Upgrades the Permission Model status from Active Development to Stable. + +Contributed by Rafael Gonzaga [#56201](https://github.com/nodejs/node/pull/56201) + +#### Graduate WebCryptoAPI Ed25519 and X25519 algorithms as 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) [#56142](https://github.com/nodejs/node/pull/56142) + +#### Other Notable Changes + +- \[[`05d6227a88`](https://github.com/nodejs/node/commit/05d6227a88)] - **(SEMVER-MINOR)** **assert**: add partialDeepStrictEqual (Giovanni Bucci) [#54630](https://github.com/nodejs/node/pull/54630) +- \[[`a933103499`](https://github.com/nodejs/node/commit/a933103499)] - **(SEMVER-MINOR)** **cli**: implement --trace-env and --trace-env-\[js|native]-stack (Joyee Cheung) [#55604](https://github.com/nodejs/node/pull/55604) +- \[[`ba9d5397de`](https://github.com/nodejs/node/commit/ba9d5397de)] - **(SEMVER-MINOR)** **dgram**: support blocklist in udp (theanarkh) [#56087](https://github.com/nodejs/node/pull/56087) +- \[[`f6d0c01303`](https://github.com/nodejs/node/commit/f6d0c01303)] - **doc**: stabilize util.styleText (Rafael Gonzaga) [#56265](https://github.com/nodejs/node/pull/56265) +- \[[`34c68827af`](https://github.com/nodejs/node/commit/34c68827af)] - **doc**: move typescript support to active development (Marco Ippolito) [#55536](https://github.com/nodejs/node/pull/55536) +- \[[`dd14b80350`](https://github.com/nodejs/node/commit/dd14b80350)] - **doc**: add LJHarb to collaborators (Jordan Harband) [#56132](https://github.com/nodejs/node/pull/56132) +- \[[`5263086169`](https://github.com/nodejs/node/commit/5263086169)] - **(SEMVER-MINOR)** **doc**: add report version and history section (Chengzhong Wu) [#56130](https://github.com/nodejs/node/pull/56130) +- \[[`8cb3c2018d`](https://github.com/nodejs/node/commit/8cb3c2018d)] - **(SEMVER-MINOR)** **doc**: sort --report-exclude alphabetically (Rafael Gonzaga) [#55788](https://github.com/nodejs/node/pull/55788) +- \[[`55239a48b6`](https://github.com/nodejs/node/commit/55239a48b6)] - **(SEMVER-MINOR)** **doc,lib,src,test**: unflag sqlite module (Colin Ihrig) [#55890](https://github.com/nodejs/node/pull/55890) +- \[[`7cbe3de1d8`](https://github.com/nodejs/node/commit/7cbe3de1d8)] - **(SEMVER-MINOR)** **module**: only emit require(esm) warning under --trace-require-module (Joyee Cheung) [#56194](https://github.com/nodejs/node/pull/56194) +- \[[`6575b76042`](https://github.com/nodejs/node/commit/6575b76042)] - **(SEMVER-MINOR)** **module**: add module.stripTypeScriptTypes (Marco Ippolito) [#55282](https://github.com/nodejs/node/pull/55282) +- \[[`bacfe6d5c9`](https://github.com/nodejs/node/commit/bacfe6d5c9)] - **(SEMVER-MINOR)** **net**: support blocklist in net.connect (theanarkh) [#56075](https://github.com/nodejs/node/pull/56075) +- \[[`b47888d390`](https://github.com/nodejs/node/commit/b47888d390)] - **(SEMVER-MINOR)** **net**: support blocklist for net.Server (theanarkh) [#56079](https://github.com/nodejs/node/pull/56079) +- \[[`566f0a1d25`](https://github.com/nodejs/node/commit/566f0a1d25)] - **(SEMVER-MINOR)** **net**: add SocketAddress.parse (James M Snell) [#56076](https://github.com/nodejs/node/pull/56076) +- \[[`ed7eab1421`](https://github.com/nodejs/node/commit/ed7eab1421)] - **(SEMVER-MINOR)** **net**: add net.BlockList.isBlockList(value) (James M Snell) [#56078](https://github.com/nodejs/node/pull/56078) +- \[[`ea4891856d`](https://github.com/nodejs/node/commit/ea4891856d)] - **(SEMVER-MINOR)** **process**: deprecate `features.{ipv6,uv}` and `features.tls_*` (René) [#55545](https://github.com/nodejs/node/pull/55545) +- \[[`01eb308f26`](https://github.com/nodejs/node/commit/01eb308f26)] - **(SEMVER-MINOR)** **report**: fix typos in report keys and bump the version (Yuan-Ming Hsu) [#56068](https://github.com/nodejs/node/pull/56068) +- \[[`97c38352d0`](https://github.com/nodejs/node/commit/97c38352d0)] - **(SEMVER-MINOR)** **sqlite**: aggregate constants in a single property (Edigleysson Silva (Edy)) [#56213](https://github.com/nodejs/node/pull/56213) +- \[[`b4041e554a`](https://github.com/nodejs/node/commit/b4041e554a)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype.iterate` method (tpoisseau) [#54213](https://github.com/nodejs/node/pull/54213) +- \[[`2e3ca1bbdd`](https://github.com/nodejs/node/commit/2e3ca1bbdd)] - **(SEMVER-MINOR)** **src**: add cli option to preserve env vars on diagnostic reports (Rafael Gonzaga) [#55697](https://github.com/nodejs/node/pull/55697) +- \[[`bcfe9c80fc`](https://github.com/nodejs/node/commit/bcfe9c80fc)] - **(SEMVER-MINOR)** **util**: add sourcemap support to getCallSites (Marco Ippolito) [#55589](https://github.com/nodejs/node/pull/55589) + +### Commits + +- \[[`e9024779c0`](https://github.com/nodejs/node/commit/e9024779c0)] - **assert**: make Maps be partially compared in partialDeepStrictEqual (Giovanni Bucci) [#56195](https://github.com/nodejs/node/pull/56195) +- \[[`4c13d8e587`](https://github.com/nodejs/node/commit/4c13d8e587)] - **assert**: make partialDeepStrictEqual work with ArrayBuffers (Giovanni Bucci) [#56098](https://github.com/nodejs/node/pull/56098) +- \[[`a4fa31a86e`](https://github.com/nodejs/node/commit/a4fa31a86e)] - **assert**: optimize partial comparison of two `Set`s (Antoine du Hamel) [#55970](https://github.com/nodejs/node/pull/55970) +- \[[`05d6227a88`](https://github.com/nodejs/node/commit/05d6227a88)] - **(SEMVER-MINOR)** **assert**: add partialDeepStrictEqual (Giovanni Bucci) [#54630](https://github.com/nodejs/node/pull/54630) +- \[[`5e1321abd7`](https://github.com/nodejs/node/commit/5e1321abd7)] - **buffer**: document concat zero-fill (Duncan) [#55562](https://github.com/nodejs/node/pull/55562) +- \[[`be5ba7c648`](https://github.com/nodejs/node/commit/be5ba7c648)] - **build**: set DESTCPU correctly for 'make binary' on loongarch64 (吴小白) [#56271](https://github.com/nodejs/node/pull/56271) +- \[[`38cf37ee2d`](https://github.com/nodejs/node/commit/38cf37ee2d)] - **build**: fix missing fp16 dependency in d8 builds (Joyee Cheung) [#56266](https://github.com/nodejs/node/pull/56266) +- \[[`dbb7557455`](https://github.com/nodejs/node/commit/dbb7557455)] - **build**: add major release action (Rafael Gonzaga) [#56199](https://github.com/nodejs/node/pull/56199) +- \[[`27cc90f3be`](https://github.com/nodejs/node/commit/27cc90f3be)] - **build**: fix C string encoding for `PRODUCT_DIR_ABS` (Anna Henningsen) [#56111](https://github.com/nodejs/node/pull/56111) +- \[[`376561c2b4`](https://github.com/nodejs/node/commit/376561c2b4)] - **build**: use variable for simdutf path (Shelley Vohr) [#56196](https://github.com/nodejs/node/pull/56196) +- \[[`126ae15000`](https://github.com/nodejs/node/commit/126ae15000)] - **build**: allow overriding clang usage (Shelley Vohr) [#56016](https://github.com/nodejs/node/pull/56016) +- \[[`97bb8f7c76`](https://github.com/nodejs/node/commit/97bb8f7c76)] - **build**: remove defaults for create-release-proposal (Rafael Gonzaga) [#56042](https://github.com/nodejs/node/pull/56042) +- \[[`a8fb1a06f3`](https://github.com/nodejs/node/commit/a8fb1a06f3)] - **build**: set node_arch to target_cpu in GN (Shelley Vohr) [#55967](https://github.com/nodejs/node/pull/55967) +- \[[`9f48ca27f1`](https://github.com/nodejs/node/commit/9f48ca27f1)] - **build**: use variable for crypto dep path (Shelley Vohr) [#55928](https://github.com/nodejs/node/pull/55928) +- \[[`e47ccd2287`](https://github.com/nodejs/node/commit/e47ccd2287)] - **build**: fix GN build for sqlite (Cheng) [#55912](https://github.com/nodejs/node/pull/55912) +- \[[`8d70b99a5a`](https://github.com/nodejs/node/commit/8d70b99a5a)] - **build**: compile bundled simdutf conditionally (Jakub Jirutka) [#55886](https://github.com/nodejs/node/pull/55886) +- \[[`826fd35242`](https://github.com/nodejs/node/commit/826fd35242)] - **build**: compile bundled simdjson conditionally (Jakub Jirutka) [#55886](https://github.com/nodejs/node/pull/55886) +- \[[`1015b22085`](https://github.com/nodejs/node/commit/1015b22085)] - **build**: compile bundled ada conditionally (Jakub Jirutka) [#55886](https://github.com/nodejs/node/pull/55886) +- \[[`77e2869ca6`](https://github.com/nodejs/node/commit/77e2869ca6)] - **build**: use glob for dependencies of out/Makefile (Richard Lau) [#55789](https://github.com/nodejs/node/pull/55789) +- \[[`a933103499`](https://github.com/nodejs/node/commit/a933103499)] - **(SEMVER-MINOR)** **cli**: implement --trace-env and --trace-env-\[js|native]-stack (Joyee Cheung) [#55604](https://github.com/nodejs/node/pull/55604) +- \[[`72e8e0684e`](https://github.com/nodejs/node/commit/72e8e0684e)] - **crypto**: graduate WebCryptoAPI Ed25519 and X25519 algorithms as stable (Filip Skokan) [#56142](https://github.com/nodejs/node/pull/56142) +- \[[`fe2b344ddb`](https://github.com/nodejs/node/commit/fe2b344ddb)] - **crypto**: ensure CryptoKey usages and algorithm are cached objects (Filip Skokan) [#56108](https://github.com/nodejs/node/pull/56108) +- \[[`9ee9f524a7`](https://github.com/nodejs/node/commit/9ee9f524a7)] - **crypto**: allow non-multiple of 8 in SubtleCrypto.deriveBits (Filip Skokan) [#55296](https://github.com/nodejs/node/pull/55296) +- \[[`76f242d993`](https://github.com/nodejs/node/commit/76f242d993)] - **deps**: update nghttp3 to 1.6.0 (Node.js GitHub Bot) [#56258](https://github.com/nodejs/node/pull/56258) +- \[[`c7ff2ea6b5`](https://github.com/nodejs/node/commit/c7ff2ea6b5)] - **deps**: update simdutf to 5.6.4 (Node.js GitHub Bot) [#56255](https://github.com/nodejs/node/pull/56255) +- \[[`04230be1ef`](https://github.com/nodejs/node/commit/04230be1ef)] - **deps**: update libuv to 1.49.2 (Luigi Pinca) [#56224](https://github.com/nodejs/node/pull/56224) +- \[[`88589b85b7`](https://github.com/nodejs/node/commit/88589b85b7)] - **deps**: update c-ares to v1.34.4 (Node.js GitHub Bot) [#56256](https://github.com/nodejs/node/pull/56256) +- \[[`5c2e0618f3`](https://github.com/nodejs/node/commit/5c2e0618f3)] - **deps**: define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) [#56238](https://github.com/nodejs/node/pull/56238) +- \[[`9f8f3c9658`](https://github.com/nodejs/node/commit/9f8f3c9658)] - **deps**: update sqlite to 3.47.2 (Node.js GitHub Bot) [#56178](https://github.com/nodejs/node/pull/56178) +- \[[`17b6931d3b`](https://github.com/nodejs/node/commit/17b6931d3b)] - **deps**: update ngtcp2 to 1.9.1 (Node.js GitHub Bot) [#56095](https://github.com/nodejs/node/pull/56095) +- \[[`22b453b619`](https://github.com/nodejs/node/commit/22b453b619)] - **deps**: upgrade npm to 10.9.2 (npm team) [#56135](https://github.com/nodejs/node/pull/56135) +- \[[`d7eb41b382`](https://github.com/nodejs/node/commit/d7eb41b382)] - **deps**: update sqlite to 3.47.1 (Node.js GitHub Bot) [#56094](https://github.com/nodejs/node/pull/56094) +- \[[`669c722aa9`](https://github.com/nodejs/node/commit/669c722aa9)] - **deps**: update zlib to 1.3.0.1-motley-82a5fec (Node.js GitHub Bot) [#55980](https://github.com/nodejs/node/pull/55980) +- \[[`f61a0454d2`](https://github.com/nodejs/node/commit/f61a0454d2)] - **deps**: update corepack to 0.30.0 (Node.js GitHub Bot) [#55977](https://github.com/nodejs/node/pull/55977) +- \[[`d98bf0b891`](https://github.com/nodejs/node/commit/d98bf0b891)] - **deps**: update ngtcp2 to 1.9.0 (Node.js GitHub Bot) [#55975](https://github.com/nodejs/node/pull/55975) +- \[[`fc362624bf`](https://github.com/nodejs/node/commit/fc362624bf)] - **deps**: update simdutf to 5.6.3 (Node.js GitHub Bot) [#55973](https://github.com/nodejs/node/pull/55973) +- \[[`f61dcc4df4`](https://github.com/nodejs/node/commit/f61dcc4df4)] - **deps**: upgrade npm to 10.9.1 (npm team) [#55951](https://github.com/nodejs/node/pull/55951) +- \[[`bfe7982491`](https://github.com/nodejs/node/commit/bfe7982491)] - **deps**: update zlib to 1.3.0.1-motley-7e2e4d7 (Node.js GitHub Bot) [#54432](https://github.com/nodejs/node/pull/54432) +- \[[`d714367ef8`](https://github.com/nodejs/node/commit/d714367ef8)] - **deps**: update simdjson to 3.10.1 (Node.js GitHub Bot) [#54678](https://github.com/nodejs/node/pull/54678) +- \[[`ccc9b105ec`](https://github.com/nodejs/node/commit/ccc9b105ec)] - **deps**: update simdutf to 5.6.2 (Node.js GitHub Bot) [#55889](https://github.com/nodejs/node/pull/55889) +- \[[`ba9d5397de`](https://github.com/nodejs/node/commit/ba9d5397de)] - **(SEMVER-MINOR)** **dgram**: support blocklist in udp (theanarkh) [#56087](https://github.com/nodejs/node/pull/56087) +- \[[`7ddbf94849`](https://github.com/nodejs/node/commit/7ddbf94849)] - **dgram**: check udp buffer size to avoid fd leak (theanarkh) [#56084](https://github.com/nodejs/node/pull/56084) +- \[[`360d68de0f`](https://github.com/nodejs/node/commit/360d68de0f)] - **doc**: fix color contrast issue in light mode (Rich Trott) [#56272](https://github.com/nodejs/node/pull/56272) +- \[[`f6d0c01303`](https://github.com/nodejs/node/commit/f6d0c01303)] - **doc**: stabilize util.styleText (Rafael Gonzaga) [#56265](https://github.com/nodejs/node/pull/56265) +- \[[`9436c3c949`](https://github.com/nodejs/node/commit/9436c3c949)] - **doc**: clarify util.aborted resource usage (Kunal Kumar) [#55780](https://github.com/nodejs/node/pull/55780) +- \[[`b1cec2cef9`](https://github.com/nodejs/node/commit/b1cec2cef9)] - **doc**: add esm examples to node:repl (Alfredo González) [#55432](https://github.com/nodejs/node/pull/55432) +- \[[`d6a84cf781`](https://github.com/nodejs/node/commit/d6a84cf781)] - **doc**: add esm examples to node:readline (Alfredo González) [#55335](https://github.com/nodejs/node/pull/55335) +- \[[`a11ac1c0f2`](https://github.com/nodejs/node/commit/a11ac1c0f2)] - **doc**: fix 'which' to 'that' and add commas (Selveter Senitro) [#56216](https://github.com/nodejs/node/pull/56216) +- \[[`5331df7911`](https://github.com/nodejs/node/commit/5331df7911)] - **doc**: fix winget config path (Alex Yang) [#56233](https://github.com/nodejs/node/pull/56233) +- \[[`7a8071b43c`](https://github.com/nodejs/node/commit/7a8071b43c)] - **doc**: add esm examples to node:tls (Alfredo González) [#56229](https://github.com/nodejs/node/pull/56229) +- \[[`7d8c1e72d5`](https://github.com/nodejs/node/commit/7d8c1e72d5)] - **doc**: add esm examples to node:perf_hooks (Alfredo González) [#55257](https://github.com/nodejs/node/pull/55257) +- \[[`ea53c4b1ae`](https://github.com/nodejs/node/commit/ea53c4b1ae)] - **doc**: `sea.getRawAsset(key)` always returns an ArrayBuffer (沈鸿飞) [#56206](https://github.com/nodejs/node/pull/56206) +- \[[`7a94100a3e`](https://github.com/nodejs/node/commit/7a94100a3e)] - **doc**: update announce documentation for releases (Rafael Gonzaga) [#56200](https://github.com/nodejs/node/pull/56200) +- \[[`44c4e57e32`](https://github.com/nodejs/node/commit/44c4e57e32)] - **doc**: update blog link to /vulnerability (Rafael Gonzaga) [#56198](https://github.com/nodejs/node/pull/56198) +- \[[`5e5b4b0cbd`](https://github.com/nodejs/node/commit/5e5b4b0cbd)] - **doc**: call out import.meta is only supported in ES modules (Anton Kastritskii) [#56186](https://github.com/nodejs/node/pull/56186) +- \[[`a83de32d35`](https://github.com/nodejs/node/commit/a83de32d35)] - **doc**: add ambassador message - benefits of Node.js (Michael Dawson) [#56085](https://github.com/nodejs/node/pull/56085) +- \[[`bb880dd21a`](https://github.com/nodejs/node/commit/bb880dd21a)] - **doc**: fix incorrect link to style guide (Yuan-Ming Hsu) [#56181](https://github.com/nodejs/node/pull/56181) +- \[[`39ce902e58`](https://github.com/nodejs/node/commit/39ce902e58)] - **doc**: fix c++ addon hello world sample (Edigleysson Silva (Edy)) [#56172](https://github.com/nodejs/node/pull/56172) +- \[[`19c72c4acc`](https://github.com/nodejs/node/commit/19c72c4acc)] - **doc**: update blog release-post link (Ruy Adorno) [#56123](https://github.com/nodejs/node/pull/56123) +- \[[`b667cc4669`](https://github.com/nodejs/node/commit/b667cc4669)] - **doc**: fix module.md headings (Chengzhong Wu) [#56131](https://github.com/nodejs/node/pull/56131) +- \[[`34c68827af`](https://github.com/nodejs/node/commit/34c68827af)] - **doc**: move typescript support to active development (Marco Ippolito) [#55536](https://github.com/nodejs/node/pull/55536) +- \[[`c4a97d810b`](https://github.com/nodejs/node/commit/c4a97d810b)] - **doc**: mention `-a` flag for the release script (Ruy Adorno) [#56124](https://github.com/nodejs/node/pull/56124) +- \[[`dd14b80350`](https://github.com/nodejs/node/commit/dd14b80350)] - **doc**: add LJHarb to collaborators (Jordan Harband) [#56132](https://github.com/nodejs/node/pull/56132) +- \[[`2feb0781ed`](https://github.com/nodejs/node/commit/2feb0781ed)] - **doc**: add create-release-action to process (Rafael Gonzaga) [#55993](https://github.com/nodejs/node/pull/55993) +- \[[`71f6263942`](https://github.com/nodejs/node/commit/71f6263942)] - **doc**: rename file to advocacy-ambassador-program.md (Tobias Nießen) [#56046](https://github.com/nodejs/node/pull/56046) +- \[[`8efa240500`](https://github.com/nodejs/node/commit/8efa240500)] - **doc**: remove unused import from sample code (Blended Bram) [#55570](https://github.com/nodejs/node/pull/55570) +- \[[`e64cef8bf4`](https://github.com/nodejs/node/commit/e64cef8bf4)] - **doc**: add FAQ to releases section (Rafael Gonzaga) [#55992](https://github.com/nodejs/node/pull/55992) +- \[[`4bb0f30f92`](https://github.com/nodejs/node/commit/4bb0f30f92)] - **doc**: move history entry to class description (Luigi Pinca) [#55991](https://github.com/nodejs/node/pull/55991) +- \[[`6d02bd6873`](https://github.com/nodejs/node/commit/6d02bd6873)] - **doc**: add history entry for textEncoder.encodeInto() (Luigi Pinca) [#55990](https://github.com/nodejs/node/pull/55990) +- \[[`e239382ed8`](https://github.com/nodejs/node/commit/e239382ed8)] - **doc**: improve GN build documentation a bit (Shelley Vohr) [#55968](https://github.com/nodejs/node/pull/55968) +- \[[`78b6aef6bc`](https://github.com/nodejs/node/commit/78b6aef6bc)] - **doc**: fix deprecation codes (Filip Skokan) [#56018](https://github.com/nodejs/node/pull/56018) +- \[[`474bf80a44`](https://github.com/nodejs/node/commit/474bf80a44)] - **doc**: remove confusing and outdated sentence (Luigi Pinca) [#55988](https://github.com/nodejs/node/pull/55988) +- \[[`57381076c5`](https://github.com/nodejs/node/commit/57381076c5)] - **doc**: deprecate passing invalid types in `fs.existsSync` (Carlos Espa) [#55892](https://github.com/nodejs/node/pull/55892) +- \[[`e529cf6b26`](https://github.com/nodejs/node/commit/e529cf6b26)] - **doc**: add doc for PerformanceObserver.takeRecords() (skyclouds2001) [#55786](https://github.com/nodejs/node/pull/55786) +- \[[`a6ef0f6f6e`](https://github.com/nodejs/node/commit/a6ef0f6f6e)] - **doc**: add vetted courses to the ambassador benefits (Matteo Collina) [#55934](https://github.com/nodejs/node/pull/55934) +- \[[`63526049f2`](https://github.com/nodejs/node/commit/63526049f2)] - **doc**: order `node:crypto` APIs alphabetically (Julian Gassner) [#55831](https://github.com/nodejs/node/pull/55831) +- \[[`36080b7b61`](https://github.com/nodejs/node/commit/36080b7b61)] - **doc**: doc how to add message for promotion (Michael Dawson) [#55843](https://github.com/nodejs/node/pull/55843) +- \[[`12b2ad4287`](https://github.com/nodejs/node/commit/12b2ad4287)] - **doc**: add esm example for zlib (Leonardo Peixoto) [#55946](https://github.com/nodejs/node/pull/55946) +- \[[`352daac296`](https://github.com/nodejs/node/commit/352daac296)] - **doc**: fix typo (Alex Yang) [#56125](https://github.com/nodejs/node/pull/56125) +- \[[`6e7e9a126d`](https://github.com/nodejs/node/commit/6e7e9a126d)] - **doc**: document approach for building wasm in deps (Michael Dawson) [#55940](https://github.com/nodejs/node/pull/55940) +- \[[`0b3ac05422`](https://github.com/nodejs/node/commit/0b3ac05422)] - **doc**: remove RedYetiDev from triagers team (Aviv Keller) [#55947](https://github.com/nodejs/node/pull/55947) +- \[[`20be5e2f80`](https://github.com/nodejs/node/commit/20be5e2f80)] - **doc**: add esm examples to node:timers (Alfredo González) [#55857](https://github.com/nodejs/node/pull/55857) +- \[[`3ba9b57436`](https://github.com/nodejs/node/commit/3ba9b57436)] - **doc**: fix relative path mention in --allow-fs (Rafael Gonzaga) [#55791](https://github.com/nodejs/node/pull/55791) +- \[[`3e6b3a9a8b`](https://github.com/nodejs/node/commit/3e6b3a9a8b)] - **doc**: include git node release --promote to steps (Rafael Gonzaga) [#55835](https://github.com/nodejs/node/pull/55835) +- \[[`5bdfde8dc6`](https://github.com/nodejs/node/commit/5bdfde8dc6)] - **doc**: add history entry for import assertion removal (Antoine du Hamel) [#55883](https://github.com/nodejs/node/pull/55883) +- \[[`c842146c05`](https://github.com/nodejs/node/commit/c842146c05)] - **doc**: add a note on console stream behavior (Gireesh Punathil) [#55616](https://github.com/nodejs/node/pull/55616) +- \[[`5263086169`](https://github.com/nodejs/node/commit/5263086169)] - **(SEMVER-MINOR)** **doc**: add report version and history section (Chengzhong Wu) [#56130](https://github.com/nodejs/node/pull/56130) +- \[[`8cb3c2018d`](https://github.com/nodejs/node/commit/8cb3c2018d)] - **(SEMVER-MINOR)** **doc**: sort --report-exclude alphabetically (Rafael Gonzaga) [#55788](https://github.com/nodejs/node/pull/55788) +- \[[`55239a48b6`](https://github.com/nodejs/node/commit/55239a48b6)] - **(SEMVER-MINOR)** **doc,lib,src,test**: unflag sqlite module (Colin Ihrig) [#55890](https://github.com/nodejs/node/pull/55890) +- \[[`04d7c7a349`](https://github.com/nodejs/node/commit/04d7c7a349)] - **fs**: make mutating `options` in Callback `readdir()` not affect results (LiviaMedeiros) [#56057](https://github.com/nodejs/node/pull/56057) +- \[[`92bcd528e7`](https://github.com/nodejs/node/commit/92bcd528e7)] - **fs**: make mutating `options` in Promises `readdir()` not affect results (LiviaMedeiros) [#56057](https://github.com/nodejs/node/pull/56057) +- \[[`3a55bd9448`](https://github.com/nodejs/node/commit/3a55bd9448)] - **fs**: lazily load ReadFileContext (Gürgün Dayıoğlu) [#55998](https://github.com/nodejs/node/pull/55998) +- \[[`0331b3fdd3`](https://github.com/nodejs/node/commit/0331b3fdd3)] - **fs,win**: fix readdir for named pipe (Hüseyin Açacak) [#56110](https://github.com/nodejs/node/pull/56110) +- \[[`79152b54e9`](https://github.com/nodejs/node/commit/79152b54e9)] - **http**: add setDefaultHeaders option to http.request (Tim Perry) [#56112](https://github.com/nodejs/node/pull/56112) +- \[[`19782855a8`](https://github.com/nodejs/node/commit/19782855a8)] - **http**: don't emit error after destroy (Robert Nagy) [#55457](https://github.com/nodejs/node/pull/55457) +- \[[`8494512c17`](https://github.com/nodejs/node/commit/8494512c17)] - **http2**: remove duplicate codeblock (Vitaly Aminev) [#55915](https://github.com/nodejs/node/pull/55915) +- \[[`d2f82223d1`](https://github.com/nodejs/node/commit/d2f82223d1)] - **http2**: support ALPNCallback option (ZYSzys) [#56187](https://github.com/nodejs/node/pull/56187) +- \[[`2616f1247a`](https://github.com/nodejs/node/commit/2616f1247a)] - **http2**: fix memory leak caused by premature listener removing (ywave620) [#55966](https://github.com/nodejs/node/pull/55966) +- \[[`598fe048f2`](https://github.com/nodejs/node/commit/598fe048f2)] - **lib**: remove redundant global regexps (Gürgün Dayıoğlu) [#56182](https://github.com/nodejs/node/pull/56182) +- \[[`a3c8739530`](https://github.com/nodejs/node/commit/a3c8739530)] - **lib**: clean up persisted signals when they are settled (Edigleysson Silva (Edy)) [#56001](https://github.com/nodejs/node/pull/56001) +- \[[`11144ab158`](https://github.com/nodejs/node/commit/11144ab158)] - **lib**: handle Float16Array in node:v8 serdes (Bartek Iwańczuk) [#55996](https://github.com/nodejs/node/pull/55996) +- \[[`81c94a32e4`](https://github.com/nodejs/node/commit/81c94a32e4)] - **lib**: disable default memory leak warning for AbortSignal (Lenz Weber-Tronic) [#55816](https://github.com/nodejs/node/pull/55816) +- \[[`68dda61420`](https://github.com/nodejs/node/commit/68dda61420)] - **lib**: add validation for options in compileFunction (Taejin Kim) [#56023](https://github.com/nodejs/node/pull/56023) +- \[[`d2007aec28`](https://github.com/nodejs/node/commit/d2007aec28)] - **lib**: fix `fs.readdir` recursive async (Rafael Gonzaga) [#56041](https://github.com/nodejs/node/pull/56041) +- \[[`0571d5556f`](https://github.com/nodejs/node/commit/0571d5556f)] - **lib**: avoid excluding symlinks in recursive fs.readdir with filetypes (Juan José) [#55714](https://github.com/nodejs/node/pull/55714) +- \[[`843943d0ce`](https://github.com/nodejs/node/commit/843943d0ce)] - **meta**: bump github/codeql-action from 3.27.0 to 3.27.5 (dependabot\[bot]) [#56103](https://github.com/nodejs/node/pull/56103) +- \[[`1529027f03`](https://github.com/nodejs/node/commit/1529027f03)] - **meta**: bump actions/checkout from 4.1.7 to 4.2.2 (dependabot\[bot]) [#56102](https://github.com/nodejs/node/pull/56102) +- \[[`8e265de9f5`](https://github.com/nodejs/node/commit/8e265de9f5)] - **meta**: bump step-security/harden-runner from 2.10.1 to 2.10.2 (dependabot\[bot]) [#56101](https://github.com/nodejs/node/pull/56101) +- \[[`0fba3a3b9b`](https://github.com/nodejs/node/commit/0fba3a3b9b)] - **meta**: bump actions/setup-node from 4.0.3 to 4.1.0 (dependabot\[bot]) [#56100](https://github.com/nodejs/node/pull/56100) +- \[[`2e3fdfdb19`](https://github.com/nodejs/node/commit/2e3fdfdb19)] - **meta**: add releasers as CODEOWNERS to proposal action (Rafael Gonzaga) [#56043](https://github.com/nodejs/node/pull/56043) +- \[[`7cbe3de1d8`](https://github.com/nodejs/node/commit/7cbe3de1d8)] - **(SEMVER-MINOR)** **module**: only emit require(esm) warning under --trace-require-module (Joyee Cheung) [#56194](https://github.com/nodejs/node/pull/56194) +- \[[`8a5429c9b3`](https://github.com/nodejs/node/commit/8a5429c9b3)] - **module**: prevent main thread exiting before esm worker ends (Shima Ryuhei) [#56183](https://github.com/nodejs/node/pull/56183) +- \[[`6575b76042`](https://github.com/nodejs/node/commit/6575b76042)] - **(SEMVER-MINOR)** **module**: add module.stripTypeScriptTypes (Marco Ippolito) [#55282](https://github.com/nodejs/node/pull/55282) +- \[[`0794861bc3`](https://github.com/nodejs/node/commit/0794861bc3)] - **module**: simplify ts under node_modules check (Marco Ippolito) [#55440](https://github.com/nodejs/node/pull/55440) +- \[[`28a11adf14`](https://github.com/nodejs/node/commit/28a11adf14)] - **module**: mark evaluation rejection in require(esm) as handled (Joyee Cheung) [#56122](https://github.com/nodejs/node/pull/56122) +- \[[`bacfe6d5c9`](https://github.com/nodejs/node/commit/bacfe6d5c9)] - **(SEMVER-MINOR)** **net**: support blocklist in net.connect (theanarkh) [#56075](https://github.com/nodejs/node/pull/56075) +- \[[`566f0a1d25`](https://github.com/nodejs/node/commit/566f0a1d25)] - **(SEMVER-MINOR)** **net**: add SocketAddress.parse (James M Snell) [#56076](https://github.com/nodejs/node/pull/56076) +- \[[`ed7eab1421`](https://github.com/nodejs/node/commit/ed7eab1421)] - **(SEMVER-MINOR)** **net**: add net.BlockList.isBlockList(value) (James M Snell) [#56078](https://github.com/nodejs/node/pull/56078) +- \[[`b47888d390`](https://github.com/nodejs/node/commit/b47888d390)] - **(SEMVER-MINOR)** **net**: support blocklist for net.Server (theanarkh) [#56079](https://github.com/nodejs/node/pull/56079) +- \[[`481770a38f`](https://github.com/nodejs/node/commit/481770a38f)] - **node-api**: allow napi_delete_reference in finalizers (Chengzhong Wu) [#55620](https://github.com/nodejs/node/pull/55620) +- \[[`2beb4f1f8c`](https://github.com/nodejs/node/commit/2beb4f1f8c)] - **permission**: ignore internalModuleStat on module loading (Rafael Gonzaga) [#55797](https://github.com/nodejs/node/pull/55797) +- \[[`ea4891856d`](https://github.com/nodejs/node/commit/ea4891856d)] - **(SEMVER-MINOR)** **process**: deprecate `features.{ipv6,uv}` and `features.tls_*` (René) [#55545](https://github.com/nodejs/node/pull/55545) +- \[[`c907b2f358`](https://github.com/nodejs/node/commit/c907b2f358)] - **quic**: update more QUIC implementation (James M Snell) [#55986](https://github.com/nodejs/node/pull/55986) +- \[[`43c25e2e0d`](https://github.com/nodejs/node/commit/43c25e2e0d)] - **quic**: multiple updates to quic impl (James M Snell) [#55971](https://github.com/nodejs/node/pull/55971) +- \[[`01eb308f26`](https://github.com/nodejs/node/commit/01eb308f26)] - **(SEMVER-MINOR)** **report**: fix typos in report keys and bump the version (Yuan-Ming Hsu) [#56068](https://github.com/nodejs/node/pull/56068) +- \[[`1cfa31fb82`](https://github.com/nodejs/node/commit/1cfa31fb82)] - **sea**: only assert snapshot main function for main threads (Joyee Cheung) [#56120](https://github.com/nodejs/node/pull/56120) +- \[[`97c38352d0`](https://github.com/nodejs/node/commit/97c38352d0)] - **(SEMVER-MINOR)** **sqlite**: aggregate constants in a single property (Edigleysson Silva (Edy)) [#56213](https://github.com/nodejs/node/pull/56213) +- \[[`2268c1ea8b`](https://github.com/nodejs/node/commit/2268c1ea8b)] - **sqlite**: add support for custom functions (Colin Ihrig) [#55985](https://github.com/nodejs/node/pull/55985) +- \[[`f5c6955722`](https://github.com/nodejs/node/commit/f5c6955722)] - **sqlite**: support `db.loadExtension` (Alex Yang) [#53900](https://github.com/nodejs/node/pull/53900) +- \[[`9a60bea6b7`](https://github.com/nodejs/node/commit/9a60bea6b7)] - **sqlite**: deps include `sqlite3ext.h` (Alex Yang) [#56010](https://github.com/nodejs/node/pull/56010) +- \[[`b4041e554a`](https://github.com/nodejs/node/commit/b4041e554a)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype.iterate` method (tpoisseau) [#54213](https://github.com/nodejs/node/pull/54213) +- \[[`2889e8da04`](https://github.com/nodejs/node/commit/2889e8da04)] - **src**: fix outdated js2c.cc references (Chengzhong Wu) [#56133](https://github.com/nodejs/node/pull/56133) +- \[[`5ce020b0c9`](https://github.com/nodejs/node/commit/5ce020b0c9)] - **src**: use spaceship operator in SocketAddress (James M Snell) [#56059](https://github.com/nodejs/node/pull/56059) +- \[[`a32fa30847`](https://github.com/nodejs/node/commit/a32fa30847)] - **src**: add missing qualifiers to env.cc (Yagiz Nizipli) [#56062](https://github.com/nodejs/node/pull/56062) +- \[[`974b7b61ef`](https://github.com/nodejs/node/commit/974b7b61ef)] - **src**: use std::string_view for process emit fns (Yagiz Nizipli) [#56086](https://github.com/nodejs/node/pull/56086) +- \[[`4559fac862`](https://github.com/nodejs/node/commit/4559fac862)] - **src**: remove dead code in async_wrap (Gerhard Stöbich) [#56065](https://github.com/nodejs/node/pull/56065) +- \[[`e42e4b20be`](https://github.com/nodejs/node/commit/e42e4b20be)] - **src**: avoid copy on getV8FastApiCallCount (Yagiz Nizipli) [#56081](https://github.com/nodejs/node/pull/56081) +- \[[`c188660e8b`](https://github.com/nodejs/node/commit/c188660e8b)] - **src**: fix check fd (theanarkh) [#56000](https://github.com/nodejs/node/pull/56000) +- \[[`d894cb76ff`](https://github.com/nodejs/node/commit/d894cb76ff)] - **src**: safely remove the last line from dotenv (Shima Ryuhei) [#55982](https://github.com/nodejs/node/pull/55982) +- \[[`2ca9f4b65a`](https://github.com/nodejs/node/commit/2ca9f4b65a)] - **src**: fix kill signal on Windows (Hüseyin Açacak) [#55514](https://github.com/nodejs/node/pull/55514) +- \[[`2e3ca1bbdd`](https://github.com/nodejs/node/commit/2e3ca1bbdd)] - **(SEMVER-MINOR)** **src**: add cli option to preserve env vars on dr (Rafael Gonzaga) [#55697](https://github.com/nodejs/node/pull/55697) +- \[[`359fff1c4e`](https://github.com/nodejs/node/commit/359fff1c4e)] - **src,build**: add no user defined deduction guides of CTAD check (Chengzhong Wu) [#56071](https://github.com/nodejs/node/pull/56071) +- \[[`57bb983215`](https://github.com/nodejs/node/commit/57bb983215)] - **(SEMVER-MINOR)** **src,lib**: stabilize permission model (Rafael Gonzaga) [#56201](https://github.com/nodejs/node/pull/56201) +- \[[`d352b0465a`](https://github.com/nodejs/node/commit/d352b0465a)] - **stream**: commit pull-into descriptors after filling from queue (Mattias Buelens) [#56072](https://github.com/nodejs/node/pull/56072) +- \[[`eef9bd1bf6`](https://github.com/nodejs/node/commit/eef9bd1bf6)] - **test**: remove test-sqlite-statement-sync flaky designation (Luigi Pinca) [#56051](https://github.com/nodejs/node/pull/56051) +- \[[`8718135a5d`](https://github.com/nodejs/node/commit/8718135a5d)] - **test**: use --permission over --experimental-permission (Rafael Gonzaga) [#56239](https://github.com/nodejs/node/pull/56239) +- \[[`9c68d4f180`](https://github.com/nodejs/node/commit/9c68d4f180)] - **test**: remove exludes for sea tests on PPC (Michael Dawson) [#56217](https://github.com/nodejs/node/pull/56217) +- \[[`c5d0472968`](https://github.com/nodejs/node/commit/c5d0472968)] - **test**: fix test-abortsignal-drop-settled-signals flakiness (Edigleysson Silva (Edy)) [#56197](https://github.com/nodejs/node/pull/56197) +- \[[`4adf518689`](https://github.com/nodejs/node/commit/4adf518689)] - **test**: move localizationd data from `test-icu-env` to external file (Livia Medeiros) [#55618](https://github.com/nodejs/node/pull/55618) +- \[[`02383b4267`](https://github.com/nodejs/node/commit/02383b4267)] - **test**: update WPT for url to 6fa3fe8a92 (Node.js GitHub Bot) [#56136](https://github.com/nodejs/node/pull/56136) +- \[[`0e24eebf24`](https://github.com/nodejs/node/commit/0e24eebf24)] - **test**: remove `hasOpenSSL3x` utils (Antoine du Hamel) [#56164](https://github.com/nodejs/node/pull/56164) +- \[[`381e705385`](https://github.com/nodejs/node/commit/381e705385)] - **test**: update streams wpt (Mattias Buelens) [#56072](https://github.com/nodejs/node/pull/56072) +- \[[`ad107ca0d9`](https://github.com/nodejs/node/commit/ad107ca0d9)] - **test**: remove test-fs-utimes flaky designation (Luigi Pinca) [#56052](https://github.com/nodejs/node/pull/56052) +- \[[`e15c5dab79`](https://github.com/nodejs/node/commit/e15c5dab79)] - **test**: ensure `cli.md` is in alphabetical order (Antoine du Hamel) [#56025](https://github.com/nodejs/node/pull/56025) +- \[[`d0302e7d2d`](https://github.com/nodejs/node/commit/d0302e7d2d)] - **test**: update WPT for WebCryptoAPI to 3e3374efde (Node.js GitHub Bot) [#56093](https://github.com/nodejs/node/pull/56093) +- \[[`a0b1e8f400`](https://github.com/nodejs/node/commit/a0b1e8f400)] - **test**: update WPT for WebCryptoAPI to 76dfa54e5d (Node.js GitHub Bot) [#56093](https://github.com/nodejs/node/pull/56093) +- \[[`211f058a12`](https://github.com/nodejs/node/commit/211f058a12)] - **test**: move test-worker-arraybuffer-zerofill to parallel (Luigi Pinca) [#56053](https://github.com/nodejs/node/pull/56053) +- \[[`c52bc5d71c`](https://github.com/nodejs/node/commit/c52bc5d71c)] - **test**: update WPT for url to 67880a4eb83ca9aa732eec4b35a1971ff5bf37ff (Node.js GitHub Bot) [#55999](https://github.com/nodejs/node/pull/55999) +- \[[`1a78bde8d4`](https://github.com/nodejs/node/commit/1a78bde8d4)] - **test**: make HTTP/1.0 connection test more robust (Arne Keller) [#55959](https://github.com/nodejs/node/pull/55959) +- \[[`ff7b1445a0`](https://github.com/nodejs/node/commit/ff7b1445a0)] - **test**: convert readdir test to use test runner (Thomas Chetwin) [#55750](https://github.com/nodejs/node/pull/55750) +- \[[`b296b5a4e4`](https://github.com/nodejs/node/commit/b296b5a4e4)] - **test**: make x509 crypto tests work with BoringSSL (Shelley Vohr) [#55927](https://github.com/nodejs/node/pull/55927) +- \[[`97458ad74b`](https://github.com/nodejs/node/commit/97458ad74b)] - **test**: fix determining lower priority (Livia Medeiros) [#55908](https://github.com/nodejs/node/pull/55908) +- \[[`bb4aa7a296`](https://github.com/nodejs/node/commit/bb4aa7a296)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55997](https://github.com/nodejs/node/pull/55997) +- \[[`fb98fa4967`](https://github.com/nodejs/node/commit/fb98fa4967)] - **test_runner**: refactor Promise chain in run() (Colin Ihrig) [#55958](https://github.com/nodejs/node/pull/55958) +- \[[`18c94961f8`](https://github.com/nodejs/node/commit/18c94961f8)] - **test_runner**: refactor build Promise in Suite() (Colin Ihrig) [#55958](https://github.com/nodejs/node/pull/55958) +- \[[`bf3967fd3a`](https://github.com/nodejs/node/commit/bf3967fd3a)] - **test_runner**: simplify hook running logic (Colin Ihrig) [#55963](https://github.com/nodejs/node/pull/55963) +- \[[`8c065dc61e`](https://github.com/nodejs/node/commit/8c065dc61e)] - **test_runner**: mark context.plan() as stable (Colin Ihrig) [#55895](https://github.com/nodejs/node/pull/55895) +- \[[`8ff082cf48`](https://github.com/nodejs/node/commit/8ff082cf48)] - **test_runner**: mark snapshot testing as stable (Colin Ihrig) [#55897](https://github.com/nodejs/node/pull/55897) +- \[[`7ae125cef4`](https://github.com/nodejs/node/commit/7ae125cef4)] - **tools**: fix `node:` enforcement for docs (Antoine du Hamel) [#56284](https://github.com/nodejs/node/pull/56284) +- \[[`0b489116a3`](https://github.com/nodejs/node/commit/0b489116a3)] - **tools**: update github_reporter to 1.7.2 (Node.js GitHub Bot) [#56205](https://github.com/nodejs/node/pull/56205) +- \[[`5306819fac`](https://github.com/nodejs/node/commit/5306819fac)] - **tools**: add REPLACEME check to workflow (Mert Can Altin) [#56251](https://github.com/nodejs/node/pull/56251) +- \[[`4e3cab44cb`](https://github.com/nodejs/node/commit/4e3cab44cb)] - **tools**: use `github.actor` instead of bot username for release proposals (Antoine du Hamel) [#56232](https://github.com/nodejs/node/pull/56232) +- \[[`3e8938463a`](https://github.com/nodejs/node/commit/3e8938463a)] - _**Revert**_ "**tools**: disable automated libuv updates" (Luigi Pinca) [#56223](https://github.com/nodejs/node/pull/56223) +- \[[`98ea499e36`](https://github.com/nodejs/node/commit/98ea499e36)] - **tools**: update gyp-next to 0.19.1 (Anna Henningsen) [#56111](https://github.com/nodejs/node/pull/56111) +- \[[`2e76cd2a8b`](https://github.com/nodejs/node/commit/2e76cd2a8b)] - **tools**: fix release proposal linter to support more than 1 folk preparing (Antoine du Hamel) [#56203](https://github.com/nodejs/node/pull/56203) +- \[[`9fa0e41665`](https://github.com/nodejs/node/commit/9fa0e41665)] - **tools**: enable linter for `tools/icu/**` (Livia Medeiros) [#56176](https://github.com/nodejs/node/pull/56176) +- \[[`d6e1efcc59`](https://github.com/nodejs/node/commit/d6e1efcc59)] - **tools**: use commit title as PR title when creating release proposal (Antoine du Hamel) [#56165](https://github.com/nodejs/node/pull/56165) +- \[[`a88e4ce55e`](https://github.com/nodejs/node/commit/a88e4ce55e)] - **tools**: update gyp-next to 0.19.0 (Node.js GitHub Bot) [#56158](https://github.com/nodejs/node/pull/56158) +- \[[`bd0760efbc`](https://github.com/nodejs/node/commit/bd0760efbc)] - **tools**: bump the eslint group in /tools/eslint with 4 updates (dependabot\[bot]) [#56099](https://github.com/nodejs/node/pull/56099) +- \[[`c5b1cf4b12`](https://github.com/nodejs/node/commit/c5b1cf4b12)] - **tools**: improve release proposal PR opening (Antoine du Hamel) [#56161](https://github.com/nodejs/node/pull/56161) +- \[[`12baefb13d`](https://github.com/nodejs/node/commit/12baefb13d)] - **tools**: update `create-release-proposal` workflow (Antoine du Hamel) [#56054](https://github.com/nodejs/node/pull/56054) +- \[[`e6e1495f1a`](https://github.com/nodejs/node/commit/e6e1495f1a)] - **tools**: fix update-undici script (Michaël Zasso) [#56069](https://github.com/nodejs/node/pull/56069) +- \[[`ed635c90da`](https://github.com/nodejs/node/commit/ed635c90da)] - **tools**: allow dispatch of `tools.yml` from forks (Antoine du Hamel) [#56008](https://github.com/nodejs/node/pull/56008) +- \[[`1e628d1f37`](https://github.com/nodejs/node/commit/1e628d1f37)] - **tools**: fix nghttp3 updater script (Antoine du Hamel) [#56007](https://github.com/nodejs/node/pull/56007) +- \[[`1af3599b7e`](https://github.com/nodejs/node/commit/1af3599b7e)] - **tools**: filter release keys to reduce interactivity (Antoine du Hamel) [#55950](https://github.com/nodejs/node/pull/55950) +- \[[`1893be4a9c`](https://github.com/nodejs/node/commit/1893be4a9c)] - **tools**: update WPT updater (Antoine du Hamel) [#56003](https://github.com/nodejs/node/pull/56003) +- \[[`f89bd2ba8a`](https://github.com/nodejs/node/commit/f89bd2ba8a)] - **tools**: add WPT updater for specific subsystems (Mert Can Altin) [#54460](https://github.com/nodejs/node/pull/54460) +- \[[`61901372d5`](https://github.com/nodejs/node/commit/61901372d5)] - **tools**: use tokenless Codecov uploads (Michaël Zasso) [#55943](https://github.com/nodejs/node/pull/55943) +- \[[`312bb4dff8`](https://github.com/nodejs/node/commit/312bb4dff8)] - **tools**: lint js in `doc/**/*.md` (Livia Medeiros) [#55904](https://github.com/nodejs/node/pull/55904) +- \[[`7b476f637c`](https://github.com/nodejs/node/commit/7b476f637c)] - **tools**: add linter for release commit proposals (Antoine du Hamel) [#55923](https://github.com/nodejs/node/pull/55923) +- \[[`22d7017191`](https://github.com/nodejs/node/commit/22d7017191)] - **tools**: fix riscv64 build failed (Lu Yahan) [#52888](https://github.com/nodejs/node/pull/52888) +- \[[`f4f777f4d2`](https://github.com/nodejs/node/commit/f4f777f4d2)] - **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) +- \[[`a648e4c44a`](https://github.com/nodejs/node/commit/a648e4c44a)] - **util**: harden more built-in classes against prototype pollution (Antoine du Hamel) [#56225](https://github.com/nodejs/node/pull/56225) +- \[[`4a1b51b5a9`](https://github.com/nodejs/node/commit/4a1b51b5a9)] - **util**: fix Latin1 decoding to return string output (Mert Can Altin) [#56222](https://github.com/nodejs/node/pull/56222) +- \[[`9e98e86604`](https://github.com/nodejs/node/commit/9e98e86604)] - **util**: do not rely on mutable `Object` and `Function`' `constructor` prop (Antoine du Hamel) [#56188](https://github.com/nodejs/node/pull/56188) +- \[[`374eb415fd`](https://github.com/nodejs/node/commit/374eb415fd)] - **util**: add fast path for Latin1 decoding (Mert Can Altin) [#55275](https://github.com/nodejs/node/pull/55275) +- \[[`bcfe9c80fc`](https://github.com/nodejs/node/commit/bcfe9c80fc)] - **(SEMVER-MINOR)** **util**: add sourcemap support to getCallSites (Marco Ippolito) [#55589](https://github.com/nodejs/node/pull/55589) +- \[[`2aa77c8a8f`](https://github.com/nodejs/node/commit/2aa77c8a8f)] - **v8,tools**: expose experimental wasm revectorize feature (Yolanda-Chen) [#54896](https://github.com/nodejs/node/pull/54896) +- \[[`bfd11d7661`](https://github.com/nodejs/node/commit/bfd11d7661)] - **worker**: fix crash when a worker joins after exit (Stephen Belanger) [#56191](https://github.com/nodejs/node/pull/56191) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.13.0/node-v22.13.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.13.0/node-v22.13.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.13.0/node-v22.13.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.13.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.13.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.13.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.13.0/node-v22.13.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.13.0/node-v22.13.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.13.0/node-v22.13.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.13.0/node-v22.13.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.13.0/node-v22.13.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.13.0/node-v22.13.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.13.0/node-v22.13.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.13.0/node-v22.13.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.13.0/node-v22.13.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.13.0/node-v22.13.0.tar.gz \ +Other release files: https://nodejs.org/dist/v22.13.0/ \ +Documentation: https://nodejs.org/docs/v22.13.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +24d17c7f6b9b18fe225ef4b70f030f86bc9e268b47847e5b4d78f82a377274bc node-v22.13.0-aix-ppc64.tar.gz +ffb356d8fc3ec6a3bb1ee9333af9de77380c8c34b2697092fda5f497b2c50863 node-v22.13.0-arm64.msi +bc1e374e7393e2f4b20e5bbc157d02e9b1fb2c634b2f992136b38fb8ca2023b7 node-v22.13.0-darwin-arm64.tar.gz +71b0893ef6a55295994f38002fada15c9a76a3cedeb36745fde0403741d183c6 node-v22.13.0-darwin-arm64.tar.xz +cfaaf5edde585a15547f858f5b3b62a292cf5929a23707b6f1e36c29a32487be node-v22.13.0-darwin-x64.tar.gz +186d3fa8691e688be431de80af9f0f41f17f091790b324df9efd51578ac20aeb node-v22.13.0-darwin-x64.tar.xz +e4a0ba46c194eb9390c2f2177f4a6ab4f43f4c4029f6b0b239bf5cdb701c307d node-v22.13.0-headers.tar.gz +6e4f8721c8e9b669f5c91e806e6d7238c4f95db78198f66da0476f54fb9986d4 node-v22.13.0-headers.tar.xz +e0cc088cb4fb2e945d3d5c416c601e1101a15f73e0f024c9529b964d9f6dce5b node-v22.13.0-linux-arm64.tar.gz +5de54a12983d0de6ba23597d4d0194e64933e26b0f04a469db3be9c3e18b6b2b node-v22.13.0-linux-arm64.tar.xz +6d1b640276bafc1a409886390bae6d20e07f18dae6904b860127a402409621e0 node-v22.13.0-linux-armv7l.tar.gz +308687472523deee7abacc342e753e9b402ff4b178025374668039996b5c9699 node-v22.13.0-linux-armv7l.tar.xz +90b96eb76faf409bdac018b2f7c91343983201f518382ac7f538b7758325ba47 node-v22.13.0-linux-ppc64le.tar.gz +3b0e5b0c2953b57385b936b415a1e3cd03ff63ceca6b7badc40790f0d4e25759 node-v22.13.0-linux-ppc64le.tar.xz +bef2a7077a3a6aa66bb0292d1fbaea929471aabcb1937741c8db50d6372b8da4 node-v22.13.0-linux-s390x.tar.gz +f0a19c73fc8410c8ee649b1ec7a18916a9d555d237d03f7a932481c808e5ebc1 node-v22.13.0-linux-s390x.tar.xz +9a33e89093a0d946c54781dcb3ccab4ccf7538a7135286528ca41ca055e9b38f node-v22.13.0-linux-x64.tar.gz +3ff0d57063c33313d73d0bdcebc4c778ad6be948234584694a042c6fe57164f6 node-v22.13.0-linux-x64.tar.xz +c56028a0df18075ba3302cf1cc75ce2dde39676b251ddc3e9524e61bf9de8a0b node-v22.13.0.pkg +38e15a1d0dd0e95c237bc4651d7c9930a78d3fe7954a7ee7693b403f2d879e46 node-v22.13.0.tar.gz +e50db6730716ba2ae953cf99d10c80295bd33bb72d3c829d9e99f6af56d626c7 node-v22.13.0.tar.xz +5f441e2f3da291051971345e1f8bf16bdc1314985fb2dac806217463d99d176a node-v22.13.0-win-arm64.7z +8ca2c90ae0373d69e13301293306c31ea9afca2780b8325b6ca059319479e560 node-v22.13.0-win-arm64.zip +a81087ab40a4336908b7cfd3473b9571549b045f38fcdb7181cca979ceadd018 node-v22.13.0-win-x64.7z +b0feb09ebf41328628e7383f7a092fb7342ce1e05c867a90cf8f1379205a8429 node-v22.13.0-win-x64.zip +e7325b3da93357965f756b5473bbf3e8dccaaf72f5607ac58e2aae5eedcc0d84 node-v22.13.0-win-x86.7z +84678ec9e0a1d52a040187fc50c1932cc17bda146fb27b24ae9d368c2212c795 node-v22.13.0-win-x86.zip +5c5a0c9a1d2ca9fd342691312d859d26c78b83538720938c243a3269ce64b7af node-v22.13.0-x64.msi +8c96b25e8b397d31319b0c0eacc564fa86e1fdae1d08246c4810a2281329ba91 node-v22.13.0-x86.msi +903ca2cad56d9fe18b90659e037d84c7518f555b8796dcbcb8fb53e2d6eb7904 win-arm64/node.exe +988eb8c60a5ade17e652dbdb60d56d3c6ad5e599a99ce04932b8c4c86583cdaf win-arm64/node.lib +10d6eef5c30032941e807b8a869cbf90956ced1a46c0e18832ce846ef0af1545 win-arm64/node_pdb.7z +d1f556c3292c9a84b318866a01d622b1a4dea064aa11cf215c4d630ca308724e win-arm64/node_pdb.zip +364dbc8442f8d5c04fd4226bcfcf8e60d3268627eb1d7be214a91bb7d74cdbb9 win-x64/node.exe +65e45757c026c93a170743a811ef1b921ae12d6d9dd62d258bbbca0626687626 win-x64/node.lib +9d4e041682b08b22549dc6d54960e292962f553d51c4a5c9cac0030667bc3c7d win-x64/node_pdb.7z +a6361221cd937c4a0a333cbf38529053ade535047cd2aab7a53c99de72faa0f1 win-x64/node_pdb.zip +e98ff9f9f847f1040aee0858de49c993df69679adcf552262042cb2cc26bc948 win-x86/node.exe +79bae10059e833ce7fa4de05e5601034461327e2e7cb75c2144b87d4ab5ac547 win-x86/node.lib +06064b3fb03e0af9410d1a94a958952e9de82951ea84d835b2a1eb3dbdf8d275 win-x86/node_pdb.7z +9d6fa1bff9bf6aca45eec7f2cf16b0c387e960ee625596459390ea6ca43b362d win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEEI9StI21e7DMQ5spl7AUGb2S+AoFAmd9g/YACgkQl7AUGb2S ++ApwHRAAxTs6XCEUzUDZX6uJi1FOydrKhvgh1LB4EyrBzE+DY0f6escaVK6PkUw1 +R0YKsmlRgG6gn/eLXCfqcMFcl7q0jOr9V6651oCjABsTCMdMYfn281KueafD0UNz +WKYfP8ZMCjCL1FXlD99KGCfEjBGgHdlHf5etng2IfzTbHd7OyFEN8xOCvyoWIfCw +Nj8qiIK5E9LuDl9hwPOdxQLSkloQKVxnE5lfcUw/jpPFxeTMv8Nx4G5us4q9x7Mn +X5sCSYhX0Dlqidy55g2KWAM+Lv6l8fQKaVi/5PcafnjLgeJmKYfvFdK5MpmhYOeX +qq+S6BTqe7QUnLDVlWxHZJcVAtbSNEA4X1TZci44dNA5jn8AZxFWBJPhqV0UQ9ql +6OgI4jTJ5MODEtCaSi3fchQk7cUlyFRWRywqLkgc/jIydpxK2lptDVWPqjouboXj +hAWcM8QFjDimvDnGYUe81jMaJZsNR6BqTE5g2+CqL5mCcJiwwsC3N3axuFokOz0a +46Tp+mz2ys5SIVtX0yolBLBJGsPGOnxD2C2t4Um0DID+LyEajUafFpcOca9g7280 +7QDKg/EbNW1XTU3k2rl1JzB6qIctkKxf9wTi4gSjp7uvCEcAEtxx93cHgi/FFu+U +wb8N1cpuHelq5y7Oe0kw7dQE4tLwOi1aVHLk4lcpeJ2ff3uZsfE= +=f9Gb +-----END PGP SIGNATURE----- +``` From 8fc576571a1a9c0e9089802e09ec3c42d5c8a7cc Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Wed, 8 Jan 2025 03:42:26 +0100 Subject: [PATCH 0245/1385] hot fix: fixed i18n and i18n types (#7394) --- apps/site/i18n.tsx | 6 +++--- packages/i18n/lib/index.mjs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index b11472b589d77..81209f2b5ed71 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -13,9 +13,9 @@ const loadLocaleDictionary = async (locale: string) => { } if (availableLocaleCodes.includes(locale)) { - // Other languages don't really require HMR as they will never be development languages - // so we can load them dynamically - const messages = importLocale(locale); + // Other languages don't really require HMR as they + // will never be development languages so we can load them dynamically + const messages = await importLocale(locale); // Use default messages as fallback return deepMerge(defaultMessages, messages); diff --git a/packages/i18n/lib/index.mjs b/packages/i18n/lib/index.mjs index a1baf03f5db71..33a2602445a12 100644 --- a/packages/i18n/lib/index.mjs +++ b/packages/i18n/lib/index.mjs @@ -6,7 +6,7 @@ import localeConfig from '@node-core/website-i18n/config.json' with { type: 'jso * Imports a locale when exists from the locales directory * * @param {string} locale The locale code to import - * @returns {Record<string, any>} The imported locale + * @returns {Promise<Record<string, any>>} The imported locale */ export const importLocale = async locale => { return import(`../locales/${locale}.json`).then(f => f.default); From d61ffd8837241c123b0b46144d3cfb874b7245c0 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Wed, 8 Jan 2025 14:51:29 -0600 Subject: [PATCH 0246/1385] 7342 edit this translation (#7389) * use translation * feat: translate "Edit this page", linking appropriately based on locale --- apps/site/components/withMetaBar.tsx | 17 +++++++++++++++-- apps/site/next.constants.mjs | 6 ++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index 612052305c51c..b06fd40704a47 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useFormatter } from 'next-intl'; +import { useFormatter, useLocale, useTranslations } from 'next-intl'; import type { FC } from 'react'; import MetaBar from '@/components/Containers/MetaBar'; @@ -10,6 +10,8 @@ import WithAvatarGroup from '@/components/withAvatarGroup'; import { useClientContext } from '@/hooks/react-client'; import useMediaQuery from '@/hooks/react-client/useMediaQuery'; import { DEFAULT_DATE_FORMAT } from '@/next.calendar.constants.mjs'; +import { TRANSLATION_URL } from '@/next.constants.mjs'; +import { defaultLocale } from '@/next.locales.mjs'; import { getGitHubBlobUrl } from '@/util/gitHubUtils'; const WithMetaBar: FC = () => { @@ -22,6 +24,9 @@ const WithMetaBar: FC = () => { const usernames = frontmatter.authors?.split(',').map(author => author.trim()) ?? []; + const t = useTranslations(); + const locale = useLocale(); + // Since we cannot show the same number of avatars in Mobile / Tablet // resolution as we do on desktop and there is overflow, we are adjusting // the number of avatars manually for the resolutions below @@ -47,7 +52,15 @@ const WithMetaBar: FC = () => { 'components.metabar.contribute': ( <> <GitHub className="fill-neutral-700 dark:fill-neutral-100" /> - <Link href={getGitHubBlobUrl(filename)}>Edit this page</Link> + <Link + href={ + locale === defaultLocale.code + ? getGitHubBlobUrl(filename) + : TRANSLATION_URL + } + > + {t('components.metabar.contributeText')} + </Link> </> ), }} diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index c1d75c04dd6f0..3df5797431b16 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -187,3 +187,9 @@ export const ORAMA_CLOUD_API_KEY = * Note: This has no NEXT_PUBLIC prefix as it should not be exposed to the Browser. */ export const GITHUB_API_KEY = process.env.NEXT_GITHUB_API_KEY || ''; + +/** + * The resource we point people to when discussing internationalization efforts. + */ +export const TRANSLATION_URL = + 'https://github.com/nodejs/nodejs.org/blob/main/TRANSLATION.md#how-to-translate'; From 1b10adcfc2d03a51885f7bf4d9bc6698a1013c40 Mon Sep 17 00:00:00 2001 From: Saeed <32861976+saeid1994@users.noreply.github.com> Date: Sat, 11 Jan 2025 01:29:52 +0330 Subject: [PATCH 0247/1385] Update event-loop-timers-and-nexttick.md (#7364) Fix typo in event loop documentation: replace 'a person' with 'the event loop' for clarity and accuracy. Signed-off-by: Saeed <32861976+saeid1994@users.noreply.github.com> --- .../learn/asynchronous-work/event-loop-timers-and-nexttick.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md b/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md index 0515ed1a4d9bd..1f6680e9464ab 100644 --- a/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md +++ b/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md @@ -190,7 +190,7 @@ those timers' callbacks. ### check -This phase allows a person to execute callbacks immediately after the +This phase allows the event loop to execute callbacks immediately after the **poll** phase has completed. If the **poll** phase becomes idle and scripts have been queued with `setImmediate()`, the event loop may continue to the **check** phase rather than waiting. From 0cd47e12a64f5f195609c3fe95510ea1af59f7f4 Mon Sep 17 00:00:00 2001 From: Mike <154029656+mootoday@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:12:46 +0900 Subject: [PATCH 0248/1385] docs: add Devbox as commumity download option (#7370) * docs: add Devbox as commumity download option * Update apps/site/components/Icons/Platform/Devbox.tsx Co-authored-by: Michael Esteban <mickel13@gmail.com> Signed-off-by: @mootoday <154029656+mootoday@users.noreply.github.com> * Update apps/site/components/Icons/Platform/Devbox.tsx Co-authored-by: Michael Esteban <mickel13@gmail.com> Signed-off-by: @mootoday <154029656+mootoday@users.noreply.github.com> * chore: add Devbox platform icon story * Update apps/site/util/downloadUtils.tsx Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Signed-off-by: Mike <154029656+mootoday@users.noreply.github.com> --------- Signed-off-by: @mootoday <154029656+mootoday@users.noreply.github.com> Signed-off-by: Mike <154029656+mootoday@users.noreply.github.com> Co-authored-by: Michael Esteban <mickel13@gmail.com> Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> --- .../Icons/InstallationMethod/Devbox.tsx | 21 +++++++++++++++++++ .../Icons/InstallationMethod/index.ts | 3 ++- .../__design__/platform-logos.stories.tsx | 1 + apps/site/snippets/en/download/devbox.bash | 14 +++++++++++++ apps/site/types/release.ts | 8 ++++++- apps/site/util/downloadUtils.tsx | 9 ++++++++ packages/i18n/locales/en.json | 1 + 7 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 apps/site/components/Icons/InstallationMethod/Devbox.tsx create mode 100644 apps/site/snippets/en/download/devbox.bash diff --git a/apps/site/components/Icons/InstallationMethod/Devbox.tsx b/apps/site/components/Icons/InstallationMethod/Devbox.tsx new file mode 100644 index 0000000000000..5f04deead0318 --- /dev/null +++ b/apps/site/components/Icons/InstallationMethod/Devbox.tsx @@ -0,0 +1,21 @@ +import type { FC, SVGProps } from 'react'; + +const Devbox: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + xmlns="http://www.w3.org/2000/svg" + width="32" + height="32" + viewBox="0 0 72 82" + fill="none" + {...props} + > + <path + fillRule="evenodd" + clipRule="evenodd" + d="M13 10C5.8203 10 0 15.8203 0 23V69C0 76.1797 5.8203 82 13 82H59C66.1797 82 72 76.1797 72 69V23C72 15.8203 66.1797 10 59 10H13ZM43.4517 27.3216L36.736 26C35.7684 30.5522 34.8025 35.0963 33.8373 39.6375C32.0633 47.984 30.2914 56.3205 28.5145 64.6784C30.6514 65.0972 32.7246 65.5057 34.8238 65.9194L35.2326 66C37.9763 53.0902 40.708 40.2361 43.4517 27.3216ZM17.2331 39.8993C19.3084 37.7699 21.3837 35.6405 23.4662 33.5048V33.5025C24.2473 34.2026 25.0175 34.8927 25.7871 35.5823C26.6771 36.3799 27.5665 37.1768 28.471 37.9877C27.9368 38.5369 27.4041 39.0844 26.8723 39.6311C24.7162 41.8475 22.5739 44.0496 20.3943 46.2892C22.0822 48.0264 23.7644 49.7572 25.4589 51.5006C26.4583 52.5288 27.4619 53.5614 28.4735 54.6023C27.1593 55.7919 25.8603 56.9699 24.5311 58.1753C24.1785 58.495 23.8238 58.8167 23.4662 59.1409C19.3181 54.8671 15.1892 50.6118 11 46.2938C13.0825 44.1581 15.1578 42.0287 17.2331 39.8993ZM51.721 36.7763C54.8139 39.9486 57.9016 43.1155 61 46.2915V46.2938C58.3761 48.9999 55.7608 51.6957 53.1384 54.3989C51.6078 55.9767 50.0748 57.557 48.5362 59.1433C48.0002 58.6574 47.4699 58.1768 46.9425 57.6989C45.8007 56.6641 44.6721 55.6414 43.5265 54.6023C44.5387 53.5611 45.5444 52.5265 46.5489 51.4931C48.2291 49.7646 49.9058 48.0397 51.6033 46.2938C48.9223 43.5344 46.2534 40.7889 43.529 37.9877C44.1996 37.3868 44.8634 36.7918 45.5271 36.1968C46.5207 35.3062 47.5143 34.4155 48.5314 33.5048C49.5956 34.5963 50.6586 35.6866 51.721 36.7763Z" + fill="#280459" + /> + </svg> +); + +export default Devbox; diff --git a/apps/site/components/Icons/InstallationMethod/index.ts b/apps/site/components/Icons/InstallationMethod/index.ts index 6e2a87de11aee..d7c980e0a219e 100644 --- a/apps/site/components/Icons/InstallationMethod/index.ts +++ b/apps/site/components/Icons/InstallationMethod/index.ts @@ -1,7 +1,8 @@ import Choco from '@/components/Icons/InstallationMethod/Choco'; +import Devbox from '@/components/Icons/InstallationMethod/Devbox'; import Docker from '@/components/Icons/InstallationMethod/Docker'; import FNM from '@/components/Icons/InstallationMethod/FNM'; import Homebrew from '@/components/Icons/InstallationMethod/Homebrew'; import NVM from '@/components/Icons/InstallationMethod/NVM'; -export default { Choco, Docker, FNM, Homebrew, NVM }; +export default { Choco, Devbox, Docker, FNM, Homebrew, NVM }; diff --git a/apps/site/components/__design__/platform-logos.stories.tsx b/apps/site/components/__design__/platform-logos.stories.tsx index 87c773c121066..1a6c77ebb282d 100644 --- a/apps/site/components/__design__/platform-logos.stories.tsx +++ b/apps/site/components/__design__/platform-logos.stories.tsx @@ -16,6 +16,7 @@ export const PlatformLogos: StoryObj = { <InstallMethodIcons.Docker width={64} height={64} /> <InstallMethodIcons.Homebrew width={64} height={64} /> <InstallMethodIcons.NVM width={64} height={64} /> + <InstallMethodIcons.Devbox width={64} height={64} /> </div> <div className="flex flex-col items-center gap-4"> <InstallMethodIcons.Choco width={64} height={64} /> diff --git a/apps/site/snippets/en/download/devbox.bash b/apps/site/snippets/en/download/devbox.bash new file mode 100644 index 0000000000000..791e40fb4c71c --- /dev/null +++ b/apps/site/snippets/en/download/devbox.bash @@ -0,0 +1,14 @@ +# Download and install Devbox +curl -fsSL https://get.jetify.com/devbox | bash + +# Initialize Devbox in your project +devbox init + +# Download and install Node.js: +devbox add node@${props.release.major} + +# Open a Devbox shell +devbox shell + +# Verify the Node.js version: +node -v # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index 3ac64a633d340..ec8333c75ea01 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -2,7 +2,13 @@ import type { DownloadSnippet } from '@/types/downloads'; import type { NodeRelease } from '@/types/releases'; import type { UserOS, UserPlatform } from '@/types/userOS'; -export type InstallationMethod = 'NVM' | 'FNM' | 'BREW' | 'DOCKER' | 'CHOCO'; +export type InstallationMethod = + | 'NVM' + | 'FNM' + | 'BREW' + | 'DEVBOX' + | 'DOCKER' + | 'CHOCO'; export type PackageManager = 'NPM' | 'YARN' | 'PNPM'; // Items with a pipe/default value mean that they are auto inferred diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index 4720ed990a156..a01885b2e05c8 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -32,6 +32,7 @@ export enum InstallationMethodLabel { FNM = 'fnm', BREW = 'Brew', CHOCO = 'Chocolatey', + DEVBOX = 'Devbox', DOCKER = 'Docker', } @@ -182,6 +183,14 @@ export const INSTALL_METHODS: Array< url: 'https://brew.sh/', info: 'layouts.download.codeBox.platformInfo.brew', }, + { + label: InstallationMethodLabel.DEVBOX, + value: 'DEVBOX', + compatibility: { os: ['WIN', 'MAC', 'LINUX'] }, + iconImage: <InstallMethodIcons.Devbox width={16} height={16} />, + url: 'https://jetify.com/devbox/', + info: 'layouts.download.codeBox.platformInfo.devbox', + }, { label: InstallationMethodLabel.CHOCO, value: 'CHOCO', diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 9f56b5c8fa6f9..fbff7014330a1 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -279,6 +279,7 @@ "fnm": "\"fnm\" is a cross-platform Node.js version manager.", "brew": "Homebrew is a package manager for macOS and Linux.", "choco": "Chocolatey is a package manager for Windows.", + "devbox": "Devbox creates isolated, reproducible development environments.", "docker": "Docker is a containerization platform." } } From 2e313133fb2879575c99a084ace9cd584ed16f97 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 06:01:46 -0600 Subject: [PATCH 0249/1385] [automated]: crowdin sync (#7398) * 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> * enables japanese * Update apps/site/pages/es/about/index.mdx Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- apps/site/pages/fr/download/current.mdx | 29 ++ apps/site/pages/fr/download/index.mdx | 29 ++ .../site/pages/ja/about/previous-releases.mdx | 13 + .../pages/ja/about/security-reporting.mdx | 64 ++++ apps/site/pages/ja/download/current.mdx | 28 ++ apps/site/pages/ja/download/index.mdx | 28 ++ .../ro/about/get-involved/collab-summit.md | 17 ++ .../pages/ro/about/get-involved/events.mdx | 16 + apps/site/pages/uk/about/governance.md | 2 +- .../pages/uk/about/security-reporting.mdx | 4 +- apps/site/pages/uk/download/current.mdx | 31 ++ apps/site/pages/uk/download/index.mdx | 31 ++ .../pages/uk/download/package-manager/all.md | 6 +- apps/site/pages/zh-tw/download/index.mdx | 2 +- apps/site/snippets/fr/download/fnm.bash | 11 + apps/site/snippets/fr/download/npm.bash | 2 + apps/site/snippets/fr/download/pnpm.bash | 5 + apps/site/snippets/fr/download/yarn.bash | 5 + apps/site/snippets/ja/download/brew.bash | 4 +- apps/site/snippets/ja/download/choco.bash | 8 + apps/site/snippets/ja/download/docker.bash | 11 + apps/site/snippets/ja/download/fnm.bash | 11 + apps/site/snippets/ja/download/npm.bash | 2 + apps/site/snippets/ja/download/nvm.bash | 9 + apps/site/snippets/ja/download/pnpm.bash | 5 + apps/site/snippets/ja/download/yarn.bash | 5 + apps/site/snippets/uk/download/brew.bash | 8 + apps/site/snippets/uk/download/choco.bash | 8 + apps/site/snippets/uk/download/docker.bash | 11 + apps/site/snippets/uk/download/fnm.bash | 11 + apps/site/snippets/uk/download/npm.bash | 2 + apps/site/snippets/uk/download/nvm.bash | 9 + apps/site/snippets/uk/download/pnpm.bash | 5 + apps/site/snippets/uk/download/yarn.bash | 5 + apps/site/snippets/zh-tw/download/brew.bash | 8 + apps/site/snippets/zh-tw/download/choco.bash | 8 + apps/site/snippets/zh-tw/download/docker.bash | 11 + apps/site/snippets/zh-tw/download/npm.bash | 2 + apps/site/snippets/zh-tw/download/nvm.bash | 9 + apps/site/snippets/zh-tw/download/pnpm.bash | 5 + apps/site/snippets/zh-tw/download/yarn.bash | 5 + packages/i18n/config.json | 2 +- packages/i18n/locales/ja.json | 287 ++++++++++++++++++ 43 files changed, 764 insertions(+), 10 deletions(-) create mode 100644 apps/site/pages/fr/download/current.mdx create mode 100644 apps/site/pages/fr/download/index.mdx create mode 100644 apps/site/pages/ja/about/security-reporting.mdx create mode 100644 apps/site/pages/ja/download/current.mdx create mode 100644 apps/site/pages/ja/download/index.mdx create mode 100644 apps/site/pages/ro/about/get-involved/collab-summit.md create mode 100644 apps/site/pages/ro/about/get-involved/events.mdx create mode 100644 apps/site/pages/uk/download/current.mdx create mode 100644 apps/site/pages/uk/download/index.mdx create mode 100644 apps/site/snippets/fr/download/fnm.bash create mode 100644 apps/site/snippets/fr/download/npm.bash create mode 100644 apps/site/snippets/fr/download/pnpm.bash create mode 100644 apps/site/snippets/fr/download/yarn.bash create mode 100644 apps/site/snippets/ja/download/choco.bash create mode 100644 apps/site/snippets/ja/download/docker.bash create mode 100644 apps/site/snippets/ja/download/fnm.bash create mode 100644 apps/site/snippets/ja/download/npm.bash create mode 100644 apps/site/snippets/ja/download/nvm.bash create mode 100644 apps/site/snippets/ja/download/pnpm.bash create mode 100644 apps/site/snippets/ja/download/yarn.bash create mode 100644 apps/site/snippets/uk/download/brew.bash create mode 100644 apps/site/snippets/uk/download/choco.bash create mode 100644 apps/site/snippets/uk/download/docker.bash create mode 100644 apps/site/snippets/uk/download/fnm.bash create mode 100644 apps/site/snippets/uk/download/npm.bash create mode 100644 apps/site/snippets/uk/download/nvm.bash create mode 100644 apps/site/snippets/uk/download/pnpm.bash create mode 100644 apps/site/snippets/uk/download/yarn.bash create mode 100644 apps/site/snippets/zh-tw/download/brew.bash create mode 100644 apps/site/snippets/zh-tw/download/choco.bash create mode 100644 apps/site/snippets/zh-tw/download/docker.bash create mode 100644 apps/site/snippets/zh-tw/download/npm.bash create mode 100644 apps/site/snippets/zh-tw/download/nvm.bash create mode 100644 apps/site/snippets/zh-tw/download/pnpm.bash create mode 100644 apps/site/snippets/zh-tw/download/yarn.bash create mode 100644 packages/i18n/locales/ja.json diff --git a/apps/site/pages/fr/download/current.mdx b/apps/site/pages/fr/download/current.mdx new file mode 100644 index 0000000000000..0b62d4f467e0d --- /dev/null +++ b/apps/site/pages/fr/download/current.mdx @@ -0,0 +1,29 @@ +--- +layout: download +title: Télécharger Node.js® +--- + +<section> +Obtenir Node.js® <Release.VersionDropdown /> pour <Release.OperatingSystemDropdown /> l'utiliser <Release.InstallationMethodDropdown /> avec <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + Ou obtenez Node.js® préconstruit <Release.OperatingSystemDropdown /> exécutant une <Release.PlatformDropdown /> architecture. + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. + +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. + +Apprenez à <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">vérifier</LinkWithArrow> les SHASUMS signés. + +Découvrez comment <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">compiler Node.js</LinkWithArrow> à partir des sources. + +Consultez nos binaires <LinkWithArrow href="https://nodejs.org/download/nightly/">chaque nuit</LinkWithArrow>, toutes les <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">versions précédentes</Link> ou les binaires <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">non officiels</LinkWithArrow> pour d'autres plateformes. + +</section> diff --git a/apps/site/pages/fr/download/index.mdx b/apps/site/pages/fr/download/index.mdx new file mode 100644 index 0000000000000..0b2935443796b --- /dev/null +++ b/apps/site/pages/fr/download/index.mdx @@ -0,0 +1,29 @@ +--- +layout: download +title: Télécharger Node.js® +--- + +<section> +Obtenir Node.js® <Release.VersionDropdown /> pour <Release.OperatingSystemDropdown /> l'utiliser <Release.InstallationMethodDropdown /> avec <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + Ou obtenez un Node.js® préconstruit <Release.OperatingSystemDropdown /> exécutant une <Release.PlatformDropdown /> architecture. + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. + +Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. + +Apprenez à <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">vérifier</LinkWithArrow> les SHASUMS signés. + +Découvrez comment <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">compiler Node.js</LinkWithArrow> à partir des sources. + +Consultez nos binaires <LinkWithArrow href="https://nodejs.org/download/nightly/">chaque nuit</LinkWithArrow>, toutes les <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">versions précédentes</Link> ou les binaires <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">non officiels</LinkWithArrow> pour d'autres plateformes. + +</section> diff --git a/apps/site/pages/ja/about/previous-releases.mdx b/apps/site/pages/ja/about/previous-releases.mdx index b7ab7d96b6a86..12e3aa7c1c00d 100644 --- a/apps/site/pages/ja/about/previous-releases.mdx +++ b/apps/site/pages/ja/about/previous-releases.mdx @@ -20,3 +20,16 @@ Node.jsのリリーススケジュールに関する詳しい情報は[GitHub](h ## 各バージョンの最新のリリース <DownloadReleasesTable /> + +## 公式とコミュニティー + +Node.jsのウェブサイトはNode.jsを非対話的な方法でインストールできるように数多くのインストール方法を提供しています。例えば、CLIやOSのパッケージマネージャー(`apt`など)、Node.jsのバージョンマネージャー(`nvm`など)を通してインストールすることができます。 + +Node.jsプロジェクトはコミュニティーの取り組みを普及させ、宣伝する試みとして、公式とコミュニティーの両方のインストール方法をリストする新しいダウンロードページを導入しました。この変更に伴い、「公式」と「コミュニティー」のインストール方法の概念を導入しました。「公式」とみなされるためにはインストール方法が以下の条件を満たしている必要があります: + +| 必要条件 | +| --------------------------------------------------------------------------------------------------------------------------------- | +| Node.jsの新しいリリースは公式リリースと同時に利用可能できなければならない | +| プロジェクトメンテナーはNode.jsと直接的なコミュニケーションも含めた密接な関係でなければらなない | +| Node.jsプロジェクトによって同梱されている公式バイナリーをダウンロードさせるインストール方法になっていなければならない | +| バイナリーが利用可能な場合にソースからビルドしたりNode.jsが提供する公式バイナリーを改変しないインストール方法にしなければいけない | diff --git a/apps/site/pages/ja/about/security-reporting.mdx b/apps/site/pages/ja/about/security-reporting.mdx new file mode 100644 index 0000000000000..af86a59df66a3 --- /dev/null +++ b/apps/site/pages/ja/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時間以内に勧告のコピーがNode.jsブログに公開されます。 + +通常、禁止日はCVEが発行されてから72時間に設定されます。ただし、これは問題の深刻度や修正の適用にかかる難易度によって異なる場合があります。 + +これらの工程には時間がかかる場合があります。特に他のプロジェクトの管理者との調整が必要な場合です。問題を可能な限り迅速に処理するためにあらゆる努力がなされます。ただし、情報の開示が一貫して処理されることを確保するために、上記のリリース工程に従うことが重要です。 + +## セキュリティー更新の受信 + +セキュリティーの問題に関する情報は次の方法で通知されます。 + +[Googleグループ](https://groups.google.com/group/nodejs-sec) +[Node.jsブログ](/blog) + +## この方針に関するご意見 + +これらの工程を改善する方法についてご意見がある場合は、[pull request](https://github.com/nodejs/nodejs.org)を作成するか、[issueを作成](https://github.com/nodejs/security-wg/issues/new)して議論してください。 + +## OpenSSFベストプラクティス + +<a + href="https://bestpractices.coreinfrastructure.org/projects/29" + style={{ display: 'inline-flex' }} +> + <img + alt="OpenSSFバッジ" + src="https://bestpractices.coreinfrastructure.org/projects/29/badge" + style={{ display: 'inline' }} + /> +</a> + +オープンソースセキュリティー財団(OpenSSF)の[ベストプラクティスバッジ](https://github.com/coreinfrastructure/best-practices-badge)は、Free/Libre and Open Source Software(FLOSS)プロジェクトがベストプラクティスに従っていることを示す方法です。プロジェクトはそれぞれのベストプラクティスに従っている方法を自発的に自己認証できます。バッジを使うことでどのFLOSSプロジェクトがベストプラクティスに従っているかを迅速に評価でき、結果としてより高品質で安全なソフトウェアを製造する可能性が高くなります。 diff --git a/apps/site/pages/ja/download/current.mdx b/apps/site/pages/ja/download/current.mdx new file mode 100644 index 0000000000000..aa1e295165498 --- /dev/null +++ b/apps/site/pages/ja/download/current.mdx @@ -0,0 +1,28 @@ +--- +layout: download +title: Node.js®をダウンロードする +--- + +<section> +<Release.OperatingSystemDropdown />用のNode.js® <Release.VersionDropdown />と<Release.PackageManagerDropdown />を<Release.InstallationMethodDropdown />を使ってダウンロードする + +<Release.ReleaseCodeBox /> + +<Release.Provider> + <Release.PlatformDropdown />アーキテクチャーで動作する<Release.OperatingSystemDropdown />用のビルド済みのNode.js®も利用できます。 + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 + +このバージョンの<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>を確認できます。 + +署名済みSHASUMSの<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">検証方法</LinkWithArrow>について詳しくはこちら。 + +ソースコードから<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.jsをビルドする方法</LinkWithArrow>はこちら。 + +<LinkWithArrow href="https://nodejs.org/download/nightly/">ナイトリー版</LinkWithArrow>のバイナリーや<Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">過去のリリース</Link>、その他のプラットフォーム用の<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非公式</LinkWithArrow>のバイナリーもあります。 +</section> diff --git a/apps/site/pages/ja/download/index.mdx b/apps/site/pages/ja/download/index.mdx new file mode 100644 index 0000000000000..aa1e295165498 --- /dev/null +++ b/apps/site/pages/ja/download/index.mdx @@ -0,0 +1,28 @@ +--- +layout: download +title: Node.js®をダウンロードする +--- + +<section> +<Release.OperatingSystemDropdown />用のNode.js® <Release.VersionDropdown />と<Release.PackageManagerDropdown />を<Release.InstallationMethodDropdown />を使ってダウンロードする + +<Release.ReleaseCodeBox /> + +<Release.Provider> + <Release.PlatformDropdown />アーキテクチャーで動作する<Release.OperatingSystemDropdown />用のビルド済みのNode.js®も利用できます。 + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 + +このバージョンの<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>を確認できます。 + +署名済みSHASUMSの<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">検証方法</LinkWithArrow>について詳しくはこちら。 + +ソースコードから<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.jsをビルドする方法</LinkWithArrow>はこちら。 + +<LinkWithArrow href="https://nodejs.org/download/nightly/">ナイトリー版</LinkWithArrow>のバイナリーや<Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">過去のリリース</Link>、その他のプラットフォーム用の<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非公式</LinkWithArrow>のバイナリーもあります。 +</section> diff --git a/apps/site/pages/ro/about/get-involved/collab-summit.md b/apps/site/pages/ro/about/get-involved/collab-summit.md new file mode 100644 index 0000000000000..678f4f051cae5 --- /dev/null +++ b/apps/site/pages/ro/about/get-involved/collab-summit.md @@ -0,0 +1,17 @@ +--- +title: Summitul de colaborare +layout: about +--- + +# Summitul de colaborare + +Summitul de Colaborare Node.js este un eveniment informal conceput pentru a reuni contribuitorii actuali și potențiali, facilitând discuții despre Node.js prin colaborare activă, sesiuni de învățare și schimb de cunoștințe. Echipele, grupurile de lucru și membrii comunității se întâlnesc de două ori pe an pentru a susține procesul decizional și a avansa inițiative importante prin colaborare directă și implicare activă. + +## Cine participă? + +Summitul de Colaborare este frecventat în principal de contribuitorii actuali și membrii comunității, dar îi primește cu brațele deschise și pe cei care nu au contribuit încă, dar doresc să se implice. Dacă ești nou când vine vorba de contribuții aduse la Node.js, Summitul de Colaborare oferă o oportunitate excelentă de a înțelege activitatea comunității și cum poți contribui cu abilitățile tale, în timp ce îți perfecționezi cunoștințele. + +Înainte de summit, contribuitorii și membrii comunității trimit propuneri de sesiuni pentru a stabili programul. Participanții se pot familiariza cu sesiunile înainte de a ajunge la eveniment, luând parte la discuțiile generale ale comunității și se pot implica activ în sesiunile propriu-zise. Vor exista, de asemenea, numeroase oportunități pentru discuții spontane și sesiuni de brainstorming. + +Pentru informații despre Summiturile de Colaborare viitoare și trecute, consultă [Summit repo](https://github.com/openjs-foundation/summit). +Aruncă o privire la [tichetele înregistrate](https://github.com/nodejs/summit/issues) care prezintă subiectele propuse de contribuitori și membrii comunității pentru discuții față în față. diff --git a/apps/site/pages/ro/about/get-involved/events.mdx b/apps/site/pages/ro/about/get-involved/events.mdx new file mode 100644 index 0000000000000..740f02623c96c --- /dev/null +++ b/apps/site/pages/ro/about/get-involved/events.mdx @@ -0,0 +1,16 @@ +--- +title: Evenimente viitoare +layout: about +--- + +## Evenimente viitoare + +Evenimentele Node.js sunt deschise pentru toată lumea. Oricine dorește se poate alătura și participa. + +### Viitoarele întâlniri Node.js® + +Proiectul Node.js organizează numeroase întâlniri pe parcursul anului pentru a discuta și planifica diverse aspecte ale proiectului. + +Acestea sunt întâlnirile programate pentru următoarele 7 zile. + +<UpcomingMeetings /> diff --git a/apps/site/pages/uk/about/governance.md b/apps/site/pages/uk/about/governance.md index 179c03d627c04..52ca3681d5f8b 100644 --- a/apps/site/pages/uk/about/governance.md +++ b/apps/site/pages/uk/about/governance.md @@ -11,7 +11,7 @@ Node.js дотримується моделі прийняття рішень [ ## Співавтори -Основний репозиторій GitHub [nodejs/node][] обслуговується співавторами, які на постійній основі обираються іншими чинними співавторами. +Основний репозиторій GitHub [nodejs/node][] супроводжується співавторами, які на постійній основі обираються іншими чинними співавторами. Особи, які здійснюють важливий та цінний внесок, стають співавторами та отримують доступ для commit'ів. Ці особи визначаються іншими співавторами, а їхня номінація на цю роль обговорюється із чинними співавторами. diff --git a/apps/site/pages/uk/about/security-reporting.mdx b/apps/site/pages/uk/about/security-reporting.mdx index c710284b2385d..a4051acc496f6 100644 --- a/apps/site/pages/uk/about/security-reporting.mdx +++ b/apps/site/pages/uk/about/security-reporting.mdx @@ -27,7 +27,7 @@ layout: about Ось політика розкриття інформації щодо безпеки в Node.js -Основний обробник отримує повідомлення про помилку безпеки, яке йому призначається. Ця особа координуватиме процес виправлення помилки та релізу. Помилку знаходять та визначають усі версії, де вона присутня. Код перевіряють на наявність схожих помилок. Потім проводять виправлення для всіх обслуговуваних релізів. Ці виправлення не випускаються в публічний репозиторій, а зберігаються локально, поки не буде здійснено оголошення. +Основний обробник отримує повідомлення про помилку безпеки, яке йому призначається. Ця особа координуватиме процес виправлення помилки та релізу. Помилку знаходять та визначають усі версії, де вона присутня. Код перевіряють на наявність схожих помилок. Потім проводять виправлення для всіх супроводжуваних релізів. Ці виправлення не випускаються в публічний репозиторій, а зберігаються локально, поки не буде здійснено оголошення. Обирається дата оголошення цієї вразливості та робиться запит на CVE (Common Vulnerabilities and Exposures (CVE®)) щодо неї. @@ -47,7 +47,7 @@ layout: about ## Коментарі стосовно цієї політики Якщо у вас є пропозиції щодо покращення цього процесу, створіть [pull request](https://github.com/nodejs/nodejs.org) або -[створіть issue](https://github.com/nodejs/security-wg/issues/new) для обговорення. +[issue](https://github.com/nodejs/security-wg/issues/new) для обговорення. ## Найкращі практики OpenSSF diff --git a/apps/site/pages/uk/download/current.mdx b/apps/site/pages/uk/download/current.mdx new file mode 100644 index 0000000000000..8b6fc6186765f --- /dev/null +++ b/apps/site/pages/uk/download/current.mdx @@ -0,0 +1,31 @@ +--- +layout: download +title: Завантажити Node.js® +--- + +<section> +Отримати Node.js® <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> за допомогою <Release.InstallationMethodDropdown /> з <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + Або отримайте збудований Node.js® для <Release.OperatingSystemDropdown /> з архітектурою <Release.PlatformDropdown />. + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. + +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. + +Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">перевірити</LinkWithArrow> підписані SHASUMS. + +Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">зібрати Node.js</LinkWithArrow> із вихідного коду. + +Перегляньте наші <LinkWithArrow href="https://nodejs.org/download/nightly/">нічні</LinkWithArrow> бінарні файли, +усі <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">попередні релізи</Link> чи + +<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">неофіційні</LinkWithArrow> бінарні файли для інших платформ. +</section> diff --git a/apps/site/pages/uk/download/index.mdx b/apps/site/pages/uk/download/index.mdx new file mode 100644 index 0000000000000..8b6fc6186765f --- /dev/null +++ b/apps/site/pages/uk/download/index.mdx @@ -0,0 +1,31 @@ +--- +layout: download +title: Завантажити Node.js® +--- + +<section> +Отримати Node.js® <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> за допомогою <Release.InstallationMethodDropdown /> з <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + Або отримайте збудований Node.js® для <Release.OperatingSystemDropdown /> з архітектурою <Release.PlatformDropdown />. + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. + +Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. + +Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">перевірити</LinkWithArrow> підписані SHASUMS. + +Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">зібрати Node.js</LinkWithArrow> із вихідного коду. + +Перегляньте наші <LinkWithArrow href="https://nodejs.org/download/nightly/">нічні</LinkWithArrow> бінарні файли, +усі <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">попередні релізи</Link> чи + +<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">неофіційні</LinkWithArrow> бінарні файли для інших платформ. +</section> diff --git a/apps/site/pages/uk/download/package-manager/all.md b/apps/site/pages/uk/download/package-manager/all.md index f603bf86ddaf6..7f04165a5f93a 100644 --- a/apps/site/pages/uk/download/package-manager/all.md +++ b/apps/site/pages/uk/download/package-manager/all.md @@ -5,7 +5,7 @@ title: Установка Node.js через менеджер пакетів # Установка Node.js через менеджери пакетів -> Пакети на цій сторінці обслуговуються та підтримуються їхніми відповідними розробниками, **не** командою Node.js. Будь ласка, повідомляйте про проблеми цих пакетів їхнім розробникам. Якщо виявиться, що проблема є помилкою Node.js, то вони повідомлять нас про неї. +> Пакети на цій сторінці супроводжуються та підтримуються їхніми відповідними розробниками, **не** командою Node.js. Будь ласка, повідомляйте про проблеми цих пакетів їхнім розробникам. Якщо виявиться, що проблема є помилкою Node.js, то вони повідомлять нас про неї. ## Alpine Linux @@ -66,8 +66,8 @@ dnf module install nodejs:18/common Ці ресурси надають пакети, які сумісні з CentOS, Fedora та RHEL. -- [Snaps Node.js](#snap) обслуговуються та підтримуються на https://github.com/nodejs/snap -- [Бінарні дистрибутиви Node.js](#debian-and-ubuntu-based-linux-distributions) обслуговуються та підтримуються [NodeSource](https://github.com/nodesource/distributions) +- [Snaps Node.js](#snap) супроводжуються та підтримуються на https://github.com/nodejs/snap +- [Бінарні дистрибутиви Node.js](#debian-and-ubuntu-based-linux-distributions) супроводжуються та підтримуються [NodeSource](https://github.com/nodesource/distributions) ## Дистрибутиви Linux на базі Debian та Ubuntu diff --git a/apps/site/pages/zh-tw/download/index.mdx b/apps/site/pages/zh-tw/download/index.mdx index d9053f8c812f7..d8fb2039e3b26 100644 --- a/apps/site/pages/zh-tw/download/index.mdx +++ b/apps/site/pages/zh-tw/download/index.mdx @@ -4,7 +4,7 @@ title: 下載 Node.js® --- <section> -取得適用於 <Release.VersionDropdown /> 的 Node.js® <Release.OperatingSystemDropdown />,透過 <Release.InstallationMethodDropdown /> 並包含 <Release.PackageManagerDropdown /> +取得適用於 <Release.OperatingSystemDropdown /> 的 Node.js® <Release.VersionDropdown /> 透過 <Release.InstallationMethodDropdown /> 包含 <Release.PackageManagerDropdown /> <Release.ReleaseCodeBox /> diff --git a/apps/site/snippets/fr/download/fnm.bash b/apps/site/snippets/fr/download/fnm.bash new file mode 100644 index 0000000000000..85efe05d67a6a --- /dev/null +++ b/apps/site/snippets/fr/download/fnm.bash @@ -0,0 +1,11 @@ +# Télécharger et installer fnm : +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# Télécharger et installer Node.js : +fnm install ${props.release.major} + +# Vérifier la version de Node.js : +node -v # Doit afficher "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/fr/download/npm.bash b/apps/site/snippets/fr/download/npm.bash new file mode 100644 index 0000000000000..2ce402b87fc66 --- /dev/null +++ b/apps/site/snippets/fr/download/npm.bash @@ -0,0 +1,2 @@ +# Vérifier la version de npm : +npm -v # Doit afficher "${props.release.npm}". diff --git a/apps/site/snippets/fr/download/pnpm.bash b/apps/site/snippets/fr/download/pnpm.bash new file mode 100644 index 0000000000000..9af08fe20eaad --- /dev/null +++ b/apps/site/snippets/fr/download/pnpm.bash @@ -0,0 +1,5 @@ +# Télécharger et installer pnpm : +corepack enable pnpm + +# Vérifier la version de pnpm : +pnpm -v diff --git a/apps/site/snippets/fr/download/yarn.bash b/apps/site/snippets/fr/download/yarn.bash new file mode 100644 index 0000000000000..a6edd8b595951 --- /dev/null +++ b/apps/site/snippets/fr/download/yarn.bash @@ -0,0 +1,5 @@ +# Télécharger et installer Yarn : +corepack enable yarn + +# Vérifier la version de Yarn : +yarn -v diff --git a/apps/site/snippets/ja/download/brew.bash b/apps/site/snippets/ja/download/brew.bash index b2eafe88986fa..823b9d30ae1bc 100644 --- a/apps/site/snippets/ja/download/brew.bash +++ b/apps/site/snippets/ja/download/brew.bash @@ -1,8 +1,8 @@ # Homebrewをダウンロードしてインストールする curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash -# Node.jsをダウンロードしてインストールする: +# Node.jsをダウンロードしてインストールする: brew install node@${props.release.major} -# Node.jsのバージョンを確認する: +# Node.jsのバージョンを確認する: node -v # "${props.release.versionWithPrefix}"が表示される。 diff --git a/apps/site/snippets/ja/download/choco.bash b/apps/site/snippets/ja/download/choco.bash new file mode 100644 index 0000000000000..75f35c7e1ad95 --- /dev/null +++ b/apps/site/snippets/ja/download/choco.bash @@ -0,0 +1,8 @@ +# Chocolateyをダウンロードしてインストールする: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# Node.jsをダウンロードしてインストールする: +choco install nodejs-lts --version="${props.release.major}" + +# Node.jsのバージョンを確認する: +node -v # "${props.release.versionWithPrefix}"が表示される。 diff --git a/apps/site/snippets/ja/download/docker.bash b/apps/site/snippets/ja/download/docker.bash new file mode 100644 index 0000000000000..1cdba9c156445 --- /dev/null +++ b/apps/site/snippets/ja/download/docker.bash @@ -0,0 +1,11 @@ +# DockerにはOSごとにそれぞれのインストール方法があります。 +# 詳しくは https://docker.com/get-started/ にある公式ドキュメントを参照してください + +# Node.jsのDockerイメージを取得する: +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Node.jsのコンテナーを作成しシェルを起動する: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Node.jsのバージョンを確認する: +node -v # "${props.release.versionWithPrefix}"が表示される。 diff --git a/apps/site/snippets/ja/download/fnm.bash b/apps/site/snippets/ja/download/fnm.bash new file mode 100644 index 0000000000000..6d2dd85d2c398 --- /dev/null +++ b/apps/site/snippets/ja/download/fnm.bash @@ -0,0 +1,11 @@ +# fnmをダウンロードしてインストールする: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# Node.jsをダウンロードしてインストールする: +fnm install ${props.release.major} + +# Node.jsのバージョンを確認する: +node -v # "${props.release.versionWithPrefix}"が表示される。 diff --git a/apps/site/snippets/ja/download/npm.bash b/apps/site/snippets/ja/download/npm.bash new file mode 100644 index 0000000000000..e13871eecf04f --- /dev/null +++ b/apps/site/snippets/ja/download/npm.bash @@ -0,0 +1,2 @@ +# npmのバージョンを確認する: +npm -v # "${props.release.npm}"が表示される。 diff --git a/apps/site/snippets/ja/download/nvm.bash b/apps/site/snippets/ja/download/nvm.bash new file mode 100644 index 0000000000000..52e85e6b5bb1e --- /dev/null +++ b/apps/site/snippets/ja/download/nvm.bash @@ -0,0 +1,9 @@ +# nvmをダウンロードしてインストールする: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + +# Node.jsをダウンロードしてインストールする: +nvm install ${props.release.major} + +# Node.jsのバージョンを確認する: +node -v # "${props.release.versionWithPrefix}"が表示される。 +nvm current # "${props.release.versionWithPrefix}"が表示される。 diff --git a/apps/site/snippets/ja/download/pnpm.bash b/apps/site/snippets/ja/download/pnpm.bash new file mode 100644 index 0000000000000..33e15432ca5c2 --- /dev/null +++ b/apps/site/snippets/ja/download/pnpm.bash @@ -0,0 +1,5 @@ +# pnpmをダウンロードしてインストールする: +corepack enable pnpm + +# pnpmのバージョンを確認する: +pnpm -v diff --git a/apps/site/snippets/ja/download/yarn.bash b/apps/site/snippets/ja/download/yarn.bash new file mode 100644 index 0000000000000..e70e8dd66181a --- /dev/null +++ b/apps/site/snippets/ja/download/yarn.bash @@ -0,0 +1,5 @@ +# Yarnをダウンロードしてインストールする: +corepack enable yarn + +# Yarnのバージョンを確認する: +yarn -v diff --git a/apps/site/snippets/uk/download/brew.bash b/apps/site/snippets/uk/download/brew.bash new file mode 100644 index 0000000000000..c19e42a39446f --- /dev/null +++ b/apps/site/snippets/uk/download/brew.bash @@ -0,0 +1,8 @@ +# Завантажує й установлює Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Завантажує й установлює Node.js: +brew install node@${props.release.major} + +# Перевіряє версію Node.js: +node -v # Повинно вивести «${props.release.versionWithPrefix}». diff --git a/apps/site/snippets/uk/download/choco.bash b/apps/site/snippets/uk/download/choco.bash new file mode 100644 index 0000000000000..98e501a08451b --- /dev/null +++ b/apps/site/snippets/uk/download/choco.bash @@ -0,0 +1,8 @@ +# Завантажує й установлює Chocolatey: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# Завантажує й установлює Node.js: +choco install nodejs-lts --version="${props.release.major}" + +# Перевіряє версію Node.js: +node -v # Повинно вивести «${props.release.versionWithPrefix}». diff --git a/apps/site/snippets/uk/download/docker.bash b/apps/site/snippets/uk/download/docker.bash new file mode 100644 index 0000000000000..1d52935c5f64e --- /dev/null +++ b/apps/site/snippets/uk/download/docker.bash @@ -0,0 +1,11 @@ +# Docker містить окремі інструкції установки для кожної операційної системи. +# Будь ласка, перегляньте офіційну документацію на https://docker.com/get-started/ + +# Завантажує образ Docker Node.js: +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Створює контейнер Node.js та розпочинає сесію в Shell: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Перевіряє версію Node.js: +node -v # Повинно вивести «${props.release.versionWithPrefix}». diff --git a/apps/site/snippets/uk/download/fnm.bash b/apps/site/snippets/uk/download/fnm.bash new file mode 100644 index 0000000000000..ac63580dfe4a9 --- /dev/null +++ b/apps/site/snippets/uk/download/fnm.bash @@ -0,0 +1,11 @@ +# Завантажує й установлює fnm: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# Завантажує й установлює Node.js: +fnm install ${props.release.major} + +# Перевіряє версію Node.js: +node -v # Повинно вивести «${props.release.versionWithPrefix}». diff --git a/apps/site/snippets/uk/download/npm.bash b/apps/site/snippets/uk/download/npm.bash new file mode 100644 index 0000000000000..f44d273105575 --- /dev/null +++ b/apps/site/snippets/uk/download/npm.bash @@ -0,0 +1,2 @@ +# Перевіряє версію npm: +npm -v # Повинно вивести «${props.release.npm}». diff --git a/apps/site/snippets/uk/download/nvm.bash b/apps/site/snippets/uk/download/nvm.bash new file mode 100644 index 0000000000000..97925cfe00e44 --- /dev/null +++ b/apps/site/snippets/uk/download/nvm.bash @@ -0,0 +1,9 @@ +# Завантажує й установлює nvm: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + +# Завантажує й установлює Node.js: +nvm install ${props.release.major} + +# Перевіряє версію Node.js: +node -v # Повинно вивести «${props.release.versionWithPrefix}». +nvm current # Повинно вивести «${props.release.versionWithPrefix}». diff --git a/apps/site/snippets/uk/download/pnpm.bash b/apps/site/snippets/uk/download/pnpm.bash new file mode 100644 index 0000000000000..d463ea5fbabab --- /dev/null +++ b/apps/site/snippets/uk/download/pnpm.bash @@ -0,0 +1,5 @@ +# Завантажує й установлює pnpm: +corepack enable pnpm + +# Перевіряє версію pnpm: +pnpm -v diff --git a/apps/site/snippets/uk/download/yarn.bash b/apps/site/snippets/uk/download/yarn.bash new file mode 100644 index 0000000000000..0236132f9f6da --- /dev/null +++ b/apps/site/snippets/uk/download/yarn.bash @@ -0,0 +1,5 @@ +# Завантажує й установлює Yarn: +corepack enable yarn + +# Перевіряє версію Yarn: +yarn -v diff --git a/apps/site/snippets/zh-tw/download/brew.bash b/apps/site/snippets/zh-tw/download/brew.bash new file mode 100644 index 0000000000000..f424c65921ad0 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/brew.bash @@ -0,0 +1,8 @@ +# 下載並安裝 Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# 下載並安裝 Node.js: +brew install node@${props.release.major} + +# 核對 Node.js 版本: +node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/choco.bash b/apps/site/snippets/zh-tw/download/choco.bash new file mode 100644 index 0000000000000..1a1908fb88d45 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/choco.bash @@ -0,0 +1,8 @@ +# 下載並安裝 Chocolatey: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# 下載並安裝 Node.js: +choco install nodejs-lts --version="${props.release.major}" + +# 核對 Node.js 版本: +node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/docker.bash b/apps/site/snippets/zh-tw/download/docker.bash new file mode 100644 index 0000000000000..fdb493e7ecaa5 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/docker.bash @@ -0,0 +1,11 @@ +# Docker 針對不同作業系統有特定的安裝指示。 +# 請至 https://docker.com/get-started/ 查閱官方文件 + +# 拉取 Node.js Docker 映像: +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# 建立 Node.js 容器並啟動 Shell 工作階段: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# 核對 Node.js 版本: +node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/npm.bash b/apps/site/snippets/zh-tw/download/npm.bash new file mode 100644 index 0000000000000..cd133eba0f096 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/npm.bash @@ -0,0 +1,2 @@ +# 核對 npm 版本: +npm -v # 應當會印出 "${props.release.npm}"。 diff --git a/apps/site/snippets/zh-tw/download/nvm.bash b/apps/site/snippets/zh-tw/download/nvm.bash new file mode 100644 index 0000000000000..71d4c882a57e0 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/nvm.bash @@ -0,0 +1,9 @@ +# 下載並安裝 nvm: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + +# 下載並安裝 Node.js: +nvm install ${props.release.major} + +# 核對 Node.js 版本: +node -v # 應會印出 "${props.release.versionWithPrefix}"。 +nvm current # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/pnpm.bash b/apps/site/snippets/zh-tw/download/pnpm.bash new file mode 100644 index 0000000000000..100738061ff97 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/pnpm.bash @@ -0,0 +1,5 @@ +# 下載並安裝 pnpm: +corepack enable pnpm + +# 核對 pnpm 版本: +pnpm -v diff --git a/apps/site/snippets/zh-tw/download/yarn.bash b/apps/site/snippets/zh-tw/download/yarn.bash new file mode 100644 index 0000000000000..6e383bb4b7c3e --- /dev/null +++ b/apps/site/snippets/zh-tw/download/yarn.bash @@ -0,0 +1,5 @@ +# 下載並安裝 Yarn: +corepack enable yarn + +# 核對 Yarn 版本: +yarn -v diff --git a/packages/i18n/config.json b/packages/i18n/config.json index 4100a8497c5de..c30a053e2f28f 100644 --- a/packages/i18n/config.json +++ b/packages/i18n/config.json @@ -136,7 +136,7 @@ "langDir": "ltr", "dateFormat": "YYYY.MM.DD", "hrefLang": "ja", - "enabled": false, + "enabled": true, "default": false }, { diff --git a/packages/i18n/locales/ja.json b/packages/i18n/locales/ja.json new file mode 100644 index 0000000000000..8e5bf1afcf709 --- /dev/null +++ b/packages/i18n/locales/ja.json @@ -0,0 +1,287 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "商標ポリシー", + "privacyPolicy": "プライバシーポリシー", + "versionSupport": "バージョンサポート", + "codeOfConduct": "行動規範", + "security": "セキュリティポリシー" + } + }, + "navBar": { + "links": { + "about": "About", + "download": "ダウンロード", + "docs": "ドキュメント", + "guides": "ガイド", + "learn": "学ぶ", + "security": "セキュリティー", + "certification": "認定資格", + "blog": "ブログ", + "contribute": "編集への協力" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "はじめに", + "introductionToNodejs": "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": "モジュール", + "publishingAPackage": "パッケージの公開", + "publishingNodeApiModules": "Node-APIパッケージを公開する方法", + "anatomyOfAnHttpTransaction": "HTTPトランザクションの構成", + "abiStability": "ABIの安定性", + "howToUseStreams": "ストリームの使い方", + "backpressuringInStreams": "ストリーム内のバックプレッシャー" + } + }, + "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": "行動規範" + } + } + }, + "downloadReleasesTable": { + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "コードネーム", + "releaseDate": "でリリース済み", + "actions": { + "changelog": "変更履歴", + "releases": "リリース", + "docs": "ドキュメント" + } + }, + "pagination": { + "next": "次へ", + "previous": "前へ" + }, + "common": { + "alertBox": { + "info": "補足", + "warning": "注意", + "danger": "警告" + }, + "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": "目次" + }, + "search": { + "searchBox": { + "placeholder": "入力を開始..." + } + }, + "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": "内部サーバーエラー", + "description": "このページで回復不可能なエラーが発生しました。" + }, + "backToHome": "ホームに戻る" + }, + "download": { + "buttons": { + "installer": "{os} インストーラー (.{extension})", + "binary": "スタンドアローンのバイナリー (.{extension})" + }, + "dropdown": { + "platform": "プラットフォーム", + "os": "オペレーティングシステム", + "version": "バージョン", + "installMethod": "インストール方法", + "packageManager": "パッケージマネージャー", + "unknown": "不明", + "platformGroups": { + "official": "推奨(公式)", + "unofficial": "コミュニティー(非公式)" + } + }, + "codeBox": { + "unsupportedVersionWarning": "このバージョンのメンテナンスは終了しています。現在サポートされているバージョンを利用してください。<link>EOLのサポートについて。</link>", + "communityPlatformInfo": "コミュニティーソフトウェアを含むインストール方法はそのソフトウェアを管理しているチームによってサポートされます。", + "externalSupportInfo": "もし何らかの問題を見つけた場合は<link>{platform}のウェブサイト</link>を参照してください。", + "noScriptDetected": "このページはJavaScriptが必要です。JavaScriptなしでも<link>リリースページ</link>から直接Node.jsをダウンロードできます。", + "platformInfo": { + "default": "{platform}とそのインストールスクリプトはNode.jsプロジェクトによって管理されていません。", + "nvm": "\"nvm\"はクロスプラットフォームに対応したNode.jsのバージョンマネージャーです。", + "fnm": "\"fnm\"はクロスプラットフォームに対応したNode.jsのバージョンマネージャーです。", + "brew": "HomebrewはmacOS用およびLinux用のパッケージマネージャーです。", + "choco": "ChocolateyはWIndows用のパッケージマネージャーです。", + "docker": "Dockerはコンテナー化に関するプラットフォームです。" + } + } + } + } +} From 68f61541c4817d43a9ecbed4e1e97bdb47eb2109 Mon Sep 17 00:00:00 2001 From: Ajay bains <ajaybains2004@gmail.com> Date: Tue, 14 Jan 2025 08:48:49 +0530 Subject: [PATCH 0250/1385] docs: Updated a string in array of code example (#7402) Co-authored-by: Ajay Bains <ajaybains@Ajays-personal-mac-air.local> --- .../command-line/output-to-the-command-line-using-nodejs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/command-line/output-to-the-command-line-using-nodejs.md b/apps/site/pages/en/learn/command-line/output-to-the-command-line-using-nodejs.md index 6362249f7ece9..b1baee2cf9168 100644 --- a/apps/site/pages/en/learn/command-line/output-to-the-command-line-using-nodejs.md +++ b/apps/site/pages/en/learn/command-line/output-to-the-command-line-using-nodejs.md @@ -191,7 +191,7 @@ Then, you can use it to style your text: ```js console.log( styleText(['red'], 'This is red text ') + - styleText(['green, bold'], 'and this is green bold text ') + + styleText(['green', 'bold'], 'and this is green bold text ') + 'this is normal text' ); ``` From e7532b795bf24b92c045df0886b1807b6c7de35d Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Tue, 14 Jan 2025 10:33:04 -0300 Subject: [PATCH 0251/1385] Blog: add security pre-release announcement (#7404) * Blog: add security pre-release announcement * fixup! Blog: add security pre-release announcement --- .../release/january-2025-security-releases.md | 38 +++++++++++++++++++ apps/site/site.json | 10 ++--- 2 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 apps/site/pages/en/blog/release/january-2025-security-releases.md diff --git a/apps/site/pages/en/blog/release/january-2025-security-releases.md b/apps/site/pages/en/blog/release/january-2025-security-releases.md new file mode 100644 index 0000000000000..84dcb5b872f01 --- /dev/null +++ b/apps/site/pages/en/blog/release/january-2025-security-releases.md @@ -0,0 +1,38 @@ +--- +date: 2025-01-14T03:00:00.000Z +category: vulnerability +title: Tuesday, January 21, 2025 Security Releases +slug: january-2025-security-releases +layout: blog-post +author: The Node.js Project +--- + +# Summary + +The Node.js project will release new versions of the 23.x, 22.x, 20.x, 18.x +releases lines on or shortly after, Tuesday, January 21, 2025 in order to address: + +- 1 high severity issues. +- 2 medium severity issues. + +## Impact + +The 23.x release line of Node.js is vulnerable to 1 high severity issues, 2 medium severity issues. +The 22.x release line of Node.js is vulnerable to 1 high severity issues, 2 medium severity issues. +The 20.x release line of Node.js is vulnerable to 1 high severity issues, 2 medium severity issues. +The 18.x release line of Node.js is vulnerable to 2 medium severity issues. + +It's important to note that End-of-Life versions are always affected when a security release occurs. +To ensure your system's security, please use an up-to-date version as outlined in our +[Release Schedule](https://github.com/nodejs/release#release-schedule). + +## Release timing + +Releases will be available on, or shortly after, Tuesday, January 21, 2025. + +## Contact and future updates + +The current Node.js security policy can be found at <https://nodejs.org/en/security/>. +Please follow the process outlined in <https://github.com/nodejs/node/blob/master/SECURITY.md> if you wish to report a vulnerability in Node.js. + +Subscribe to the low-volume announcement-only nodejs-sec mailing list at <https://groups.google.com/forum/#!forum/nodejs-sec> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the nodejs GitHub organization. diff --git a/apps/site/site.json b/apps/site/site.json index c5d948cb42f65..239f14ea81950 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -28,11 +28,11 @@ ], "websiteBanners": { "index": { - "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" + "startDate": "2025-01-14T03:00:00.000Z", + "endDate": "2025-01-21T03:00:00.000Z", + "text": "New security releases to be made available Tuesday, January 21, 2025", + "link": "https://nodejs.org/en/blog/vulnerability/january-2025-security-releases", + "type": "warning" } }, "websiteBadges": { From a2af16afac1af195d6093a636661cb668e49f1c8 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Tue, 14 Jan 2025 11:08:13 -0300 Subject: [PATCH 0252/1385] Blog: change sec release to vulnerability folder (#7405) --- .../{release => vulnerability}/january-2025-security-releases.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename apps/site/pages/en/blog/{release => vulnerability}/january-2025-security-releases.md (100%) diff --git a/apps/site/pages/en/blog/release/january-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md similarity index 100% rename from apps/site/pages/en/blog/release/january-2025-security-releases.md rename to apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md From a21e72b214ce0ea32d3059586af6b6e3515dc08b Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Thu, 16 Jan 2025 07:24:39 +0100 Subject: [PATCH 0253/1385] chore: make fnm an official installation method (#7400) Signed-off-by: Claudio W <cwunder@gnome.org> --- apps/site/util/downloadUtils.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index a01885b2e05c8..09559ba7a761e 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -172,6 +172,7 @@ export const INSTALL_METHODS: Array< value: 'FNM', compatibility: { os: ['MAC', 'LINUX', 'WIN'] }, iconImage: <InstallMethodIcons.FNM width={16} height={16} />, + recommended: true, url: 'https://github.com/Schniz/fnm', info: 'layouts.download.codeBox.platformInfo.fnm', }, From 1e4fc382c8932f1d77952f3378cc4b24bdf4cac0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Jos=C3=A9=20Borba=20Fernandes?= <rodrigoj.borba@gmail.com> Date: Sat, 18 Jan 2025 13:23:20 -0300 Subject: [PATCH 0254/1385] upgrade orama searchbox to 0.3.2 (#7408) --- apps/site/package.json | 2 +- package-lock.json | 65 ++++++++++++++---------------------------- 2 files changed, 22 insertions(+), 45 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index ffe43f6ce390e..24ca5531520df 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -27,7 +27,7 @@ "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", - "@orama/react-components": "^0.1.23", + "@orama/react-components": "^0.3.2", "@oramacloud/client": "^2.1.4", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-dropdown-menu": "^2.1.2", diff --git a/package-lock.json b/package-lock.json index b1ce683922363..d98d323a46b7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", - "@orama/react-components": "^0.1.23", + "@orama/react-components": "^0.3.2", "@oramacloud/client": "^2.1.4", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-dropdown-menu": "^2.1.2", @@ -3051,16 +3051,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" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==" }, "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" } @@ -3836,8 +3834,7 @@ "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" + "integrity": "sha512-w3TvtWUKYlf/NoujoyEs38nJRi1lkwxdOXntXDYB9cfHzx+s+iPrps70YwFRRJu9TcHW8ffz503b0E6aAfsuvg==" }, "node_modules/@orama/orama": { "version": "3.0.4", @@ -3849,33 +3846,30 @@ } }, "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", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@orama/react-components/-/react-components-0.3.2.tgz", + "integrity": "sha512-+Wb2YtnNuu/48EqUdrdbOqTuTRE+nzO9CsOHeTWigAGWGUzmrL/LKvwL+Oeswh0sjNFFJDhj0y/miTQWIFcQPQ==", "dependencies": { - "@orama/wc-components": "0.1.23" + "@orama/wc-components": "0.3.2" }, "peerDependencies": { - "react": "^17.0.0 || ^18.3.1", - "react-dom": "^17.0.0 || ^18.3.1" + "react": ">=17.0.0 <20.0.0", + "react-dom": ">=17.0.0 <20.0.0" } }, "node_modules/@orama/switch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.0.4.tgz", "integrity": "sha512-naS+Sel2M2y5RIQ0HlALf52zK7VjTXWSSUrmvBxaC/3kG9nrAI+8kon6HiTM2OmNAxrIEgitH0RJXLawSliyVw==", - "license": "Apache-2.0", "peerDependencies": { "@orama/orama": "3.0.4", "@oramacloud/client": "^2.1.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", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@orama/wc-components/-/wc-components-0.3.2.tgz", + "integrity": "sha512-Ghhqc5PS7qMrybXDHH7G6ECmwjiaABgwD4ypCaRMTz0t05SHO+uX/nGbn7YbWvA9dGwQjQz/2Fm2jCrUsqbmpA==", "dependencies": { "@orama/highlight": "^0.1.6", "@orama/orama": "^3.0.0", @@ -3908,7 +3902,6 @@ "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" } @@ -4817,10 +4810,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.23.0.tgz", - "integrity": "sha512-9vI8ywhoqlaDEmrcntejrZ9X76Tddv2JyWakjVpqJAdDNXgf520sYkyjzGT0p8VJfPtSaKm6pMtl5sAH1r9cFg==", - "license": "MIT", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.23.2.tgz", + "integrity": "sha512-UC0+FApqwQEzIqmN13z0dcTAJOu30zlfTttiAlOsE7TXEK+0G6OnUPz7OtEm1413o3WTNUVpm9JWj3qg0JatIA==", "bin": { "stencil": "bin/stencil" }, @@ -4833,7 +4825,6 @@ "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" @@ -6288,8 +6279,7 @@ "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" + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, "node_modules/@types/unist": { "version": "3.0.3", @@ -9352,7 +9342,6 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.3.tgz", "integrity": "sha512-U1U5Hzc2MO0oW3DF+G9qYN0aT7atAou4AgI0XjWz061nyBPbdxkfdhfy5uMgGn6+oLFCfn44ZGbdDqCzVmlOWA==", - "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" } @@ -12383,7 +12372,6 @@ "version": "11.11.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", - "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" } @@ -16027,7 +16015,6 @@ "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" } @@ -16300,7 +16287,6 @@ "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", @@ -16311,7 +16297,6 @@ "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", @@ -16322,7 +16307,6 @@ "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" } @@ -16849,7 +16833,6 @@ "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", @@ -16876,7 +16859,6 @@ "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" }, @@ -16888,7 +16870,6 @@ "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" } @@ -17346,8 +17327,7 @@ "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "license": "MIT" + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" }, "node_modules/memfs": { "version": "3.5.3", @@ -19996,7 +19976,6 @@ "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" } @@ -22501,8 +22480,7 @@ "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" + "integrity": "sha512-I7zYndqOOkNpz9KIdFZ8c8A7zs1YazNewBr8Nsi/tqThfJkVPuP1q7UE2h4B0RwoWZxbBYpd06uoW3NI3SaZXg==" }, "node_modules/stable-hash": { "version": "0.0.4", @@ -24337,8 +24315,7 @@ "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" }, "node_modules/uglify-js": { "version": "3.19.3", From 02f5a3e67696e016eb1f7afb669d3d907d69c1fe Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Sat, 18 Jan 2025 19:28:45 +0300 Subject: [PATCH 0255/1385] CI: Static export locale (#7409) * ci: static export locale * refactor: updated logic in conditions --- .github/workflows/build.yml | 26 ++++++++++-- apps/site/app/[locale]/[...path]/page.tsx | 49 +++++++++++++++-------- apps/site/app/[locale]/page.tsx | 28 ++++++++++--- apps/site/next.constants.mjs | 11 +++++ apps/site/turbo.json | 4 ++ packages/i18n/turbo.json | 1 + 6 files changed, 94 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c1d071d7e3b6..5ac1b393d69a7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -114,11 +114,29 @@ jobs: # Used for API requests that require GitHub API scopes NEXT_GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }} - - name: Build Next.js (Static) - # We only run full static builds within Pull Requests. As they're not needed on `merge_group` or `push` events + - name: Build Next.js (Static All Locales) + # We only run full static builds within Pull Requests. This step is also used to export + # static output in all languages, and it only works on `push` events. + if: github.event_name == 'push' + # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user + # the `${{ steps.turborepo_arguments.outputs.turbo_args }}` is a string substitution coming from a previous step + run: npx --package=turbo@latest -- turbo deploy ${{ steps.turborepo_arguments.outputs.turbo_args }} + env: + # We want to ensure we have enough RAM allocated to the Node.js process + # this should be a last resort in case by any chances the build memory gets too high + # but in general this should never happen + NODE_OPTIONS: '--max_old_space_size=4096' + # Used for API requests that require GitHub API scopes + NEXT_GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }} + # We want to ensure that static exports for all locales are triggered only on `push` events to save resources + # and time. + NEXT_PUBLIC_STATIC_EXPORT_LOCALE: true + + - name: Build Next.js (Static Default Locale) + # We want to generate static output in the default language within Pull Requests + # in order to reduce source wastages and build times. # Note that we skip full static builds on Crowdin-based Pull Requests as these PRs should only contain translation changes if: | - (github.event_name == 'push') || (github.event_name == 'pull_request_target' && github.event.pull_request.head.ref != 'chore/crowdin') # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user @@ -131,6 +149,8 @@ jobs: NODE_OPTIONS: '--max_old_space_size=4096' # Used for API requests that require GitHub API scopes NEXT_GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }} + # We want to ensure that static exports for all locales do not occur on `pull_request_target` events + NEXT_PUBLIC_STATIC_EXPORT_LOCALE: false - name: Sync Orama Cloud # We only want to sync the Orama Cloud production indexes on `push` events. diff --git a/apps/site/app/[locale]/[...path]/page.tsx b/apps/site/app/[locale]/[...path]/page.tsx index 89bb335d8f427..13e6342fd58be 100644 --- a/apps/site/app/[locale]/[...path]/page.tsx +++ b/apps/site/app/[locale]/[...path]/page.tsx @@ -8,9 +8,12 @@ */ import * as basePage from '@/app/[locale]/page'; -import { ENABLE_STATIC_EXPORT } from '@/next.constants.mjs'; +import { + ENABLE_STATIC_EXPORT_LOCALE, + ENABLE_STATIC_EXPORT, +} from '@/next.constants.mjs'; import { dynamicRouter } from '@/next.dynamic.mjs'; -import { availableLocaleCodes } from '@/next.locales.mjs'; +import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; // This is the default Viewport Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-viewport#generateviewport-function @@ -20,21 +23,35 @@ export const generateViewport = basePage.generateViewport; // @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata export const generateMetadata = basePage.generateMetadata; -// This provides all the possible paths that can be generated statically -// + provides all the paths that we support on the Node.js Website +// Generates all possible static paths based on the locales and environment configuration +// - Returns an empty array if static export is disabled (`ENABLE_STATIC_EXPORT` is false) +// - If `ENABLE_STATIC_EXPORT_LOCALE` is true, generates paths for all available locales +// - Otherwise, generates paths only for the default locale +// @see https://nextjs.org/docs/app/api-reference/functions/generate-static-params export const generateStaticParams = async () => { - const allAvailableRoutes = await Promise.all( - // Gets all mapped routes to the Next.js Routing Engine by Locale - availableLocaleCodes.map(async (locale: string) => { - const routesForLanguage = await dynamicRouter.getRoutesByLanguage(locale); - - return routesForLanguage.map(pathname => - dynamicRouter.mapPathToRoute(locale, pathname) - ); - }) - ); - - return ENABLE_STATIC_EXPORT ? allAvailableRoutes.flat().sort() : []; + // Return an empty array if static export is disabled + if (!ENABLE_STATIC_EXPORT) { + return []; + } + + // Helper function to fetch and map routes for a specific locale + const getRoutesForLocale = async (locale: string) => { + const routes = await dynamicRouter.getRoutesByLanguage(locale); + + return routes.map(pathname => + dynamicRouter.mapPathToRoute(locale, pathname) + ); + }; + + // Determine which locales to include in the static export + const locales = ENABLE_STATIC_EXPORT_LOCALE + ? availableLocaleCodes + : [defaultLocale.code]; + + // Generates all possible routes for all available locales + const routes = await Promise.all(locales.map(getRoutesForLocale)); + + return routes.flat().sort(); }; // Enforces that this route is used as static rendering diff --git a/apps/site/app/[locale]/page.tsx b/apps/site/app/[locale]/page.tsx index 75d023daf9cf7..123644759baf6 100644 --- a/apps/site/app/[locale]/page.tsx +++ b/apps/site/app/[locale]/page.tsx @@ -13,7 +13,10 @@ import type { FC } from 'react'; import { setClientContext } from '@/client-context'; import WithLayout from '@/components/withLayout'; -import { ENABLE_STATIC_EXPORT } from '@/next.constants.mjs'; +import { + ENABLE_STATIC_EXPORT_LOCALE, + ENABLE_STATIC_EXPORT, +} from '@/next.constants.mjs'; import { PAGE_VIEWPORT, DYNAMIC_ROUTES } from '@/next.dynamic.constants.mjs'; import { dynamicRouter } from '@/next.dynamic.mjs'; import { allLocaleCodes, availableLocaleCodes } from '@/next.locales.mjs'; @@ -37,15 +40,28 @@ export const generateMetadata = async (props: DynamicParams) => { return dynamicRouter.getPageMetadata(locale, pathname); }; -// This provides all the possible paths that can be generated statically -// + provides all the paths that we support on the Node.js Website +// Generates all possible static paths based on the locales and environment configuration +// - Returns an empty array if static export is disabled (`ENABLE_STATIC_EXPORT` is false) +// - If `ENABLE_STATIC_EXPORT_LOCALE` is true, generates paths for all available locales +// - Otherwise, generates paths only for the default locale +// @see https://nextjs.org/docs/app/api-reference/functions/generate-static-params export const generateStaticParams = async () => { - const allAvailableRoutes = await Promise.all( + // Return an empty array if static export is disabled + if (!ENABLE_STATIC_EXPORT) { + return []; + } + + // Determine which locales to include in the static export + const locales = ENABLE_STATIC_EXPORT_LOCALE + ? availableLocaleCodes + : [defaultLocale.code]; + + const routes = await Promise.all( // Gets all mapped routes to the Next.js Routing Engine by Locale - availableLocaleCodes.map((locale: string) => ({ locale })) + locales.map((locale: string) => ({ locale })) ); - return ENABLE_STATIC_EXPORT ? allAvailableRoutes.flat().sort() : []; + return routes.flat().sort(); }; // This method parses the current pathname and does any sort of modifications needed on the route diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index 3df5797431b16..a371029829248 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -35,6 +35,17 @@ export const ENABLE_STATIC_EXPORT = process.env.NEXT_PUBLIC_STATIC_EXPORT === 'true' || process.env.NEXT_PUBLIC_STATIC_EXPORT === true; +/** + * This is used to ensure that pages are Static Export for all locales or only + * in the default (`en`) locale. + * + * Note that this is a manual Environment Variable defined by us during the + * build process in CI. + */ +export const ENABLE_STATIC_EXPORT_LOCALE = + process.env.NEXT_PUBLIC_STATIC_EXPORT_LOCALE === 'true' || + process.env.NEXT_PUBLIC_STATIC_EXPORT_LOCALE === true; + /** * This is used for any place that requires the full canonical URL path for the Node.js Website (and its deployment), such as for example, the Node.js RSS Feed. * diff --git a/apps/site/turbo.json b/apps/site/turbo.json index a940f23dc590a..ade8cb87f6e87 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -11,6 +11,7 @@ "VERCEL_URL", "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", + "NEXT_PUBLIC_STATIC_EXPORT_LOCALE", "NEXT_PUBLIC_BASE_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", @@ -37,6 +38,7 @@ "VERCEL_URL", "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", + "NEXT_PUBLIC_STATIC_EXPORT_LOCALE", "NEXT_PUBLIC_BASE_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", @@ -56,6 +58,7 @@ "VERCEL_URL", "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", + "NEXT_PUBLIC_STATIC_EXPORT_LOCALE", "NEXT_PUBLIC_BASE_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", @@ -81,6 +84,7 @@ "VERCEL_URL", "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", + "NEXT_PUBLIC_STATIC_EXPORT_LOCALE", "NEXT_PUBLIC_BASE_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", diff --git a/packages/i18n/turbo.json b/packages/i18n/turbo.json index 345419cd21dbd..642d71d8af575 100644 --- a/packages/i18n/turbo.json +++ b/packages/i18n/turbo.json @@ -14,6 +14,7 @@ "VERCEL_URL", "VERCEL_REGION", "NEXT_PUBLIC_STATIC_EXPORT", + "NEXT_PUBLIC_STATIC_EXPORT_LOCALE", "NEXT_PUBLIC_BASE_URL", "NEXT_PUBLIC_DIST_URL", "NEXT_PUBLIC_DOCS_URL", From c6df7d2bc2b6e5ddf4a9710ece4b07b436b5b755 Mon Sep 17 00:00:00 2001 From: Artem Dragunov <dragunovartem99@gmail.com> Date: Mon, 20 Jan 2025 11:33:56 +0300 Subject: [PATCH 0256/1385] Use console.error() for errors consistently (#7411) In all examples in this document errors are logged by using `console.error()` method And it's unclear why in promise-based part we have different strategy Signed-off-by: Artem Dragunov <dragunovartem99@gmail.com> --- .../en/learn/manipulating-files/reading-files-with-nodejs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md index b3593bd6a6753..d30df9fdfd9ff 100644 --- a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md +++ b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md @@ -66,7 +66,7 @@ async function example() { const data = await fs.readFile('/Users/joe/test.txt', { encoding: 'utf8' }); console.log(data); } catch (err) { - console.log(err); + console.error(err); } } example(); @@ -79,7 +79,7 @@ try { const data = await fs.readFile('/Users/joe/test.txt', { encoding: 'utf8' }); console.log(data); } catch (err) { - console.log(err); + console.error(err); } ``` From 95047b14b7af9b85fdda6b1e1fbd134b225ed03b Mon Sep 17 00:00:00 2001 From: Lucas Santos <lhs.santoss@gmail.com> Date: Tue, 21 Jan 2025 01:49:15 +0100 Subject: [PATCH 0257/1385] doc: update typescript docs (#7412) * doc: update typescript docs Fix a small conceptual issue and add details for v23 Signed-off-by: Lucas Santos <lhs.santoss@gmail.com> * doc: fix small issues * doc: add suggestions to improve clarity * doc: lint authors Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Signed-off-by: Lucas Santos <lhs.santoss@gmail.com> * doc: apply changes Co-authored-by: Rob Palmer <rob.palmer2@gmail.com> Signed-off-by: Lucas Santos <lhs.santoss@gmail.com> * doc: nits and pin versions * doc: add Rob --------- Signed-off-by: Lucas Santos <lhs.santoss@gmail.com> Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Co-authored-by: Rob Palmer <rob.palmer2@gmail.com> --- .../pages/en/learn/typescript/run-natively.md | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/apps/site/pages/en/learn/typescript/run-natively.md b/apps/site/pages/en/learn/typescript/run-natively.md index e16a1bf38c85b..773f0201077d0 100644 --- a/apps/site/pages/en/learn/typescript/run-natively.md +++ b/apps/site/pages/en/learn/typescript/run-natively.md @@ -1,7 +1,7 @@ --- title: Running TypeScript Natively layout: learn -authors: AugustinMauroy +authors: AugustinMauroy, khaosdoctor, jakebailey, robpalme --- > **⚠️WARNING⚠️:** All content in this article uses Node.js experimental features. Please make sure you are using a version of Node.js that supports the features mentioned in this article. And remember that experimental features can change in future versions of Node.js. @@ -14,7 +14,7 @@ In the previous articles, we learned how to run TypeScript code using transpilat Since V22.6.0, Node.js has experimental support for some TypeScript syntax via "type stripping". You can write code that's valid TypeScript directly in Node.js without the need to transpile it first. -The `--experimental-strip-types` flag tells Node.js to strip the type annotations from the TypeScript code before running it. +The [`--experimental-strip-types`](https://nodejs.org/docs/latest-v22.x/api/cli.html#--experimental-strip-types) flag tells Node.js to strip the type annotations from the TypeScript code before running it. ```bash node --experimental-strip-types example.ts @@ -22,10 +22,29 @@ node --experimental-strip-types example.ts And that's it! You can now run TypeScript code directly in Node.js without the need to transpile it first, and use TypeScript to catch type-related errors. -In V22.7.0 this experimental support was extended to transform TypeScript-only syntax, like `enum`s and `namespace`, with the addition of the `--experimental-transform-types` flag. +In V22.7.0 this experimental support was extended to transform TypeScript-only syntax, like `enum`s and `namespace`, with the addition of the [`--experimental-transform-types`](https://nodejs.org/docs/latest-v23.x/api/cli.html#--experimental-transform-types) flag. Enabling `--experimental-transform-types` automatically implies that `--experimental-strip-types` is enabled, so there's no need to use both flags in the same command: ```bash -node --experimental-strip-types --experimental-transform-types another-example.ts +node --experimental-transform-types another-example.ts +``` + +From V23 onwards, the `--experimental-strip-types` flag is enabled by default (you can disable it via the [`--no-experimental-strip-types`](https://nodejs.org/docs/latest-v23.x/api/cli.html#--no-experimental-strip-types) flag), enabling you to run any supported syntax, so running files like the one below with `node file.ts` is supported: + +```ts +function foo(bar: number): string { + return 'hello'; +} +``` + +However, running any code that requires transformations, like the code below still needs the use of `--experimental-transform-types`: + +```ts +enum MyEnum { + A, + B, +} + +console.log(MyEnum.A); ``` Future versions of Node.js will include support for TypeScript without the need for a command line flag. @@ -34,7 +53,13 @@ Future versions of Node.js will include support for TypeScript without the need At the time of writing, the experimental support for TypeScript in Node.js has some limitations. -You can get more information on the [API docs](https://nodejs.org/docs/latest/api/typescript.html#typescript-features). +You can get more information on the [API docs](https://nodejs.org/docs/latest-v23.x/api/typescript.html#typescript-features). + +### Configuration + +The Node.js TypeScript loader ([Amaro](https://github.com/nodejs/amaro)) does not need or use `tsconfig.json` to run TypeScript code. + +We recommend configuring your editor and `tsc` to reflect Node.js behavior by creating a `tsconfig.json` using the `compilerOptions` listed [here](https://nodejs.org/api/typescript.html#type-stripping), as well as using TypeScript version **5.7 or higher**. ## Important notes From 5f194a11346275b1187ef66ec4d2c230e587f328 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Tue, 21 Jan 2025 14:19:37 -0300 Subject: [PATCH 0258/1385] January Security Release (#7414) * Blog: add post-release announcement * Blog: v23.6.1 release post Refs: https://github.com/nodejs-private/node-private/pull/654 * Blog: v22.13.1 release post Refs: https://github.com/nodejs-private/node-private/pull/655 * Blog: v20.18.2 release post Refs: https://github.com/nodejs-private/node-private/pull/664 * Blog: v18.20.6 release post Refs: https://github.com/nodejs-private/node-private/pull/659 --- apps/site/pages/en/blog/release/v18.20.6.md | 103 ++++++++++++++++ apps/site/pages/en/blog/release/v20.18.2.md | 110 ++++++++++++++++++ apps/site/pages/en/blog/release/v22.13.1.md | 110 ++++++++++++++++++ apps/site/pages/en/blog/release/v23.6.1.md | 101 ++++++++++++++++ .../january-2025-security-releases.md | 55 ++++++++- apps/site/site.json | 6 +- 6 files changed, 481 insertions(+), 4 deletions(-) create mode 100644 apps/site/pages/en/blog/release/v18.20.6.md create mode 100644 apps/site/pages/en/blog/release/v20.18.2.md create mode 100644 apps/site/pages/en/blog/release/v22.13.1.md create mode 100644 apps/site/pages/en/blog/release/v23.6.1.md diff --git a/apps/site/pages/en/blog/release/v18.20.6.md b/apps/site/pages/en/blog/release/v18.20.6.md new file mode 100644 index 0000000000000..6aa7fc634772f --- /dev/null +++ b/apps/site/pages/en/blog/release/v18.20.6.md @@ -0,0 +1,103 @@ +--- +date: '2025-01-21T17:05:27.542Z' +category: release +title: Node v18.20.6 (LTS) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-01-21, Version 18.20.6 'Hydrogen' (LTS), @RafaelGSS + +This is a security release. + +### Notable Changes + +- CVE-2025-23085 - src: fix HTTP2 mem leak on premature close and ERR_PROTO (Medium) +- CVE-2025-23084 - path: fix path traversal in normalize() on Windows (Medium) + +Dependency update: + +- CVE-2025-22150 - Use of Insufficiently Random Values in undici fetch() (Medium) + +### Commits + +- \[[`c03ad5ed63`](https://github.com/nodejs/node/commit/c03ad5ed63)] - **build**: use rclone instead of aws CLI (Michaël Zasso) [#55617](https://github.com/nodejs/node/pull/55617) +- \[[`8232463294`](https://github.com/nodejs/node/commit/8232463294)] - **build, tools**: drop leading `/` from `r2dir` (Richard Lau) [#53951](https://github.com/nodejs/node/pull/53951) +- \[[`b26bcd3394`](https://github.com/nodejs/node/commit/b26bcd3394)] - **build, tools**: copy release assets to staging R2 bucket once built (flakey5) [#51394](https://github.com/nodejs/node/pull/51394) +- \[[`56df127b7b`](https://github.com/nodejs/node/commit/56df127b7b)] - **build,tools**: simplify upload of shasum signatures (Michaël Zasso) [#53892](https://github.com/nodejs/node/pull/53892) +- \[[`a63e9372ed`](https://github.com/nodejs/node/commit/a63e9372ed)] - **(CVE-2025-22150)** **deps**: update undici to v5.28.5 (Matteo Collina) [nodejs-private/node-private#657](https://github.com/nodejs-private/node-private/pull/657) +- \[[`da2d177f91`](https://github.com/nodejs/node/commit/da2d177f91)] - **(CVE-2025-23084)** **path**: fix path traversal in normalize() on Windows (Tobias Nießen) [nodejs-private/node-private#555](https://github.com/nodejs-private/node-private/pull/555) +- \[[`6cc8d58e6f`](https://github.com/nodejs/node/commit/6cc8d58e6f)] - **(CVE-2025-23085)** **src**: fix HTTP2 mem leak on premature close and ERR_PROTO (RafaelGSS) [nodejs-private/node-private#650](https://github.com/nodejs-private/node-private/pull/650) + +Windows 32-bit Installer: https://nodejs.org/dist/v18.20.6/node-v18.20.6-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v18.20.6/node-v18.20.6-x64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v18.20.6/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v18.20.6/win-x64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v18.20.6/node-v18.20.6.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v18.20.6/node-v18.20.6-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v18.20.6/node-v18.20.6-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v18.20.6/node-v18.20.6-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v18.20.6/node-v18.20.6-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v18.20.6/node-v18.20.6-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v18.20.6/node-v18.20.6-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v18.20.6/node-v18.20.6-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v18.20.6/node-v18.20.6-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v18.20.6/node-v18.20.6.tar.gz \ +Other release files: https://nodejs.org/dist/v18.20.6/ \ +Documentation: https://nodejs.org/docs/v18.20.6/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +25f9f8b8275186b632a9e0ff7f22bba85eebe3aeb7c4ed84822529ba917d2a04 node-v18.20.6-aix-ppc64.tar.gz +7105fb1ac42968010020db61edcc0ea0a366b37d792405d2959668e45b612753 node-v18.20.6-darwin-arm64.tar.gz +cc797a76aee995ebef16a446a445886287dab82d2e496a2ea58197e1065a88d4 node-v18.20.6-darwin-arm64.tar.xz +25a4040000e9838af28d0d168301c70d07dcc61294089dde5f5d9044dafda1e5 node-v18.20.6-darwin-x64.tar.gz +5f079ab410b3278e05cb367b4d2f4638bb93cdd19c8224f3da1068ef19e1f5ab node-v18.20.6-darwin-x64.tar.xz +8f7f8f23d5f3265d09a556ba9aed207792ab90307140d04e55096dea7d63ac6e node-v18.20.6-headers.tar.gz +68a846f73547b4074469eccc758a6700237d0e615e77766931cad6c40f1f111f node-v18.20.6-headers.tar.xz +9580a8c3bb3e8014e15c6940595c45e831f5a878dec78f086824a8adf91a327f node-v18.20.6-linux-arm64.tar.gz +169d317cc39ba5513c9588f7aded1bdff7f807b82c4dacb40ca03fd427d288b0 node-v18.20.6-linux-arm64.tar.xz +d55580014639304a9fc0567a5e5b772d8a19d6c02c40f3fd4006216f97c759c2 node-v18.20.6-linux-armv7l.tar.gz +7375b789338f01d4496e8febc16234cf3672efa57a16ca7bfc17d07ce034d9ac node-v18.20.6-linux-armv7l.tar.xz +afa669b8c424f0f0d33ef461764194d126a1e5a07bad432252cfbefb7f9a52d0 node-v18.20.6-linux-ppc64le.tar.gz +3f431b1beb67141a43fea19b778e534357798bb20b4129de6360edae88a107bc node-v18.20.6-linux-ppc64le.tar.xz +bb65d62cd88f45c91b60da975563ad1bffefce9337ba6e85997fb42496c19fd0 node-v18.20.6-linux-s390x.tar.gz +d58c4e6107b58b27b493c7a111b16b6f393e5af7ab69584b0548581fdca0a449 node-v18.20.6-linux-s390x.tar.xz +bff0672c5117e6f0809c456d9194630b5886442ddf298b2292529959c45b92c0 node-v18.20.6-linux-x64.tar.gz +abf47264a9a13b2233743ce8a966945388a1a10a56f841310a6d4dd12e18ca9a node-v18.20.6-linux-x64.tar.xz +58e2e5a7cfe2a2d780a5246a114c644459dae8d71d4c2eabbe5b7ae91e21e5df node-v18.20.6.pkg +e7ddfeabea3d1f7cc622cc9861d2fb0955b9e60940dbbedbed6f2f821ab3e4c7 node-v18.20.6.tar.gz +c669b48b632fa6797d4f5fa7bbd2b476ec961120957864402226cc9fd8ebbc0e node-v18.20.6.tar.xz +6f289a5054bfec7a0a03d7feb09a58fd5661749dedfdb71bb1c3bfb854990faf node-v18.20.6-win-x64.7z +611a152838d67e05ddde02fbf5abc7f40bccd80a7e68fdaeae8745f729acff59 node-v18.20.6-win-x64.zip +064c34005f30f89f86fbbafb90b4da02587f785d17c899026832f221637d1736 node-v18.20.6-win-x86.7z +cde3c32739d7f4e8c405819c66ca2e5c9462e43a31633f4185d4865bd60d4027 node-v18.20.6-win-x86.zip +df2828bfbbc5da31e70e840da365289c2578c9bfdca5d6b502e87e6675efba5a node-v18.20.6-x64.msi +1942cff39580a9f15cb28418a391a5779d81b3384f2a8766cc4ec2d63c45f61f node-v18.20.6-x86.msi +a64403d47ef2121e60eac8643f85fb3a682b7ffcc3b6ffe3fcacf10101cb7fbf win-x64/node.exe +abfd50aed29f44e39725388fc60210b4a716b4fd759ebb9124ae01c30ccf81f9 win-x64/node.lib +5c99323f91d14803d5b9aff6474cc5d43bbb317589fc1ab099e3a4f31fcadd1f win-x64/node_pdb.7z +52c63d593b3eeb9c6c27cd843111e613584749a2106ca4177dc057b2b906cd42 win-x64/node_pdb.zip +c3e2439a460ae24386694f03cae8b4105c2013aae6ae7cb1d5acef2a599346f3 win-x86/node.exe +3442ac0d3ad2c5e840f0f2ae84a1c7abe1736a315d83a161b843c5c31a986f83 win-x86/node.lib +1639c9101390cd0a0d2d516b6c8dfe091bd3d14f0d12195fee22ca3e82d8d510 win-x86/node_pdb.7z +af1e5136a75422ed6df75dae6dd419eb5a179e05c6f5b9aa1b42ea6fb8ea496e win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmeP0PoACgkQi+q0389V +XvQ3ugv/Qi7vH20YIkuxRGiMu2QtfSta4zxh3KT9Vty/j8uHLqEBF+VLFzK8wpkB +uBMkVgnsj8YrmuF5QSlIGZqhmzDpO4qiN9f+je7CZCIH7+y5t507mML/SRDaDUb4 +njzBfHNoTGpIUqFc8L0bxCcuTTytLK5hbyiz4C7ISIYO3dtlqB3KBF70/cSNVYDw +uZSxZ2pOdA569XP/DVEbCIyP1zw3oxmjBP+2vgStnsJ8zBGI4aYVQkowtRmj5n3K +3dS3QtvdVySH+RJatNvf6trEk3DMAelQcJpHq9yRu+dXl0MFdCmWnXugnPFT9d/v +5f/AlKbMeXJPIhIrCZX9SuaHw7kQ31wklSsbyKZkXzgD1p9pf4jcwNUWTIvnzl+S +2k+YVNAFM7YeOxpsbgGebD8wp1KQkf8kIyVUFMhBJvCkaZmKEIQStNZtPfpyyWFS +It9EMDBPCP6oUDit+ZVHS3wncqW0nOsgguqZ5zl6k4BH7B/i8oIo+g8FAthar+J9 +a0OF6HP9 +=/PCS +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v20.18.2.md b/apps/site/pages/en/blog/release/v20.18.2.md new file mode 100644 index 0000000000000..d119e042565de --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.18.2.md @@ -0,0 +1,110 @@ +--- +date: '2025-01-21T17:05:40.198Z' +category: release +title: Node v20.18.2 (LTS) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-01-21, Version 20.18.2 'Iron' (LTS), @RafaelGSS + +This is a security release. + +### Notable Changes + +- CVE-2025-23083 - throw on InternalWorker use when permission model is enabled (High) +- CVE-2025-23085 - src: fix HTTP2 mem leak on premature close and ERR_PROTO (Medium) +- CVE-2025-23084 - path: fix path traversal in normalize() on Windows (Medium) + +Dependency update: + +- CVE-2025-22150 - Use of Insufficiently Random Values in undici fetch() (Medium) + +### Commits + +- \[[`df8b9f2c3e`](https://github.com/nodejs/node/commit/df8b9f2c3e)] - **(CVE-2025-22150)** **deps**: update undici to v6.21.1 (Matteo Collina) [nodejs-private/node-private#663](https://github.com/nodejs-private/node-private/pull/663) +- \[[`42d5821873`](https://github.com/nodejs/node/commit/42d5821873)] - **(CVE-2025-23084)** **path**: fix path traversal in normalize() on Windows (Tobias Nießen) [nodejs-private/node-private#555](https://github.com/nodejs-private/node-private/pull/555) +- \[[`8187a4b9bb`](https://github.com/nodejs/node/commit/8187a4b9bb)] - **src**: fix HTTP2 mem leak on premature close and ERR_PROTO (RafaelGSS) +- \[[`389f239a28`](https://github.com/nodejs/node/commit/389f239a28)] - **(CVE-2025-23083)** **src,loader,permission**: throw on InternalWorker use (RafaelGSS) [nodejs-private/node-private#652](https://github.com/nodejs-private/node-private/pull/652) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.18.2/node-v20.18.2-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.18.2/node-v20.18.2-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.18.2/node-v20.18.2-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.18.2/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.18.2/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.18.2/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.18.2/node-v20.18.2.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.18.2/node-v20.18.2-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.18.2/node-v20.18.2-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.18.2/node-v20.18.2-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.18.2/node-v20.18.2-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.18.2/node-v20.18.2-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.18.2/node-v20.18.2-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.18.2/node-v20.18.2-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.18.2/node-v20.18.2-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.18.2/node-v20.18.2.tar.gz \ +Other release files: https://nodejs.org/dist/v20.18.2/ \ +Documentation: https://nodejs.org/docs/v20.18.2/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +efcddeb91b189b02706d1a75a67b4a111253ec8f64cc30cc3dc4649744abd52b node-v20.18.2-aix-ppc64.tar.gz +40c5a72564b8667342bec84aab50d2af1503af2b274f1a7a09d2d929461988b6 node-v20.18.2-arm64.msi +fa76d5b5340f14070ebaa88ef8faa28c1e9271502725e830cb52f0cf5b6493de node-v20.18.2-darwin-arm64.tar.gz +32dc17147054df9cdf96d03103f4661b4cb0bb9b4ca4b70e34fe632f1bab189c node-v20.18.2-darwin-arm64.tar.xz +00a16bb0a82a2ad5d00d66b466ae1afa678482283747c27e9bce96668f334744 node-v20.18.2-darwin-x64.tar.gz +184c9b8e246a3fd139caf2456510dc99ec548ad2e5203fbc5fc56ba48104e8eb node-v20.18.2-darwin-x64.tar.xz +d74c718976adc308991fb8784f0b3f82845436bf8f04d2c982ab5cab5115289f node-v20.18.2-headers.tar.gz +05819d72dcc0aa788baab1066e18ede5f1ab6730a1925cd6b15c131b55fd4272 node-v20.18.2-headers.tar.xz +319789e8a055ff80793a05e633c8c5c9226050144a09da3747225b4ec56a2a99 node-v20.18.2-linux-arm64.tar.gz +5c1437aa16e7e6a2e0687a42c4d3f0a8f8a2039cda8880cb3be8cd983aeefb44 node-v20.18.2-linux-arm64.tar.xz +65397a4a63960bda94718099698d2961623e9ef400f60f4c3a71add2268bccfb node-v20.18.2-linux-armv7l.tar.gz +63d4df56fb2e34a5077345f78941094204d2223ce03b8ebc9c1500e6e2aae68d node-v20.18.2-linux-armv7l.tar.xz +9b2f0fd3b02d8b59bde3e2a251e4df501e755c99cfc4886b0bdf85fa4d0bc538 node-v20.18.2-linux-ppc64le.tar.gz +828a2635261ca225cd4a8a4b1a914003cdc7b30656c2e9092ac7aab02ac361db node-v20.18.2-linux-ppc64le.tar.xz +7e52e03823feaa2483a7cbcf85767790776f87a2c7112d87600c3d9d3b1ae6e9 node-v20.18.2-linux-s390x.tar.gz +bcf3680e111f1d24e403db3d5600315266ae1f8d9d1f69f39c61dbf8d8c9036e node-v20.18.2-linux-s390x.tar.xz +eb5b031bdd728871c3b9a82655dbfa533bc262c0b6da1d09a86842430cef07d4 node-v20.18.2-linux-x64.tar.gz +4e50f727ae09bdafecf2322c72faf7cd82bf3b8851a16b8bb63974e0d8d6eceb node-v20.18.2-linux-x64.tar.xz +87d10db681bca2a39fcadcc908d5e5b2c7effa16370c4ca555373b85e25275b1 node-v20.18.2.pkg +cf3ef49fafbfee3cdcd936a0d6031341b73bfa6b26a484ea0a4936c26d24b829 node-v20.18.2.tar.gz +69bf81b70f3a95ae0763459f02860c282d7e3a47567c8afaf126cc778176a882 node-v20.18.2.tar.xz +d28d21e000ebed8b6131201b727d1998d4dbc4dbdb6e5ad07679552e4c75fa4d node-v20.18.2-win-arm64.7z +b89d196a2d9dc3dac87c268aac9a983fa2fd1881c14884bc848312783ccf7d2f node-v20.18.2-win-arm64.zip +06e72c0f78cc1bf1819eb0a0a37001d2917f19ad46a149c2f923c901f599ba52 node-v20.18.2-win-x64.7z +ed790b94570518a7dce67b62485e16bc4bffecee4ec3b6df35ed220ae91117a5 node-v20.18.2-win-x64.zip +fa561ebff3f52667228f9fcd9e67ce22a86e5c28c8e3782e01a95c90b6ed114d node-v20.18.2-win-x86.7z +25f00a77843accc098561a35ce3ed923357f0127b8e5db594cb62188e3290b88 node-v20.18.2-win-x86.zip +f3ad2d799e1645281d22d71b447f3899e569da87fea78bef9571b0c2b53288d6 node-v20.18.2-x64.msi +783c4041ceb69226184a1b26177b5d9dc85e502d0f124c64d2b2c6f8ab12e5d5 node-v20.18.2-x86.msi +83e7ad1b8c4d4d9c5e06849c3e8f3a5948a5eb6aa34c5bd973ba700e0386f42c win-arm64/node.exe +58795bcd44e8023ff443dedabf7f9af928732a51befc5324082aafe56e0f5eb0 win-arm64/node.lib +83fdda5fb5869c18f5d5d3dc4d0479f6bdad16f0888c95b8008f03654593afdd win-arm64/node_pdb.7z +4049c1e7c2fc82c4d43c9d8567e7d20f20c0d360c281fcb924ce9cd4b9ce8dc3 win-arm64/node_pdb.zip +8487a277e92282904dfe0f860dbd5d229543e97a858a223fbe9c9b8670bbe170 win-x64/node.exe +5a16801c62c34c8056744ac339950c970b2b76f39b2d02afef4112ff51b74f1a win-x64/node.lib +6ff19d51a762405717f7dff33811ba6371334de95946efbccf6f8dd786ec93e8 win-x64/node_pdb.7z +07ef9641b5a339de2f43f698dc3b1aeb321e851645b199cbeb0f378674263bf1 win-x64/node_pdb.zip +ab4b6beaaa170cfed83a2c9c71d8d5032ac514a5ebd7a5aa0553731267964f5e win-x86/node.exe +fcc6ab34ebd4ad3a44de12376c3822c2ebc41febaa1ed4c4221ddc239f79f61c win-x86/node.lib +ab74677f28b517eee9f745930541d02a870ae2d3f29a5ac91fe630813a1cd987 win-x86/node_pdb.7z +6080ab7b513194510c8938c276b7fd4379eb0ed69cfa09dbb21da8a4eeddd75f win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmeP0VcACgkQi+q0389V +XvSVVAv9Gqyi4i2K2vHIKo7Pe/ZQB4BLg5nmzDtd6SNqtcSgTM+oR3u1vOeFdeTL +tXpIFaqUh0uYTYBpE4aJWajwXPnKWYu+uJO8Z1PtfUitM9PiZT5w2Ko69QPxIt7K +4BmRxFhCVAH87R2SKiXWWzhDBQDQKboQFBtVG4G16HfOXp9leKSxUTKQ8B0fU+4L +qbiCk9EvaBAmEJdrzT8Od/GjMdcBFXzllNRlROVu5hhAv6+HHlMuxR3RgaN5wml+ +zFFQeQk+lY1YZeA0DpslwB5raCrsLehkEywlXsJHF3wmRKOhsrFaQlTDLtzZuyoN +BY6LQqkmY5hJGiCOeiXSCNHAXUpqmOLvUJQgXSW0jaEh41o66yXk7MGthUegYo5o +AekiwYEZE50K4QLE9xdIFjQ5GeSp0iK81wxGgPLjVS0DBe0sw+sDWMep+yisHmhP +Ttf0cY501JvjbdaBB40ug5LFpABuKQJgzmbTmrU8Edf+apbJa35OZRt2bNg7xoYs +SzUkh4yR +=eALp +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v22.13.1.md b/apps/site/pages/en/blog/release/v22.13.1.md new file mode 100644 index 0000000000000..9b329a10b5942 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.13.1.md @@ -0,0 +1,110 @@ +--- +date: '2025-01-21T17:05:48.839Z' +category: release +title: Node v22.13.1 (LTS) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-01-21, Version 22.13.1 'Jod' (LTS), @RafaelGSS + +This is a security release. + +### Notable Changes + +- CVE-2025-23083 - src,loader,permission: throw on InternalWorker use when permission model is enabled (High) +- CVE-2025-23085 - src: fix HTTP2 mem leak on premature close and ERR_PROTO (Medium) +- CVE-2025-23084 - path: fix path traversal in normalize() on Windows (Medium) + +Dependency update: + +- CVE-2025-22150 - Use of Insufficiently Random Values in undici fetch() (Medium) + +### Commits + +- \[[`520da342e0`](https://github.com/nodejs/node/commit/520da342e0)] - **(CVE-2025-22150)** **deps**: update undici to v6.21.1 (Matteo Collina) [nodejs-private/node-private#662](https://github.com/nodejs-private/node-private/pull/662) +- \[[`99f217369f`](https://github.com/nodejs/node/commit/99f217369f)] - **(CVE-2025-23084)** **path**: fix path traversal in normalize() on Windows (Tobias Nießen) [nodejs-private/node-private#555](https://github.com/nodejs-private/node-private/pull/555) +- \[[`984f735e35`](https://github.com/nodejs/node/commit/984f735e35)] - **(CVE-2025-23085)** **src**: fix HTTP2 mem leak on premature close and ERR_PROTO (RafaelGSS) [nodejs-private/node-private#650](https://github.com/nodejs-private/node-private/pull/650) +- \[[`2446870618`](https://github.com/nodejs/node/commit/2446870618)] - **(CVE-2025-23083)** **src,loader,permission**: throw on InternalWorker use (RafaelGSS) [nodejs-private/node-private#651](https://github.com/nodejs-private/node-private/pull/651) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.13.1/node-v22.13.1-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.13.1/node-v22.13.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.13.1/node-v22.13.1-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.13.1/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.13.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.13.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.13.1/node-v22.13.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.13.1/node-v22.13.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.13.1/node-v22.13.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.13.1/node-v22.13.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.13.1/node-v22.13.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.13.1/node-v22.13.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.13.1/node-v22.13.1-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.13.1/node-v22.13.1-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.13.1/node-v22.13.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.13.1/node-v22.13.1.tar.gz \ +Other release files: https://nodejs.org/dist/v22.13.1/ \ +Documentation: https://nodejs.org/docs/v22.13.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +ed52239294ad517fbe91a268146d5d2aa8a17d2d62d64873e43219078ba71c4e node-v22.13.1-aix-ppc64.tar.gz +be127be1d98cad94c56f46245d0f2de89934d300028694456861a6d5ac558bf3 node-v22.13.1-arm64.msi +97483ff4361d239a56d038c6335767a56a291e78c10f07446f463f05d9d19b89 node-v22.13.1-darwin-arm64.tar.gz +9c169a9369f6c667a4de6b14c7492065adbae0fa830ef4c666bea2c53ac7b576 node-v22.13.1-darwin-arm64.tar.xz +6fdcc8412d434664238b0651ebd5ad55d15a08598ff42dcb6d9cf1d434a6c4be node-v22.13.1-darwin-x64.tar.gz +cbc49a2f179ec51f3a7d49f91b05e16db2ea8ea4ca586e1e370d19661becf0eb node-v22.13.1-darwin-x64.tar.xz +f9cde9ace585c3979f1b4ee247914f35fae6e7b7eabc6a40961f89ad39e78964 node-v22.13.1-headers.tar.gz +2722236564df6d33b1d953f23e21bf5247b62b38ea9000b47c655ee3a9a440e7 node-v22.13.1-headers.tar.xz +911d9c07af38c82be22cd0a3db613aabc578ba940b35380aeedadd6d48070bc1 node-v22.13.1-linux-arm64.tar.gz +0a237c413ccbab920640438bf6e1a32edb19845bdc21f0e1cd5b91545ce1c126 node-v22.13.1-linux-arm64.tar.xz +82be9fa5e74ee29d7342d38306dbee19d3e2239b5b753870c04fd03768916a7e node-v22.13.1-linux-armv7l.tar.gz +f2be8dca2a7a518f6d187aa4b18abbeeafd71096a6d95f73f4d8bc0f8d2394ea node-v22.13.1-linux-armv7l.tar.xz +e4d34550d791cc809cfbfe8d0e3082634796add404169484b0849fbae0714576 node-v22.13.1-linux-ppc64le.tar.gz +377a7a1ea66f39251e1657f419e9404d526fcca9910620d0ecf0a870c6308f6b node-v22.13.1-linux-ppc64le.tar.xz +56375cf2c827a425d708bd0322fd635b6f2038e272468395f4e160e1ea4ae91e node-v22.13.1-linux-s390x.tar.gz +22da01dbcead3ef7e69de6c1310a1c5c485039631f731a6ff0c35530cf5c811b node-v22.13.1-linux-s390x.tar.xz +666148b9fe0c7e1301cc1b029e33a45e9e4a893f68d2d2bb1cc88a931a88a004 node-v22.13.1-linux-x64.tar.gz +0d2a5af33c7deab5555c8309cd3f373446fe1526c1b95833935ab3f019733b3b node-v22.13.1-linux-x64.tar.xz +620a7b4008aa0406678987ce2dd22458a38bae163fe7c69fd243f1204725e6c2 node-v22.13.1.pkg +e7d5b1e84e7f3c3cebda81e2b138469eef41ba4ecf16a87fd15fc3f7afa3f701 node-v22.13.1.tar.gz +cfce282119390f7e0c2220410924428e90dadcb2df1744c0c4a0e7baae387cc2 node-v22.13.1.tar.xz +b2c537f24a725d7e6058d23b1b89bbf31e6c7299b51ac31e9c25dc3c6a61e2d9 node-v22.13.1-win-arm64.7z +db6d3d28e1b34acdbd9db7bac5ec37980e07e48a6a2edcd3747d605fc8a5468e node-v22.13.1-win-arm64.zip +d495abe2ae53962065fad979814259735fd90a4e03c6b94ccd3e32bc933aeda5 node-v22.13.1-win-x64.7z +398a61e250a5584a62a5959e2f69f5d597fc83f1a5ebe3ed8fff29ba39d55f14 node-v22.13.1-win-x64.zip +3c87ddd4aac7f980ed11caf97942bd87a647ce61d644ca08321508836b3d1899 node-v22.13.1-win-x86.7z +504ed03c8596dfeabddfcd0736f987be93e3330a5c690306dedacef8880b592c node-v22.13.1-win-x86.zip +821566022dc3b262ac2f76598ee4f46003a6edafe5dadb84e5fbc7daaa1a78c7 node-v22.13.1-x64.msi +79c36ea6aa2ede10b416bdae55b568ab31798ede2697440b266312bba95ef580 node-v22.13.1-x86.msi +afb7dcd60c7557843e5c2777205564950544297ba0588faa2aae573ccb735767 win-arm64/node.exe +988eb8c60a5ade17e652dbdb60d56d3c6ad5e599a99ce04932b8c4c86583cdaf win-arm64/node.lib +b19efd6f54283a2c01027f0e74e54563d06495b87efe08d111e1a176afd14d02 win-arm64/node_pdb.7z +0bb490f44fc575dd570326fae9f0a5fca1187bfc342f57a50084ef86aa2e6679 win-arm64/node_pdb.zip +8f6945c55a51c893691534e7163372e4cedb62c8ad80a2a975df3f14a19fba16 win-x64/node.exe +65e45757c026c93a170743a811ef1b921ae12d6d9dd62d258bbbca0626687626 win-x64/node.lib +2ad1af26e2f78247473e1e05f78fff3be7401f47c327f45602c84dce5d552cc0 win-x64/node_pdb.7z +31099d09933aad429c36071503cd200eb66c41529524ac159873f97d9f097c83 win-x64/node_pdb.zip +0b7071f0a7d90d4e1567d94a37c5d94441a3ca71a4eaa9596bc06e992c06e9c8 win-x86/node.exe +79bae10059e833ce7fa4de05e5601034461327e2e7cb75c2144b87d4ab5ac547 win-x86/node.lib +c3fb150e58d16dadd95c24c8a0a4c020a18b3c852b63e36df39587a301512ca4 win-x86/node_pdb.7z +97890935271fe117a745584ca710f0fcd38bbf24b8c920800411df87a3e22dc3 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmeP0bUACgkQi+q0389V +XvTMfgv+JrSbhYgsQcE3md4lAbKnFvK6iitjeefWXednZAHU3IRauZQyfwW0FZfM +2k9VPHR2AhqgDbvaFWE5hfAV4tQ244U/RojS5K8irEm80Eryp1RWLJ92D4DtNFDH +p4hH1FRuOW5Rd+TzfuADPv/eNfFn6h9u/N+zcOHYVk6PeActzte+GKV56aiooYzg +LKDH9sMTjV792qJmEcesNnQ5D5y23gSUiEVC8p1GYyQBhingD3tzrIoc0wRUZ8LB +36GUn/v5EikD78ts3Jiq96NW+KcstqGSFLu7P57Opkgd/a5+lqYPcn6XB2vzTV0S +HAC07OQzNnafUoXipUqnbg/Z4PXsi+LayPzoaUKp+sQLIEY+CNvTCygI5poYIEp/ ++yuHkF/tYGhYh+47jMJsh/dpcm/ak71ia0hE2Qj9oY92y3gTln7VdcbZdkmTEOVa +0TI7QhPeN4FACCBxsaWVTosW4tJw972h2mqieahJqLyrUEMbWBo/R5LuU1NXGlJf +nZrtP89S +=vTe7 +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v23.6.1.md b/apps/site/pages/en/blog/release/v23.6.1.md new file mode 100644 index 0000000000000..3396628da1085 --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.6.1.md @@ -0,0 +1,101 @@ +--- +date: '2025-01-21T17:06:07.900Z' +category: release +title: Node v23.6.1 (Current) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-01-21, Version 23.6.1 (Current), @RafaelGSS + +This is a security release. + +### Notable Changes + +- CVE-2025-23083 - src,loader,permission: throw on InternalWorker use when permission model is enabled (High) +- CVE-2025-23085 - src: fix HTTP2 mem leak on premature close and ERR_PROTO (Medium) +- CVE-2025-23084 - path: fix path traversal in normalize() on Windows (Medium) + +Dependency update: + +- CVE-2025-22150 - Use of Insufficiently Random Values in undici fetch() (Medium) + +### Commits + +- \[[`f2ad4d3af8`](https://github.com/nodejs/node/commit/f2ad4d3af8)] - **(CVE-2025-22150)** **deps**: update undici to v6.21.1 (Matteo Collina) [nodejs-private/node-private#654](https://github.com/nodejs-private/node-private/pull/654) +- \[[`0afc6f9600`](https://github.com/nodejs/node/commit/0afc6f9600)] - **(CVE-2025-23084)** **path**: fix path traversal in normalize() on Windows (RafaelGSS) [nodejs-private/node-private#555](https://github.com/nodejs-private/node-private/pull/555) +- \[[`3c7686163e`](https://github.com/nodejs/node/commit/3c7686163e)] - **(CVE-2025-23085)** **src**: fix HTTP2 mem leak on premature close and ERR_PROTO (RafaelGSS) [nodejs-private/node-private#650](https://github.com/nodejs-private/node-private/pull/650) +- \[[`51938f023a`](https://github.com/nodejs/node/commit/51938f023a)] - **(CVE-2025-23083)** **src,loader,permission**: throw on InternalWorker use (RafaelGSS) [nodejs-private/node-private#629](https://github.com/nodejs-private/node-private/pull/629) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.6.1/node-v23.6.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.6.1/node-v23.6.1-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.6.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.6.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.6.1/node-v23.6.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.6.1/node-v23.6.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.6.1/node-v23.6.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.6.1/node-v23.6.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.6.1/node-v23.6.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.6.1/node-v23.6.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.6.1/node-v23.6.1-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.6.1/node-v23.6.1-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.6.1/node-v23.6.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.6.1/node-v23.6.1.tar.gz \ +Other release files: https://nodejs.org/dist/v23.6.1/ \ +Documentation: https://nodejs.org/docs/v23.6.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +1a05b4193005a912b99674ee1198808ed3b38850224928a8966e298a33b50471 node-v23.6.1-aix-ppc64.tar.gz +a3b0bf4eaffe7af44c88a901bdeeedace5f03bfee25d56cbf393a4574ad8e36e node-v23.6.1-arm64.msi +b87c90f1efff3f2f49070ce4714a11228a43331bb590b06fc7bcb36e530b2ea0 node-v23.6.1-darwin-arm64.tar.gz +631742b69fd30235b89847fb9f36216e003f1efe8f013919fd30109ebeac565e node-v23.6.1-darwin-arm64.tar.xz +bcdc29188f2d8d7a129b88a6c19830ac91e53e64c3744b18f412dce533f67ef7 node-v23.6.1-darwin-x64.tar.gz +a011faa573727a959c9f916672f7bf4114d118c9adb6a593ef331167c273e5b5 node-v23.6.1-darwin-x64.tar.xz +113ef099f137331e2bc34c886f206827948c8312de563449f2366947a7f39d6c node-v23.6.1-headers.tar.gz +11e295df3f37dcc663a7c2c9473b94b3674c0c847b32e150cf9f3f7308b13cea node-v23.6.1-headers.tar.xz +8b221bb5ef173e9b6fecf4fc4a31696a775bbfe07ea45f8c7bdf88d7b9c9460f node-v23.6.1-linux-arm64.tar.gz +e9a709ea4142c0c269d7e670e37e65cf549bf69d62342907cd15a49ba7da1748 node-v23.6.1-linux-arm64.tar.xz +3bdb2e31de44038f166531edb2f3d99278b6c36576392c4939762029efa53439 node-v23.6.1-linux-armv7l.tar.gz +892a1285c5245a869eda0b0d6e5428b563d33a705d44de1d1d07f44d78c7b344 node-v23.6.1-linux-armv7l.tar.xz +c3db627673540e4c1ffd6f2f112e5dd8e6d89eaeba4fbdfdaa90e071c11d58b1 node-v23.6.1-linux-ppc64le.tar.gz +ec825715a1a48e359cffdd299e98d28b5cef27c4e7acfadb3440e9ab4b75fa42 node-v23.6.1-linux-ppc64le.tar.xz +68e8c2d68a749616ae82605ae85871a3e281c6ae0b68d5cb4ffa68320c949104 node-v23.6.1-linux-s390x.tar.gz +6d3c768b8ee3a648387a79e0ad2b43fc3e736f96eac924cff7e9aae01dc1f9c9 node-v23.6.1-linux-s390x.tar.xz +0aaa37396638ae6e71af66927dcc41414327051d5a8030d3057db1ceb7719854 node-v23.6.1-linux-x64.tar.gz +9387c4bf8f175e81cb2f004f3f4b2cd96abfb708df3755142e878effe035fcc5 node-v23.6.1-linux-x64.tar.xz +ae1746cea80934d7ba3d0a9a10e492822cbc23dc80945339090c39e2715b8b2d node-v23.6.1.pkg +35c0f7957085083071fcf01c7eaea953fba98f17afc4d7c189e3ef56925b453c node-v23.6.1.tar.gz +fefa49dede8733018ada4e30f885808cc4e22167b8ae3233c6d6a23737aff76f node-v23.6.1.tar.xz +eb52ed2507285f3f6ad19553b28e0a6425f00ee7190e2cc6dc68709201e30403 node-v23.6.1-win-arm64.7z +74599c4c9c61f666497b2a501c92b463566681587beba69da5368b9ecfdeaac5 node-v23.6.1-win-arm64.zip +597e75859698e7062481a6da92e3c54108099f57c45e9b391d64a0afa642e06e node-v23.6.1-win-x64.7z +9be8fe4eb81c6108ffca066590c160d9b6c94080c24b4dfa119eb4e3ae187aa8 node-v23.6.1-win-x64.zip +61ae8aee959557eda5056d07cd8ec58cab47cff631dcf18465b1dd31191f4752 node-v23.6.1-x64.msi +48b260b200236fe3960d81e39cf130012c8a877868ffdf2eba6a78afef44a0de win-arm64/node.exe +46a85ee5432885387948e02ced2499975b34cc2080ea3ed4e99b6c7323d38d74 win-arm64/node.lib +d1471a48b2852173a87f8aa9644394986b8d924a087c939dd31e03a0be4d87f0 win-arm64/node_pdb.7z +7183292cab61ea6b6aa7f885a217b7b921f9f1d06fac4d475ec60386315988fb win-arm64/node_pdb.zip +0cb029d3c8a66969e7c06ee01b7db1298b9300ef79f54b95505e532b24058536 win-x64/node.exe +4a54d5aeab30bb14dbad9260f6430c81f1e1afb430c68c40f6e5fec7ce288e2e win-x64/node.lib +98aa064c688818d7c15d32341163e046a007ae9b9ed4a660fb99a6f01ac3b9ba win-x64/node_pdb.7z +1bda974a08110f08e5b11bb04277da2728e27756cf94c154cfcce72fd6a3dcc6 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmeP0ocACgkQi+q0389V +XvQgMgwAjohyA6mtco8lX/0oKW3+T5q4EWct2IVaF27qkFxkB5fN7YsHAKqeuBUK +zSAb/9ga9XJZgwv2zDl/NQJwzgvFZL1sSxViY6p8DqGGFev5Ueeoaapplnrg2C/k +KPggMCoZmBuJv2uYKVRVkrDxUfGB3K38P9wBc8k3LceSiehgS85IR4z2t4dn0a0q +RtkgZ2wtOD4KWPEIPpw8pFPdOemuB0eD4l0mG6vsWS+Rj/hSccIoRwMZ54GIbXF+ +xMRL0X9eA01Izlqw8awNS9KKULni8T3C+4jMOc4BoY8QBXVrF+bgEnNnw/h967SI +iyYV2aIJQG9jTlhnfBkSFyNB0PM1KtqIPsKmLGD1SZqKoBFEyE74F2aB0P/IOnt6 +OeKf5Rc1/IZ4BbMj626gMkvubClSdtHR/qmKri5AerQGDnczOV+k4ROhj/MhdwgS +A0er3cpzVbtB716+7d9rIOe8CrbXJY5y6eJMtvxyBwqvD5d9I1oplKYqPISjkjK5 +HPq8a1pt +=MTqA +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md index 84dcb5b872f01..b6751184b2451 100644 --- a/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md +++ b/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md @@ -1,5 +1,5 @@ --- -date: 2025-01-14T03:00:00.000Z +date: 2025-01-21T03:00:00.000Z category: vulnerability title: Tuesday, January 21, 2025 Security Releases slug: january-2025-security-releases @@ -7,6 +7,59 @@ layout: blog-post author: The Node.js Project --- +## Security releases available + +Updates are now available for the 23.x, 22.x, 20.x, 18.x Node.js release lines for the +following issues. + +This security release includes the following dependency updates to address public vulnerabilities: +- undici (v7.2.3, v6.21.1, v5.28.5) on v23.x, v22.x, v20.x, v18.x. + +## Worker permission bypass via InternalWorker leak in diagnostics (CVE-2025-23083) - (high) + +With the aid of the diagnostics_channel utility, an event can be hooked into whenever a worker thread is created. This is not limited only to workers but also exposes internal workers, where an instance of them can be fetched, and its constructor can be grabbed and reinstated for malicious usage. + +This vulnerability affects Permission Model users (--permission) on Node.js v20, v22, and v23. + +Impact: + +- This vulnerability affects all users in active release lines: 20.x, 22.x, 23.x + +Thank you, to leodog896 for reporting this vulnerability and thank you RafaelGSS for fixing it. + +## Path traversal by drive name in Windows environment (CVE-2025-23084) - (medium) + +A vulnerability has been identified in Node.js, specifically affecting the handling of drive names in the Windows environment. Certain Node.js functions do not treat drive names as special on Windows. As a result, although Node.js assumes a relative path, it actually refers to the root directory. + +On Windows, a path that does not start with the file separator is treated as relative to the current directory. + +This vulnerability affects Windows users of `path.join` API. + +Impact: + +- This vulnerability affects all users in active release lines: 18.x, 20.x, 22.x, 23.x + +Thank you, to taise for reporting this vulnerability and thank you tniessen for fixing it. + +## GOAWAY HTTP/2 frames cause memory leak outside heap (CVE-2025-23085) - (medium) + +A memory leak could occur when a remote peer abruptly closes the socket without sending a GOAWAY notification. Additionally, if an invalid header was detected by nghttp2, causing the connection to be terminated by the peer, the same leak was triggered. This flaw could lead to increased memory consumption and potential denial of service under certain conditions. + +This vulnerability affects HTTP/2 Server users on Node.js v18.x, v20.x, v22.x and v23.x. + +Impact: + +- This vulnerability affects all users in active release lines: 18.x, 20.x, 22.x, 23.x + +Thank you, to newtmitch for reporting this vulnerability and thank you RafaelGSS for fixing it. + +## Downloads and release details + +- [Node.js v18.20.6](/blog/release/v18.20.6/) +- [Node.js v20.18.2](/blog/release/v20.18.2/) +- [Node.js v22.13.1](/blog/release/v22.13.1/) +- [Node.js v23.6.1](/blog/release/v23.6.1/) + # Summary The Node.js project will release new versions of the 23.x, 22.x, 20.x, 18.x diff --git a/apps/site/site.json b/apps/site/site.json index 239f14ea81950..8e6bb062b680f 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -28,9 +28,9 @@ ], "websiteBanners": { "index": { - "startDate": "2025-01-14T03:00:00.000Z", - "endDate": "2025-01-21T03:00:00.000Z", - "text": "New security releases to be made available Tuesday, January 21, 2025", + "startDate": "2025-01-21T03:00:00.000Z", + "endDate": "2025-01-28T03:00:00.000Z", + "text": "January Security Release is available", "link": "https://nodejs.org/en/blog/vulnerability/january-2025-security-releases", "type": "warning" } From d95d1fb4a0f7a3a54647061863e77c5da6de7b7d Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Tue, 21 Jan 2025 16:50:46 -0300 Subject: [PATCH 0259/1385] Blog: add cve to eol mention in last sec release (#7415) Following up: https://github.com/nodejs-private/nodejs.org-private/pull/426/ --- .../vulnerability/january-2025-security-releases.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md index b6751184b2451..47fa605d83fec 100644 --- a/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md +++ b/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md @@ -13,8 +13,18 @@ Updates are now available for the 23.x, 22.x, 20.x, 18.x Node.js release lines f following issues. This security release includes the following dependency updates to address public vulnerabilities: + - undici (v7.2.3, v6.21.1, v5.28.5) on v23.x, v22.x, v20.x, v18.x. +Along with the security fixes, the Node.js team has also issued CVEs for +End-of-Life (EOL) versions of Node.js. + +- Node.js v17.x or prior [CVE-2025-23087](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-23087) +- Node.js v19.x [CVE-2025-23088](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-23088) +- Node.js v21.x [CVE-2025-23089](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-23089) + +More information [in this blog post](https://nodejs.org/en/blog/vulnerability/upcoming-cve-for-eol-versions) + ## Worker permission bypass via InternalWorker leak in diagnostics (CVE-2025-23083) - (high) With the aid of the diagnostics_channel utility, an event can be hooked into whenever a worker thread is created. This is not limited only to workers but also exposes internal workers, where an instance of them can be fetched, and its constructor can be grabbed and reinstated for malicious usage. From dc6fede680cda1928d7925f37d923f9e19be61d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 22:55:47 +0000 Subject: [PATCH 0260/1385] [automated]: crowdin sync (#7410) * 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/id/about/previous-releases.mdx Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * Update apps/site/pages/es/about/index.mdx Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .../site/pages/fr/about/previous-releases.mdx | 16 ++- .../site/pages/id/about/previous-releases.mdx | 16 ++- apps/site/pages/id/download/current.mdx | 31 +++++ apps/site/pages/id/download/index.mdx | 31 +++++ .../site/pages/ja/about/previous-releases.mdx | 2 +- .../site/pages/ko/about/previous-releases.mdx | 20 ++- apps/site/pages/ko/download/current.mdx | 4 +- apps/site/pages/ko/download/index.mdx | 4 +- apps/site/pages/zh-tw/about/index.mdx | 12 +- .../pages/zh-tw/about/previous-releases.mdx | 23 +++- apps/site/snippets/fr/download/devbox.bash | 14 +++ apps/site/snippets/id/download/brew.bash | 8 ++ apps/site/snippets/id/download/choco.bash | 8 ++ apps/site/snippets/id/download/devbox.bash | 14 +++ apps/site/snippets/id/download/docker.bash | 11 ++ apps/site/snippets/id/download/fnm.bash | 11 ++ apps/site/snippets/id/download/npm.bash | 2 + apps/site/snippets/id/download/nvm.bash | 9 ++ apps/site/snippets/id/download/pnpm.bash | 5 + apps/site/snippets/id/download/yarn.bash | 5 + apps/site/snippets/ja/download/devbox.bash | 14 +++ apps/site/snippets/zh-tw/download/fnm.bash | 11 ++ packages/i18n/locales/fr.json | 14 ++- packages/i18n/locales/id.json | 118 ++++++------------ packages/i18n/locales/ja.json | 5 +- 25 files changed, 306 insertions(+), 102 deletions(-) create mode 100644 apps/site/pages/id/download/current.mdx create mode 100644 apps/site/pages/id/download/index.mdx create mode 100644 apps/site/snippets/fr/download/devbox.bash create mode 100644 apps/site/snippets/id/download/brew.bash create mode 100644 apps/site/snippets/id/download/choco.bash create mode 100644 apps/site/snippets/id/download/devbox.bash create mode 100644 apps/site/snippets/id/download/docker.bash create mode 100644 apps/site/snippets/id/download/fnm.bash create mode 100644 apps/site/snippets/id/download/npm.bash create mode 100644 apps/site/snippets/id/download/nvm.bash create mode 100644 apps/site/snippets/id/download/pnpm.bash create mode 100644 apps/site/snippets/id/download/yarn.bash create mode 100644 apps/site/snippets/ja/download/devbox.bash create mode 100644 apps/site/snippets/zh-tw/download/fnm.bash diff --git a/apps/site/pages/fr/about/previous-releases.mdx b/apps/site/pages/fr/about/previous-releases.mdx index bd7e239fab3d1..4f414b6691601 100644 --- a/apps/site/pages/fr/about/previous-releases.mdx +++ b/apps/site/pages/fr/about/previous-releases.mdx @@ -20,6 +20,20 @@ Tous les détails concernant le calendrier des versions de Node.js sont disponib Le support commercial pour les versions dépassant la phase de maintenance est disponible auprès de notre partenaire OpenJS Ecosystem Sustainability Program [HeroDevs](https://herodevs.com/). -## Vous recherchez la dernière version d'une branche de version ? +## Vous cherchez la dernière version d'une branche de version ? <DownloadReleasesTable /> + +## Officielle versus communautaire + +Le site web de Node.js propose de nombreuses méthodes d'installation qui permettent d'installer Node.js de manière non interactive, +par exemple, via des CLI, des gestionnaires de paquets OS (tels que `apt`), ou des gestionnaires de versions Node.js (tels que `nvm`). + +Le projet Node.js, dans une tentative de populariser et d'annoncer les efforts de la communauté, a introduit une nouvelle page de téléchargement qui liste à la fois les méthodes d'installation officielles et communautaires, offrant plus de polyvalence et d'options aux utilisateurs. Avec ce changement, nous avons introduit le concept de méthodes d'installation "officielles" et "communautaires". Pour être considérée comme "officielle", la méthode d'installation doit répondre aux critères suivants : + +| Prérequis | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Les nouvelles versions de Node.js doivent être disponibles en même temps que la version officielle | +| Les responsables de projet ont une relation étroite avec Node.js, y compris une communication directe | +| La méthode d'installation télécharge les binaires officiels fournis par le projet Node.js | +| La méthode d'installation ne compile **pas** à partir des sources lorsque les binaires sont disponibles, ni ne modifie les binaires officiels fournis par Node.js | diff --git a/apps/site/pages/id/about/previous-releases.mdx b/apps/site/pages/id/about/previous-releases.mdx index 8c02cc200446e..947a3f11d80c8 100644 --- a/apps/site/pages/id/about/previous-releases.mdx +++ b/apps/site/pages/id/about/previous-releases.mdx @@ -9,7 +9,7 @@ Versi Node.js utama memasuki status rilis saat ini selama enam bulan, yang membe ## Jadwal rilis -![Releases](https://dimensi-dp.org/images/schedule.svg) +![Releases](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) Detail lengkap mengenai jadwal rilis Node.js tersedia [di GitHub](https://github.com/nodejs/release#release-schedule). @@ -20,3 +20,17 @@ Dukungan komersial untuk versi yang melewati fase Pemeliharaan tersedia melalui ## Mencari rilis terbaru dari cabang versi? <DownloadReleasesTable /> + +## Resmi vs Komunitas + +Situs web Node.js menawarkan sejumlah metode instalasi yang memungkinkan Node.js diinstal dengan cara non-interaktif, misalnya, melalui CLI, pengelola paket OS (seperti `apt`), atau pengelola versi Node.js (seperti `nvm`). + +Proyek Node.js, dalam upaya untuk mempopulerkan dan mengiklankan upaya komunitas, telah memperkenalkan halaman Unduhan baru yang mencantumkan metode instalasi Resmi dan Komunitas, yang menyediakan lebih banyak fleksibilitas dan opsi bagi pengguna. +Dengan perubahan ini, kami memperkenalkan konsep metode instalasi "Resmi" dan "Komunitas". Agar dianggap "Resmi", metode instalasi harus memenuhi persyaratan berikut: + +| Persyaratan | +| ------------------------------------------------------------------------------------------------------------------------------ | +| Rilis Node.js baru harus tersedia secara bersamaan setelah rilis resmi | +| Pengelola proyek memiliki hubungan dekat dengan Node.js, termasuk komunikasi langsung | +| Metode instalasi mengunduh biner resmi yang dibundel oleh proyek Node.js | +| Metode instalasi **tidak** membangun dari sumber ketika biner tersedia, atau mengubah biner resmi yang disediakan oleh Node.js | diff --git a/apps/site/pages/id/download/current.mdx b/apps/site/pages/id/download/current.mdx new file mode 100644 index 0000000000000..5e044321e5855 --- /dev/null +++ b/apps/site/pages/id/download/current.mdx @@ -0,0 +1,31 @@ +--- +layout: download +title: Unduh Node.js® +--- + +<section> +Dapatkan Node.js® <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> menggunakan <Release.InstallationMethodDropdown /> dengan <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + Atau dapatkan Node.js® yang sudah dibuat sebelumnya untuk <Release.OperatingSystemDropdown /> yang menjalankan arsitektur <Release.PlatformDropdown />. + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. + +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. + +Pelajari cara <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">memverifikasi</LinkWithArrow> yang ditandatangani SHASUMS. + +Lihat bagaimana cara <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">membangun Node.js</LinkWithArrow> dari sumber. + +Lihat biner <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> kami atau +semua <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">rilis sebelumnya</Link> +atau biner <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">tidak resmi</LinkWithArrow> untuk platform lain. + +</section> diff --git a/apps/site/pages/id/download/index.mdx b/apps/site/pages/id/download/index.mdx new file mode 100644 index 0000000000000..5e044321e5855 --- /dev/null +++ b/apps/site/pages/id/download/index.mdx @@ -0,0 +1,31 @@ +--- +layout: download +title: Unduh Node.js® +--- + +<section> +Dapatkan Node.js® <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> menggunakan <Release.InstallationMethodDropdown /> dengan <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + +<Release.Provider> + Atau dapatkan Node.js® yang sudah dibuat sebelumnya untuk <Release.OperatingSystemDropdown /> yang menjalankan arsitektur <Release.PlatformDropdown />. + + <Release.PrebuiltDownloadButtons /> +</Release.Provider> +</section> + +<section> +Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. + +Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. + +Pelajari cara <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">memverifikasi</LinkWithArrow> yang ditandatangani SHASUMS. + +Lihat bagaimana cara <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">membangun Node.js</LinkWithArrow> dari sumber. + +Lihat biner <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> kami atau +semua <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">rilis sebelumnya</Link> +atau biner <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">tidak resmi</LinkWithArrow> untuk platform lain. + +</section> diff --git a/apps/site/pages/ja/about/previous-releases.mdx b/apps/site/pages/ja/about/previous-releases.mdx index 12e3aa7c1c00d..0b5284f20bab3 100644 --- a/apps/site/pages/ja/about/previous-releases.mdx +++ b/apps/site/pages/ja/about/previous-releases.mdx @@ -5,7 +5,7 @@ layout: about Node.js リリース -Node.jsのメジャーバージョンは6か月間\_Current\_ステータスとなり、ライブラリー開発者にサポートを追加する時間を与えます。6か月後、奇数番号のバージョン(9、11など)はサポートが終了し、偶数番号のバージョン(10、12など)が\_Active LTS\_ステータスに移行し、一般公開向けの準備が整います。\_LTS\_ステータスとは「長期間サポート」であり、通常は合計30か月間の重要なバグ修正が保証されます。プロダクションのアプリケーションでは\_Active LTS\_または\_Maintenance LTS\_ステータスのバージョンのみを利用してください。 +Node.jsのメジャーバージョンは6か月間 _Current_ ステータスとなり、ライブラリー開発者にサポートを追加する時間を与えます。6か月後、奇数番号のバージョン(9、11など)はサポートが終了し、偶数番号のバージョン(10、12など)が _Active LTS_ ステータスに移行し、一般公開向けの準備が整います。_LTS_ ステータスとは「長期間サポート」であり、通常は合計30か月間の重要なバグ修正が保証されます。プロダクションのアプリケーションでは _Active LTS_ または _Maintenance LTS_ ステータスのバージョンのみを利用してください。 ## リリーススケジュール diff --git a/apps/site/pages/ko/about/previous-releases.mdx b/apps/site/pages/ko/about/previous-releases.mdx index 4d30dc93c06a6..d3845b108f9c3 100644 --- a/apps/site/pages/ko/about/previous-releases.mdx +++ b/apps/site/pages/ko/about/previous-releases.mdx @@ -14,12 +14,26 @@ _LTS_ 릴리스 상태는 "장기 지원(long-term support)"을 의미하며, ![릴리스 일정](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) -Node.js 릴리스 일정에 대한 전체 세부정보는 [GitHub](https://github.com/nodejs/release#release-schedule)에서 확인할 수 있습니다. +Node.js 출시 일정에 대한 자세한 내용은 [GitHub](https://github.com/nodejs/release#release-schedule) 에서 확인할 수 있습니다. ### Commercial Support -유지 관리 단계(Maintenance phase)를 지난 버전에 대한 상업적 지원은 OpenJS 생태계 지속 가능성 프로그램(OpenJS Ecosystem Sustainability Program)의 파트너인 [HeroDevs](https://herodevs.com/)를 통해 제공됩니다. +유지 관리(Maintenance) 단계가 지난 버전에 대한 상업적 지원은 OpenJS Ecosystem Sustainability Program의 파트너인 [HeroDevs](https://herodevs.com/)를 통해 제공됩니다. -## 버전 브랜치의 최신 릴리스를 찾고 계신가요? +## 최신 릴리스 브랜치를 찾고 계신가요? <DownloadReleasesTable /> + +## 공식 버전 대 커뮤니티 버전 + +Node.js 웹사이트에서는 CLI, 운영 체제 패키지 매니저(예: apt), 또는 Node.js 버전 관리자(nvm 등)를 통해 대화형 입력 없이 Node.js를 설치할 수 있는 다양한 방법을 제공합니다. + +Node.js 프로젝트는 커뮤니티의 노력을 알리고 활성화하기 위해 "공식" 및 "커뮤니티" 설치 방법을 모두 나열한 새로운 다운로드 페이지를 선보였습니다. 이 페이지는 사용자들에게 더 다양한 옵션과 유연성을 제공합니다. +이번 변화와 함께, "공식"과 "커뮤니티" 설치 방법이라는 개념을 도입했습니다. "공식"으로 간주되기 위해 설치 방법은 다음 요건을 충족해야 합니다: + +| 요구사항 | +| ---------------------------------------------------------------------------------------------------------------------- | +| 새로운 Node.js 릴리스는 공식 릴리스와 동시에 제공되어야 합니다. | +| 프로젝트 유지 관리자는 Node.js와 직접적인 소통을 포함한 긴밀한 관계를 유지합니다. | +| 설치 방법은 Node.js 프로젝트에서 제공하는 공식 바이너리 번들을 다운로드합니다. | +| 설치 방법은 바이너리가 제공되는 경우 소스에서 빌드하지 않으며, Node.js에서 제공하는 공식 바이너리를 변경하지 않습니다. | diff --git a/apps/site/pages/ko/download/current.mdx b/apps/site/pages/ko/download/current.mdx index 546eb0aaa58e5..9d91dbb93b99d 100644 --- a/apps/site/pages/ko/download/current.mdx +++ b/apps/site/pages/ko/download/current.mdx @@ -16,9 +16,9 @@ Node.js®를 다운로드하세요. <Release.VersionDropdown /> 버전을 <Relea </section> <section> -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 읽어보세요. +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 읽어보세요. -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. 서명된 SHASUMS를 <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">검증</LinkWithArrow>하는 방법을 배워보세요. diff --git a/apps/site/pages/ko/download/index.mdx b/apps/site/pages/ko/download/index.mdx index 42ae6e26f04ad..1d31a2fb6e124 100644 --- a/apps/site/pages/ko/download/index.mdx +++ b/apps/site/pages/ko/download/index.mdx @@ -16,9 +16,9 @@ Node.js® <Release.VersionDropdown />를 <Release.OperatingSystemDropdown /> 환 </section> <section> -이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 읽어보세요. +이 버전의 <Release.ChangelogLink>변경 내역</Release.ChangelogLink>을 읽어보세요. -이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. +이 버전의 <Release.BlogPostLink>블로그 게시물</Release.BlogPostLink>을 확인하세요. 서명된 SHASUMS를 <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">검증</LinkWithArrow>하는 방법을 배워보세요. diff --git a/apps/site/pages/zh-tw/about/index.mdx b/apps/site/pages/zh-tw/about/index.mdx index 81b70befaa623..27483a60e62d5 100644 --- a/apps/site/pages/zh-tw/about/index.mdx +++ b/apps/site/pages/zh-tw/about/index.mdx @@ -5,7 +5,7 @@ layout: about 關於 Node.js® -Node.js 身為非同步事件驅動的 JavaScript 執行環境,旨在建構可擴展的網路應用程式。在下面的 "hello world" 範例中,Node.js 可以同時處理多個併發連線。每個連線都會觸發回調函式,但如果沒有任何工作需要處理, Node.js 就會進入休眠。 +Node.js 身為非同步事件驅動的 JavaScript 執行環境,旨在建構可擴展的網路應用程式。在下面的 "hello world" 範例中,Node.js 可以同時處理多個並行連線。每個連線都會觸發回呼函式,但如果沒有任何工作需要處理, Node.js 就會進入休眠。 ```cjs const { createServer } = require('node:http'); @@ -41,17 +41,17 @@ server.listen(port, hostname, () => { }); ``` -這與目前更常見的作業系統線程併發模型形成鮮明對比。線程導向的網路效率相對較低且難以使用。此外,Node.js 的使用者也不必擔心死鎖問題,因為系統中並沒有鎖機制。Node.js 中幾乎沒有直接執行 I/O 的函數,所以除了使用 Node.js 標準庫的同步方法進行 I/O 外,進程不會被阻塞。由於沒有阻塞,因此在 Node.js 中開發可擴展的系統就非常容易。 +這與目前更常見的作業系統多執行緒並行模型形成鮮明對比。執行緒導向的網路效率相對較低且難以使用。此外,Node.js 的使用者也不必擔心死鎖 (deadlock) 問題,因為系統中並沒有上鎖機制。Node.js 中幾乎沒有直接執行 I/O 的函式,所以除了使用 Node.js 標準函式庫的同步方法進行 I/O 外,不會阻塞行程。少了阻塞使得在 Node.js 中開發可擴展的系統變得非常容易。 -如果對上文中部分用語不熟悉,可以參考關於阻塞與非阻塞的完整文章。 +如果對上文中部分用語不熟悉,可以參考關於[阻塞與非阻塞][]的完整文章。 --- -Node.js 在設計上類似於 Ruby 的 [Event Machine][] 和 Python 的 [Twisted][] 等系統,也受到了它們的影響並進一步發展事件模型。它將事件循環呈現為一個運行時結構而非函數庫。在其他系統中,總是需要阻塞調用才能啟動事件循環。通常,行為是在腳本開始時透過回調進行定義,並在結尾透過 `EventMachine::run()` 等阻塞調用啟動伺服器。然而在 Node.js 中卻沒有這種啟動事件循環的調用。Node.js 會在執行輸入腳本後直接進入事件循環。若沒有更多回調需要執行,Node.js 就會退出事件循環。這種行為類似於瀏覽器中的 JavaScript,事件循環對使用者是隱藏的。 +Node.js 在設計上類似於 Ruby 的 [Event Machine][] 和 Python 的 [Twisted][] 等系統,也受到了它們的影響並進一步發展事件模型。它將事件迴圈呈現為一個執行時期結構而非函式庫。在其他系統中,總是需要阻塞式呼叫才能啟動事件迴圈。通常,行為是定義於在指令稿開頭的回呼函式,並在結尾透過 `EventMachine::run()` 等阻塞式呼叫啟動伺服器。然而在 Node.js 中卻沒有這種啟動事件迴圈的呼叫。Node.js 會在執行輸入指令稿後直接進入事件迴圈。若無需要執行的回呼函式,Node.js 就會退出事件迴圈。這種行為類似於瀏覽器中的 JavaScript,即使用者不會感知事件迴圈的存在。 -HTTP 是 Node.js 中的一等公民,在設計時就考慮到了流處理和低延遲。這使得 Node.js 非常適合作為 web 函式庫或框架的基礎。 +HTTP 是 Node.js 中的一等公民,在設計時就考慮到了串流處理和低延遲。這使得 Node.js 非常適合作為 web 函式庫或框架的基礎。 -Node.js 的設計中沒有使用執行緒,但這並不代表環境中的多核就無法利用。你可以透過我們的 `child_process.fork()][]` API 產生專為便利通訊設計的子進程。基於相同介面的 `[cluster][]` 模組允許你在進程之間共享套接字,以實現多核之間的負載均衡。 +雖然 Node.js 的設計中沒有執行緒,但這並不代表其無法善用多核心環境。透過我們的 `child_process.fork()][]` API 可以產生能便利互相溝通的子行程。基於相同介面的 `[cluster][]` 模組則可讓您在程序間共享 socket,已達成多核心負載平衡。 [阻塞與非阻塞]: /learn/asynchronous-work/overview-of-blocking-vs-non-blocking [`child_process.fork()`]: https://nodejs.org/api/child_process.html diff --git a/apps/site/pages/zh-tw/about/previous-releases.mdx b/apps/site/pages/zh-tw/about/previous-releases.mdx index fce7d2f0ab3c9..14e357731035d 100644 --- a/apps/site/pages/zh-tw/about/previous-releases.mdx +++ b/apps/site/pages/zh-tw/about/previous-releases.mdx @@ -5,14 +5,31 @@ layout: about Node.js 版本 -Node.js 的主要版本在釋出後六個月內皆處於最新 (Current) 狀態,讓函數庫作者有時間為其新增支援功能。六個月後,奇數編號的釋出版本 (如 9、11 等) 會停止支援,而偶數編號的釋出版本 (如 10、12 等) 會進入活躍 LTS (Active LTS) 狀態,開放一般大眾使用。LTS 狀態代表「長期支援」,在 30 個月內發現的重大錯誤通常都會得到修復。生產環境的應用程式僅應使用活躍 LTS 或維護 LTS (Maintenance LTS) 版本。 +Node.js 的主要版本在釋出後六個月內皆處於最新 (Current) 狀態,讓函式庫作者有時間為其新增支援功能。六個月後,奇數編號的釋出版本 (如 9、11 等) 會停止支援,而偶數編號的釋出版本 (如 10、12 等) 會進入活躍 LTS (Active LTS) 狀態,開放一般大眾使用。LTS 狀態代表「長期支援」,在 30 個月內發現的重大錯誤通常都會得到修復。生產環境的應用程式僅應使用活躍 LTS 或維護 LTS (Maintenance LTS) 版本。 ## 釋出時間表 ![版本釋出](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) -Node.js 的詳細釋出時間表請見 [Github](https://github.com/nodejs/release#release-schedule)。 +關於 Node.js 的詳細釋出時間表請見 [Github](https://github.com/nodejs/release#release-schedule)。 -## 你在找特定版本分支的最新版嗎? +### 商用支援 + +我們的 OpenJS Ecosystem Sustainability Program 夥伴 [HeroDevs](https://herodevs.com/) 針對已脫離維護階段的版本提供商用支援。 + +## 在找某個主要版本的最新版嗎? <DownloadReleasesTable /> + +## 官方與社群之比較 + +本網站提供多種安裝方法,讓您可透過非互動方式來安裝 Node.js,例如透過 CLI、作業系統套件管理程式(如:`apt`)或 Node.js 版本管理程式(如:`nvm`)。 + +Node.js 專案基於推廣及宣傳社群成果的目的,推出新版的下載頁面,包含官方及社群的安裝方法並提供使用者更多樣的選項。隨著這項改變,我們引入了「官方」及「社群」安裝方法的概念。一項「官方」安裝方法需滿足下列所有條件: + +| 條件 | +| ----------------------------------------------------------------------------------- | +| 必須與官方同時釋出新版 Node.js | +| 專案維護者與 Node.js 保持密切聯繫,例如可直接溝通 | +| 安裝方式需下載 Node.js 專案打包的官方二進位檔 | +| 安裝方法**不會**在 Node.js 已提供的官方二進位檔時自行編譯原始碼,或修改官方二進位檔 | diff --git a/apps/site/snippets/fr/download/devbox.bash b/apps/site/snippets/fr/download/devbox.bash new file mode 100644 index 0000000000000..10224c50fb7ea --- /dev/null +++ b/apps/site/snippets/fr/download/devbox.bash @@ -0,0 +1,14 @@ +# Télécharger et installer Devbox +curl -fsSL https://get.jetify.com/devbox | bash + +# Initialiser Devbox dans votre projet +devbox init + +# Télécharger et installer Node.js : +devbox add node@${props.release.major} + +# Ouvrir un shell Devbox +devbox shell + +# Vérifier la version de Node.js : +node -v # Doit afficher "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/id/download/brew.bash b/apps/site/snippets/id/download/brew.bash new file mode 100644 index 0000000000000..1c950aa306059 --- /dev/null +++ b/apps/site/snippets/id/download/brew.bash @@ -0,0 +1,8 @@ +# Unduh dan pasang Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Unduh dan pasang Node.js: +brew install node@${props.release.major} + +# Verifikasi versi Node.js: +node -v # Harus mencetak "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/id/download/choco.bash b/apps/site/snippets/id/download/choco.bash new file mode 100644 index 0000000000000..a70e176a7f361 --- /dev/null +++ b/apps/site/snippets/id/download/choco.bash @@ -0,0 +1,8 @@ +# Unduh dan pasang Chocolatey: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# Unduh dan pasang Node.js: +choco install nodejs-lts --version="${props.release.major}" + +# Verifikasi versi Node.js: +node -v # Harus mencetak "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/id/download/devbox.bash b/apps/site/snippets/id/download/devbox.bash new file mode 100644 index 0000000000000..7fffcd3d4f325 --- /dev/null +++ b/apps/site/snippets/id/download/devbox.bash @@ -0,0 +1,14 @@ +# Unduh dan pasang Devbox +curl -fsSL https://get.jetify.com/devbox | bash + +# Inisialisasi Devbox di proyek +devbox init + +# Unduh dan pasang Node.js: +devbox add node@${props.release.major} + +# Buka shell Devbox +devbox shell + +# Verifikasi versi Node.js: +node -v # Harus mencetak "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/id/download/docker.bash b/apps/site/snippets/id/download/docker.bash new file mode 100644 index 0000000000000..c3d83a963892c --- /dev/null +++ b/apps/site/snippets/id/download/docker.bash @@ -0,0 +1,11 @@ +# Docker memiliki petunjuk instalasi khusus untuk setiap sistem operasi. +# Silakan merujuk ke dokumentasi resmi di https://docker.com/get-started/ + +# Mengambil gambar Docker Node.js: +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Buat kontainer Node.js dan mulai sesi Shell: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Verifikasi versi Node.js: +node -v # Harus mencetak "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/id/download/fnm.bash b/apps/site/snippets/id/download/fnm.bash new file mode 100644 index 0000000000000..f581d7986d75f --- /dev/null +++ b/apps/site/snippets/id/download/fnm.bash @@ -0,0 +1,11 @@ +# Unduh dan pasang fnm: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# Unduh dan pasang Node.js: +fnm install ${props.release.major} + +# Verifikasi versi Node.js: +node -v # Harus mencetak "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/id/download/npm.bash b/apps/site/snippets/id/download/npm.bash new file mode 100644 index 0000000000000..c37b82a422506 --- /dev/null +++ b/apps/site/snippets/id/download/npm.bash @@ -0,0 +1,2 @@ +# Verifikasi versi npm: +npm -v # Harus mencetak "${props.release.npm}". diff --git a/apps/site/snippets/id/download/nvm.bash b/apps/site/snippets/id/download/nvm.bash new file mode 100644 index 0000000000000..65c8c6e3f7f15 --- /dev/null +++ b/apps/site/snippets/id/download/nvm.bash @@ -0,0 +1,9 @@ +# Unduh dan pasang nvm: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + +# Unduh dan pasang Node.js: +nvm install ${props.release.major} + +# Verifikasi versi Node.js: +node -v # Harus mencetak "${props.release.versionWithPrefix}". +nvm current # Harus mencetak "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/id/download/pnpm.bash b/apps/site/snippets/id/download/pnpm.bash new file mode 100644 index 0000000000000..34e6c329dd48d --- /dev/null +++ b/apps/site/snippets/id/download/pnpm.bash @@ -0,0 +1,5 @@ +# Unduh dan pasang pnpm: +corepack enable pnpm + +# Verifikasi versi pnpm: +pnpm -v diff --git a/apps/site/snippets/id/download/yarn.bash b/apps/site/snippets/id/download/yarn.bash new file mode 100644 index 0000000000000..11c36c878e7f7 --- /dev/null +++ b/apps/site/snippets/id/download/yarn.bash @@ -0,0 +1,5 @@ +# Unduh dan pasang Yarn: +corepack enable yarn + +# Verifikasi versi Yarn: +yarn -v diff --git a/apps/site/snippets/ja/download/devbox.bash b/apps/site/snippets/ja/download/devbox.bash new file mode 100644 index 0000000000000..0fef179a185ae --- /dev/null +++ b/apps/site/snippets/ja/download/devbox.bash @@ -0,0 +1,14 @@ +# Devboxをダウンロードしてインストールする +curl -fsSL https://get.jetify.com/devbox | bash + +# プロジェクトでDevboxを初期化する +devbox init + +# Node.jsをダウンロードしてインストールする: +devbox add node@${props.release.major} + +# Devboxのシェルを開く +devbox shell + +# Node.jsのバージョンを確認する: +node -v # "${props.release.versionWithPrefix}"が表示される。 diff --git a/apps/site/snippets/zh-tw/download/fnm.bash b/apps/site/snippets/zh-tw/download/fnm.bash new file mode 100644 index 0000000000000..c88ef97f75139 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/fnm.bash @@ -0,0 +1,11 @@ +# 下載並安裝 fnm: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# 下載並安裝 Node.js: +fnm install ${props.release.major} + +# 核對 Node.js 版本: +node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index ed3e27d351f13..5679db7ae689b 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -138,9 +138,16 @@ } }, "downloadReleasesTable": { - "changelog": "Journal de modifications", - "releases": "Sorties", - "docs": "Docs" + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "Nom de code", + "releaseDate": "Publié le", + "actions": { + "changelog": "Journal de modifications", + "releases": "Versions", + "docs": "Documents" + } }, "pagination": { "next": "Suivant", @@ -272,6 +279,7 @@ "fnm": "\"fnm\" est un gestionnaire de versions Node.js multiplateforme.", "brew": "Homebrew est un gestionnaire de paquets pour macOS et Linux.", "choco": "Chocolatey est un gestionnaire de paquets pour Windows.", + "devbox": "Devbox crée des environnements de développement isolés et reproductibles.", "docker": "Docker est une plateforme de conteneurisation." } } diff --git a/packages/i18n/locales/id.json b/packages/i18n/locales/id.json index 398dd369da03a..b9874247b1924 100644 --- a/packages/i18n/locales/id.json +++ b/packages/i18n/locales/id.json @@ -90,9 +90,11 @@ "modules": { "links": { "modules": "Module", + "publishingAPackage": "Menerbitkan Paket", "publishingNodeApiModules": "Cara mempublikasikan paket Node-API", "anatomyOfAnHttpTransaction": "Anatomi Transaksi HTTP", "abiStability": "Stabilitas ABI", + "howToUseStreams": "Cara menggunakan stream", "backpressuringInStreams": "Backpressuring dalam aliran (streams)" } }, @@ -135,32 +137,28 @@ } } }, - "downloadList": { - "links": { - "previousReleases": "Rilisan Node.js", - "packageManager": "Instalasi Node.js menggunakan package manager", - "shaSums": { - "title": "SHASUMS yang ditandatangani untuk file rilisan", - "howToVerify": " (Cara Verifikasi)" - }, - "allDownloads": "Semua opsi unduhan", - "nightlyReleases": "Build Nightly", - "unofficialBuilds": "Build tidak resmi", - "buildingFromSource": "Membangun Node.js dari sumber pada plaform yang didukung", - "installingOnLinux": "Instalasi Node.js melalui arsip biner", - "installingOnWsl": "Instalasi pada Windows Subsystem for Linux (WSL)" - } - }, "downloadReleasesTable": { - "changelog": "Log Perubahan", - "releases": "Rilis", - "docs": "Dokumentasi" + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "Kode nama", + "releaseDate": "Dirilis pada", + "actions": { + "changelog": "Log Perubahan", + "releases": "Rilis", + "docs": "Dokumen" + } }, "pagination": { "next": "Berikutnya", "previous": "Sebelumnya" }, "common": { + "alertBox": { + "info": "Info", + "warning": "Peringatan", + "danger": "Bahaya" + }, "breadcrumbs": { "navigateToHome": "Navigasi ke Beranda" }, @@ -201,32 +199,9 @@ "viewAs": "Tampilkan sebagai", "tableOfContents": "Daftar isi" }, - "downloads": { - "changelogModal": { - "startContributing": "Mulai Berkontribusi" - } - }, "search": { "searchBox": { "placeholder": "Mulai mengetik..." - }, - "seeAll": { - "text": "Lihat semua {count} hasil" - }, - "searchError": { - "text": "Terjadi kesalahan saat pencarian. Harap coba lagi nanti." - }, - "poweredBy": { - "text": "Diberdayakan oleh" - }, - "noResults": { - "text": "Tidak ada hasil ditemukan untuk \"{query}\"." - }, - "emptyState": { - "text": "Mencari sesuatu..." - }, - "searchPage": { - "title": "Anda sedang mencari: {query}" } }, "blog": { @@ -277,49 +252,36 @@ "backToHome": "Kembali ke Beranda" }, "download": { - "selectCategory": "Kategori", - "categories": { - "prebuilt-installer": "Prebuilt Installer", - "prebuilt-binaries": "Biner Prebuilt", - "package-manager": "Package manager", - "source-code": "Kode Sumber" - }, "buttons": { - "prebuilt": "Unduh Node.js {version}", - "source": "Unduh kode sumber Node.js {version}" + "installer": "Penginstal {os} (.{extension})", + "binary": "Biner Standalone (.{extension})" }, "dropdown": { - "bitness": "Panjang Bit", + "platform": "Platform", "os": "Sistem Operasi", "version": "Versi", - "platform": "Platform" + "installMethod": "Cara pasang", + "packageManager": "Package manager", + "unknown": "Tak diketahui", + "platformGroups": { + "official": "Direkomendasikan (Resmi)", + "unofficial": "Komunitas (Tidak Resmi)" + } }, "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.", - "communityWarningReport": "Jika kamu mengalami masalah, harap hubungi pengelola pengelola paket.", - "installsNvm": "menginstal nvm (Pengelola Versi Node)", - "downloadAndInstallNodejsRestartTerminal": "unduh dan pasang Node.js (anda mungkin perlu memulai ulang terminal)", - "verifiesRightNodejsVersion": "memastikan versi Node.js yang benar ada di lingkungan", - "verifiesRightNpmVersion": "memastikan versi npm yang benar ada di lingkungan", - "shouldPrint": "seharusnya mencetak `{version}`", - "installsFnm": "menginstal fnm (Pengelola Node Cepat)", - "downloadAndInstallNodejs": "unduh dan pasang Node.js", - "activateFNM": "aktifkan fnm", - "noteWithColon": "CATATAN:", - "dockerIsNotNodejsPackageManager": "Docker bukan pengelola paket Node.js.", - "PleaseEndureAlreadyInstallOnSystem": "Silakan pastikan bahwa ia sudah terpasang di sistem Anda.", - "dockerInstructions": "Ikuti instruksi resmi di https://docs.docker.com/desktop/", - "dockerImagesLink": "Gambar Docker disediakan secara resmi di https://github.com/nodejs/docker-node/", - "pullsNodejsDockerImage": "mengambil gambar Docker Node.js", - "homebrewIsNotNodejsPackageManager": "Homebrew bukan pengelola paket Node.js.", - "homebrewInstructions": "Ikuti instruksi resmi di https://brew.sh/", - "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew hanya mendukung pemasangan versi utama Node.js dan mungkin tidak mendukung versi Node.js terbaru dari jalur rilis {version}.", - "chocolateyIsNotNodejsPackageManager": "Chocolatey bukan pengelola paket Node.js.", - "chocolateyInstructions": "Ikuti instruksi resmi di https://chocolatey.org/", - "chocolateyNotMaintanedByNodejs": "Chocolatey tidak secara resmi dikelola oleh proyek Node.js dan mungkin tidak mendukung versi {version} dari Node.js" + "unsupportedVersionWarning": "Versi ini sudah tidak dalam tahap pemeliharaan. Harap gunakan versi yang saat ini didukung. <link>Pahami dukungan EOL.</link>", + "communityPlatformInfo": "Metode instalasi yang melibatkan perangkat lunak komunitas didukung oleh tim yang memelihara perangkat lunak tersebut.", + "externalSupportInfo": "Jika Anda mengalami masalah, silakan kunjungi situs web <link>{platform}</link>", + "noScriptDetected": "Halaman ini memerlukan JavaScript. Anda dapat mengunduh Node.js tanpa JavaScript dengan mengunjungi <link>halaman rilis</link> secara langsung.", + "platformInfo": { + "default": "{platform} dan skrip instalasinya tidak dikelola oleh proyek Node.js.", + "nvm": "\"nvm\" adalah manajer versi Node.js lintas-platform.", + "fnm": "\"fnm\" adalah manajer versi Node.js lintas-platform.", + "brew": "Homebrew adalah manajer paket untuk macOS dan Linux.", + "choco": "Chocolatey adalah manajer paket untuk Windows.", + "devbox": "Devbox menciptakan lingkungan pengembangan yang terisolasi dan dapat direproduksi.", + "docker": "Docker adalah platform kontainerisasi." + } } } } diff --git a/packages/i18n/locales/ja.json b/packages/i18n/locales/ja.json index 8e5bf1afcf709..e1e508dc76d7b 100644 --- a/packages/i18n/locales/ja.json +++ b/packages/i18n/locales/ja.json @@ -20,7 +20,7 @@ "security": "セキュリティー", "certification": "認定資格", "blog": "ブログ", - "contribute": "編集への協力" + "contribute": "開発への協力" } } }, @@ -132,7 +132,7 @@ "getInvolved": "参加しよう", "collabSummit": "コラボレーションサミット", "upcomingEvents": "今後のイベント", - "contribute": "Node.jsに貢献する", + "contribute": "開発への協力", "codeOfConduct": "行動規範" } } @@ -279,6 +279,7 @@ "fnm": "\"fnm\"はクロスプラットフォームに対応したNode.jsのバージョンマネージャーです。", "brew": "HomebrewはmacOS用およびLinux用のパッケージマネージャーです。", "choco": "ChocolateyはWIndows用のパッケージマネージャーです。", + "devbox": "Devboxは隔離された再現可能な開発環境を構築します。", "docker": "Dockerはコンテナー化に関するプラットフォームです。" } } From bad2b2fa6fa6a2540a700f0ff6e08963582f43fb Mon Sep 17 00:00:00 2001 From: Masataka Yakura <masataka.yakura@gmail.com> Date: Fri, 24 Jan 2025 11:23:48 +0900 Subject: [PATCH 0261/1385] fix(blog): fix pubdate of upcoming-cve-for-eol-versions (#7403) * fix(blog): fix pubdate of upcoming-cve-for-eol-versions regressed in https://github.com/nodejs/nodejs.org/pull/7328/commits/8e5ef67e05ab7afd98d2448ff935065385e3800b . this patch bring back the `T16` part to make it a valid Date string Signed-off-by: Masataka Yakura <masataka.yakura@gmail.com> * Update apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: Masataka Yakura <masataka.yakura@gmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> --- .../en/blog/vulnerability/upcoming-cve-for-eol-versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md b/apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md index f8276463cf55f..c1f37d5573f95 100644 --- a/apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md +++ b/apps/site/pages/en/blog/vulnerability/upcoming-cve-for-eol-versions.md @@ -1,5 +1,5 @@ --- -date: '2025-01-06:00:00.000Z' +date: '2025-01-06T16:00:00.000Z' category: vulnerability title: Upcoming CVE for End-of-Life Node.js Versions layout: blog-post From 8c3512f1a4cb737a4053099bfedbe383e7e97139 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sun, 26 Jan 2025 10:12:25 -0600 Subject: [PATCH 0262/1385] Introduce notify-on-force-push workflow (#7322) add workflow --- .github/workflows/notify-on-push.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/notify-on-push.yml diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml new file mode 100644 index 0000000000000..9bf910f6ab278 --- /dev/null +++ b/.github/workflows/notify-on-push.yml @@ -0,0 +1,28 @@ +on: + push: + branches: + - main + +name: Notify on Push +permissions: + contents: read + +jobs: + notify_on_push: + name: Notify on Force Push on `main` + if: github.repository == 'nodejs/nodejs.org' && github.event.forced + runs-on: ubuntu-latest + steps: + - name: Slack Notification + uses: rtCamp/action-slack-notify@c33737706dea87cd7784c687dadc9adf1be59990 # 2.3.2 + env: + SLACK_COLOR: '#DE512A' + SLACK_ICON: https://github.com/nodejs.png?size=48 + SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }} + SLACK_MESSAGE: | + A commit was force-pushed to <https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}|${{ github.repository }}@${{ github.ref_name }}> by <https://github.com/${{ github.actor }}|${{ github.actor }}> + + Before: <https://github.com/${{ github.repository }}/commit/${{ github.event.before }}|${{ github.event.before }}> + After: <https://github.com/${{ github.repository }}/commit/${{ github.event.after }}|${{ github.event.after }}> + SLACK_USERNAME: nodejs-bot + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} From 71b42588cd58c1fb0faa4e31707a11a94d1174b9 Mon Sep 17 00:00:00 2001 From: ochuko awhe <7204868+amochuko@users.noreply.github.com> Date: Sun, 26 Jan 2025 17:13:05 +0100 Subject: [PATCH 0263/1385] Update anatomy-of-an-http-transaction.md (#7424) Fix a typo Signed-off-by: ochuko awhe <7204868+amochuko@users.noreply.github.com> --- .../pages/en/learn/modules/anatomy-of-an-http-transaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/modules/anatomy-of-an-http-transaction.md b/apps/site/pages/en/learn/modules/anatomy-of-an-http-transaction.md index 687fa2a19c891..1e143cef3bc06 100644 --- a/apps/site/pages/en/learn/modules/anatomy-of-an-http-transaction.md +++ b/apps/site/pages/en/learn/modules/anatomy-of-an-http-transaction.md @@ -46,7 +46,7 @@ server.on('request', (request, response) => { }); ``` -When an HTTP request hits the server, node calls the request handler function +When an HTTP request hits the server, Node calls the request handler function with a few handy objects for dealing with the transaction, `request` and `response`. We'll get to those shortly. From 1e51ef6d243f995c19a9d8f8e4ec93e1160b0582 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sun, 26 Jan 2025 10:16:02 -0600 Subject: [PATCH 0264/1385] fix: add additional favicon redirect (#7422) Update redirects.json Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- apps/site/redirects.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/site/redirects.json b/apps/site/redirects.json index c1d2841a801ea..236a16a4e37d2 100644 --- a/apps/site/redirects.json +++ b/apps/site/redirects.json @@ -152,6 +152,10 @@ "source": "/(static/|)apple-touch-icon(.*).png", "destination": "/static/images/favicons/favicon.png" }, + { + "source": "/(static/)images/favicons/favicon.ico", + "destination": "/static/images/favicons/favicon.png" + }, { "source": "/(static/)images/logo.svg", "destination": "/static/logos/nodejsLight.svg" From 42d2a3ce45e729002dd6c74cdfeba5267dbf7978 Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Sun, 26 Jan 2025 19:19:16 +0300 Subject: [PATCH 0265/1385] fix: Button accessibility (#7420) * fix: button accessibility * chore: tabindex -1 when disabled --- apps/site/components/Common/Button/index.tsx | 71 ++++++++------------ 1 file changed, 29 insertions(+), 42 deletions(-) diff --git a/apps/site/components/Common/Button/index.tsx b/apps/site/components/Common/Button/index.tsx index bf19cfc5cffd3..218051d2a78fd 100644 --- a/apps/site/components/Common/Button/index.tsx +++ b/apps/site/components/Common/Button/index.tsx @@ -1,18 +1,16 @@ 'use client'; import classNames from 'classnames'; -import type { - FC, - AnchorHTMLAttributes, - KeyboardEvent, - MouseEvent, -} from 'react'; +import type { FC, AnchorHTMLAttributes, ButtonHTMLAttributes } from 'react'; import Link from '@/components/Link'; import styles from './index.module.css'; -type ButtonProps = AnchorHTMLAttributes<HTMLAnchorElement> & { +type ButtonProps = ( + | AnchorHTMLAttributes<HTMLAnchorElement> + | ButtonHTMLAttributes<HTMLButtonElement> +) & { kind?: 'neutral' | 'primary' | 'secondary' | 'special'; size?: 'default' | 'small'; disabled?: boolean; @@ -22,55 +20,44 @@ const Button: FC<ButtonProps> = ({ kind = 'primary', size = 'default', disabled = false, - href = undefined, children, className, - onClick, ...props }) => { - const onKeyDownHandler = (e: KeyboardEvent<HTMLAnchorElement>) => { - if (disabled) { - e.preventDefault(); - return; - } - - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - if (typeof onClick === 'function') { - onClick(e as unknown as MouseEvent<HTMLAnchorElement>); - } - } - }; - - const onClickHandler = (e: MouseEvent<HTMLAnchorElement>) => { - if (disabled) { - e.preventDefault(); - return; - } - - if (typeof onClick === 'function') { - onClick(e); - } - }; + if ('href' in props) { + return ( + <Link + role="button" + href={disabled ? undefined : props.href} + aria-disabled={disabled} + className={classNames( + styles.button, + styles[kind], + styles[size], + className + )} + tabIndex={disabled ? -1 : 0} + {...props} + > + {children} + </Link> + ); + } return ( - <Link - role="button" - href={disabled ? undefined : href} - aria-disabled={disabled} + <button + disabled={disabled} className={classNames( styles.button, styles[kind], styles[size], className )} - tabIndex={disabled ? -1 : 0} // Ensure focusable if not disabled - onClick={onClickHandler} - onKeyDown={onKeyDownHandler} - {...props} + type="button" + {...(props as ButtonHTMLAttributes<HTMLButtonElement>)} > {children} - </Link> + </button> ); }; From 99842cbd8df31f5c80dc08c7877ee73d96cbd473 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sun, 26 Jan 2025 13:17:57 -0800 Subject: [PATCH 0266/1385] hotfix: url on downloads page (current) Signed-off-by: Claudio W <cwunder@gnome.org> --- apps/site/pages/en/download/current.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/download/current.mdx b/apps/site/pages/en/download/current.mdx index ee6cab110ddc2..b1d9f2b646828 100644 --- a/apps/site/pages/en/download/current.mdx +++ b/apps/site/pages/en/download/current.mdx @@ -30,7 +30,7 @@ Learn how to <LinkWithArrow href="https://github.com/nodejs/node#verifying-binar Learn how to <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">build Node.js</LinkWithArrow> from source. Check out our <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> binaries or -all <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">previous releases</Link> +all <Link href="/about/previous-releases#looking-for-the-latest-release-of-a-version-branch">previous releases</Link> or the <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">unofficial</LinkWithArrow> binaries for other platforms. </section> From 6f7fb812252646b2c1c6d027d924f0113656ae12 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sun, 26 Jan 2025 13:18:31 -0800 Subject: [PATCH 0267/1385] hotfix: url on downloads page (lts) Signed-off-by: Claudio W <cwunder@gnome.org> --- apps/site/pages/en/download/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/download/index.mdx b/apps/site/pages/en/download/index.mdx index ee6cab110ddc2..b1d9f2b646828 100644 --- a/apps/site/pages/en/download/index.mdx +++ b/apps/site/pages/en/download/index.mdx @@ -30,7 +30,7 @@ Learn how to <LinkWithArrow href="https://github.com/nodejs/node#verifying-binar Learn how to <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">build Node.js</LinkWithArrow> from source. Check out our <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> binaries or -all <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">previous releases</Link> +all <Link href="/about/previous-releases#looking-for-the-latest-release-of-a-version-branch">previous releases</Link> or the <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">unofficial</LinkWithArrow> binaries for other platforms. </section> From 047eb044e56bcf52f4b9cfe4b44dc15caa4c0780 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sun, 26 Jan 2025 16:52:34 -0600 Subject: [PATCH 0268/1385] hotfix: remove force-push condition from notification Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .github/workflows/notify-on-push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index 9bf910f6ab278..b9340a39b89d0 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -10,7 +10,7 @@ permissions: jobs: notify_on_push: name: Notify on Force Push on `main` - if: github.repository == 'nodejs/nodejs.org' && github.event.forced + if: github.repository == 'nodejs/nodejs.org' runs-on: ubuntu-latest steps: - name: Slack Notification From 71763ed66c5f45fa3714b407d27a7459ed9b6612 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sun, 26 Jan 2025 16:57:55 -0600 Subject: [PATCH 0269/1385] hotfix: label action Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .github/workflows/notify-on-push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index b9340a39b89d0..b364e84c27d9b 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -9,7 +9,7 @@ permissions: jobs: notify_on_push: - name: Notify on Force Push on `main` + name: Notify on any direct push to `main` if: github.repository == 'nodejs/nodejs.org' runs-on: ubuntu-latest steps: From 1ede5d0adc56643e26877bb4b67434d7d65af81d Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sun, 26 Jan 2025 16:59:29 -0600 Subject: [PATCH 0270/1385] specify the message Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .github/workflows/notify-on-push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index b364e84c27d9b..57d7e4451dd62 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -18,9 +18,9 @@ jobs: env: SLACK_COLOR: '#DE512A' SLACK_ICON: https://github.com/nodejs.png?size=48 - SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }} + SLACK_TITLE: ${{ github.actor }} directly pushed to ${{ github.ref }} SLACK_MESSAGE: | - A commit was force-pushed to <https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}|${{ github.repository }}@${{ github.ref_name }}> by <https://github.com/${{ github.actor }}|${{ github.actor }}> + A commit was directly pushed to <https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}|${{ github.repository }}@${{ github.ref_name }}> by <https://github.com/${{ github.actor }}|${{ github.actor }}> Before: <https://github.com/${{ github.repository }}/commit/${{ github.event.before }}|${{ github.event.before }}> After: <https://github.com/${{ github.repository }}/commit/${{ github.event.after }}|${{ github.event.after }}> From ee2c8086138a30385d3dd4a7d07e490c3422af51 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Mon, 27 Jan 2025 10:54:53 +0100 Subject: [PATCH 0271/1385] fix: remove GlowingBackdrop from accessibility tree (#7429) --- apps/site/components/Icons/HexagonGrid.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/site/components/Icons/HexagonGrid.tsx b/apps/site/components/Icons/HexagonGrid.tsx index 09f5967f8fb88..b56da7bdace31 100644 --- a/apps/site/components/Icons/HexagonGrid.tsx +++ b/apps/site/components/Icons/HexagonGrid.tsx @@ -7,6 +7,7 @@ const HexagonGrid: FC<HexagonGridProps> = props => ( viewBox="0 0 1216 726" fill="none" xmlns="http://www.w3.org/2000/svg" + aria-hidden="true" {...props} > <mask From febfdb8e42c6547e3a374f50c9bfb8be17e77333 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:38:51 -0600 Subject: [PATCH 0272/1385] [automated]: crowdin sync (#7418) * 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/snippets/ko/download/devbox.bash Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- apps/site/pages/es/about/index.mdx | 2 +- apps/site/pages/id/about/index.mdx | 2 +- apps/site/pages/ja/about/index.mdx | 2 +- .../site/pages/uk/about/previous-releases.mdx | 16 +- .../pages/zh-tw/about/get-involved/index.md | 24 +- .../pages/zh-tw/about/security-reporting.mdx | 4 +- apps/site/pages/zh-tw/index.mdx | 246 +++++++++--------- apps/site/snippets/ko/download/devbox.bash | 14 + apps/site/snippets/uk/download/devbox.bash | 14 + apps/site/snippets/zh-tw/download/devbox.bash | 14 + packages/i18n/locales/ko.json | 14 +- packages/i18n/locales/uk.json | 118 +++------ packages/i18n/locales/zh-tw.json | 143 ++++------ 13 files changed, 311 insertions(+), 302 deletions(-) create mode 100644 apps/site/snippets/ko/download/devbox.bash create mode 100644 apps/site/snippets/uk/download/devbox.bash create mode 100644 apps/site/snippets/zh-tw/download/devbox.bash diff --git a/apps/site/pages/es/about/index.mdx b/apps/site/pages/es/about/index.mdx index 8489ee76f5426..df9cfdc257303 100644 --- a/apps/site/pages/es/about/index.mdx +++ b/apps/site/pages/es/about/index.mdx @@ -60,4 +60,4 @@ El hecho de que Node.js esté diseñado sin hilos no significa que no puedas ace [`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/ +[torcido]: https://twisted.org/ diff --git a/apps/site/pages/id/about/index.mdx b/apps/site/pages/id/about/index.mdx index 623a5c9777f81..b420da357524f 100644 --- a/apps/site/pages/id/about/index.mdx +++ b/apps/site/pages/id/about/index.mdx @@ -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 -[berpilin]: https://twisted.org/ +[twisted]: https://twisted.org/ diff --git a/apps/site/pages/ja/about/index.mdx b/apps/site/pages/ja/about/index.mdx index 00c987a077ad0..d536d925af52a 100644 --- a/apps/site/pages/ja/about/index.mdx +++ b/apps/site/pages/ja/about/index.mdx @@ -5,7 +5,7 @@ layout: about Node.js®とは -非同期イベント駆動型のJavaScript実行環境であるNode.jsはスケーラブルなネットワークアプリケーションを構築するために設計されています。次の「hello world」の例では、多数のネットワーク接続を同時に処理できます。各ネットワーク接続時にコールバックが起動されますが、実行する処理がない場合、Node.jsはスリープします。 +非同期イベント駆動型のJavaScript実行環境であるNode.jsはスケール可能なネットワークアプリケーションを構築するために設計されています。次の「hello world」の例では多数のネットワーク接続を同時に処理できます。各ネットワーク接続でコールバックが呼び出されますが、実行する処理がない場合はNode.jsはスリープします。 ```cjs const { createServer } = require('node:http'); diff --git a/apps/site/pages/uk/about/previous-releases.mdx b/apps/site/pages/uk/about/previous-releases.mdx index 38a9fddee6126..5bb462b04b52f 100644 --- a/apps/site/pages/uk/about/previous-releases.mdx +++ b/apps/site/pages/uk/about/previous-releases.mdx @@ -18,8 +18,22 @@ layout: about ### Комерційна підтримка -Комерційна підтримка для версій після фази підтримки доступна з нашим партнером програми OpenJS Ecosystem Sustainability [HeroDevs](https://herodevs.com/). +Комерційна підтримка для версій після фази _Maintenance_ доступна з нашим партнером програми OpenJS Ecosystem Sustainability [HeroDevs](https://herodevs.com/). ## Шукаєте останній реліз гілки версії? <DownloadReleasesTable /> + +## Офіційні та спільнотні методи установки + +Вебсайт Node.js пропонує різні методи установки, з якими можна встановити Node.js неінтерактивно. Наприклад, за допомогою інтерфейсів командного рядка, менеджерів пакетів ОС (як-от `apt`) або менеджерів версій Node.js (як-от `nvm`). + +Аби популяризувати та прорекламувати внески спільноти, проєкт Node.js представив нову сторінку завантажень, яка містить і офіційні, і спільнотні методи установки, що надає більше гнучкості та опцій для користувачів. +Разом з цим ми представили концепцію «офіційних» та «спільнотних» методів установки. Щоб метод уважався «офіційним», він повинний відповідати наступним вимогам: + +| Вимоги | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Нові релізи Node.js повинні бути доступні одразу після офіційного релізу | +| Супроводжувачі проєкту повинні мати близькі зв'язки з Node.js, у тому числі пряме спілкування | +| Метод установки завантажує офіційні бінарні файли, зібрані проєктом Node.js | +| Метод установки **не** повинний будувати з вихідного коду, коли доступні бінарні файли, та не повинний змінювати офіційні бінарні файли, надані Node.js | diff --git a/apps/site/pages/zh-tw/about/get-involved/index.md b/apps/site/pages/zh-tw/about/get-involved/index.md index fce97a65355cb..5f36914b7dd5e 100644 --- a/apps/site/pages/zh-tw/about/get-involved/index.md +++ b/apps/site/pages/zh-tw/about/get-involved/index.md @@ -5,22 +5,32 @@ layout: about # 加入我們 +若您對於參與 Node.js 社群感興趣,有許多管道可以參與。Node.js 專案是一個龐大且多元的社群,除了撰寫程式碼以外,還有許多貢獻方式。 + ## 社群討論 -- [GitHub 問題清單](https://github.com/nodejs/node/issues) 是討論 Node.js 核心功能的區域。 -- 若要進行 Node.js 開發相關的即時聊天,請使用以下其中一個平台 - - 針對 IRC,請使用 [IRC 客戶端](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients)連線至 `#node.js` 頻道中的 `irc.libera.chat`,或使用[網頁客戶端](https://kiwiirc.com/nextclient/)透過瀏覽器連線至該頻道。 - - 針對 Slack,則有兩種選項: - - [OpenJSF Slack](https://slack-invite.openjsf.org/) 乃是由基金會經營的 Slack ,其中包含多個 Node.js 頻道 (以 #nodejs- 為前綴的頻道皆與該專案相關)。 - - [Node Slackers](https://www.nodeslackers.com/) 是一個專注於 Node.js 的 Slack 社群。 +- [GitHub 議題列表](https://github.com/nodejs/node/issues) 是討論 Node.js 核心功能的地方。若您對 Node.js 有疑問,可以使用 [GitHub discussions](https://github.com/orgs/nodejs/discussions)。 +- [`nodejs/help`](https://github.com/nodejs/help/issues) 是專為討論 Node.js 問題的儲存庫。 - Node.js 的官方 Twitter 帳號是 [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)每天都會收集最新資訊。 - [The DEV Community Node.js tag](https://dev.to/t/node) 是供開發者分享 Node.js 專案、文章與教學,以及討論 Node.js 相關主題、收集他人意見的地方。無論程度如何都歡迎踴躍參與。 +- [Reddit Node.js community](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) 是一個在 Discord 上的法語 JavaScript 社群。 +- 使用 [IRC 客戶端](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients)連線至 `#node.js` 頻道中的 `irc.libera.chat`,或使用[網頁客戶端](https://kiwiirc.com/nextclient/)透過瀏覽器連線至該頻道。 diff --git a/apps/site/pages/zh-tw/about/security-reporting.mdx b/apps/site/pages/zh-tw/about/security-reporting.mdx index 7f41b4ba9fcea..30e939514b44d 100644 --- a/apps/site/pages/zh-tw/about/security-reporting.mdx +++ b/apps/site/pages/zh-tw/about/security-reporting.mdx @@ -19,9 +19,9 @@ layout: about Node.js 專案為安全研究人員和盡責公開揭露設立了官方漏洞獎勵計畫。該計畫透過 HackerOne 平台進行管理。詳情請見 [https://hackerone.com/nodejs](https://hackerone.com/nodejs)。 -## 回報第三方模塊的錯誤 +## 回報第三方模組中的臭蟲 -第三方模塊的錯誤應回報給其相應維護者。 +第三方模組的安全性臭蟲應回報給其相應的維護者。 ## 揭露政策 diff --git a/apps/site/pages/zh-tw/index.mdx b/apps/site/pages/zh-tw/index.mdx index 55e4e61891c25..31c0945a4c935 100644 --- a/apps/site/pages/zh-tw/index.mdx +++ b/apps/site/pages/zh-tw/index.mdx @@ -4,130 +4,134 @@ layout: home --- <section> - <WithBadge section="index" /> - - <div> - <h1 className="special">隨時隨地執行 JavaScript</h1> - - Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發者建立伺服器、網頁應用程式 - 命令列工具與腳本。 - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>下載 Node.js (LTS)</DownloadButton> - <small> - 下載享有長期支援功能的 Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>。 - Node.js 也可以透過 <Link href="/download/package-manager">套件管理器</Link> 安裝。 - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( +<WithBadge section="index" /> + +<div> + <h1 className="special">隨時隨地執行 JavaScript</h1> + +Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發者建立伺服器、網頁應用程式、命令列工具與指令稿。 + +</div> + +<div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>下載 Node.js (LTS)</DownloadButton> <small> - 想要更快體驗新功能嗎? - 那就下載 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 吧。 + 下載享有長期支援的 Node.js <b>{release.versionWithPrefix}</b> + <sup title="下載適用於您目前平台的 Node.js 安裝程式">1</sup>。 + 您也可以透過<Link href="/download/package-manager">套件管理程式</Link>來安裝 Node.js。 </small> - )} - </WithNodeRelease> - - </div> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( + <small> + 想要更快體驗新功能嗎? + 那就下載 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> 吧。 + </small> + )} + </WithNodeRelease> +</div> </section> <section> - <div> - ```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` - ``` - - </div> - 我們提供大量[學習資源](/learn),探索 Node.js 的無限潛能。 +<div> + ```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` +``` + +</div> + +我們提供大量[學習資源](/learn),探索 Node.js 的無限潛能。 + </section> diff --git a/apps/site/snippets/ko/download/devbox.bash b/apps/site/snippets/ko/download/devbox.bash new file mode 100644 index 0000000000000..d3725e35fff39 --- /dev/null +++ b/apps/site/snippets/ko/download/devbox.bash @@ -0,0 +1,14 @@ +# Devbox 다운로드 및 설치: +curl -fsSL https://get.jetify.com/devbox | bash + +# 프로젝트에서 Devbox 초기화 +devbox init + +# Node.js 다운로드 및 설치: +devbox add node@${props.release.major} + +# Devbox 셸 열기 +devbox shell + +# Node.js 버전 확인: +node -v # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/uk/download/devbox.bash b/apps/site/snippets/uk/download/devbox.bash new file mode 100644 index 0000000000000..1c3f08e8e5d36 --- /dev/null +++ b/apps/site/snippets/uk/download/devbox.bash @@ -0,0 +1,14 @@ +# Завантажує й установлює Devbox +curl -fsSL https://get.jetify.com/devbox | bash + +# Ініціалізує Devbox у вашому проєкті +devbox init + +# Завантажує й установлює Node.js: +devbox add node@${props.release.major} + +# Відкриває оболонку Devbox +devbox shell + +# Перевіряє версію Node.js: +node -v # Повинно вивести «${props.release.versionWithPrefix}». diff --git a/apps/site/snippets/zh-tw/download/devbox.bash b/apps/site/snippets/zh-tw/download/devbox.bash new file mode 100644 index 0000000000000..e160988cf68a2 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/devbox.bash @@ -0,0 +1,14 @@ +# 下載並安裝 Devbox: +curl -fsSL https://get.jetify.com/devbox | bash + +# 在您的專案中初始化 Devbox +devbox init + +# 下載並安裝 Node.js: +devbox add node@${props.release.major} + +# 啟動 Devbox shell +devbox shell + +# 核對 Node.js 版本: +node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/packages/i18n/locales/ko.json b/packages/i18n/locales/ko.json index f1e56962e2c85..4c2b21e8f2080 100644 --- a/packages/i18n/locales/ko.json +++ b/packages/i18n/locales/ko.json @@ -138,9 +138,16 @@ } }, "downloadReleasesTable": { - "changelog": "변경로그", - "releases": "릴리스", - "docs": "문서" + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "코드명", + "releaseDate": "출시일", + "actions": { + "changelog": "변경 내역", + "releases": "릴리스", + "docs": "문서" + } }, "pagination": { "next": "다음", @@ -272,6 +279,7 @@ "fnm": "\"fnm\"은 플랫폼 간 Node.js 버전 관리자입니다.", "brew": "Homebrew는 macOS와 Linux용 패키지 관리자입니다.", "choco": "Chocolatey는 Windows용 패키지 관리자입니다.", + "devbox": "Devbox는 격리되고 재현 가능한 개발 환경을 제공합니다.", "docker": "Docker는 컨테이너화 플랫폼입니다. " } } diff --git a/packages/i18n/locales/uk.json b/packages/i18n/locales/uk.json index e420910399745..af28f362248e8 100644 --- a/packages/i18n/locales/uk.json +++ b/packages/i18n/locales/uk.json @@ -90,9 +90,11 @@ "modules": { "links": { "modules": "Модулі", + "publishingAPackage": "Публікація пакета", "publishingNodeApiModules": "Як опублікувати пакет Node-API", "anatomyOfAnHttpTransaction": "Анатомія HTTP-транзакції", "abiStability": "Стабільність ABI", + "howToUseStreams": "Використання потоків", "backpressuringInStreams": "Зворотний тиск у потоках" } }, @@ -135,32 +137,28 @@ } } }, - "downloadList": { - "links": { - "previousReleases": "Релізи Node.js", - "packageManager": "Установка Node.js через менеджер пакетів", - "shaSums": { - "title": "Підписані SHASUMS для файлів релізу", - "howToVerify": " (Як перевірити)" - }, - "allDownloads": "Усі варіанти завантажень", - "nightlyReleases": "Нічні збірки", - "unofficialBuilds": "Неофіційні збірки", - "buildingFromSource": "Збірка Node.js із вихідного коду на підтримуваних платформах", - "installingOnLinux": "Установка Node.js через бінарний архів", - "installingOnWsl": "Установка на підсистемі Windows для Linux (WSL)" - } - }, "downloadReleasesTable": { - "changelog": "Список змін", - "releases": "Релізи", - "docs": "Документація" + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "Кодова назва", + "releaseDate": "Опубліковано о", + "actions": { + "changelog": "Список змін", + "releases": "Релізи", + "docs": "Документація" + } }, "pagination": { "next": "Далі", "previous": "Назад" }, "common": { + "alertBox": { + "info": "Інформація", + "warning": "Попередження", + "danger": "Небезпека" + }, "breadcrumbs": { "navigateToHome": "До головної" }, @@ -201,32 +199,9 @@ "viewAs": "Переглянути як", "tableOfContents": "Зміст" }, - "downloads": { - "changelogModal": { - "startContributing": "Долучитися" - } - }, "search": { "searchBox": { "placeholder": "Пошук..." - }, - "seeAll": { - "text": "Переглянути всі {count} результатів" - }, - "searchError": { - "text": "Виникла помилка під час пошуку. Спробуйте пізніше." - }, - "poweredBy": { - "text": "За підтримки" - }, - "noResults": { - "text": "Не знайдено результатів для «{query}»." - }, - "emptyState": { - "text": "Знайти щось..." - }, - "searchPage": { - "title": "Ви шукаєте: {query}" } }, "blog": { @@ -277,49 +252,36 @@ "backToHome": "До головної" }, "download": { - "selectCategory": "Категорії", - "categories": { - "prebuilt-installer": "Готовий інсталятор", - "prebuilt-binaries": "Готові бінарні файли", - "package-manager": "Менеджер пакетів", - "source-code": "Вихідний код" - }, "buttons": { - "prebuilt": "Завантажити Node.js {version}", - "source": "Завантажити вихідний код Node.js {version}" + "installer": "Інсталятор {os} (.{extension})", + "binary": "Автономний бінарний файл (.{extension})" }, "dropdown": { - "bitness": "Розрядність", + "platform": "Платформа", "os": "Операційна система", "version": "Версія", - "platform": "Платформа" + "installMethod": "Метод установки", + "packageManager": "Менеджер пакетів", + "unknown": "Невідомо", + "platformGroups": { + "official": "Рекомендовані (офіційні)", + "unofficial": "Спільнотні (неофіційні)" + } }, "codeBox": { - "unsupportedVersionWarning": "Ця версія більше не обслуговується. Дізнайтеся більше тут:", - "fnmEnvSetup": "налаштовує середовище fnm", - "systemManagerWarning": "не є менеджером пакетів Node.js. Переконайтеся, що у вас уже встановлено {packageManager}.", - "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": "завантажує образ Docker Node.js", - "homebrewIsNotNodejsPackageManager": "Homebrew не є менеджером пакетів Node.js.", - "homebrewInstructions": "Дотримуйтесь офіційних інструкцій на https://brew.sh/", - "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew підтримує лише основні версії Node.js і може не підтримувати останню версію Node.js {version} ряду версій.", - "chocolateyIsNotNodejsPackageManager": "Chocolatey не є менеджером пакетів Node.js.", - "chocolateyInstructions": "Дотримуйтесь офіційних інструкцій на https://chocolatey.org/", - "chocolateyNotMaintanedByNodejs": "Chocolatey офіційно не підтримується проєктом Node.js і може не підтримувати Node.js версії {version}" + "unsupportedVersionWarning": "Ця версія більше не супроводжується. Будь ласка, використовуйте підтримувану версію. <link>Про кінець підтримки</link>.", + "communityPlatformInfo": "Методи установки, які включають ПЗ спільноти, підтримуються відповідними супроводжувачами.", + "externalSupportInfo": "Якщо виявите проблеми, відвідайте <link>вебсайт {platform}</link>", + "noScriptDetected": "Ця сторінка вимагає JavaScript. Завантажити Node.js без JavaScript можна, безпосередньо відвідавши <link>сторінку релізів</link>.", + "platformInfo": { + "default": "{platform} та його скрипти установки не супроводжуються проєктом Node.js.", + "nvm": "«nvm» — це кросплатформний менеджер версій Node.js.", + "fnm": "«fnm» — це кросплатформний менеджер версій Node.js.", + "brew": "Homebrew — це менеджер пакетів для macOS та Linux.", + "choco": "Chocolatey — це менеджер пакетів для Windows.", + "devbox": "Devbox створює ізольовані та відтворювані середовища розробки.", + "docker": "Docker — це платформа контейнеризації." + } } } } diff --git a/packages/i18n/locales/zh-tw.json b/packages/i18n/locales/zh-tw.json index 1be331a1ad973..676656b2e8507 100644 --- a/packages/i18n/locales/zh-tw.json +++ b/packages/i18n/locales/zh-tw.json @@ -5,6 +5,7 @@ "links": { "trademarkPolicy": "商標政策", "privacyPolicy": "隱私政策", + "versionSupport": "版本支援", "codeOfConduct": "行為準則", "security": "安全性政策" } @@ -18,7 +19,8 @@ "learn": "學習資源", "security": "安全性", "certification": "認證", - "blog": "部落格" + "blog": "部落格", + "contribute": "貢獻" } } }, @@ -34,19 +36,27 @@ "anIntroductionToTheNpmPackageManager": "Npm 套件管理器介紹", "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) 與更高的版本", "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js 在開發與生產環境的差別", - "nodejsWithTypescript": "Node.js 搭配 TypeScript", "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 中的非同步與回調函數", + "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript 中的非同步程式與回呼函式", "discoverJavascriptTimers": "探索 JavaScript 計時器", "eventLoopTimersAndNexttick": "Node.js 中的事件循環", "theNodejsEventEmitter": "Node.js 中的事件發射器", @@ -80,9 +90,11 @@ "modules": { "links": { "modules": "模塊", + "publishingAPackage": "發布套件", "publishingNodeApiModules": "如何釋出 Node-API 套件", "anatomyOfAnHttpTransaction": "HTTP 事務解析", "abiStability": "ABI 穩定性", + "howToUseStreams": "如何使用串流", "backpressuringInStreams": "串流中的背壓機制" } }, @@ -100,7 +112,8 @@ "links": { "testRunner": "測試執行器", "introduction": "探索 Node.js 中的測試執行器", - "usingTestRunner": "使用 Node.js 中的測試執行器" + "usingTestRunner": "使用 Node.js 中的測試執行器", + "mocking": "如何使用串流" } } }, @@ -124,32 +137,28 @@ } } }, - "downloadList": { - "links": { - "previousReleases": "Node.js 版本", - "packageManager": "使用套件管理器安裝 Node.js", - "shaSums": { - "title": "釋出檔案的已簽署 SHASUM", - "howToVerify": " (如何驗證)" - }, - "allDownloads": "所有下載選項", - "nightlyReleases": "每日建構版本", - "unofficialBuilds": "非官方建構版本", - "buildingFromSource": "在支援的平台上從原始碼建構 Node.js", - "installingOnLinux": "使用二進制存檔安裝 Node.js", - "installingOnWsl": "在適用於 Linux 的 Windows 子系統 (WSL) 上安裝" - } - }, "downloadReleasesTable": { - "changelog": "更新紀錄", - "releases": "版本釋出", - "docs": "文件" + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "代號", + "releaseDate": "發佈於", + "actions": { + "changelog": "更新紀錄", + "releases": "發行版本", + "docs": "文件" + } }, "pagination": { "next": "下一頁", "previous": "上一頁" }, "common": { + "alertBox": { + "info": "資訊", + "warning": "警告", + "danger": "危險" + }, "breadcrumbs": { "navigateToHome": "返回首頁" }, @@ -179,14 +188,9 @@ "label": "切換深色模式" } }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "近期沒有活動" - } - }, "metabar": { "lastUpdated": "最後更新", - "readingTime": "閱讀時長", + "readingTime": "閱讀時間", "addedIn": "新增於", "author": "作者", "authors": "作者", @@ -195,32 +199,9 @@ "viewAs": "檢視模式", "tableOfContents": "目錄" }, - "downloads": { - "changelogModal": { - "startContributing": "開始貢獻" - } - }, "search": { "searchBox": { "placeholder": "開始輸入…" - }, - "seeAll": { - "text": "查看全部 {count} 則結果" - }, - "searchError": { - "text": "搜尋時發生錯誤,請稍後再試。" - }, - "poweredBy": { - "text": "技術支援" - }, - "noResults": { - "text": "找不到任何「{query}」的搜尋結果。" - }, - "emptyState": { - "text": "開始搜尋…" - }, - "searchPage": { - "title": "你正在搜尋:{query}" } }, "blog": { @@ -271,48 +252,36 @@ "backToHome": "回到首頁" }, "download": { - "selectCategory": "類別", - "categories": { - "prebuilt-installer": "預建構安裝程式", - "prebuilt-binaries": "預建構二進制文件", - "package-manager": "套件管理器", - "source-code": "原始碼" - }, "buttons": { - "prebuilt": "下載 Node.js {version}", - "source": "下載 Node.js {version} 的原始碼" + "installer": "{os} 安裝程式 (.{extension})", + "binary": "獨立可執行檔 (.{extension})" }, "dropdown": { - "bitness": "位元數", + "platform": "平台", "os": "作業系統", "version": "版本", - "platform": "平台" + "installMethod": "安裝方式", + "packageManager": "套件管理程式", + "unknown": "未知", + "platformGroups": { + "official": "官方推薦", + "unofficial": "非官方社群" + } }, "codeBox": { - "fnmEnvSetup": "設定 fnm 環境", - "systemManagerWarning": "不是 Node.js 的套件管理器。請確保你已安裝 {packageManager}。", - "communityWarning": "套件管理器與其安裝腳本並非由 Node.js 專案維護。", - "communityWarningReport": "如果遇到問題,請聯絡套件管理器的維護者。", - "installsNvm": "安裝 nvm (Node 版本管理器)", - "downloadAndInstallNodejsRestartTerminal": "下載並安裝 Node.js (您可能需要重新啟動終端機)", - "verifiesRightNodejsVersion": "驗證環境中正確的 Node.js 版本", - "verifiesRightNpmVersion": "驗證環境中正確的 npm 版本", - "shouldPrint": "應該顯示 `{version}`", - "installsFnm": "安裝 fnm (快速 Node 管理器)", - "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.j" + "unsupportedVersionWarning": "此版本已不再維護,請改用現正支援的版本。<link>了解更新終止 (EOL) 支援</link>。", + "communityPlatformInfo": "涉及社群軟體的安裝方式由其維護團隊提供支援。", + "externalSupportInfo": "若您遇到任何問題,請造訪 <link>{platform} 網站</link>", + "noScriptDetected": "此網頁需要使用 JavaScript。您可以直接造訪 <link>發行網頁</link> 以下載 Node.js,無需 JavaScript。", + "platformInfo": { + "default": "套件管理器與其安裝指令稿並非由 Node.js 專案維護。", + "nvm": "\"nvm\" 是跨平台的 Node.js 版本管理程式。", + "fnm": "\"fnm\" 是跨平台的 Node.js 版本管理程式。", + "brew": "Homebrew 是 macOS 及 Linux 的套件管理程式。", + "choco": "Chocolatey 是 Windows 的套件管理程式。", + "devbox": "Devbox 會建立隔離且可重現的開發環境。", + "docker": "Docker 是一款容器化平台。" + } } } } From 3dce4407edd914df3dcb6cb26398218a693deda8 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Tue, 28 Jan 2025 06:54:15 -0600 Subject: [PATCH 0273/1385] Update notify-on-push.yml (#7430) * Update notify-on-push.yml Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * Update notify-on-push.yml Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --------- Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- .github/workflows/notify-on-push.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index 57d7e4451dd62..41b6cc9bf04c4 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -10,7 +10,9 @@ permissions: jobs: notify_on_push: name: Notify on any direct push to `main` - if: github.repository == 'nodejs/nodejs.org' + if: > + github.repository == 'nodejs/nodejs.org' && + github.actor != 'github-merge-queue[bot]' runs-on: ubuntu-latest steps: - name: Slack Notification From c119197687b5aa805f52aad54fa9eb965ba71834 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Tue, 28 Jan 2025 06:57:35 -0600 Subject: [PATCH 0274/1385] Remove reference-style markdown links from translated content (#7426) inline markdown links --- apps/site/pages/en/about/governance.md | 17 +++++------------ apps/site/pages/en/about/index.mdx | 14 ++++---------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/apps/site/pages/en/about/governance.md b/apps/site/pages/en/about/governance.md index 72321ba48bd40..0fd920619306a 100644 --- a/apps/site/pages/en/about/governance.md +++ b/apps/site/pages/en/about/governance.md @@ -7,31 +7,24 @@ layout: about ## Consensus Seeking Process -The Node.js project follows a [Consensus Seeking][] decision making model. +The Node.js project follows a [Consensus Seeking](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making) decision making model. ## Collaborators -The [nodejs/node][] core GitHub repository is maintained by the Collaborators +The [nodejs/node](https://github.com/nodejs/node) core GitHub repository is maintained by the Collaborators who are nominated by other existing Collaborators on an ongoing basis. Individuals making significant and valuable contributions are made Collaborators and given commit-access to the project. These individuals are identified by other Collaborators and their nomination is discussed with the existing Collaborators. -For the current list of Collaborators, see the project's [README.md][]. +For the current list of Collaborators, see the project's [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members). -A guide for Collaborators is maintained at [collaborator-guide.md][]. +A guide for Collaborators is maintained at [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md). ## Technical Steering Committee -The project is governed by the [Technical Steering Committee (TSC)][] +The project is governed by the [Technical Steering Committee (TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md) which is responsible for high-level guidance of the project. TSC is a subset of active Collaborators who are nominated by other existing TSC members. - -[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/en/about/index.mdx b/apps/site/pages/en/about/index.mdx index f35bfc6a68919..a20f08cf3f97e 100644 --- a/apps/site/pages/en/about/index.mdx +++ b/apps/site/pages/en/about/index.mdx @@ -53,12 +53,12 @@ synchronous methods of Node.js standard library. Because nothing blocks, scalabl reasonable to develop in Node.js. If some of this language is unfamiliar, there is a full article on -[Blocking vs. Non-Blocking][]. +[Blocking vs. Non-Blocking](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking). --- Node.js is similar in design to, and influenced by, systems like Ruby's -[Event Machine][] and Python's [Twisted][]. Node.js takes the event model a bit +[Event Machine](https://github.com/eventmachine/eventmachine) and Python's [Twisted](https://twisted.org/). Node.js takes the event model a bit further. It presents an event loop as a runtime construct instead of as a library. In other systems, there is always a blocking call to start the event-loop. Typically, behavior is defined through callbacks at the beginning of a script, and @@ -73,13 +73,7 @@ library or framework. Node.js being designed without threads doesn't mean you can't take advantage of multiple cores in your environment. Child processes can be spawned -by using our [`child_process.fork()`][] API, and are designed to be easy to -communicate with. Built upon that same interface is the [`cluster`][] module, +by using our [`child_process.fork()`](https://nodejs.org/api/child_process.html) API, and are designed to be easy to +communicate with. Built upon that same interface is the [`cluster`](https://nodejs.org/api/cluster.html) module, which allows you to share sockets between processes to enable load balancing over your cores. - -[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/ From 6fed09a6d74bf3df9466f445d4b460ab66100d8e Mon Sep 17 00:00:00 2001 From: Lex Li <425130+lextm@users.noreply.github.com> Date: Tue, 28 Jan 2025 15:54:32 -0500 Subject: [PATCH 0275/1385] Fix: nodejs.org/about/* leads to 404 (#7432) Signed-off-by: Lex Li <425130+lextm@users.noreply.github.com> --- apps/site/redirects.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/site/redirects.json b/apps/site/redirects.json index 236a16a4e37d2..3795508081d2e 100644 --- a/apps/site/redirects.json +++ b/apps/site/redirects.json @@ -92,6 +92,10 @@ "source": "/about", "destination": "/en/about" }, + { + "source": "/about/:path*", + "destination": "/en/about/:path*" + }, { "source": "/community", "destination": "/en/get-involved" From 7efa770b871f62d743c0f3d3f611d8677429677a Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Tue, 28 Jan 2025 18:30:00 -0800 Subject: [PATCH 0276/1385] chore: better links for source (#7428) * chore: better links for source * chore: addressed feedback --- .../components/Downloads/DownloadLink.tsx | 15 ++++++++-- .../Downloads/Release/DownloadLink.tsx | 25 ++++++++++++++++ apps/site/next.mdx.use.client.mjs | 29 ++++++++++--------- apps/site/pages/en/download/current.mdx | 4 +-- apps/site/pages/en/download/index.mdx | 4 +-- apps/site/pages/en/index.mdx | 2 +- apps/site/util/getNodeDownloadUrl.ts | 2 +- 7 files changed, 59 insertions(+), 22 deletions(-) create mode 100644 apps/site/components/Downloads/Release/DownloadLink.tsx diff --git a/apps/site/components/Downloads/DownloadLink.tsx b/apps/site/components/Downloads/DownloadLink.tsx index c4cc62402b7e1..df9fc74c5e7ab 100644 --- a/apps/site/components/Downloads/DownloadLink.tsx +++ b/apps/site/components/Downloads/DownloadLink.tsx @@ -2,23 +2,32 @@ import type { FC, PropsWithChildren } from 'react'; +import LinkWithArrow from '@/components/LinkWithArrow'; import { useClientContext } from '@/hooks'; import type { NodeRelease } from '@/types'; +import type { DownloadKind } from '@/util/getNodeDownloadUrl'; import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; import { getUserPlatform } from '@/util/getUserPlatform'; -type DownloadLinkProps = { release: NodeRelease }; +type DownloadLinkProps = { release: NodeRelease; kind?: DownloadKind }; const DownloadLink: FC<PropsWithChildren<DownloadLinkProps>> = ({ release: { versionWithPrefix }, + kind = 'installer', children, }) => { const { os, bitness, architecture } = useClientContext(); const platform = getUserPlatform(architecture, bitness); - const downloadLink = getNodeDownloadUrl(versionWithPrefix, os, platform); - return <a href={downloadLink}>{children}</a>; + const downloadLink = getNodeDownloadUrl( + versionWithPrefix, + os, + platform, + kind + ); + + return <LinkWithArrow href={downloadLink}>{children}</LinkWithArrow>; }; export default DownloadLink; diff --git a/apps/site/components/Downloads/Release/DownloadLink.tsx b/apps/site/components/Downloads/Release/DownloadLink.tsx new file mode 100644 index 0000000000000..40b43abb80648 --- /dev/null +++ b/apps/site/components/Downloads/Release/DownloadLink.tsx @@ -0,0 +1,25 @@ +'use client'; + +import type { FC, PropsWithChildren } from 'react'; +import { useContext } from 'react'; + +import DownloadLinkBase from '@/components/Downloads/DownloadLink'; +import { ReleaseContext } from '@/providers/releaseProvider'; +import type { DownloadKind } from '@/util/getNodeDownloadUrl'; + +type DownloadLinkProps = { kind?: DownloadKind }; + +const DownloadLink: FC<PropsWithChildren<DownloadLinkProps>> = ({ + kind = 'installer', + children, +}) => { + const { release } = useContext(ReleaseContext); + + return ( + <DownloadLinkBase release={release} kind={kind}> + {children} + </DownloadLinkBase> + ); +}; + +export default DownloadLink; diff --git a/apps/site/next.mdx.use.client.mjs b/apps/site/next.mdx.use.client.mjs index 88d11389a9ec9..64584887b2a7a 100644 --- a/apps/site/next.mdx.use.client.mjs +++ b/apps/site/next.mdx.use.client.mjs @@ -6,13 +6,14 @@ import DownloadButton from './components/Downloads/DownloadButton'; import DownloadLink from './components/Downloads/DownloadLink'; import BlogPostLink from './components/Downloads/Release/BlogPostLink'; import ChangelogLink from './components/Downloads/Release/ChangelogLink'; -import InstallationMethodDropdown from './components/Downloads/Release/InstallationMethodDropdown'; -import OperatingSystemDropdown from './components/Downloads/Release/OperatingSystemDropdown'; -import PackageManagerDropdown from './components/Downloads/Release/PackageManagerDropdown'; -import PlatformDropdown from './components/Downloads/Release/PlatformDropdown'; -import PrebuiltDownloadButtons from './components/Downloads/Release/PrebuiltDownloadButtons'; +import ReleaseDownloadLink from './components/Downloads/Release/DownloadLink'; +import ReleaseInstallationMethodDropdown from './components/Downloads/Release/InstallationMethodDropdown'; +import ReleaseOperatingSystemDropdown from './components/Downloads/Release/OperatingSystemDropdown'; +import ReleasePackageManagerDropdown from './components/Downloads/Release/PackageManagerDropdown'; +import ReleasePlatformDropdown from './components/Downloads/Release/PlatformDropdown'; +import ReleasePrebuiltDownloadButtons from './components/Downloads/Release/PrebuiltDownloadButtons'; import ReleaseCodeBox from './components/Downloads/Release/ReleaseCodeBox'; -import VersionDropdown from './components/Downloads/Release/VersionDropdown'; +import ReleaseVersionDropdown from './components/Downloads/Release/VersionDropdown'; import Link from './components/Link'; import LinkWithArrow from './components/LinkWithArrow'; import MDXCodeBox from './components/MDX/CodeBox'; @@ -44,23 +45,25 @@ export const clientMdxComponents = { // Provides an individual Node.js Release Context for Downloads Provider: ReleaseProvider, // Renders a drop-down menu to select a version - VersionDropdown: VersionDropdown, + VersionDropdown: ReleaseVersionDropdown, // Renders a drop-down menu to select a platform - InstallationMethodDropdown: InstallationMethodDropdown, + InstallationMethodDropdown: ReleaseInstallationMethodDropdown, // Renders a drop-down menu to select a package manager - PackageManagerDropdown: PackageManagerDropdown, + PackageManagerDropdown: ReleasePackageManagerDropdown, // Renders a drop-down menu to select a bitness - PlatformDropdown: PlatformDropdown, + PlatformDropdown: ReleasePlatformDropdown, // Renders a drop-down menu to select an operating system - OperatingSystemDropdown: OperatingSystemDropdown, + OperatingSystemDropdown: ReleaseOperatingSystemDropdown, // Renders a Blog Post Link for the selected release BlogPostLink: BlogPostLink, // Renders a Download Button for the selected release - PrebuiltDownloadButtons: PrebuiltDownloadButtons, + PrebuiltDownloadButtons: ReleasePrebuiltDownloadButtons, // Renders a Release CodeBox ReleaseCodeBox: ReleaseCodeBox, - // Renders a Changelog Modal Link Button + // Renders a Changelog Link Button ChangelogLink: ChangelogLink, + // Renders a DownloadLink Button + DownloadLink: ReleaseDownloadLink, }, }; diff --git a/apps/site/pages/en/download/current.mdx b/apps/site/pages/en/download/current.mdx index b1d9f2b646828..471b38d940478 100644 --- a/apps/site/pages/en/download/current.mdx +++ b/apps/site/pages/en/download/current.mdx @@ -27,10 +27,10 @@ Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version Learn how to <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verify</LinkWithArrow> signed SHASUMS. -Learn how to <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">build Node.js</LinkWithArrow> from source. +Looking for Node.js source? Download a signed <Release.DownloadLink kind="source">Node.js source</Release.DownloadLink> tarball. Check out our <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> binaries or -all <Link href="/about/previous-releases#looking-for-the-latest-release-of-a-version-branch">previous releases</Link> +all <LinkWithArrow href="https://nodejs.org/download/release/">previous releases</LinkWithArrow> or the <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">unofficial</LinkWithArrow> binaries for other platforms. </section> diff --git a/apps/site/pages/en/download/index.mdx b/apps/site/pages/en/download/index.mdx index b1d9f2b646828..471b38d940478 100644 --- a/apps/site/pages/en/download/index.mdx +++ b/apps/site/pages/en/download/index.mdx @@ -27,10 +27,10 @@ Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version Learn how to <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verify</LinkWithArrow> signed SHASUMS. -Learn how to <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">build Node.js</LinkWithArrow> from source. +Looking for Node.js source? Download a signed <Release.DownloadLink kind="source">Node.js source</Release.DownloadLink> tarball. Check out our <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> binaries or -all <Link href="/about/previous-releases#looking-for-the-latest-release-of-a-version-branch">previous releases</Link> +all <LinkWithArrow href="https://nodejs.org/download/release/">previous releases</LinkWithArrow> or the <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">unofficial</LinkWithArrow> binaries for other platforms. </section> diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index c3307276a6bb0..1558dac0319aa 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -22,7 +22,7 @@ layout: home <small> Downloads Node.js <b>{release.versionWithPrefix}</b> <sup title="Downloads a Node.js installer for your current platform">1</sup> with long-term support. - Node.js can also be installed via <Link href="/download/package-manager">package managers</Link>. + Node.js can also be installed via <Link href="/download">version managers</Link>. </small> </> )} diff --git a/apps/site/util/getNodeDownloadUrl.ts b/apps/site/util/getNodeDownloadUrl.ts index 9775c4c675188..6b4fc34935cd0 100644 --- a/apps/site/util/getNodeDownloadUrl.ts +++ b/apps/site/util/getNodeDownloadUrl.ts @@ -1,7 +1,7 @@ import { DIST_URL } from '@/next.constants.mjs'; import type { UserOS, UserPlatform } from '@/types/userOS'; -type DownloadKind = 'installer' | 'binary' | 'source'; +export type DownloadKind = 'installer' | 'binary' | 'source'; export const getNodeDownloadUrl = ( versionWithPrefix: string, From 70f5a9f1d465cbe57c4ccdd2215994bd8b9c952c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= <arauujogui@gmail.com> Date: Wed, 29 Jan 2025 15:28:10 -0300 Subject: [PATCH 0277/1385] feat: create markdown snippets linter (#7431) * feat: create markdown snippets linter * chore: review * chore: rollback test --- apps/site/package.json | 3 +- .../en/learn/modules/how-to-use-streams.md | 68 +++++++------ .../pages/en/learn/test-runner/mocking.md | 9 +- apps/site/scripts/lint-snippets/index.mjs | 96 +++++++++++++++++++ apps/site/turbo.json | 4 + package-lock.json | 1 + package.json | 1 + turbo.json | 2 + 8 files changed, 152 insertions(+), 32 deletions(-) create mode 100755 apps/site/scripts/lint-snippets/index.mjs diff --git a/apps/site/package.json b/apps/site/package.json index 24ca5531520df..9c9d5a018a1b7 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -10,9 +10,10 @@ "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true npm run build", "check-types": "tsc --noEmit", "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", + "lint:snippets": "node ./scripts/lint-snippets/index.mjs", "lint:md": "eslint \"**/*.md?(x)\" --cache --cache-strategy=content --cache-location=.eslintmdcache", "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", - "lint": "turbo run lint:md lint:js lint:css", + "lint": "turbo run lint:md lint:snippets 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 --no-open", diff --git a/apps/site/pages/en/learn/modules/how-to-use-streams.md b/apps/site/pages/en/learn/modules/how-to-use-streams.md index 2dca4746165a4..2eb59c87ed5ac 100644 --- a/apps/site/pages/en/learn/modules/how-to-use-streams.md +++ b/apps/site/pages/en/learn/modules/how-to-use-streams.md @@ -248,18 +248,24 @@ class MyStream extends Writable { process.stdout.write(data.toString().toUpperCase() + '\n', cb); } } -const stream = new MyStream(); -for (let i = 0; i < 10; i++) { - const waitDrain = !stream.write('hello'); +async function main() { + const stream = new MyStream(); - if (waitDrain) { - console.log('>> wait drain'); - await once(stream, 'drain'); + for (let i = 0; i < 10; i++) { + const waitDrain = !stream.write('hello'); + + if (waitDrain) { + console.log('>> wait drain'); + await once(stream, 'drain'); + } } + + stream.end('world'); } -stream.end('world'); +// Call the async function +main().catch(console.error); ``` ```mjs @@ -663,15 +669,19 @@ Here's an example demonstrating the use of async iterators with a readable strea const fs = require('node:fs'); const { pipeline } = require('node:stream/promises'); -await pipeline( - fs.createReadStream(import.meta.filename), - async function* (source) { - for await (let chunk of source) { - yield chunk.toString().toUpperCase(); - } - }, - process.stdout -); +async function main() { + await pipeline( + fs.createReadStream(__filename), + async function* (source) { + for await (let chunk of source) { + yield chunk.toString().toUpperCase(); + } + }, + process.stdout + ); +} + +main().catch(console.error); ``` ```mjs @@ -798,18 +808,22 @@ The helper functions are useful if you need to return a Web Stream from a Node.j ```cjs const { pipeline } = require('node:stream/promises'); -const { body } = await fetch('https://nodejs.org/api/stream.html'); +async function main() { + const { body } = await fetch('https://nodejs.org/api/stream.html'); -await pipeline( - body, - new TextDecoderStream(), - async function* (source) { - for await (const chunk of source) { - yield chunk.toString().toUpperCase(); - } - }, - process.stdout -); + await pipeline( + body, + new TextDecoderStream(), + async function* (source) { + for await (const chunk of source) { + yield chunk.toString().toUpperCase(); + } + }, + process.stdout + ); +} + +main().catch(console.error); ``` ```mjs diff --git a/apps/site/pages/en/learn/test-runner/mocking.md b/apps/site/pages/en/learn/test-runner/mocking.md index 9da90c7869f02..fc26422db5fa4 100644 --- a/apps/site/pages/en/learn/test-runner/mocking.md +++ b/apps/site/pages/en/learn/test-runner/mocking.md @@ -149,7 +149,6 @@ This leverages [`mock`](https://nodejs.org/api/test.html#class-mocktracker) from import assert from 'node:assert/strict'; import { before, describe, it, mock } from 'node:test'; - describe('foo', { concurrency: true }, () => { let barMock = mock.fn(); let foo; @@ -157,12 +156,12 @@ describe('foo', { concurrency: true }, () => { before(async () => { const barNamedExports = await import('./bar.mjs') // discard the original default export - .then(({ default, ...rest }) => rest); + .then(({ default: _, ...rest }) => rest); // It's usually not necessary to manually call restore() after each // nor reset() after all (node does this automatically). mock.module('./bar.mjs', { - defaultExport: barMock + defaultExport: barMock, // Keep the other exports that you don't want to mock. namedExports: barNamedExports, }); @@ -173,7 +172,9 @@ describe('foo', { concurrency: true }, () => { }); it('should do the thing', () => { - barMock.mockImplementationOnce(function bar_mock() {/* … */}); + barMock.mockImplementationOnce(function bar_mock() { + /* … */ + }); assert.equal(foo(), 42); }); diff --git a/apps/site/scripts/lint-snippets/index.mjs b/apps/site/scripts/lint-snippets/index.mjs new file mode 100755 index 0000000000000..fd155ce33a774 --- /dev/null +++ b/apps/site/scripts/lint-snippets/index.mjs @@ -0,0 +1,96 @@ +import { readFile } from 'node:fs/promises'; + +import { parse } from 'acorn'; +import { glob } from 'glob'; +import remarkParse from 'remark-parse'; +import { unified } from 'unified'; +import { visit } from 'unist-util-visit'; + +const SUPPORTED_LANGUAGES = ['js', 'mjs', 'cjs']; + +// Initialize the markdown parser +const markdownParser = unified().use(remarkParse); + +/** + * Parse JavaScript code using Acorn + * + * @param {string} code - The code to parse + * @param {string} language - The language identifier + * @returns {void} + * @throws {Error} If parsing fails + */ +function parseJavaScript(code, language) { + parse(code, { + ecmaVersion: 'latest', + sourceType: language === 'cjs' ? 'script' : 'module', + allowReturnOutsideFunction: true, + }); +} + +/** + * Validate code blocks in a markdown file + * + * @param {string} filePath - Path to the markdown file + * @returns {Array<{path: string, position: number, message: string}>} Array of errors + */ +async function validateFile(filePath) { + const errors = []; + + const content = await readFile(filePath, 'utf-8'); + const tree = markdownParser.parse(content); + + visit(tree, 'code', node => { + // TODO: Add TypeScript support + if (!SUPPORTED_LANGUAGES.includes(node.lang)) { + return; + } + + try { + parseJavaScript(node.value, node.lang); + } catch (err) { + errors.push({ + path: filePath, + position: node.position.start.line, + message: err.message, + }); + } + }); + + return errors; +} + +/** + * Print validation errors to console + * + * @param {Array<{path: string, position: number, message: string}>} errors + * @returns {void} + */ +function reportErrors(errors) { + if (errors.length === 0) { + return; + } + + console.error('Errors found in the following files:'); + errors.forEach(({ path, position, message }) => { + console.error(`- ${path}:${position}: ${message}`); + }); +} + +// Get all markdown files +const filePaths = await glob('**/*.md', { + root: process.cwd(), + cwd: 'apps/site/pages/en/learn/', + absolute: true, +}); + +// Validate all files and collect errors +const allErrors = await Promise.all(filePaths.map(validateFile)); + +// Flatten the array of errors +const flattenedErrors = allErrors.flat(); + +// Report errors if any +reportErrors(flattenedErrors); + +// Exit with appropriate code +process.exit(flattenedErrors.length > 0 ? 1 : 0); diff --git a/apps/site/turbo.json b/apps/site/turbo.json index ade8cb87f6e87..3e6e21152528f 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -108,6 +108,10 @@ "inputs": ["{app,pages}/**/*.{md,mdx}", "*.{md,mdx}"], "outputs": [".eslintmdcache"] }, + "lint:snippets": { + "inputs": ["{app,pages}/**/*.{md,mdx}", "*.{md,mdx}"], + "outputs": [] + }, "lint:css": { "inputs": ["{app,components,layouts,pages,styles}/**/*.css"], "outputs": [".stylelintcache"] diff --git a/package-lock.json b/package-lock.json index d98d323a46b7f..63d93b7745a74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "packages/*" ], "dependencies": { + "acorn": "^8.14.0", "husky": "9.1.7", "lint-staged": "15.3.0", "turbo": "2.3.3" diff --git a/package.json b/package.json index 17ceca5084fac..01d8cb251c6f7 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "prepare": "husky" }, "dependencies": { + "acorn": "^8.14.0", "husky": "9.1.7", "lint-staged": "15.3.0", "turbo": "2.3.3" diff --git a/turbo.json b/turbo.json index 80bcb76f5f7ff..91a077be9babc 100644 --- a/turbo.json +++ b/turbo.json @@ -11,6 +11,7 @@ "lint": { "dependsOn": [ "@node-core/website#lint:md", + "@node-core/website#lint:snippets", "@node-core/website#lint:css", "lint:js" ] @@ -18,6 +19,7 @@ "lint:lint-staged": { "dependsOn": [ "@node-core/website#lint:md", + "@node-core/website#lint:snippets", "@node-core/website#lint:css", "@node-core/website#lint:js" ] From 8746984ef9eed1639a170dbd0862c4c1891b3f4d Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Thu, 30 Jan 2025 20:12:05 +0100 Subject: [PATCH 0278/1385] Blog: v23.7.0 release post (#7435) Refs: https://github.com/nodejs/node/pull/56800 --- apps/site/pages/en/blog/release/v23.7.0.md | 255 +++++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.7.0.md diff --git a/apps/site/pages/en/blog/release/v23.7.0.md b/apps/site/pages/en/blog/release/v23.7.0.md new file mode 100644 index 0000000000000..f298da746924b --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.7.0.md @@ -0,0 +1,255 @@ +--- +date: '2025-01-30T18:03:40.420Z' +category: release +title: Node v23.7.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-01-30, Version 23.7.0 (Current), @aduh95 + +### Notable Changes + +- \[[`36dd9ecc41`](https://github.com/nodejs/node/commit/36dd9ecc41)] - **crypto**: update root certificates to NSS 3.107 (Node.js GitHub Bot) [#56566](https://github.com/nodejs/node/pull/56566) +- \[[`9414d3cbf1`](https://github.com/nodejs/node/commit/9414d3cbf1)] - **(SEMVER-MINOR)** **fs**: allow `exclude` option in globs to accept glob patterns (Daeyeon Jeong) [#56489](https://github.com/nodejs/node/pull/56489) +- \[[`9c5c3b3115`](https://github.com/nodejs/node/commit/9c5c3b3115)] - **(SEMVER-MINOR)** **module**: add ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX (Marco Ippolito) [#56610](https://github.com/nodejs/node/pull/56610) +- \[[`1e201fd5fd`](https://github.com/nodejs/node/commit/1e201fd5fd)] - **(SEMVER-MINOR)** **sqlite**: support TypedArray and DataView in `StatementSync` (Alex Yang) [#56385](https://github.com/nodejs/node/pull/56385) +- \[[`48c813fb67`](https://github.com/nodejs/node/commit/48c813fb67)] - **(SEMVER-MINOR)** **src**: add --disable-sigusr1 to prevent signal i/o thread (Rafael Gonzaga) [#56441](https://github.com/nodejs/node/pull/56441) +- \[[`cf16123785`](https://github.com/nodejs/node/commit/cf16123785)] - **(SEMVER-MINOR)** **src,worker**: add isInternalWorker (Carlos Espa) [#56469](https://github.com/nodejs/node/pull/56469) +- \[[`13bdd9c961`](https://github.com/nodejs/node/commit/13bdd9c961)] - **(SEMVER-MINOR)** **test_runner**: add TestContext.prototype.waitFor() (Colin Ihrig) [#56595](https://github.com/nodejs/node/pull/56595) +- \[[`00a1943858`](https://github.com/nodejs/node/commit/00a1943858)] - **(SEMVER-MINOR)** **test_runner**: add t.assert.fileSnapshot() (Colin Ihrig) [#56459](https://github.com/nodejs/node/pull/56459) +- \[[`3143566045`](https://github.com/nodejs/node/commit/3143566045)] - **(SEMVER-MINOR)** **test_runner**: add assert.register() API (Colin Ihrig) [#56434](https://github.com/nodejs/node/pull/56434) + +### Commits + +- \[[`334a3ac7c6`](https://github.com/nodejs/node/commit/334a3ac7c6)] - **assert**: make myers_diff function more performant (Giovanni Bucci) [#56303](https://github.com/nodejs/node/pull/56303) +- \[[`eb2bf460b7`](https://github.com/nodejs/node/commit/eb2bf460b7)] - **assert**: make partialDeepStrictEqual work with urls and File prototypes (Giovanni Bucci) [#56231](https://github.com/nodejs/node/pull/56231) +- \[[`d184453b90`](https://github.com/nodejs/node/commit/d184453b90)] - **assert**: show diff when doing partial comparisons (Giovanni Bucci) [#56211](https://github.com/nodejs/node/pull/56211) +- \[[`4aa1afd607`](https://github.com/nodejs/node/commit/4aa1afd607)] - **benchmark**: add validateStream to styleText bench (Rafael Gonzaga) [#56556](https://github.com/nodejs/node/pull/56556) +- \[[`8bbdb1203e`](https://github.com/nodejs/node/commit/8bbdb1203e)] - **child_process**: fix parsing messages with splitted length field (Maksim Gorkov) [#56106](https://github.com/nodejs/node/pull/56106) +- \[[`d83d89a08e`](https://github.com/nodejs/node/commit/d83d89a08e)] - **crypto**: add missing return value check (Michael Dawson) [#56615](https://github.com/nodejs/node/pull/56615) +- \[[`36dd9ecc41`](https://github.com/nodejs/node/commit/36dd9ecc41)] - **crypto**: update root certificates to NSS 3.107 (Node.js GitHub Bot) [#56566](https://github.com/nodejs/node/pull/56566) +- \[[`3915152c36`](https://github.com/nodejs/node/commit/3915152c36)] - **crypto**: fix checkPrime crash with large buffers (Santiago Gimeno) [#56559](https://github.com/nodejs/node/pull/56559) +- \[[`c8d1dcb063`](https://github.com/nodejs/node/commit/c8d1dcb063)] - **crypto**: fix warning of ignoring return value (Cheng) [#56527](https://github.com/nodejs/node/pull/56527) +- \[[`1994eaaf52`](https://github.com/nodejs/node/commit/1994eaaf52)] - **crypto**: make generatePrime/checkPrime interruptible (James M Snell) [#56460](https://github.com/nodejs/node/pull/56460) +- \[[`5f1ee05390`](https://github.com/nodejs/node/commit/5f1ee05390)] - **deps**: update corepack to 0.31.0 (Node.js GitHub Bot) [#56795](https://github.com/nodejs/node/pull/56795) +- \[[`9cfac712b8`](https://github.com/nodejs/node/commit/9cfac712b8)] - **deps**: move inspector_protocol to deps (Chengzhong Wu) [#56649](https://github.com/nodejs/node/pull/56649) +- \[[`b2ec816a31`](https://github.com/nodejs/node/commit/b2ec816a31)] - **deps**: macro ENODATA is deprecated in libc++ (Cheng) [#56698](https://github.com/nodejs/node/pull/56698) +- \[[`edd9361499`](https://github.com/nodejs/node/commit/edd9361499)] - **deps**: fixup some minor coverity warnings (James M Snell) [#56612](https://github.com/nodejs/node/pull/56612) +- \[[`9ffe3ad4b1`](https://github.com/nodejs/node/commit/9ffe3ad4b1)] - **deps**: update libuv to 1.50.0 (Node.js GitHub Bot) [#56616](https://github.com/nodejs/node/pull/56616) +- \[[`73ad3ca238`](https://github.com/nodejs/node/commit/73ad3ca238)] - **deps**: update amaro to 0.3.0 (Node.js GitHub Bot) [#56568](https://github.com/nodejs/node/pull/56568) +- \[[`0657f6270a`](https://github.com/nodejs/node/commit/0657f6270a)] - **deps**: update amaro to 0.2.2 (Node.js GitHub Bot) [#56568](https://github.com/nodejs/node/pull/56568) +- \[[`47fad8cbc0`](https://github.com/nodejs/node/commit/47fad8cbc0)] - **deps**: update simdutf to 6.0.3 (Node.js GitHub Bot) [#56567](https://github.com/nodejs/node/pull/56567) +- \[[`c9a211ae29`](https://github.com/nodejs/node/commit/c9a211ae29)] - **diagnostics_channel**: capture console messages (Stephen Belanger) [#56292](https://github.com/nodejs/node/pull/56292) +- \[[`cf5d2d6598`](https://github.com/nodejs/node/commit/cf5d2d6598)] - **doc**: move anatoli to emeritus (Michael Dawson) [#56592](https://github.com/nodejs/node/pull/56592) +- \[[`5dd08d10be`](https://github.com/nodejs/node/commit/5dd08d10be)] - **doc**: fix styles of the expandable TOC (Antoine du Hamel) [#56755](https://github.com/nodejs/node/pull/56755) +- \[[`09fb3adf80`](https://github.com/nodejs/node/commit/09fb3adf80)] - **doc**: add "Skip to content" button (Antoine du Hamel) [#56750](https://github.com/nodejs/node/pull/56750) +- \[[`ad012ca1f3`](https://github.com/nodejs/node/commit/ad012ca1f3)] - **doc**: improve accessibility of expandable lists (Antoine du Hamel) [#56749](https://github.com/nodejs/node/pull/56749) +- \[[`38acdb57eb`](https://github.com/nodejs/node/commit/38acdb57eb)] - **doc**: add note regarding commit message trailers (Dario Piotrowicz) [#56736](https://github.com/nodejs/node/pull/56736) +- \[[`f4a9b134c0`](https://github.com/nodejs/node/commit/f4a9b134c0)] - **doc**: fix typo in example code for util.styleText (Robin Mehner) [#56720](https://github.com/nodejs/node/pull/56720) +- \[[`8a61aaa734`](https://github.com/nodejs/node/commit/8a61aaa734)] - **doc**: fix inconsistencies in `WeakSet` and `WeakMap` comparison details (Shreyans Pathak) [#56683](https://github.com/nodejs/node/pull/56683) +- \[[`4ade128184`](https://github.com/nodejs/node/commit/4ade128184)] - **doc**: add RafaelGSS as latest sec release stewards (Rafael Gonzaga) [#56682](https://github.com/nodejs/node/pull/56682) +- \[[`e1e1200b79`](https://github.com/nodejs/node/commit/e1e1200b79)] - **doc**: clarify cjs/esm diff in `queueMicrotask()` vs `process.nextTick()` (Dario Piotrowicz) [#56659](https://github.com/nodejs/node/pull/56659) +- \[[`57a7b931fb`](https://github.com/nodejs/node/commit/57a7b931fb)] - **doc**: `WeakSet` and `WeakMap` comparison details (Shreyans Pathak) [#56648](https://github.com/nodejs/node/pull/56648) +- \[[`56b21489f4`](https://github.com/nodejs/node/commit/56b21489f4)] - **doc**: mention prepare --security (Rafael Gonzaga) [#56617](https://github.com/nodejs/node/pull/56617) +- \[[`67f39b597a`](https://github.com/nodejs/node/commit/67f39b597a)] - **doc**: tweak info on reposts in ambassador program (Michael Dawson) [#56589](https://github.com/nodejs/node/pull/56589) +- \[[`6381e0761d`](https://github.com/nodejs/node/commit/6381e0761d)] - **doc**: add type stripping to ambassadors program (Marco Ippolito) [#56598](https://github.com/nodejs/node/pull/56598) +- \[[`9bd438acd3`](https://github.com/nodejs/node/commit/9bd438acd3)] - **doc**: improve internal documentation on built-in snapshot (Joyee Cheung) [#56505](https://github.com/nodejs/node/pull/56505) +- \[[`f54118c84a`](https://github.com/nodejs/node/commit/f54118c84a)] - **doc**: correct customization hook types & clarify descriptions (Jacob Smith) [#56454](https://github.com/nodejs/node/pull/56454) +- \[[`6af5053153`](https://github.com/nodejs/node/commit/6af5053153)] - **doc**: document CLI way to open the nodejs/bluesky PR (Antoine du Hamel) [#56506](https://github.com/nodejs/node/pull/56506) +- \[[`4a77a9e1eb`](https://github.com/nodejs/node/commit/4a77a9e1eb)] - **doc**: add history info for Permission Model (Antoine du Hamel) [#56707](https://github.com/nodejs/node/pull/56707) +- \[[`097b8b4889`](https://github.com/nodejs/node/commit/097b8b4889)] - **doc**: add note for features using `InternalWorker` with permission model (Antoine du Hamel) [#56706](https://github.com/nodejs/node/pull/56706) +- \[[`f600466c73`](https://github.com/nodejs/node/commit/f600466c73)] - **doc**: add section about using npx with permission model (Rafael Gonzaga) [#56539](https://github.com/nodejs/node/pull/56539) +- \[[`c2d5a0c629`](https://github.com/nodejs/node/commit/c2d5a0c629)] - **doc**: update gcc-version for ubuntu-lts (Kunal Kumar) [#56553](https://github.com/nodejs/node/pull/56553) +- \[[`202af46793`](https://github.com/nodejs/node/commit/202af46793)] - **doc**: fix parentheses in options (Tobias Nießen) [#56563](https://github.com/nodejs/node/pull/56563) +- \[[`4e4b0c63d0`](https://github.com/nodejs/node/commit/4e4b0c63d0)] - **doc**: fix location of NO_COLOR in CLI docs (Colin Ihrig) [#56525](https://github.com/nodejs/node/pull/56525) +- \[[`92eeeb98a5`](https://github.com/nodejs/node/commit/92eeeb98a5)] - **doc**: include CVE to EOL lines as sec release process (Rafael Gonzaga) [#56520](https://github.com/nodejs/node/pull/56520) +- \[[`233a6a93a1`](https://github.com/nodejs/node/commit/233a6a93a1)] - **doc**: add esm examples to node:trace_events (Alfredo González) [#56514](https://github.com/nodejs/node/pull/56514) +- \[[`d9cff6c73f`](https://github.com/nodejs/node/commit/d9cff6c73f)] - **doc**: reserve NMV 133 for Electron 35 (Keeley Hammond) [#56513](https://github.com/nodejs/node/pull/56513) +- \[[`6047fd7c5c`](https://github.com/nodejs/node/commit/6047fd7c5c)] - **doc**: add message for Ambassadors to promote (Michael Dawson) [#56235](https://github.com/nodejs/node/pull/56235) +- \[[`a4045c9488`](https://github.com/nodejs/node/commit/a4045c9488)] - **doc**: allow request for TSC reviews via the GitHub UI (Antoine du Hamel) [#56493](https://github.com/nodejs/node/pull/56493) +- \[[`dd3f94873e`](https://github.com/nodejs/node/commit/dd3f94873e)] - **esm**: fix jsdoc type refs to `ModuleJobBase` in esm/loader (Jacob Smith) [#56499](https://github.com/nodejs/node/pull/56499) +- \[[`9414d3cbf1`](https://github.com/nodejs/node/commit/9414d3cbf1)] - **(SEMVER-MINOR)** **fs**: allow `exclude` option in globs to accept glob patterns (Daeyeon Jeong) [#56489](https://github.com/nodejs/node/pull/56489) +- \[[`4202045673`](https://github.com/nodejs/node/commit/4202045673)] - **http2**: omit server name when HTTP2 host is IP address (islandryu) [#56530](https://github.com/nodejs/node/pull/56530) +- \[[`f48a562776`](https://github.com/nodejs/node/commit/f48a562776)] - **inspector**: roll inspector_protocol (Chengzhong Wu) [#56649](https://github.com/nodejs/node/pull/56649) +- \[[`9a954fbf4a`](https://github.com/nodejs/node/commit/9a954fbf4a)] - **inspector**: add undici http tracking support (Chengzhong Wu) [#56488](https://github.com/nodejs/node/pull/56488) +- \[[`f185e8a34a`](https://github.com/nodejs/node/commit/f185e8a34a)] - **inspector**: report loadingFinished until the response data is consumed (Chengzhong Wu) [#56372](https://github.com/nodejs/node/pull/56372) +- \[[`2fb007fdce`](https://github.com/nodejs/node/commit/2fb007fdce)] - **lib**: allow skipping source maps in node_modules (Chengzhong Wu) [#56639](https://github.com/nodejs/node/pull/56639) +- \[[`2f69dc2659`](https://github.com/nodejs/node/commit/2f69dc2659)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#56580](https://github.com/nodejs/node/pull/56580) +- \[[`0d869963e0`](https://github.com/nodejs/node/commit/0d869963e0)] - **meta**: add codeowners of security release document (Rafael Gonzaga) [#56521](https://github.com/nodejs/node/pull/56521) +- \[[`59510ab819`](https://github.com/nodejs/node/commit/59510ab819)] - **module**: fix bad `require.resolve` with option paths for `.` and `..` (Dario Piotrowicz) [#56735](https://github.com/nodejs/node/pull/56735) +- \[[`58d2dad67d`](https://github.com/nodejs/node/commit/58d2dad67d)] - **module**: integrate TypeScript into compile cache (Joyee Cheung) [#56629](https://github.com/nodejs/node/pull/56629) +- \[[`9f99a6acb5`](https://github.com/nodejs/node/commit/9f99a6acb5)] - **module**: use more defensive code when handling SWC errors (Antoine du Hamel) [#56646](https://github.com/nodejs/node/pull/56646) +- \[[`7347d34053`](https://github.com/nodejs/node/commit/7347d34053)] - **module**: fixing url change in load sync hook chain (Vitalii Akimov) [#56402](https://github.com/nodejs/node/pull/56402) +- \[[`9c5c3b3115`](https://github.com/nodejs/node/commit/9c5c3b3115)] - **(SEMVER-MINOR)** **module**: add ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX (Marco Ippolito) [#56610](https://github.com/nodejs/node/pull/56610) +- \[[`afd1f91a1e`](https://github.com/nodejs/node/commit/afd1f91a1e)] - **module**: fix jsdoc for `format` parameter in cjs/loader (pacexy) [#56501](https://github.com/nodejs/node/pull/56501) +- \[[`86d783fa51`](https://github.com/nodejs/node/commit/86d783fa51)] - **module**: rethrow amaro error message (Marco Ippolito) [#56568](https://github.com/nodejs/node/pull/56568) +- \[[`7b6df4a97a`](https://github.com/nodejs/node/commit/7b6df4a97a)] - **process**: fix symbol key and mark experimental new `node:process` methods (Antoine du Hamel) [#56517](https://github.com/nodejs/node/pull/56517) +- \[[`21362cc4f4`](https://github.com/nodejs/node/commit/21362cc4f4)] - **punycode**: limit deprecation warning (Colin Ihrig) [#56632](https://github.com/nodejs/node/pull/56632) +- \[[`93f60a1c15`](https://github.com/nodejs/node/commit/93f60a1c15)] - **sqlite**: disable memstatus APIs at build time (Colin Ihrig) [#56541](https://github.com/nodejs/node/pull/56541) +- \[[`1e201fd5fd`](https://github.com/nodejs/node/commit/1e201fd5fd)] - **(SEMVER-MINOR)** **sqlite**: support TypedArray and DataView in `StatementSync` (Alex Yang) [#56385](https://github.com/nodejs/node/pull/56385) +- \[[`3aca628a11`](https://github.com/nodejs/node/commit/3aca628a11)] - **sqlite**: enable SQL math functions (Colin Ihrig) [#56447](https://github.com/nodejs/node/pull/56447) +- \[[`575251ae6a`](https://github.com/nodejs/node/commit/575251ae6a)] - **src**: add nullptr handling from X509_STORE_new() (Burkov Egor) [#56700](https://github.com/nodejs/node/pull/56700) +- \[[`8fb03d8f43`](https://github.com/nodejs/node/commit/8fb03d8f43)] - **src**: move more crypto to ncrypto (James M Snell) [#56653](https://github.com/nodejs/node/pull/56653) +- \[[`55a0135261`](https://github.com/nodejs/node/commit/55a0135261)] - **src**: add default value for RSACipherConfig mode field (Burkov Egor) [#56701](https://github.com/nodejs/node/pull/56701) +- \[[`83c56da328`](https://github.com/nodejs/node/commit/83c56da328)] - **src**: fix build with GCC 15 (tjuhaszrh) [#56740](https://github.com/nodejs/node/pull/56740) +- \[[`872d68d87c`](https://github.com/nodejs/node/commit/872d68d87c)] - **src**: fix to generate path from wchar_t via wstring (yamachu) [#56696](https://github.com/nodejs/node/pull/56696) +- \[[`2b6a82dcea`](https://github.com/nodejs/node/commit/2b6a82dcea)] - **src**: replace NoArrayBufferZeroFillScope with v8 option (James M Snell) [#56658](https://github.com/nodejs/node/pull/56658) +- \[[`a5f9023297`](https://github.com/nodejs/node/commit/a5f9023297)] - **src**: initialize FSReqWrapSync in path that uses it (Michaël Zasso) [#56613](https://github.com/nodejs/node/pull/56613) +- \[[`90f70ed8dd`](https://github.com/nodejs/node/commit/90f70ed8dd)] - **src**: use cppgc to manage ContextifyContext (Joyee Cheung) [#56522](https://github.com/nodejs/node/pull/56522) +- \[[`0b1ac9653e`](https://github.com/nodejs/node/commit/0b1ac9653e)] - **src**: handle duplicate paths granted (Rafael Gonzaga) [#56591](https://github.com/nodejs/node/pull/56591) +- \[[`33f5345002`](https://github.com/nodejs/node/commit/33f5345002)] - **src**: update ECKeyPointer in ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`c7b95fcf95`](https://github.com/nodejs/node/commit/c7b95fcf95)] - **src**: update ECPointPointer in ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`c008b15108`](https://github.com/nodejs/node/commit/c008b15108)] - **src**: update ECGroupPointer in ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`5673dc7de7`](https://github.com/nodejs/node/commit/5673dc7de7)] - **src**: update ECDASSigPointer implementation in ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`87ba48b2c6`](https://github.com/nodejs/node/commit/87ba48b2c6)] - **src**: cleaning up more crypto internals for ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`48c813fb67`](https://github.com/nodejs/node/commit/48c813fb67)] - **(SEMVER-MINOR)** **src**: add --disable-sigusr1 to prevent signal i/o thread (Rafael Gonzaga) [#56441](https://github.com/nodejs/node/pull/56441) +- \[[`50c65eed78`](https://github.com/nodejs/node/commit/50c65eed78)] - **src**: fix undefined script name in error source (Chengzhong Wu) [#56502](https://github.com/nodejs/node/pull/56502) +- \[[`b3c66d2493`](https://github.com/nodejs/node/commit/b3c66d2493)] - **src**: refactor --trace-env to reuse option selection and handling (Joyee Cheung) [#56293](https://github.com/nodejs/node/pull/56293) +- \[[`17d59efe3c`](https://github.com/nodejs/node/commit/17d59efe3c)] - **src**: minor cleanups on OneByteString usage (James M Snell) [#56482](https://github.com/nodejs/node/pull/56482) +- \[[`3e6e0106f6`](https://github.com/nodejs/node/commit/3e6e0106f6)] - **src**: move more crypto impl detail to ncrypto dep (James M Snell) [#56421](https://github.com/nodejs/node/pull/56421) +- \[[`5e1ddd5d4c`](https://github.com/nodejs/node/commit/5e1ddd5d4c)] - **src**: fixup more ToLocalChecked uses in node_file (James M Snell) [#56484](https://github.com/nodejs/node/pull/56484) +- \[[`aa3fd2f58f`](https://github.com/nodejs/node/commit/aa3fd2f58f)] - **src**: make some minor ToLocalChecked cleanups (James M Snell) [#56483](https://github.com/nodejs/node/pull/56483) +- \[[`7dd8165b0b`](https://github.com/nodejs/node/commit/7dd8165b0b)] - **src**: lock the thread properly in snapshot builder (Joyee Cheung) [#56327](https://github.com/nodejs/node/pull/56327) +- \[[`edafab7248`](https://github.com/nodejs/node/commit/edafab7248)] - **src**: drain platform tasks before creating startup snapshot (Chengzhong Wu) [#56403](https://github.com/nodejs/node/pull/56403) +- \[[`e1887d2c58`](https://github.com/nodejs/node/commit/e1887d2c58)] - **src**: use LocalVector in more places (James M Snell) [#56457](https://github.com/nodejs/node/pull/56457) +- \[[`cf16123785`](https://github.com/nodejs/node/commit/cf16123785)] - **(SEMVER-MINOR)** **src,worker**: add isInternalWorker (Carlos Espa) [#56469](https://github.com/nodejs/node/pull/56469) +- \[[`df78515664`](https://github.com/nodejs/node/commit/df78515664)] - **stream**: fix typo in ReadableStreamBYOBReader.readIntoRequests (Mattias Buelens) [#56560](https://github.com/nodejs/node/pull/56560) +- \[[`4ff79fb22a`](https://github.com/nodejs/node/commit/4ff79fb22a)] - **test**: reduce number of written chunks (Luigi Pinca) [#56757](https://github.com/nodejs/node/pull/56757) +- \[[`2e7b7b7674`](https://github.com/nodejs/node/commit/2e7b7b7674)] - **test**: fix invalid common.mustSucceed() usage (Luigi Pinca) [#56756](https://github.com/nodejs/node/pull/56756) +- \[[`0af368ce5e`](https://github.com/nodejs/node/commit/0af368ce5e)] - **test**: use strict mode in global setters test (Rich Trott) [#56742](https://github.com/nodejs/node/pull/56742) +- \[[`e49f3e944c`](https://github.com/nodejs/node/commit/e49f3e944c)] - **test**: cleanup and simplify test-crypto-aes-wrap (James M Snell) [#56748](https://github.com/nodejs/node/pull/56748) +- \[[`85f7bbf4e4`](https://github.com/nodejs/node/commit/85f7bbf4e4)] - **test**: do not use common.isMainThread (Luigi Pinca) [#56768](https://github.com/nodejs/node/pull/56768) +- \[[`36b02bf1b1`](https://github.com/nodejs/node/commit/36b02bf1b1)] - **test**: make some requires lazy in common/index (James M Snell) [#56715](https://github.com/nodejs/node/pull/56715) +- \[[`bcb35c3fb7`](https://github.com/nodejs/node/commit/bcb35c3fb7)] - **test**: add test that uses multibyte for path and resolves modules (yamachu) [#56696](https://github.com/nodejs/node/pull/56696) +- \[[`917f98b29c`](https://github.com/nodejs/node/commit/917f98b29c)] - **test**: replace more uses of `global` with `globalThis` (James M Snell) [#56712](https://github.com/nodejs/node/pull/56712) +- \[[`bf34a49206`](https://github.com/nodejs/node/commit/bf34a49206)] - **test**: make common/index slightly less node.js specific (James M Snell) [#56712](https://github.com/nodejs/node/pull/56712) +- \[[`ef2ed71389`](https://github.com/nodejs/node/commit/ef2ed71389)] - **test**: rely less on duplicative common test harness utilities (James M Snell) [#56712](https://github.com/nodejs/node/pull/56712) +- \[[`e654c8b84a`](https://github.com/nodejs/node/commit/e654c8b84a)] - **test**: simplify common/index.js (James M Snell) [#56712](https://github.com/nodejs/node/pull/56712) +- \[[`a62345e73b`](https://github.com/nodejs/node/commit/a62345e73b)] - **test**: move hasMultiLocalhost to common/net (James M Snell) [#56716](https://github.com/nodejs/node/pull/56716) +- \[[`6edf04ee5e`](https://github.com/nodejs/node/commit/6edf04ee5e)] - **test**: move crypto related common utilities in common/crypto (James M Snell) [#56714](https://github.com/nodejs/node/pull/56714) +- \[[`c7a132229f`](https://github.com/nodejs/node/commit/c7a132229f)] - **test**: add missing test for env file (Jonas) [#56642](https://github.com/nodejs/node/pull/56642) +- \[[`2a219eddf6`](https://github.com/nodejs/node/commit/2a219eddf6)] - **test**: enforce strict mode in test-zlib-const (Rich Trott) [#56689](https://github.com/nodejs/node/pull/56689) +- \[[`f885496d9c`](https://github.com/nodejs/node/commit/f885496d9c)] - **test**: fix localization data for ICU 74.2 (Antoine du Hamel) [#56661](https://github.com/nodejs/node/pull/56661) +- \[[`eb3148fb5c`](https://github.com/nodejs/node/commit/eb3148fb5c)] - **test**: use --permission instead of --experimental-permission (Rafael Gonzaga) [#56685](https://github.com/nodejs/node/pull/56685) +- \[[`86d7ba09c4`](https://github.com/nodejs/node/commit/86d7ba09c4)] - **test**: test-stream-compose.js doesn't need internals (Meghan Denny) [#56619](https://github.com/nodejs/node/pull/56619) +- \[[`676276889e`](https://github.com/nodejs/node/commit/676276889e)] - **test**: add maxCount and gcOptions to gcUntil() (Joyee Cheung) [#56522](https://github.com/nodejs/node/pull/56522) +- \[[`5b7a012144`](https://github.com/nodejs/node/commit/5b7a012144)] - **test**: add line break at end of file (Rafael Gonzaga) [#56588](https://github.com/nodejs/node/pull/56588) +- \[[`27cfec619f`](https://github.com/nodejs/node/commit/27cfec619f)] - **test**: mark test-worker-prof as flaky on smartos (Joyee Cheung) [#56583](https://github.com/nodejs/node/pull/56583) +- \[[`7e58da68c1`](https://github.com/nodejs/node/commit/7e58da68c1)] - **test**: update ts eval snapshots (Marco Ippolito) [#56568](https://github.com/nodejs/node/pull/56568) +- \[[`b1c54439ae`](https://github.com/nodejs/node/commit/b1c54439ae)] - **test**: update test-child-process-bad-stdio to use node:test (Colin Ihrig) [#56562](https://github.com/nodejs/node/pull/56562) +- \[[`0d772a963e`](https://github.com/nodejs/node/commit/0d772a963e)] - **test**: disable openssl 3.4.0 incompatible tests (Jelle van der Waa) [#56160](https://github.com/nodejs/node/pull/56160) +- \[[`6fa6d699ff`](https://github.com/nodejs/node/commit/6fa6d699ff)] - **test**: make test-crypto-hash compatible with OpenSSL > 3.4.0 (Jelle van der Waa) [#56160](https://github.com/nodejs/node/pull/56160) +- \[[`90e12f2945`](https://github.com/nodejs/node/commit/90e12f2945)] - **test**: clarify fork inherit permission flags (Rafael Gonzaga) [#56523](https://github.com/nodejs/node/pull/56523) +- \[[`323f96f7b3`](https://github.com/nodejs/node/commit/323f96f7b3)] - **test**: add error only reporter for node:test (Carlos Espa) [#56438](https://github.com/nodejs/node/pull/56438) +- \[[`cbbcaf9108`](https://github.com/nodejs/node/commit/cbbcaf9108)] - **test**: mark test-http-server-request-timeouts-mixed as flaky (Joyee Cheung) [#56503](https://github.com/nodejs/node/pull/56503) +- \[[`295db19ba2`](https://github.com/nodejs/node/commit/295db19ba2)] - **test**: update error code in tls-psk-circuit for for OpenSSL 3.4 (sebastianas) [#56420](https://github.com/nodejs/node/pull/56420) +- \[[`f7563780a6`](https://github.com/nodejs/node/commit/f7563780a6)] - **test**: update compiled sqlite tests to match other tests (Colin Ihrig) [#56446](https://github.com/nodejs/node/pull/56446) +- \[[`8feb2737e7`](https://github.com/nodejs/node/commit/8feb2737e7)] - **test**: add initial test426 coverage (Chengzhong Wu) [#56436](https://github.com/nodejs/node/pull/56436) +- \[[`b9cd7895c0`](https://github.com/nodejs/node/commit/b9cd7895c0)] - **test**: update test-set-http-max-http-headers to use node:test (Colin Ihrig) [#56439](https://github.com/nodejs/node/pull/56439) +- \[[`332ce548cb`](https://github.com/nodejs/node/commit/332ce548cb)] - **test**: update test-child-process-windows-hide to use node:test (Colin Ihrig) [#56437](https://github.com/nodejs/node/pull/56437) +- \[[`e2668c0e00`](https://github.com/nodejs/node/commit/e2668c0e00)] - **test_runner**: print failing assertion only once with spec reporter (Pietro Marchini) [#56662](https://github.com/nodejs/node/pull/56662) +- \[[`f97cd5b02b`](https://github.com/nodejs/node/commit/f97cd5b02b)] - **test_runner**: remove unused errors (Pietro Marchini) [#56607](https://github.com/nodejs/node/pull/56607) +- \[[`13bdd9c961`](https://github.com/nodejs/node/commit/13bdd9c961)] - **(SEMVER-MINOR)** **test_runner**: add TestContext.prototype.waitFor() (Colin Ihrig) [#56595](https://github.com/nodejs/node/pull/56595) +- \[[`00a1943858`](https://github.com/nodejs/node/commit/00a1943858)] - **(SEMVER-MINOR)** **test_runner**: add t.assert.fileSnapshot() (Colin Ihrig) [#56459](https://github.com/nodejs/node/pull/56459) +- \[[`c4979ebfb2`](https://github.com/nodejs/node/commit/c4979ebfb2)] - **test_runner**: run single test file benchmark (Pietro Marchini) [#56479](https://github.com/nodejs/node/pull/56479) +- \[[`839a06e908`](https://github.com/nodejs/node/commit/839a06e908)] - **test_runner**: differentiate test types in enqueue dequeue events (Eddie Abbondanzio) [#54049](https://github.com/nodejs/node/pull/54049) +- \[[`3143566045`](https://github.com/nodejs/node/commit/3143566045)] - **(SEMVER-MINOR)** **test_runner**: add assert.register() API (Colin Ihrig) [#56434](https://github.com/nodejs/node/pull/56434) +- \[[`3aa864904f`](https://github.com/nodejs/node/commit/3aa864904f)] - **test_runner**: finish marking snapshot testing as stable (Colin Ihrig) [#56425](https://github.com/nodejs/node/pull/56425) +- \[[`b7b0768cda`](https://github.com/nodejs/node/commit/b7b0768cda)] - **tls**: fix error stack conversion in cryptoErrorListToException() (Joyee Cheung) [#56554](https://github.com/nodejs/node/pull/56554) +- \[[`8f59f5ba47`](https://github.com/nodejs/node/commit/8f59f5ba47)] - **tools**: update doc to new version (Node.js GitHub Bot) [#56259](https://github.com/nodejs/node/pull/56259) +- \[[`ebf4527730`](https://github.com/nodejs/node/commit/ebf4527730)] - **tools**: update inspector_protocol roller (Chengzhong Wu) [#56649](https://github.com/nodejs/node/pull/56649) +- \[[`649cf0c0f6`](https://github.com/nodejs/node/commit/649cf0c0f6)] - **tools**: do not throw on missing `create-release-proposal.sh` (Antoine du Hamel) [#56704](https://github.com/nodejs/node/pull/56704) +- \[[`69cb44e315`](https://github.com/nodejs/node/commit/69cb44e315)] - **tools**: fix tools-deps-update (Daniel Lemire) [#56684](https://github.com/nodejs/node/pull/56684) +- \[[`02f36ca11b`](https://github.com/nodejs/node/commit/02f36ca11b)] - **tools**: do not throw on missing `create-release-proposal.sh` (Antoine du Hamel) [#56695](https://github.com/nodejs/node/pull/56695) +- \[[`bcc1c65066`](https://github.com/nodejs/node/commit/bcc1c65066)] - **tools**: fix permissions in `lint-release-proposal` workflow (Antoine du Hamel) [#56614](https://github.com/nodejs/node/pull/56614) +- \[[`ab4cfef600`](https://github.com/nodejs/node/commit/ab4cfef600)] - **tools**: remove github reporter (Carlos Espa) [#56468](https://github.com/nodejs/node/pull/56468) +- \[[`477e674a2a`](https://github.com/nodejs/node/commit/477e674a2a)] - **tools**: edit `create-release-proposal` workflow (Antoine du Hamel) [#56540](https://github.com/nodejs/node/pull/56540) +- \[[`5f6785b1cb`](https://github.com/nodejs/node/commit/5f6785b1cb)] - **tools**: validate commit list as part of `lint-release-commit` (Antoine du Hamel) [#56291](https://github.com/nodejs/node/pull/56291) +- \[[`2a0fbd8731`](https://github.com/nodejs/node/commit/2a0fbd8731)] - **tools**: fix loong64 build failed (Xiao-Tao) [#56466](https://github.com/nodejs/node/pull/56466) +- \[[`aea088f79e`](https://github.com/nodejs/node/commit/aea088f79e)] - **tools**: disable unneeded rule ignoring in Python linting (Rich Trott) [#56429](https://github.com/nodejs/node/pull/56429) +- \[[`7a0dd2d04f`](https://github.com/nodejs/node/commit/7a0dd2d04f)] - **tools**: use a configurable value for number of open dependabot PRs (Antoine du Hamel) [#56427](https://github.com/nodejs/node/pull/56427) +- \[[`c249c9715a`](https://github.com/nodejs/node/commit/c249c9715a)] - **tools**: bump the eslint group in /tools/eslint with 4 updates (dependabot\[bot]) [#56426](https://github.com/nodejs/node/pull/56426) +- \[[`a9d332a16f`](https://github.com/nodejs/node/commit/a9d332a16f)] - **util**: inspect: do not crash on an Error stack that contains a Symbol (Jordan Harband) [#56573](https://github.com/nodejs/node/pull/56573) +- \[[`6a16012fd7`](https://github.com/nodejs/node/commit/6a16012fd7)] - **util**: inspect: do not crash on an Error with a regex `name` (Jordan Harband) [#56574](https://github.com/nodejs/node/pull/56574) +- \[[`c7f16192f4`](https://github.com/nodejs/node/commit/c7f16192f4)] - **util**: rename CallSite.column to columnNumber (Chengzhong Wu) [#56584](https://github.com/nodejs/node/pull/56584) +- \[[`e652781934`](https://github.com/nodejs/node/commit/e652781934)] - **util**: do not crash on inspecting function with `Symbol` name (Jordan Harband) [#56572](https://github.com/nodejs/node/pull/56572) +- \[[`d066acfcf9`](https://github.com/nodejs/node/commit/d066acfcf9)] - **util**: expose CallSite.scriptId (Chengzhong Wu) [#56551](https://github.com/nodejs/node/pull/56551) +- \[[`e1b0f44d19`](https://github.com/nodejs/node/commit/e1b0f44d19)] - **watch**: reload env file for --env-file-if-exists (Jonas) [#56643](https://github.com/nodejs/node/pull/56643) +- \[[`538e19489f`](https://github.com/nodejs/node/commit/538e19489f)] - **worker**: refactor stdio to improve performance (Matteo Collina) [#56630](https://github.com/nodejs/node/pull/56630) +- \[[`aab53e6965`](https://github.com/nodejs/node/commit/aab53e6965)] - **worker**: flush stdout and stderr on exit (Matteo Collina) [#56428](https://github.com/nodejs/node/pull/56428) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.7.0/node-v23.7.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.7.0/node-v23.7.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.7.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.7.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.7.0/node-v23.7.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.7.0/node-v23.7.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.7.0/node-v23.7.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.7.0/node-v23.7.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.7.0/node-v23.7.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.7.0/node-v23.7.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.7.0/node-v23.7.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.7.0/node-v23.7.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.7.0/node-v23.7.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.7.0/node-v23.7.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.7.0/ \ +Documentation: https://nodejs.org/docs/v23.7.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +798c6290890c79647af8614a85cffce0d6ee0a40dd1e5ba66cff2a1a3192dc9c node-v23.7.0-aix-ppc64.tar.gz +e7679830296ddb84f5da6af3239ed0f4ca65c35b337c6a802112d5e1e6ec2058 node-v23.7.0-arm64.msi +0dac0de3308a87f84cb14bab349a3f0ae5f6cdb8da32600459ee407236f9cebc node-v23.7.0-darwin-arm64.tar.gz +3c840c46d75a6fb969de22a71ebccd4001ac5722380c94b58e49ab0df38d0130 node-v23.7.0-darwin-arm64.tar.xz +d32b53d95a42a64388486490e7c3f6a23f00ae3bf6175c64c200954cd41ef2ba node-v23.7.0-darwin-x64.tar.gz +db0a00a74c1bebd4d5180a60bd9995d8764c5a1e275545de769cbd65ac07078b node-v23.7.0-darwin-x64.tar.xz +48d8ce27195e3fc014326da693a4a8cf90dde621d72694242f887d1df59755b5 node-v23.7.0-headers.tar.gz +cf9d91476998f7c2c0b9185b85045c250ea8d345ddb6abfeab059c3844f85dda node-v23.7.0-headers.tar.xz +3997bbd0e56d5e3664b66025b13072de2851743a811c2afb16e349ab798203c4 node-v23.7.0-linux-arm64.tar.gz +023bb335f70a17cd628e905f772e7677fd54d80ce9245782a38e6c196c6a5166 node-v23.7.0-linux-arm64.tar.xz +af6958987ca97779fc36448adf425eef0255278a35a24590fa28762a016a0f78 node-v23.7.0-linux-armv7l.tar.gz +9466ef9545b14e1b7963c6ad00ecac67fd3b35fb91a390d7eb97b7018143abda node-v23.7.0-linux-armv7l.tar.xz +ce3557951af359312744863425f7ce4923d390753997701e1f739262bf169e0d node-v23.7.0-linux-ppc64le.tar.gz +4e05e52760f11ff7141321473840d7297a273efedca5e1cb793836778f531799 node-v23.7.0-linux-ppc64le.tar.xz +ca716813317d8af02fe79cd854f1507c495bde018bc64a8e8cec138f6eea7b32 node-v23.7.0-linux-s390x.tar.gz +a58cad0b6683fea01a332da9c82189457a6078f588646ea2df80cab529afaff9 node-v23.7.0-linux-s390x.tar.xz +d9173025ec1f18264bc5f1e70e99c19d9bba72c563143d150db0ced98a177c2f node-v23.7.0-linux-x64.tar.gz +4d9482dc62f9b82279055637f2a92c7e8297d78be8d68e110ac3aae2e56d0ebc node-v23.7.0-linux-x64.tar.xz +fc867f213a871a089d8d1b26f20769b709d50042023c6461e46be08e75151aee node-v23.7.0-win-arm64.7z +50c325570224d0c6ee1ceea6cc679aa4e580edfa5dab174d9da399fe476c3371 node-v23.7.0-win-arm64.zip +49654dee86b43383e871e11bef8cb0c0b8a3373100219986de540934f61f2db0 node-v23.7.0-win-x64.7z +9b26ebc897984332d1b05948cae9da0ab32b3fc23e01133c04aab09f9bcbb4eb node-v23.7.0-win-x64.zip +4bb9c2f05574c0580910cd2bdd7e2352fd6bfe09960be04993db47a22d8271dc node-v23.7.0-x64.msi +28e948860cbe6c28f2389b4056e726d859485847253c9f7758cce9f565a5ba41 node-v23.7.0.pkg +44288a847f8c2659d225ed1c14bfb557926c571d08465c897c3f41db0216a7a8 node-v23.7.0.tar.gz +8de192ef2fee2ee8a230dd8d0e9aee182ee9c9856ccdb5fd95188abe84f77242 node-v23.7.0.tar.xz +055edfd91b382d5d87ff956ad6458ee12fbe75ac9651d0b3d1aa0ab38c59d8f8 win-arm64/node.exe +de5fc264f1b4833ef35b819ceb0198742ec2ad71d88cea0402a4145322b05a58 win-arm64/node.lib +d4cc6fb37eb00a905835d107dc3bf88969def5f56d6654080d32beb3cc3bd469 win-arm64/node_pdb.7z +d7e7f0b1dd031d84af85cda8a1a9016e32fd6bb8112e3c3dab323a7477573148 win-arm64/node_pdb.zip +6306c305da83a33e82179567f0303d6678d5602ff692c8dd7be2887390399776 win-x64/node.exe +3b8d94c6b2f4338e173d63d2929b0181715490f1781c89972ed770d21d5de9b0 win-x64/node.lib +9a6d7ff8b7bf76018fd6f57b4e9bc4705f53722352f7c01fe827b74cb01f577b win-x64/node_pdb.7z +6f600811c695043010e1e0be72930b369cd71095fe782dca9867a54cd2c9a41d win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmebvl0ACgkQIdkA/9sj +N1YjFA//amabuJMCqb7w6LGyPhHGzMwGZUFrz8OMrS3L9CHR+ZxA5WLKAAa6j8xA +/GPvBiUyFr+1cZyzyVM2sSKr7K1ui5E4L6ae9obOKkYzYmLRarGPjXDbEK9NtshT +PFEkOM5DchPK7wxnyIv3R4FXfjMxbaITghSGCsuqipfT5CuR+9wwpUR5y9hfYdlQ +HYwjA6CjBm2Oi69qYvR9jfWkxsvbfyRIpdKdns4WlWIz9vJ+1FldqM8DZXBsM397 +fDnKYpKg5HWZgysLZ1V2r8sYRGmSvd3/8epSD34bbl7VeWDLSxTvLlDWFOJt0qTh +Z+oGJWACH9LxnuSuTR+DMy21PUC6dMnhwQ2txPznxKlBJdpsyU36+15CICyiNdLI +G5F+y/7sXLIRZYTUwMMC+TsaePUnE9C3dkorTaBijMEQ4vtkZDZBHOu1zlE4hk2A +B60fu6B9yF2hCMnw/AFuVs4AE3ZeZQ2U88ocHv/KCtNgx8oJIbBduv3PRhs319N/ +mUm7p6TfBAOHMigoIF0IfuaAOl/Y6/KFcDhjhmSXXZrdF8DAkKycYOWtRsNmGj6W +FMungaIH6AgRUOycEUoXJ+Hk5TkpN3wT0eAUABw80L9mQUf4bXgFUlMVUWu/lh3E +YtfzHqChCQhxYFD7JiZDof1UUcWMlmUiETokrOZwh9ciTt750tY= +=voRk +-----END PGP SIGNATURE----- +``` From 72131a7ce06d4a42916611e196f5fc9d6b5579f0 Mon Sep 17 00:00:00 2001 From: Jordan Harband <ljharb@gmail.com> Date: Sat, 1 Feb 2025 06:53:35 -0800 Subject: [PATCH 0279/1385] download: fix nvm instructions (#7434) --- apps/site/snippets/en/download/nvm.bash | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/site/snippets/en/download/nvm.bash b/apps/site/snippets/en/download/nvm.bash index f2d3d4798f296..905dfcbf18d08 100644 --- a/apps/site/snippets/en/download/nvm.bash +++ b/apps/site/snippets/en/download/nvm.bash @@ -1,6 +1,9 @@ # Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +# activate nvm (in lieu of restarting the shell) +\. "${HOME}/.nvm/nvm.sh" + # Download and install Node.js: nvm install ${props.release.major} From c4ea16e95e7ccc189880b0487f7c07f834f35ff2 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sat, 1 Feb 2025 07:14:13 -0800 Subject: [PATCH 0280/1385] Revert "download: fix nvm instructions" (#7444) --- apps/site/snippets/en/download/nvm.bash | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/site/snippets/en/download/nvm.bash b/apps/site/snippets/en/download/nvm.bash index 905dfcbf18d08..f2d3d4798f296 100644 --- a/apps/site/snippets/en/download/nvm.bash +++ b/apps/site/snippets/en/download/nvm.bash @@ -1,9 +1,6 @@ # Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash -# activate nvm (in lieu of restarting the shell) -\. "${HOME}/.nvm/nvm.sh" - # Download and install Node.js: nvm install ${props.release.major} From 317dce61aaaf9e1fb241edc8cac72884e745ac8b Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Sat, 1 Feb 2025 21:19:52 +0100 Subject: [PATCH 0281/1385] fix: accessibility of the mobile nav bar (#7427) * fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * Update packages/i18n/locales/en.json Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> * useTranslations * Apply suggestion from code review --------- Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --- .../Containers/NavBar/index.module.css | 12 +- .../components/Containers/NavBar/index.tsx | 14 +- apps/site/components/Icons/Logos/Nodejs.tsx | 317 +++++++++--------- packages/i18n/locales/en.json | 7 +- 4 files changed, 190 insertions(+), 160 deletions(-) diff --git a/apps/site/components/Containers/NavBar/index.module.css b/apps/site/components/Containers/NavBar/index.module.css index 3cc1412b8c0e2..77f318d069a88 100644 --- a/apps/site/components/Containers/NavBar/index.module.css +++ b/apps/site/components/Containers/NavBar/index.module.css @@ -28,12 +28,22 @@ dark:border-neutral-900; } +.sidebarItemToggler { + @apply absolute + right-4 + -z-10 + -translate-y-[200%] + appearance-none + opacity-0; +} + .nodeIconWrapper { @apply h-[30px] flex-1; } -.navInteractionIcon { +.navInteractionIcon, +.sidebarItemToggler { @apply size-6; } diff --git a/apps/site/components/Containers/NavBar/index.tsx b/apps/site/components/Containers/NavBar/index.tsx index 19239f1c4f6c9..039ea38c8454d 100644 --- a/apps/site/components/Containers/NavBar/index.tsx +++ b/apps/site/components/Containers/NavBar/index.tsx @@ -3,7 +3,9 @@ import Hamburger from '@heroicons/react/24/solid/Bars3Icon'; import XMark from '@heroicons/react/24/solid/XMarkIcon'; import * as Label from '@radix-ui/react-label'; +import classNames from 'classnames'; import dynamic from 'next/dynamic'; +import { useTranslations } from 'next-intl'; import { useState } from 'react'; import type { FC, ComponentProps, HTMLAttributeAnchorTarget } from 'react'; @@ -46,6 +48,7 @@ const NavBar: FC<NavbarProps> = ({ onThemeTogglerClick, }) => { const [isMenuOpen, setIsMenuOpen] = useState(false); + const t = useTranslations(); return ( <nav className={`${style.container}`}> @@ -55,7 +58,6 @@ const NavBar: FC<NavbarProps> = ({ </Link> <Label.Root - onClick={() => setIsMenuOpen(prev => !prev)} className={style.sidebarItemTogglerLabel} htmlFor="sidebarItemToggler" > @@ -63,7 +65,15 @@ const NavBar: FC<NavbarProps> = ({ </Label.Root> </div> - <input className="peer hidden" id="sidebarItemToggler" type="checkbox" /> + <input + className={classNames(['peer', style.sidebarItemToggler])} + id="sidebarItemToggler" + type="checkbox" + onChange={e => setIsMenuOpen(() => e.target.checked)} + aria-label={t( + `components.containers.navBar.controls.${isMenuOpen ? 'close' : 'open'}` + )} + /> <div className={`${style.main} peer-checked:flex`}> <div className={style.navItems}> diff --git a/apps/site/components/Icons/Logos/Nodejs.tsx b/apps/site/components/Icons/Logos/Nodejs.tsx index d614cb05e223e..08f1624bcec6b 100644 --- a/apps/site/components/Icons/Logos/Nodejs.tsx +++ b/apps/site/components/Icons/Logos/Nodejs.tsx @@ -1,4 +1,5 @@ import classNames from 'classnames'; +import { useTranslations } from 'next-intl'; import type { FC, SVGProps } from 'react'; import type { LogoVariant } from '@/types'; @@ -11,173 +12,177 @@ const Nodejs: FC<NodeJsLogoProps> = ({ className, variant = 'default', ...props -}) => ( - <svg - width="267" - height="80" - viewBox="0 0 267 80" - fill="none" - xmlns="http://www.w3.org/2000/svg" - className={classNames('fill-[#333333] dark:fill-white', className)} - {...props} - > - <mask - id="mask0_1803_3458" - style={{ maskType: 'luminance' }} - maskUnits="userSpaceOnUse" - x="0" - y="0" +}) => { + const t = useTranslations(); + return ( + <svg width="267" height="80" + viewBox="0 0 267 80" + fill="none" + aria-label={t('layouts.logo')} + xmlns="http://www.w3.org/2000/svg" + className={classNames('fill-[#333333] dark:fill-white', className)} + {...props} > - <path d="M267 0H0V79.3784H267V0Z" fill="white" /> - </mask> - <g mask="url(#mask0_1803_3458)"> - <path - d="M234.983 78.7547C234.292 78.7547 233.648 78.5695 233.05 78.2452L226.929 74.5871C226.008 74.0776 226.469 73.8924 226.745 73.7998C227.987 73.3829 228.217 73.2903 229.506 72.5495C229.644 72.4569 229.828 72.5033 229.966 72.5959L234.66 75.4206C234.844 75.5132 235.074 75.5132 235.212 75.4206L253.575 64.7235C253.758 64.6309 253.852 64.4457 253.852 64.2143V42.8665C253.852 42.6351 253.758 42.4499 253.575 42.3573L235.212 31.7067C235.028 31.614 234.798 31.614 234.66 31.7067L216.298 42.3573C216.114 42.4499 216.022 42.6813 216.022 42.8665V64.2143C216.022 64.3995 216.114 64.6309 216.298 64.7235L221.314 67.641C224.029 69.0301 225.732 67.4094 225.732 65.7886V44.7189C225.732 44.4411 225.962 44.1633 226.285 44.1633H228.632C228.908 44.1633 229.184 44.3947 229.184 44.7189V65.7886C229.184 69.447 227.205 71.577 223.753 71.577C222.695 71.577 221.867 71.577 219.519 70.4195L214.687 67.641C213.491 66.9463 212.754 65.6498 212.754 64.2604V42.913C212.754 41.5236 213.491 40.2271 214.687 39.5324L233.05 28.8356C234.2 28.1873 235.765 28.1873 236.915 28.8356L255.278 39.5324C256.474 40.2271 257.21 41.5236 257.21 42.913V64.2604C257.21 65.6498 256.474 66.9463 255.278 67.641L236.915 78.3378C236.363 78.5695 235.673 78.7547 234.983 78.7547Z" - fill="#5FA04E" - /> - <path - d="M240.69 64.075C232.635 64.075 230.978 60.3704 230.978 57.2215C230.978 56.9437 231.208 56.6658 231.53 56.6658H233.923C234.2 56.6658 234.43 56.8511 234.43 57.1289C234.798 59.5831 235.856 60.7873 240.735 60.7873C244.601 60.7873 246.258 59.9074 246.258 57.8236C246.258 56.6197 245.796 55.7398 239.768 55.1377C234.752 54.6282 231.622 53.5169 231.622 49.4881C231.622 45.7374 234.752 43.5145 239.998 43.5145C245.89 43.5145 248.789 45.5521 249.157 49.9976C249.157 50.1366 249.111 50.2754 249.02 50.4144C248.926 50.507 248.789 50.5997 248.649 50.5997H246.21C245.982 50.5997 245.751 50.4144 245.705 50.1828C245.152 47.6359 243.725 46.8025 239.952 46.8025C235.718 46.8025 235.212 48.2842 235.212 49.3955C235.212 50.7384 235.81 51.1553 241.517 51.8962C247.177 52.637 249.847 53.7021 249.847 57.6845C249.847 61.7595 246.487 64.075 240.69 64.075Z" - fill="#5FA04E" - /> - <path - d="M267.2 41.6621C267.2 43.6071 265.588 45.2279 263.654 45.2279C261.722 45.2279 260.111 43.6533 260.111 41.6621C260.111 39.6247 261.768 38.0966 263.654 38.0966C265.542 38.0966 267.2 39.6709 267.2 41.6621ZM260.664 41.6621C260.664 43.3293 261.999 44.6722 263.608 44.6722C265.266 44.6722 266.601 43.2829 266.601 41.6621C266.601 39.9951 265.266 38.6986 263.608 38.6986C262.045 38.6986 260.664 39.9951 260.664 41.6621ZM262.321 39.6709H263.702C264.162 39.6709 265.083 39.6709 265.083 40.736C265.083 41.4769 264.621 41.6159 264.344 41.7085C264.898 41.7547 264.943 42.1254 264.989 42.6346C265.035 42.9588 265.083 43.5145 265.174 43.6997H264.344C264.344 43.5145 264.207 42.4958 264.207 42.4494C264.162 42.218 264.07 42.1254 263.794 42.1254H263.103V43.7459H262.321V39.6709ZM263.057 41.4307H263.654C264.162 41.4307 264.253 41.0603 264.253 40.875C264.253 40.3194 263.885 40.3194 263.654 40.3194H263.012V41.4307H263.057Z" - fill="#5FA04E" - /> - <path - fillRule="evenodd" - clipRule="evenodd" - d="M43.6737 41.9539C43.6737 41.1204 43.2136 40.3334 42.4773 39.9165L23.0104 28.5712C22.6883 28.386 22.3201 28.2934 21.9519 28.2472C21.9059 28.2472 21.7679 28.2472 21.7679 28.2472C21.3997 28.2472 21.0315 28.386 20.7094 28.5712L1.19654 39.8701C0.460209 40.287 0 41.0743 0 41.9539L0.0460209 72.3315C0.0460209 72.7484 0.276126 73.165 0.644293 73.3502C1.01246 73.5819 1.47267 73.5819 1.79482 73.3502L13.3921 66.682C14.1284 66.2653 14.5886 65.4781 14.5886 64.6446V50.4282C14.5886 49.5947 15.0488 48.8074 15.7852 48.3908L20.7094 45.5197C21.0776 45.288 21.4917 45.1954 21.9059 45.1954C22.3201 45.1954 22.7343 45.288 23.0565 45.5197L27.9806 48.3908C28.7169 48.8074 29.1773 49.5947 29.1773 50.4282V64.6446C29.1773 65.4781 29.6375 66.2653 30.3738 66.682L41.8791 73.3502C42.2471 73.5819 42.7073 73.5819 43.0755 73.3502C43.4438 73.165 43.6737 72.7484 43.6737 72.3315V41.9539Z" - /> - <path - fillRule="evenodd" - clipRule="evenodd" - d="M137.465 0.138922C137.096 -0.0463072 136.636 -0.0463072 136.314 0.138922C135.946 0.370456 135.716 0.740915 135.716 1.15768V31.2573C135.716 31.5351 135.578 31.8129 135.301 31.9984C135.025 32.1372 134.749 32.1372 134.473 31.9984L129.595 29.1735C128.859 28.7569 127.984 28.7569 127.248 29.1735L107.735 40.5188C106.999 40.9357 106.539 41.7227 106.539 42.5562V65.2004C106.539 66.0342 106.999 66.8212 107.735 67.2381L127.248 78.5834C127.984 79 128.859 79 129.595 78.5834L149.108 67.2381C149.844 66.8212 150.304 66.0342 150.304 65.2004V8.75207C150.304 7.87222 149.844 7.085 149.108 6.66824L137.465 0.138922ZM135.67 57.7451C135.67 57.9765 135.578 58.1617 135.394 58.2544L128.72 62.1444C128.536 62.237 128.306 62.237 128.122 62.1444L121.449 58.2544C121.265 58.1617 121.173 57.9303 121.173 57.7451V49.9656C121.173 49.7339 121.265 49.5487 121.449 49.4561L128.122 45.5663C128.306 45.4737 128.536 45.4737 128.72 45.5663L135.394 49.4561C135.578 49.5487 135.67 49.7803 135.67 49.9656V57.7451Z" - /> - <path - fillRule="evenodd" - clipRule="evenodd" - d="M202.398 49.7801C203.135 49.3632 203.549 48.5762 203.549 47.7425V42.2319C203.549 41.3985 203.089 40.6112 202.398 40.1946L183.023 28.8957C182.287 28.4788 181.413 28.4788 180.676 28.8957L161.164 40.2407C160.427 40.6576 159.967 41.4449 159.967 42.2784V64.9226C159.967 65.7561 160.427 66.5434 161.164 66.96L180.538 78.0737C181.275 78.4905 182.149 78.4905 182.839 78.0737L194.575 71.4983C194.943 71.3131 195.173 70.8962 195.173 70.4793C195.173 70.0627 194.943 69.6459 194.575 69.4606L174.97 58.1153C174.602 57.8839 174.372 57.5135 174.372 57.0966V50.0117C174.372 49.5949 174.602 49.178 174.97 48.9928L181.091 45.4735C181.459 45.2421 181.919 45.2421 182.287 45.4735L188.408 48.9928C188.776 49.2245 189.006 49.5949 189.006 50.0117V55.5685C189.006 55.9853 189.236 56.4019 189.605 56.5872C189.973 56.8188 190.433 56.8188 190.801 56.5872L202.398 49.7801Z" - /> - <path - fillRule="evenodd" - clipRule="evenodd" - d="M181.551 48.7155C181.689 48.6228 181.874 48.6228 182.012 48.7155L185.739 50.8919C185.877 50.9845 185.969 51.1235 185.969 51.3087V55.6615C185.969 55.8468 185.877 55.9858 185.739 56.0784L182.012 58.2548C181.874 58.3474 181.689 58.3474 181.551 58.2548L177.824 56.0784C177.686 55.9858 177.594 55.8468 177.594 55.6615V51.3087C177.594 51.1235 177.686 50.9845 177.824 50.8919L181.551 48.7155Z" - fill="#5FA04E" - /> + <mask + id="mask0_1803_3458" + style={{ maskType: 'luminance' }} + maskUnits="userSpaceOnUse" + x="0" + y="0" + width="267" + height="80" + > + <path d="M267 0H0V79.3784H267V0Z" fill="white" /> + </mask> + <g mask="url(#mask0_1803_3458)"> + <path + d="M234.983 78.7547C234.292 78.7547 233.648 78.5695 233.05 78.2452L226.929 74.5871C226.008 74.0776 226.469 73.8924 226.745 73.7998C227.987 73.3829 228.217 73.2903 229.506 72.5495C229.644 72.4569 229.828 72.5033 229.966 72.5959L234.66 75.4206C234.844 75.5132 235.074 75.5132 235.212 75.4206L253.575 64.7235C253.758 64.6309 253.852 64.4457 253.852 64.2143V42.8665C253.852 42.6351 253.758 42.4499 253.575 42.3573L235.212 31.7067C235.028 31.614 234.798 31.614 234.66 31.7067L216.298 42.3573C216.114 42.4499 216.022 42.6813 216.022 42.8665V64.2143C216.022 64.3995 216.114 64.6309 216.298 64.7235L221.314 67.641C224.029 69.0301 225.732 67.4094 225.732 65.7886V44.7189C225.732 44.4411 225.962 44.1633 226.285 44.1633H228.632C228.908 44.1633 229.184 44.3947 229.184 44.7189V65.7886C229.184 69.447 227.205 71.577 223.753 71.577C222.695 71.577 221.867 71.577 219.519 70.4195L214.687 67.641C213.491 66.9463 212.754 65.6498 212.754 64.2604V42.913C212.754 41.5236 213.491 40.2271 214.687 39.5324L233.05 28.8356C234.2 28.1873 235.765 28.1873 236.915 28.8356L255.278 39.5324C256.474 40.2271 257.21 41.5236 257.21 42.913V64.2604C257.21 65.6498 256.474 66.9463 255.278 67.641L236.915 78.3378C236.363 78.5695 235.673 78.7547 234.983 78.7547Z" + fill="#5FA04E" + /> + <path + d="M240.69 64.075C232.635 64.075 230.978 60.3704 230.978 57.2215C230.978 56.9437 231.208 56.6658 231.53 56.6658H233.923C234.2 56.6658 234.43 56.8511 234.43 57.1289C234.798 59.5831 235.856 60.7873 240.735 60.7873C244.601 60.7873 246.258 59.9074 246.258 57.8236C246.258 56.6197 245.796 55.7398 239.768 55.1377C234.752 54.6282 231.622 53.5169 231.622 49.4881C231.622 45.7374 234.752 43.5145 239.998 43.5145C245.89 43.5145 248.789 45.5521 249.157 49.9976C249.157 50.1366 249.111 50.2754 249.02 50.4144C248.926 50.507 248.789 50.5997 248.649 50.5997H246.21C245.982 50.5997 245.751 50.4144 245.705 50.1828C245.152 47.6359 243.725 46.8025 239.952 46.8025C235.718 46.8025 235.212 48.2842 235.212 49.3955C235.212 50.7384 235.81 51.1553 241.517 51.8962C247.177 52.637 249.847 53.7021 249.847 57.6845C249.847 61.7595 246.487 64.075 240.69 64.075Z" + fill="#5FA04E" + /> + <path + d="M267.2 41.6621C267.2 43.6071 265.588 45.2279 263.654 45.2279C261.722 45.2279 260.111 43.6533 260.111 41.6621C260.111 39.6247 261.768 38.0966 263.654 38.0966C265.542 38.0966 267.2 39.6709 267.2 41.6621ZM260.664 41.6621C260.664 43.3293 261.999 44.6722 263.608 44.6722C265.266 44.6722 266.601 43.2829 266.601 41.6621C266.601 39.9951 265.266 38.6986 263.608 38.6986C262.045 38.6986 260.664 39.9951 260.664 41.6621ZM262.321 39.6709H263.702C264.162 39.6709 265.083 39.6709 265.083 40.736C265.083 41.4769 264.621 41.6159 264.344 41.7085C264.898 41.7547 264.943 42.1254 264.989 42.6346C265.035 42.9588 265.083 43.5145 265.174 43.6997H264.344C264.344 43.5145 264.207 42.4958 264.207 42.4494C264.162 42.218 264.07 42.1254 263.794 42.1254H263.103V43.7459H262.321V39.6709ZM263.057 41.4307H263.654C264.162 41.4307 264.253 41.0603 264.253 40.875C264.253 40.3194 263.885 40.3194 263.654 40.3194H263.012V41.4307H263.057Z" + fill="#5FA04E" + /> + <path + fillRule="evenodd" + clipRule="evenodd" + d="M43.6737 41.9539C43.6737 41.1204 43.2136 40.3334 42.4773 39.9165L23.0104 28.5712C22.6883 28.386 22.3201 28.2934 21.9519 28.2472C21.9059 28.2472 21.7679 28.2472 21.7679 28.2472C21.3997 28.2472 21.0315 28.386 20.7094 28.5712L1.19654 39.8701C0.460209 40.287 0 41.0743 0 41.9539L0.0460209 72.3315C0.0460209 72.7484 0.276126 73.165 0.644293 73.3502C1.01246 73.5819 1.47267 73.5819 1.79482 73.3502L13.3921 66.682C14.1284 66.2653 14.5886 65.4781 14.5886 64.6446V50.4282C14.5886 49.5947 15.0488 48.8074 15.7852 48.3908L20.7094 45.5197C21.0776 45.288 21.4917 45.1954 21.9059 45.1954C22.3201 45.1954 22.7343 45.288 23.0565 45.5197L27.9806 48.3908C28.7169 48.8074 29.1773 49.5947 29.1773 50.4282V64.6446C29.1773 65.4781 29.6375 66.2653 30.3738 66.682L41.8791 73.3502C42.2471 73.5819 42.7073 73.5819 43.0755 73.3502C43.4438 73.165 43.6737 72.7484 43.6737 72.3315V41.9539Z" + /> + <path + fillRule="evenodd" + clipRule="evenodd" + d="M137.465 0.138922C137.096 -0.0463072 136.636 -0.0463072 136.314 0.138922C135.946 0.370456 135.716 0.740915 135.716 1.15768V31.2573C135.716 31.5351 135.578 31.8129 135.301 31.9984C135.025 32.1372 134.749 32.1372 134.473 31.9984L129.595 29.1735C128.859 28.7569 127.984 28.7569 127.248 29.1735L107.735 40.5188C106.999 40.9357 106.539 41.7227 106.539 42.5562V65.2004C106.539 66.0342 106.999 66.8212 107.735 67.2381L127.248 78.5834C127.984 79 128.859 79 129.595 78.5834L149.108 67.2381C149.844 66.8212 150.304 66.0342 150.304 65.2004V8.75207C150.304 7.87222 149.844 7.085 149.108 6.66824L137.465 0.138922ZM135.67 57.7451C135.67 57.9765 135.578 58.1617 135.394 58.2544L128.72 62.1444C128.536 62.237 128.306 62.237 128.122 62.1444L121.449 58.2544C121.265 58.1617 121.173 57.9303 121.173 57.7451V49.9656C121.173 49.7339 121.265 49.5487 121.449 49.4561L128.122 45.5663C128.306 45.4737 128.536 45.4737 128.72 45.5663L135.394 49.4561C135.578 49.5487 135.67 49.7803 135.67 49.9656V57.7451Z" + /> + <path + fillRule="evenodd" + clipRule="evenodd" + d="M202.398 49.7801C203.135 49.3632 203.549 48.5762 203.549 47.7425V42.2319C203.549 41.3985 203.089 40.6112 202.398 40.1946L183.023 28.8957C182.287 28.4788 181.413 28.4788 180.676 28.8957L161.164 40.2407C160.427 40.6576 159.967 41.4449 159.967 42.2784V64.9226C159.967 65.7561 160.427 66.5434 161.164 66.96L180.538 78.0737C181.275 78.4905 182.149 78.4905 182.839 78.0737L194.575 71.4983C194.943 71.3131 195.173 70.8962 195.173 70.4793C195.173 70.0627 194.943 69.6459 194.575 69.4606L174.97 58.1153C174.602 57.8839 174.372 57.5135 174.372 57.0966V50.0117C174.372 49.5949 174.602 49.178 174.97 48.9928L181.091 45.4735C181.459 45.2421 181.919 45.2421 182.287 45.4735L188.408 48.9928C188.776 49.2245 189.006 49.5949 189.006 50.0117V55.5685C189.006 55.9853 189.236 56.4019 189.605 56.5872C189.973 56.8188 190.433 56.8188 190.801 56.5872L202.398 49.7801Z" + /> + <path + fillRule="evenodd" + clipRule="evenodd" + d="M181.551 48.7155C181.689 48.6228 181.874 48.6228 182.012 48.7155L185.739 50.8919C185.877 50.9845 185.969 51.1235 185.969 51.3087V55.6615C185.969 55.8468 185.877 55.9858 185.739 56.0784L182.012 58.2548C181.874 58.3474 181.689 58.3474 181.551 58.2548L177.824 56.0784C177.686 55.9858 177.594 55.8468 177.594 55.6615V51.3087C177.594 51.1235 177.686 50.9845 177.824 50.8919L181.551 48.7155Z" + fill="#5FA04E" + /> - {variant === 'pride' ? ( - <> - <mask - id="mask1_12_17" - style={{ maskType: 'alpha' }} - maskUnits="userSpaceOnUse" - x="53" - y="28" - width="44" - height="51" - > - <path - d="M76.2211 28.9482C75.4847 28.5316 74.6105 28.5316 73.8743 28.9482L54.5024 40.1993C53.7662 40.616 53.3521 41.4029 53.3521 42.2366V64.7846C53.3521 65.6181 53.8122 66.405 54.5024 66.8219L73.8743 78.0729C74.6105 78.4894 75.4847 78.4894 76.2211 78.0729L95.5929 66.8219C96.3288 66.405 96.7431 65.6181 96.7431 64.7846V42.2366C96.7431 41.4029 96.2832 40.616 95.5929 40.1993L76.2211 28.9482Z" - fill="white" - /> - </mask> - <g mask="url(#mask1_12_17)"> - <path - d="M103.17 53.5459H53.4209V61.8043H103.17V53.5459Z" - fill="#008026" - /> - <path - d="M103.17 61.8042H53.4209V70.1621H103.17V61.8042Z" - fill="#004DFF" - /> + {variant === 'pride' ? ( + <> + <mask + id="mask1_12_17" + style={{ maskType: 'alpha' }} + maskUnits="userSpaceOnUse" + x="53" + y="28" + width="44" + height="51" + > + <path + d="M76.2211 28.9482C75.4847 28.5316 74.6105 28.5316 73.8743 28.9482L54.5024 40.1993C53.7662 40.616 53.3521 41.4029 53.3521 42.2366V64.7846C53.3521 65.6181 53.8122 66.405 54.5024 66.8219L73.8743 78.0729C74.6105 78.4894 75.4847 78.4894 76.2211 78.0729L95.5929 66.8219C96.3288 66.405 96.7431 65.6181 96.7431 64.7846V42.2366C96.7431 41.4029 96.2832 40.616 95.5929 40.1993L76.2211 28.9482Z" + fill="white" + /> + </mask> + <g mask="url(#mask1_12_17)"> + <path + d="M103.17 53.5459H53.4209V61.8043H103.17V53.5459Z" + fill="#008026" + /> + <path + d="M103.17 61.8042H53.4209V70.1621H103.17V61.8042Z" + fill="#004DFF" + /> + <path + d="M103.17 37.0293H53.4209V45.2877H103.17V37.0293Z" + fill="#FF8C00" + /> + <path + d="M103.17 45.2876H53.4209V53.546H103.17V45.2876Z" + fill="#FFED00" + /> + <path + d="M103.17 28.6714H53.4209V37.0293H103.17V28.6714Z" + fill="#E40303" + /> + <path + d="M103.17 70.1626H53.4209V78.421H103.17V70.1626Z" + fill="#750787" + /> + </g> + </> + ) : ( + <> <path - d="M103.17 37.0293H53.4209V45.2877H103.17V37.0293Z" - fill="#FF8C00" + d="M76.3012 28.9882C75.5647 28.5716 74.6903 28.5716 73.954 28.9882L54.5792 40.241C53.8429 40.6578 53.4287 41.4449 53.4287 42.2786V64.83C53.4287 65.6637 53.8889 66.4507 54.5792 66.8676L73.954 78.1203C74.6903 78.5369 75.5647 78.5369 76.3012 78.1203L95.6758 66.8676C96.4123 66.4507 96.8263 65.6637 96.8263 64.83V42.2786C96.8263 41.4449 96.3662 40.6578 95.6758 40.241L76.3012 28.9882Z" + fill="url(#paint0_linear_1803_3458)" /> <path - d="M103.17 45.2876H53.4209V53.546H103.17V45.2876Z" - fill="#FFED00" + d="M95.7221 40.241L76.2554 28.9882C76.0714 28.8956 75.8412 28.803 75.6572 28.7568L53.8433 66.3119C54.0273 66.5433 54.2575 66.7286 54.4874 66.8676L73.9544 78.1203C74.5067 78.4443 75.1508 78.5369 75.749 78.3517L96.2284 40.6578C96.0904 40.4726 95.9063 40.3336 95.7221 40.241Z" + fill="url(#paint1_linear_1803_3458)" /> <path - d="M103.17 28.6714H53.4209V37.0293H103.17V28.6714Z" - fill="#E40303" + d="M95.7224 66.8669C96.2747 66.5427 96.6889 65.9871 96.8729 65.385L75.5651 28.7098C75.013 28.6172 74.4146 28.6633 73.9085 28.9876L54.5796 40.1939L75.427 78.4437C75.7031 78.3973 76.0255 78.3046 76.3016 78.1659L95.7224 66.8669Z" + fill="url(#paint2_linear_1803_3458)" /> - <path - d="M103.17 70.1626H53.4209V78.421H103.17V70.1626Z" - fill="#750787" - /> - </g> - </> + </> + )} + </g> + {variant === 'pride' ? ( + <defs> + <clipPath id="clip0_12_17"> + <rect width="267" height="79.988" fill="white" /> + </clipPath> + </defs> ) : ( - <> - <path - d="M76.3012 28.9882C75.5647 28.5716 74.6903 28.5716 73.954 28.9882L54.5792 40.241C53.8429 40.6578 53.4287 41.4449 53.4287 42.2786V64.83C53.4287 65.6637 53.8889 66.4507 54.5792 66.8676L73.954 78.1203C74.6903 78.5369 75.5647 78.5369 76.3012 78.1203L95.6758 66.8676C96.4123 66.4507 96.8263 65.6637 96.8263 64.83V42.2786C96.8263 41.4449 96.3662 40.6578 95.6758 40.241L76.3012 28.9882Z" - fill="url(#paint0_linear_1803_3458)" - /> - <path - d="M95.7221 40.241L76.2554 28.9882C76.0714 28.8956 75.8412 28.803 75.6572 28.7568L53.8433 66.3119C54.0273 66.5433 54.2575 66.7286 54.4874 66.8676L73.9544 78.1203C74.5067 78.4443 75.1508 78.5369 75.749 78.3517L96.2284 40.6578C96.0904 40.4726 95.9063 40.3336 95.7221 40.241Z" - fill="url(#paint1_linear_1803_3458)" - /> - <path - d="M95.7224 66.8669C96.2747 66.5427 96.6889 65.9871 96.8729 65.385L75.5651 28.7098C75.013 28.6172 74.4146 28.6633 73.9085 28.9876L54.5796 40.1939L75.427 78.4437C75.7031 78.3973 76.0255 78.3046 76.3016 78.1659L95.7224 66.8669Z" - fill="url(#paint2_linear_1803_3458)" - /> - </> + <defs> + <linearGradient + id="paint0_linear_1803_3458" + x1="83.0183" + y1="37.3689" + x2="65.3246" + y2="73.2407" + gradientUnits="userSpaceOnUse" + > + <stop stopColor="#3F873F" /> + <stop offset="0.3296" stopColor="#3F8B3D" /> + <stop offset="0.6367" stopColor="#3E9638" /> + <stop offset="0.9341" stopColor="#3DA92E" /> + <stop offset="1" stopColor="#3DAE2B" /> + </linearGradient> + <linearGradient + id="paint1_linear_1803_3458" + x1="72.1833" + y1="56.1876" + x2="121.552" + y2="19.937" + gradientUnits="userSpaceOnUse" + > + <stop offset="0.1376" stopColor="#3F873F" /> + <stop offset="0.4016" stopColor="#52A044" /> + <stop offset="0.7129" stopColor="#64B749" /> + <stop offset="0.9081" stopColor="#6ABF4B" /> + </linearGradient> + <linearGradient + id="paint2_linear_1803_3458" + x1="52.7188" + y1="53.5463" + x2="97.551" + y2="53.5463" + gradientUnits="userSpaceOnUse" + > + <stop offset="0.0919165" stopColor="#6ABF4B" /> + <stop offset="0.2871" stopColor="#64B749" /> + <stop offset="0.5984" stopColor="#52A044" /> + <stop offset="0.8624" stopColor="#3F873F" /> + </linearGradient> + </defs> )} - </g> - {variant === 'pride' ? ( - <defs> - <clipPath id="clip0_12_17"> - <rect width="267" height="79.988" fill="white" /> - </clipPath> - </defs> - ) : ( - <defs> - <linearGradient - id="paint0_linear_1803_3458" - x1="83.0183" - y1="37.3689" - x2="65.3246" - y2="73.2407" - gradientUnits="userSpaceOnUse" - > - <stop stopColor="#3F873F" /> - <stop offset="0.3296" stopColor="#3F8B3D" /> - <stop offset="0.6367" stopColor="#3E9638" /> - <stop offset="0.9341" stopColor="#3DA92E" /> - <stop offset="1" stopColor="#3DAE2B" /> - </linearGradient> - <linearGradient - id="paint1_linear_1803_3458" - x1="72.1833" - y1="56.1876" - x2="121.552" - y2="19.937" - gradientUnits="userSpaceOnUse" - > - <stop offset="0.1376" stopColor="#3F873F" /> - <stop offset="0.4016" stopColor="#52A044" /> - <stop offset="0.7129" stopColor="#64B749" /> - <stop offset="0.9081" stopColor="#6ABF4B" /> - </linearGradient> - <linearGradient - id="paint2_linear_1803_3458" - x1="52.7188" - y1="53.5463" - x2="97.551" - y2="53.5463" - gradientUnits="userSpaceOnUse" - > - <stop offset="0.0919165" stopColor="#6ABF4B" /> - <stop offset="0.2871" stopColor="#64B749" /> - <stop offset="0.5984" stopColor="#52A044" /> - <stop offset="0.8624" stopColor="#3F873F" /> - </linearGradient> - </defs> - )} - </svg> -); + </svg> + ); +}; export default Nodejs; diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index fbff7014330a1..432f9040ba20b 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -11,6 +11,10 @@ } }, "navBar": { + "controls": { + "open": "Show navigation menu", + "close": "Close navigation menu" + }, "links": { "about": "About", "download": "Download", @@ -283,6 +287,7 @@ "docker": "Docker is a containerization platform." } } - } + }, + "logo": "Node.js logo" } } From 837a461b3fe751bfbd7e7208838477fb2ea13ca7 Mon Sep 17 00:00:00 2001 From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Date: Sun, 2 Feb 2025 21:42:10 +0100 Subject: [PATCH 0282/1385] feat(learn): add section for dynamically generating test cases (#7387) * feat(learn): add section for dynamically generating test cases * fixup!: adjust for prettier mangling * fixup!: simple & advanced examples * fixup!: re-organise examples --- .../en/learn/test-runner/using-test-runner.md | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/apps/site/pages/en/learn/test-runner/using-test-runner.md b/apps/site/pages/en/learn/test-runner/using-test-runner.md index 84e2657d7b953..155e710b8eba0 100644 --- a/apps/site/pages/en/learn/test-runner/using-test-runner.md +++ b/apps/site/pages/en/learn/test-runner/using-test-runner.md @@ -64,6 +64,118 @@ Then for each setup, create a dedicated `setup` file (ensuring the base `setup.m Each example below was taken from real-world projects; they may not be appropriate/applicable to yours, but each demonstrate general concepts that are broadly applicable. +## Dynamically generating test cases + +Some times, you may want to dynamically generate test-cases. For instance, you want to test the same thing across a bunch of files. This is possible, albeit slightly arcane. You must use `test` (you cannot use `describe`) + `testContext.test`: + +### Simple example + +```js displayName="23.8.0 and later" +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { detectOsInUserAgent } from '…'; + +const userAgents = [ + { ua: /* … */, os: 'WIN' }, + // … +]; + +test('Detect OS via user-agent', { concurrency: true }, t => { + for (const { os, ua } from userAgents) { + t.test(ua, () => assert.equal(detectOsInUserAgent(ua), os)); + } +}); +``` + +```js displayName="prior to 23.8.0" +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { detectOsInUserAgent } from '…'; + +const userAgents = [ + { ua: '…', os: 'WIN' }, + // … +]; + +test('Detect OS via user-agent', { concurrency: true }, async t => { + const cases = userAgents.map(({ os, ua }) => { + t.test(ua, () => assert.equal(detectOsInUserAgent(ua), os)); + }); + + await Promise.allSettled(cases); +}); +``` + +### Advanced example + +```js displayName="23.8.0 and later" +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { getWorkspacePJSONs } from './getWorkspacePJSONs.mjs'; + +const requiredKeywords = ['node.js', 'sliced bread']; + +test('Check package.jsons', { concurrency: true }, async t => { + const pjsons = await getWorkspacePJSONs(); + + for (const pjson of pjsons) { + // ⚠️ `t.test`, NOT `test` + t.test(`Ensure fields are properly set: ${pjson.name}`, () => { + assert.partialDeepStrictEqual(pjson.keywords, requiredKeywords); + }); + } +}); +``` + +```js displayName="prior to 23.8.0" +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { getWorkspacePJSONs } from './getWorkspacePJSONs.mjs'; + +const requiredKeywords = ['node.js', 'sliced bread']; + +test('Check package.jsons', { concurrency: true }, async t => { + const pjsons = await getWorkspacePJSONs(); + + const cases = pjsons.map(pjson => + // ⚠️ `t.test`, NOT `test` + t.test(`Ensure fields are properly set: ${pjson.name}`, () => { + assert.partialDeepStrictEqual(pjson.keywords, requiredKeywords); + }) + ); + + // Allow the cases to run concurrently. + await Promise.allSettled(cases); +}); +``` + +```js displayName="./getWorkspacePJSONs.mjs" +import { globSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; + +// Note: This would be better implemented as an async generator, leveraging fs.glob (instead of fs.globSync); +// however, generators and especially async generators are much less understood, +// so this simplified example is provided for easier understanding. + +/** + * Get all the package.json files, by default 1-level deep within ./workspaces/ + */ +export function getWorkspacePJSONs(path = './workspaces/*/package.json') { + return Promise.all( + globSync( + // ⚠️ Passing a file URL string, like from import.meta.resolve, causes glob* to fail silently + fileURLToPath(import.meta.resolve(path)) + ).map(path => import(path, { with: { type: 'json' } })) + ); +} +``` + +> **Note**: Prior to version 23.8.0, the setup is quite different because `testContext.test` was not automatically awaited. + ## ServiceWorker tests [`ServiceWorkerGlobalScope`](https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope) contains very specific APIs that don't exist in other environments, and some of its APIs are seemingly similar to others (ex `fetch`) but have augmented behaviour. You do not want these to spill into unrelated tests. From 1f27135024038f011b1d2412ae96eeb780281ae9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:22:32 +0000 Subject: [PATCH 0283/1385] [automated]: crowdin sync (#7436) * 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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com> --- .../site/pages/es/about/get-involved/index.md | 2 +- apps/site/pages/fr/about/governance.md | 17 +++++--------- apps/site/pages/fr/about/index.mdx | 22 ++++++------------- apps/site/pages/fr/download/current.mdx | 4 ++-- apps/site/pages/fr/download/index.mdx | 4 ++-- apps/site/pages/fr/index.mdx | 4 ++-- apps/site/pages/id/about/governance.md | 17 +++++--------- apps/site/pages/id/about/index.mdx | 14 +++++------- apps/site/pages/id/download/current.mdx | 4 ++-- apps/site/pages/id/download/index.mdx | 4 ++-- apps/site/pages/id/index.mdx | 4 ++-- apps/site/pages/uk/about/governance.md | 17 +++++--------- apps/site/pages/uk/about/index.mdx | 14 ++++-------- apps/site/pages/uk/index.mdx | 2 +- apps/site/snippets/es/download/brew.bash | 8 +++++++ apps/site/snippets/es/download/choco.bash | 8 +++++++ apps/site/snippets/es/download/devbox.bash | 14 ++++++++++++ apps/site/snippets/es/download/docker.bash | 11 ++++++++++ apps/site/snippets/es/download/yarn.bash | 5 +++++ 19 files changed, 91 insertions(+), 84 deletions(-) create mode 100644 apps/site/snippets/es/download/brew.bash create mode 100644 apps/site/snippets/es/download/choco.bash create mode 100644 apps/site/snippets/es/download/devbox.bash create mode 100644 apps/site/snippets/es/download/docker.bash create mode 100644 apps/site/snippets/es/download/yarn.bash diff --git a/apps/site/pages/es/about/get-involved/index.md b/apps/site/pages/es/about/get-involved/index.md index b54e635612ce6..47aeed526cdc6 100644 --- a/apps/site/pages/es/about/get-involved/index.md +++ b/apps/site/pages/es/about/get-involved/index.md @@ -1,5 +1,5 @@ --- -title: Participar +title: Colaborar layout: about --- diff --git a/apps/site/pages/fr/about/governance.md b/apps/site/pages/fr/about/governance.md index 30cb570d6cbdd..3ba08548c9017 100644 --- a/apps/site/pages/fr/about/governance.md +++ b/apps/site/pages/fr/about/governance.md @@ -7,30 +7,23 @@ layout: about ## Processus de recherche de consensus -Le projet Node.js suit un modèle de prise de décision [Consensus Seeking][]. +Le projet Node.js suit un modèle de prise de décision [Consensus Seeking](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making). ## Collaborateurs -Le dépôt GitHub [nodejs/node][] core est maintenu par les Collaborateurs +Le dépôt GitHub [nodejs/node](https://github.com/nodejs/node) core est maintenu par les Collaborateurs qui sont nommés par d'autres collaborateurs existants sur une base continue. Les personnes qui apportent des contributions significatives et précieuses sont nommées collaborateurs et se voient attribuer un accès au projet. Ces personnes sont identifiées par d'autres. Ces personnes sont identifiées par d'autres collaborateurs et leur nomination est discutée avec les collaborateurs existants. -Pour la liste actuelle des collaborateurs, voir le [README.md][] du projet. +Pour obtenir la liste actuelle des collaborateurs, consultez le site web du projet [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members). -Un guide pour les collaborateurs est disponible à l'adresse suivante : [collaborator-guide.md][]. +Un guide pour les collaborateurs est disponible sur [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md). ## Comité de pilotage technique -Le projet est régi par le "[Technical Steering Committee (TSC)][]" +Le projet est régi par le [Technical Steering Committee (TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md) qui est responsable de l'orientation de haut niveau du projet. Le TSC est un un sous-ensemble de collaborateurs actifs qui sont nommés par d'autres membres existants du 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/fr/about/index.mdx b/apps/site/pages/fr/about/index.mdx index 914d165ead2ad..df8c511311299 100644 --- a/apps/site/pages/fr/about/index.mdx +++ b/apps/site/pages/fr/about/index.mdx @@ -51,16 +51,15 @@ méthodes synchrones de la bibliothèque standard de Node.js. Comme rien ne se b raisonnables à développer en Node.js. Si ce langage ne vous est pas familier, vous trouverez un article complet sur le site suivant -[Blocage et non-blocage][]. +[Bloquant et Non-bloquant](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking). --- -La conception de Node.js est similaire et influencée par des systèmes tels que Ruby [Event Machine][] et Python [Twisted][]. -[Event Machine][] de Ruby et [Twisted][] de Python. Node.js pousse le modèle d'événement un peu plus loin. -un peu plus loin. Il présente une boucle d'événements comme une construction d'exécution plutôt que comme une bibliothèque. Dans d'autres systèmes, +La conception de Node.js est similaire et influencée par des systèmes tels que Ruby [Event Machine](https://github.com/eventmachine/eventmachine) et [Twisted](https://twisted.org/) de Python. +Node.js pousse le modèle d'événement un peu plus loin. +Il présente une boucle d'événements comme une construction d'exécution et non comme une bibliothèque. Dans d'autres systèmes, il y a toujours un appel bloquant pour démarrer la boucle d'événements. -Généralement, le comportement est défini par des rappels au début d'un script et, à la fin, un serveur est démarré par le biais d'un appel bloquant. -la fin, un serveur est démarré par un appel bloquant comme `EventMachine::run()`. +Généralement, le comportement est défini par des rappels au début d'un script et, à la fin, un serveur est démarré par un appel bloquant comme `EventMachine::run()`. Dans Node.js, il n'y a pas de tel appel start-the-event-loop. Node.js entre simplement dans la boucle d'événements après avoir exécuté le script d'entrée. Node.js quitte la boucle d'événements lorsqu'il n'y a plus de rappels à effectuer. Ce comportement est similaire à celui d'un navigateur JavaScript - la boucle d'événements est cachée à l'utilisateur. @@ -70,14 +69,7 @@ latence. Node.js est donc bien adapté à la création d'une bibliothèque ou d' web ou d'un framework. Le fait que Node.js soit conçu sans threads ne signifie pas que vous ne pouvez pas tirer -profiter de plusieurs cœurs dans votre environnement. Les processus enfants peuvent être créés en utilisant notre API [`child_process.fork()`][]. -en utilisant notre API [`child_process.fork()`][], et sont conçus pour être faciles à communiquer. -communiquer avec. Le module [`cluster`][] est construit sur cette même interface, +profit de plusieurs cœurs dans votre environnement. Les processus enfants peuvent être créés en utilisant notre API [`child_process.fork()`](https://nodejs.org/api/child_process.html), et sont conçus pour être faciles à +communiquer avec. Le module [`cluster`](https://nodejs.org/api/cluster.html) est construit sur cette même interface, qui vous permet de partager des sockets entre les processus afin d'équilibrer la charge sur vos cœurs. - -[bloquant ou non bloquant]: /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 -[événements machine]: https://github.com/eventmachine/eventmachine -[tordu]: https://twisted.org/ diff --git a/apps/site/pages/fr/download/current.mdx b/apps/site/pages/fr/download/current.mdx index 0b62d4f467e0d..e8bb2365da1c8 100644 --- a/apps/site/pages/fr/download/current.mdx +++ b/apps/site/pages/fr/download/current.mdx @@ -22,8 +22,8 @@ Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> p Apprenez à <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">vérifier</LinkWithArrow> les SHASUMS signés. -Découvrez comment <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">compiler Node.js</LinkWithArrow> à partir des sources. +Vous cherchez les sources de Node.js ? Téléchargez une archive signée <Release.DownloadLink kind="source">Node.js source</Release.DownloadLink>. -Consultez nos binaires <LinkWithArrow href="https://nodejs.org/download/nightly/">chaque nuit</LinkWithArrow>, toutes les <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">versions précédentes</Link> ou les binaires <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">non officiels</LinkWithArrow> pour d'autres plateformes. +Consultez nos binaires <LinkWithArrow href="https://nodejs.org/download/nightly/">chaque nuit</LinkWithArrow>, toutes les <LinkWithArrow href="https://nodejs.org/download/release/">versions précédentes</LinkWithArrow> ou les binaires <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">non officiels</LinkWithArrow> pour d'autres plateformes. </section> diff --git a/apps/site/pages/fr/download/index.mdx b/apps/site/pages/fr/download/index.mdx index 0b2935443796b..371b0ce5c6847 100644 --- a/apps/site/pages/fr/download/index.mdx +++ b/apps/site/pages/fr/download/index.mdx @@ -22,8 +22,8 @@ Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> p Apprenez à <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">vérifier</LinkWithArrow> les SHASUMS signés. -Découvrez comment <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">compiler Node.js</LinkWithArrow> à partir des sources. +Vous cherchez les sources de Node.js ? Téléchargez une archive signée <Release.DownloadLink kind="source">Node.js source</Release.DownloadLink>. -Consultez nos binaires <LinkWithArrow href="https://nodejs.org/download/nightly/">chaque nuit</LinkWithArrow>, toutes les <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">versions précédentes</Link> ou les binaires <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">non officiels</LinkWithArrow> pour d'autres plateformes. +Consultez nos binaires <LinkWithArrow href="https://nodejs.org/download/nightly/">chaque nuit</LinkWithArrow>, toutes les <LinkWithArrow href="https://nodejs.org/download/release/">versions précédentes</LinkWithArrow> ou les binaires <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">non officiels</LinkWithArrow> pour d'autres plateformes. </section> diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx index 2cd1371107d46..4d23f884a27be 100644 --- a/apps/site/pages/fr/index.mdx +++ b/apps/site/pages/fr/index.mdx @@ -19,9 +19,9 @@ Node.js® est un environnement d'exécution JavaScript gratuit, open-source et m <> <DownloadButton release={release}>Télécharger Node.js (LTS)</DownloadButton> <small> - Télécharger Node.js <b>{release.versionWithPrefix}</b> + Téléchargements Node.js <b>{release.versionWithPrefix}</b> <sup title="Downloads a Node.js installer for your current platform">1</sup> avec un support à long terme. - Node.js peut également être installé via <Link href="/download/package-manager">gestionnaires de paquets</Link>. + Node.js peut également être installé via <Link href="/download">le gestionnaire de versions</Link>. </small> </> )} diff --git a/apps/site/pages/id/about/governance.md b/apps/site/pages/id/about/governance.md index ac09ed445e313..b2cc8db0afac1 100644 --- a/apps/site/pages/id/about/governance.md +++ b/apps/site/pages/id/about/governance.md @@ -7,26 +7,19 @@ layout: about ## Proses Pencarian Kesepakatan -Proyek Node.js mengikuti model pengambilan keputusan [Pencarian Konsensus] []. +Proyek Node.js mengikuti model pengambilan keputusan [Musyawarah](https://id.wikipedia.org/wiki/Musyawarah). ## Kolaborator -Repositori inti GitHub [nodejs/node][] dikelola oleh Kolaborator +Repositori inti GitHub [nodejs/node](https://github.com/nodejs/node) dikelola oleh Kolaborator yang dinominasikan oleh Kolaborator lain yang ada secara berkelanjutan. Individu yang memberikan kontribusi signifikan dan berharga akan dijadikan Kolaborator dan diberikan akses komitmen terhadap proyek. Individu-individu ini diidentifikasi oleh Kolaborator lain dan nominasi mereka didiskusikan dengan Kolaborator yang ada. -Untuk daftar Kolaborator saat ini, lihat [README.md][] proyek. +Untuk daftar Kolaborator saat ini, lihat proyek kami [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members). -Panduan untuk Kolaborator disimpan di [collaborator-guide.md][]. +Panduan untuk Kolaborator disimpan di [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md). ## Komite Pengarah Teknis -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 -[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 +Proyek ini diatur oleh Komite Pengarah Teknis dalam bahasa inggris [Technical Steering Committee (TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md) yang bertanggung jawab atas panduan tingkat tinggi proyek. TSC adalah bagian dari Kolaborator aktif yang dinominasikan oleh anggota TSC lain yang sudah ada. diff --git a/apps/site/pages/id/about/index.mdx b/apps/site/pages/id/about/index.mdx index b420da357524f..975d2c2e5af02 100644 --- a/apps/site/pages/id/about/index.mdx +++ b/apps/site/pages/id/about/index.mdx @@ -52,20 +52,16 @@ Node.js langsung melakukan I/O, jadi proses tidak pernah memblokir kecuali saat metode sinkron dari pustaka standar Node.js. Karena tidak ada yang menghalangi, sistem yang dapat diskalakan sangat masuk akal untuk dikembangkan di Node.js. -Jika ada yang belum familiar dengan bahasa ini, ada artikel lengkap tentang [Blocking vs. Non-Blocking][]. +Jika ada beberapa bahasa yang kurang familiar, ada artikel lengkap tentang +[Blocking vs. Non-Blocking](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking). --- -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](https://github.com/eventmachine/eventmachine) Ruby dan [Twisted](https://twisted.org/) 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 perpustakaan atau kerangka kerja. -Node.js dirancang tanpa thread bukan berarti Anda tidak dapat memanfaatkan banyak inti di lingkungan Anda. Proses anak dapat dihasilkan dengan menggunakan API child_process.fork() kami, dan dirancang agar mudah untuk berkomunikasi. Dibangun di atas antarmuka yang sama adalah modul cluster, yang memungkinkan Anda berbagi soket antar proses untuk mengaktifkan penyeimbangan beban pada inti Anda. - -[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/ +Node.js dirancang tanpa thread bukan berarti Anda tidak dapat memanfaatkan banyak inti di lingkungan Anda. Proses anak dapat dihasilkan dengan menggunakan API [`child_process.fork()`](https://nodejs.org/api/child_process.html) kami, dan dirancang agar mudah untuk berkomunikasi. Dibangun di atas antarmuka yang sama adalah modul [`cluster`](https://nodejs.org/api/cluster.html), yang memungkinkan Anda berbagi soket antar proses untuk mengaktifkan penyeimbangan beban pada inti Anda. diff --git a/apps/site/pages/id/download/current.mdx b/apps/site/pages/id/download/current.mdx index 5e044321e5855..cccf988f76667 100644 --- a/apps/site/pages/id/download/current.mdx +++ b/apps/site/pages/id/download/current.mdx @@ -22,10 +22,10 @@ Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini Pelajari cara <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">memverifikasi</LinkWithArrow> yang ditandatangani SHASUMS. -Lihat bagaimana cara <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">membangun Node.js</LinkWithArrow> dari sumber. +Mencari sumber Node.js? Unduh tarball <Release.DownloadLink kind="source">sumber Node.js</Release.DownloadLink> yang telah ditandatangani. Lihat biner <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> kami atau -semua <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">rilis sebelumnya</Link> +semua <LinkWithArrow href="https://nodejs.org/download/release/">rilis sebelumnya</LinkWithArrow> atau biner <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">tidak resmi</LinkWithArrow> untuk platform lain. </section> diff --git a/apps/site/pages/id/download/index.mdx b/apps/site/pages/id/download/index.mdx index 5e044321e5855..cccf988f76667 100644 --- a/apps/site/pages/id/download/index.mdx +++ b/apps/site/pages/id/download/index.mdx @@ -22,10 +22,10 @@ Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini Pelajari cara <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">memverifikasi</LinkWithArrow> yang ditandatangani SHASUMS. -Lihat bagaimana cara <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">membangun Node.js</LinkWithArrow> dari sumber. +Mencari sumber Node.js? Unduh tarball <Release.DownloadLink kind="source">sumber Node.js</Release.DownloadLink> yang telah ditandatangani. Lihat biner <LinkWithArrow href="https://nodejs.org/download/nightly/">nightly</LinkWithArrow> kami atau -semua <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">rilis sebelumnya</Link> +semua <LinkWithArrow href="https://nodejs.org/download/release/">rilis sebelumnya</LinkWithArrow> atau biner <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">tidak resmi</LinkWithArrow> untuk platform lain. </section> diff --git a/apps/site/pages/id/index.mdx b/apps/site/pages/id/index.mdx index cbe152c9a454f..a446694c9353d 100644 --- a/apps/site/pages/id/index.mdx +++ b/apps/site/pages/id/index.mdx @@ -22,8 +22,8 @@ alat baris perintah, dan skrip. <DownloadButton release={release}>Unduh Node.js (LTS)</DownloadButton> <small> Unduhan Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> dengan dukungan jangka panjang (LTS). - Node.js juga dapat diinstal melalui <Link href="/download/package-manager">manajer paket</Link>. + <sup title="Mengunduh penginstal Node.js untuk platform Anda saat ini">1</sup> dengan dukungan jangka panjang (LTS). + Node.js juga dapat diinstal melalui <Link href="/download">manajer paket</Link>. </small> </> )} diff --git a/apps/site/pages/uk/about/governance.md b/apps/site/pages/uk/about/governance.md index 52ca3681d5f8b..5db3273fef333 100644 --- a/apps/site/pages/uk/about/governance.md +++ b/apps/site/pages/uk/about/governance.md @@ -7,25 +7,18 @@ layout: about ## Процес пошуку консенсусу -Node.js дотримується моделі прийняття рішень [знаходження консенсусу][Consensus Seeking]. +Проєкт Node.js використовує модель прийняття рішень [знаходження консенсусу](https://uk.wikipedia.org/wiki/%D0%97%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%B5%D0%BD%D1%81%D1%83%D1%81%D1%83). ## Співавтори -Основний репозиторій GitHub [nodejs/node][] супроводжується співавторами, які на постійній основі обираються іншими чинними співавторами. +Основний репозиторій GitHub [nodejs/node](https://github.com/nodejs/node) супроводжується співавторами, які на постійній основі обираються іншими чинними співавторами. Особи, які здійснюють важливий та цінний внесок, стають співавторами та отримують доступ для commit'ів. Ці особи визначаються іншими співавторами, а їхня номінація на цю роль обговорюється із чинними співавторами. -Щоб дізнатися поточний список співавторів, перегляньте [README.md][]. +Щоб дізнатися поточний список співавторів, перегляньте [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members) проєкту. -Інструкція для співавторів проєкту є на [collaborator-guide.md][]. +Інструкція для співавторів проєкту є на [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md). ## Технічний керівний комітет -Проєкт керується [Технічним керівним комітетом (TSC)][Technical Steering Committee (TSC)], який відповідальний за високорівневе керування проєктом. TSC — це набір активних співавторів, які номінуються іншими чинними членами TSC. - -[consensus seeking]: https://uk.wikipedia.org/wiki/%D0%97%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%B5%D0%BD%D1%81%D1%83%D1%81%D1%83 -[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 +Проєкт керується [Технічним керівним комітетом (TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md), який відповідальний за високорівневе керування проєктом. TSC — це набір активних співавторів, які номінуються іншими чинними членами TSC. diff --git a/apps/site/pages/uk/about/index.mdx b/apps/site/pages/uk/about/index.mdx index 8ace8ffa2c205..772d78a8c3d84 100644 --- a/apps/site/pages/uk/about/index.mdx +++ b/apps/site/pages/uk/about/index.mdx @@ -43,19 +43,13 @@ server.listen(port, hostname, () => { Ця модель використовується на противагу поширенішій моделі, у якій використовуються потоки ОС. Така модель відносно неефективна та важка у використанні. Крім того, користувачі Node.js можуть не хвилюватися про дедлоки, оскільки тут немає блокувань. Майже жодна функція не виконує ввід-вивід безпосередньо, тому процеси не блокуються, за винятком тих випадків, коли ввід-вивід виконується синхронними методами стандартної бібліотеки Node.js. Завдяки відсутності блокувань доцільно створювати масштабовані системи в Node.js. -Якщо деякі терміни вам незрозумілі, перегляньте статтю про -[блокувальні та неблокувальні виклики][blocking vs. non-blocking]. +Якщо деякі терміни вам незрозумілі, ось повна стаття про +[блокувальні та неблокувальні виклики](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking). --- -Node.js надихався системами [Event Machine][] мови Ruby та [Twisted][] мови Python. Проте Node.js зводить подієву модель на новий рівень. Він представляє цикл подій як основу середовища виконання, а не як бібліотеку. В інших системах присутній блокувальний виклик, який починає цикл подій. Зазвичай поведінка визначається функціями зворотного виклику на початку скрипту, після чого відбувається блокувальний виклик, наприклад, `EventMachine::run()`. Node.js не має такого виклику, а просто запускає цикл подій після виконання ввідного скрипту і виходить із циклу, коли всі зворотні виклики були виконані. Така поведінка схожа з поведінкою браузерного JavaScript — цикл подій прихований від користувача. +Node.js надихався системами [Event Machine](https://github.com/eventmachine/eventmachine) мови Ruby та [Twisted](https://twisted.org/) мови Python. Проте Node.js зводить подієву модель на новий рівень. Він представляє цикл подій як основу середовища виконання, а не як бібліотеку. В інших системах присутній блокувальний виклик, який починає цикл подій. Зазвичай поведінка визначається функціями зворотного виклику на початку скрипту, після чого відбувається блокувальний виклик, наприклад, `EventMachine::run()`. Node.js не має такого виклику, а просто запускає цикл подій після виконання ввідного скрипту і виходить із циклу, коли всі зворотні виклики були виконані. Така поведінка схожа з поведінкою браузерного JavaScript — цикл подій прихований від користувача. HTTP є повноцінною частиною Node.js, розроблений з урахуванням потокової передачі даних і низької затримки. Це робить Node.js ідеальним варіантом для створення основи для веббібліотеки або фреймворку. -Те, що Node.js спроєктований без використання потоків, не означає, що ви не можете використовувати багато ядер у своєму середовищі. Дочірні процеси можна створити за допомогою нашого API [`child_process.fork()`][]. Вони спроєктовані так, що з ними можна легко взаємодіяти. Модуль [`cluster`][] побудований на такому самому інтерфейсі, що дозволяє ділити сокети на багато процесів, аби збалансувати навантаження на ядра. - -[блокуючі vs неблокуючі методи]: /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/ +Те, що Node.js спроєктований без використання потоків, не означає, що ви не можете використовувати багато ядер у своєму середовищі. Дочірні процеси можна створити за допомогою нашого API [`child_process.fork()`](https://nodejs.org/api/child_process.html). Вони спроєктовані так, що з ними можна легко взаємодіяти. Модуль [`cluster`](https://nodejs.org/api/cluster.html) побудований на такому самому інтерфейсі, що дозволяє ділити сокети на багато процесів, аби збалансувати навантаження на ядра. diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx index 2b65d70048c87..a1ea7751f6f0d 100644 --- a/apps/site/pages/uk/index.mdx +++ b/apps/site/pages/uk/index.mdx @@ -22,7 +22,7 @@ Node.js® — це безплатне, кросплатформне середо <small> Завантажує Node.js <b>{release.versionWithPrefix}</b> <sup title="Downloads a Node.js installer for your current platform">1</sup> із довгостроковою підтримкою. - Node.js також можна встановити через <Link href="/download/package-manager">менеджери пакетів</Link>. + Node.js також можна встановити через <Link href="/download">менеджери версій</Link>. </small> </> )} diff --git a/apps/site/snippets/es/download/brew.bash b/apps/site/snippets/es/download/brew.bash new file mode 100644 index 0000000000000..4bc5e5c4f4253 --- /dev/null +++ b/apps/site/snippets/es/download/brew.bash @@ -0,0 +1,8 @@ +# Descarga e instala Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Descarga e instala Node.js: +brew install node@${props.release.major} + +# Verifica la versión de Node.js: +node -v # Debería mostrar "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/es/download/choco.bash b/apps/site/snippets/es/download/choco.bash new file mode 100644 index 0000000000000..923ab65a12a5b --- /dev/null +++ b/apps/site/snippets/es/download/choco.bash @@ -0,0 +1,8 @@ +# Descarga e instala Chocolatey: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# Descarga e instala Node.js: +choco install nodejs-lts --version="${props.release.major}" + +# Verifica la versión de Node.js: +node -v # Debería mostrar "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/es/download/devbox.bash b/apps/site/snippets/es/download/devbox.bash new file mode 100644 index 0000000000000..7588b53272371 --- /dev/null +++ b/apps/site/snippets/es/download/devbox.bash @@ -0,0 +1,14 @@ +# Descarga e instala Devbox +curl -fsSL https://get.jetify.com/devbox | bash + +# Inicializa Devbox en tu proyecto +devbox init + +# Descarga e instala Node.js: +devbox add node@${props.release.major} + +# Abre una shell de Devbox +devbox shell + +# Verifica la versión de Node.js: +node -v # Debería mostrar "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/es/download/docker.bash b/apps/site/snippets/es/download/docker.bash new file mode 100644 index 0000000000000..29cd36a9e9ea8 --- /dev/null +++ b/apps/site/snippets/es/download/docker.bash @@ -0,0 +1,11 @@ +# Docker provee instrucciones dedicadas para cada sistema operativo. +# Por favor consulta la documentación oficial en https://www.docker.com/get-started/ + +# Descarga la imagen de Docker de Node.js: +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Crea un contenedor de Node.js e inicia una sesión shell: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Verifica la versión de Node.js: +node -v # Debería mostrar "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/es/download/yarn.bash b/apps/site/snippets/es/download/yarn.bash new file mode 100644 index 0000000000000..0efd9b74efe5a --- /dev/null +++ b/apps/site/snippets/es/download/yarn.bash @@ -0,0 +1,5 @@ +# Descarga e instala Yarn: +corepack enable yarn + +# Verifica la versión de Yarn: +yarn -v From 6b0c683d50856a5e7d7ff06014943f085b417e58 Mon Sep 17 00:00:00 2001 From: Gabriel Pereira Soares <58240821+gabrielpereira3@users.noreply.github.com> Date: Tue, 4 Feb 2025 01:09:31 -0300 Subject: [PATCH 0284/1385] Update transpile.md (#7473) --- apps/site/pages/en/learn/typescript/transpile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/typescript/transpile.md b/apps/site/pages/en/learn/typescript/transpile.md index 62c042d4e902f..4f39ac23412eb 100644 --- a/apps/site/pages/en/learn/typescript/transpile.md +++ b/apps/site/pages/en/learn/typescript/transpile.md @@ -38,7 +38,7 @@ const isJustineAnAdult = isAdult(justine); **Step 2:** Install TypeScript locally using a package manager: -In this example we're going to use npm, you can check our [our introduction to the npm package manager](/learn/getting-started/an-introduction-to-the-npm-package-manager) for more information. +In this example we're going to use npm, you can check [our introduction to the npm package manager](/learn/getting-started/an-introduction-to-the-npm-package-manager) for more information. ```bash displayName="Install TypeScript locally" npm i -D typescript # -D is a shorthand for --save-dev From 4a6d2ffc0d6cf721b1acc9c07892c0084700a6c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 17:00:31 -0600 Subject: [PATCH 0285/1385] meta: bump actions/setup-node from 4.1.0 to 4.2.0 (#7462) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.1.0 to 4.2.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/39370e3970a6d050c480ffad4ff0ed4d3fdee5af...1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-sync.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5ac1b393d69a7..826b966a9ab48 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,7 +89,7 @@ jobs: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- - name: Set up Node.js - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 0ed75f350419f..18d6b3fbbacee 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -95,7 +95,7 @@ jobs: cache-lint- - name: Set up Node.js - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' @@ -173,7 +173,7 @@ jobs: fetch-depth: 0 - name: Set up Node.js - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 973ee4deb7ef4..317ec1a7c9a11 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -94,7 +94,7 @@ jobs: cache-lint- - name: Set up Node.js - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' From dcdd2a6baccecb8c87e5df5da823c03e0d89336f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 17:29:32 -0600 Subject: [PATCH 0286/1385] meta: bump actions/cache from 4.1.2 to 4.2.0 (#7461) Bumps [actions/cache](https://github.com/actions/cache) from 4.1.2 to 4.2.0. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/6849a6489940f00c2f30c0fb92c6274307ccb58a...1bd1e32a3bdc45362d1e726936510720a7c30a57) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-sync.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 826b966a9ab48..9a52acb0cefc4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: # regardless of having code changes or not fetch-depth: 1 - - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + - uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: # See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node path: | diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 18d6b3fbbacee..6c63c67d320ee 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -76,7 +76,7 @@ jobs: 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 + uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: | .turbo/cache @@ -129,7 +129,7 @@ jobs: (github.event_name == 'pull_request_target' && startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') - uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: | .turbo/cache diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 317ec1a7c9a11..1a88ae3908d9a 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -78,7 +78,7 @@ jobs: ref: refs/pull/${{ needs.synchronize-with-crowdin.outputs.pull_request_number }}/head - name: Restore Lint Cache - uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: | apps/site/.eslintmdcache @@ -123,7 +123,7 @@ jobs: branch: 'chore/crowdin' - name: Save Lint Cache - uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: | apps/site/.eslintmdcache From 021bf3cdf2ed70f2be5d6f19b7497ceca7506b6c Mon Sep 17 00:00:00 2001 From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Date: Wed, 5 Feb 2025 17:16:44 +0100 Subject: [PATCH 0287/1385] feat(learn): add article for publishing a typescript package (#7279) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(learn): add article for publishing a typescript package * WIP: initial content for article * WIP: polish sample code, & dir overviews * rename article to be more specific * fix unsuported lang * fix navigation.json Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fix links * extract note from codeblock into article * tidy codeblocks * wordsmith * fixup!: remove controversial "optionalDependencies" * fixup!: wordsmith & align code samples * fixup!: tsconfig * fixup!: switch sequence of repo vs package * fixup!: note types and unit tests are complementary * fixup!: `IDE` → `editor` * fixup!: note file extensions in package.json fields (js vs ts) * fixup!: add alternative samples & configs * fixup!: remove version from npm links * fixup!: shorter code sample display names * fixup!: add note about `NPM_TOKEN` * fixup!: switch node version matrix to LTS matrix action * fixup!: shorten displayNames (they were breaking page layout) * fixup!: update references to samples * fixup!: replace `npm publish` step from `publish.yml` with note * fixup!: replace ref to TS's own publishing guide with generic intro * fixup!: add note about `erasableSyntaxOnly` * fixup!: restore box vert lines * fixup!: add "dist output" tsconfig sample * fixup!: handle flavours of `.ts` file extensions in `.gitignore` sample * fixup!: correct code block lang for gitignore samples * fixup!: remove extra word * enable `ini` lang in codeblocks * fixup!: expand description of article's purpose * fixup!: adjust `tsconfig`s to support oldest node LTS version * fixup!: ts project → ts package --------- Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Co-authored-by: Augustin Mauroy <augustin.mauroy@outlook.fr> --- apps/site/navigation.json | 4 + .../typescript/publishing-a-ts-package.md | 332 ++++++++++++++++++ apps/site/shiki.config.mjs | 4 + packages/i18n/locales/en.json | 3 +- 4 files changed, 342 insertions(+), 1 deletion(-) create mode 100644 apps/site/pages/en/learn/typescript/publishing-a-ts-package.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 850e6899a0681..b249b40153447 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -209,6 +209,10 @@ "runNatively": { "link": "/learn/typescript/run-natively", "label": "components.navigation.learn.typescript.links.runNatively" + }, + "publishingTSPackage": { + "link": "/learn/typescript/publishing-a-ts-package", + "label": "components.navigation.learn.typescript.links.publishingTSPackage" } } }, diff --git a/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md b/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md new file mode 100644 index 0000000000000..8048c0981eb43 --- /dev/null +++ b/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md @@ -0,0 +1,332 @@ +--- +title: Publishing a TypeScript package +layout: learn +authors: JakobJingleheimer +--- + +# Publishing a TypeScript package + +This article covers items regarding TypeScript publishing specifically. Publishing means distributed as a package via npm (or other package manager); this is not about compiling an app / server to be run in production (such as a PWA and/or endpoint server). + +Some important things to note: + +- Everything from [Publishing a package](../modules/publishing-a-package) applies here. + + - Fields like `main` operate on _published_ content, so when TypeScript source-code is transpiled to JavaScript, JavaScript is the published content and `main` would point to a JavaScript file with a JavaScript file extension (ex `main.ts` → `"main": "main.js"`). + + - Fields like `scripts.test` operate on source-code, so they would use the file extensions of the source code (ex `"test": "node --test './src/**/*.test.ts'`). + +- Node runs TypeScript code via a process called "[type stripping](https://nodejs.org/api/typescript.html#type-stripping)", wherein node (via [Amaro](https://github.com/nodejs/amaro)) removes TypeScript-specific syntax, leaving behind vanilla JavaScript (which node already understands). This behaviour is enabled by default as of node version 23.6.0. + + - Node does **not** strip types in `node_modules` because it can cause significant performance issues for the official TypeScript compiler (`tsc`) and parts of VS Code, so the TypeScript maintainers would like to discourage people publishing raw TypeScript, at least for now. + +- Consuming TypeScript-specific features like `enum` in node still requires a flag ([`--experimental-transform-types`](https://nodejs.org/api/typescript.html#typescript-features)). There are often better alternatives for these anyway. + + - To ensure TypeScript-specific features are _not_ present (so your code can just run in node), set the [`erasableSyntaxOnly`](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8-beta/#the---erasablesyntaxonly-option) config option in TypeScript version 5.8+. + +- Use [dependabot](https://docs.github.com/en/code-security/dependabot) to keep your dependencies current, including those in github actions. It's a very easy set-and-forget configuration. + +- `.nvmrc` comes from [NVM](https://github.com/nvm-sh/nvm), a multi-version manager for node. It allows you to specify the version of node the project should generally use. + +A directory overview of a repository would look something like: + +```text displayName="Files co-located" +example-ts-pkg/ +├ .github/ +│ ├ workflows/ +│ │ ├ ci.yml +│ │ └ publish.yml +│ └ dependabot.yml +├ src/ +│ ├ foo.fixture.js +│ ├ main.ts +│ ├ main.test.ts +│ ├ some-util.ts +│ └ some-util.test.ts +├ LICENSE +├ package.json +├ README.md +└ tsconfig.json +``` + +```text displayName="Files co-located but segregated" +example-ts-pkg/ +├ .github/ +│ ├ workflows/ +│ │ ├ ci.yml +│ │ └ publish.yml +│ └ dependabot.yml +├ src/ +│ ├ __test__/ +│ │ ├ foo.fixture.js +│ │ ├ main.test.ts +│ ├ main.ts +│ └ some-util.ts +│ │ ├ __test__ +│ │ └ some-util.test.ts +│ │ └ some-util.ts +├ LICENSE +├ package.json +├ README.md +└ tsconfig.json +``` + +```text displayName="'src' and 'test' fully segregated" +example-ts-pkg/ +├ .github/ +│ ├ workflows/ +│ │ ├ ci.yml +│ │ └ publish.yml +│ └ dependabot.yml +├ src/ +│ ├ main.ts +│ ├ some-util.ts +├ test/ +│ ├ foo.fixture.js +│ ├ main.ts +│ └ some-util.ts +├ LICENSE +├ package.json +├ README.md +└ tsconfig.json +``` + +And a directory overview of its published package would look something like: + +```text displayName="Fully flat" +example-ts-pkg/ +├ LICENSE +├ main.d.ts +├ main.d.ts.map +├ main.js +├ package.json +├ README.md +├ some-util.d.ts +├ some-util.d.ts.map +└ some-util.js +``` + +```text displayName="With 'dist'" +example-ts-pkg/ +├ dist/ +│ ├ main.d.ts +│ ├ main.d.ts.map +│ ├ main.js +│ ├ some-util.d.ts +│ ├ some-util.d.ts.map +│ └ some-util.js +├ LICENSE +├ package.json +└ README.md +``` + +A note about directory organisation: There are a few common practices for placing tests. Principle of least knowledge says to co-locate them (put them adjacent to implementation). Sometimes, that's in the same directory, or within a drawer like a `__test__` (also adjacent to the implementation, "Files co-located but segregated"). Alternatively, some opt to create a `test/` sibling to `src/` ("'src' and 'test' fully segregated"), either with a mirrored structure or a "junk drawer". + +## What to do with your types + +### Treat types like a test + +The purpose of types is to warn an implementation will not work: + +```ts +const foo = 'a'; +const bar: number = 1 + foo; +// ^^^ Type 'string' is not assignable to type 'number'. +``` + +TypeScript has warned that the above code will not behave as intended, just like a unit test warns that code does not behave as intended. They are complementary and verify different things—you should have both. + +Your editor (ex VS Code) likely has built-in support for TypeScript, displaying errors as you work. If not, and/or you missed those, CI will have your back. + +The following [GitHub Action](https://github.com/features/actions) sets up a CI task to automatically check (and require) types pass inspection for a PR into the `main` branch. + +```yaml displayName=".github/workflows/ci.yml" +# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json + +name: Tests + +on: + pull_request: + branches: ['*'] + +jobs: + check-types: + # Separate these from tests because + # they are platform and node-version independent + # and need be run only once. + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + cache: 'npm' + - name: npm clean install + run: npm ci + # You may want to run a lint check here too + - run: node --run types:check + + get-matrix: + # Automatically pick active LTS versions + runs-on: ubuntu-latest + outputs: + latest: ${{ steps.set-matrix.outputs.requireds }} + steps: + - uses: ljharb/actions/node/matrix@main + id: set-matrix + with: + versionsAsRoot: true + type: majors + preset: '>= 22' # glob is not backported below 22.x + + test: + needs: [get-matrix] + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + node-version: ${{ fromJson(needs.get-matrix.outputs.latest) }} + os: + - macos-latest + - ubuntu-latest + - windows-latest + + steps: + - uses: actions/checkout@v4 + - name: Use node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: npm clean install + run: npm ci + - run: node --run test +``` + +```json displayName="package.json" +{ + "name": "example-ts-pkg", + "scripts": { + "test": "node --test './src/**/*.test.ts'", + "types:check": "tsc --noEmit" + }, + "devDependencies": { + "typescript": "^5.7.2" + } +} +``` + +```json displayName="tsconfig.json (flat output)" +{ + "compilerOptions": { + "allowArbitraryExtensions": true, + "declaration": true, + "declarationMap": true, + "lib": ["es2023"], + "module": "NodeNext", + "outDir": "./", + "resolveJsonModule": true, + "rewriteRelativeImportExtensions": true, + "target": "es2022" + }, + // These may be different for your repo: + "include": ["./src"], + "exclude": ["**/*/*.test.*", "**/*.fixture.*"] +} +``` + +```json displayName="tsconfig.json ('dist' output)" +{ + "compilerOptions": { + "allowArbitraryExtensions": true, + "declaration": true, + "declarationMap": true, + "lib": ["es2023"], + "module": "NodeNext", + "outDir": "./dist", + "resolveJsonModule": true, + "rewriteRelativeImportExtensions": true, + "target": "es2022" + }, + // These may be different for your repo: + "include": ["./src"], + "exclude": ["**/*/*.test.*", "**/*.fixture.*"] +} +``` + +Note that test files may well have a different `tsconfig.json` applied (hence why they are excluded in the above sample). + +### Generate type declarations + +Type declarations (`.d.ts` and friends) provide type information as a sidecar file, allowing the execution code to be vanilla JavaScript whilst still having types. + +Since these are generated based on source code, they can be built as part of your publication process and do not need to be checked into your repository. + +Take the following example, where the type declarations are generated just before publishing to the NPM registry. + +```yaml displayName=".github/workflows/publish.yml" +# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json + +# This is mostly boilerplate. + +name: Publish to NPM +on: + push: + tags: + - '**@*' + +jobs: + build: + runs-on: ubuntu-latest + + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + registry-url: 'https://registry.npmjs.org' + - run: npm ci + + # - name: Publish to NPM + # run: … npm publish … +``` + +```diff displayName="package.json" +{ + "name": "example-ts-pkg", + "scripts": { ++ "prepack": "tsc", + "types:check": "tsc --noEmit" + } +} +``` + +```ini displayName=".npmignore" +*.*ts # foo.cts foo.mts foo.ts +!*.d.*ts +*.fixture.* +``` + +```ini displayName=".npmignore ('dist' output)" +src +test +``` + +You'll want to publish a package compiled to support all Node.js LTS versions since you don't know which version the consumer will be running; the `tsconfig`s in this article support node 18.x and later. + +`npm publish` will automatically run [`prepack` beforehand](https://docs.npmjs.com/cli/using-npm/scripts#npm-publish). `npm` will also run `prepack` automatically before `npm pack --dry-run` (so you can easily see what your published package will be without actually publishing it). **Beware**, [`node --run` does _not_ do that](../command-line/run-nodejs-scripts-from-the-command-line.md#using-the---run-flag). You can't use `node --run` for this step, so that caveat does not apply here, but it can for other steps. + +The steps to actually publish to npm will be included in a separate article (there are several pros and cons beyond the scope of this article). + +#### Breaking this down + +Generating type declarations is deterministic: you'll get the same output from the same input, every time. So there is no need to commit these to git. + +[`npm publish`](https://docs.npmjs.com/cli/commands/npm-publish) grabs everything applicable and available at the moment the command is run; so generating type declarations immediately before means those are available and will get picked up. + +By default, `npm publish` grabs (almost) everything (see [Files included in package](https://docs.npmjs.com/cli/commands/npm-publish#files-included-in-package)). In order to keep your published package minimal (see the "Heaviest Objects in the Universe" meme about `node_modules`), you want to exclude certain files (like tests and test fixtures) from from packaging. Add these to the opt-out list specified in [`.npmignore`](https://docs.npmjs.com/cli/using-npm/developers#keeping-files-out-of-your-package); ensure the `!*.d.ts` exception is listed, or the generated type declartions will not be published! Alternatively, you can use [package.json "files"](https://docs.npmjs.com/cli/configuring-npm/package-json#files) to create an opt-in list. diff --git a/apps/site/shiki.config.mjs b/apps/site/shiki.config.mjs index d28ee4d3a8ecf..f940a9311d686 100644 --- a/apps/site/shiki.config.mjs +++ b/apps/site/shiki.config.mjs @@ -2,12 +2,14 @@ import diffLanguage from 'shiki/langs/diff.mjs'; import dockerLanguage from 'shiki/langs/docker.mjs'; +import iniLanguage from 'shiki/langs/ini.mjs'; import javaScriptLanguage from 'shiki/langs/javascript.mjs'; import jsonLanguage from 'shiki/langs/json.mjs'; import powershellLanguage from 'shiki/langs/powershell.mjs'; import shellScriptLanguage from 'shiki/langs/shellscript.mjs'; import shellSessionLanguage from 'shiki/langs/shellsession.mjs'; import typeScriptLanguage from 'shiki/langs/typescript.mjs'; +import yamlLanguage from 'shiki/langs/yaml.mjs'; import shikiNordTheme from 'shiki/themes/nord.mjs'; /** @@ -22,6 +24,7 @@ export const LANGUAGES = [ // that are commonly used (non-standard aliases) within our API docs and Blog posts aliases: javaScriptLanguage[0].aliases.concat('cjs', 'mjs'), }, + ...iniLanguage, ...jsonLanguage, ...typeScriptLanguage, ...shellScriptLanguage, @@ -29,6 +32,7 @@ export const LANGUAGES = [ ...shellSessionLanguage, ...dockerLanguage, ...diffLanguage, + ...yamlLanguage, ]; // This is the default theme we use for our Shiki Syntax Highlighter diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 432f9040ba20b..b00f4981e6ca3 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -52,7 +52,8 @@ "introduction": "Introduction to TypeScript", "transpile": "Running TypeScript code using transpilation", "run": "Running TypeScript with a runner", - "runNatively": "Running TypeScript Natively" + "runNatively": "Running TypeScript Natively", + "publishingTSPackage": "Publishing a TypeScript package" } }, "asynchronousWork": { From 0d128a73d10848e81f613b48435493fe640be3e9 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <augustin.mauroy@outlook.fr> Date: Wed, 5 Feb 2025 17:19:06 +0100 Subject: [PATCH 0288/1385] content(learn/typescript): revise introduction (#7470) * content(learn/typescript): revise intro * content(learn/typescript): revise intro bis * Apply suggestions from code review Co-authored-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> * fix: code format --------- Signed-off-by: Augustin Mauroy <augustin.mauroy@outlook.fr> Co-authored-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> --- .../pages/en/learn/typescript/introduction.md | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/apps/site/pages/en/learn/typescript/introduction.md b/apps/site/pages/en/learn/typescript/introduction.md index 4cd976f2fb581..45f208d7694d0 100644 --- a/apps/site/pages/en/learn/typescript/introduction.md +++ b/apps/site/pages/en/learn/typescript/introduction.md @@ -44,6 +44,48 @@ The first part (with the `type` keyword) is responsible for declaring our custom There are additional things about this example that you should know. Firstly, if we do not comply with the declared types, TypeScript will inform us that something is wrong and prevent misuse. Secondly, not everything must be typed explicitly—TypeScript infers types for us. For example, the variable `isJustineAnAdult` is of type `boolean` even if we didn't type it explicitly, and `justine` would be a valid argument for our function even though we didn't declare this variable as of `User` type. +## What does TypeScript consist of? + +TypeScript consists of two main components: the code itself and type definitions. + +### TypeScript Code + +The code part is regular JavaScript with additional TypeScript-specific syntax for type annotations. When TypeScript code is compiled, all the TypeScript-specific parts are removed, resulting in clean JavaScript that can run in any environment. For example: + +```ts displayName="example.ts" +function greet(name: string) { + console.log(`Hello, ${name}!`); +} +``` + +### Type Definitions + +Type definitions describe the shape of existing JavaScript code. They are usually stored in `.d.ts` files and don't contain any actual implementation—they only describe the types. These definitions are essential for interoperability with JavaScript: code is not usually distributed as TypeScript, but instead transpiled to JavaScript that includes sidecar type definition files. + +For example, when you use Node.js with TypeScript, you'll need type definitions for Node.js APIs. This is available via `@types/node`. Install it using: + +```bash +npm add --save-dev @types/node +``` + +These type definitions allow TypeScript to understand Node.js APIs and provide proper type checking and autocompletion when you use functions like `fs.readFile` or `http.createServer`. For example: + +```js +import * as fs from 'fs'; + +fs.readFile('example.txt', 'foo', (err, data) => { + // ^^^ Argument of type '"foo"' is not assignable to parameter of type … + if (err) throw err; + console.log(data); +}); +``` + +Many popular JavaScript libraries have their type definitions available under the `@types` namespace, maintained by the DefinitelyTyped community. This enables seamless integration of existing JavaScript libraries with TypeScript projects. + +### Transform Capabilities + +TypeScript also includes powerful transformation capabilities, particularly for JSX (used in React and similar frameworks). The TypeScript compiler can transform JSX syntax into regular JavaScript, similar to how Babel works. While we won't cover these transformation features in these articles, it's worth noting that TypeScript isn't only a tool for type checking—it's also a build tool for transforming modern JavaScript syntax into compatible versions for different environments. + ## How to run TypeScript code Okay, so we have some TypeScript code. Now how do we run it? From de6310322d573f4ae62ef5b3040e9890bb1fa135 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:04:30 -0600 Subject: [PATCH 0289/1385] meta: bump actions/upload-artifact from 4.4.3 to 4.6.0 (#7459) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.3 to 4.6.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882...65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 57b8ae1b695b3..898c14dd4c61c 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -51,7 +51,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: Upload Artifacts - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: SARIF file path: results.sarif From b4695f6079aceba8269f190235ae9d7288b23662 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 17:05:16 +0000 Subject: [PATCH 0290/1385] meta: bump github/codeql-action from 3.27.5 to 3.28.8 (#7460) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.27.5 to 3.28.8. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/f09c1c0a94de965c15400f5634aa42fac8fb8f88...dd746615b3b9d728a6a37ca2045b68ca76d4841a) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c1f303ddd70b4..1c815bb7c7554 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/init@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/autobuild@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/analyze@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 898c14dd4c61c..6c49edd554fb6 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/upload-sarif@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 with: sarif_file: results.sarif From 16f5b79f9b8fbcf69a5381c80ff8a94a210cc0fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:29:05 -0600 Subject: [PATCH 0291/1385] meta: bump step-security/harden-runner from 2.10.1 to 2.10.4 (#7457) Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.10.1 to 2.10.4. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/v2.10.1...cb605e52c26070c328afc4562f0b4ada7618a84e) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 6 +++--- .github/workflows/pull-request-label.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr-lint.yml | 2 +- .github/workflows/translations-sync.yml | 4 ++-- .github/workflows/translations-upload.yml | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a52acb0cefc4..55f0009c4471d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -46,7 +46,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1c815bb7c7554..5c7a6700d4dba 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 715279ce591b8..acb92494547d8 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index 0e5d5365f22c4..a794a60f2149a 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 6c63c67d320ee..49e95b3da52c3 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -37,7 +37,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit @@ -159,7 +159,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/pull-request-label.yml b/.github/workflows/pull-request-label.yml index e04792d09dd9b..e3a4a24e759a2 100644 --- a/.github/workflows/pull-request-label.yml +++ b/.github/workflows/pull-request-label.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6c49edd554fb6..454727663dc48 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/translations-pr-lint.yml b/.github/workflows/translations-pr-lint.yml index 6e7b0767f43c9..661d5ae28dcd5 100644 --- a/.github/workflows/translations-pr-lint.yml +++ b/.github/workflows/translations-pr-lint.yml @@ -42,7 +42,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 1a88ae3908d9a..acd8d6686c86b 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -28,7 +28,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit @@ -67,7 +67,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml index a70694469372c..c791183731f78 100644 --- a/.github/workflows/translations-upload.yml +++ b/.github/workflows/translations-upload.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit From d230a45d880967c8e820b40655ab5809fb996b03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:46:26 -0600 Subject: [PATCH 0292/1385] meta: bump stefanzweifel/git-auto-commit-action from 5.0.1 to 5.1.0 (#7456) Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 5.0.1 to 5.1.0. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/8621497c8c39c72f3e2a999a26b4ca1b5058a842...e348103e9026cc0eee72ae06630dbe30c8bf7a79) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .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 acd8d6686c86b..09813283ed6e0 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -116,7 +116,7 @@ jobs: 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 + uses: stefanzweifel/git-auto-commit-action@e348103e9026cc0eee72ae06630dbe30c8bf7a79 # v5.1.0 with: commit_options: '--no-verify --signoff' commit_message: 'chore: automated format of translated files' From 20384c2dff69e48fe015237cd9bbacef964e6c7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:59:39 -0600 Subject: [PATCH 0293/1385] meta: bump crowdin/github-action from 2.3.0 to 2.5.2 (#7458) Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.3.0 to 2.5.2. - [Release notes](https://github.com/crowdin/github-action/releases) - [Commits](https://github.com/crowdin/github-action/compare/2d540f18b0a416b1fbf2ee5be35841bd380fc1da...b811e495831e49ff516e7c801f7c5546879b9ee7) --- updated-dependencies: - dependency-name: crowdin/github-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/translations-sync.yml | 2 +- .github/workflows/translations-upload.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 09813283ed6e0..105f296166722 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -37,7 +37,7 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: Crowdin PR - uses: crowdin/github-action@2d540f18b0a416b1fbf2ee5be35841bd380fc1da # v2.3.0 + uses: crowdin/github-action@b811e495831e49ff516e7c801f7c5546879b9ee7 # v2.5.2 id: crowdin_pr with: # do not upload anything - this is a one-way operation download diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml index c791183731f78..de35b39b25bf1 100644 --- a/.github/workflows/translations-upload.yml +++ b/.github/workflows/translations-upload.yml @@ -27,7 +27,7 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: crowdin action - uses: crowdin/github-action@2d540f18b0a416b1fbf2ee5be35841bd380fc1da # v2.3.0 + uses: crowdin/github-action@b811e495831e49ff516e7c801f7c5546879b9ee7 # v2.5.2 with: # only upload sources, ensuring this is a one-way operation upload_sources: true From 082d905d5ca6ae5e367e72280be64f8d6ac407b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:05:52 +0100 Subject: [PATCH 0294/1385] meta: bump shiki from 1.24.4 to 2.2.0 (#7455) Bumps [shiki](https://github.com/shikijs/shiki/tree/HEAD/packages/shiki) from 1.24.4 to 2.2.0. - [Release notes](https://github.com/shikijs/shiki/releases) - [Commits](https://github.com/shikijs/shiki/commits/v2.2.0/packages/shiki) --- updated-dependencies: - dependency-name: shiki dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 191 +++++++++++++++++++++++++++++++---------- 2 files changed, 146 insertions(+), 47 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 9c9d5a018a1b7..b3fe9587b75e2 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -69,7 +69,7 @@ "remark-gfm": "~4.0.0", "remark-reading-time": "~2.0.1", "semver": "~7.6.3", - "shiki": "~1.24.0", + "shiki": "~2.2.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 63d93b7745a74..5ea8bfd6cb904 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,7 +80,7 @@ "remark-gfm": "~4.0.0", "remark-reading-time": "~2.0.1", "semver": "~7.6.3", - "shiki": "~1.24.0", + "shiki": "~2.2.0", "sval": "^0.5.2", "tailwindcss": "~3.4.15", "unist-util-visit": "~5.0.0", @@ -3888,6 +3888,85 @@ "sse.js": "^2.5.0" } }, + "node_modules/@orama/wc-components/node_modules/@shikijs/core": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@orama/wc-components/node_modules/@shikijs/engine-javascript": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } + }, + "node_modules/@orama/wc-components/node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@orama/wc-components/node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@orama/wc-components/node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@orama/wc-components/node_modules/@shikijs/types": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@orama/wc-components/node_modules/shiki": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, "node_modules/@oramacloud/client": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-2.1.4.tgz", @@ -4733,54 +4812,72 @@ } }, "node_modules/@shikijs/core": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.4.tgz", - "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.2.0.tgz", + "integrity": "sha512-U+vpKdsQDWuX3fPTCkSc8XPX9dCaS+r+qEP1XhnU30yxRFo2OxHJmY2H5rO1q+v0zB5R2vobsxEFt5uPf31CGQ==", "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.24.4", - "@shikijs/engine-oniguruma": "1.24.4", - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", + "@shikijs/engine-javascript": "2.2.0", + "@shikijs/engine-oniguruma": "2.2.0", + "@shikijs/types": "2.2.0", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz", - "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.2.0.tgz", + "integrity": "sha512-96SpZ4V3UVMtpSPR5QpmU395CNrQiRPszXK62m8gKR2HMA0653ruce7omS5eX6EyAyFSYHvBWtTuspiIsHpu4A==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", - "oniguruma-to-es": "0.8.1" + "@shikijs/types": "2.2.0", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.3.0" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz", - "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.2.0.tgz", + "integrity": "sha512-wowCKwkvPFFMXFkiKK/a2vs5uTCc0W9+O9Xcu/oqFP6VoDFe14T8u/D+Rl4dCJJSOyeynP9mxNPJ82T5JHTNCw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.2.0", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.2.0.tgz", + "integrity": "sha512-RSWLH3bnoyG6O1kZ2msh5jOkKKp8eENwyT30n62vUtXfp5cxkF/bpWPpO+p4+GAPhL2foBWR2kOerwkKG0HXlQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1" + "@shikijs/types": "2.2.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.2.0.tgz", + "integrity": "sha512-8Us9ZF2mV9kuh+4ySJ9MzrUDIpc2RIkRfKBZclkliW1z9a0PlGU2U7fCkItZZHpR5e4/ft5BzuO+GDqombC6Aw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.2.0" } }, "node_modules/@shikijs/types": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.4.tgz", - "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.2.0.tgz", + "integrity": "sha512-wkZZKs80NtW5Jp/7ONI1j7EdXSatX2BKMS7I01wliDa09gJKHkZyVqlEMRka/mjT5Qk9WgAyitoCKgGgbsP/9g==", "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^9.3.1", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz", - "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", + "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", "license": "MIT" }, "node_modules/@sinclair/typebox": { @@ -18766,14 +18863,14 @@ } }, "node_modules/oniguruma-to-es": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz", - "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", "license": "MIT", "dependencies": { "emoji-regex-xs": "^1.0.0", - "regex": "^5.0.2", - "regex-recursion": "^5.0.0" + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" } }, "node_modules/open": { @@ -20433,21 +20530,21 @@ "license": "MIT" }, "node_modules/regex": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.0.tgz", - "integrity": "sha512-KNCzMdCkhhFKcWnqKIixAKDRzERQ/RTvENLRuLSqNFYdvn/XEgKSrpBHluYqnQxuDnzOB+iZRNGidQeEVe9upw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" } }, "node_modules/regex-recursion": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.0.tgz", - "integrity": "sha512-8PNVYEQEw5fyIGDuLqXMP5WSSjNey+9q+pUFdVqBbPxo9PL8nl7ucZRa3jzooTz7D6wMOHDrCMdwc6fqL60EXw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", "license": "MIT", "dependencies": { - "regex": "^5.1.0", + "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, @@ -22217,16 +22314,18 @@ } }, "node_modules/shiki": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.4.tgz", - "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.2.0.tgz", + "integrity": "sha512-3uoZBmc+zpd2JOEeTvKP/vK5UVDDe8YiigkT9flq+MV5Z1MKFiUXfbLIvHfqcJ+V90StDiP1ckN97z1WlhC6cQ==", "license": "MIT", "dependencies": { - "@shikijs/core": "1.24.4", - "@shikijs/engine-javascript": "1.24.4", - "@shikijs/engine-oniguruma": "1.24.4", - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", + "@shikijs/core": "2.2.0", + "@shikijs/engine-javascript": "2.2.0", + "@shikijs/engine-oniguruma": "2.2.0", + "@shikijs/langs": "2.2.0", + "@shikijs/themes": "2.2.0", + "@shikijs/types": "2.2.0", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, From 1be29bfb70604354d457c9f6b642b321482b5fcc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Feb 2025 12:34:40 +0100 Subject: [PATCH 0295/1385] meta: bump the storybook group with 6 updates (#7447) 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.7` | `8.5.2` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.4.7` | `8.5.2` | | [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `8.4.7` | `8.5.2` | | [@storybook/addon-viewport](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/viewport) | `8.4.7` | `8.5.2` | | [@storybook/react-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-webpack5) | `8.4.7` | `8.5.2` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.4.7` | `8.5.2` | Updates `@storybook/addon-controls` from 8.4.7 to 8.5.2 - [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.5.2/code/addons/controls) Updates `@storybook/addon-interactions` from 8.4.7 to 8.5.2 - [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.5.2/code/addons/interactions) Updates `@storybook/addon-themes` from 8.4.7 to 8.5.2 - [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.5.2/code/addons/themes) Updates `@storybook/addon-viewport` from 8.4.7 to 8.5.2 - [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.5.2/code/addons/viewport) Updates `@storybook/react-webpack5` from 8.4.7 to 8.5.2 - [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.5.2/code/frameworks/react-webpack5) Updates `storybook` from 8.4.7 to 8.5.2 - [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.5.2/code/lib/cli) --- updated-dependencies: - dependency-name: "@storybook/addon-controls" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: "@storybook/addon-interactions" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: "@storybook/addon-themes" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: "@storybook/addon-viewport" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: "@storybook/react-webpack5" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook - dependency-name: storybook dependency-type: direct:development update-type: version-update:semver-minor dependency-group: storybook ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 10 +- package-lock.json | 482 +++++++++++++++++++++-------------------- 2 files changed, 254 insertions(+), 238 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index b3fe9587b75e2..5728a2ae4a675 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -79,13 +79,13 @@ "devDependencies": { "@eslint/compat": "~1.2.3", "@next/eslint-plugin-next": "15.1.3", - "@storybook/addon-controls": "^8.4.6", - "@storybook/addon-interactions": "^8.4.6", + "@storybook/addon-controls": "^8.5.2", + "@storybook/addon-interactions": "^8.5.2", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.4.6", - "@storybook/addon-viewport": "^8.4.6", + "@storybook/addon-themes": "^8.5.2", + "@storybook/addon-viewport": "^8.5.2", "@storybook/addon-webpack5-compiler-swc": "^2.0.0", - "@storybook/react-webpack5": "^8.4.6", + "@storybook/react-webpack5": "^8.5.2", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.1.0", "@testing-library/user-event": "~14.5.2", diff --git a/package-lock.json b/package-lock.json index 5ea8bfd6cb904..10496d5fa328d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,13 +90,13 @@ "devDependencies": { "@eslint/compat": "~1.2.3", "@next/eslint-plugin-next": "15.1.3", - "@storybook/addon-controls": "^8.4.6", - "@storybook/addon-interactions": "^8.4.6", + "@storybook/addon-controls": "^8.5.2", + "@storybook/addon-interactions": "^8.5.2", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.4.6", - "@storybook/addon-viewport": "^8.4.6", + "@storybook/addon-themes": "^8.5.2", + "@storybook/addon-viewport": "^8.5.2", "@storybook/addon-webpack5-compiler-swc": "^2.0.0", - "@storybook/react-webpack5": "^8.4.6", + "@storybook/react-webpack5": "^8.5.2", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.1.0", "@testing-library/user-event": "~14.5.2", @@ -4932,9 +4932,9 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.7.tgz", - "integrity": "sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.5.2.tgz", + "integrity": "sha512-wkzw2vRff4zkzdvC/GOlB2PlV0i973u8igSLeg34TWNEAa4bipwVHnFfIojRuP9eN1bZL/0tjuU5pKnbTqH7aQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4947,19 +4947,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.7" + "storybook": "^8.5.2" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.7.tgz", - "integrity": "sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.5.2.tgz", + "integrity": "sha512-Gn9Egk2OS0BkkHd671Y0pIqBr4noAOLUfnpxhHE8r0Tt7FmJFeVSN+dqK7hQeUmKL5jdSY25FTYROg65JmtGOA==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.7", - "@storybook/test": "8.4.7", + "@storybook/instrumenter": "8.5.2", + "@storybook/test": "8.5.2", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -4968,7 +4968,160 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.7" + "storybook": "^8.5.2" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/@storybook/csf": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.12.tgz", + "integrity": "sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/@storybook/instrumenter": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.5.2.tgz", + "integrity": "sha512-BbaUw9GXVzRg3Km95t2mRu4W6C1n1erjzll5maBaVe2+lV9MbCvBcdYwGUgjFNlQ/ETgq6vLfLOEtziycq/B6g==", + "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.5.2" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/@storybook/test": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.5.2.tgz", + "integrity": "sha512-F5WfD75m25ZRS19cSxCzHWJ/rH8jWwIjhBlhU+UW+5xjnTS1cJuC1yPT/5Jw0/0Aj9zG1atyfBUYnNHYtsBDYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf": "0.1.12", + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.5.2", + "@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.5.2" + } + }, + "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/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/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/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/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, + "license": "MIT" + }, + "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-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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/@storybook/addon-styling-webpack": { @@ -4985,9 +5138,9 @@ } }, "node_modules/@storybook/addon-themes": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.7.tgz", - "integrity": "sha512-MZa3eWTz0b3BQvF71WqLqvEYzDtbMhQx1IIluWBMMGzJ4sWBzLX85LoNMUlHsNd4EhEmAZ1xQQFIJpDWTBx0nQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.5.2.tgz", + "integrity": "sha512-MTJkPwXqLK2Co186EUw2wr+1CpVRMbuWsOmQvhMHeU704kQtSYKkhu/xmaExuDYMupn5xiKG0p8Pt5Ck3fEObQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4998,13 +5151,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.7" + "storybook": "^8.5.2" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.7.tgz", - "integrity": "sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.5.2.tgz", + "integrity": "sha512-W+7nrMQmxHcUNGsXjmb/fak1mD0a5vf4y1hBhSM7/131t8KBsvEu4ral8LTUhc4ZzuU1eIUM0Qth7SjqHqm5bA==", "dev": true, "license": "MIT", "dependencies": { @@ -5015,7 +5168,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.7" + "storybook": "^8.5.2" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { @@ -5032,14 +5185,13 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.7.tgz", - "integrity": "sha512-O8LpsQ+4g2x5kh7rI9+jEUdX8k1a5egBQU1lbudmHchqsV0IKiVqBD9LL5Gj3wpit4vB8coSW4ZWTFBw8FQb4Q==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.5.2.tgz", + "integrity": "sha512-P4zpavhy9cL1GtITlFp1amTgNSfaQyi60jJwi7joUj0z4RRyBr8YpGi5il9PlaxiY2HROsCdKJftTNzWn058yA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.7", - "@types/node": "^22.0.0", + "@storybook/core-webpack": "8.5.2", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", @@ -5069,7 +5221,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.7" + "storybook": "^8.5.2" }, "peerDependenciesMeta": { "typescript": { @@ -5078,9 +5230,9 @@ } }, "node_modules/@storybook/components": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.7.tgz", - "integrity": "sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.5.2.tgz", + "integrity": "sha512-o5vNN30sGLTJBeGk5SKyekR4RfTpBTGs2LDjXGAmpl2MRhzd62ix8g+KIXSR0rQ55TCvKUl5VR2i99ttlRcEKw==", "dev": true, "license": "MIT", "funding": { @@ -5092,13 +5244,13 @@ } }, "node_modules/@storybook/core": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.7.tgz", - "integrity": "sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.5.2.tgz", + "integrity": "sha512-rCOpXZo2XbdKVnZiv8oC9FId/gLkStpKGGL7hhdg/RyjcyUyTfhsvaf7LXKZH2A0n/UpwFxhF3idRfhgc1XiSg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf": "^0.1.11", + "@storybook/csf": "0.1.12", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", @@ -5124,13 +5276,12 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.7.tgz", - "integrity": "sha512-Tj+CjQLpFyBJxhhMms+vbPT3+gTRAiQlrhY3L1IEVwBa3wtRMS0qjozH26d1hK4G6mUIEdwu13L54HMU/w33Sg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.5.2.tgz", + "integrity": "sha512-r+s3zNojxl370CCCmvj0A+N27fW6zjRODQ7jsHWGSQzTDIz5Vj68rJBIOffr/27nN9r/JtbXbwxuO2UfqMqcqA==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "^22.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -5138,7 +5289,17 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.7" + "storybook": "^8.5.2" + } + }, + "node_modules/@storybook/core/node_modules/@storybook/csf": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.12.tgz", + "integrity": "sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^2.19.0" } }, "node_modules/@storybook/csf": { @@ -5158,28 +5319,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@storybook/instrumenter": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.7.tgz", - "integrity": "sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==", - "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.7" - } - }, "node_modules/@storybook/manager-api": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.7.tgz", - "integrity": "sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.5.2.tgz", + "integrity": "sha512-Cn+oINA6BOO2GmGHinGsOWnEpoBnurlZ9ekMq7H/c1SYMvQWNg5RlELyrhsnyhNd83fqFZy9Asb0RXI8oqz7DQ==", "dev": true, "license": "MIT", "funding": { @@ -5205,16 +5348,15 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.7.tgz", - "integrity": "sha512-geTSBKyrBagVihil5MF7LkVFynbfHhCinvnbCZZqXW7M1vgcxvatunUENB+iV8eWg/0EJ+8O7scZL+BAxQ/2qg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.5.2.tgz", + "integrity": "sha512-CpRunaOl4tB7Z+1dQEG/LSAdwnCZCaKdfn+Q71k6Pk1vpR6aFlhVbbVP5kgt47vimHDKYKYBQKudP+5IjJNvFA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.7", - "@storybook/react": "8.4.7", + "@storybook/core-webpack": "8.5.2", + "@storybook/react": "8.5.2", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "find-up": "^5.0.0", "magic-string": "^0.30.5", @@ -5234,7 +5376,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.7" + "storybook": "^8.5.2" }, "peerDependenciesMeta": { "typescript": { @@ -5243,9 +5385,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.7.tgz", - "integrity": "sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.5.2.tgz", + "integrity": "sha512-AOOaBjwnkFU40Fi68fvAnK0gMWPz6o/AmH44yDGsHgbI07UgqxLBKCTpjCGPlyQd5ezEjmGwwFTmcmq5dG8DKA==", "dev": true, "license": "MIT", "funding": { @@ -5257,18 +5399,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.7.tgz", - "integrity": "sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.5.2.tgz", + "integrity": "sha512-hWzw9ZllfzsaBJdAoEqPQ2GdVNV4c7PkvIWM6z67epaOHqsdsKScbTMe+YAvFMPtLtOO8KblIrtU5PeD4KyMgw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.4.7", + "@storybook/components": "8.5.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.4.7", - "@storybook/preview-api": "8.4.7", - "@storybook/react-dom-shim": "8.4.7", - "@storybook/theming": "8.4.7" + "@storybook/manager-api": "8.5.2", + "@storybook/preview-api": "8.5.2", + "@storybook/react-dom-shim": "8.5.2", + "@storybook/theming": "8.5.2" }, "engines": { "node": ">=18.0.0" @@ -5278,10 +5420,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.4.7", + "@storybook/test": "8.5.2", "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.7", + "storybook": "^8.5.2", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5314,9 +5456,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.7.tgz", - "integrity": "sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.5.2.tgz", + "integrity": "sha512-lt7XoaeWI8iPlWnWzIm/Wam9TpRFhlqP0KZJoKwDyHiCByqkeMrw5MJREyWq626nf34bOW8D6vkuyTzCHGTxKg==", "dev": true, "license": "MIT", "funding": { @@ -5326,20 +5468,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.7" + "storybook": "^8.5.2" } }, "node_modules/@storybook/react-webpack5": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.7.tgz", - "integrity": "sha512-T9GLqlsP4It4El7cC8rSkBPRWvORAsTDULeWlO36RST2TrYnmBOUytsi22mk7cAAAVhhD6rTrs1YdqWRMpfa1w==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.5.2.tgz", + "integrity": "sha512-OrHaOSaabqOJ3433B0Ea5gVhsR1WaZRs49Y+S/z33VX9iILlougXVx9zNPoeZzgDSG4xEEn2uimFpjjcLLkWzA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.4.7", - "@storybook/preset-react-webpack": "8.4.7", - "@storybook/react": "8.4.7", - "@types/node": "^22.0.0" + "@storybook/builder-webpack5": "8.5.2", + "@storybook/preset-react-webpack": "8.5.2", + "@storybook/react": "8.5.2" }, "engines": { "node": ">=18.0.0" @@ -5351,7 +5492,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.7", + "storybook": "^8.5.2", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5360,135 +5501,10 @@ } } }, - "node_modules/@storybook/test": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.7.tgz", - "integrity": "sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf": "^0.1.11", - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.7", - "@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.7" - } - }, - "node_modules/@storybook/test/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/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", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "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.7", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.7.tgz", - "integrity": "sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.5.2.tgz", + "integrity": "sha512-vro8vJx16rIE0UehawEZbxFFA4/VGYS20PMKP6Y6Fpsce0t2/cF/U9qg3jOzVb/XDwfx+ne3/V+8rjfWx8wwJw==", "dev": true, "license": "MIT", "funding": { @@ -20096,13 +20112,13 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -20182,9 +20198,9 @@ } }, "node_modules/react-docgen": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.0.tgz", - "integrity": "sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz", + "integrity": "sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==", "dev": true, "license": "MIT", "dependencies": { @@ -22613,13 +22629,13 @@ } }, "node_modules/storybook": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.7.tgz", - "integrity": "sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.5.2.tgz", + "integrity": "sha512-pf84emQ7Pd5jBdT2gzlNs4kRaSI3pq0Lh8lSfV+YqIVXztXIHU+Lqyhek2Lhjb7btzA1tExrhJrgQUsIji7i7A==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.4.7" + "@storybook/core": "8.5.2" }, "bin": { "getstorybook": "bin/index.cjs", From d2661f5f7aeced811d906809d64c983514c9fb51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Feb 2025 12:37:58 +0100 Subject: [PATCH 0296/1385] meta: bump semver from 7.6.3 to 7.7.1 (#7475) Bumps [semver](https://github.com/npm/node-semver) from 7.6.3 to 7.7.1. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v7.6.3...v7.7.1) --- updated-dependencies: - dependency-name: semver dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 5728a2ae4a675..f419a0a840df9 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -68,7 +68,7 @@ "rehype-slug": "~6.0.0", "remark-gfm": "~4.0.0", "remark-reading-time": "~2.0.1", - "semver": "~7.6.3", + "semver": "~7.7.1", "shiki": "~2.2.0", "sval": "^0.5.2", "tailwindcss": "~3.4.15", diff --git a/package-lock.json b/package-lock.json index 10496d5fa328d..69cfde5dc8f6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -79,7 +79,7 @@ "rehype-slug": "~6.0.0", "remark-gfm": "~4.0.0", "remark-reading-time": "~2.0.1", - "semver": "~7.6.3", + "semver": "~7.7.1", "shiki": "~2.2.0", "sval": "^0.5.2", "tailwindcss": "~3.4.15", @@ -22213,9 +22213,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" From cde2cbac10e4b548966d0ab7d40d785d48df74de Mon Sep 17 00:00:00 2001 From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Date: Sat, 8 Feb 2025 10:41:48 +0100 Subject: [PATCH 0297/1385] feat(learn/typescript): polish, wordsmith, and add caveat (#7479) --- .../en/learn/typescript/publishing-a-ts-package.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md b/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md index 8048c0981eb43..2813dac320bb0 100644 --- a/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md +++ b/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md @@ -26,7 +26,7 @@ Some important things to note: - Use [dependabot](https://docs.github.com/en/code-security/dependabot) to keep your dependencies current, including those in github actions. It's a very easy set-and-forget configuration. -- `.nvmrc` comes from [NVM](https://github.com/nvm-sh/nvm), a multi-version manager for node. It allows you to specify the version of node the project should generally use. +- `.nvmrc` comes from [`nvm`](https://github.com/nvm-sh/nvm), a multi-version manager for node. It allows you to specify the version of node the project should generally use. A directory overview of a repository would look something like: @@ -136,7 +136,7 @@ const bar: number = 1 + foo; TypeScript has warned that the above code will not behave as intended, just like a unit test warns that code does not behave as intended. They are complementary and verify different things—you should have both. -Your editor (ex VS Code) likely has built-in support for TypeScript, displaying errors as you work. If not, and/or you missed those, CI will have your back. +Your editor (eg VS Code) likely has built-in support for TypeScript, displaying errors as you work. If not, and/or you missed those, CI will have your back. The following [GitHub Action](https://github.com/features/actions) sets up a CI task to automatically check (and require) types pass inspection for a PR into the `main` branch. @@ -265,14 +265,14 @@ Type declarations (`.d.ts` and friends) provide type information as a sidecar fi Since these are generated based on source code, they can be built as part of your publication process and do not need to be checked into your repository. -Take the following example, where the type declarations are generated just before publishing to the NPM registry. +Take the following example, where the type declarations are generated just before publishing to the npm registry. ```yaml displayName=".github/workflows/publish.yml" # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json # This is mostly boilerplate. -name: Publish to NPM +name: Publish to npm on: push: tags: @@ -292,7 +292,7 @@ jobs: registry-url: 'https://registry.npmjs.org' - run: npm ci - # - name: Publish to NPM + # - name: Publish to npm # run: … npm publish … ``` @@ -329,4 +329,4 @@ Generating type declarations is deterministic: you'll get the same output from t [`npm publish`](https://docs.npmjs.com/cli/commands/npm-publish) grabs everything applicable and available at the moment the command is run; so generating type declarations immediately before means those are available and will get picked up. -By default, `npm publish` grabs (almost) everything (see [Files included in package](https://docs.npmjs.com/cli/commands/npm-publish#files-included-in-package)). In order to keep your published package minimal (see the "Heaviest Objects in the Universe" meme about `node_modules`), you want to exclude certain files (like tests and test fixtures) from from packaging. Add these to the opt-out list specified in [`.npmignore`](https://docs.npmjs.com/cli/using-npm/developers#keeping-files-out-of-your-package); ensure the `!*.d.ts` exception is listed, or the generated type declartions will not be published! Alternatively, you can use [package.json "files"](https://docs.npmjs.com/cli/configuring-npm/package-json#files) to create an opt-in list. +By default, `npm publish` grabs (almost) everything (see [Files included in package](https://docs.npmjs.com/cli/commands/npm-publish#files-included-in-package)). In order to keep your published package minimal (see the "Heaviest Objects in the Universe" meme about `node_modules`), you want to exclude certain files (like tests and test fixtures) from from packaging. Add these to the opt-out list specified in [`.npmignore`](https://docs.npmjs.com/cli/using-npm/developers#keeping-files-out-of-your-package); ensure the `!*.d.ts` exception is listed, or the generated type declartions will not be published! Alternatively, you can use [package.json "files"](https://docs.npmjs.com/cli/configuring-npm/package-json#files) to create an opt-in (if a mistake is made accidentally omitting a file, your package may be broken for downstream users, so this is a less safe option). From a90d199bdf8a6872ad21721687f5d820c143fdfc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Feb 2025 15:52:37 +0100 Subject: [PATCH 0298/1385] meta: bump the next-js group with 3 updates (#7449) Bumps the next-js group with 3 updates: [@vercel/otel](https://github.com/vercel/otel), [next](https://github.com/vercel/next.js) and [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next). Updates `@vercel/otel` from 1.10.0 to 1.10.1 - [Release notes](https://github.com/vercel/otel/releases) - [Commits](https://github.com/vercel/otel/compare/@vercel/otel@1.10.0...@vercel/otel@1.10.1) Updates `next` from 15.1.3 to 15.1.6 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v15.1.3...v15.1.6) Updates `@next/eslint-plugin-next` from 15.1.3 to 15.1.6 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v15.1.6/packages/eslint-plugin-next) --- updated-dependencies: - dependency-name: "@vercel/otel" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: next-js - dependency-name: next dependency-type: direct:production update-type: version-update:semver-patch dependency-group: next-js - dependency-name: "@next/eslint-plugin-next" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: next-js ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 6 +-- package-lock.json | 106 ++++++++++++++++++++++------------------- 2 files changed, 61 insertions(+), 51 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index f419a0a840df9..6d3286cbd60c4 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -43,7 +43,7 @@ "@tailwindcss/container-queries": "~0.1.1", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.4.1", - "@vercel/otel": "~1.10.0", + "@vercel/otel": "~1.10.1", "@vercel/speed-insights": "~1.1.0", "autoprefixer": "~10.4.20", "classnames": "~2.5.1", @@ -53,7 +53,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "15.1.3", + "next": "15.1.6", "next-intl": "~3.26.3", "next-themes": "~0.4.3", "postcss": "~8.4.49", @@ -78,7 +78,7 @@ }, "devDependencies": { "@eslint/compat": "~1.2.3", - "@next/eslint-plugin-next": "15.1.3", + "@next/eslint-plugin-next": "15.1.6", "@storybook/addon-controls": "^8.5.2", "@storybook/addon-interactions": "^8.5.2", "@storybook/addon-styling-webpack": "^1.0.1", diff --git a/package-lock.json b/package-lock.json index 69cfde5dc8f6e..9298db5657498 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54,7 +54,7 @@ "@tailwindcss/container-queries": "~0.1.1", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.4.1", - "@vercel/otel": "~1.10.0", + "@vercel/otel": "~1.10.1", "@vercel/speed-insights": "~1.1.0", "autoprefixer": "~10.4.20", "classnames": "~2.5.1", @@ -64,7 +64,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.0", "gray-matter": "~4.0.3", - "next": "15.1.3", + "next": "15.1.6", "next-intl": "~3.26.3", "next-themes": "~0.4.3", "postcss": "~8.4.49", @@ -89,7 +89,7 @@ }, "devDependencies": { "@eslint/compat": "~1.2.3", - "@next/eslint-plugin-next": "15.1.3", + "@next/eslint-plugin-next": "15.1.6", "@storybook/addon-controls": "^8.5.2", "@storybook/addon-interactions": "^8.5.2", "@storybook/addon-styling-webpack": "^1.0.1", @@ -3101,15 +3101,15 @@ } }, "node_modules/@next/env": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.3.tgz", - "integrity": "sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.6.tgz", + "integrity": "sha512-d9AFQVPEYNr+aqokIiPLNK/MTyt3DWa/dpKveiAaVccUadFbhFEvY6FXYX2LJO2Hv7PHnLBu2oWwB4uBuHjr/w==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.3.tgz", - "integrity": "sha512-oeP1vnc5Cq9UoOb8SYHAEPbCXMzOgG70l+Zfd+Ie00R25FOm+CCVNrcIubJvB1tvBgakXE37MmqSycksXVPRqg==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.6.tgz", + "integrity": "sha512-+slMxhTgILUntZDGNgsKEYHUvpn72WP1YTlkmEhS51vnVd7S9jEEy0n9YAMcI21vUG4akTw9voWH02lrClt/yw==", "dev": true, "license": "MIT", "dependencies": { @@ -3117,9 +3117,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.3.tgz", - "integrity": "sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.6.tgz", + "integrity": "sha512-u7lg4Mpl9qWpKgy6NzEkz/w0/keEHtOybmIl0ykgItBxEM5mYotS5PmqTpo+Rhg8FiOiWgwr8USxmKQkqLBCrw==", "cpu": [ "arm64" ], @@ -3133,9 +3133,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.3.tgz", - "integrity": "sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.6.tgz", + "integrity": "sha512-x1jGpbHbZoZ69nRuogGL2MYPLqohlhnT9OCU6E6QFewwup+z+M6r8oU47BTeJcWsF2sdBahp5cKiAcDbwwK/lg==", "cpu": [ "x64" ], @@ -3149,9 +3149,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.3.tgz", - "integrity": "sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.6.tgz", + "integrity": "sha512-jar9sFw0XewXsBzPf9runGzoivajeWJUc/JkfbLTC4it9EhU8v7tCRLH7l5Y1ReTMN6zKJO0kKAGqDk8YSO2bg==", "cpu": [ "arm64" ], @@ -3165,9 +3165,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.3.tgz", - "integrity": "sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.6.tgz", + "integrity": "sha512-+n3u//bfsrIaZch4cgOJ3tXCTbSxz0s6brJtU3SzLOvkJlPQMJ+eHVRi6qM2kKKKLuMY+tcau8XD9CJ1OjeSQQ==", "cpu": [ "arm64" ], @@ -3181,9 +3181,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.3.tgz", - "integrity": "sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.6.tgz", + "integrity": "sha512-SpuDEXixM3PycniL4iVCLyUyvcl6Lt0mtv3am08sucskpG0tYkW1KlRhTgj4LI5ehyxriVVcfdoxuuP8csi3kQ==", "cpu": [ "x64" ], @@ -3197,9 +3197,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.3.tgz", - "integrity": "sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.6.tgz", + "integrity": "sha512-L4druWmdFSZIIRhF+G60API5sFB7suTbDRhYWSjiw0RbE+15igQvE2g2+S973pMGvwN3guw7cJUjA/TmbPWTHQ==", "cpu": [ "x64" ], @@ -3213,9 +3213,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.3.tgz", - "integrity": "sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.6.tgz", + "integrity": "sha512-s8w6EeqNmi6gdvM19tqKKWbCyOBvXFbndkGHl+c9YrzsLARRdCHsD9S1fMj8gsXm9v8vhC8s3N8rjuC/XrtkEg==", "cpu": [ "arm64" ], @@ -3229,9 +3229,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.3.tgz", - "integrity": "sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.6.tgz", + "integrity": "sha512-6xomMuu54FAFxttYr5PJbEfu96godcxBTRk1OhAvJq0/EnmFU/Ybiax30Snis4vdWZ9LGpf7Roy5fSs7v/5ROQ==", "cpu": [ "x64" ], @@ -6736,9 +6736,9 @@ } }, "node_modules/@vercel/otel": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@vercel/otel/-/otel-1.10.0.tgz", - "integrity": "sha512-bv1FXbFZlFbB89vyA2P9/kr6eZ42bMtXgqBJpgi+8yOrZU8rkg9wMi0TL//AgAf/qKtaryDm1sbCnkLHgCI3PQ==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@vercel/otel/-/otel-1.10.1.tgz", + "integrity": "sha512-jZrHSAP03WVUfu1yid4AkYAZ/pwde/txVBSovk5kxQ99Bmb8sqMmQ9RJCSbWuV1EvbTimrVotAP0Devi/qHXgw==", "license": "MIT", "engines": { "node": ">=18" @@ -10011,6 +10011,16 @@ } } }, + "node_modules/eslint-config-next/node_modules/@next/eslint-plugin-next": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.3.tgz", + "integrity": "sha512-oeP1vnc5Cq9UoOb8SYHAEPbCXMzOgG70l+Zfd+Ie00R25FOm+CCVNrcIubJvB1tvBgakXE37MmqSycksXVPRqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -18435,12 +18445,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/next/-/next-15.1.3.tgz", - "integrity": "sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==", + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/next/-/next-15.1.6.tgz", + "integrity": "sha512-Hch4wzbaX0vKQtalpXvUiw5sYivBy4cm5rzUKrBnUB/y436LGrvOUqYvlSeNVCWFO/770gDlltR9gqZH62ct4Q==", "license": "MIT", "dependencies": { - "@next/env": "15.1.3", + "@next/env": "15.1.6", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -18455,14 +18465,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.1.3", - "@next/swc-darwin-x64": "15.1.3", - "@next/swc-linux-arm64-gnu": "15.1.3", - "@next/swc-linux-arm64-musl": "15.1.3", - "@next/swc-linux-x64-gnu": "15.1.3", - "@next/swc-linux-x64-musl": "15.1.3", - "@next/swc-win32-arm64-msvc": "15.1.3", - "@next/swc-win32-x64-msvc": "15.1.3", + "@next/swc-darwin-arm64": "15.1.6", + "@next/swc-darwin-x64": "15.1.6", + "@next/swc-linux-arm64-gnu": "15.1.6", + "@next/swc-linux-arm64-musl": "15.1.6", + "@next/swc-linux-x64-gnu": "15.1.6", + "@next/swc-linux-x64-musl": "15.1.6", + "@next/swc-win32-arm64-msvc": "15.1.6", + "@next/swc-win32-x64-msvc": "15.1.6", "sharp": "^0.33.5" }, "peerDependencies": { From b0b777e09965af624b7b084e236232cadd29fa3f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:42:35 +1000 Subject: [PATCH 0299/1385] meta: bump @radix-ui/react-toast from 1.2.4 to 1.2.5 (#7452) Bumps [@radix-ui/react-toast](https://github.com/radix-ui/primitives) from 1.2.4 to 1.2.5. - [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-toast" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 6d3286cbd60c4..ec290b23b13fe 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -37,7 +37,7 @@ "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", - "@radix-ui/react-toast": "^1.2.2", + "@radix-ui/react-toast": "^1.2.5", "@radix-ui/react-tooltip": "^1.1.4", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", diff --git a/package-lock.json b/package-lock.json index 9298db5657498..297a68449895f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,7 @@ "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", - "@radix-ui/react-toast": "^1.2.2", + "@radix-ui/react-toast": "^1.2.5", "@radix-ui/react-tooltip": "^1.1.4", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", @@ -4572,16 +4572,16 @@ } }, "node_modules/@radix-ui/react-toast": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.4.tgz", - "integrity": "sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.5.tgz", + "integrity": "sha512-ZzUsAaOx8NdXZZKcFNDhbSlbsCUy8qQWmzTdgrlrhhZAOx2ofLtKrBDW9fkqhFvXgmtv560Uj16pkLkqML7SHA==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", @@ -4605,6 +4605,33 @@ } } }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.4.tgz", + "integrity": "sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@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-tooltip": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.6.tgz", From 372a36a79f35aba8d2d43282c6bf73e7a9d4e36b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Feb 2025 12:18:59 +1000 Subject: [PATCH 0300/1385] meta: bump @radix-ui/react-tooltip from 1.1.6 to 1.1.8 (#7483) Bumps [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives) from 1.1.6 to 1.1.8. - [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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 190 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 181 insertions(+), 11 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index ec290b23b13fe..29d955b462083 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -38,7 +38,7 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-toast": "^1.2.5", - "@radix-ui/react-tooltip": "^1.1.4", + "@radix-ui/react-tooltip": "^1.1.8", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", "@vcarl/remark-headings": "~0.1.0", diff --git a/package-lock.json b/package-lock.json index 297a68449895f..637873ab5805a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,7 +49,7 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-toast": "^1.2.5", - "@radix-ui/react-tooltip": "^1.1.4", + "@radix-ui/react-tooltip": "^1.1.8", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", "@vcarl/remark-headings": "~0.1.0", @@ -4633,23 +4633,193 @@ } }, "node_modules/@radix-ui/react-tooltip": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.6.tgz", - "integrity": "sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.8.tgz", + "integrity": "sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.5", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.1", - "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.1" + "@radix-ui/react-visually-hidden": "1.1.2" + }, + "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-arrow": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", + "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2" + }, + "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-dismissable-layer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", + "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@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-tooltip/node_modules/@radix-ui/react-popper": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", + "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "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-portal": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", + "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2", + "@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/node_modules/@radix-ui/react-primitive": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.2" + }, + "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-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "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-visually-hidden": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.2.tgz", + "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { "@types/react": "*", From b546ff5c307211a1cd891d2a80d4b3bb611c2b39 Mon Sep 17 00:00:00 2001 From: Marco Ippolito <marcoippolito54@gmail.com> Date: Mon, 10 Feb 2025 15:04:06 +0100 Subject: [PATCH 0301/1385] Blog: v20.18.3 release post (#7485) Refs: https://github.com/nodejs/node/pull/56699 --- apps/site/pages/en/blog/release/v20.18.3.md | 320 ++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v20.18.3.md diff --git a/apps/site/pages/en/blog/release/v20.18.3.md b/apps/site/pages/en/blog/release/v20.18.3.md new file mode 100644 index 0000000000000..12dea383eacfd --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.18.3.md @@ -0,0 +1,320 @@ +--- +date: '2025-02-10T13:55:43.353Z' +category: release +title: Node v20.18.3 (LTS) +layout: blog-post +author: Marco Ippolito +--- + +## 2025-02-10, Version 20.18.3 'Iron' (LTS), @marco-ippolito + +### Notable Changes + +- \[[`030f155986`](https://github.com/nodejs/node/commit/030f155986)] - **esm**: mark import attributes and JSON module as stable (Nicolò Ribaudo) [#55333](https://github.com/nodejs/node/pull/55333) +- \[[`b9b006331f`](https://github.com/nodejs/node/commit/b9b006331f)] - **doc**: add LJHarb to collaborators (Jordan Harband) [#56132](https://github.com/nodejs/node/pull/56132) +- \[[`39b89e90b4`](https://github.com/nodejs/node/commit/39b89e90b4)] - **doc**: enforce strict policy to semver-major releases (Rafael Gonzaga) [#55732](https://github.com/nodejs/node/pull/55732) +- \[[`247fa1959f`](https://github.com/nodejs/node/commit/247fa1959f)] - **crypto**: update root certificates to NSS 3.104 (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681) +- \[[`adfc2f993a`](https://github.com/nodejs/node/commit/adfc2f993a)] - **tools**: fix root certificate updater (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681) +- \[[`29862ae105`](https://github.com/nodejs/node/commit/29862ae105)] - **doc**: add jazelly to collaborators (Jason Zhang) [#55531](https://github.com/nodejs/node/pull/55531) + +### Commits + +- \[[`b4f5da18a5`](https://github.com/nodejs/node/commit/b4f5da18a5)] - **benchmark**: add `test-reporters` (Aviv Keller) [#55757](https://github.com/nodejs/node/pull/55757) +- \[[`407992e272`](https://github.com/nodejs/node/commit/407992e272)] - **benchmark**: add `test_runner/mock-fn` (Aviv Keller) [#55771](https://github.com/nodejs/node/pull/55771) +- \[[`17abec4367`](https://github.com/nodejs/node/commit/17abec4367)] - **benchmark**: add nodeTiming.uvmetricsinfo bench (RafaelGSS) [#55614](https://github.com/nodejs/node/pull/55614) +- \[[`43f7050338`](https://github.com/nodejs/node/commit/43f7050338)] - **benchmark**: add --runs support to run.js (Rafael Gonzaga) [#55158](https://github.com/nodejs/node/pull/55158) +- \[[`470789a981`](https://github.com/nodejs/node/commit/470789a981)] - **benchmark**: adjust byte size for buffer-copy (Rafael Gonzaga) [#55295](https://github.com/nodejs/node/pull/55295) +- \[[`ea1c97ac16`](https://github.com/nodejs/node/commit/ea1c97ac16)] - **buffer**: document concat zero-fill (Duncan) [#55562](https://github.com/nodejs/node/pull/55562) +- \[[`ae683a9e1f`](https://github.com/nodejs/node/commit/ae683a9e1f)] - **build**: set DESTCPU correctly for 'make binary' on loongarch64 (吴小白) [#56271](https://github.com/nodejs/node/pull/56271) +- \[[`af020edf96`](https://github.com/nodejs/node/commit/af020edf96)] - **build**: fix missing fp16 dependency in d8 builds (Joyee Cheung) [#56266](https://github.com/nodejs/node/pull/56266) +- \[[`d6a1b74404`](https://github.com/nodejs/node/commit/d6a1b74404)] - **build**: add major release action (Rafael Gonzaga) [#56199](https://github.com/nodejs/node/pull/56199) +- \[[`bc92a96a5a`](https://github.com/nodejs/node/commit/bc92a96a5a)] - **build**: allow overriding clang usage (Shelley Vohr) [#56016](https://github.com/nodejs/node/pull/56016) +- \[[`f370ec0989`](https://github.com/nodejs/node/commit/f370ec0989)] - **build**: remove defaults for create-release-proposal (Rafael Gonzaga) [#56042](https://github.com/nodejs/node/pull/56042) +- \[[`25e1862e87`](https://github.com/nodejs/node/commit/25e1862e87)] - **build**: set node_arch to target_cpu in GN (Shelley Vohr) [#55967](https://github.com/nodejs/node/pull/55967) +- \[[`55c205e5f6`](https://github.com/nodejs/node/commit/55c205e5f6)] - **build**: add create release proposal action (Rafael Gonzaga) [#55690](https://github.com/nodejs/node/pull/55690) +- \[[`9f14ba808d`](https://github.com/nodejs/node/commit/9f14ba808d)] - **build**: implement node_use_amaro flag in GN build (Cheng) [#55798](https://github.com/nodejs/node/pull/55798) +- \[[`046430c47e`](https://github.com/nodejs/node/commit/046430c47e)] - **build**: fix building with system icu 76 (Michael Cho) [#55563](https://github.com/nodejs/node/pull/55563) +- \[[`0b6d62c812`](https://github.com/nodejs/node/commit/0b6d62c812)] - **build**: fix GN arg used in generate_config_gypi.py (Shelley Vohr) [#55530](https://github.com/nodejs/node/pull/55530) +- \[[`8f9c642369`](https://github.com/nodejs/node/commit/8f9c642369)] - **build**: fix GN build for cares/uv deps (Cheng) [#55477](https://github.com/nodejs/node/pull/55477) +- \[[`284e932326`](https://github.com/nodejs/node/commit/284e932326)] - **build**: fix uninstall script for AIX 7.1 (Cloorc) [#55438](https://github.com/nodejs/node/pull/55438) +- \[[`2f71f168ef`](https://github.com/nodejs/node/commit/2f71f168ef)] - **build**: tidy up cares.gyp (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445) +- \[[`e89e807522`](https://github.com/nodejs/node/commit/e89e807522)] - **build**: synchronize list of c-ares source files (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445) +- \[[`5eb6c94851`](https://github.com/nodejs/node/commit/5eb6c94851)] - **build**: fix path concatenation (Mohammed Keyvanzadeh) [#55387](https://github.com/nodejs/node/pull/55387) +- \[[`720d23f3ac`](https://github.com/nodejs/node/commit/720d23f3ac)] - **build**: fix make errors that occur in Makefile (minkyu_kim) [#55287](https://github.com/nodejs/node/pull/55287) +- \[[`dc552c6739`](https://github.com/nodejs/node/commit/dc552c6739)] - **build,win**: enable pch for clang-cl (Stefan Stojanovic) [#55249](https://github.com/nodejs/node/pull/55249) +- \[[`64b140d484`](https://github.com/nodejs/node/commit/64b140d484)] - **cli**: add `--heap-prof` flag available to `NODE_OPTIONS` (Juan José) [#54259](https://github.com/nodejs/node/pull/54259) +- \[[`23fb644037`](https://github.com/nodejs/node/commit/23fb644037)] - **crypto**: ensure CryptoKey usages and algorithm are cached objects (Filip Skokan) [#56108](https://github.com/nodejs/node/pull/56108) +- \[[`247fa1959f`](https://github.com/nodejs/node/commit/247fa1959f)] - **crypto**: update root certificates to NSS 3.104 (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681) +- \[[`3c4262a171`](https://github.com/nodejs/node/commit/3c4262a171)] - **deps**: V8: cherry-pick 26fd1dfa9cd6 (Shu-yu Guo) [#55961](https://github.com/nodejs/node/pull/55961) +- \[[`558e6588a4`](https://github.com/nodejs/node/commit/558e6588a4)] - **deps**: V8: backport ae5a4db8ad86 (Shu-yu Guo) [#55961](https://github.com/nodejs/node/pull/55961) +- \[[`169bc58447`](https://github.com/nodejs/node/commit/169bc58447)] - **deps**: update simdutf to 5.6.4 (Node.js GitHub Bot) [#56255](https://github.com/nodejs/node/pull/56255) +- \[[`bc7bb1e269`](https://github.com/nodejs/node/commit/bc7bb1e269)] - **deps**: update c-ares to v1.34.4 (Node.js GitHub Bot) [#56256](https://github.com/nodejs/node/pull/56256) +- \[[`782bb6cac4`](https://github.com/nodejs/node/commit/782bb6cac4)] - **deps**: update zlib to 1.3.0.1-motley-82a5fec (Node.js GitHub Bot) [#55980](https://github.com/nodejs/node/pull/55980) +- \[[`f7131cf178`](https://github.com/nodejs/node/commit/f7131cf178)] - **deps**: update corepack to 0.30.0 (Node.js GitHub Bot) [#55977](https://github.com/nodejs/node/pull/55977) +- \[[`b09f6abcd3`](https://github.com/nodejs/node/commit/b09f6abcd3)] - **deps**: update simdutf to 5.6.3 (Node.js GitHub Bot) [#55973](https://github.com/nodejs/node/pull/55973) +- \[[`d63ccb60ea`](https://github.com/nodejs/node/commit/d63ccb60ea)] - **deps**: update zlib to 1.3.0.1-motley-7e2e4d7 (Node.js GitHub Bot) [#54432](https://github.com/nodejs/node/pull/54432) +- \[[`a2f315ef8b`](https://github.com/nodejs/node/commit/a2f315ef8b)] - **deps**: update simdutf to 5.6.2 (Node.js GitHub Bot) [#55889](https://github.com/nodejs/node/pull/55889) +- \[[`afed723b6c`](https://github.com/nodejs/node/commit/afed723b6c)] - **deps**: update simdutf to 5.6.1 (Node.js GitHub Bot) [#55850](https://github.com/nodejs/node/pull/55850) +- \[[`753c3b322f`](https://github.com/nodejs/node/commit/753c3b322f)] - **deps**: update c-ares to v1.34.3 (Node.js GitHub Bot) [#55803](https://github.com/nodejs/node/pull/55803) +- \[[`4f89af8a6f`](https://github.com/nodejs/node/commit/4f89af8a6f)] - **deps**: update acorn to 8.14.0 (Node.js GitHub Bot) [#55699](https://github.com/nodejs/node/pull/55699) +- \[[`07359ec14f`](https://github.com/nodejs/node/commit/07359ec14f)] - **deps**: update acorn to 8.13.0 (Node.js GitHub Bot) [#55558](https://github.com/nodejs/node/pull/55558) +- \[[`c6236571fc`](https://github.com/nodejs/node/commit/c6236571fc)] - **deps**: update googletest to df1544b (Node.js GitHub Bot) [#55465](https://github.com/nodejs/node/pull/55465) +- \[[`f63413c6f3`](https://github.com/nodejs/node/commit/f63413c6f3)] - **deps**: update c-ares to v1.34.2 (Node.js GitHub Bot) [#55463](https://github.com/nodejs/node/pull/55463) +- \[[`ad725c766d`](https://github.com/nodejs/node/commit/ad725c766d)] - **deps**: update ada to 2.9.1 (Node.js GitHub Bot) [#54679](https://github.com/nodejs/node/pull/54679) +- \[[`33367cbd62`](https://github.com/nodejs/node/commit/33367cbd62)] - **deps**: update simdutf to 5.6.0 (Node.js GitHub Bot) [#55379](https://github.com/nodejs/node/pull/55379) +- \[[`f2a55d9d2d`](https://github.com/nodejs/node/commit/f2a55d9d2d)] - **deps**: update c-ares to v1.34.1 (Node.js GitHub Bot) [#55369](https://github.com/nodejs/node/pull/55369) +- \[[`1d14886266`](https://github.com/nodejs/node/commit/1d14886266)] - **dgram**: check udp buffer size to avoid fd leak (theanarkh) [#56084](https://github.com/nodejs/node/pull/56084) +- \[[`de265b9558`](https://github.com/nodejs/node/commit/de265b9558)] - **diagnostics_channel**: fix unsubscribe during publish (simon-id) [#55116](https://github.com/nodejs/node/pull/55116) +- \[[`22e0d17097`](https://github.com/nodejs/node/commit/22e0d17097)] - **dns**: stop using deprecated `ares_query` (Aviv Keller) [#55430](https://github.com/nodejs/node/pull/55430) +- \[[`44f3b23749`](https://github.com/nodejs/node/commit/44f3b23749)] - **dns**: honor the order option (Luigi Pinca) [#55392](https://github.com/nodejs/node/pull/55392) +- \[[`f78508cd30`](https://github.com/nodejs/node/commit/f78508cd30)] - **doc**: add history info for Permission Model (Antoine du Hamel) [#56707](https://github.com/nodejs/node/pull/56707) +- \[[`f07be5e3cd`](https://github.com/nodejs/node/commit/f07be5e3cd)] - **doc**: add note for features using `InternalWorker` with permission model (Antoine du Hamel) [#56706](https://github.com/nodejs/node/pull/56706) +- \[[`618e005672`](https://github.com/nodejs/node/commit/618e005672)] - **doc**: add history entries for JSON modules stabilization (Antoine du Hamel) [#55855](https://github.com/nodejs/node/pull/55855) +- \[[`f89f4ff856`](https://github.com/nodejs/node/commit/f89f4ff856)] - **doc**: fix color contrast issue in light mode (Rich Trott) [#56272](https://github.com/nodejs/node/pull/56272) +- \[[`a51ef9d829`](https://github.com/nodejs/node/commit/a51ef9d829)] - **doc**: clarify util.aborted resource usage (Kunal Kumar) [#55780](https://github.com/nodejs/node/pull/55780) +- \[[`2d88c4b425`](https://github.com/nodejs/node/commit/2d88c4b425)] - **doc**: add esm examples to node:repl (Alfredo González) [#55432](https://github.com/nodejs/node/pull/55432) +- \[[`722dada673`](https://github.com/nodejs/node/commit/722dada673)] - **doc**: add esm examples to node:readline (Alfredo González) [#55335](https://github.com/nodejs/node/pull/55335) +- \[[`090c7a3b01`](https://github.com/nodejs/node/commit/090c7a3b01)] - **doc**: fix 'which' to 'that' and add commas (Selveter Senitro) [#56216](https://github.com/nodejs/node/pull/56216) +- \[[`ae3f6fbe59`](https://github.com/nodejs/node/commit/ae3f6fbe59)] - **doc**: `sea.getRawAsset(key)` always returns an ArrayBuffer (沈鸿飞) [#56206](https://github.com/nodejs/node/pull/56206) +- \[[`d103917d92`](https://github.com/nodejs/node/commit/d103917d92)] - **doc**: update announce documentation for releases (Rafael Gonzaga) [#56200](https://github.com/nodejs/node/pull/56200) +- \[[`80e5bb87c4`](https://github.com/nodejs/node/commit/80e5bb87c4)] - **doc**: update blog link to /vulnerability (Rafael Gonzaga) [#56198](https://github.com/nodejs/node/pull/56198) +- \[[`b739c2a926`](https://github.com/nodejs/node/commit/b739c2a926)] - **doc**: call out import.meta is only supported in ES modules (Anton Kastritskii) [#56186](https://github.com/nodejs/node/pull/56186) +- \[[`bbd0222a10`](https://github.com/nodejs/node/commit/bbd0222a10)] - **doc**: add ambassador message - benefits of Node.js (Michael Dawson) [#56085](https://github.com/nodejs/node/pull/56085) +- \[[`0e9abf2754`](https://github.com/nodejs/node/commit/0e9abf2754)] - **doc**: fix incorrect link to style guide (Yuan-Ming Hsu) [#56181](https://github.com/nodejs/node/pull/56181) +- \[[`1dbc7e87d7`](https://github.com/nodejs/node/commit/1dbc7e87d7)] - **doc**: fix c++ addon hello world sample (Edigleysson Silva (Edy)) [#56172](https://github.com/nodejs/node/pull/56172) +- \[[`026f0198c8`](https://github.com/nodejs/node/commit/026f0198c8)] - **doc**: update blog release-post link (Ruy Adorno) [#56123](https://github.com/nodejs/node/pull/56123) +- \[[`c2fa359f7a`](https://github.com/nodejs/node/commit/c2fa359f7a)] - **doc**: mention `-a` flag for the release script (Ruy Adorno) [#56124](https://github.com/nodejs/node/pull/56124) +- \[[`b9b006331f`](https://github.com/nodejs/node/commit/b9b006331f)] - **doc**: add LJHarb to collaborators (Jordan Harband) [#56132](https://github.com/nodejs/node/pull/56132) +- \[[`7a1365ba62`](https://github.com/nodejs/node/commit/7a1365ba62)] - **doc**: add create-release-action to process (Rafael Gonzaga) [#55993](https://github.com/nodejs/node/pull/55993) +- \[[`51262ec84e`](https://github.com/nodejs/node/commit/51262ec84e)] - **doc**: rename file to advocacy-ambassador-program.md (Tobias Nießen) [#56046](https://github.com/nodejs/node/pull/56046) +- \[[`6fc7328831`](https://github.com/nodejs/node/commit/6fc7328831)] - **doc**: remove unused import from sample code (Blended Bram) [#55570](https://github.com/nodejs/node/pull/55570) +- \[[`9f3ef4a434`](https://github.com/nodejs/node/commit/9f3ef4a434)] - **doc**: add FAQ to releases section (Rafael Gonzaga) [#55992](https://github.com/nodejs/node/pull/55992) +- \[[`1dcf8dfedb`](https://github.com/nodejs/node/commit/1dcf8dfedb)] - **doc**: move history entry to class description (Luigi Pinca) [#55991](https://github.com/nodejs/node/pull/55991) +- \[[`e016f68c73`](https://github.com/nodejs/node/commit/e016f68c73)] - **doc**: add history entry for textEncoder.encodeInto() (Luigi Pinca) [#55990](https://github.com/nodejs/node/pull/55990) +- \[[`1b31638262`](https://github.com/nodejs/node/commit/1b31638262)] - **doc**: improve GN build documentation a bit (Shelley Vohr) [#55968](https://github.com/nodejs/node/pull/55968) +- \[[`d25bcfd0b2`](https://github.com/nodejs/node/commit/d25bcfd0b2)] - **doc**: remove confusing and outdated sentence (Luigi Pinca) [#55988](https://github.com/nodejs/node/pull/55988) +- \[[`65c1784337`](https://github.com/nodejs/node/commit/65c1784337)] - **doc**: add doc for PerformanceObserver.takeRecords() (skyclouds2001) [#55786](https://github.com/nodejs/node/pull/55786) +- \[[`682ae41f86`](https://github.com/nodejs/node/commit/682ae41f86)] - **doc**: add vetted courses to the ambassador benefits (Matteo Collina) [#55934](https://github.com/nodejs/node/pull/55934) +- \[[`9b6cc54b50`](https://github.com/nodejs/node/commit/9b6cc54b50)] - **doc**: doc how to add message for promotion (Michael Dawson) [#55843](https://github.com/nodejs/node/pull/55843) +- \[[`db5378c8b9`](https://github.com/nodejs/node/commit/db5378c8b9)] - **doc**: add esm example for zlib (Leonardo Peixoto) [#55946](https://github.com/nodejs/node/pull/55946) +- \[[`58a6fbb9cf`](https://github.com/nodejs/node/commit/58a6fbb9cf)] - **doc**: document approach for building wasm in deps (Michael Dawson) [#55940](https://github.com/nodejs/node/pull/55940) +- \[[`41e3bcd752`](https://github.com/nodejs/node/commit/41e3bcd752)] - **doc**: add esm examples to node:timers (Alfredo González) [#55857](https://github.com/nodejs/node/pull/55857) +- \[[`61de8f9b04`](https://github.com/nodejs/node/commit/61de8f9b04)] - **doc**: include git node release --promote to steps (Rafael Gonzaga) [#55835](https://github.com/nodejs/node/pull/55835) +- \[[`559a0bfa2e`](https://github.com/nodejs/node/commit/559a0bfa2e)] - **doc**: add a note on console stream behavior (Gireesh Punathil) [#55616](https://github.com/nodejs/node/pull/55616) +- \[[`3d11a85fe5`](https://github.com/nodejs/node/commit/3d11a85fe5)] - **doc**: add `-S` flag release preparation example (Antoine du Hamel) [#55836](https://github.com/nodejs/node/pull/55836) +- \[[`955690e6cf`](https://github.com/nodejs/node/commit/955690e6cf)] - **doc**: clarify UV_THREADPOOL_SIZE env var usage (Preveen P) [#55832](https://github.com/nodejs/node/pull/55832) +- \[[`d6738e919a`](https://github.com/nodejs/node/commit/d6738e919a)] - **doc**: add notable-change mention to sec release (Rafael Gonzaga) [#55830](https://github.com/nodejs/node/pull/55830) +- \[[`79876f0dfd`](https://github.com/nodejs/node/commit/79876f0dfd)] - **doc**: fix history info for `URL.prototype.toJSON` (Antoine du Hamel) [#55818](https://github.com/nodejs/node/pull/55818) +- \[[`c14776fbaa`](https://github.com/nodejs/node/commit/c14776fbaa)] - **doc**: correct max-semi-space-size statement (Joe Bowbeer) [#55812](https://github.com/nodejs/node/pull/55812) +- \[[`83b415e8f3`](https://github.com/nodejs/node/commit/83b415e8f3)] - **doc**: run license-builder (github-actions\[bot]) [#55813](https://github.com/nodejs/node/pull/55813) +- \[[`07f53b1d75`](https://github.com/nodejs/node/commit/07f53b1d75)] - **doc**: clarify triager role (Gireesh Punathil) [#55775](https://github.com/nodejs/node/pull/55775) +- \[[`2abfdefcf3`](https://github.com/nodejs/node/commit/2abfdefcf3)] - **doc**: clarify removal of experimental API does not require a deprecation (Antoine du Hamel) [#55746](https://github.com/nodejs/node/pull/55746) +- \[[`39b89e90b4`](https://github.com/nodejs/node/commit/39b89e90b4)] - **doc**: enforce strict policy to semver-major releases (Rafael Gonzaga) [#55732](https://github.com/nodejs/node/pull/55732) +- \[[`d0417eaec9`](https://github.com/nodejs/node/commit/d0417eaec9)] - **doc**: add esm example in `path.md` (Aviv Keller) [#55745](https://github.com/nodejs/node/pull/55745) +- \[[`032ff07a2d`](https://github.com/nodejs/node/commit/032ff07a2d)] - **doc**: consistent use of word child process (Gireesh Punathil) [#55654](https://github.com/nodejs/node/pull/55654) +- \[[`16eef6461e`](https://github.com/nodejs/node/commit/16eef6461e)] - **doc**: clarity to available addon options (Preveen P) [#55715](https://github.com/nodejs/node/pull/55715) +- \[[`a7ce82e3cc`](https://github.com/nodejs/node/commit/a7ce82e3cc)] - **doc**: update `--max-semi-space-size` description (Joe Bowbeer) [#55495](https://github.com/nodejs/node/pull/55495) +- \[[`1bb461e2b6`](https://github.com/nodejs/node/commit/1bb461e2b6)] - **doc**: add write flag when open file as the demo code's intention (robberfree) [#54626](https://github.com/nodejs/node/pull/54626) +- \[[`8cd619f8d7`](https://github.com/nodejs/node/commit/8cd619f8d7)] - **doc**: remove mention of ECDH-ES in crypto.diffieHellman (Filip Skokan) [#55611](https://github.com/nodejs/node/pull/55611) +- \[[`4576d14d0f`](https://github.com/nodejs/node/commit/4576d14d0f)] - **doc**: improve c++ embedder API doc (Gireesh Punathil) [#55597](https://github.com/nodejs/node/pull/55597) +- \[[`12bd57fbaa`](https://github.com/nodejs/node/commit/12bd57fbaa)] - **doc**: capitalize "MIT License" (Aviv Keller) [#55575](https://github.com/nodejs/node/pull/55575) +- \[[`362b01b275`](https://github.com/nodejs/node/commit/362b01b275)] - **doc**: add esm examples to node:string_decoder (Alfredo González) [#55507](https://github.com/nodejs/node/pull/55507) +- \[[`29862ae105`](https://github.com/nodejs/node/commit/29862ae105)] - **doc**: add jazelly to collaborators (Jason Zhang) [#55531](https://github.com/nodejs/node/pull/55531) +- \[[`c1b63e5e6b`](https://github.com/nodejs/node/commit/c1b63e5e6b)] - **doc**: changed the command used to verify SHASUMS256 (adriancuadrado) [#55420](https://github.com/nodejs/node/pull/55420) +- \[[`9db657532b`](https://github.com/nodejs/node/commit/9db657532b)] - **doc**: add note about stdio streams in child_process (Ederin (Ed) Igharoro) [#55322](https://github.com/nodejs/node/pull/55322) +- \[[`475e478713`](https://github.com/nodejs/node/commit/475e478713)] - **doc**: add `isBigIntObject` to documentation (leviscar) [#55450](https://github.com/nodejs/node/pull/55450) +- \[[`0487e70475`](https://github.com/nodejs/node/commit/0487e70475)] - **doc**: remove outdated remarks about `highWaterMark` in fs (Ian Kerins) [#55462](https://github.com/nodejs/node/pull/55462) +- \[[`e9a8feb44a`](https://github.com/nodejs/node/commit/e9a8feb44a)] - **doc**: move Danielle Adams key to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399) +- \[[`bfbe651626`](https://github.com/nodejs/node/commit/bfbe651626)] - **doc**: move Bryan English key to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399) +- \[[`c1cab9b4d7`](https://github.com/nodejs/node/commit/c1cab9b4d7)] - **doc**: move Beth Griggs keys to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399) +- \[[`85d8eb397c`](https://github.com/nodejs/node/commit/85d8eb397c)] - **doc**: spell out condition restrictions (Jan Martin) [#55187](https://github.com/nodejs/node/pull/55187) +- \[[`de8de542b5`](https://github.com/nodejs/node/commit/de8de542b5)] - **doc**: add missing return values in buffer docs (Karl Horky) [#55273](https://github.com/nodejs/node/pull/55273) +- \[[`a5df7087fd`](https://github.com/nodejs/node/commit/a5df7087fd)] - **doc**: fix ambasador markdown list (Rafael Gonzaga) [#55361](https://github.com/nodejs/node/pull/55361) +- \[[`fbfcb0cc08`](https://github.com/nodejs/node/commit/fbfcb0cc08)] - **doc**: edit onboarding guide to clarify when mailmap addition is needed (Antoine du Hamel) [#55334](https://github.com/nodejs/node/pull/55334) +- \[[`e70abce96a`](https://github.com/nodejs/node/commit/e70abce96a)] - **doc**: fix the return type of outgoingMessage.setHeaders() (Jimmy Leung) [#55290](https://github.com/nodejs/node/pull/55290) +- \[[`030f155986`](https://github.com/nodejs/node/commit/030f155986)] - **esm**: mark import attributes and JSON module as stable (Nicolò Ribaudo) [#55333](https://github.com/nodejs/node/pull/55333) +- \[[`86cb697b81`](https://github.com/nodejs/node/commit/86cb697b81)] - **esm**: add a fallback when importer in not a file (Antoine du Hamel) [#55471](https://github.com/nodejs/node/pull/55471) +- \[[`8c8de30680`](https://github.com/nodejs/node/commit/8c8de30680)] - **esm**: fix inconsistency with `importAssertion` in `resolve` hook (Wei Zhu) [#55365](https://github.com/nodejs/node/pull/55365) +- \[[`a41b0e1247`](https://github.com/nodejs/node/commit/a41b0e1247)] - **events**: optimize EventTarget.addEventListener (Robert Nagy) [#55312](https://github.com/nodejs/node/pull/55312) +- \[[`2c6dcf7209`](https://github.com/nodejs/node/commit/2c6dcf7209)] - **fs**: make mutating `options` in Promises `readdir()` not affect results (LiviaMedeiros) [#56057](https://github.com/nodejs/node/pull/56057) +- \[[`9317feb829`](https://github.com/nodejs/node/commit/9317feb829)] - **fs**: lazily load ReadFileContext (Gürgün Dayıoğlu) [#55998](https://github.com/nodejs/node/pull/55998) +- \[[`739ee18430`](https://github.com/nodejs/node/commit/739ee18430)] - **http2**: support ALPNCallback option (ZYSzys) [#56187](https://github.com/nodejs/node/pull/56187) +- \[[`7ba6dcf180`](https://github.com/nodejs/node/commit/7ba6dcf180)] - **http2**: fix memory leak caused by premature listener removing (ywave620) [#55966](https://github.com/nodejs/node/pull/55966) +- \[[`4c15bd44a0`](https://github.com/nodejs/node/commit/4c15bd44a0)] - **http2**: fix client async storage persistence (Orgad Shaneh) [#55460](https://github.com/nodejs/node/pull/55460) +- \[[`ac57dadd9a`](https://github.com/nodejs/node/commit/ac57dadd9a)] - **lib**: add validation for options in compileFunction (Taejin Kim) [#56023](https://github.com/nodejs/node/pull/56023) +- \[[`a5b0d8900a`](https://github.com/nodejs/node/commit/a5b0d8900a)] - **lib**: remove startsWith/endsWith primordials for char checks (Gürgün Dayıoğlu) [#55407](https://github.com/nodejs/node/pull/55407) +- \[[`f10857828f`](https://github.com/nodejs/node/commit/f10857828f)] - **lib**: test_runner#mock:timers respeced timeout_max behaviour (BadKey) [#55375](https://github.com/nodejs/node/pull/55375) +- \[[`1a193bf256`](https://github.com/nodejs/node/commit/1a193bf256)] - **meta**: bump github/codeql-action from 3.27.0 to 3.27.5 (dependabot\[bot]) [#56103](https://github.com/nodejs/node/pull/56103) +- \[[`23f319803d`](https://github.com/nodejs/node/commit/23f319803d)] - **meta**: bump actions/checkout from 4.1.7 to 4.2.2 (dependabot\[bot]) [#56102](https://github.com/nodejs/node/pull/56102) +- \[[`a953301a1c`](https://github.com/nodejs/node/commit/a953301a1c)] - **meta**: bump step-security/harden-runner from 2.10.1 to 2.10.2 (dependabot\[bot]) [#56101](https://github.com/nodejs/node/pull/56101) +- \[[`c58065ae77`](https://github.com/nodejs/node/commit/c58065ae77)] - **meta**: bump actions/setup-node from 4.0.3 to 4.1.0 (dependabot\[bot]) [#56100](https://github.com/nodejs/node/pull/56100) +- \[[`12b0cecc20`](https://github.com/nodejs/node/commit/12b0cecc20)] - **meta**: add releasers as CODEOWNERS to proposal action (Rafael Gonzaga) [#56043](https://github.com/nodejs/node/pull/56043) +- \[[`070aa9d6a5`](https://github.com/nodejs/node/commit/070aa9d6a5)] - **meta**: bump actions/setup-python from 5.2.0 to 5.3.0 (dependabot\[bot]) [#55688](https://github.com/nodejs/node/pull/55688) +- \[[`7a46ffd18a`](https://github.com/nodejs/node/commit/7a46ffd18a)] - **meta**: bump actions/setup-node from 4.0.4 to 4.1.0 (dependabot\[bot]) [#55687](https://github.com/nodejs/node/pull/55687) +- \[[`8b4f2e0c6a`](https://github.com/nodejs/node/commit/8b4f2e0c6a)] - **meta**: bump rtCamp/action-slack-notify from 2.3.0 to 2.3.2 (dependabot\[bot]) [#55686](https://github.com/nodejs/node/pull/55686) +- \[[`024c5b2ab3`](https://github.com/nodejs/node/commit/024c5b2ab3)] - **meta**: bump actions/upload-artifact from 4.4.0 to 4.4.3 (dependabot\[bot]) [#55685](https://github.com/nodejs/node/pull/55685) +- \[[`3d06971a15`](https://github.com/nodejs/node/commit/3d06971a15)] - **meta**: bump actions/cache from 4.0.2 to 4.1.2 (dependabot\[bot]) [#55684](https://github.com/nodejs/node/pull/55684) +- \[[`c33de63a86`](https://github.com/nodejs/node/commit/c33de63a86)] - **meta**: bump actions/checkout from 4.2.0 to 4.2.2 (dependabot\[bot]) [#55683](https://github.com/nodejs/node/pull/55683) +- \[[`ccc1ea0576`](https://github.com/nodejs/node/commit/ccc1ea0576)] - **meta**: bump github/codeql-action from 3.26.10 to 3.27.0 (dependabot\[bot]) [#55682](https://github.com/nodejs/node/pull/55682) +- \[[`9c2d0fd242`](https://github.com/nodejs/node/commit/9c2d0fd242)] - **meta**: make review-wanted message minimal (Aviv Keller) [#55607](https://github.com/nodejs/node/pull/55607) +- \[[`0c14cae2b2`](https://github.com/nodejs/node/commit/0c14cae2b2)] - **meta**: show PR/issue title on review-wanted (Aviv Keller) [#55606](https://github.com/nodejs/node/pull/55606) +- \[[`aeae7e1e6f`](https://github.com/nodejs/node/commit/aeae7e1e6f)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#55381](https://github.com/nodejs/node/pull/55381) +- \[[`6d7b78c3d8`](https://github.com/nodejs/node/commit/6d7b78c3d8)] - **meta**: change color to blue notify review-wanted (Rafael Gonzaga) [#55423](https://github.com/nodejs/node/pull/55423) +- \[[`7441e289db`](https://github.com/nodejs/node/commit/7441e289db)] - **meta**: bump codecov/codecov-action from 4.5.0 to 4.6.0 (dependabot\[bot]) [#55222](https://github.com/nodejs/node/pull/55222) +- \[[`158c8ad77c`](https://github.com/nodejs/node/commit/158c8ad77c)] - **meta**: bump github/codeql-action from 3.26.6 to 3.26.10 (dependabot\[bot]) [#55221](https://github.com/nodejs/node/pull/55221) +- \[[`8d3d4a9fab`](https://github.com/nodejs/node/commit/8d3d4a9fab)] - **meta**: bump step-security/harden-runner from 2.9.1 to 2.10.1 (dependabot\[bot]) [#55220](https://github.com/nodejs/node/pull/55220) +- \[[`6797a35a5b`](https://github.com/nodejs/node/commit/6797a35a5b)] - **module**: prevent main thread exiting before esm worker ends (Shima Ryuhei) [#56183](https://github.com/nodejs/node/pull/56183) +- \[[`bd99bf109f`](https://github.com/nodejs/node/commit/bd99bf109f)] - **node-api**: allow napi_delete_reference in finalizers (Chengzhong Wu) [#55620](https://github.com/nodejs/node/pull/55620) +- \[[`6308c18dbb`](https://github.com/nodejs/node/commit/6308c18dbb)] - **report**: fix network queries in getReport libuv with exclude-network (Adrien Foulon) [#55602](https://github.com/nodejs/node/pull/55602) +- \[[`ff2eec7275`](https://github.com/nodejs/node/commit/ff2eec7275)] - **sea**: only assert snapshot main function for main threads (Joyee Cheung) [#56120](https://github.com/nodejs/node/pull/56120) +- \[[`f9f3003de7`](https://github.com/nodejs/node/commit/f9f3003de7)] - **src**: fix outdated js2c.cc references (Chengzhong Wu) [#56133](https://github.com/nodejs/node/pull/56133) +- \[[`a882536596`](https://github.com/nodejs/node/commit/a882536596)] - **src**: fix kill signal on Windows (Hüseyin Açacak) [#55514](https://github.com/nodejs/node/pull/55514) +- \[[`df1002438a`](https://github.com/nodejs/node/commit/df1002438a)] - **src**: improve `node:os` userInfo performance (Yagiz Nizipli) [#55719](https://github.com/nodejs/node/pull/55719) +- \[[`f17416ec3e`](https://github.com/nodejs/node/commit/f17416ec3e)] - **src**: fix dns crash when failed to create NodeAresTask (theanarkh) [#55521](https://github.com/nodejs/node/pull/55521) +- \[[`8d5b8c31d8`](https://github.com/nodejs/node/commit/8d5b8c31d8)] - **src**: use NewFromUtf8Literal in NODE_DEFINE_CONSTANT (Charles Kerr) [#55581](https://github.com/nodejs/node/pull/55581) +- \[[`0977bb6c1d`](https://github.com/nodejs/node/commit/0977bb6c1d)] - **src**: remove icu based `ToASCII` and `ToUnicode` (Yagiz Nizipli) [#55156](https://github.com/nodejs/node/pull/55156) +- \[[`72817072e2`](https://github.com/nodejs/node/commit/72817072e2)] - **src**: fix winapi_strerror error string (Hüseyin Açacak) [#55207](https://github.com/nodejs/node/pull/55207) +- \[[`6f47f53f90`](https://github.com/nodejs/node/commit/6f47f53f90)] - **src,lib**: optimize nodeTiming.uvMetricsInfo (RafaelGSS) [#55614](https://github.com/nodejs/node/pull/55614) +- \[[`ac583d4549`](https://github.com/nodejs/node/commit/ac583d4549)] - **stream**: propagate AbortSignal reason (Marvin ROGER) [#55473](https://github.com/nodejs/node/pull/55473) +- \[[`1c8b474319`](https://github.com/nodejs/node/commit/1c8b474319)] - **test**: skip test-buffer-tostring-range on smartos (Marco Ippolito) [#56727](https://github.com/nodejs/node/pull/56727) +- \[[`39d608f9d8`](https://github.com/nodejs/node/commit/39d608f9d8)] - **test**: mark test-http-server-request-timeouts-mixed as flaky (Joyee Cheung) [#56503](https://github.com/nodejs/node/pull/56503) +- \[[`5c3f18be04`](https://github.com/nodejs/node/commit/5c3f18be04)] - **test**: temporary remove resource check from fs read-write (Rafael Gonzaga) [#56789](https://github.com/nodejs/node/pull/56789) +- \[[`4196aaf033`](https://github.com/nodejs/node/commit/4196aaf033)] - **test**: remove exludes for sea tests on PPC (Michael Dawson) [#56217](https://github.com/nodejs/node/pull/56217) +- \[[`3ea738fc26`](https://github.com/nodejs/node/commit/3ea738fc26)] - **test**: remove `hasOpenSSL3x` utils (Antoine du Hamel) [#56164](https://github.com/nodejs/node/pull/56164) +- \[[`21e21a270e`](https://github.com/nodejs/node/commit/21e21a270e)] - **test**: remove test-fs-utimes flaky designation (Luigi Pinca) [#56052](https://github.com/nodejs/node/pull/56052) +- \[[`e464c6f7a5`](https://github.com/nodejs/node/commit/e464c6f7a5)] - **test**: move test-worker-arraybuffer-zerofill to parallel (Luigi Pinca) [#56053](https://github.com/nodejs/node/pull/56053) +- \[[`e99584cd57`](https://github.com/nodejs/node/commit/e99584cd57)] - **test**: make HTTP/1.0 connection test more robust (Arne Keller) [#55959](https://github.com/nodejs/node/pull/55959) +- \[[`2d03f87ef7`](https://github.com/nodejs/node/commit/2d03f87ef7)] - **test**: convert readdir test to use test runner (Thomas Chetwin) [#55750](https://github.com/nodejs/node/pull/55750) +- \[[`207562fa3d`](https://github.com/nodejs/node/commit/207562fa3d)] - **test**: make x509 crypto tests work with BoringSSL (Shelley Vohr) [#55927](https://github.com/nodejs/node/pull/55927) +- \[[`a17d9e1acf`](https://github.com/nodejs/node/commit/a17d9e1acf)] - **test**: fix determining lower priority (Livia Medeiros) [#55908](https://github.com/nodejs/node/pull/55908) +- \[[`50b6729d8c`](https://github.com/nodejs/node/commit/50b6729d8c)] - **test**: increase coverage of `pathToFileURL` (Antoine du Hamel) [#55493](https://github.com/nodejs/node/pull/55493) +- \[[`0aa9e74027`](https://github.com/nodejs/node/commit/0aa9e74027)] - **test**: improve test coverage for child process message sending (Juan José) [#55710](https://github.com/nodejs/node/pull/55710) +- \[[`ebdbbc3ec8`](https://github.com/nodejs/node/commit/ebdbbc3ec8)] - **test**: ensure that test priority is not higher than current priority (Livia Medeiros) [#55739](https://github.com/nodejs/node/pull/55739) +- \[[`b40789e085`](https://github.com/nodejs/node/commit/b40789e085)] - **test**: add buffer to fs_permission tests (Rafael Gonzaga) [#55734](https://github.com/nodejs/node/pull/55734) +- \[[`a9998799be`](https://github.com/nodejs/node/commit/a9998799be)] - **test**: improve test coverage for `ServerResponse` (Juan José) [#55711](https://github.com/nodejs/node/pull/55711) +- \[[`d2421f3c92`](https://github.com/nodejs/node/commit/d2421f3c92)] - **test**: ignore unrelated events in FW watch tests (Carlos Espa) [#55605](https://github.com/nodejs/node/pull/55605) +- \[[`0ac0afc4a9`](https://github.com/nodejs/node/commit/0ac0afc4a9)] - **test**: refactor some esm tests (Antoine du Hamel) [#55472](https://github.com/nodejs/node/pull/55472) +- \[[`0f8b8269d1`](https://github.com/nodejs/node/commit/0f8b8269d1)] - **test**: split up test-runner-mock-timers test (Julian Gassner) [#55506](https://github.com/nodejs/node/pull/55506) +- \[[`8f6462f40b`](https://github.com/nodejs/node/commit/8f6462f40b)] - **test**: avoid `apply()` calls with large amount of elements (Livia Medeiros) [#55501](https://github.com/nodejs/node/pull/55501) +- \[[`e9b0ff482b`](https://github.com/nodejs/node/commit/e9b0ff482b)] - **test**: increase test coverage for `http.OutgoingMessage.appendHeader()` (Juan José) [#55467](https://github.com/nodejs/node/pull/55467) +- \[[`d5ad060073`](https://github.com/nodejs/node/commit/d5ad060073)] - **test**: fix addons and node-api test assumptions (Antoine du Hamel) [#55441](https://github.com/nodejs/node/pull/55441) +- \[[`a28376bb85`](https://github.com/nodejs/node/commit/a28376bb85)] - **test**: deflake `test-cluster-shared-handle-bind-privileged-port` (Aviv Keller) [#55378](https://github.com/nodejs/node/pull/55378) +- \[[`22c07867d1`](https://github.com/nodejs/node/commit/22c07867d1)] - **test**: remove duplicate tests (Luigi Pinca) [#55393](https://github.com/nodejs/node/pull/55393) +- \[[`5489656b35`](https://github.com/nodejs/node/commit/5489656b35)] - **test**: update test_util.cc for coverage (minkyu_kim) [#55291](https://github.com/nodejs/node/pull/55291) +- \[[`ceafb3250d`](https://github.com/nodejs/node/commit/ceafb3250d)] - **test,crypto**: make crypto tests work with BoringSSL (Shelley Vohr) [#55491](https://github.com/nodejs/node/pull/55491) +- \[[`7021b3b276`](https://github.com/nodejs/node/commit/7021b3b276)] - **test_runner**: simplify hook running logic (Colin Ihrig) [#55963](https://github.com/nodejs/node/pull/55963) +- \[[`d9fd632f56`](https://github.com/nodejs/node/commit/d9fd632f56)] - **test_runner**: error on mocking an already mocked date (Aviv Keller) [#55858](https://github.com/nodejs/node/pull/55858) +- \[[`3fcca16374`](https://github.com/nodejs/node/commit/3fcca16374)] - **test_runner**: add support for scheduler.wait on mock timers (Erick Wendel) [#55244](https://github.com/nodejs/node/pull/55244) +- \[[`f67147ec47`](https://github.com/nodejs/node/commit/f67147ec47)] - **tools**: update github_reporter to 1.7.2 (Node.js GitHub Bot) [#56205](https://github.com/nodejs/node/pull/56205) +- \[[`5c819f1043`](https://github.com/nodejs/node/commit/5c819f1043)] - **tools**: add REPLACEME check to workflow (Mert Can Altin) [#56251](https://github.com/nodejs/node/pull/56251) +- \[[`b24a85b00b`](https://github.com/nodejs/node/commit/b24a85b00b)] - **tools**: use `github.actor` instead of bot username for release proposals (Antoine du Hamel) [#56232](https://github.com/nodejs/node/pull/56232) +- \[[`33cd7d3d8c`](https://github.com/nodejs/node/commit/33cd7d3d8c)] - **tools**: fix release proposal linter to support more than 1 folk preparing (Antoine du Hamel) [#56203](https://github.com/nodejs/node/pull/56203) +- \[[`10d55e3d73`](https://github.com/nodejs/node/commit/10d55e3d73)] - **tools**: use commit title as PR title when creating release proposal (Antoine du Hamel) [#56165](https://github.com/nodejs/node/pull/56165) +- \[[`b3d40e3be5`](https://github.com/nodejs/node/commit/b3d40e3be5)] - **tools**: improve release proposal PR opening (Antoine du Hamel) [#56161](https://github.com/nodejs/node/pull/56161) +- \[[`13455ca9ce`](https://github.com/nodejs/node/commit/13455ca9ce)] - **tools**: update `create-release-proposal` workflow (Antoine du Hamel) [#56054](https://github.com/nodejs/node/pull/56054) +- \[[`851a3d7d8d`](https://github.com/nodejs/node/commit/851a3d7d8d)] - **tools**: fix update-undici script (Michaël Zasso) [#56069](https://github.com/nodejs/node/pull/56069) +- \[[`e1635fbd4e`](https://github.com/nodejs/node/commit/e1635fbd4e)] - **tools**: allow dispatch of `tools.yml` from forks (Antoine du Hamel) [#56008](https://github.com/nodejs/node/pull/56008) +- \[[`5f15d8b3f5`](https://github.com/nodejs/node/commit/5f15d8b3f5)] - **tools**: fix nghttp3 updater script (Antoine du Hamel) [#56007](https://github.com/nodejs/node/pull/56007) +- \[[`bbf39b8c46`](https://github.com/nodejs/node/commit/bbf39b8c46)] - **tools**: filter release keys to reduce interactivity (Antoine du Hamel) [#55950](https://github.com/nodejs/node/pull/55950) +- \[[`954e60b87d`](https://github.com/nodejs/node/commit/954e60b87d)] - **tools**: update WPT updater (Antoine du Hamel) [#56003](https://github.com/nodejs/node/pull/56003) +- \[[`1e09d258da`](https://github.com/nodejs/node/commit/1e09d258da)] - **tools**: add WPT updater for specific subsystems (Mert Can Altin) [#54460](https://github.com/nodejs/node/pull/54460) +- \[[`b95c4f5bf0`](https://github.com/nodejs/node/commit/b95c4f5bf0)] - **tools**: use tokenless Codecov uploads (Michaël Zasso) [#55943](https://github.com/nodejs/node/pull/55943) +- \[[`6327554706`](https://github.com/nodejs/node/commit/6327554706)] - **tools**: add linter for release commit proposals (Antoine du Hamel) [#55923](https://github.com/nodejs/node/pull/55923) +- \[[`aad478e58d`](https://github.com/nodejs/node/commit/aad478e58d)] - **tools**: fix exclude labels for commit-queue (Richard Lau) [#55809](https://github.com/nodejs/node/pull/55809) +- \[[`1c8c881aef`](https://github.com/nodejs/node/commit/1c8c881aef)] - **tools**: make commit-queue check blocked label (Marco Ippolito) [#55781](https://github.com/nodejs/node/pull/55781) +- \[[`c3913f9c87`](https://github.com/nodejs/node/commit/c3913f9c87)] - **tools**: fix c-ares updater script for Node.js 18 (Richard Lau) [#55717](https://github.com/nodejs/node/pull/55717) +- \[[`adfc2f993a`](https://github.com/nodejs/node/commit/adfc2f993a)] - **tools**: fix root certificate updater (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681) +- \[[`d336f8de15`](https://github.com/nodejs/node/commit/d336f8de15)] - **tools**: compact jq output in daily-wpt-fyi.yml action (Filip Skokan) [#55695](https://github.com/nodejs/node/pull/55695) +- \[[`cdb7839a0c`](https://github.com/nodejs/node/commit/cdb7839a0c)] - **tools**: run daily WPT.fyi report on all supported releases (Filip Skokan) [#55619](https://github.com/nodejs/node/pull/55619) +- \[[`274d0b4062`](https://github.com/nodejs/node/commit/274d0b4062)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#55470](https://github.com/nodejs/node/pull/55470) +- \[[`3dceeb8b15`](https://github.com/nodejs/node/commit/3dceeb8b15)] - **tools**: add script to synch c-ares source lists (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445) +- \[[`bd0ec907da`](https://github.com/nodejs/node/commit/bd0ec907da)] - **url**: handle "unsafe" characters properly in `pathToFileURL` (Antoine du Hamel) [#54545](https://github.com/nodejs/node/pull/54545) +- \[[`83137bceb6`](https://github.com/nodejs/node/commit/83137bceb6)] - **util**: fix Latin1 decoding to return string output (Mert Can Altin) [#56222](https://github.com/nodejs/node/pull/56222) +- \[[`195cc42935`](https://github.com/nodejs/node/commit/195cc42935)] - **util**: do not rely on mutable `Object` and `Function`' `constructor` prop (Antoine du Hamel) [#56188](https://github.com/nodejs/node/pull/56188) +- \[[`cca7c518de`](https://github.com/nodejs/node/commit/cca7c518de)] - **util**: add fast path for Latin1 decoding (Mert Can Altin) [#55275](https://github.com/nodejs/node/pull/55275) +- \[[`7ed346d8fd`](https://github.com/nodejs/node/commit/7ed346d8fd)] - **util**: do not catch on circular `@@toStringTag` errors (Aviv Keller) [#55544](https://github.com/nodejs/node/pull/55544) +- \[[`aa031b3eec`](https://github.com/nodejs/node/commit/aa031b3eec)] - **worker**: fix crash when a worker joins after exit (Stephen Belanger) [#56191](https://github.com/nodejs/node/pull/56191) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.18.3/node-v20.18.3-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.18.3/node-v20.18.3-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.18.3/node-v20.18.3-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.18.3/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.18.3/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.18.3/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.18.3/node-v20.18.3.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.18.3/node-v20.18.3-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.18.3/node-v20.18.3-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.18.3/node-v20.18.3-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.18.3/node-v20.18.3-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.18.3/node-v20.18.3-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.18.3/node-v20.18.3-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.18.3/node-v20.18.3-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.18.3/node-v20.18.3-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.18.3/node-v20.18.3.tar.gz \ +Other release files: https://nodejs.org/dist/v20.18.3/ \ +Documentation: https://nodejs.org/docs/v20.18.3/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +c0f0c72b80a67ef32402fda206b10a101b1c309158d850dbbedc9e751738d300 node-v20.18.3-aix-ppc64.tar.gz +3d4737a6bdf55ae372148f31d011fc93ba1fdc432c853168c03cbbe0cd1d6b48 node-v20.18.3-arm64.msi +1f15b7ed18a580af31cf32bc126572292d820f547bf55bf9cdce08041a24e1d9 node-v20.18.3-darwin-arm64.tar.gz +78d8a583a983b4818f30b4e96b7458c1a4cf33397e34b08acdae3e5727026030 node-v20.18.3-darwin-arm64.tar.xz +ba668f64df9239843fefcef095ee539f5ac5aa1b0fc15a71f1ecca16abedec7a node-v20.18.3-darwin-x64.tar.gz +bef0e73e30a14cbaed6c83c1eb65f42c5a212d8a8aab24ea5ceadc1faf003f9e node-v20.18.3-darwin-x64.tar.xz +d660b43357541d13cb7756046c7b1c7e4a6630f2d086873740012953e33c1872 node-v20.18.3-headers.tar.gz +070c0faecf160e649eada2153f5028fb363b115c6df2d86efa384d74eef0967b node-v20.18.3-headers.tar.xz +93a9df19238adfaa289f4784041d03edaf2fdd89fbb247faffca2fe4a1000703 node-v20.18.3-linux-arm64.tar.gz +c03412ab9c0ed30468e4d03e56d2e35c5ae761a98deb16727c7af2fe5be34700 node-v20.18.3-linux-arm64.tar.xz +8a84eb34287db6a273066934d7195e429f57b91686b62fc19497210204a2b3de node-v20.18.3-linux-armv7l.tar.gz +c630c27fc5bc6ffcdf82deb7806688cc42c1208724588a1a6392702d75cbf85d node-v20.18.3-linux-armv7l.tar.xz +787612cd7a2461b5340fee1406d8f958e9bb9349030189a03d37fc92529d2f74 node-v20.18.3-linux-ppc64le.tar.gz +73bcc4e55049a601cb9d6542cb58cb529af5a13b1548c8fa8a0806fcc94561b3 node-v20.18.3-linux-ppc64le.tar.xz +72156704416f4c32f8eb72e9ee59a0fcacbd972f28b2e05b9c888c7098acd2d2 node-v20.18.3-linux-s390x.tar.gz +cd83c11dbe1e3dfde022b8f2814dce0ad51f7d0855682bfa52692234a0f4b962 node-v20.18.3-linux-s390x.tar.xz +9fc3952da39b20d1fcfdb777b198cc035485afbbb1004b4df93f35245d61151e node-v20.18.3-linux-x64.tar.gz +595bcc9a28e6d1ee5fc7277b5c3cb029275b98ec0524e162a0c566c992a7ee5c node-v20.18.3-linux-x64.tar.xz +39861dd7de5336e0dd21bbb9ad143443165af24fcdef4a2b3657ca146eb671b6 node-v20.18.3.pkg +eba088fa562735140b283c7bb33f53e026ccd5febe68c52c5737ef6e577ec874 node-v20.18.3.tar.gz +0674f16f3bc284c11724cd3f7c2a43f7c2c13d2eb7a872dd0db198f3d588c5f2 node-v20.18.3.tar.xz +8c754eee1691257517cfb166dc3bcb04dc4a705f2dab8dc8c345bd63c912b2b3 node-v20.18.3-win-arm64.7z +69598ba58c0e40bb46dc423e4db939adbad4a74ffbb8e377a01ffdaa187ebbf0 node-v20.18.3-win-arm64.zip +62c4e4e0320189c02d3cb2df0c1694699e832fae0168eb6d1bae34bc515b3c50 node-v20.18.3-win-x64.7z +11d483dfba711bc7c9bcb513e80a2941be0c2e7cbf62753755785b9a6e80a731 node-v20.18.3-win-x64.zip +7dfba76517de8394080931992e8ff1716f5a31d2f4a4848b00656c8502b6dd39 node-v20.18.3-win-x86.7z +00d125e6a4cbd4dec2068d76bd27e3fc680bcc145559ef1bcb77b3f48d3d458e node-v20.18.3-win-x86.zip +18bf5b334f70ecd310c5413397da4d241521c700e032abb12aced8aba253425b node-v20.18.3-x64.msi +8c193b46140921a6d58e22e4992d7f725e0ba09781df6a1f07bd4be85b725fd7 node-v20.18.3-x86.msi +4258e333f4b95060681d61bffa762542a8068547d3dffebe57c575b38d380dda win-arm64/node.exe +58795bcd44e8023ff443dedabf7f9af928732a51befc5324082aafe56e0f5eb0 win-arm64/node.lib +33a21b130357c6dedbf20c22aae95f4431e2ca9e964ee73ad03acb5a0631df05 win-arm64/node_pdb.7z +d3c6956d3be10706bde1387db6a0f4329bbd57d8146ade299664f65f0d5e8956 win-arm64/node_pdb.zip +528a9aa64888a2a3ba71c6aea89434dd5ab5cb3caa9f0f31345cf5facf685ab0 win-x64/node.exe +5a16801c62c34c8056744ac339950c970b2b76f39b2d02afef4112ff51b74f1a win-x64/node.lib +34b762a9801769556a280f0f744b64aab8435e7e91588a346d6f826afdf1e882 win-x64/node_pdb.7z +d154fc9fc47bb1a6361ddfa81b063061432a3d92eff7b1ef8cf5cbc0e5f910db win-x64/node_pdb.zip +feb38faae00f7c6b194077cf003349227fd3213649446ed60655ce939f7ef50f win-x86/node.exe +fcc6ab34ebd4ad3a44de12376c3822c2ebc41febaa1ed4c4221ddc239f79f61c win-x86/node.lib +8f38a0a2bd21dfb55defafed2ff35b4fea46cc06ca77e62dd263fa54e45230b9 win-x86/node_pdb.7z +b2f2825180d95fdb27fce904a7687fcb4309b2eac5dd8d39f2191b0e393b1f83 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEzGj1oxBv9EgyLkjtJ/XjjVsKIV8FAmeqBNMACgkQJ/XjjVsK +IV/klw/9EAp5hDWbsC+64CyEl1WARMR2fwDNzm0PNK8FGmTFHLkXsPSdz+svcHaf +DLmE/QCVMnD1GWWlWo6QjGLruHZDUgsNoMSBXkIMioSss3KASfUJ1u+L3kdmfCM3 +QcQO4zYhRoRam8e2/TBh02PjDi/tfJok5wbLEeBZE8GRUHkpxr3W70v2ekOcXdzL +cACgDJSAukLW1qowo57KNaEOy1nPEpZB2WNB3MbMuk+T2m37Unz4tUqJrkyDrwq5 +BwDdEtDoaYp4gZoBd1Jr96M2DsD8buWKeonRAAfzdVexJV2xBrWro+ntYXp1F2tW +ba39vjVqCYz0iLxWC398PBkgV/q5r74PqGUx3F27dzbkI8sPh42ad5dv4sdybu6z +VlFmIVbZu0O3D5sm6bYgtgVRvhrzAFMm1+4MEIf1Pghe8N+V0FeKLRbyjAApHz1+ +OinXZjoyIlswwAYPtTuygXkOAj7ZCgrIPwLDthWe10mE+zqNtiLQLy82G6N9B6yX +3y7WLFjbTkX5wQuCbTDHNhNmTs+h49wkD3h1XBqUaIUwJ05P0aCBzhJsN8F9MA2U +f49m1D1vIxEsu7+wYWdFp/hH+usd6H2U4fkqQNgn0MiP0G5r0GtABrBSkLuYcCy0 +yRuFd7G7mtD4qUr4nslvjub++HjGcmfN+MHYgFcHa+NMim7NspM= +=D03e +-----END PGP SIGNATURE----- +``` From 882daf630712769557e3ee5c255e40da7c907b90 Mon Sep 17 00:00:00 2001 From: Arthur <arthurjdam@gmail.com> Date: Mon, 10 Feb 2025 13:59:08 -0800 Subject: [PATCH 0302/1385] style: code fallback font (#7480) * style: Use ui-monospace as fallback font for IBM_Plex_Mono * fix(/learn/typescript/publishing-a-ts-package): File structure --- apps/site/next.fonts.ts | 1 + .../pages/en/learn/typescript/publishing-a-ts-package.md | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/site/next.fonts.ts b/apps/site/next.fonts.ts index 80b43a429c980..eb664bb76e978 100644 --- a/apps/site/next.fonts.ts +++ b/apps/site/next.fonts.ts @@ -16,5 +16,6 @@ export const OPEN_SANS = Open_Sans({ export const IBM_PLEX_MONO = IBM_Plex_Mono({ weight: ['400', '600'], subsets: ['latin'], + fallback: ['ui-monospace'], variable: '--font-ibm-plex-mono', }); diff --git a/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md b/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md index 2813dac320bb0..1a289ac1619f7 100644 --- a/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md +++ b/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md @@ -61,10 +61,10 @@ example-ts-pkg/ │ │ ├ foo.fixture.js │ │ ├ main.test.ts │ ├ main.ts -│ └ some-util.ts -│ │ ├ __test__ -│ │ └ some-util.test.ts -│ │ └ some-util.ts +│ └ some-util/ +│ ├ __test__ +│ │ └ some-util.test.ts +│ └ some-util.ts ├ LICENSE ├ package.json ├ README.md From c72e35a3ba20874eacd2095b73c32991b22a370c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2025 10:05:11 +1000 Subject: [PATCH 0303/1385] meta: bump the testing group with 2 updates (#7448) Bumps the testing group with 2 updates: [@testing-library/react](https://github.com/testing-library/react-testing-library) and [@testing-library/user-event](https://github.com/testing-library/user-event). Updates `@testing-library/react` from 16.1.0 to 16.2.0 - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v16.1.0...v16.2.0) Updates `@testing-library/user-event` from 14.5.2 to 14.6.1 - [Release notes](https://github.com/testing-library/user-event/releases) - [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/user-event/compare/v14.5.2...v14.6.1) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing - dependency-name: "@testing-library/user-event" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 4 ++-- package-lock.json | 31 +++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 29d955b462083..d692b547c90a7 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -87,8 +87,8 @@ "@storybook/addon-webpack5-compiler-swc": "^2.0.0", "@storybook/react-webpack5": "^8.5.2", "@testing-library/jest-dom": "~6.6.3", - "@testing-library/react": "~16.1.0", - "@testing-library/user-event": "~14.5.2", + "@testing-library/react": "~16.2.0", + "@testing-library/user-event": "~14.6.1", "@types/jest": "29.5.14", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", diff --git a/package-lock.json b/package-lock.json index 637873ab5805a..a31424fd37c0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -98,8 +98,8 @@ "@storybook/addon-webpack5-compiler-swc": "^2.0.0", "@storybook/react-webpack5": "^8.5.2", "@testing-library/jest-dom": "~6.6.3", - "@testing-library/react": "~16.1.0", - "@testing-library/user-event": "~14.5.2", + "@testing-library/react": "~16.2.0", + "@testing-library/user-event": "~14.6.1", "@types/jest": "29.5.14", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", @@ -5241,6 +5241,20 @@ "yarn": ">=1" } }, + "node_modules/@storybook/addon-interactions/node_modules/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, "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", @@ -6153,10 +6167,11 @@ } }, "node_modules/@testing-library/react": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.1.0.tgz", - "integrity": "sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.2.0.tgz", + "integrity": "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -6180,9 +6195,9 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "dev": true, "license": "MIT", "engines": { From a6c0ad967033305509a358015e5c6f426743f814 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Tue, 11 Feb 2025 11:54:51 +0100 Subject: [PATCH 0304/1385] Blog: v22.14.0 release post (#7488) Refs: https://github.com/nodejs/node/pull/56910 --- apps/site/pages/en/blog/release/v22.14.0.md | 316 ++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v22.14.0.md diff --git a/apps/site/pages/en/blog/release/v22.14.0.md b/apps/site/pages/en/blog/release/v22.14.0.md new file mode 100644 index 0000000000000..45c9a2074eb2c --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.14.0.md @@ -0,0 +1,316 @@ +--- +date: '2025-02-11T10:46:49.097Z' +category: release +title: Node v22.14.0 (LTS) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-02-11, Version 22.14.0 'Jod' (LTS), @aduh95 + +### Notable Changes + +- \[[`82a9000e9e`](https://github.com/nodejs/node/commit/82a9000e9e)] - **crypto**: update root certificates to NSS 3.107 (Node.js GitHub Bot) [#56566](https://github.com/nodejs/node/pull/56566) +- \[[`b7fe54fc88`](https://github.com/nodejs/node/commit/b7fe54fc88)] - **(SEMVER-MINOR)** **fs**: allow `exclude` option in globs to accept glob patterns (Daeyeon Jeong) [#56489](https://github.com/nodejs/node/pull/56489) +- \[[`3ac92ef607`](https://github.com/nodejs/node/commit/3ac92ef607)] - **(SEMVER-MINOR)** **lib**: add typescript support to STDIN eval (Marco Ippolito) [#56359](https://github.com/nodejs/node/pull/56359) +- \[[`1614e8e7bc`](https://github.com/nodejs/node/commit/1614e8e7bc)] - **(SEMVER-MINOR)** **module**: add ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX (Marco Ippolito) [#56610](https://github.com/nodejs/node/pull/56610) +- \[[`6d6cffa9cc`](https://github.com/nodejs/node/commit/6d6cffa9cc)] - **(SEMVER-MINOR)** **module**: add `findPackageJSON` util (Jacob Smith) [#55412](https://github.com/nodejs/node/pull/55412) +- \[[`d35333ae18`](https://github.com/nodejs/node/commit/d35333ae18)] - **(SEMVER-MINOR)** **process**: add process.ref() and process.unref() methods (James M Snell) [#56400](https://github.com/nodejs/node/pull/56400) +- \[[`07ff3ddcb5`](https://github.com/nodejs/node/commit/07ff3ddcb5)] - **(SEMVER-MINOR)** **sqlite**: support TypedArray and DataView in `StatementSync` (Alex Yang) [#56385](https://github.com/nodejs/node/pull/56385) +- \[[`94d3fe1b62`](https://github.com/nodejs/node/commit/94d3fe1b62)] - **(SEMVER-MINOR)** **src**: add --disable-sigusr1 to prevent signal i/o thread (Rafael Gonzaga) [#56441](https://github.com/nodejs/node/pull/56441) +- \[[`5afffb4415`](https://github.com/nodejs/node/commit/5afffb4415)] - **(SEMVER-MINOR)** **src,worker**: add isInternalWorker (Carlos Espa) [#56469](https://github.com/nodejs/node/pull/56469) +- \[[`697a851fb3`](https://github.com/nodejs/node/commit/697a851fb3)] - **(SEMVER-MINOR)** **test_runner**: add TestContext.prototype.waitFor() (Colin Ihrig) [#56595](https://github.com/nodejs/node/pull/56595) +- \[[`047537b48c`](https://github.com/nodejs/node/commit/047537b48c)] - **(SEMVER-MINOR)** **test_runner**: add t.assert.fileSnapshot() (Colin Ihrig) [#56459](https://github.com/nodejs/node/pull/56459) +- \[[`926cf84e95`](https://github.com/nodejs/node/commit/926cf84e95)] - **(SEMVER-MINOR)** **test_runner**: add assert.register() API (Colin Ihrig) [#56434](https://github.com/nodejs/node/pull/56434) +- \[[`c658a8afdf`](https://github.com/nodejs/node/commit/c658a8afdf)] - **(SEMVER-MINOR)** **worker**: add eval ts input (Marco Ippolito) [#56394](https://github.com/nodejs/node/pull/56394) + +### Commits + +- \[[`bad1ad8650`](https://github.com/nodejs/node/commit/bad1ad8650)] - **assert**: make myers_diff function more performant (Giovanni Bucci) [#56303](https://github.com/nodejs/node/pull/56303) +- \[[`e222e36f3b`](https://github.com/nodejs/node/commit/e222e36f3b)] - **assert**: make partialDeepStrictEqual work with urls and File prototypes (Giovanni Bucci) [#56231](https://github.com/nodejs/node/pull/56231) +- \[[`e232789fe2`](https://github.com/nodejs/node/commit/e232789fe2)] - **assert**: show diff when doing partial comparisons (Giovanni Bucci) [#56211](https://github.com/nodejs/node/pull/56211) +- \[[`c99de1fdcf`](https://github.com/nodejs/node/commit/c99de1fdcf)] - **assert**: make partialDeepStrictEqual throw when comparing \[0] with \[-0] (Giovanni) [#56237](https://github.com/nodejs/node/pull/56237) +- \[[`2386fd5840`](https://github.com/nodejs/node/commit/2386fd5840)] - **benchmark**: add validateStream to styleText bench (Rafael Gonzaga) [#56556](https://github.com/nodejs/node/pull/56556) +- \[[`b197dfa7ec`](https://github.com/nodejs/node/commit/b197dfa7ec)] - **build**: fix GN build for ngtcp2 (Cheng) [#56300](https://github.com/nodejs/node/pull/56300) +- \[[`2a3cdd34ff`](https://github.com/nodejs/node/commit/2a3cdd34ff)] - **build**: test macos-13 on GitHub actions (Michaël Zasso) [#56307](https://github.com/nodejs/node/pull/56307) +- \[[`12f716be0a`](https://github.com/nodejs/node/commit/12f716be0a)] - **build**: build v8 with -fvisibility=hidden on macOS (Joyee Cheung) [#56275](https://github.com/nodejs/node/pull/56275) +- \[[`c5ca15bd34`](https://github.com/nodejs/node/commit/c5ca15bd34)] - **child_process**: fix parsing messages with splitted length field (Maksim Gorkov) [#56106](https://github.com/nodejs/node/pull/56106) +- \[[`8346b8fc2c`](https://github.com/nodejs/node/commit/8346b8fc2c)] - **crypto**: add missing return value check (Michael Dawson) [#56615](https://github.com/nodejs/node/pull/56615) +- \[[`82a9000e9e`](https://github.com/nodejs/node/commit/82a9000e9e)] - **crypto**: update root certificates to NSS 3.107 (Node.js GitHub Bot) [#56566](https://github.com/nodejs/node/pull/56566) +- \[[`890eef20a1`](https://github.com/nodejs/node/commit/890eef20a1)] - **crypto**: fix checkPrime crash with large buffers (Santiago Gimeno) [#56559](https://github.com/nodejs/node/pull/56559) +- \[[`5edb7b5e87`](https://github.com/nodejs/node/commit/5edb7b5e87)] - **crypto**: fix warning of ignoring return value (Cheng) [#56527](https://github.com/nodejs/node/pull/56527) +- \[[`b89f123a0b`](https://github.com/nodejs/node/commit/b89f123a0b)] - **crypto**: make generatePrime/checkPrime interruptible (James M Snell) [#56460](https://github.com/nodejs/node/pull/56460) +- \[[`63c1859e01`](https://github.com/nodejs/node/commit/63c1859e01)] - **deps**: update corepack to 0.31.0 (Node.js GitHub Bot) [#56795](https://github.com/nodejs/node/pull/56795) +- \[[`a48430d4d3`](https://github.com/nodejs/node/commit/a48430d4d3)] - **deps**: move inspector_protocol to deps (Chengzhong Wu) [#56649](https://github.com/nodejs/node/pull/56649) +- \[[`74cccc824f`](https://github.com/nodejs/node/commit/74cccc824f)] - **deps**: macro ENODATA is deprecated in libc++ (Cheng) [#56698](https://github.com/nodejs/node/pull/56698) +- \[[`fa869ea0f2`](https://github.com/nodejs/node/commit/fa869ea0f2)] - **deps**: fixup some minor coverity warnings (James M Snell) [#56612](https://github.com/nodejs/node/pull/56612) +- \[[`1a4fa2b015`](https://github.com/nodejs/node/commit/1a4fa2b015)] - **deps**: update amaro to 0.3.0 (Node.js GitHub Bot) [#56568](https://github.com/nodejs/node/pull/56568) +- \[[`b47076fd82`](https://github.com/nodejs/node/commit/b47076fd82)] - **deps**: update amaro to 0.2.2 (Node.js GitHub Bot) [#56568](https://github.com/nodejs/node/pull/56568) +- \[[`46bd4b8731`](https://github.com/nodejs/node/commit/46bd4b8731)] - **deps**: update simdutf to 6.0.3 (Node.js GitHub Bot) [#56567](https://github.com/nodejs/node/pull/56567) +- \[[`8ead9c693b`](https://github.com/nodejs/node/commit/8ead9c693b)] - **deps**: update simdutf to 5.7.2 (Node.js GitHub Bot) [#56388](https://github.com/nodejs/node/pull/56388) +- \[[`18d4b502af`](https://github.com/nodejs/node/commit/18d4b502af)] - **deps**: update amaro to 0.2.1 (Node.js GitHub Bot) [#56390](https://github.com/nodejs/node/pull/56390) +- \[[`d938d7cc86`](https://github.com/nodejs/node/commit/d938d7cc86)] - **deps**: update googletest to 7d76a23 (Node.js GitHub Bot) [#56387](https://github.com/nodejs/node/pull/56387) +- \[[`9761e7dccb`](https://github.com/nodejs/node/commit/9761e7dccb)] - **deps**: update googletest to e54519b (Node.js GitHub Bot) [#56370](https://github.com/nodejs/node/pull/56370) +- \[[`8319dc6bc5`](https://github.com/nodejs/node/commit/8319dc6bc5)] - **deps**: update ngtcp2 to 1.10.0 (Node.js GitHub Bot) [#56334](https://github.com/nodejs/node/pull/56334) +- \[[`6eacd19d6a`](https://github.com/nodejs/node/commit/6eacd19d6a)] - **deps**: update simdutf to 5.7.0 (Node.js GitHub Bot) [#56332](https://github.com/nodejs/node/pull/56332) +- \[[`28bec2dda3`](https://github.com/nodejs/node/commit/28bec2dda3)] - **diagnostics_channel**: capture console messages (Stephen Belanger) [#56292](https://github.com/nodejs/node/pull/56292) +- \[[`d519d33502`](https://github.com/nodejs/node/commit/d519d33502)] - **doc**: update macOS and Xcode versions for releases (Michaël Zasso) [#56337](https://github.com/nodejs/node/pull/56337) +- \[[`fcfe650507`](https://github.com/nodejs/node/commit/fcfe650507)] - **doc**: add note for features using `InternalWorker` with permission model (Antoine du Hamel) [#56706](https://github.com/nodejs/node/pull/56706) +- \[[`efbba182b5`](https://github.com/nodejs/node/commit/efbba182b5)] - **doc**: add entry to changelog about SQLite Session Extension (Bart Louwers) [#56318](https://github.com/nodejs/node/pull/56318) +- \[[`31bf9c7dd9`](https://github.com/nodejs/node/commit/31bf9c7dd9)] - **doc**: move anatoli to emeritus (Michael Dawson) [#56592](https://github.com/nodejs/node/pull/56592) +- \[[`6096e38c7c`](https://github.com/nodejs/node/commit/6096e38c7c)] - **doc**: fix styles of the expandable TOC (Antoine du Hamel) [#56755](https://github.com/nodejs/node/pull/56755) +- \[[`d423638281`](https://github.com/nodejs/node/commit/d423638281)] - **doc**: add "Skip to content" button (Antoine du Hamel) [#56750](https://github.com/nodejs/node/pull/56750) +- \[[`edeb157d75`](https://github.com/nodejs/node/commit/edeb157d75)] - **doc**: improve accessibility of expandable lists (Antoine du Hamel) [#56749](https://github.com/nodejs/node/pull/56749) +- \[[`1a79e87687`](https://github.com/nodejs/node/commit/1a79e87687)] - **doc**: add note regarding commit message trailers (Dario Piotrowicz) [#56736](https://github.com/nodejs/node/pull/56736) +- \[[`927c7e47e4`](https://github.com/nodejs/node/commit/927c7e47e4)] - **doc**: fix typo in example code for util.styleText (Robin Mehner) [#56720](https://github.com/nodejs/node/pull/56720) +- \[[`fade522538`](https://github.com/nodejs/node/commit/fade522538)] - **doc**: fix inconsistencies in `WeakSet` and `WeakMap` comparison details (Shreyans Pathak) [#56683](https://github.com/nodejs/node/pull/56683) +- \[[`55533bf147`](https://github.com/nodejs/node/commit/55533bf147)] - **doc**: add RafaelGSS as latest sec release stewards (Rafael Gonzaga) [#56682](https://github.com/nodejs/node/pull/56682) +- \[[`8e978bdee1`](https://github.com/nodejs/node/commit/8e978bdee1)] - **doc**: clarify cjs/esm diff in `queueMicrotask()` vs `process.nextTick()` (Dario Piotrowicz) [#56659](https://github.com/nodejs/node/pull/56659) +- \[[`ae360c30dc`](https://github.com/nodejs/node/commit/ae360c30dc)] - **doc**: `WeakSet` and `WeakMap` comparison details (Shreyans Pathak) [#56648](https://github.com/nodejs/node/pull/56648) +- \[[`acd2a2fda5`](https://github.com/nodejs/node/commit/acd2a2fda5)] - **doc**: mention prepare --security (Rafael Gonzaga) [#56617](https://github.com/nodejs/node/pull/56617) +- \[[`d3c0a2831d`](https://github.com/nodejs/node/commit/d3c0a2831d)] - **doc**: tweak info on reposts in ambassador program (Michael Dawson) [#56589](https://github.com/nodejs/node/pull/56589) +- \[[`3299505b49`](https://github.com/nodejs/node/commit/3299505b49)] - **doc**: add type stripping to ambassadors program (Marco Ippolito) [#56598](https://github.com/nodejs/node/pull/56598) +- \[[`b1a6ffa4e4`](https://github.com/nodejs/node/commit/b1a6ffa4e4)] - **doc**: improve internal documentation on built-in snapshot (Joyee Cheung) [#56505](https://github.com/nodejs/node/pull/56505) +- \[[`1641a28930`](https://github.com/nodejs/node/commit/1641a28930)] - **doc**: document CLI way to open the nodejs/bluesky PR (Antoine du Hamel) [#56506](https://github.com/nodejs/node/pull/56506) +- \[[`2042628fda`](https://github.com/nodejs/node/commit/2042628fda)] - **doc**: add section about using npx with permission model (Rafael Gonzaga) [#56539](https://github.com/nodejs/node/pull/56539) +- \[[`ace19a0263`](https://github.com/nodejs/node/commit/ace19a0263)] - **doc**: update gcc-version for ubuntu-lts (Kunal Kumar) [#56553](https://github.com/nodejs/node/pull/56553) +- \[[`4aa57b50f8`](https://github.com/nodejs/node/commit/4aa57b50f8)] - **doc**: fix parentheses in options (Tobias Nießen) [#56563](https://github.com/nodejs/node/pull/56563) +- \[[`b40b01b4d3`](https://github.com/nodejs/node/commit/b40b01b4d3)] - **doc**: include CVE to EOL lines as sec release process (Rafael Gonzaga) [#56520](https://github.com/nodejs/node/pull/56520) +- \[[`6701360113`](https://github.com/nodejs/node/commit/6701360113)] - **doc**: add esm examples to node:trace_events (Alfredo González) [#56514](https://github.com/nodejs/node/pull/56514) +- \[[`d3207cca3e`](https://github.com/nodejs/node/commit/d3207cca3e)] - **doc**: add message for Ambassadors to promote (Michael Dawson) [#56235](https://github.com/nodejs/node/pull/56235) +- \[[`97ece4ae06`](https://github.com/nodejs/node/commit/97ece4ae06)] - **doc**: allow request for TSC reviews via the GitHub UI (Antoine du Hamel) [#56493](https://github.com/nodejs/node/pull/56493) +- \[[`03f25055ab`](https://github.com/nodejs/node/commit/03f25055ab)] - **doc**: add example for piping ReadableStream (Gabriel Schulhof) [#56415](https://github.com/nodejs/node/pull/56415) +- \[[`516d07482c`](https://github.com/nodejs/node/commit/516d07482c)] - **doc**: expand description of `parseArg`'s `default` (Kevin Gibbons) [#54431](https://github.com/nodejs/node/pull/54431) +- \[[`a6491effcb`](https://github.com/nodejs/node/commit/a6491effcb)] - **doc**: use `<ul>` instead of `<ol>` in `SECURITY.md` (Antoine du Hamel) [#56346](https://github.com/nodejs/node/pull/56346) +- \[[`e4ec134b21`](https://github.com/nodejs/node/commit/e4ec134b21)] - **doc**: clarify that WASM is trusted (Matteo Collina) [#56345](https://github.com/nodejs/node/pull/56345) +- \[[`0f7aed8a59`](https://github.com/nodejs/node/commit/0f7aed8a59)] - **doc**: fix the `crc32` documentation (Kevin Toshihiro Uehara) [#55898](https://github.com/nodejs/node/pull/55898) +- \[[`721104a296`](https://github.com/nodejs/node/commit/721104a296)] - **doc**: fix links in `module.md` (Antoine du Hamel) [#56283](https://github.com/nodejs/node/pull/56283) +- \[[`928540d792`](https://github.com/nodejs/node/commit/928540d792)] - **doc**: fix typos (Nathan Baulch) [#55066](https://github.com/nodejs/node/pull/55066) +- \[[`e69d35f03b`](https://github.com/nodejs/node/commit/e69d35f03b)] - **doc**: add history info for Permission Model (Antoine du Hamel) [#56707](https://github.com/nodejs/node/pull/56707) +- \[[`c6fd867ab5`](https://github.com/nodejs/node/commit/c6fd867ab5)] - **esm**: fix jsdoc type refs to `ModuleJobBase` in esm/loader (Jacob Smith) [#56499](https://github.com/nodejs/node/pull/56499) +- \[[`9cf9046bd7`](https://github.com/nodejs/node/commit/9cf9046bd7)] - _**Revert**_ "**events**: add hasEventListener util for validate" (origranot) [#56282](https://github.com/nodejs/node/pull/56282) +- \[[`b7fe54fc88`](https://github.com/nodejs/node/commit/b7fe54fc88)] - **(SEMVER-MINOR)** **fs**: allow `exclude` option in globs to accept glob patterns (Daeyeon Jeong) [#56489](https://github.com/nodejs/node/pull/56489) +- \[[`6ca27c2a59`](https://github.com/nodejs/node/commit/6ca27c2a59)] - **http2**: omit server name when HTTP2 host is IP address (islandryu) [#56530](https://github.com/nodejs/node/pull/56530) +- \[[`9f1fa199bf`](https://github.com/nodejs/node/commit/9f1fa199bf)] - **inspector**: roll inspector_protocol (Chengzhong Wu) [#56649](https://github.com/nodejs/node/pull/56649) +- \[[`0dae4bb3ab`](https://github.com/nodejs/node/commit/0dae4bb3ab)] - **inspector**: add undici http tracking support (Chengzhong Wu) [#56488](https://github.com/nodejs/node/pull/56488) +- \[[`2c6124cec4`](https://github.com/nodejs/node/commit/2c6124cec4)] - **inspector**: report loadingFinished until the response data is consumed (Chengzhong Wu) [#56372](https://github.com/nodejs/node/pull/56372) +- \[[`96ec862ce2`](https://github.com/nodejs/node/commit/96ec862ce2)] - **lib**: refactor execution.js (Marco Ippolito) [#56358](https://github.com/nodejs/node/pull/56358) +- \[[`3ac92ef607`](https://github.com/nodejs/node/commit/3ac92ef607)] - **(SEMVER-MINOR)** **lib**: add typescript support to STDIN eval (Marco Ippolito) [#56359](https://github.com/nodejs/node/pull/56359) +- \[[`d5bf3db0cf`](https://github.com/nodejs/node/commit/d5bf3db0cf)] - **lib**: allow skipping source maps in node_modules (Chengzhong Wu) [#56639](https://github.com/nodejs/node/pull/56639) +- \[[`d33eaf2bcb`](https://github.com/nodejs/node/commit/d33eaf2bcb)] - **lib**: ensure FORCE_COLOR forces color output in non-TTY environments (Pietro Marchini) [#55404](https://github.com/nodejs/node/pull/55404) +- \[[`dc003218a8`](https://github.com/nodejs/node/commit/dc003218a8)] - **lib**: optimize `prepareStackTrace` on builtin frames (Chengzhong Wu) [#56299](https://github.com/nodejs/node/pull/56299) +- \[[`df06524863`](https://github.com/nodejs/node/commit/df06524863)] - **lib**: suppress source map lookup exceptions (Chengzhong Wu) [#56299](https://github.com/nodejs/node/pull/56299) +- \[[`35335a5a66`](https://github.com/nodejs/node/commit/35335a5a66)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#56580](https://github.com/nodejs/node/pull/56580) +- \[[`1faabdb150`](https://github.com/nodejs/node/commit/1faabdb150)] - **meta**: add codeowners of security release document (Rafael Gonzaga) [#56521](https://github.com/nodejs/node/pull/56521) +- \[[`b4ece22ef5`](https://github.com/nodejs/node/commit/b4ece22ef5)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#56342](https://github.com/nodejs/node/pull/56342) +- \[[`9ec67e7ce0`](https://github.com/nodejs/node/commit/9ec67e7ce0)] - **meta**: move MoLow to TSC regular member (Moshe Atlow) [#56276](https://github.com/nodejs/node/pull/56276) +- \[[`bae4b2e20a`](https://github.com/nodejs/node/commit/bae4b2e20a)] - **module**: use more defensive code when handling SWC errors (Antoine du Hamel) [#56646](https://github.com/nodejs/node/pull/56646) +- \[[`1614e8e7bc`](https://github.com/nodejs/node/commit/1614e8e7bc)] - **(SEMVER-MINOR)** **module**: add ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX (Marco Ippolito) [#56610](https://github.com/nodejs/node/pull/56610) +- \[[`174d88eab1`](https://github.com/nodejs/node/commit/174d88eab1)] - **module**: support eval with ts syntax detection (Marco Ippolito) [#56285](https://github.com/nodejs/node/pull/56285) +- \[[`299d6fa829`](https://github.com/nodejs/node/commit/299d6fa829)] - **module**: fix jsdoc for `format` parameter in cjs/loader (pacexy) [#56501](https://github.com/nodejs/node/pull/56501) +- \[[`0307e4dd59`](https://github.com/nodejs/node/commit/0307e4dd59)] - **module**: unify TypeScript and .mjs handling in CommonJS (Joyee Cheung) [#55590](https://github.com/nodejs/node/pull/55590) +- \[[`1f4f9be93d`](https://github.com/nodejs/node/commit/1f4f9be93d)] - **module**: fix async resolution error within the sync `findPackageJSON` (Jacob Smith) [#56382](https://github.com/nodejs/node/pull/56382) +- \[[`bbedffa0f0`](https://github.com/nodejs/node/commit/bbedffa0f0)] - **module**: simplify `findPackageJSON` implementation (Antoine du Hamel) [#55543](https://github.com/nodejs/node/pull/55543) +- \[[`6d6cffa9cc`](https://github.com/nodejs/node/commit/6d6cffa9cc)] - **(SEMVER-MINOR)** **module**: add `findPackageJSON` util (Jacob Smith) [#55412](https://github.com/nodejs/node/pull/55412) +- \[[`cd7ce18233`](https://github.com/nodejs/node/commit/cd7ce18233)] - **module**: fix bad `require.resolve` with option paths for `.` and `..` (Dario Piotrowicz) [#56735](https://github.com/nodejs/node/pull/56735) +- \[[`152df4da21`](https://github.com/nodejs/node/commit/152df4da21)] - **module**: rethrow amaro error message (Marco Ippolito) [#56568](https://github.com/nodejs/node/pull/56568) +- \[[`acba5dc87e`](https://github.com/nodejs/node/commit/acba5dc87e)] - **module**: use buffer.toString base64 (Chengzhong Wu) [#56315](https://github.com/nodejs/node/pull/56315) +- \[[`01e69be8ff`](https://github.com/nodejs/node/commit/01e69be8ff)] - **node-api**: define version 10 (Gabriel Schulhof) [#55676](https://github.com/nodejs/node/pull/55676) +- \[[`724524528e`](https://github.com/nodejs/node/commit/724524528e)] - **node-api**: remove deprecated attribute from napi_module_register (Vladimir Morozov) [#56162](https://github.com/nodejs/node/pull/56162) +- \[[`c78e11064f`](https://github.com/nodejs/node/commit/c78e11064f)] - **process**: remove support for undocumented symbol (Antoine du Hamel) [#56552](https://github.com/nodejs/node/pull/56552) +- \[[`3f69b18a23`](https://github.com/nodejs/node/commit/3f69b18a23)] - **process**: fix symbol key and mark experimental new `node:process` methods (Antoine du Hamel) [#56517](https://github.com/nodejs/node/pull/56517) +- \[[`d35333ae18`](https://github.com/nodejs/node/commit/d35333ae18)] - **(SEMVER-MINOR)** **process**: add process.ref() and process.unref() methods (James M Snell) [#56400](https://github.com/nodejs/node/pull/56400) +- \[[`fa49f0f7d5`](https://github.com/nodejs/node/commit/fa49f0f7d5)] - **punycode**: limit deprecation warning (Colin Ihrig) [#56632](https://github.com/nodejs/node/pull/56632) +- \[[`d77c7073b7`](https://github.com/nodejs/node/commit/d77c7073b7)] - **sqlite**: disable memstatus APIs at build time (Colin Ihrig) [#56541](https://github.com/nodejs/node/pull/56541) +- \[[`07ff3ddcb5`](https://github.com/nodejs/node/commit/07ff3ddcb5)] - **(SEMVER-MINOR)** **sqlite**: support TypedArray and DataView in `StatementSync` (Alex Yang) [#56385](https://github.com/nodejs/node/pull/56385) +- \[[`b6c2e91365`](https://github.com/nodejs/node/commit/b6c2e91365)] - **sqlite**: enable SQL math functions (Colin Ihrig) [#56447](https://github.com/nodejs/node/pull/56447) +- \[[`3462263e8b`](https://github.com/nodejs/node/commit/3462263e8b)] - **sqlite**: pass conflict type to conflict resolution handler (Bart Louwers) [#56352](https://github.com/nodejs/node/pull/56352) +- \[[`89ba3af743`](https://github.com/nodejs/node/commit/89ba3af743)] - **src**: add nullptr handling from X509_STORE_new() (Burkov Egor) [#56700](https://github.com/nodejs/node/pull/56700) +- \[[`89a7c82e0c`](https://github.com/nodejs/node/commit/89a7c82e0c)] - **src**: add default value for RSACipherConfig mode field (Burkov Egor) [#56701](https://github.com/nodejs/node/pull/56701) +- \[[`7bae51e62e`](https://github.com/nodejs/node/commit/7bae51e62e)] - **src**: fix build with GCC 15 (tjuhaszrh) [#56740](https://github.com/nodejs/node/pull/56740) +- \[[`432a4b8bd6`](https://github.com/nodejs/node/commit/432a4b8bd6)] - **src**: fix to generate path from wchar_t via wstring (yamachu) [#56696](https://github.com/nodejs/node/pull/56696) +- \[[`8c9eaf82f0`](https://github.com/nodejs/node/commit/8c9eaf82f0)] - **src**: initialize FSReqWrapSync in path that uses it (Michaël Zasso) [#56613](https://github.com/nodejs/node/pull/56613) +- \[[`bcdb42d40b`](https://github.com/nodejs/node/commit/bcdb42d40b)] - **src**: handle duplicate paths granted (Rafael Gonzaga) [#56591](https://github.com/nodejs/node/pull/56591) +- \[[`d6a7acc207`](https://github.com/nodejs/node/commit/d6a7acc207)] - **src**: update ECKeyPointer in ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`01922f8b1f`](https://github.com/nodejs/node/commit/01922f8b1f)] - **src**: update ECPointPointer in ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`2a3a36eceb`](https://github.com/nodejs/node/commit/2a3a36eceb)] - **src**: update ECGroupPointer in ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`67c10cdacb`](https://github.com/nodejs/node/commit/67c10cdacb)] - **src**: update ECDASSigPointer implementation in ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`17f931c68b`](https://github.com/nodejs/node/commit/17f931c68b)] - **src**: cleaning up more crypto internals for ncrypto (James M Snell) [#56526](https://github.com/nodejs/node/pull/56526) +- \[[`94d3fe1b62`](https://github.com/nodejs/node/commit/94d3fe1b62)] - **(SEMVER-MINOR)** **src**: add --disable-sigusr1 to prevent signal i/o thread (Rafael Gonzaga) [#56441](https://github.com/nodejs/node/pull/56441) +- \[[`6594ee8dff`](https://github.com/nodejs/node/commit/6594ee8dff)] - **src**: fix undefined script name in error source (Chengzhong Wu) [#56502](https://github.com/nodejs/node/pull/56502) +- \[[`b46bad3e91`](https://github.com/nodejs/node/commit/b46bad3e91)] - **src**: refactor --trace-env to reuse option selection and handling (Joyee Cheung) [#56293](https://github.com/nodejs/node/pull/56293) +- \[[`76921b822b`](https://github.com/nodejs/node/commit/76921b822b)] - **src**: minor cleanups on OneByteString usage (James M Snell) [#56482](https://github.com/nodejs/node/pull/56482) +- \[[`3f0d1dd4fe`](https://github.com/nodejs/node/commit/3f0d1dd4fe)] - **src**: move more crypto impl detail to ncrypto dep (James M Snell) [#56421](https://github.com/nodejs/node/pull/56421) +- \[[`04f623b283`](https://github.com/nodejs/node/commit/04f623b283)] - **src**: fixup more ToLocalChecked uses in node_file (James M Snell) [#56484](https://github.com/nodejs/node/pull/56484) +- \[[`5aa436f5a1`](https://github.com/nodejs/node/commit/5aa436f5a1)] - **src**: make some minor ToLocalChecked cleanups (James M Snell) [#56483](https://github.com/nodejs/node/pull/56483) +- \[[`6eec5e7ec2`](https://github.com/nodejs/node/commit/6eec5e7ec2)] - **src**: lock the thread properly in snapshot builder (Joyee Cheung) [#56327](https://github.com/nodejs/node/pull/56327) +- \[[`5614993968`](https://github.com/nodejs/node/commit/5614993968)] - **src**: drain platform tasks before creating startup snapshot (Chengzhong Wu) [#56403](https://github.com/nodejs/node/pull/56403) +- \[[`48493e9fd5`](https://github.com/nodejs/node/commit/48493e9fd5)] - **src**: use LocalVector in more places (James M Snell) [#56457](https://github.com/nodejs/node/pull/56457) +- \[[`7e5ea0681e`](https://github.com/nodejs/node/commit/7e5ea0681e)] - **src**: use v8::LocalVector consistently with other minor cleanups (James M Snell) [#56417](https://github.com/nodejs/node/pull/56417) +- \[[`ad3d857f2b`](https://github.com/nodejs/node/commit/ad3d857f2b)] - **src**: use starts_with in fs_permission.cc (ishabi) [#55811](https://github.com/nodejs/node/pull/55811) +- \[[`5afffb4415`](https://github.com/nodejs/node/commit/5afffb4415)] - **(SEMVER-MINOR)** **src,worker**: add isInternalWorker (Carlos Espa) [#56469](https://github.com/nodejs/node/pull/56469) +- \[[`7d1676e72e`](https://github.com/nodejs/node/commit/7d1676e72e)] - **stream**: fix typo in ReadableStreamBYOBReader.readIntoRequests (Mattias Buelens) [#56560](https://github.com/nodejs/node/pull/56560) +- \[[`e658ea6b26`](https://github.com/nodejs/node/commit/e658ea6b26)] - **stream**: validate undefined sizeAlgorithm in WritableStream (Jason Zhang) [#56067](https://github.com/nodejs/node/pull/56067) +- \[[`e4f133c20c`](https://github.com/nodejs/node/commit/e4f133c20c)] - **test**: add ts eval snapshots (Marco Ippolito) [#56358](https://github.com/nodejs/node/pull/56358) +- \[[`f041742400`](https://github.com/nodejs/node/commit/f041742400)] - **test**: remove empty lines from snapshots (Marco Ippolito) [#56358](https://github.com/nodejs/node/pull/56358) +- \[[`801cde91f6`](https://github.com/nodejs/node/commit/801cde91f6)] - **test**: reduce number of written chunks (Luigi Pinca) [#56757](https://github.com/nodejs/node/pull/56757) +- \[[`6fdf1879ab`](https://github.com/nodejs/node/commit/6fdf1879ab)] - **test**: fix invalid common.mustSucceed() usage (Luigi Pinca) [#56756](https://github.com/nodejs/node/pull/56756) +- \[[`d2bfbfa364`](https://github.com/nodejs/node/commit/d2bfbfa364)] - **test**: use strict mode in global setters test (Rich Trott) [#56742](https://github.com/nodejs/node/pull/56742) +- \[[`5c030da42f`](https://github.com/nodejs/node/commit/5c030da42f)] - **test**: cleanup and simplify test-crypto-aes-wrap (James M Snell) [#56748](https://github.com/nodejs/node/pull/56748) +- \[[`f1442d6eaf`](https://github.com/nodejs/node/commit/f1442d6eaf)] - **test**: do not use common.isMainThread (Luigi Pinca) [#56768](https://github.com/nodejs/node/pull/56768) +- \[[`49405bd9e7`](https://github.com/nodejs/node/commit/49405bd9e7)] - **test**: make some requires lazy in common/index (James M Snell) [#56715](https://github.com/nodejs/node/pull/56715) +- \[[`52ef376788`](https://github.com/nodejs/node/commit/52ef376788)] - **test**: add test that uses multibyte for path and resolves modules (yamachu) [#56696](https://github.com/nodejs/node/pull/56696) +- \[[`b811dea85a`](https://github.com/nodejs/node/commit/b811dea85a)] - **test**: replace more uses of `global` with `globalThis` (James M Snell) [#56712](https://github.com/nodejs/node/pull/56712) +- \[[`eb97076199`](https://github.com/nodejs/node/commit/eb97076199)] - **test**: make common/index slightly less node.js specific (James M Snell) [#56712](https://github.com/nodejs/node/pull/56712) +- \[[`1795202d19`](https://github.com/nodejs/node/commit/1795202d19)] - **test**: rely less on duplicative common test harness utilities (James M Snell) [#56712](https://github.com/nodejs/node/pull/56712) +- \[[`5be29a274e`](https://github.com/nodejs/node/commit/5be29a274e)] - **test**: simplify common/index.js (James M Snell) [#56712](https://github.com/nodejs/node/pull/56712) +- \[[`92e99780f0`](https://github.com/nodejs/node/commit/92e99780f0)] - **test**: move hasMultiLocalhost to common/net (James M Snell) [#56716](https://github.com/nodejs/node/pull/56716) +- \[[`1c3204a4cc`](https://github.com/nodejs/node/commit/1c3204a4cc)] - **test**: move crypto related common utilities in common/crypto (James M Snell) [#56714](https://github.com/nodejs/node/pull/56714) +- \[[`fe79d63be0`](https://github.com/nodejs/node/commit/fe79d63be0)] - **test**: add missing test for env file (Jonas) [#56642](https://github.com/nodejs/node/pull/56642) +- \[[`e08af61537`](https://github.com/nodejs/node/commit/e08af61537)] - **test**: enforce strict mode in test-zlib-const (Rich Trott) [#56689](https://github.com/nodejs/node/pull/56689) +- \[[`c96792d7f8`](https://github.com/nodejs/node/commit/c96792d7f8)] - **test**: fix localization data for ICU 74.2 (Antoine du Hamel) [#56661](https://github.com/nodejs/node/pull/56661) +- \[[`48b72f1195`](https://github.com/nodejs/node/commit/48b72f1195)] - **test**: use --permission instead of --experimental-permission (Rafael Gonzaga) [#56685](https://github.com/nodejs/node/pull/56685) +- \[[`de81d90fce`](https://github.com/nodejs/node/commit/de81d90fce)] - **test**: test-stream-compose.js doesn't need internals (Meghan Denny) [#56619](https://github.com/nodejs/node/pull/56619) +- \[[`f5b8499ad0`](https://github.com/nodejs/node/commit/f5b8499ad0)] - **test**: add maxCount and gcOptions to gcUntil() (Joyee Cheung) [#56522](https://github.com/nodejs/node/pull/56522) +- \[[`d9e5a81041`](https://github.com/nodejs/node/commit/d9e5a81041)] - **test**: add line break at end of file (Rafael Gonzaga) [#56588](https://github.com/nodejs/node/pull/56588) +- \[[`59be346fbf`](https://github.com/nodejs/node/commit/59be346fbf)] - **test**: mark test-worker-prof as flaky on smartos (Joyee Cheung) [#56583](https://github.com/nodejs/node/pull/56583) +- \[[`12a2cae9e5`](https://github.com/nodejs/node/commit/12a2cae9e5)] - **test**: update test-child-process-bad-stdio to use node:test (Colin Ihrig) [#56562](https://github.com/nodejs/node/pull/56562) +- \[[`2dc4a30e19`](https://github.com/nodejs/node/commit/2dc4a30e19)] - **test**: disable openssl 3.4.0 incompatible tests (Jelle van der Waa) [#56160](https://github.com/nodejs/node/pull/56160) +- \[[`1950fbf51d`](https://github.com/nodejs/node/commit/1950fbf51d)] - **test**: make test-crypto-hash compatible with OpenSSL > 3.4.0 (Jelle van der Waa) [#56160](https://github.com/nodejs/node/pull/56160) +- \[[`a533420a91`](https://github.com/nodejs/node/commit/a533420a91)] - **test**: clarify fork inherit permission flags (Rafael Gonzaga) [#56523](https://github.com/nodejs/node/pull/56523) +- \[[`697e799dc1`](https://github.com/nodejs/node/commit/697e799dc1)] - **test**: add error only reporter for node:test (Carlos Espa) [#56438](https://github.com/nodejs/node/pull/56438) +- \[[`4844fa212d`](https://github.com/nodejs/node/commit/4844fa212d)] - **test**: mark test-http-server-request-timeouts-mixed as flaky (Joyee Cheung) [#56503](https://github.com/nodejs/node/pull/56503) +- \[[`843c2389b9`](https://github.com/nodejs/node/commit/843c2389b9)] - **test**: update error code in tls-psk-circuit for for OpenSSL 3.4 (sebastianas) [#56420](https://github.com/nodejs/node/pull/56420) +- \[[`ccb2ddbd83`](https://github.com/nodejs/node/commit/ccb2ddbd83)] - **test**: update compiled sqlite tests to match other tests (Colin Ihrig) [#56446](https://github.com/nodejs/node/pull/56446) +- \[[`b40f50324d`](https://github.com/nodejs/node/commit/b40f50324d)] - **test**: add initial test426 coverage (Chengzhong Wu) [#56436](https://github.com/nodejs/node/pull/56436) +- \[[`059f81e4fd`](https://github.com/nodejs/node/commit/059f81e4fd)] - **test**: update test-set-http-max-http-headers to use node:test (Colin Ihrig) [#56439](https://github.com/nodejs/node/pull/56439) +- \[[`ec2940b418`](https://github.com/nodejs/node/commit/ec2940b418)] - **test**: update test-child-process-windows-hide to use node:test (Colin Ihrig) [#56437](https://github.com/nodejs/node/pull/56437) +- \[[`0362924880`](https://github.com/nodejs/node/commit/0362924880)] - **test**: use unusual chars in the path to ensure our tests are robust (Antoine du Hamel) [#48409](https://github.com/nodejs/node/pull/48409) +- \[[`b6c3869910`](https://github.com/nodejs/node/commit/b6c3869910)] - **test**: improve abort signal dropping test (Edy Silva) [#56339](https://github.com/nodejs/node/pull/56339) +- \[[`cc648ef923`](https://github.com/nodejs/node/commit/cc648ef923)] - **test**: enable ts test on win arm64 (Marco Ippolito) [#56349](https://github.com/nodejs/node/pull/56349) +- \[[`68819b4997`](https://github.com/nodejs/node/commit/68819b4997)] - **test**: deflake test-watch-file-shared-dependency (Luigi Pinca) [#56344](https://github.com/nodejs/node/pull/56344) +- \[[`ca6ed2190c`](https://github.com/nodejs/node/commit/ca6ed2190c)] - **test**: skip `test-sqlite-extensions` when SQLite is not built by us (Antoine du Hamel) [#56341](https://github.com/nodejs/node/pull/56341) +- \[[`8ffeb8b58c`](https://github.com/nodejs/node/commit/8ffeb8b58c)] - **test**: increase spin for eventloop test on s390 (Michael Dawson) [#56228](https://github.com/nodejs/node/pull/56228) +- \[[`6ae9950f08`](https://github.com/nodejs/node/commit/6ae9950f08)] - **test**: migrate message eval tests from Python to JS (Yiyun Lei) [#50482](https://github.com/nodejs/node/pull/50482) +- \[[`4352bf69e9`](https://github.com/nodejs/node/commit/4352bf69e9)] - **test**: check typescript loader (Marco Ippolito) [#54657](https://github.com/nodejs/node/pull/54657) +- \[[`406e7db9c3`](https://github.com/nodejs/node/commit/406e7db9c3)] - **test**: remove async-hooks/test-writewrap flaky designation (Luigi Pinca) [#56048](https://github.com/nodejs/node/pull/56048) +- \[[`fa56ab2bba`](https://github.com/nodejs/node/commit/fa56ab2bba)] - **test**: deflake test-esm-loader-hooks-inspect-brk (Luigi Pinca) [#56050](https://github.com/nodejs/node/pull/56050) +- \[[`8e149aac99`](https://github.com/nodejs/node/commit/8e149aac99)] - **test**: add test case for listeners (origranot) [#56282](https://github.com/nodejs/node/pull/56282) +- \[[`a3f5ef22cd`](https://github.com/nodejs/node/commit/a3f5ef22cd)] - **test**: make `test-permission-sqlite-load-extension` more robust (Antoine du Hamel) [#56295](https://github.com/nodejs/node/pull/56295) +- \[[`8cbb7cc838`](https://github.com/nodejs/node/commit/8cbb7cc838)] - **test_runner**: print failing assertion only once with spec reporter (Pietro Marchini) [#56662](https://github.com/nodejs/node/pull/56662) +- \[[`1f426bad9a`](https://github.com/nodejs/node/commit/1f426bad9a)] - **test_runner**: remove unused errors (Pietro Marchini) [#56607](https://github.com/nodejs/node/pull/56607) +- \[[`697a851fb3`](https://github.com/nodejs/node/commit/697a851fb3)] - **(SEMVER-MINOR)** **test_runner**: add TestContext.prototype.waitFor() (Colin Ihrig) [#56595](https://github.com/nodejs/node/pull/56595) +- \[[`047537b48c`](https://github.com/nodejs/node/commit/047537b48c)] - **(SEMVER-MINOR)** **test_runner**: add t.assert.fileSnapshot() (Colin Ihrig) [#56459](https://github.com/nodejs/node/pull/56459) +- \[[`19b4aa4b14`](https://github.com/nodejs/node/commit/19b4aa4b14)] - **test_runner**: run single test file benchmark (Pietro Marchini) [#56479](https://github.com/nodejs/node/pull/56479) +- \[[`926cf84e95`](https://github.com/nodejs/node/commit/926cf84e95)] - **(SEMVER-MINOR)** **test_runner**: add assert.register() API (Colin Ihrig) [#56434](https://github.com/nodejs/node/pull/56434) +- \[[`fb4661a4cf`](https://github.com/nodejs/node/commit/fb4661a4cf)] - **test_runner**: finish marking snapshot testing as stable (Colin Ihrig) [#56425](https://github.com/nodejs/node/pull/56425) +- \[[`900c6c3940`](https://github.com/nodejs/node/commit/900c6c3940)] - **tls**: fix error stack conversion in cryptoErrorListToException() (Joyee Cheung) [#56554](https://github.com/nodejs/node/pull/56554) +- \[[`e9f185b658`](https://github.com/nodejs/node/commit/e9f185b658)] - **tools**: update doc to new version (Node.js GitHub Bot) [#56259](https://github.com/nodejs/node/pull/56259) +- \[[`7644c7e619`](https://github.com/nodejs/node/commit/7644c7e619)] - **tools**: update inspector_protocol roller (Chengzhong Wu) [#56649](https://github.com/nodejs/node/pull/56649) +- \[[`362272b0a4`](https://github.com/nodejs/node/commit/362272b0a4)] - **tools**: do not throw on missing `create-release-proposal.sh` (Antoine du Hamel) [#56704](https://github.com/nodejs/node/pull/56704) +- \[[`df8b835953`](https://github.com/nodejs/node/commit/df8b835953)] - **tools**: fix tools-deps-update (Daniel Lemire) [#56684](https://github.com/nodejs/node/pull/56684) +- \[[`feba5d3274`](https://github.com/nodejs/node/commit/feba5d3274)] - **tools**: do not throw on missing `create-release-proposal.sh` (Antoine du Hamel) [#56695](https://github.com/nodejs/node/pull/56695) +- \[[`9827f7d395`](https://github.com/nodejs/node/commit/9827f7d395)] - **tools**: fix permissions in `lint-release-proposal` workflow (Antoine du Hamel) [#56614](https://github.com/nodejs/node/pull/56614) +- \[[`14c562c0dc`](https://github.com/nodejs/node/commit/14c562c0dc)] - **tools**: remove github reporter (Carlos Espa) [#56468](https://github.com/nodejs/node/pull/56468) +- \[[`ed1785d0ae`](https://github.com/nodejs/node/commit/ed1785d0ae)] - **tools**: edit `create-release-proposal` workflow (Antoine du Hamel) [#56540](https://github.com/nodejs/node/pull/56540) +- \[[`294e4c42f5`](https://github.com/nodejs/node/commit/294e4c42f5)] - **tools**: validate commit list as part of `lint-release-commit` (Antoine du Hamel) [#56291](https://github.com/nodejs/node/pull/56291) +- \[[`98d3474267`](https://github.com/nodejs/node/commit/98d3474267)] - **tools**: fix loong64 build failed (Xiao-Tao) [#56466](https://github.com/nodejs/node/pull/56466) +- \[[`3e729ceec8`](https://github.com/nodejs/node/commit/3e729ceec8)] - **tools**: disable unneeded rule ignoring in Python linting (Rich Trott) [#56429](https://github.com/nodejs/node/pull/56429) +- \[[`d5c05328e2`](https://github.com/nodejs/node/commit/d5c05328e2)] - **tools**: use a configurable value for number of open dependabot PRs (Antoine du Hamel) [#56427](https://github.com/nodejs/node/pull/56427) +- \[[`1705cbe002`](https://github.com/nodejs/node/commit/1705cbe002)] - **tools**: bump the eslint group in /tools/eslint with 4 updates (dependabot\[bot]) [#56426](https://github.com/nodejs/node/pull/56426) +- \[[`53b29b0469`](https://github.com/nodejs/node/commit/53b29b0469)] - **tools**: fix `require-common-first` lint rule from subfolder (Antoine du Hamel) [#56325](https://github.com/nodejs/node/pull/56325) +- \[[`105c4ed4fb`](https://github.com/nodejs/node/commit/105c4ed4fb)] - **tools**: add release line label when opening release proposal (Antoine du Hamel) [#56317](https://github.com/nodejs/node/pull/56317) +- \[[`30f61f4aa5`](https://github.com/nodejs/node/commit/30f61f4aa5)] - **url**: use resolved path to convert UNC paths to URL (Antoine du Hamel) [#56302](https://github.com/nodejs/node/pull/56302) +- \[[`a0aef4dfb6`](https://github.com/nodejs/node/commit/a0aef4dfb6)] - **util**: inspect: do not crash on an Error stack that contains a Symbol (Jordan Harband) [#56573](https://github.com/nodejs/node/pull/56573) +- \[[`a8a060341f`](https://github.com/nodejs/node/commit/a8a060341f)] - **util**: inspect: do not crash on an Error with a regex `name` (Jordan Harband) [#56574](https://github.com/nodejs/node/pull/56574) +- \[[`ea66bf3553`](https://github.com/nodejs/node/commit/ea66bf3553)] - **util**: rename CallSite.column to columnNumber (Chengzhong Wu) [#56584](https://github.com/nodejs/node/pull/56584) +- \[[`9cdc3b373c`](https://github.com/nodejs/node/commit/9cdc3b373c)] - **util**: do not crash on inspecting function with `Symbol` name (Jordan Harband) [#56572](https://github.com/nodejs/node/pull/56572) +- \[[`0bfbb68569`](https://github.com/nodejs/node/commit/0bfbb68569)] - **util**: expose CallSite.scriptId (Chengzhong Wu) [#56551](https://github.com/nodejs/node/pull/56551) +- \[[`5dd7116e09`](https://github.com/nodejs/node/commit/5dd7116e09)] - **watch**: reload env file for --env-file-if-exists (Jonas) [#56643](https://github.com/nodejs/node/pull/56643) +- \[[`c658a8afdf`](https://github.com/nodejs/node/commit/c658a8afdf)] - **(SEMVER-MINOR)** **worker**: add eval ts input (Marco Ippolito) [#56394](https://github.com/nodejs/node/pull/56394) +- \[[`2e5d038f48`](https://github.com/nodejs/node/commit/2e5d038f48)] - **worker**: refactor stdio to improve performance (Matteo Collina) [#56630](https://github.com/nodejs/node/pull/56630) +- \[[`f959805d01`](https://github.com/nodejs/node/commit/f959805d01)] - **worker**: flush stdout and stderr on exit (Matteo Collina) [#56428](https://github.com/nodejs/node/pull/56428) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.14.0/node-v22.14.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.14.0/node-v22.14.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.14.0/node-v22.14.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.14.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.14.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.14.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.14.0/node-v22.14.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.14.0/node-v22.14.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.14.0/node-v22.14.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.14.0/node-v22.14.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.14.0/node-v22.14.0.tar.gz \ +Other release files: https://nodejs.org/dist/v22.14.0/ \ +Documentation: https://nodejs.org/docs/v22.14.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +ddec69aded8f826efbef8b4af09baa451f5ed8b057e84d836accf33de04d2d7a node-v22.14.0-aix-ppc64.tar.gz +d733bc14c2da6b69af4d89117b39d33cc1a7c7a75a21cf9fa4bfe81884db70e5 node-v22.14.0-arm64.msi +e9404633bc02a5162c5c573b1e2490f5fb44648345d64a958b17e325729a5e42 node-v22.14.0-darwin-arm64.tar.gz +4e845cb71b4e897289312743b2e31c405a8a48720655404d82a4dce23fc43527 node-v22.14.0-darwin-arm64.tar.xz +6698587713ab565a94a360e091df9f6d91c8fadda6d00f0cf6526e9b40bed250 node-v22.14.0-darwin-x64.tar.gz +deb5b211c25f3f803cd49c1c3fc3964e6c3725546d7d9608d994270388dcbf02 node-v22.14.0-darwin-x64.tar.xz +715aedf641a024efdeeccd545ce4acdc4759155e08c32efdfe9069921fcfa86b node-v22.14.0-headers.tar.gz +63406b4329c080a8ff3e5c8794cae82ad9ef1ebb8b8d8c73f82d2077810e0eaf node-v22.14.0-headers.tar.xz +8cf30ff7250f9463b53c18f89c6c606dfda70378215b2c905d0a9a8b08bd45e0 node-v22.14.0-linux-arm64.tar.gz +08bfbf538bad0e8cbb0269f0173cca28d705874a67a22f60b57d99dc99e30050 node-v22.14.0-linux-arm64.tar.xz +1cadf5aee7d71b6f0921235faec05e42d908ba5e8a76959f0697968fe0741204 node-v22.14.0-linux-armv7l.tar.gz +32804b6d7fca03e668765e91ea892dd329ff928d02e6c61d4b3b3c4afac178c6 node-v22.14.0-linux-armv7l.tar.xz +a0818ece898175db71a1df81dc4fdc3794a14b03a3901894a88e465e745ea429 node-v22.14.0-linux-ppc64le.tar.gz +70aeb7b16dabce5395b1ed383f60416c8d8ed693927003f948c0b5390a35ce5f node-v22.14.0-linux-ppc64le.tar.xz +0e4232e4b3c0312a391bb9c0c36524623b3b616cac5d0338d743ae4228f984d1 node-v22.14.0-linux-s390x.tar.gz +a666b8ce5e442dbdbb5a2280f29caad603a723017aac5acf5baff5b16e648981 node-v22.14.0-linux-s390x.tar.xz +9d942932535988091034dc94cc5f42b6dc8784d6366df3a36c4c9ccb3996f0c2 node-v22.14.0-linux-x64.tar.gz +69b09dba5c8dcb05c4e4273a4340db1005abeafe3927efda2bc5b249e80437ec node-v22.14.0-linux-x64.tar.xz +06113f553199227be915d80c191031283622d6363c57c83aad137ff33f9ac9e4 node-v22.14.0-win-arm64.7z +2d71f5f9b2fffa33baa108c07d74b0d24e0c3dd8f441d567772ae0e3dd4b1a22 node-v22.14.0-win-arm64.zip +4c6018bd170ca46bfc7112bc4ca0f43cf55759a0c2bb9fccd50d8f8c3f7bdb14 node-v22.14.0-win-x64.7z +55b639295920b219bb2acbcfa00f90393a2789095b7323f79475c9f34795f217 node-v22.14.0-win-x64.zip +5f7514392d0330c1b0c76e0dd299ac44786139b59231bf3d115f85c9c763bd4f node-v22.14.0-win-x86.7z +4bf00caba7b0f3c7a4e8ee6a5b73049db19b5ee5510473219ae5fb649c2017b6 node-v22.14.0-win-x86.zip +2c0cc97ec64c1e4111362e1e32e0547fd870e4d9c79ec844c117da583f21b386 node-v22.14.0-x64.msi +5e91ec1da6c7de32406f3f7fdd2b8de163e871ecd2ebb466bf1b526e6379755c node-v22.14.0-x86.msi +3931585e6af0785f01af897d31d67b7318e724af07845ffb04d432ab1a4532b4 node-v22.14.0.pkg +6c4e31ed5702dc45cfd8c435af56a36a474427e1bd7afe74c346136060beba8a node-v22.14.0.tar.gz +c609946bf793b55c7954c26582760808d54c16185d79cb2fb88065e52de21914 node-v22.14.0.tar.xz +b37c6950508f266d066deb91abe2050fcd3f19e34c86ca89eed72efb40090b57 win-arm64/node.exe +988eb8c60a5ade17e652dbdb60d56d3c6ad5e599a99ce04932b8c4c86583cdaf win-arm64/node.lib +37bf09d40005ba618a49aec998c275c56e390df501c824ed73c87520834de4b3 win-arm64/node_pdb.7z +6d51bdae6ec86490338d22eb133ae34c00be9052455f94cb44d08062097ed02c win-arm64/node_pdb.zip +33b1bc1a8aca11fd5a4f2699e51019c63c0af30cf437701d07af69be7706771b win-x64/node.exe +65e45757c026c93a170743a811ef1b921ae12d6d9dd62d258bbbca0626687626 win-x64/node.lib +652acb96f8c81f6fb27517f729465a5644c02efd27d60925389323b11cb44ee8 win-x64/node_pdb.7z +b4722c573f3a387de9e259b116cefd36870516947c1048fda425f1641d72a7b9 win-x64/node_pdb.zip +d52f9f1b03eca305dbaa23e251fe612efbb48a99aaeab6ffa073ee1c111b28e0 win-x86/node.exe +79bae10059e833ce7fa4de05e5601034461327e2e7cb75c2144b87d4ab5ac547 win-x86/node.lib +2f2313b969b715af1c59aa7d7a84c36f7d09cc5e0c6c6dc9365bad6341e06ae2 win-x86/node_pdb.7z +45edff3492d39ffee520881ab1050afc2b515cb6817285a153291af04af2c668 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmerKiUACgkQIdkA/9sj +N1baDw/9GGx+nxucDIL5sfN6dnU4i0bodGVlCGh8RKotUuexbZkZ2SrlYokuJfM8 +c+NFUeUTimNgeGXxuReQZ0U5oCC9YVrEsoSFyHsUJjx9D+mNhKw/beWdZrA1m5L2 +I6BzGOZwkJ1PygJM0mQ/l0Wp0ZMbMVW2N9cvj+u/2HtJ7a/H9n938R51uMofELy2 +I7l0hm/Q53X8nhpYfNXEhrqVRWs8mWZ9ha/pA1ydI/YWPlIs1jdPkD+ULteMsc37 +7vv0JqYHAvnIov2H5SDW9WMfX+RUAqSWL570PhmmK1InnI+VfFAPhOozueugtVmd +CsKy+nUMHV3R5P5Nalq0X6lfGiaFGMjOVMZ1TFAG/cwOl8ZK/pWK1VVArKfN6Vgq +pOUFh8iSohfBseglcBbK+OA9HVM8tGGGydfprKkuzLIekRyl8yoInGLRtEVpcHQx +wsEG3Ycgwxd4ico8IlWburUswSzplmmeJhiyOzk3y449rrohgDD7Z0SQgaVe5vNu +br3o/bRwqufjUqaG63Wu4iYRgKuUdTAOEc1x4ne71L37rL6aA51SfqAKjYYNsbRi +BJ9/2R9J0a899nd0Sin5w+3Bo18ABnFn7Zgnyd2ow3qN3p74hjzBw4Msc5kJ1mQy +DyOevQux9/w9cYj7UOp+Ahyp8Egs/0QtxT651zL4LzXD7TQE+5M= +=DK2a +-----END PGP SIGNATURE----- +``` From 2bbe0fe5ae6a3ab810c7c7ac47a403da8444bb75 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Tue, 11 Feb 2025 23:20:47 +0100 Subject: [PATCH 0305/1385] fix: remove confusing close label for navigation menu (#7463) * fix: remove confusing close label for navigation menu * use `toggle` Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --------- Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --- apps/site/components/Containers/NavBar/index.tsx | 4 +--- packages/i18n/locales/en.json | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/apps/site/components/Containers/NavBar/index.tsx b/apps/site/components/Containers/NavBar/index.tsx index 039ea38c8454d..840ef6d242a35 100644 --- a/apps/site/components/Containers/NavBar/index.tsx +++ b/apps/site/components/Containers/NavBar/index.tsx @@ -70,9 +70,7 @@ const NavBar: FC<NavbarProps> = ({ id="sidebarItemToggler" type="checkbox" onChange={e => setIsMenuOpen(() => e.target.checked)} - aria-label={t( - `components.containers.navBar.controls.${isMenuOpen ? 'close' : 'open'}` - )} + aria-label={t(`components.containers.navBar.controls.toggle`)} /> <div className={`${style.main} peer-checked:flex`}> diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index b00f4981e6ca3..a0a3f2b8238a3 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -12,8 +12,7 @@ }, "navBar": { "controls": { - "open": "Show navigation menu", - "close": "Close navigation menu" + "toggle": "Toggle navigation menu" }, "links": { "about": "About", From c474e82649652185fbae41a14a1dfcb8fe3c0103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=84=B5i=E2=9C=97=E2=9C=97?= <45858998+justnixx@users.noreply.github.com> Date: Tue, 11 Feb 2025 23:31:35 +0100 Subject: [PATCH 0306/1385] Update run.md (#7466) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR updates the documentation to clarify that `ts-node` performs type checking by default unless `transpileOnly` is enabled. Signed-off-by: ℵi✗✗ <45858998+justnixx@users.noreply.github.com> --- apps/site/pages/en/learn/typescript/run.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/typescript/run.md b/apps/site/pages/en/learn/typescript/run.md index b3404b1c45566..15e7869ae6ef2 100644 --- a/apps/site/pages/en/learn/typescript/run.md +++ b/apps/site/pages/en/learn/typescript/run.md @@ -10,7 +10,7 @@ In the previous article, we learned how to run TypeScript code using transpilati ## Running TypeScript code with `ts-node` -[ts-node](https://typestrong.org/ts-node/) is a TypeScript execution environment for Node.js. It allows you to run TypeScript code directly in Node.js without the need to compile it first. Note, however, that it does not type check your code. So we recommend to type check your code first with `tsc` and then run it with `ts-node` before shipping it. +[ts-node](https://typestrong.org/ts-node/) is a TypeScript execution environment for Node.js. It allows you to run TypeScript code directly in Node.js without the need to compile it first. By default, `ts-node` performs type checking unless `transpileOnly` is enabled. While `ts-node` can catch type errors at runtime, we still recommend type-checking your code first with `tsc` before shipping it. To use `ts-node`, you need to install it first: From 94933af10312966c7a5b143314e1cc329b08dfaf Mon Sep 17 00:00:00 2001 From: Jordan Harband <ljharb@gmail.com> Date: Tue, 11 Feb 2025 14:33:00 -0800 Subject: [PATCH 0307/1385] fix(snippets): update nvm instructions (#7467) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: don’t hardcode 3000; use the actual port * download: fix nvm instructions (#7434) --- apps/site/next-data/downloadSnippets.ts | 22 +++++++++---------- .../next-data/generators/downloadSnippets.mjs | 6 ++--- apps/site/next.constants.mjs | 2 +- apps/site/snippets/en/download/nvm.bash | 3 +++ 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/apps/site/next-data/downloadSnippets.ts b/apps/site/next-data/downloadSnippets.ts index 909eaf725c365..6fd143852204a 100644 --- a/apps/site/next-data/downloadSnippets.ts +++ b/apps/site/next-data/downloadSnippets.ts @@ -8,11 +8,13 @@ import { import { availableLocaleCodes } from '@/next.locales.mjs'; import type { DownloadSnippet } from '@/types'; -const getDownloadSnippets = (lang: string): Promise<Array<DownloadSnippet>> => { +export default async function getDownloadSnippets( + lang: string +): Promise<Array<DownloadSnippet>> { // Prevents attempting to retrieve data for an unsupported language as both the generator // and the API endpoint will simply return 404. And we want to prevent a 404 response. - if (availableLocaleCodes.includes(lang) === false) { - return Promise.resolve([]); + if (!availableLocaleCodes.includes(lang)) { + return []; } const IS_NOT_VERCEL_RUNTIME_ENV = @@ -24,9 +26,10 @@ const getDownloadSnippets = (lang: string): Promise<Array<DownloadSnippet>> => { // the data directly within the current thread, which will anyways be loaded only once // We use lazy-imports to prevent `provideBlogData` from executing on import if (ENABLE_STATIC_EXPORT || IS_NOT_VERCEL_RUNTIME_ENV) { - return import('@/next-data/providers/downloadSnippets').then( - ({ default: provideDownloadSnippets }) => provideDownloadSnippets(lang)! + const { default: provideDownloadSnippets } = await import( + '@/next-data/providers/downloadSnippets' ); + return provideDownloadSnippets(lang)!; } // Applies the language to the URL, since this content is actually localized @@ -41,9 +44,6 @@ const getDownloadSnippets = (lang: string): Promise<Array<DownloadSnippet>> => { // 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) - .then(response => response.text()) - .then(JSON.parse); -}; - -export default getDownloadSnippets; + const response = await fetch(fetchURL); + return JSON.parse(await response.text()); +} diff --git a/apps/site/next-data/generators/downloadSnippets.mjs b/apps/site/next-data/generators/downloadSnippets.mjs index dcd3d995e3736..e8b2559b87f76 100644 --- a/apps/site/next-data/generators/downloadSnippets.mjs +++ b/apps/site/next-data/generators/downloadSnippets.mjs @@ -11,7 +11,7 @@ import { availableLocaleCodes } from '../../next.locales.mjs'; * This method is used to generate the Node.js Website Download Snippets * for self-consumption during RSC and Static Builds */ -const generateDownloadSnippets = async () => { +export default async function generateDownloadSnippets() { /** * This generates all the Download Snippets for each available Locale * @@ -39,6 +39,4 @@ const generateDownloadSnippets = async () => { }); return new Map(await Promise.all(downloadSnippets)); -}; - -export default generateDownloadSnippets; +} diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index a371029829248..cf310a9b3452a 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -98,7 +98,7 @@ export const NEXT_DATA_URL = process.env.NEXT_PUBLIC_DATA_URL ? process.env.NEXT_PUBLIC_DATA_URL : VERCEL_ENV ? `${BASE_URL}${BASE_PATH}/en/next-data/` - : `http://localhost:3000/en/next-data/`; + : `http://localhost:${process.env.PORT ?? 3000}/en/next-data/`; /** * This ReGeX is used to remove the `index.md(x)` suffix of a name and to remove diff --git a/apps/site/snippets/en/download/nvm.bash b/apps/site/snippets/en/download/nvm.bash index f2d3d4798f296..33db32e10fcd9 100644 --- a/apps/site/snippets/en/download/nvm.bash +++ b/apps/site/snippets/en/download/nvm.bash @@ -1,6 +1,9 @@ # Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +# in lieu of restarting the shell +\. "$HOME/.nvm/nvm.sh" + # Download and install Node.js: nvm install ${props.release.major} From e52e6dbe64b21013acf99d328f3107ba63b96faf Mon Sep 17 00:00:00 2001 From: Wes Todd <wes@wesleytodd.com> Date: Tue, 11 Feb 2025 16:36:22 -0600 Subject: [PATCH 0308/1385] fix(diagnostics): Updated flamegraph tutorial to use better tools (#7474) --- apps/site/pages/en/learn/diagnostics/flame-graphs.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/site/pages/en/learn/diagnostics/flame-graphs.md b/apps/site/pages/en/learn/diagnostics/flame-graphs.md index 2d86f5e5368aa..5ebdd3062bd9c 100644 --- a/apps/site/pages/en/learn/diagnostics/flame-graphs.md +++ b/apps/site/pages/en/learn/diagnostics/flame-graphs.md @@ -35,17 +35,17 @@ Now let's get to work. 3. Run node with perf enabled (see [perf output issues](#perf-output-issues) for tips specific to Node.js versions) ``` - perf record -e cycles:u -g -- node --perf-basic-prof app.js + perf record -e cycles:u -g -- node --perf-basic-prof --interpreted-frames-native-stack app.js ``` 4. Disregard warnings unless they're saying you can't run perf due to missing packages; you may get some warnings about not being able to access kernel module samples which you're not after anyway. 5. Run `perf script > perfs.out` to generate the data file you'll visualize in a moment. It's useful to [apply some cleanup](#filtering-out-nodejs-internal-functions) for a more readable graph -6. Install stackvis if not yet installed `npm i -g stackvis` -7. Run `stackvis perf < perfs.out > flamegraph.htm` +6. Clone Brendan Gregg's FlameGraph tools: https://github.com/brendangregg/FlameGraph +7. Run `cat perfs.out | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl --colors=js > profile.svg` Now open the flame graph file in your favorite browser and watch it burn. It's color-coded so you can focus on the most saturated orange bars first. They're likely to represent CPU heavy functions. -Worth mentioning - if you click an element of a flame graph a zoom-in of its surroundings will be displayed above the graph. +Worth mentioning - if you click an element of a flame graph a it will zoom-in on the section you clicked. ### Using `perf` to sample a running process From e10c6af1dc108152212c9f9f33029a1d6efc76ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= <targos@protonmail.com> Date: Thu, 13 Feb 2025 18:52:28 +0100 Subject: [PATCH 0309/1385] Blog: v23.8.0 release post (#7496) Refs: https://github.com/nodejs/node/pull/57005 --- apps/site/pages/en/blog/release/v23.8.0.md | 250 +++++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.8.0.md diff --git a/apps/site/pages/en/blog/release/v23.8.0.md b/apps/site/pages/en/blog/release/v23.8.0.md new file mode 100644 index 0000000000000..b071b8a23006d --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.8.0.md @@ -0,0 +1,250 @@ +--- +date: '2025-02-13T17:44:50.270Z' +category: release +title: Node v23.8.0 (Current) +layout: blog-post +author: Michaël Zasso +--- + +## 2025-02-13, Version 23.8.0 (Current), @targos + +### Notable Changes + +#### Support for using system CA certificates store on macOS and Windows + +This version adds the `--use-system-ca` command-line flag, which instructs Node.js +to use the trusted CA certificates present in the system store along with +the `--use-bundled-ca`, `--use-openssl-ca` options. + +This option is available on macOS and Windows for now. + +Contributed by Tim Jacomb in [#56599](https://github.com/nodejs/node/pull/56599) +and Joyee Cheung in [#56833](https://github.com/nodejs/node/pull/56833). + +#### Introduction of the URL Pattern API + +An implementation of the [URL Pattern API](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API) +is now available. + +The `URLPattern` constructor is exported from the `node:url` module and will be +available as a global in Node.js 24. + +Contributed by Yagiz Nizipli and Daniel Lemire in [#56452](https://github.com/nodejs/node/pull/56452). + +#### Support for the zstd compression algorithm + +Node.js now includes support for the Zstandard (zstd) compression algorithm. +Various APIs have been added to the `node:zlib` module for both compression and decompression +of zstd streams. + +Contributed by Jan Krems in [#52100](https://github.com/nodejs/node/pull/52100). + +#### Node.js thread names + +Threads created by the Node.js process are now named to improve the debugging experience. +Worker threads will use the `name` option that can be passed to the `Worker` constructor. + +Contributed by Rafael Gonzaga in [#56416](https://github.com/nodejs/node/pull/56416). + +#### Timezone data has been updated to 2025a + +Included changes: + +- Paraguay adopts permanent -03 starting spring 2024. +- Improve pre-1991 data for the Philippines. + +#### Other Notable Changes + +- \[[`39997867cf`](https://github.com/nodejs/node/commit/39997867cf)] - **(SEMVER-MINOR)** **sqlite**: allow returning `ArrayBufferView`s from user-defined functions (René) [#56790](https://github.com/nodejs/node/pull/56790) + +### Commits + +- \[[`0ee9c34d63`](https://github.com/nodejs/node/commit/0ee9c34d63)] - **benchmark**: add simple parse and test benchmarks for URLPattern (James M Snell) [#56882](https://github.com/nodejs/node/pull/56882) +- \[[`b3f2045d14`](https://github.com/nodejs/node/commit/b3f2045d14)] - **build**: gyp exclude libm linking on macOS (deepak1556) [#56901](https://github.com/nodejs/node/pull/56901) +- \[[`e0dd9aefd6`](https://github.com/nodejs/node/commit/e0dd9aefd6)] - **build**: remove explicit linker call to libm on macOS (deepak1556) [#56901](https://github.com/nodejs/node/pull/56901) +- \[[`52399da780`](https://github.com/nodejs/node/commit/52399da780)] - **build**: link with Security.framework in GN build (Cheng) [#56895](https://github.com/nodejs/node/pull/56895) +- \[[`582b9221c9`](https://github.com/nodejs/node/commit/582b9221c9)] - **build**: do not put commands in sources variables (Cheng) [#56885](https://github.com/nodejs/node/pull/56885) +- \[[`ea61b956e9`](https://github.com/nodejs/node/commit/ea61b956e9)] - **build**: add double quotes around <(python) (Luigi Pinca) [#56826](https://github.com/nodejs/node/pull/56826) +- \[[`14236ef778`](https://github.com/nodejs/node/commit/14236ef778)] - **build**: add build option suppress_all_error_on_warn (Michael Dawson) [#56647](https://github.com/nodejs/node/pull/56647) +- \[[`dfd3f430f3`](https://github.com/nodejs/node/commit/dfd3f430f3)] - **build,win**: enable ccache (Stefan Stojanovic) [#56847](https://github.com/nodejs/node/pull/56847) +- \[[`3e207bd9ec`](https://github.com/nodejs/node/commit/3e207bd9ec)] - **(SEMVER-MINOR)** **crypto**: support --use-system-ca on Windows (Joyee Cheung) [#56833](https://github.com/nodejs/node/pull/56833) +- \[[`fe2694a992`](https://github.com/nodejs/node/commit/fe2694a992)] - **crypto**: fix X509\* leak in --use-system-ca (Joyee Cheung) [#56832](https://github.com/nodejs/node/pull/56832) +- \[[`60039a2c36`](https://github.com/nodejs/node/commit/60039a2c36)] - **crypto**: add api to get openssl security level (Michael Dawson) [#56601](https://github.com/nodejs/node/pull/56601) +- \[[`39a474f7c0`](https://github.com/nodejs/node/commit/39a474f7c0)] - **(SEMVER-MINOR)** **crypto**: added support for reading certificates from macOS system store (Tim Jacomb) [#56599](https://github.com/nodejs/node/pull/56599) +- \[[`144bee8067`](https://github.com/nodejs/node/commit/144bee8067)] - **deps**: update zlib to 1.3.0.1-motley-788cb3c (Node.js GitHub Bot) [#56655](https://github.com/nodejs/node/pull/56655) +- \[[`7fd39e3a79`](https://github.com/nodejs/node/commit/7fd39e3a79)] - **deps**: update sqlite to 3.49.0 (Node.js GitHub Bot) [#56654](https://github.com/nodejs/node/pull/56654) +- \[[`d698cb5434`](https://github.com/nodejs/node/commit/d698cb5434)] - **deps**: update amaro to 0.3.2 (marco-ippolito) [#56916](https://github.com/nodejs/node/pull/56916) +- \[[`dbd09067c0`](https://github.com/nodejs/node/commit/dbd09067c0)] - **deps**: V8: cherry-pick 9ab40592f697 (Levi Zim) [#56781](https://github.com/nodejs/node/pull/56781) +- \[[`ee33ef3aa6`](https://github.com/nodejs/node/commit/ee33ef3aa6)] - **deps**: update cjs-module-lexer to 2.0.0 (Michael Dawson) [#56855](https://github.com/nodejs/node/pull/56855) +- \[[`c0542557d0`](https://github.com/nodejs/node/commit/c0542557d0)] - **deps**: update timezone to 2025a (Node.js GitHub Bot) [#56876](https://github.com/nodejs/node/pull/56876) +- \[[`d67cb1f9bb`](https://github.com/nodejs/node/commit/d67cb1f9bb)] - **deps**: update simdjson to 3.12.0 (Node.js GitHub Bot) [#56874](https://github.com/nodejs/node/pull/56874) +- \[[`70b04b4314`](https://github.com/nodejs/node/commit/70b04b4314)] - **deps**: update googletest to e235eb3 (Node.js GitHub Bot) [#56873](https://github.com/nodejs/node/pull/56873) +- \[[`e11cda003f`](https://github.com/nodejs/node/commit/e11cda003f)] - **(SEMVER-MINOR)** **deps**: update ada to v3.0.1 (Yagiz Nizipli) [#56452](https://github.com/nodejs/node/pull/56452) +- \[[`8743ef525d`](https://github.com/nodejs/node/commit/8743ef525d)] - **deps**: update simdjson to 3.11.6 (Node.js GitHub Bot) [#56250](https://github.com/nodejs/node/pull/56250) +- \[[`0f553e5575`](https://github.com/nodejs/node/commit/0f553e5575)] - **deps**: update amaro to 0.3.1 (Node.js GitHub Bot) [#56785](https://github.com/nodejs/node/pull/56785) +- \[[`380a8d8d2f`](https://github.com/nodejs/node/commit/380a8d8d2f)] - **(SEMVER-MINOR)** **deps,tools**: add zstd 1.5.6 (Jan Krems) [#52100](https://github.com/nodejs/node/pull/52100) +- \[[`66898a7c3b`](https://github.com/nodejs/node/commit/66898a7c3b)] - **doc**: update history of stream.Readable.toWeb() (Jimmy Leung) [#56928](https://github.com/nodejs/node/pull/56928) +- \[[`9e29416e12`](https://github.com/nodejs/node/commit/9e29416e12)] - **doc**: make MDN links to global classes more consistent (Antoine du Hamel) [#56924](https://github.com/nodejs/node/pull/56924) +- \[[`6bc270728a`](https://github.com/nodejs/node/commit/6bc270728a)] - **doc**: make MDN links to global classes more consistent in `assert.md` (Antoine du Hamel) [#56920](https://github.com/nodejs/node/pull/56920) +- \[[`00da003171`](https://github.com/nodejs/node/commit/00da003171)] - **doc**: make MDN links to global classes more consistent (Antoine du Hamel) [#56923](https://github.com/nodejs/node/pull/56923) +- \[[`d90198793a`](https://github.com/nodejs/node/commit/d90198793a)] - **doc**: make MDN links to global classes more consistent in `util.md` (Antoine du Hamel) [#56922](https://github.com/nodejs/node/pull/56922) +- \[[`5f4377a759`](https://github.com/nodejs/node/commit/5f4377a759)] - **doc**: make MDN links to global classes more consistent in `buffer.md` (Antoine du Hamel) [#56921](https://github.com/nodejs/node/pull/56921) +- \[[`7353266b50`](https://github.com/nodejs/node/commit/7353266b50)] - **doc**: improve type stripping documentation (Marco Ippolito) [#56916](https://github.com/nodejs/node/pull/56916) +- \[[`888d2acc3a`](https://github.com/nodejs/node/commit/888d2acc3a)] - **doc**: specificy support for erasable ts syntax (Marco Ippolito) [#56916](https://github.com/nodejs/node/pull/56916) +- \[[`3c082d43bc`](https://github.com/nodejs/node/commit/3c082d43bc)] - **doc**: update post sec release process (Rafael Gonzaga) [#56907](https://github.com/nodejs/node/pull/56907) +- \[[`f0bf35d3c5`](https://github.com/nodejs/node/commit/f0bf35d3c5)] - **doc**: update websocket link to avoid linking to self (Chengzhong Wu) [#56897](https://github.com/nodejs/node/pull/56897) +- \[[`373dbb0e6c`](https://github.com/nodejs/node/commit/373dbb0e6c)] - **doc**: mark `--env-file-if-exists` flag as experimental (Juan José) [#56893](https://github.com/nodejs/node/pull/56893) +- \[[`d436888cc8`](https://github.com/nodejs/node/commit/d436888cc8)] - **doc**: fix typo in cjs example of `util.styleText` (Deokjin Kim) [#56769](https://github.com/nodejs/node/pull/56769) +- \[[`91638eeb4a`](https://github.com/nodejs/node/commit/91638eeb4a)] - **doc**: clarify sqlite user-defined function behaviour (René) [#56786](https://github.com/nodejs/node/pull/56786) +- \[[`bab9c4d331`](https://github.com/nodejs/node/commit/bab9c4d331)] - **events**: getMaxListeners detects 0 listeners (Matthew Aitken) [#56807](https://github.com/nodejs/node/pull/56807) +- \[[`ccaf7fe737`](https://github.com/nodejs/node/commit/ccaf7fe737)] - **fs**: make `FileHandle.readableWebStream` always create byte streams (Ian Kerins) [#55461](https://github.com/nodejs/node/pull/55461) +- \[[`974cec7a0a`](https://github.com/nodejs/node/commit/974cec7a0a)] - **http**: be more generational GC friendly (ywave620) [#56767](https://github.com/nodejs/node/pull/56767) +- \[[`be00058712`](https://github.com/nodejs/node/commit/be00058712)] - **inspector**: add Network.Initiator in inspector protocol (Chengzhong Wu) [#56805](https://github.com/nodejs/node/pull/56805) +- \[[`31293a4b09`](https://github.com/nodejs/node/commit/31293a4b09)] - **inspector**: fix GN build (Cheng) [#56798](https://github.com/nodejs/node/pull/56798) +- \[[`91a302356b`](https://github.com/nodejs/node/commit/91a302356b)] - **inspector**: fix StringUtil::CharacterCount for unicodes (Chengzhong Wu) [#56788](https://github.com/nodejs/node/pull/56788) +- \[[`3b305f25f2`](https://github.com/nodejs/node/commit/3b305f25f2)] - **lib**: filter node:quic from builtinModules when flag not used (James M Snell) [#56870](https://github.com/nodejs/node/pull/56870) +- \[[`f06ee4c54a`](https://github.com/nodejs/node/commit/f06ee4c54a)] - **meta**: bump `actions/upload-artifact` from 4.4.3 to 4.6.0 (dependabot\[bot]) [#56861](https://github.com/nodejs/node/pull/56861) +- \[[`d230bc3b3c`](https://github.com/nodejs/node/commit/d230bc3b3c)] - **meta**: bump `actions/setup-node` from 4.1.0 to 4.2.0 (dependabot\[bot]) [#56868](https://github.com/nodejs/node/pull/56868) +- \[[`d4ecfa745e`](https://github.com/nodejs/node/commit/d4ecfa745e)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#56889](https://github.com/nodejs/node/pull/56889) +- \[[`698c56bb94`](https://github.com/nodejs/node/commit/698c56bb94)] - **meta**: add @nodejs/url as codeowner (Chengzhong Wu) [#56783](https://github.com/nodejs/node/pull/56783) +- \[[`a274b28857`](https://github.com/nodejs/node/commit/a274b28857)] - **module**: fix require.resolve() crash on non-string paths (Aditi) [#56942](https://github.com/nodejs/node/pull/56942) +- \[[`4e3052aeee`](https://github.com/nodejs/node/commit/4e3052aeee)] - **quic**: fixup errant LocalVector usage (James M Snell) [#56564](https://github.com/nodejs/node/pull/56564) +- \[[`dfc61f7bb7`](https://github.com/nodejs/node/commit/dfc61f7bb7)] - **readline**: fix unresolved promise on abortion (Daniel Venable) [#54030](https://github.com/nodejs/node/pull/54030) +- \[[`9e60501f5e`](https://github.com/nodejs/node/commit/9e60501f5e)] - **sqlite**: fix coverity warnings related to backup() (Colin Ihrig) [#56961](https://github.com/nodejs/node/pull/56961) +- \[[`1913a4aabc`](https://github.com/nodejs/node/commit/1913a4aabc)] - **sqlite**: restore changes from #55373 (Colin Ihrig) [#56908](https://github.com/nodejs/node/pull/56908) +- \[[`8410c955b7`](https://github.com/nodejs/node/commit/8410c955b7)] - **sqlite**: fix use-after-free in StatementSync due to premature GC (Divy Srivastava) [#56840](https://github.com/nodejs/node/pull/56840) +- \[[`01d732d629`](https://github.com/nodejs/node/commit/01d732d629)] - **sqlite**: handle conflicting SQLite and JS errors (Colin Ihrig) [#56787](https://github.com/nodejs/node/pull/56787) +- \[[`39997867cf`](https://github.com/nodejs/node/commit/39997867cf)] - **(SEMVER-MINOR)** **sqlite**: allow returning `ArrayBufferView`s from user-defined functions (René) [#56790](https://github.com/nodejs/node/pull/56790) +- \[[`8dc637681a`](https://github.com/nodejs/node/commit/8dc637681a)] - **sqlite, test**: expose sqlite online backup api (Edy Silva) [#56253](https://github.com/nodejs/node/pull/56253) +- \[[`cfea53eccc`](https://github.com/nodejs/node/commit/cfea53eccc)] - **src**: use `args.This()` in zlib (Michaël Zasso) [#56988](https://github.com/nodejs/node/pull/56988) +- \[[`6b398d6d0b`](https://github.com/nodejs/node/commit/6b398d6d0b)] - **src**: replace `SplitString` with built-in (Yagiz Nizipli) [#54990](https://github.com/nodejs/node/pull/54990) +- \[[`fbb32e0a08`](https://github.com/nodejs/node/commit/fbb32e0a08)] - **src**: add nullptr handling for `NativeKeyObject` (Burkov Egor) [#56900](https://github.com/nodejs/node/pull/56900) +- \[[`83ff7be9fd`](https://github.com/nodejs/node/commit/83ff7be9fd)] - **src**: disallow copy/move fns/constructors (Yagiz Nizipli) [#56811](https://github.com/nodejs/node/pull/56811) +- \[[`63611d0331`](https://github.com/nodejs/node/commit/63611d0331)] - **src**: add a hard dependency v8_inspector_headers (Chengzhong Wu) [#56805](https://github.com/nodejs/node/pull/56805) +- \[[`3d957d135c`](https://github.com/nodejs/node/commit/3d957d135c)] - **src**: improve error handling in encoding_binding.cc (James M Snell) [#56915](https://github.com/nodejs/node/pull/56915) +- \[[`9e9ac3ccd8`](https://github.com/nodejs/node/commit/9e9ac3ccd8)] - **src**: avoid copy by using std::views::keys (Yagiz Nizipli) [#56080](https://github.com/nodejs/node/pull/56080) +- \[[`086cdc297a`](https://github.com/nodejs/node/commit/086cdc297a)] - **src**: remove obsolete NoArrayBufferZeroFillScope (James M Snell) [#56913](https://github.com/nodejs/node/pull/56913) +- \[[`915d7aeb37`](https://github.com/nodejs/node/commit/915d7aeb37)] - **src**: set signal inspector io thread name (RafaelGSS) [#56416](https://github.com/nodejs/node/pull/56416) +- \[[`f4b086d29d`](https://github.com/nodejs/node/commit/f4b086d29d)] - **src**: set thread name for main thread and v8 worker (RafaelGSS) [#56416](https://github.com/nodejs/node/pull/56416) +- \[[`3579143630`](https://github.com/nodejs/node/commit/3579143630)] - **src**: set worker thread name using worker.name (RafaelGSS) [#56416](https://github.com/nodejs/node/pull/56416) +- \[[`736ff5de6d`](https://github.com/nodejs/node/commit/736ff5de6d)] - **src**: use a default thread name for inspector (RafaelGSS) [#56416](https://github.com/nodejs/node/pull/56416) +- \[[`be8e2b4d8f`](https://github.com/nodejs/node/commit/be8e2b4d8f)] - **src**: improve error handling in permission.cc (James M Snell) [#56904](https://github.com/nodejs/node/pull/56904) +- \[[`d6cf0911ee`](https://github.com/nodejs/node/commit/d6cf0911ee)] - **src**: improve error handling in node_sqlite (James M Snell) [#56891](https://github.com/nodejs/node/pull/56891) +- \[[`521fed1bac`](https://github.com/nodejs/node/commit/521fed1bac)] - **src**: improve error handling in node_os by removing ToLocalChecked (James M Snell) [#56888](https://github.com/nodejs/node/pull/56888) +- \[[`c9a99df8e7`](https://github.com/nodejs/node/commit/c9a99df8e7)] - **src**: improve error handling in node_url (James M Snell) [#56886](https://github.com/nodejs/node/pull/56886) +- \[[`5c82ef3ace`](https://github.com/nodejs/node/commit/5c82ef3ace)] - **src**: add memory retainer traits for external types (Chengzhong Wu) [#56881](https://github.com/nodejs/node/pull/56881) +- \[[`edb194b2d5`](https://github.com/nodejs/node/commit/edb194b2d5)] - **src**: prevent URLPattern property accessors from crashing on invalid this (James M Snell) [#56877](https://github.com/nodejs/node/pull/56877) +- \[[`9624049414`](https://github.com/nodejs/node/commit/9624049414)] - **src**: pull in more electron boringssl adjustments (James M Snell) [#56858](https://github.com/nodejs/node/pull/56858) +- \[[`f8910e384d`](https://github.com/nodejs/node/commit/f8910e384d)] - **src**: make multiple improvements to node_url_pattern (James M Snell) [#56871](https://github.com/nodejs/node/pull/56871) +- \[[`94a0237b18`](https://github.com/nodejs/node/commit/94a0237b18)] - **src**: clean up some obsolete crypto methods (James M Snell) [#56792](https://github.com/nodejs/node/pull/56792) +- \[[`b240ca67b9`](https://github.com/nodejs/node/commit/b240ca67b9)] - **src**: add check for Bignum in GroupOrderSize (Burkov Egor) [#56702](https://github.com/nodejs/node/pull/56702) +- \[[`45692e9c7c`](https://github.com/nodejs/node/commit/45692e9c7c)] - **src, deps**: port electron's boringssl workarounds (James M Snell) [#56812](https://github.com/nodejs/node/pull/56812) +- \[[`a9d80d43cb`](https://github.com/nodejs/node/commit/a9d80d43cb)] - **(SEMVER-MINOR)** **src, quic**: refine more of the quic implementation (James M Snell) [#56328](https://github.com/nodejs/node/pull/56328) +- \[[`93d0beb6c8`](https://github.com/nodejs/node/commit/93d0beb6c8)] - **src,test**: expand test coverage for urlpattern and fix error (James M Snell) [#56878](https://github.com/nodejs/node/pull/56878) +- \[[`5a9732e1d0`](https://github.com/nodejs/node/commit/5a9732e1d0)] - **test**: improve timeout duration for debugger events (Yagiz Nizipli) [#56970](https://github.com/nodejs/node/pull/56970) +- \[[`60c8fc07ff`](https://github.com/nodejs/node/commit/60c8fc07ff)] - **test**: remove unnecessary syscall to cpuinfo (Yagiz Nizipli) [#56968](https://github.com/nodejs/node/pull/56968) +- \[[`40cdf756e6`](https://github.com/nodejs/node/commit/40cdf756e6)] - **test**: update webstorage wpt (Yagiz Nizipli) [#56963](https://github.com/nodejs/node/pull/56963) +- \[[`de77371a9e`](https://github.com/nodejs/node/commit/de77371a9e)] - **test**: execute shell directly for refresh() (Yagiz Nizipli) [#55051](https://github.com/nodejs/node/pull/55051) +- \[[`f4254b8e70`](https://github.com/nodejs/node/commit/f4254b8e70)] - **test**: automatically sync wpt urlpattern tests (Jonas) [#56949](https://github.com/nodejs/node/pull/56949) +- \[[`a473d3f57a`](https://github.com/nodejs/node/commit/a473d3f57a)] - **test**: update snapshots for amaro v0.3.2 (Marco Ippolito) [#56916](https://github.com/nodejs/node/pull/56916) +- \[[`abca97f7e2`](https://github.com/nodejs/node/commit/abca97f7e2)] - **test**: change jenkins reporter (Carlos Espa) [#56808](https://github.com/nodejs/node/pull/56808) +- \[[`7c9fa11127`](https://github.com/nodejs/node/commit/7c9fa11127)] - **test**: fix race condition in test-child-process-bad-stdio (Colin Ihrig) [#56845](https://github.com/nodejs/node/pull/56845) +- \[[`b8b6e68836`](https://github.com/nodejs/node/commit/b8b6e68836)] - **(SEMVER-MINOR)** **test**: add WPT for URLPattern (Yagiz Nizipli) [#56452](https://github.com/nodejs/node/pull/56452) +- \[[`b6d3d52e20`](https://github.com/nodejs/node/commit/b6d3d52e20)] - **test**: adjust check to use OpenSSL sec level (Michael Dawson) [#56819](https://github.com/nodejs/node/pull/56819) +- \[[`3beac87f92`](https://github.com/nodejs/node/commit/3beac87f92)] - **test**: test-crypto-scrypt.js doesn't need internals (Meghan Denny) [#56673](https://github.com/nodejs/node/pull/56673) +- \[[`3af23a10f3`](https://github.com/nodejs/node/commit/3af23a10f3)] - **test**: set `test-fs-cp` as flaky (Stefan Stojanovic) [#56799](https://github.com/nodejs/node/pull/56799) +- \[[`1146f48f67`](https://github.com/nodejs/node/commit/1146f48f67)] - **test**: search cctest files (Chengzhong Wu) [#56791](https://github.com/nodejs/node/pull/56791) +- \[[`86c199b25a`](https://github.com/nodejs/node/commit/86c199b25a)] - **test**: convert test_encoding_binding.cc to a JS test (Chengzhong Wu) [#56791](https://github.com/nodejs/node/pull/56791) +- \[[`bd5484717c`](https://github.com/nodejs/node/commit/bd5484717c)] - **test**: test-crypto-prime.js doesn't need internals (Meghan Denny) [#56675](https://github.com/nodejs/node/pull/56675) +- \[[`f5f54414e4`](https://github.com/nodejs/node/commit/f5f54414e4)] - **test**: temporary remove resource check from fs read-write (Rafael Gonzaga) [#56789](https://github.com/nodejs/node/pull/56789) +- \[[`c8bd2ba0ad`](https://github.com/nodejs/node/commit/c8bd2ba0ad)] - **test**: mark test-without-async-context-frame flaky on windows (James M Snell) [#56753](https://github.com/nodejs/node/pull/56753) +- \[[`2c2e4a4ae0`](https://github.com/nodejs/node/commit/2c2e4a4ae0)] - **test**: remove unnecessary code (Luigi Pinca) [#56784](https://github.com/nodejs/node/pull/56784) +- \[[`4606a5f79b`](https://github.com/nodejs/node/commit/4606a5f79b)] - **test**: mark `test-esm-loader-hooks-inspect-wait` flaky (Richard Lau) [#56803](https://github.com/nodejs/node/pull/56803) +- \[[`38c77e3462`](https://github.com/nodejs/node/commit/38c77e3462)] - **test**: update WPT for url to a23788b77a (Node.js GitHub Bot) [#56779](https://github.com/nodejs/node/pull/56779) +- \[[`50ebd5fd31`](https://github.com/nodejs/node/commit/50ebd5fd31)] - **test**: remove duplicate error reporter from ci (Carlos Espa) [#56739](https://github.com/nodejs/node/pull/56739) +- \[[`0c3ae25aec`](https://github.com/nodejs/node/commit/0c3ae25aec)] - **test_runner**: print formatted errors on summary (Pietro Marchini) [#56911](https://github.com/nodejs/node/pull/56911) +- \[[`b5a8a812fb`](https://github.com/nodejs/node/commit/b5a8a812fb)] - **tools**: bump eslint version (dependabot\[bot]) [#56869](https://github.com/nodejs/node/pull/56869) +- \[[`e1f86c1b9d`](https://github.com/nodejs/node/commit/e1f86c1b9d)] - **tools**: remove test-asan/ubsan workflows (Michaël Zasso) [#56823](https://github.com/nodejs/node/pull/56823) +- \[[`405a6678b7`](https://github.com/nodejs/node/commit/405a6678b7)] - **tools**: run macOS test workflow with Xcode 16.1 (Michaël Zasso) [#56831](https://github.com/nodejs/node/pull/56831) +- \[[`16529c130f`](https://github.com/nodejs/node/commit/16529c130f)] - **tools**: update sccache and sccache-action (Michaël Zasso) [#56815](https://github.com/nodejs/node/pull/56815) +- \[[`fe004111ea`](https://github.com/nodejs/node/commit/fe004111ea)] - **tools**: fix license-builder for inspector_protocol (Michaël Zasso) [#56814](https://github.com/nodejs/node/pull/56814) +- \[[`bc97a90176`](https://github.com/nodejs/node/commit/bc97a90176)] - **(SEMVER-MINOR)** **url**: add URLPattern implementation (Yagiz Nizipli) [#56452](https://github.com/nodejs/node/pull/56452) +- \[[`77294d8918`](https://github.com/nodejs/node/commit/77294d8918)] - **util**: enforce shouldColorize in styleText array arg (Marco Ippolito) [#56722](https://github.com/nodejs/node/pull/56722) +- \[[`8e6c191601`](https://github.com/nodejs/node/commit/8e6c191601)] - **zlib**: use modern class syntax for zstd classes (Yagiz Nizipli) [#56965](https://github.com/nodejs/node/pull/56965) +- \[[`a3ca7f37a2`](https://github.com/nodejs/node/commit/a3ca7f37a2)] - **zlib**: make all zstd functions experimental (Yagiz Nizipli) [#56964](https://github.com/nodejs/node/pull/56964) +- \[[`4cc7907738`](https://github.com/nodejs/node/commit/4cc7907738)] - **(SEMVER-MINOR)** **zlib**: add zstd support (Jan Krems) [#52100](https://github.com/nodejs/node/pull/52100) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.8.0/node-v23.8.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.8.0/node-v23.8.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.8.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.8.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.8.0/node-v23.8.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.8.0/node-v23.8.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.8.0/node-v23.8.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.8.0/node-v23.8.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.8.0/node-v23.8.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.8.0/node-v23.8.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.8.0/node-v23.8.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.8.0/node-v23.8.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.8.0/node-v23.8.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.8.0/node-v23.8.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.8.0/ \ +Documentation: https://nodejs.org/docs/v23.8.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +7fefc7b97a47364a096d882f0ee3c43b4aa79fc472b17dc3ab3559da88cc48a7 node-v23.8.0-aix-ppc64.tar.gz +c1ee20f43adde04a84191a183f31b5b825206a98885d9c5b86dbd474b304a3e1 node-v23.8.0-arm64.msi +7c3bb4ccfd558f5cc12ffb81df795c5960e429088feb1ae650fa2ae65418858a node-v23.8.0-darwin-arm64.tar.gz +5629dbad3255f0655228f2c3188bd1a765aaaec189fb495d20f1c570b626f122 node-v23.8.0-darwin-arm64.tar.xz +a4c93b517d51d368248e9fddd20bc46ba1f6081df2a55d267a33015a4ab31886 node-v23.8.0-darwin-x64.tar.gz +c2854c765cfd013409463f11d4099666ff2b45d8136b4c60e7844b117211f6f5 node-v23.8.0-darwin-x64.tar.xz +5b8daef6067d34974d7807ffcde0e3f4930420bbc8a1c0ad5fb61a46c769d247 node-v23.8.0-headers.tar.gz +0ba4536c31c67e897d2390e7c9c942a1711f4632d832e63e336bdda760264dcc node-v23.8.0-headers.tar.xz +d603dcce61cd8f27440bd0cdb2688f5963a7ac6cd0f425e5c9ae8c93cfaaa134 node-v23.8.0-linux-arm64.tar.gz +0be81418587eee8ef2d7537243d808d15e12f3f8a8461dd39728bcdcc91c9c72 node-v23.8.0-linux-arm64.tar.xz +02194b458283fcc0f41f826829e2452dac4622f2386b0c29e374bc859daa70ce node-v23.8.0-linux-armv7l.tar.gz +f9b874ff462f4b34801530eab802ce2c86be372ae7040f20b9d6e430f3557a19 node-v23.8.0-linux-armv7l.tar.xz +66e0e26a27db7ecb591c7d146ca63b727e452610a8adfb334d423bbb76563619 node-v23.8.0-linux-ppc64le.tar.gz +b7511b7fd5275a69ab868019a51837fe090a3ed5e5a63e3974bfbccf4fca0dd5 node-v23.8.0-linux-ppc64le.tar.xz +84996f533ddc37d720085a5134b898fd518b00fbc1f0f70a9a29fd3fd0df632d node-v23.8.0-linux-s390x.tar.gz +204c462aab3557d205f2f4b72a468b84fac82fb4360a76630437d988e4614e57 node-v23.8.0-linux-s390x.tar.xz +f6d98bbdd0a4078c1e422a6a1d8bf07ad693a4dd793bb5772990456faeca6e95 node-v23.8.0-linux-x64.tar.gz +78d24ff80a52f7dd3a94542d7598163624fcda7be1d4777bc9161d8c8d15267f node-v23.8.0-linux-x64.tar.xz +172e4c4e57983a94f6398fc29cafbb8aa1003526bf937742cd89df7e9b42b7c5 node-v23.8.0.pkg +23b5e0b0b6752a21c7af4e2361655a54ad499d3ae06b6f9af1dd311365b8496a node-v23.8.0.tar.gz +6ec5d54d0e8423fc5986f6efa4f661e8370659818b14f458cdc9d1b9f75d3b88 node-v23.8.0.tar.xz +df941b65ae8a3b2975741487707f3c656519136000fb481753eb2ed053480324 node-v23.8.0-win-arm64.7z +13b44af66a6bf2938a6a6a8d96ea17e164852ece1b293d552bb45deb1acb1ba9 node-v23.8.0-win-arm64.zip +ef23a3cc0c27d4647e54266edabde8d4e24ea7768171ae7057a1a6c96f081575 node-v23.8.0-win-x64.7z +9e03646224fcf44fa0b594df5d012da9cb5b137c52f36f33b11def3319cd132c node-v23.8.0-win-x64.zip +1cc6010559c43447a5573bacf8e91d18a8ceb2a36a8c26f3eda23ef820f116af node-v23.8.0-x64.msi +c6b7d947c05b85d02e0829feae8843f6326a2a0ca1189bdf10c9f1431591aba5 win-arm64/node.exe +b04fc2c4f04273feaae3a2bc372d507fa631d7d6fd5f11265219d5b10d083a3e win-arm64/node.lib +4ed598117177d60ef65899f0315ab63a861a4d2fb4d6dde116ed7f26bdaf2d3b win-arm64/node_pdb.7z +d244d5237fcce8dbf22f6bf350b309187386c5df0d03a61a9df85fbe7456ce4c win-arm64/node_pdb.zip +8a0e6be40de816f334e65eb2de19d4a9b833c413eb866015eac19dceca9c3edf win-x64/node.exe +7005ad268c2a3b55e741957609696fd707982d8d7727325c44e2cbf23f00f565 win-x64/node.lib +38fbaeb11dd303086ec71a7198b84c09579ddbf4a3d80386434bc9bbd597ab5e win-x64/node_pdb.7z +ca2c9b25c58cdfeadc11b51325f6d348fe7fa51dd600f1cec1de1d43558a8dab win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEj8yhP+8dDC6RAI4Jdw96mlrhVgAFAmeuLsYACgkQdw96mlrh +VgBnZw/+O7x8q1BobRqmGyPQrR3O5+FoysW2/fg4b4ZrtWHlfLskUC1BzRfvQJHy +lLQu+rZzuUDM9mM78+Q5Xo32RLoRQUuZ3tr2lWgXrPxzsixaJgGBCHzCmHIKNoh+ +79Ta9y8Uqe6Edy2gWlqZE5lP2Ls9MAYvZU0C2wWsEKvl27VEmblfaf1eSJ3TnMlI +ou8cnr7qBDmc8qPRDmuO/ct3ZY/nNWl+jR43wKjINM6CEY60NZMLu2OFjpsiPEm+ +/RAfjUgbp7IZcvFR5T3+GZuS2okdbUJQ/MKzqLLbSJeE4bSfwPskgNKGwK6lztjQ +lxDX10ADniRqDXDJ8klyPi1s7d8GS6efM9bmTi35Z/uxPQ/t1tdeQrACn8c/HXrG +SNs0/wXy2P4zxgw5cDVKHsMplHDbMmbHJFaUZa1EUyo5zjMUHiQX92H84vomjX4C +TBE5gc1qEewAhoqrd2/flF5vBPcSo6kXhPcIrCmKDYBh/DZvNvnEgAJlJVKKI4Zz +i1COmH08JnWeYlkvGthLyPQUJU0v2DDqsEouqLdnSc4sdmn9NKG9MWHBpGsxwtbC +cIJ3CEGPvV+T8thbulMy2UI5HTnq9Y8nZO2rj0n4ihbkt+b6k1WGmxpOohRIHlS4 +Vls+vxQPbiRnp+atvFhBjIDtRMGZqtB+pYZEY5/EJH/b2rQgp88= +=PxAu +-----END PGP SIGNATURE----- +``` From 10c21c495e2daa3d4cc13ffef2b91fe66a3276c1 Mon Sep 17 00:00:00 2001 From: Mohammed Bilal Shareef <bilalshareef.h@gmail.com> Date: Mon, 17 Feb 2025 23:10:46 +0530 Subject: [PATCH 0310/1385] docs: corrected example code of fetch API mocking in test runner. (#7492) Update mocking.md docs: corrected example code of fetch API mocking. Signed-off-by: Mohammed Bilal Shareef <bilalshareef.h@gmail.com> --- apps/site/pages/en/learn/test-runner/mocking.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/learn/test-runner/mocking.md b/apps/site/pages/en/learn/test-runner/mocking.md index fc26422db5fa4..61d58524abe84 100644 --- a/apps/site/pages/en/learn/test-runner/mocking.md +++ b/apps/site/pages/en/learn/test-runner/mocking.md @@ -208,7 +208,7 @@ describe('endpoints', { concurrency: true }, () => { }; agent - .get('example.com') + .get('https://example.com') .intercept({ path: endpoint, method: 'GET', @@ -230,7 +230,7 @@ describe('endpoints', { concurrency: true }, () => { }; agent - .get('example.com') + .get('https://example.com') .intercept({ path: endpoint, method: 'PUT', From 6fcbf5bb1f90179186ef59cda7b7175e213dd9e1 Mon Sep 17 00:00:00 2001 From: Ben Halverson <7907232+benhalverson@users.noreply.github.com> Date: Mon, 17 Feb 2025 18:27:16 -0800 Subject: [PATCH 0311/1385] docs: Added streams example to reading-files-with-nodejs (#7500) * docs: Added streams example to reading-files-with-nodejs * docs: moved import to top and updated authors * spelling --- .../reading-files-with-nodejs.md | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md index d30df9fdfd9ff..423a02563bd08 100644 --- a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md +++ b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md @@ -1,7 +1,7 @@ --- title: Reading files with Node.js layout: learn -authors: flaviocopes, MylesBorins, fhemberger, LaRuaNa, ahmadawais, clean99 +authors: flaviocopes, MylesBorins, fhemberger, LaRuaNa, ahmadawais, clean99, benhalverson --- # Reading files with Node.js @@ -88,3 +88,48 @@ All three of `fs.readFile()`, `fs.readFileSync()` and `fsPromises.readFile()` re This means that big files are going to have a major impact on your memory consumption and speed of execution of the program. In this case, a better option is to read the file content using streams. + +```mjs +import fs from 'fs'; +import path from 'path'; +import { pipeline } from 'node:stream/promises'; + +const fileUrl = 'https://www.gutenberg.org/files/2701/2701-0.txt'; +const outputFilePath = path.join(process.cwd(), 'moby.md'); + +async function downloadFile(url, outoutPath) { + const response = await fetch(url); + + if (!response.ok || !response.body) { + throw new Error(`Failed to fetch ${url}. Status: ${response.status}`); + } + + const fileStream = fs.createWriteStream(outoutPath); + console.log(`Downloading file from ${url} to ${outoutPath}`); + + await pipeline(response.body, fileStream); + console.log('File downloaded successfully'); +} + +async function readFile(filePath) { + const readStream = createReadStream(filePath, { encoding: 'utf8' }); + + try { + for await (const chunk of readStream) { + console.log('--- File chunk start ---'); + console.log(chunk); + console.log('--- File chunk end ---'); + } + console.log('Finished reading the file.'); + } catch (error) { + console.error(`Error reading file: ${error.message}`); + } +} + +try { + await downloadFile(fileUrl, outputFilePath); + await readFile(outputFilePath); +} catch (error) { + console.error(`Error: ${error.message}`); +} +``` From 0b2e7b6cc883c69980a84e6e04006680df9e3d51 Mon Sep 17 00:00:00 2001 From: Ben Halverson <7907232+benhalverson@users.noreply.github.com> Date: Tue, 18 Feb 2025 08:29:26 -0800 Subject: [PATCH 0312/1385] feat: Added volta to package manager download dropdown (#7497) * feat: Added volta to package manager download dropdown Fix #6832 * updated with volta logo * docs: updated volta docs instructions --- .../Icons/InstallationMethod/Volta.tsx | 34 +++++++++++++++++++ .../Icons/InstallationMethod/index.ts | 3 +- .../__design__/platform-logos.stories.tsx | 1 + apps/site/snippets/en/download/volta.bash | 11 ++++++ apps/site/types/release.ts | 1 + apps/site/util/downloadUtils.tsx | 9 +++++ packages/i18n/locales/en.json | 3 +- 7 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 apps/site/components/Icons/InstallationMethod/Volta.tsx create mode 100644 apps/site/snippets/en/download/volta.bash diff --git a/apps/site/components/Icons/InstallationMethod/Volta.tsx b/apps/site/components/Icons/InstallationMethod/Volta.tsx new file mode 100644 index 0000000000000..57880504f791e --- /dev/null +++ b/apps/site/components/Icons/InstallationMethod/Volta.tsx @@ -0,0 +1,34 @@ +import type { FC, SVGProps } from 'react'; + +const Volta: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + width="32" + height="32" + viewBox="0 0 32 32" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <circle + cx="16" + cy="16" + r="15" + fill="#6DB9B4" + stroke="#5EA9A2" + strokeWidth="2" + /> + <text + x="16" + y="21" + fontFamily="Arial" + fontSize="16" + fontWeight="bold" + fill="#FFFFFF" + textAnchor="middle" + > + V + </text> + </svg> +); + +export default Volta; diff --git a/apps/site/components/Icons/InstallationMethod/index.ts b/apps/site/components/Icons/InstallationMethod/index.ts index d7c980e0a219e..41c7897e2172f 100644 --- a/apps/site/components/Icons/InstallationMethod/index.ts +++ b/apps/site/components/Icons/InstallationMethod/index.ts @@ -4,5 +4,6 @@ import Docker from '@/components/Icons/InstallationMethod/Docker'; import FNM from '@/components/Icons/InstallationMethod/FNM'; import Homebrew from '@/components/Icons/InstallationMethod/Homebrew'; import NVM from '@/components/Icons/InstallationMethod/NVM'; +import Volta from '@/components/Icons/InstallationMethod/Volta'; -export default { Choco, Devbox, Docker, FNM, Homebrew, NVM }; +export default { Choco, Devbox, Docker, FNM, Homebrew, NVM, Volta }; diff --git a/apps/site/components/__design__/platform-logos.stories.tsx b/apps/site/components/__design__/platform-logos.stories.tsx index 1a6c77ebb282d..39d6b20c7534f 100644 --- a/apps/site/components/__design__/platform-logos.stories.tsx +++ b/apps/site/components/__design__/platform-logos.stories.tsx @@ -17,6 +17,7 @@ export const PlatformLogos: StoryObj = { <InstallMethodIcons.Homebrew width={64} height={64} /> <InstallMethodIcons.NVM width={64} height={64} /> <InstallMethodIcons.Devbox width={64} height={64} /> + <InstallMethodIcons.Volta width={64} height={64} /> </div> <div className="flex flex-col items-center gap-4"> <InstallMethodIcons.Choco width={64} height={64} /> diff --git a/apps/site/snippets/en/download/volta.bash b/apps/site/snippets/en/download/volta.bash new file mode 100644 index 0000000000000..b1978fe00a511 --- /dev/null +++ b/apps/site/snippets/en/download/volta.bash @@ -0,0 +1,11 @@ +# On most Unix systems including macOS, you can install with a single command: +${props.os === 'WIN' ? + 'winget install Volta.Volta' : + 'curl https://get.volta.sh | bash' +} + +# Download and install Node.js: +volta install node@${props.release.major} + +# Verify the Node.js version: +node -v # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index ec8333c75ea01..c5d050b05dfe5 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -5,6 +5,7 @@ import type { UserOS, UserPlatform } from '@/types/userOS'; export type InstallationMethod = | 'NVM' | 'FNM' + | 'VOLTA' | 'BREW' | 'DEVBOX' | 'DOCKER' diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index 09559ba7a761e..0c537fb0f69fb 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -34,6 +34,7 @@ export enum InstallationMethodLabel { CHOCO = 'Chocolatey', DEVBOX = 'Devbox', DOCKER = 'Docker', + VOLTA = 'Volta', } export enum PackageManagerLabel { @@ -209,6 +210,14 @@ export const INSTALL_METHODS: Array< url: 'https://docs.docker.com/get-started/get-docker/', info: 'layouts.download.codeBox.platformInfo.docker', }, + { + label: InstallationMethodLabel.VOLTA, + value: 'VOLTA', + compatibility: { os: ['WIN', 'MAC', 'LINUX'] }, + iconImage: <InstallMethodIcons.Volta width={16} height={16} />, + url: 'https://docs.volta.sh/guide/getting-started', + info: 'layouts.download.codeBox.platformInfo.volta', + }, ]; export const PACKAGE_MANAGERS: Array< diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index a0a3f2b8238a3..cf9259c761797 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -284,7 +284,8 @@ "brew": "Homebrew is a package manager for macOS and Linux.", "choco": "Chocolatey is a package manager for Windows.", "devbox": "Devbox creates isolated, reproducible development environments.", - "docker": "Docker is a containerization platform." + "docker": "Docker is a containerization platform.", + "volta": "\"Volta\" is a cross-platform Node.js version manager." } } }, From 2f2fd2572a6a56f56019b8cb66898cf35c12decf Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Thu, 20 Feb 2025 11:27:27 +0100 Subject: [PATCH 0313/1385] Blog: v18.20.7 release post (#7506) Refs: https://github.com/nodejs/node/pull/57122 --- apps/site/pages/en/blog/release/v18.20.7.md | 139 ++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v18.20.7.md diff --git a/apps/site/pages/en/blog/release/v18.20.7.md b/apps/site/pages/en/blog/release/v18.20.7.md new file mode 100644 index 0000000000000..674e125061425 --- /dev/null +++ b/apps/site/pages/en/blog/release/v18.20.7.md @@ -0,0 +1,139 @@ +--- +date: '2025-02-20T10:06:53.013Z' +category: release +title: Node v18.20.7 (LTS) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-02-20, Version 18.20.7 'Hydrogen' (LTS), @aduh95 + +### Notable Changes + +- \[[`ea5eb0e98b`](https://github.com/nodejs/node/commit/ea5eb0e98b)] - **crypto**: update root certificates to NSS 3.107 (Node.js GitHub Bot) [#56566](https://github.com/nodejs/node/pull/56566) + +### Commits + +- \[[`bb2977ca6c`](https://github.com/nodejs/node/commit/bb2977ca6c)] - **build**: use glob for dependencies of out/Makefile (Richard Lau) [#55789](https://github.com/nodejs/node/pull/55789) +- \[[`92896945b8`](https://github.com/nodejs/node/commit/92896945b8)] - **build**: support python 3.13 (Chengzhong Wu) [#53190](https://github.com/nodejs/node/pull/53190) +- \[[`ea5eb0e98b`](https://github.com/nodejs/node/commit/ea5eb0e98b)] - **crypto**: update root certificates to NSS 3.107 (Node.js GitHub Bot) [#56566](https://github.com/nodejs/node/pull/56566) +- \[[`d03a23577d`](https://github.com/nodejs/node/commit/d03a23577d)] - **deps**: V8: cherry-pick 26fd1dfa9cd6 (Shu-yu Guo) [#55873](https://github.com/nodejs/node/pull/55873) +- \[[`53bb21b093`](https://github.com/nodejs/node/commit/53bb21b093)] - **deps**: V8: backport ae5a4db8ad86 (Shu-yu Guo) [#55873](https://github.com/nodejs/node/pull/55873) +- \[[`5eb6dfe284`](https://github.com/nodejs/node/commit/5eb6dfe284)] - **deps**: update zlib to 1.3.0.1-motley-82a5fec (Node.js GitHub Bot) [#55980](https://github.com/nodejs/node/pull/55980) +- \[[`734515a0f7`](https://github.com/nodejs/node/commit/734515a0f7)] - **deps**: update zlib to 1.3.0.1-motley-7e2e4d7 (Node.js GitHub Bot) [#54432](https://github.com/nodejs/node/pull/54432) +- \[[`d64cc98324`](https://github.com/nodejs/node/commit/d64cc98324)] - **deps**: update simdutf to 5.6.4 (Node.js GitHub Bot) [#56255](https://github.com/nodejs/node/pull/56255) +- \[[`9eab21dd1d`](https://github.com/nodejs/node/commit/9eab21dd1d)] - **deps**: update simdutf to 5.6.3 (Node.js GitHub Bot) [#55973](https://github.com/nodejs/node/pull/55973) +- \[[`2e3367b46a`](https://github.com/nodejs/node/commit/2e3367b46a)] - **deps**: update simdutf to 5.6.2 (Node.js GitHub Bot) [#55889](https://github.com/nodejs/node/pull/55889) +- \[[`df74d66207`](https://github.com/nodejs/node/commit/df74d66207)] - **deps**: update simdutf to 5.6.1 (Node.js GitHub Bot) [#55850](https://github.com/nodejs/node/pull/55850) +- \[[`ade37ee0b3`](https://github.com/nodejs/node/commit/ade37ee0b3)] - **deps**: update acorn to 8.14.0 (Node.js GitHub Bot) [#55699](https://github.com/nodejs/node/pull/55699) +- \[[`a3c367adbd`](https://github.com/nodejs/node/commit/a3c367adbd)] - **deps**: update corepack to 0.31.0 (Node.js GitHub Bot) [#56795](https://github.com/nodejs/node/pull/56795) +- \[[`2cff6a8428`](https://github.com/nodejs/node/commit/2cff6a8428)] - **deps**: update corepack to 0.30.0 (Node.js GitHub Bot) [#55977](https://github.com/nodejs/node/pull/55977) +- \[[`8b8c9a2cf5`](https://github.com/nodejs/node/commit/8b8c9a2cf5)] - **doc**: update macOS and Xcode versions for releases (Michaël Zasso) [#56337](https://github.com/nodejs/node/pull/56337) +- \[[`706af28113`](https://github.com/nodejs/node/commit/706af28113)] - **doc**: add "Skip to content" button (Antoine du Hamel) [#56750](https://github.com/nodejs/node/pull/56750) +- \[[`634a6b3a14`](https://github.com/nodejs/node/commit/634a6b3a14)] - **doc**: improve accessibility of expandable lists (Antoine du Hamel) [#56749](https://github.com/nodejs/node/pull/56749) +- \[[`f0b60c5bf9`](https://github.com/nodejs/node/commit/f0b60c5bf9)] - **doc**: fix arrow vertical alignment in HTML version (Akash Yeole) [#52193](https://github.com/nodejs/node/pull/52193) +- \[[`91cce27ebb`](https://github.com/nodejs/node/commit/91cce27ebb)] - **doc**: remove flicker on page load on dark theme (Dima Demakov) [#50942](https://github.com/nodejs/node/pull/50942) +- \[[`522fbb00a8`](https://github.com/nodejs/node/commit/522fbb00a8)] - **doc**: make theme consistent across api and other docs (Dima Demakov) [#50877](https://github.com/nodejs/node/pull/50877) +- \[[`1486465520`](https://github.com/nodejs/node/commit/1486465520)] - **doc**: save user preference for JS flavor (Vidar Eldøy) [#49526](https://github.com/nodejs/node/pull/49526) +- \[[`d74cff7e59`](https://github.com/nodejs/node/commit/d74cff7e59)] - **doc**: rename possibly confusing variable and CSS class (Antoine du Hamel) [#49536](https://github.com/nodejs/node/pull/49536) +- \[[`4829d976fe`](https://github.com/nodejs/node/commit/4829d976fe)] - **doc**: add main ARIA landmark to API docs (Rich Trott) [#49882](https://github.com/nodejs/node/pull/49882) +- \[[`6c4ce1f1d4`](https://github.com/nodejs/node/commit/6c4ce1f1d4)] - **doc**: add navigation ARIA landmark to doc ToC (Rich Trott) [#49882](https://github.com/nodejs/node/pull/49882) +- \[[`33548f8c1f`](https://github.com/nodejs/node/commit/33548f8c1f)] - **doc**: add history entries for JSON modules stabilization (Antoine du Hamel) [#55855](https://github.com/nodejs/node/pull/55855) +- \[[`e12bdf6141`](https://github.com/nodejs/node/commit/e12bdf6141)] - **meta**: bump `actions/upload-artifact` from 4.4.3 to 4.6.0 (dependabot\[bot]) [#56861](https://github.com/nodejs/node/pull/56861) +- \[[`6f44ef388b`](https://github.com/nodejs/node/commit/6f44ef388b)] - **meta**: bump actions/upload-artifact from 4.4.0 to 4.4.3 (dependabot\[bot]) [#55685](https://github.com/nodejs/node/pull/55685) +- \[[`ae39211117`](https://github.com/nodejs/node/commit/ae39211117)] - **meta**: bump actions/upload-artifact from 4.3.4 to 4.4.0 (dependabot\[bot]) [#54703](https://github.com/nodejs/node/pull/54703) +- \[[`4cf80b37c7`](https://github.com/nodejs/node/commit/4cf80b37c7)] - **meta**: bump `actions/upload-artifact` from 4.3.3 to 4.3.4 (dependabot\[bot]) [#54166](https://github.com/nodejs/node/pull/54166) +- \[[`4d402b79cb`](https://github.com/nodejs/node/commit/4d402b79cb)] - **meta**: bump `actions/download-artifact` from 4.1.7 to 4.1.8 (dependabot\[bot]) [#54167](https://github.com/nodejs/node/pull/54167) +- \[[`1c01f93497`](https://github.com/nodejs/node/commit/1c01f93497)] - **meta**: bump actions/upload-artifact from 4.3.1 to 4.3.3 (dependabot\[bot]) [#52785](https://github.com/nodejs/node/pull/52785) +- \[[`6558a516ec`](https://github.com/nodejs/node/commit/6558a516ec)] - **meta**: bump actions/download-artifact from 4.1.4 to 4.1.7 (dependabot\[bot]) [#52784](https://github.com/nodejs/node/pull/52784) +- \[[`dd70860ec8`](https://github.com/nodejs/node/commit/dd70860ec8)] - **meta**: bump actions/download-artifact from 4.1.3 to 4.1.4 (dependabot\[bot]) [#52314](https://github.com/nodejs/node/pull/52314) +- \[[`4a24d92a45`](https://github.com/nodejs/node/commit/4a24d92a45)] - **meta**: bump actions/upload-artifact from 4.3.0 to 4.3.1 (dependabot\[bot]) [#51941](https://github.com/nodejs/node/pull/51941) +- \[[`655b9071b9`](https://github.com/nodejs/node/commit/655b9071b9)] - **meta**: bump actions/download-artifact from 4.1.1 to 4.1.3 (dependabot\[bot]) [#51938](https://github.com/nodejs/node/pull/51938) +- \[[`0e6ad795aa`](https://github.com/nodejs/node/commit/0e6ad795aa)] - **meta**: bump actions/download-artifact from 4.1.0 to 4.1.1 (dependabot\[bot]) [#51644](https://github.com/nodejs/node/pull/51644) +- \[[`61babc5037`](https://github.com/nodejs/node/commit/61babc5037)] - **meta**: bump actions/upload-artifact from 4.0.0 to 4.3.0 (dependabot\[bot]) [#51643](https://github.com/nodejs/node/pull/51643) +- \[[`8b16d80029`](https://github.com/nodejs/node/commit/8b16d80029)] - **meta**: update artifact actions to v4 (Michaël Zasso) [#51219](https://github.com/nodejs/node/pull/51219) +- \[[`d47e8cb86d`](https://github.com/nodejs/node/commit/d47e8cb86d)] - **test**: do not use deprecated import assertions (Antoine du Hamel) [#55873](https://github.com/nodejs/node/pull/55873) +- \[[`06c523d693`](https://github.com/nodejs/node/commit/06c523d693)] - **test**: mark `test-inspector-stop-profile-after-done` as flaky (Antoine du Hamel) [#57001](https://github.com/nodejs/node/pull/57001) +- \[[`dafea86962`](https://github.com/nodejs/node/commit/dafea86962)] - **test**: mark `test-perf-hooks` as flaky on macOS (Antoine du Hamel) [#57001](https://github.com/nodejs/node/pull/57001) +- \[[`8e53f1f43d`](https://github.com/nodejs/node/commit/8e53f1f43d)] - **test**: mark test-inspector-multisession-ws as flaky (Antoine du Hamel) [#57001](https://github.com/nodejs/node/pull/57001) +- \[[`350eb50bbe`](https://github.com/nodejs/node/commit/350eb50bbe)] - **test**: mark `test-performance-function` as flaky (Antoine du Hamel) [#57001](https://github.com/nodejs/node/pull/57001) +- \[[`a1f428a343`](https://github.com/nodejs/node/commit/a1f428a343)] - **test**: skip `test-perf-hooks` on SmartOS (Antoine du Hamel) [#57001](https://github.com/nodejs/node/pull/57001) +- \[[`199f52fcc0`](https://github.com/nodejs/node/commit/199f52fcc0)] - **test**: make test-crypto-hash compatible with OpenSSL > 3.4.0 (Jelle van der Waa) [#56160](https://github.com/nodejs/node/pull/56160) +- \[[`b08ce67d48`](https://github.com/nodejs/node/commit/b08ce67d48)] - **test**: compare paths on Windows without considering case (Early Riser) [#53993](https://github.com/nodejs/node/pull/53993) +- \[[`6e84d211a1`](https://github.com/nodejs/node/commit/6e84d211a1)] - **test**: deflake test-perf-hooks.js (Joyee Cheung) [#49892](https://github.com/nodejs/node/pull/49892) +- \[[`a7f565fc7f`](https://github.com/nodejs/node/commit/a7f565fc7f)] - **tools**: fix failing `lint-sh` workflow (Antoine du Hamel) [#56995](https://github.com/nodejs/node/pull/56995) + +Windows 32-bit Installer: https://nodejs.org/dist/v18.20.7/node-v18.20.7-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v18.20.7/node-v18.20.7-x64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v18.20.7/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v18.20.7/win-x64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v18.20.7/node-v18.20.7.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v18.20.7/node-v18.20.7-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v18.20.7/node-v18.20.7-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v18.20.7/node-v18.20.7-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v18.20.7/node-v18.20.7-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v18.20.7/node-v18.20.7-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v18.20.7/node-v18.20.7-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v18.20.7/node-v18.20.7-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v18.20.7/node-v18.20.7-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v18.20.7/node-v18.20.7.tar.gz \ +Other release files: https://nodejs.org/dist/v18.20.7/ \ +Documentation: https://nodejs.org/docs/v18.20.7/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +3e3aab6f6827063250c55cbecffe81624ec36c0ec1e6fe247f73697f78b52b86 node-v18.20.7-aix-ppc64.tar.gz +cdbe696f68b9162872295d4ec88a0700a3827261ae729f5eaf0606c69d6ab37e node-v18.20.7-darwin-arm64.tar.gz +cccc8103e6cef10bbfa88342aff2dccd6a4c5d0cad955437d439785cc831d862 node-v18.20.7-darwin-arm64.tar.xz +c42eee8d9557720052d05856651488074f7736583b3312a223760490b9f5ce0e node-v18.20.7-darwin-x64.tar.gz +cb57712a9f6927475de89b5f0a8152be17a4232a6e5269cb6e3173acb77ba7da node-v18.20.7-darwin-x64.tar.xz +fbde30ff6557a5ca444743f0552e311477637e268c58e7fb9aafa739c9e7b90f node-v18.20.7-headers.tar.gz +4bbb70f668ed528b8685ab3ade5c960cd17399f3bcdced50c07083be04ac1e54 node-v18.20.7-headers.tar.xz +fc1f0e0c1022c5486da4726c58dc678c076ac2d7ad30b1b47b9071f043adce1e node-v18.20.7-linux-arm64.tar.gz +c788ad58ded0426a7fca9f3a7e005f57c14a348ebdb3a2977e19ef7b0c143439 node-v18.20.7-linux-arm64.tar.xz +1e8d3685417be34f8714044015cada78d82747566c15f3824ef28e9c22e3e68a node-v18.20.7-linux-armv7l.tar.gz +eb70fcb8a5d5dd67da8be59ac2ee68b8e3e72222af1b1dc601d6407fbdb8c164 node-v18.20.7-linux-armv7l.tar.xz +4520710588d6109f818c19568d17ffbdbf89d60c96e0f9547a8771730e135901 node-v18.20.7-linux-ppc64le.tar.gz +d73cbdf68ecda53267570bb715e278d333dade6cd3e5bff6da7914d1d8b4cd0a node-v18.20.7-linux-ppc64le.tar.xz +fecbe173c8ce1ee1d2c6475546a8d30c4426861505ef69254bd048e6d91f23fb node-v18.20.7-linux-s390x.tar.gz +408611bfd04952c0b17b3fb77eff5f7bbd0972e67caaa7d274bb0da7a6ff6ecc node-v18.20.7-linux-s390x.tar.xz +ca593cc143875d33b257ab45ae629a02485333e8096221c44ef62c99678aa7fc node-v18.20.7-linux-x64.tar.gz +deaf9695966087815a09c1c8e7fb0cfeb5b5b4471836e5993431230a845becad node-v18.20.7-linux-x64.tar.xz +eef929e650b576fc3adc5ba8d45cd9bfa7fb5ddae6894c94c1802beb2d919128 node-v18.20.7.pkg +f2f2f1ac616d8e253ed69cf0b44de7d4843c40d8a614f64c776ee59ff0047031 node-v18.20.7.tar.gz +9a89659fad80c1b6da33d29f43f5865483ccb1952ddad434ee22f8193607277f node-v18.20.7.tar.xz +230e1aa6cc9b158b286f16723db99967c46e7933d21dba73060ecd410f2de4b7 node-v18.20.7-win-x64.7z +6c65355f921a76168610fffbc06005a16194cca9110ec306c4f036a2eaaeb651 node-v18.20.7-win-x64.zip +70e2ed920e7fe37c06c2ceadd163b1d32f470e58350ab3df0356c5c72d3ac927 node-v18.20.7-win-x86.7z +72617fe071ecfb16d79b0934612e6f36900796f0d0b422cdbb66332a84cf63b8 node-v18.20.7-win-x86.zip +8a1ae839f896a75cfb742a5b82df414e27616db4c1b47dd83a60f329dbf36594 node-v18.20.7-x64.msi +3f82198c2feebdcffbe3f5bb824510a09679485f028da626b28a9165f3b3eb05 node-v18.20.7-x86.msi +6e12702a8fa938a6449a9c0baf21b2927442a6fa3d0ff716a9c8b3c3972ae252 win-x64/node.exe +64d93225aaece04e3cd45177d6dea2b22df49e127281fefa3ade43ac46a36cc6 win-x64/node.lib +824fdfd74c415e796d0a581f4e8c8d500cfae4c7f3e65f771cad53a3a81d230e win-x64/node_pdb.7z +a432e34d19052123b33e38bfe98baa677820812910e2e4d870b9eaa62af3d9c2 win-x64/node_pdb.zip +dfedd92e7f1eee7561188d4af5be3f65ec6d0656e0c34b9460e9114ff83f649c win-x86/node.exe +917ebac03add6c7577675886673b6c2a2c59781ca0e0031cddd5a2f13eb6ded1 win-x86/node.lib +1ec393dbfaa31dee631dbb119a9b0501f1963e0b028251676faffcf6b7c7e9dc win-x86/node_pdb.7z +592af02fef6f591fae40e49b25f749c038ef328adaaf8fde113425e7553cf368 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAme2/g0ACgkQIdkA/9sj +N1bVYg/9Eew5KIJGHs5pLoAjpjCAEfhDs2cGHfggwhcv07jnapWXZkjvLVrExmqU +w03xk9bg6i81U3LbsKrQpb0rr+w6Ye4pmM/VvcVdwukLRl4i50IQFkyzvqbWS59n +wPd81m+/8YKGBRFuWaSAYBZOV7wm8Lh7v0MsyO45CNwdOemU60eV8o2Jt5OBHOaK +wsLSwSvlwBAKwMbsR7p+OjCokTrYMqGhp+tYSqoNWFmKe6++W2uxPE6JAH3v6szI +wXE4UPHtSkKrrCFB9fDKwfYwz0FfaMmTNQa2jEKeW32I52K3ysIFC/tcroPPqhYI +mZx3NdrsA35EeYjV5kKdcURXUB5GA1HVGmYi66tN4QgO5kspeXHwTbk6I7zywa5I +wzUX8Sz+v41OOPwF/0/LWlp5KiW3LZE7zajVJnnLNtx59MIY6opnI0wxDhhaC79k +zE+1xNN4s4VR5N4pxzutx7ygQl8vsS6E6m3uqmGFr3VHqkIT66V0JZbC6BQ0KfA/ +AEs2ItsVx/SVOddyvuRP6odyKDucpuf8GvGSuu1KycXDDzqiB14bc3vmR67pqmSz +VqT7fXHZFzx0ohdmpYaJP0n6YmGARyRlrZRzjAjHpMmAQbZ6muljy0hqdT8z1v6Q +2tt7onlYShP6l/MtcpJXADBjTFLeYXaKeyYzMuO7HDiYtItyL9M= +=3VIt +-----END PGP SIGNATURE----- +``` From dc69661c420e13bdeba4260fbbaab5db396cc850 Mon Sep 17 00:00:00 2001 From: Ryuichi Okumura <okuryu@okuryu.com> Date: Sun, 23 Feb 2025 11:31:27 +0900 Subject: [PATCH 0314/1385] feat: display the reading time in a formatted for the locale (#7495) * feat: display the reading time in a formatted for the locale The display of the reading time for each page is currently based on the assumption that the page is in English. This change makes the Intl API is used to display the reading time in a format appropriate for the locale of the translated language. * maximumFractionDigits --- apps/site/components/withMetaBar.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index b06fd40704a47..fab6acf616060 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -20,6 +20,11 @@ const WithMetaBar: FC = () => { const lastUpdated = frontmatter.date ? formatter.dateTime(new Date(frontmatter.date), DEFAULT_DATE_FORMAT) : undefined; + const readingTimeText = formatter.number(readingTime.minutes, { + style: 'unit', + unit: 'minute', + maximumFractionDigits: 0, + }); const usernames = frontmatter.authors?.split(',').map(author => author.trim()) ?? []; @@ -39,7 +44,7 @@ const WithMetaBar: FC = () => { <MetaBar items={{ 'components.metabar.lastUpdated': lastUpdated, - 'components.metabar.readingTime': readingTime.text, + 'components.metabar.readingTime': readingTimeText, ...(usernames.length && { [`components.metabar.${usernames.length > 1 ? 'authors' : 'author'}`]: ( From 7a73ed080d7895d205867209121e9b0352deafca Mon Sep 17 00:00:00 2001 From: Hichem Fantar <fantar.hichem@gmail.com> Date: Mon, 24 Feb 2025 03:40:39 +0100 Subject: [PATCH 0315/1385] Add thin scrollbar styling to CodeBox and Tabs components (#7489) * Add thin scrollbar styling to CodeBox and Tabs components * Add thin scrollbar styling to CodeBox and Tabs components --- apps/site/components/Common/CodeBox/index.module.css | 1 + apps/site/components/Common/Tabs/index.module.css | 1 + apps/site/tailwind.config.ts | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/apps/site/components/Common/CodeBox/index.module.css b/apps/site/components/Common/CodeBox/index.module.css index 929618d231ff2..424d721f17e29 100644 --- a/apps/site/components/Common/CodeBox/index.module.css +++ b/apps/site/components/Common/CodeBox/index.module.css @@ -12,6 +12,7 @@ & > code { @apply font-ibm-plex-mono font-regular + scrollbar-thin grid overflow-x-auto bg-transparent diff --git a/apps/site/components/Common/Tabs/index.module.css b/apps/site/components/Common/Tabs/index.module.css index ca7f665064769..1703d143e6b3a 100644 --- a/apps/site/components/Common/Tabs/index.module.css +++ b/apps/site/components/Common/Tabs/index.module.css @@ -3,6 +3,7 @@ .tabsList { @apply font-open-sans + scrollbar-thin flex gap-2 overflow-x-auto; diff --git a/apps/site/tailwind.config.ts b/apps/site/tailwind.config.ts index 6138046a3960f..49e90dc0ac42a 100644 --- a/apps/site/tailwind.config.ts +++ b/apps/site/tailwind.config.ts @@ -1,4 +1,5 @@ import type { Config } from 'tailwindcss'; +import plugin from 'tailwindcss/plugin'; export default { content: [ @@ -174,5 +175,12 @@ export default { plugins: [ require('@savvywombat/tailwindcss-grid-areas'), require('@tailwindcss/container-queries'), + plugin(function ({ addUtilities }) { + addUtilities({ + '.scrollbar-thin': { + 'scrollbar-width': 'thin', + }, + }); + }), ], } satisfies Config; From 8f8f02832f7c5db7407cae2f4a547b2f2fd584dd Mon Sep 17 00:00:00 2001 From: Ben Halverson <7907232+benhalverson@users.noreply.github.com> Date: Sun, 23 Feb 2025 20:51:05 -0800 Subject: [PATCH 0316/1385] feat: added new learn section with fetch examples (#7499) * feat: added new learn section with fetch examples #7492 * updated code example and added to sidebar * docs: updated example code * docs: Updated example to use mistral and typo fix * docs: spelling --- apps/site/navigation.json | 4 + .../pages/en/learn/getting-started/fetch.md | 181 ++++++++++++++++++ packages/i18n/locales/en.json | 1 + 3 files changed, 186 insertions(+) create mode 100644 apps/site/pages/en/learn/getting-started/fetch.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index b249b40153447..4485cda2dc237 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -185,6 +185,10 @@ "link": "/learn/getting-started/profiling", "label": "components.navigation.learn.gettingStarted.links.profiling" }, + "fetch": { + "link": "/learn/getting-started/fetch", + "label": "components.navigation.learn.gettingStarted.links.fetch" + }, "securityBestPractices": { "link": "/learn/getting-started/security-best-practices", "label": "components.navigation.learn.gettingStarted.links.securityBestPractices" diff --git a/apps/site/pages/en/learn/getting-started/fetch.md b/apps/site/pages/en/learn/getting-started/fetch.md new file mode 100644 index 0000000000000..1f8e6de2a03da --- /dev/null +++ b/apps/site/pages/en/learn/getting-started/fetch.md @@ -0,0 +1,181 @@ +--- +title: Node.js Fetch +layout: learn +authors: benhalverson, LankyMoose +--- + +# Using the Fetch API with Undici in Node.js + +## Introduction + +[Undici](https://undici.nodejs.org) is an HTTP client library that powers the fetch API in Node.js. It was written from scratch and does not rely on the built-in HTTP client in Node.js. It includes a number of features that make it a good choice for high-performance applications. + +## Basic GET Usage + +```js +async function main() { + // Like the browser fetch API, the default method is GET + const response = await fetch('https://jsonplaceholder.typicode.com/posts'); + const data = await response.json(); + console.log(data); + // returns something like: + // { + // userId: 1, + // id: 1, + // title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', + // body: 'quia et suscipit\n' + + // 'suscipit recusandae consequuntur expedita et cum\n' + + // 'reprehenderit molestiae ut ut quas totam\n' + + // 'nostrum rerum est autem sunt rem eveniet architecto' + // } +} + +main().catch(console.error); +``` + +## Basic POST Usage + +```js +// Data sent from the client to the server +const body = { + title: 'foo', + body: 'bar', + userId: 1, +}; + +async function main() { + const response = await fetch('https://jsonplaceholder.typicode.com/posts', { + method: 'POST', + headers: { + 'User-Agent': 'undici-stream-example', + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + }); + const data = await response.json(); + console.log(data); + // returns something like: + // { title: 'foo', body: 'bar', userId: 1, id: 101 } +} + +main().catch(console.error); +``` + +## Customizing the Fetch API with Undici + +Undici allows you to customize the Fetch API by providing options to the `fetch` function. For example, you can set custom headers, set the request method, and set the request body. Here is an example of how you can customize the Fetch API with Undici: + +The [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) function takes two arguments: the URL to fetch and an options object. The options object is the [Request](https://undici.nodejs.org/#/docs/api/Dispatcher?id=parameter-requestoptions) object that you can use to customize the request. The function returns a [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises) that resolves to a [Response](https://undici.nodejs.org/#/docs/api/Dispatcher?id=parameter-responsedata) object. One difference between the Fetch API in the browser and the Fetch API in Node.js is that the Node.js version does not support + +In the following example, we are sending a POST request to the Ollama API with a JSON payload. Ollama is a cli tool that allows you to run LLM's (Large Language Models) on your local machine. You can download it [here](https://ollama.com/download) + +```bash +ollama run mistral +``` + +This will download the `mistral` model and run it on your local machine. + +With a pool, you can reuse connections to the same server, which can improve performance. Here is an example of how you can use a pool with Undici: + +```js +import { Pool } from 'undici'; + +const ollamaPool = new Pool('http://localhost:11434', { + connections: 10, +}); + +/** + * Stream the completion of a prompt using the Ollama API. + * @param {string} prompt - The prompt to complete. + * @link https://github.com/ollama/ollama/blob/main/docs/api.md + **/ +async function streamOllamaCompletion(prompt) { + const { statusCode, body } = await ollamaPool.request({ + path: '/api/generate', + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ prompt, model: 'mistral' }), + }); + + // You can read about HTTP status codes here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + // 200 means the request was successful. + if (statusCode !== 200) { + throw new Error(`Ollama request failed with status ${statusCode}`); + } + + let partial = ''; + + const decoder = new TextDecoder(); + for await (const chunk of body) { + partial += decoder.decode(chunk, { stream: true }); + console.log(partial); + } + + console.log('Streaming complete.'); +} + +try { + await streamOllamaCompletion('What is recursion?'); +} catch (error) { + console.error('Error calling Ollama:', error); +} finally { + console.log('Closing Ollama pool.'); + ollamaPool.close(); +} +``` + +## Streaming Responses with Undici + +[Streams](https://nodejs.org/docs/v22.14.0/api/stream.html#stream) is a feature in Node.js that allows you to read and write chucks of data. + +```js +import { stream } from 'undici'; +import { Writable } from 'stream'; + +async function fetchGitHubRepos() { + const url = 'https://api.github.com/users/nodejs/repos'; + + const { statusCode } = await stream( + url, + { + method: 'GET', + headers: { + 'User-Agent': 'undici-stream-example', + Accept: 'application/json', + }, + }, + () => { + let buffer = ''; + + return new Writable({ + write(chunk, encoding, callback) { + buffer += chunk.toString(); + + try { + const json = JSON.parse(buffer); + console.log( + 'Repository Names:', + json.map(repo => repo.name) + ); + buffer = ''; + } catch (error) { + console.error('Error parsing JSON:', error); + } + + callback(); + }, + final(callback) { + console.log('Stream processing completed.'); + callback(); + }, + }); + } + ); + + console.log(`Response status: ${statusCode}`); +} + +fetchGitHubRepos().catch(console.error); +``` diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index cf9259c761797..acbc2fa00f75f 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -42,6 +42,7 @@ "nodejsWithWebassembly": "Node.js with WebAssembly", "debugging": "Debugging Node.js", "profiling": "Profiling Node.js Applications", + "fetch": "Fetching data with Node.js", "securityBestPractices": "Security Best Practices" } }, From ebc0e82e53ec4a5918fd290e6e922cb0a7a74023 Mon Sep 17 00:00:00 2001 From: Ganesh288 <115623665+GaneshS288@users.noreply.github.com> Date: Tue, 25 Feb 2025 14:57:14 +0530 Subject: [PATCH 0317/1385] Docs: change createReadStream to fs.createReadStream (#7511) --- .../en/learn/manipulating-files/reading-files-with-nodejs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md index 423a02563bd08..450d756d37a97 100644 --- a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md +++ b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md @@ -112,7 +112,7 @@ async function downloadFile(url, outoutPath) { } async function readFile(filePath) { - const readStream = createReadStream(filePath, { encoding: 'utf8' }); + const readStream = fs.createReadStream(filePath, { encoding: 'utf8' }); try { for await (const chunk of readStream) { From 69d004a55a2887b3ac0576a864f12e967d59d2ea Mon Sep 17 00:00:00 2001 From: MichaelAblerCode <161170520+MichaelAblerCode@users.noreply.github.com> Date: Wed, 26 Feb 2025 09:49:27 +0100 Subject: [PATCH 0318/1385] docs: correctly reflect serial execution order instead of limited parallel. (#7335) Update asynchronous-flow-control.md -Fix: Corrected description to reflect serial execution order instead of limited parallel. Rearranged order to logically sequence "limited in series" after "in series" for better clarity. Signed-off-by: MichaelAblerCode <161170520+MichaelAblerCode@users.noreply.github.com> --- .../asynchronous-flow-control.md | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/asynchronous-flow-control.md b/apps/site/pages/en/learn/asynchronous-work/asynchronous-flow-control.md index 8b83359e19271..3fdaeebe8a2d7 100644 --- a/apps/site/pages/en/learn/asynchronous-work/asynchronous-flow-control.md +++ b/apps/site/pages/en/learn/asynchronous-work/asynchronous-flow-control.md @@ -173,7 +173,48 @@ function serialProcedure(operation) { serialProcedure(operations.shift()); ``` -2. **Full parallel:** when ordering is not an issue, such as emailing a list of 1,000,000 email recipients. +2. **Limited in series:** functions will be executed in a strict sequential order, but with a limit on the number of executions. Useful when you need to process a large list but with a cap on the number of items successfully processed. + +```js +let successCount = 0; + +function final() { + console.log(`dispatched ${successCount} emails`); + console.log('finished'); +} + +function dispatch(recipient, callback) { + // `sendEmail` is a hypothetical SMTP client + sendMail( + { + subject: 'Dinner tonight', + message: 'We have lots of cabbage on the plate. You coming?', + smtp: recipient.email, + }, + callback + ); +} + +function sendOneMillionEmailsOnly() { + getListOfTenMillionGreatEmails(function (err, bigList) { + if (err) throw err; + + function serial(recipient) { + if (!recipient || successCount >= 1000000) return final(); + dispatch(recipient, function (_err) { + if (!_err) successCount += 1; + serial(bigList.pop()); + }); + } + + serial(bigList.pop()); + }); +} + +sendOneMillionEmailsOnly(); +``` + +3. **Full parallel:** when ordering is not an issue, such as emailing a list of 1,000,000 email recipients. ```js let count = 0; @@ -227,45 +268,4 @@ recipients.forEach(function (recipient) { }); ``` -3. **Limited parallel:** parallel with limit, such as successfully emailing 1,000,000 recipients from a list of 10 million users. - -```js -let successCount = 0; - -function final() { - console.log(`dispatched ${successCount} emails`); - console.log('finished'); -} - -function dispatch(recipient, callback) { - // `sendEmail` is a hypothetical SMTP client - sendMail( - { - subject: 'Dinner tonight', - message: 'We have lots of cabbage on the plate. You coming?', - smtp: recipient.email, - }, - callback - ); -} - -function sendOneMillionEmailsOnly() { - getListOfTenMillionGreatEmails(function (err, bigList) { - if (err) throw err; - - function serial(recipient) { - if (!recipient || successCount >= 1000000) return final(); - dispatch(recipient, function (_err) { - if (!_err) successCount += 1; - serial(bigList.pop()); - }); - } - - serial(bigList.pop()); - }); -} - -sendOneMillionEmailsOnly(); -``` - Each has its own use cases, benefits, and issues you can experiment and read about in more detail. Most importantly, remember to modularize your operations and use callbacks! If you feel any doubt, treat everything as if it were middleware! From 267eb73479311688792a9e8ba0b510d2d1b23ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= <targos@protonmail.com> Date: Wed, 26 Feb 2025 17:48:20 +0100 Subject: [PATCH 0319/1385] Blog: v23.9.0 release post (#7512) Refs: https://github.com/nodejs/node/pull/57207 --- apps/site/pages/en/blog/release/v23.9.0.md | 183 +++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.9.0.md diff --git a/apps/site/pages/en/blog/release/v23.9.0.md b/apps/site/pages/en/blog/release/v23.9.0.md new file mode 100644 index 0000000000000..17b1edc75af3f --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.9.0.md @@ -0,0 +1,183 @@ +--- +date: '2025-02-26T16:41:09.271Z' +category: release +title: Node v23.9.0 (Current) +layout: blog-post +author: Michaël Zasso +--- + +## 2025-02-26, Version 23.9.0 (Current), @targos + +### Notable Changes + +- \[[`927d985aa0`](https://github.com/nodejs/node/commit/927d985aa0)] - **(SEMVER-MINOR)** **dns**: add TLSA record query and parsing (Rithvik Vibhu) [#52983](https://github.com/nodejs/node/pull/52983) +- \[[`0236fbf75a`](https://github.com/nodejs/node/commit/0236fbf75a)] - **(SEMVER-MINOR)** **process**: add threadCpuUsage (Paolo Insogna) [#56467](https://github.com/nodejs/node/pull/56467) + +### Commits + +- \[[`f4a82fddb1`](https://github.com/nodejs/node/commit/f4a82fddb1)] - **benchmark**: add a warmup on bench-openSync (Elves Vieira) [#57051](https://github.com/nodejs/node/pull/57051) +- \[[`b384baa073`](https://github.com/nodejs/node/commit/b384baa073)] - **build**: print 'Formatting Markdown...' for long task markdown formatting (1ilsang) [#57108](https://github.com/nodejs/node/pull/57108) +- \[[`fec2d50308`](https://github.com/nodejs/node/commit/fec2d50308)] - **build**: add skip_apidoc_files and include QUIC (RafaelGSS) [#56941](https://github.com/nodejs/node/pull/56941) +- \[[`5af35d1850`](https://github.com/nodejs/node/commit/5af35d1850)] - **build**: fix GN build failure (Cheng) [#57013](https://github.com/nodejs/node/pull/57013) +- \[[`35f89aa66f`](https://github.com/nodejs/node/commit/35f89aa66f)] - **build**: fix GN build of uv (Cheng) [#56955](https://github.com/nodejs/node/pull/56955) +- \[[`e26d4841d1`](https://github.com/nodejs/node/commit/e26d4841d1)] - **cli**: allow --cpu-prof\* in NODE_OPTIONS (Carlos Espa) [#57018](https://github.com/nodejs/node/pull/57018) +- \[[`b50fc42a99`](https://github.com/nodejs/node/commit/b50fc42a99)] - **crypto**: support --use-system-ca on non-Windows and non-macOS (Joyee Cheung) [#57009](https://github.com/nodejs/node/pull/57009) +- \[[`dfdaa92a37`](https://github.com/nodejs/node/commit/dfdaa92a37)] - **crypto**: fix missing OPENSSL_NO_ENGINE guard (Shelley Vohr) [#57012](https://github.com/nodejs/node/pull/57012) +- \[[`18ea88bcbe`](https://github.com/nodejs/node/commit/18ea88bcbe)] - **crypto**: cleanup root certificates and skip PEM deserialization (Joyee Cheung) [#56999](https://github.com/nodejs/node/pull/56999) +- \[[`8076284f9e`](https://github.com/nodejs/node/commit/8076284f9e)] - **deps**: update cjs-module-lexer to 2.1.0 (Node.js GitHub Bot) [#57180](https://github.com/nodejs/node/pull/57180) +- \[[`8644cf3e5a`](https://github.com/nodejs/node/commit/8644cf3e5a)] - **deps**: update ngtcp2 to 1.11.0 (Node.js GitHub Bot) [#57179](https://github.com/nodejs/node/pull/57179) +- \[[`2aceca15d6`](https://github.com/nodejs/node/commit/2aceca15d6)] - **deps**: update sqlite to 3.49.1 (Node.js GitHub Bot) [#57178](https://github.com/nodejs/node/pull/57178) +- \[[`8421021427`](https://github.com/nodejs/node/commit/8421021427)] - **deps**: update ada to 3.1.0 (Node.js GitHub Bot) [#57083](https://github.com/nodejs/node/pull/57083) +- \[[`21d795a5f0`](https://github.com/nodejs/node/commit/21d795a5f0)] - **(SEMVER-MINOR)** **dns**: add TLSA record query and parsing (Rithvik Vibhu) [#52983](https://github.com/nodejs/node/pull/52983) +- \[[`455bf5a0a8`](https://github.com/nodejs/node/commit/455bf5a0a8)] - **doc**: update options to filehandle.appendFile() (Hasegawa-Yukihiro) [#56972](https://github.com/nodejs/node/pull/56972) +- \[[`f35bd869ee`](https://github.com/nodejs/node/commit/f35bd869ee)] - **doc**: add additional caveat for fs.watch (Michael Dawson) [#57150](https://github.com/nodejs/node/pull/57150) +- \[[`4413ce7ed3`](https://github.com/nodejs/node/commit/4413ce7ed3)] - **doc**: fix typo in Windows building instructions (Tim Jacomb) [#57158](https://github.com/nodejs/node/pull/57158) +- \[[`66614cfcf3`](https://github.com/nodejs/node/commit/66614cfcf3)] - **doc**: fix web.libera.chat link in pull-requests.md (Samuel Bronson) [#57076](https://github.com/nodejs/node/pull/57076) +- \[[`587112cb08`](https://github.com/nodejs/node/commit/587112cb08)] - **doc**: remove buffered flag from performance hooks examples (Pavel Romanov) [#52607](https://github.com/nodejs/node/pull/52607) +- \[[`fdc8aeb8a0`](https://github.com/nodejs/node/commit/fdc8aeb8a0)] - **doc**: fix 'introduced_in' version in typescript module (1ilsang) [#57109](https://github.com/nodejs/node/pull/57109) +- \[[`b6960499c8`](https://github.com/nodejs/node/commit/b6960499c8)] - **doc**: fix link and history of `SourceMap` sections (Antoine du Hamel) [#57098](https://github.com/nodejs/node/pull/57098) +- \[[`0de128ca97`](https://github.com/nodejs/node/commit/0de128ca97)] - **doc**: add `module namespace object` links (Dario Piotrowicz) [#57093](https://github.com/nodejs/node/pull/57093) +- \[[`5a74568320`](https://github.com/nodejs/node/commit/5a74568320)] - **doc**: disambiguate pseudo-code statement (Dario Piotrowicz) [#57092](https://github.com/nodejs/node/pull/57092) +- \[[`46df14ddcb`](https://github.com/nodejs/node/commit/46df14ddcb)] - **doc**: update clang-cl on Windows building guide (Joyee Cheung) [#57087](https://github.com/nodejs/node/pull/57087) +- \[[`4b02fdc72f`](https://github.com/nodejs/node/commit/4b02fdc72f)] - **doc**: update Xcode version used for arm64 and pkg (Michaël Zasso) [#57104](https://github.com/nodejs/node/pull/57104) +- \[[`78d4e52a52`](https://github.com/nodejs/node/commit/78d4e52a52)] - **doc**: fix wrong articles used to address modules (Dario Piotrowicz) [#57090](https://github.com/nodejs/node/pull/57090) +- \[[`ed5671f1bc`](https://github.com/nodejs/node/commit/ed5671f1bc)] - **doc**: update `module.builtinModules` sentence (Dario Piotrowicz) [#57089](https://github.com/nodejs/node/pull/57089) +- \[[`9de45cbac9`](https://github.com/nodejs/node/commit/9de45cbac9)] - **doc**: `modules.md`: fix `distance` definition (Alexander “weej” Jones) [#57046](https://github.com/nodejs/node/pull/57046) +- \[[`a7e5ef9e01`](https://github.com/nodejs/node/commit/a7e5ef9e01)] - **doc**: fix wrong verb form (Dario Piotrowicz) [#57091](https://github.com/nodejs/node/pull/57091) +- \[[`c02494f5fe`](https://github.com/nodejs/node/commit/c02494f5fe)] - **doc**: fix transpiler loader hooks documentation (Joyee Cheung) [#57037](https://github.com/nodejs/node/pull/57037) +- \[[`5b2dfadd40`](https://github.com/nodejs/node/commit/5b2dfadd40)] - **doc**: add a note about `require('../common')` in testing documentation (Aditi) [#56953](https://github.com/nodejs/node/pull/56953) +- \[[`50ba04e214`](https://github.com/nodejs/node/commit/50ba04e214)] - **doc**: recommend writing tests in new files and including comments (Joyee Cheung) [#57028](https://github.com/nodejs/node/pull/57028) +- \[[`6951133e1a`](https://github.com/nodejs/node/commit/6951133e1a)] - **doc**: improve documentation on argument validation (Aditi) [#56954](https://github.com/nodejs/node/pull/56954) +- \[[`44dd8a5cc2`](https://github.com/nodejs/node/commit/44dd8a5cc2)] - **doc**: buffer: fix typo on `Buffer.copyBytesFrom(` `offset` option (tpoisseau) [#57015](https://github.com/nodejs/node/pull/57015) +- \[[`c011271a70`](https://github.com/nodejs/node/commit/c011271a70)] - **doc**: update cleanup to trust on vuln db automation (Rafael Gonzaga) [#57004](https://github.com/nodejs/node/pull/57004) +- \[[`a6b7bce3a0`](https://github.com/nodejs/node/commit/a6b7bce3a0)] - **doc**: move stability index after history section for consistency (Antoine du Hamel) [#56997](https://github.com/nodejs/node/pull/56997) +- \[[`3bc6d626b4`](https://github.com/nodejs/node/commit/3bc6d626b4)] - **doc**: add `signal` to `filehandle.writeFile()` options (Yukihiro Hasegawa) [#56804](https://github.com/nodejs/node/pull/56804) +- \[[`2990cc8616`](https://github.com/nodejs/node/commit/2990cc8616)] - **doc**: run license-builder (github-actions\[bot]) [#56985](https://github.com/nodejs/node/pull/56985) +- \[[`40f3a516bf`](https://github.com/nodejs/node/commit/40f3a516bf)] - **fs**: handle UV_ENOTDIR in `fs.statSync` with `throwIfNoEntry` provided (Juan José Arboleda) [#56996](https://github.com/nodejs/node/pull/56996) +- \[[`e10ef275e8`](https://github.com/nodejs/node/commit/e10ef275e8)] - **inspector**: convert event params to protocol without json (Chengzhong Wu) [#57027](https://github.com/nodejs/node/pull/57027) +- \[[`d6234b4652`](https://github.com/nodejs/node/commit/d6234b4652)] - **inspector**: skip promise hook in the inspector async hook (Joyee Cheung) [#57148](https://github.com/nodejs/node/pull/57148) +- \[[`aa817853cd`](https://github.com/nodejs/node/commit/aa817853cd)] - **lib**: fixup more incorrect ERR_INVALID_ARG_VALUE uses (James M Snell) [#57177](https://github.com/nodejs/node/pull/57177) +- \[[`e08d7d4e53`](https://github.com/nodejs/node/commit/e08d7d4e53)] - **lib**: fixup incorrect argument order in assertEncoding (James M Snell) [#57177](https://github.com/nodejs/node/pull/57177) +- \[[`f77069b4e0`](https://github.com/nodejs/node/commit/f77069b4e0)] - **meta**: bump `actions/setup-python` from 5.3.0 to 5.4.0 (dependabot\[bot]) [#56867](https://github.com/nodejs/node/pull/56867) +- \[[`35cdd9b9fe`](https://github.com/nodejs/node/commit/35cdd9b9fe)] - **meta**: bump `peter-evans/create-pull-request` from 7.0.5 to 7.0.6 (dependabot\[bot]) [#56866](https://github.com/nodejs/node/pull/56866) +- \[[`3d61604f2a`](https://github.com/nodejs/node/commit/3d61604f2a)] - **meta**: bump `mozilla-actions/sccache-action` from 0.0.6 to 0.0.7 (dependabot\[bot]) [#56865](https://github.com/nodejs/node/pull/56865) +- \[[`0dd0108fc5`](https://github.com/nodejs/node/commit/0dd0108fc5)] - **meta**: bump `codecov/codecov-action` from 5.0.7 to 5.3.1 (dependabot\[bot]) [#56864](https://github.com/nodejs/node/pull/56864) +- \[[`58d70369e3`](https://github.com/nodejs/node/commit/58d70369e3)] - **meta**: bump `step-security/harden-runner` from 2.10.2 to 2.10.4 (dependabot\[bot]) [#56863](https://github.com/nodejs/node/pull/56863) +- \[[`dfd42db739`](https://github.com/nodejs/node/commit/dfd42db739)] - **meta**: bump `actions/cache` from 4.1.2 to 4.2.0 (dependabot\[bot]) [#56862](https://github.com/nodejs/node/pull/56862) +- \[[`7f5f02ba2b`](https://github.com/nodejs/node/commit/7f5f02ba2b)] - **meta**: bump `actions/stale` from 9.0.0 to 9.1.0 (dependabot\[bot]) [#56860](https://github.com/nodejs/node/pull/56860) +- \[[`85ac02f8d3`](https://github.com/nodejs/node/commit/85ac02f8d3)] - **meta**: bump `github/codeql-action` from 3.27.5 to 3.28.8 (dependabot\[bot]) [#56859](https://github.com/nodejs/node/pull/56859) +- \[[`d62299b021`](https://github.com/nodejs/node/commit/d62299b021)] - **meta**: add CODEOWNERS for SQLite (Colin Ihrig) [#57147](https://github.com/nodejs/node/pull/57147) +- \[[`2ec4ff17a6`](https://github.com/nodejs/node/commit/2ec4ff17a6)] - **meta**: update last name for jkrems (Jan Martin) [#57006](https://github.com/nodejs/node/pull/57006) +- \[[`ad3c572027`](https://github.com/nodejs/node/commit/ad3c572027)] - **module**: improve error message from asynchronicity in require(esm) (Joyee Cheung) [#57126](https://github.com/nodejs/node/pull/57126) +- \[[`cc1cafd562`](https://github.com/nodejs/node/commit/cc1cafd562)] - **module**: allow omitting context in synchronous next hooks (Joyee Cheung) [#57056](https://github.com/nodejs/node/pull/57056) +- \[[`c6ddfa52fb`](https://github.com/nodejs/node/commit/c6ddfa52fb)] - **(SEMVER-MINOR)** **process**: add threadCpuUsage (Paolo Insogna) [#56467](https://github.com/nodejs/node/pull/56467) +- \[[`ac35106625`](https://github.com/nodejs/node/commit/ac35106625)] - **sea**: suppress builtin warning with disableExperimentalSEAWarning option (koooge) [#57086](https://github.com/nodejs/node/pull/57086) +- \[[`ef314dc773`](https://github.com/nodejs/node/commit/ef314dc773)] - **src**: fix crash when lazy getter is invoked in a vm context (Chengzhong Wu) [#57168](https://github.com/nodejs/node/pull/57168) +- \[[`90a4de02b6`](https://github.com/nodejs/node/commit/90a4de02b6)] - **src**: do not format single string argument for THROW_ERR\_\* (Joyee Cheung) [#57126](https://github.com/nodejs/node/pull/57126) +- \[[`e0a91f631b`](https://github.com/nodejs/node/commit/e0a91f631b)] - **src**: gate all quic behind disabled-by-default compile flag (James M Snell) [#57142](https://github.com/nodejs/node/pull/57142) +- \[[`7dd326e3a7`](https://github.com/nodejs/node/commit/7dd326e3a7)] - **src**: move instead of copy shared pointer in node_blob (Michaël Zasso) [#57120](https://github.com/nodejs/node/pull/57120) +- \[[`e3127b89a2`](https://github.com/nodejs/node/commit/e3127b89a2)] - **src**: replace NewFromUtf8 with OneByteString where appropriate (James M Snell) [#57096](https://github.com/nodejs/node/pull/57096) +- \[[`56f9fe7514`](https://github.com/nodejs/node/commit/56f9fe7514)] - **src**: port `defineLazyProperties` to native code (Antoine du Hamel) [#57081](https://github.com/nodejs/node/pull/57081) +- \[[`90875ba0ca`](https://github.com/nodejs/node/commit/90875ba0ca)] - **src**: improve error handling in node_blob (James M Snell) [#57078](https://github.com/nodejs/node/pull/57078) +- \[[`5414eb48b5`](https://github.com/nodejs/node/commit/5414eb48b5)] - **src**: improve error handling in multiple files (James M Snell) [#56962](https://github.com/nodejs/node/pull/56962) +- \[[`286bb84188`](https://github.com/nodejs/node/commit/286bb84188)] - **src**: fix accessing empty string (Cheng) [#57014](https://github.com/nodejs/node/pull/57014) +- \[[`fa26f83e5b`](https://github.com/nodejs/node/commit/fa26f83e5b)] - **src**: lock the isolate properly in IsolateData destructor (Joyee Cheung) [#57031](https://github.com/nodejs/node/pull/57031) +- \[[`7e2dac9fcc`](https://github.com/nodejs/node/commit/7e2dac9fcc)] - **src**: add self-assigment memcpy checks (Burkov Egor) [#56986](https://github.com/nodejs/node/pull/56986) +- \[[`d8e70dcaa6`](https://github.com/nodejs/node/commit/d8e70dcaa6)] - **src**: improve node::Dotenv trimming (Dario Piotrowicz) [#56983](https://github.com/nodejs/node/pull/56983) +- \[[`41f444fa78`](https://github.com/nodejs/node/commit/41f444fa78)] - **src**: improve error handling in string_bytes/decoder (James M Snell) [#56978](https://github.com/nodejs/node/pull/56978) +- \[[`d0ee8c0a20`](https://github.com/nodejs/node/commit/d0ee8c0a20)] - **src**: improve error handling in process_wrap (James M Snell) [#56977](https://github.com/nodejs/node/pull/56977) +- \[[`1a244177a3`](https://github.com/nodejs/node/commit/1a244177a3)] - **test**: add doAppendAndCancel test (Hasegawa-Yukihiro) [#56972](https://github.com/nodejs/node/pull/56972) +- \[[`51dff8b1ae`](https://github.com/nodejs/node/commit/51dff8b1ae)] - **test**: fix test-without-async-context-frame.mjs in debug mode (Joyee Cheung) [#57034](https://github.com/nodejs/node/pull/57034) +- \[[`7c7e9f4d84`](https://github.com/nodejs/node/commit/7c7e9f4d84)] - **test**: make eval snapshot comparison more flexible (Shelley Vohr) [#57020](https://github.com/nodejs/node/pull/57020) +- \[[`315244e59e`](https://github.com/nodejs/node/commit/315244e59e)] - **test**: simplify test-http2-client-promisify-connect-error (Luigi Pinca) [#57144](https://github.com/nodejs/node/pull/57144) +- \[[`ccf496cff9`](https://github.com/nodejs/node/commit/ccf496cff9)] - **test**: improve error output of test-http2-client-promisify-connect-error (Antoine du Hamel) [#57135](https://github.com/nodejs/node/pull/57135) +- \[[`a588066518`](https://github.com/nodejs/node/commit/a588066518)] - **test**: add case for unrecognised fields within pjson "exports" (Jacob Smith) [#57026](https://github.com/nodejs/node/pull/57026) +- \[[`b369ad6e45`](https://github.com/nodejs/node/commit/b369ad6e45)] - **test**: remove unnecessary assert requiring from tests (Dario Piotrowicz) [#57008](https://github.com/nodejs/node/pull/57008) +- \[[`9b98ac6a81`](https://github.com/nodejs/node/commit/9b98ac6a81)] - **test**: update WPT for urlpattern to ef6d83d789 (Node.js GitHub Bot) [#56984](https://github.com/nodejs/node/pull/56984) +- \[[`0a82d27d28`](https://github.com/nodejs/node/commit/0a82d27d28)] - **test**: reduce flakiness on test-net-write-fully-async-buffer (Yagiz Nizipli) [#56971](https://github.com/nodejs/node/pull/56971) +- \[[`ab150d7781`](https://github.com/nodejs/node/commit/ab150d7781)] - **test**: remove flakiness on macOS test (Yagiz Nizipli) [#56971](https://github.com/nodejs/node/pull/56971) +- \[[`ccb8c12712`](https://github.com/nodejs/node/commit/ccb8c12712)] - **test,crypto**: make tests work for BoringSSL (Shelley Vohr) [#57021](https://github.com/nodejs/node/pull/57021) +- \[[`116c1fe84c`](https://github.com/nodejs/node/commit/116c1fe84c)] - **test_runner**: refactor testPlan counter increse (Pietro Marchini) [#56765](https://github.com/nodejs/node/pull/56765) +- \[[`2929fc6449`](https://github.com/nodejs/node/commit/2929fc6449)] - **test_runner**: allow special characters in snapshot keys (Carlos Espa) [#57017](https://github.com/nodejs/node/pull/57017) +- \[[`a025d7ba07`](https://github.com/nodejs/node/commit/a025d7ba07)] - **tools**: run Linux tests on GitHub arm64 runners as well (Dennis Ameling) [#57162](https://github.com/nodejs/node/pull/57162) +- \[[`73a8514305`](https://github.com/nodejs/node/commit/73a8514305)] - **tools**: consolidate 'introduced_in' check for docs (1ilsang) [#57109](https://github.com/nodejs/node/pull/57109) +- \[[`6cdee545f6`](https://github.com/nodejs/node/commit/6cdee545f6)] - **tools**: do not run major-release workflow on forks (Rich Trott) [#57064](https://github.com/nodejs/node/pull/57064) +- \[[`1efd74b1b0`](https://github.com/nodejs/node/commit/1efd74b1b0)] - **tools**: fix release URL computation in update-root-certs.mjs (Joyee Cheung) [#56843](https://github.com/nodejs/node/pull/56843) +- \[[`a9112df8d3`](https://github.com/nodejs/node/commit/a9112df8d3)] - **tools**: add support for `import source` syntax in linter (Antoine du Hamel) [#56992](https://github.com/nodejs/node/pull/56992) +- \[[`c6d6be2c3b`](https://github.com/nodejs/node/commit/c6d6be2c3b)] - **typings**: fix `ImportModuleDynamicallyCallback` return type (Chengzhong Wu) [#57160](https://github.com/nodejs/node/pull/57160) +- \[[`d922153cbf`](https://github.com/nodejs/node/commit/d922153cbf)] - **url**: improve urlpattern regexp performance (Yagiz Nizipli) [#57136](https://github.com/nodejs/node/pull/57136) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.9.0/node-v23.9.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.9.0/node-v23.9.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.9.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.9.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.9.0/node-v23.9.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.9.0/node-v23.9.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.9.0/node-v23.9.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.9.0/node-v23.9.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.9.0/node-v23.9.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.9.0/node-v23.9.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.9.0/node-v23.9.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.9.0/node-v23.9.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.9.0/node-v23.9.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.9.0/node-v23.9.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.9.0/ \ +Documentation: https://nodejs.org/docs/v23.9.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +5837acfdfa601ba46163a01ef6ad53a2f6c6283cc9fc336db1145ec466220f68 node-v23.9.0-aix-ppc64.tar.gz +fbd24ed1172a21d94abf08d73686823675698a5e84a024b1ea321e038b4781aa node-v23.9.0-arm64.msi +02fea0822268b245066e895a20a0c530f750a710517ac9faafdc0f1cd4434994 node-v23.9.0-darwin-arm64.tar.gz +03fb167727da087d386e8985e785713a8ce942203c7ca5f08aaf00f11f7fef8b node-v23.9.0-darwin-arm64.tar.xz +535d8ed9d5e6a59f46df4e518e2940d5701e17ae795600815a702e8233552240 node-v23.9.0-darwin-x64.tar.gz +9a5bff19ecc690bde41b7fd1c050e745da0dd534feadd849e9137e0dd6d952ce node-v23.9.0-darwin-x64.tar.xz +0b4cf80e82f873b9ab54786099c78fe576d865086c39da12ded22f7dedb5aba5 node-v23.9.0-headers.tar.gz +af2b11300e9634a5187699781a90f6b0179e6252397bd079a20b3da6aed9fb82 node-v23.9.0-headers.tar.xz +798301b15d2acdc9e62c50688d95480a7787051fa83000e210b32b9adfdcfa4c node-v23.9.0-linux-arm64.tar.gz +dc0d93c5e4ae41c8fe75b64399c4d1fe3c15e2bfa3f55f92f8697bb16397585b node-v23.9.0-linux-arm64.tar.xz +99a07e0655ab7fd72242b68b960a2cfcbe2d3d96b7852605a5a8cb098f9851b9 node-v23.9.0-linux-armv7l.tar.gz +449f4a348bb436a59edc5ec3b12d84eaa09d02c8b80271186a3eebc861fb655c node-v23.9.0-linux-armv7l.tar.xz +437c9285740c2a628bd7cf68229c00528619076ef30c59cd557459b2cc61b63b node-v23.9.0-linux-ppc64le.tar.gz +0d4f3d6e2646a62921b8a6a046fad4fcca1d0ef3e0979aa3080deaec3c5fe1a5 node-v23.9.0-linux-ppc64le.tar.xz +dc10041dcb37c5296a747bc828e47875b9680e33a98bd2313995ca2a840d9068 node-v23.9.0-linux-s390x.tar.gz +648e40aad3b1ae5c964328d438232737e29b7cd119979c3b318e86bba0929c72 node-v23.9.0-linux-s390x.tar.xz +bb1a81335c86578e70ee282eb9f93c5aa2e75f7cb6b99d9315a52899d42884f9 node-v23.9.0-linux-x64.tar.gz +0b4ece2aa678e6891b9abf6118d5393867ab07b3e31c8d8c4c34e97840fa8749 node-v23.9.0-linux-x64.tar.xz +9172705a683b6d0acc5bc671af3df16fd75f76d91bfa5391846aa8ed2713edbe node-v23.9.0.pkg +164ec8fe82aac21f74efc0d5890d9f6c0e0ba22ca285d400c0266913fb4ff8a0 node-v23.9.0.tar.gz +c6b420bedbb049a6538c33af28abaf89011ccc879f0f0f81791675263c238f97 node-v23.9.0.tar.xz +4e68465ccb2463ab56417920ae6c5a0fa1ee8dfeb1880cd6e8fff197278a0b43 node-v23.9.0-win-arm64.7z +f25e12f66e65e563f24b3418e879221bba11b67ab4fdcc02f31134196e178342 node-v23.9.0-win-arm64.zip +458e75cbb1ce88ed70a16e264fb423d6522be49d39bced976d8ec4dffc059ad8 node-v23.9.0-win-x64.7z +2ebf80037486002b00fe5c6accd3c253b74c9045dfc2a20844a33be954e7ce74 node-v23.9.0-win-x64.zip +51b5421a5570297fb603fa1869b4d40fd041eef3a7dadb47238ae9bd47f28153 node-v23.9.0-x64.msi +49f04514e9403ad9eeca6f5904c97fceafb2bd00e8482a17f833cfe1b70188c8 win-arm64/node.exe +b04fc2c4f04273feaae3a2bc372d507fa631d7d6fd5f11265219d5b10d083a3e win-arm64/node.lib +9307ed98fe8f9de006d482b93232b3125f38c6db02193ff642c6413b4a58323c win-arm64/node_pdb.7z +fae79e6c8a2b515d8a490cffa5d660958721105071412ec69a2a4869accd5acc win-arm64/node_pdb.zip +6ac035ad7f00184705e89f8288e0a5faaafd6dd546a6bccc4763b3d64c9a6ed3 win-x64/node.exe +7005ad268c2a3b55e741957609696fd707982d8d7727325c44e2cbf23f00f565 win-x64/node.lib +5a39045b1c3172873bf88686d44a0270feea6a4237bb4e5c1118634a2530780c win-x64/node_pdb.7z +a0f56e42c42083b0b7e1b6d4c7fa1a932ac21f79111286b217151d88e8cc4d4f win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEj8yhP+8dDC6RAI4Jdw96mlrhVgAFAme/Q04ACgkQdw96mlrh +VgAARw/+MGfo5KbfnMIQR2ATY36/CGudr15gL5BCa1za1P6TJygZQN2nr3iZW7t4 +o7XcAe+e0eCLBN2G5v/v9LtgWZ6TuD5oHkAvT5QfSAxGrh8mingmvpXfQJw43PiL +gSrd9AI6LitCoTNiM36ILLyRHHtCylZoQQEZwdY1tzHqlB6sQVO9M4/YvMoCnD/2 +3awt7+fGa0kmfuVcMJsE3RBVxvMWuMIyZO9Z+uq8OgQtYYpnI4+WEwAQFeXMJVRY +bpSx7bNTplomPkGEVvkDn1Cy/eUx6NrrWZTwKIVin8UM0WjuaxJXA37jYMm3HS5h +QzHdWJ8Qc+5lbxyLbOJWL95ORzfvDvwr20z5oy31A2SfKqlGJ5hanRrmCdp197IP +yWEukGnNd3inIaxF6nUrz1BRu84jRqT1iAZd/4ppAjibiRYYZuLMoMeNYCg9uI0R +E61N8HHzP+eDSrE9jAxh6zjRmvcL64ZY8vRjjOfqVHUjs5QYhuf/JqAOe0//fO+4 +X6HP5WRaqDti+gBVdwpwldRdgztprufVBPLfoKvap1QpxrIdUm6oTmuXKtlGA3AU +QCIoaSJm/P7kWBVERWSRL1C0fWDVHBe8Oiw5ruKbEgHi+1fZFdhfraf51lvG4Xfc +VJ1eGcq9flN+PrDD4lr8wqeY8+gPiV1jHCDHx9lkE2+oayv0/mk= +=oNrV +-----END PGP SIGNATURE----- +``` From 2c6dd629fe551e8238ccfb81f67e43c1b62729bf Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sat, 1 Mar 2025 10:50:00 -0800 Subject: [PATCH 0320/1385] meta: upgraded react 19 next 15.2 (#7531) * meta: upgraded react 19 next 15.2 * chore: just a tiny bit of a type improvement * chore: simplify link props * chore: fix package order * chore: fix tests * chore: remove act warns --- apps/site/.stylelintrc.mjs | 2 + .../AvatarGroup/__tests__/index.test.mjs | 4 +- apps/site/components/Common/CodeBox/index.tsx | 11 +- .../Common/Tabs/__tests__/index.test.mjs | 50 +- apps/site/components/Common/Tooltip/index.tsx | 4 +- apps/site/components/Link.tsx | 12 +- apps/site/components/MDX/CodeTabs/index.tsx | 2 +- apps/site/eslint.config.js | 6 +- apps/site/jest.setup.mjs | 2 + apps/site/package.json | 82 +- .../__tests__/matterProvider.test.mjs | 28 +- .../__tests__/themeProvider.test.mjs | 2 +- package-lock.json | 4607 +++++++++-------- package.json | 23 +- 14 files changed, 2561 insertions(+), 2274 deletions(-) diff --git a/apps/site/.stylelintrc.mjs b/apps/site/.stylelintrc.mjs index 3fea6d8b268c8..17fc884a3c41b 100644 --- a/apps/site/.stylelintrc.mjs +++ b/apps/site/.stylelintrc.mjs @@ -41,5 +41,7 @@ export default { 'media-feature-range-notation': 'prefix', // Adopts the import notation from `postcss-import` 'import-notation': 'string', + // Allow the `@apply` at rule as its part of Tailwind + 'at-rule-no-deprecated': [true, { ignoreAtRules: ['apply'] }], }, }; diff --git a/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs b/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs index 3ba01e856f083..ad3986cc3631e 100644 --- a/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs +++ b/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs @@ -1,9 +1,9 @@ import { render, fireEvent } from '@testing-library/react'; -import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; - import AvatarGroup from '../index'; +import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; + const names = [ 'ovflowd', 'bmuenzenmeyer', diff --git a/apps/site/components/Common/CodeBox/index.tsx b/apps/site/components/Common/CodeBox/index.tsx index 0b6d97df48ca1..e0f640f119958 100644 --- a/apps/site/components/Common/CodeBox/index.tsx +++ b/apps/site/components/Common/CodeBox/index.tsx @@ -1,12 +1,12 @@ 'use client'; import { - DocumentDuplicateIcon, CodeBracketIcon, + DocumentDuplicateIcon, } from '@heroicons/react/24/outline'; import classNames from 'classnames'; import { useTranslations } from 'next-intl'; -import type { FC, PropsWithChildren, ReactNode } from 'react'; +import type { FC, PropsWithChildren, ReactElement } from 'react'; import { Fragment, isValidElement, useRef } from 'react'; import Button from '@/components/Common/Button'; @@ -16,7 +16,10 @@ import styles from './index.module.css'; // Transforms a code element with plain text content into a more structured // format for rendering with line numbers -const transformCode = (code: ReactNode, language: string): ReactNode => { +const transformCode = <T extends ReactElement<PropsWithChildren>>( + code: T, + language: string +): ReactElement<HTMLElement> | T => { if (!isValidElement(code)) { // Early return when the `CodeBox` child is not a valid element since the // type is a ReactNode, and can assume any value @@ -106,7 +109,7 @@ const CodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ tabIndex={0} dir="ltr" > - {transformCode(children, language)} + {transformCode(children as ReactElement<PropsWithChildren>, language)} </pre> {language && ( diff --git a/apps/site/components/Common/Tabs/__tests__/index.test.mjs b/apps/site/components/Common/Tabs/__tests__/index.test.mjs index 5cd33f3c6c6f3..df4cfc4677afa 100644 --- a/apps/site/components/Common/Tabs/__tests__/index.test.mjs +++ b/apps/site/components/Common/Tabs/__tests__/index.test.mjs @@ -1,34 +1,32 @@ import * as TabsPrimitive from '@radix-ui/react-tabs'; -import { act, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import Link from '../../../Link'; import Tabs from '../index'; +const Sut = ({ addons }) => { + const tabs = [ + { key: 'package', label: 'Package Manager' }, + { key: 'prebuilt', label: 'Prebuilt Installer' }, + { key: 'source', label: 'Source Code' }, + ]; + + return ( + <Tabs tabs={tabs} defaultValue="package" addons={addons}> + <TabsPrimitive.Content value="package"> + Package Manager + </TabsPrimitive.Content> + <TabsPrimitive.Content value="prebuilt"> + Prebuilt Installer + </TabsPrimitive.Content> + <TabsPrimitive.Content value="source">Source Code</TabsPrimitive.Content> + </Tabs> + ); +}; + describe('Tabs', () => { - const Sut = ({ addons }) => { - const tabs = [ - { key: 'package', label: 'Package Manager' }, - { key: 'prebuilt', label: 'Prebuilt Installer' }, - { key: 'source', label: 'Source Code' }, - ]; - - return ( - <Tabs tabs={tabs} defaultValue="package" addons={addons}> - <TabsPrimitive.Content value="package"> - Package Manager - </TabsPrimitive.Content> - <TabsPrimitive.Content value="prebuilt"> - Prebuilt Installer - </TabsPrimitive.Content> - <TabsPrimitive.Content value="source"> - Source Code - </TabsPrimitive.Content> - </Tabs> - ); - }; - - it('should render the correct number of tabs', () => { + it('should render the correct number of tabs', async () => { render(<Sut />); expect(screen.getAllByRole('tab')).toHaveLength(3); @@ -39,9 +37,7 @@ describe('Tabs', () => { expect(screen.getByRole('tabpanel')).toHaveTextContent('Package Manager'); - await act(async () => { - await userEvent.click(screen.getByRole('tab', { name: 'Source Code' })); - }); + await userEvent.click(screen.getByRole('tab', { name: 'Source Code' })); expect(screen.getByRole('tabpanel')).toHaveTextContent('Source Code'); }); diff --git a/apps/site/components/Common/Tooltip/index.tsx b/apps/site/components/Common/Tooltip/index.tsx index ae1094b63f0b8..38327dfee1fc5 100644 --- a/apps/site/components/Common/Tooltip/index.tsx +++ b/apps/site/components/Common/Tooltip/index.tsx @@ -1,6 +1,6 @@ import * as TooltipPrimitive from '@radix-ui/react-tooltip'; import classNames from 'classnames'; -import type { ComponentProps, FC, PropsWithChildren, ReactNode } from 'react'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; import styles from './index.module.css'; @@ -8,7 +8,7 @@ type TooltipProps = { asChild?: boolean; content: ReactNode; kind?: 'default' | 'warning' | 'error'; - side?: ComponentProps<typeof TooltipPrimitive.Content>['side']; + side?: TooltipPrimitive.TooltipContentProps['side']; container?: HTMLElement | null; }; diff --git a/apps/site/components/Link.tsx b/apps/site/components/Link.tsx index 8253b32fad5b2..ae680b9971fac 100644 --- a/apps/site/components/Link.tsx +++ b/apps/site/components/Link.tsx @@ -1,12 +1,12 @@ -import type { FC, ComponentProps } from 'react'; +import type { FC, HTMLProps } from 'react'; import { Link as LocalizedLink } from '@/navigation.mjs'; -type LinkProps = Omit<ComponentProps<typeof LocalizedLink>, 'href'> & { - href?: string; -}; - -const Link: FC<LinkProps> = ({ children, href, ...props }) => { +const Link: FC<HTMLProps<HTMLAnchorElement>> = ({ + children, + href, + ...props +}) => { if (!href || href.toString().startsWith('http')) { return ( <a href={href} {...props}> diff --git a/apps/site/components/MDX/CodeTabs/index.tsx b/apps/site/components/MDX/CodeTabs/index.tsx index 9181715377a01..45adc0f5cf751 100644 --- a/apps/site/components/MDX/CodeTabs/index.tsx +++ b/apps/site/components/MDX/CodeTabs/index.tsx @@ -7,7 +7,7 @@ type MDXCodeTabsProps = Pick< ComponentProps<typeof CodeTabs>, 'linkText' | 'linkUrl' > & { - children: Array<ReactElement>; + children: Array<ReactElement<unknown>>; languages: string; displayNames?: string; defaultTab?: string; diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index cdfbf664b6ec0..8c682bd3def2c 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -37,11 +37,7 @@ export default tseslint.config( '@next/next/no-duplicate-head': 'off', 'import-x/no-duplicates': 'off', }, - settings: { - react: { - version: 'detect', - }, - }, + settings: { react: { version: 'detect' } }, }, { files: ['**/*.{md,mdx}'], diff --git a/apps/site/jest.setup.mjs b/apps/site/jest.setup.mjs index 7b0828bfa80fb..c9c4273c460e5 100644 --- a/apps/site/jest.setup.mjs +++ b/apps/site/jest.setup.mjs @@ -1 +1,3 @@ +globalThis.IS_REACT_ACT_ENVIRONMENT = true; + import '@testing-library/jest-dom'; diff --git a/apps/site/package.json b/apps/site/package.json index d692b547c90a7..caa3a0d316248 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -28,90 +28,88 @@ "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", - "@orama/react-components": "^0.3.2", + "@orama/react-components": "^0.5.1", "@oramacloud/client": "^2.1.4", - "@radix-ui/react-accessible-icon": "^1.1.0", - "@radix-ui/react-dropdown-menu": "^2.1.2", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-scroll-area": "^1.2.1", - "@radix-ui/react-select": "^2.1.2", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.1", - "@radix-ui/react-toast": "^1.2.5", + "@radix-ui/react-accessible-icon": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-scroll-area": "^1.2.3", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-tabs": "^1.1.3", + "@radix-ui/react-toast": "^1.2.6", "@radix-ui/react-tooltip": "^1.1.8", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", "@vcarl/remark-headings": "~0.1.0", - "@vercel/analytics": "~1.4.1", + "@vercel/analytics": "~1.5.0", "@vercel/otel": "~1.10.1", - "@vercel/speed-insights": "~1.1.0", + "@vercel/speed-insights": "~1.2.0", "autoprefixer": "~10.4.20", "classnames": "~2.5.1", "cross-env": "7.0.3", "dedent": "1.5.3", "feed": "~4.2.2", "github-slugger": "~2.0.0", - "glob": "~11.0.0", + "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.1.6", - "next-intl": "~3.26.3", - "next-themes": "~0.4.3", - "postcss": "~8.4.49", - "postcss-calc": "~10.0.2", + "next": "15.2.0", + "next-intl": "~3.26.5", + "next-themes": "~0.4.4", + "postcss": "~8.5.3", + "postcss-calc": "~10.1.1", "postcss-import": "~16.1.0", "postcss-loader": "~8.1.1", "postcss-mixins": "~11.0.3", "postcss-simple-vars": "~7.0.1", - "react": "^18.3.1", - "react-dom": "^18.3.1", + "react": "19.0.0", + "react-dom": "19.0.0", "rehype-autolink-headings": "~7.1.0", "rehype-slug": "~6.0.0", - "remark-gfm": "~4.0.0", + "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.1", "semver": "~7.7.1", - "shiki": "~2.2.0", - "sval": "^0.5.2", - "tailwindcss": "~3.4.15", + "shiki": "~3.1.0", + "sval": "^0.6.1", + "tailwindcss": "~3.4.17", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.0" }, "devDependencies": { - "@eslint/compat": "~1.2.3", - "@next/eslint-plugin-next": "15.1.6", - "@storybook/addon-controls": "^8.5.2", - "@storybook/addon-interactions": "^8.5.2", + "@eslint/compat": "~1.2.7", + "@next/eslint-plugin-next": "15.2.0", + "@storybook/addon-controls": "^8.6.3", + "@storybook/addon-interactions": "^8.6.3", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.5.2", - "@storybook/addon-viewport": "^8.5.2", - "@storybook/addon-webpack5-compiler-swc": "^2.0.0", - "@storybook/react-webpack5": "^8.5.2", + "@storybook/addon-themes": "^8.6.3", + "@storybook/addon-viewport": "^8.6.3", + "@storybook/addon-webpack5-compiler-swc": "^2.1.0", + "@storybook/react-webpack5": "^8.6.3", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", "@types/jest": "29.5.14", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", - "eslint-config-next": "15.1.3", - "eslint-import-resolver-typescript": "~3.7.0", + "eslint-config-next": "15.2.0", + "eslint-import-resolver-typescript": "~3.8.3", "eslint-plugin-mdx": "~3.1.5", - "eslint-plugin-react": "~7.37.2", - "eslint-plugin-react-hooks": "5.1.0", - "eslint-plugin-storybook": "~0.11.0", + "eslint-plugin-react": "~7.37.4", + "eslint-plugin-react-hooks": "5.2.0", + "eslint-plugin-storybook": "~0.11.3", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "storybook": "^8.4.4", - "stylelint": "16.12.0", - "stylelint-config-standard": "36.0.1", + "storybook": "^8.6.3", + "stylelint": "16.15.0", + "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.7.2", - "typescript-eslint": "~8.19.0", + "typescript-eslint": "~8.25.0", "user-agent-data-types": "0.4.2" } } diff --git a/apps/site/providers/__tests__/matterProvider.test.mjs b/apps/site/providers/__tests__/matterProvider.test.mjs index bfc0aba9faa74..427a15bfe98b5 100644 --- a/apps/site/providers/__tests__/matterProvider.test.mjs +++ b/apps/site/providers/__tests__/matterProvider.test.mjs @@ -1,4 +1,4 @@ -import { render } from '@testing-library/react'; +import { act, render } from '@testing-library/react'; import { MatterProvider, MatterContext } from '@/providers/matterProvider'; @@ -9,21 +9,23 @@ const mockContext = { readingTime: { text: '', minutes: 0, time: 0, words: 0 }, filename: '', os: 'LOADING', - architecture: '', - bitness: '', + architecture: expect.any(String), + bitness: expect.any(String), }; describe('MatterProvider', () => { - it('renders the provider with the provided context value', () => { - render( - <MatterProvider os="LOADING"> - <MatterContext.Consumer> - {value => { - expect(value).toEqual(mockContext); - return null; - }} - </MatterContext.Consumer> - </MatterProvider> + it('renders the provider with the provided context value', async () => { + await act(async () => + render( + <MatterProvider os="LOADING"> + <MatterContext.Consumer> + {value => { + expect(value).toEqual(mockContext); + return null; + }} + </MatterContext.Consumer> + </MatterProvider> + ) ); }); }); diff --git a/apps/site/providers/__tests__/themeProvider.test.mjs b/apps/site/providers/__tests__/themeProvider.test.mjs index df606275d3c23..0f28673ddf978 100644 --- a/apps/site/providers/__tests__/themeProvider.test.mjs +++ b/apps/site/providers/__tests__/themeProvider.test.mjs @@ -23,7 +23,7 @@ describe('ThemeProvider', () => { storageKey: 'theme', children: <div>Mock Component</div>, }, - expect.any(Object) + undefined ); expect(container.firstChild).toHaveTextContent('Mock Component'); }); diff --git a/package-lock.json b/package-lock.json index a31424fd37c0f..0836f7a9805de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,19 +13,20 @@ "dependencies": { "acorn": "^8.14.0", "husky": "9.1.7", - "lint-staged": "15.3.0", - "turbo": "2.3.3" + "lint-staged": "15.4.3", + "turbo": "2.4.4" }, "devDependencies": { - "@eslint/js": "~9.17.0", - "@types/eslint__js": "8.42.3", - "@types/node": "22.10.3", + "@eslint/js": "~9.21.0", + "@types/node": "22.13.8", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.17.0", + "eslint": "~9.21.0", "eslint-plugin-import-x": "~4.6.1", - "eslint-plugin-no-relative-import-paths": "~1.5.5", - "prettier": "3.4.2", - "prettier-plugin-tailwindcss": "0.6.9" + "eslint-plugin-no-relative-import-paths": "~1.6.1", + "prettier": "3.5.2", + "prettier-plugin-tailwindcss": "0.6.11" }, "engines": { "node": "v22" @@ -39,134 +40,137 @@ "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", - "@orama/react-components": "^0.3.2", + "@orama/react-components": "^0.5.1", "@oramacloud/client": "^2.1.4", - "@radix-ui/react-accessible-icon": "^1.1.0", - "@radix-ui/react-dropdown-menu": "^2.1.2", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-scroll-area": "^1.2.1", - "@radix-ui/react-select": "^2.1.2", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.1", - "@radix-ui/react-toast": "^1.2.5", + "@radix-ui/react-accessible-icon": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-scroll-area": "^1.2.3", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-tabs": "^1.1.3", + "@radix-ui/react-toast": "^1.2.6", "@radix-ui/react-tooltip": "^1.1.8", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", "@vcarl/remark-headings": "~0.1.0", - "@vercel/analytics": "~1.4.1", + "@vercel/analytics": "~1.5.0", "@vercel/otel": "~1.10.1", - "@vercel/speed-insights": "~1.1.0", + "@vercel/speed-insights": "~1.2.0", "autoprefixer": "~10.4.20", "classnames": "~2.5.1", "cross-env": "7.0.3", "dedent": "1.5.3", "feed": "~4.2.2", "github-slugger": "~2.0.0", - "glob": "~11.0.0", + "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.1.6", - "next-intl": "~3.26.3", - "next-themes": "~0.4.3", - "postcss": "~8.4.49", - "postcss-calc": "~10.0.2", + "next": "15.2.0", + "next-intl": "~3.26.5", + "next-themes": "~0.4.4", + "postcss": "~8.5.3", + "postcss-calc": "~10.1.1", "postcss-import": "~16.1.0", "postcss-loader": "~8.1.1", "postcss-mixins": "~11.0.3", "postcss-simple-vars": "~7.0.1", - "react": "^18.3.1", - "react-dom": "^18.3.1", + "react": "19.0.0", + "react-dom": "19.0.0", "rehype-autolink-headings": "~7.1.0", "rehype-slug": "~6.0.0", - "remark-gfm": "~4.0.0", + "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.1", "semver": "~7.7.1", - "shiki": "~2.2.0", - "sval": "^0.5.2", - "tailwindcss": "~3.4.15", + "shiki": "~3.1.0", + "sval": "^0.6.1", + "tailwindcss": "~3.4.17", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.0" }, "devDependencies": { - "@eslint/compat": "~1.2.3", - "@next/eslint-plugin-next": "15.1.6", - "@storybook/addon-controls": "^8.5.2", - "@storybook/addon-interactions": "^8.5.2", + "@eslint/compat": "~1.2.7", + "@next/eslint-plugin-next": "15.2.0", + "@storybook/addon-controls": "^8.6.3", + "@storybook/addon-interactions": "^8.6.3", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.5.2", - "@storybook/addon-viewport": "^8.5.2", - "@storybook/addon-webpack5-compiler-swc": "^2.0.0", - "@storybook/react-webpack5": "^8.5.2", + "@storybook/addon-themes": "^8.6.3", + "@storybook/addon-viewport": "^8.6.3", + "@storybook/addon-webpack5-compiler-swc": "^2.1.0", + "@storybook/react-webpack5": "^8.6.3", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", "@types/jest": "29.5.14", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", "@types/semver": "~7.5.8", - "eslint-config-next": "15.1.3", - "eslint-import-resolver-typescript": "~3.7.0", + "eslint-config-next": "15.2.0", + "eslint-import-resolver-typescript": "~3.8.3", "eslint-plugin-mdx": "~3.1.5", - "eslint-plugin-react": "~7.37.2", - "eslint-plugin-react-hooks": "5.1.0", - "eslint-plugin-storybook": "~0.11.0", + "eslint-plugin-react": "~7.37.4", + "eslint-plugin-react-hooks": "5.2.0", + "eslint-plugin-storybook": "~0.11.3", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "storybook": "^8.4.4", - "stylelint": "16.12.0", - "stylelint-config-standard": "36.0.1", + "storybook": "^8.6.3", + "stylelint": "16.15.0", + "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.7.2", - "typescript-eslint": "~8.19.0", + "typescript-eslint": "~8.25.0", "user-agent-data-types": "0.4.2" } }, - "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==", + "apps/site/node_modules/eslint-plugin-storybook": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.3.tgz", + "integrity": "sha512-gDBnBZiyk4ZG7OMSJRaHBcuJ8TMCXgMIQ3HB/XvtN0SvSio2ZOIeYD3yGj39g/DbyCe/Bg02j/ip9tWlDEs82A==", + "dev": true, "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "dependencies": { + "@storybook/csf": "^0.1.11", + "@typescript-eslint/utils": "^8.8.1", + "ts-dedent": "^2.2.0" }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "eslint": ">=8", + "typescript": ">=4.8.4 <5.8.0" } }, - "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", + "apps/site/node_modules/typescript-eslint": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", + "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", + "dev": true, + "license": "MIT", "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" + "@typescript-eslint/eslint-plugin": "8.25.0", + "@typescript-eslint/parser": "8.25.0", + "@typescript-eslint/utils": "8.25.0" }, "engines": { - "node": "20 || >=22" + "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" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@adobe/css-tools": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", - "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", "dev": true, "license": "MIT" }, @@ -211,9 +215,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, "license": "MIT", "engines": { @@ -221,22 +225,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -262,14 +266,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -279,13 +283,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -338,9 +342,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, "license": "MIT", "engines": { @@ -377,27 +381,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -646,9 +650,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", "dev": true, "license": "MIT", "dependencies": { @@ -659,32 +663,32 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -703,9 +707,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dev": true, "license": "MIT", "dependencies": { @@ -901,6 +905,29 @@ "@csstools/css-tokenizer": "^3.0.3" } }, + "node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "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": "^7.0.0" + } + }, "node_modules/@dual-bundle/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", @@ -923,9 +950,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", "cpu": [ "ppc64" ], @@ -940,9 +967,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", "cpu": [ "arm" ], @@ -957,9 +984,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", "cpu": [ "arm64" ], @@ -974,9 +1001,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", "cpu": [ "x64" ], @@ -991,9 +1018,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", "cpu": [ "arm64" ], @@ -1008,9 +1035,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", "cpu": [ "x64" ], @@ -1025,9 +1052,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", "cpu": [ "arm64" ], @@ -1042,9 +1069,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", "cpu": [ "x64" ], @@ -1059,9 +1086,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", "cpu": [ "arm" ], @@ -1076,9 +1103,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", "cpu": [ "arm64" ], @@ -1093,9 +1120,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", "cpu": [ "ia32" ], @@ -1110,9 +1137,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", "cpu": [ "loong64" ], @@ -1127,9 +1154,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", "cpu": [ "mips64el" ], @@ -1144,9 +1171,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", "cpu": [ "ppc64" ], @@ -1161,9 +1188,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", "cpu": [ "riscv64" ], @@ -1178,9 +1205,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", "cpu": [ "s390x" ], @@ -1195,9 +1222,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", "cpu": [ "x64" ], @@ -1212,9 +1239,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", "cpu": [ "arm64" ], @@ -1229,9 +1256,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", "cpu": [ "x64" ], @@ -1246,9 +1273,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", "cpu": [ "arm64" ], @@ -1263,9 +1290,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", "cpu": [ "x64" ], @@ -1280,9 +1307,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", "cpu": [ "x64" ], @@ -1297,9 +1324,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", "cpu": [ "arm64" ], @@ -1314,9 +1341,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", "cpu": [ "ia32" ], @@ -1331,9 +1358,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", "cpu": [ "x64" ], @@ -1366,19 +1393,6 @@ "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", @@ -1390,9 +1404,9 @@ } }, "node_modules/@eslint/compat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.4.tgz", - "integrity": "sha512-S8ZdQj/N69YAtuqFt7653jwcvuUj131+6qGLUyDqfDg1OIoBQ66OCuXC473YQfO2AaxITTutiRQiDwoo7ZLYyg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.7.tgz", + "integrity": "sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1408,13 +1422,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", - "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.5", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -1447,9 +1461,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", - "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1460,9 +1474,9 @@ } }, "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.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1532,18 +1546,19 @@ } }, "node_modules/@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", - "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1551,12 +1566,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", - "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.12.0", "levn": "^0.4.1" }, "engines": { @@ -1564,22 +1580,22 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", - "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.8" + "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.12", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", - "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" + "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/react-dom": { @@ -1596,57 +1612,66 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz", - "integrity": "sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.3.tgz", + "integrity": "sha512-pJT1OkhplSmvvr6i3CWTPvC/FGC06MbN5TNBfRO6Ox62AEz90eMq+dVvtX9Bl3jxCEkS0tATzDarRZuOLw7oFg==", "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "2.2.5", - "@formatjs/intl-localematcher": "0.5.9", + "@formatjs/fast-memoize": "2.2.6", + "@formatjs/intl-localematcher": "0.6.0", "decimal.js": "10", "tslib": "2" } }, + "node_modules/@formatjs/ecma402-abstract/node_modules/@formatjs/intl-localematcher": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.0.tgz", + "integrity": "sha512-4rB4g+3hESy1bHSBG3tDFaMY2CH67iT7yne1e+0CLTsGLDcmoEWWpJjjpWVaYgYfYuohIRuo0E+N536gd2ZHZA==", + "license": "MIT", + "dependencies": { + "tslib": "2" + } + }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz", - "integrity": "sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.6.tgz", + "integrity": "sha512-luIXeE2LJbQnnzotY1f2U2m7xuQNj2DA8Vq4ce1BY9ebRZaoPB1+8eZ6nXpLzsxuW5spQxr7LdCg+CApZwkqkw==", "license": "MIT", "dependencies": { "tslib": "2" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.9.7", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.7.tgz", - "integrity": "sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.1.tgz", + "integrity": "sha512-o0AhSNaOfKoic0Sn1GkFCK4MxdRsw7mPJ5/rBpIqdvcC7MIuyUSW8WChUEvrK78HhNpYOgqCQbINxCTumJLzZA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/icu-skeleton-parser": "1.8.11", + "@formatjs/ecma402-abstract": "2.3.3", + "@formatjs/icu-skeleton-parser": "1.8.13", "tslib": "2" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.11.tgz", - "integrity": "sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==", + "version": "1.8.13", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.13.tgz", + "integrity": "sha512-N/LIdTvVc1TpJmMt2jVg0Fr1F7Q1qJPdZSCs19unMskCmVQ/sa0H9L8PWt13vq+gLdLg1+pPsvBLydL1Apahjg==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", + "@formatjs/ecma402-abstract": "2.3.3", "tslib": "2" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz", - "integrity": "sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", + "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", "license": "MIT", "dependencies": { "tslib": "2" @@ -1714,9 +1739,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2675,6 +2700,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "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": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2712,6 +2748,28 @@ "dev": true, "license": "MIT" }, + "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": "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/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2722,6 +2780,19 @@ "node": ">=8" } }, + "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": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "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", @@ -3051,15 +3122,52 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@keyv/serialize": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + } + }, + "node_modules/@keyv/serialize/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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.2.1" + } + }, "node_modules/@lit-labs/ssr-dom-shim": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", - "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==" + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", + "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" } @@ -3101,25 +3209,55 @@ } }, "node_modules/@next/env": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.6.tgz", - "integrity": "sha512-d9AFQVPEYNr+aqokIiPLNK/MTyt3DWa/dpKveiAaVccUadFbhFEvY6FXYX2LJO2Hv7PHnLBu2oWwB4uBuHjr/w==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.0.tgz", + "integrity": "sha512-eMgJu1RBXxxqqnuRJQh5RozhskoNUDHBFybvi+Z+yK9qzKeG7dadhv/Vp1YooSZmCnegf7JxWuapV77necLZNA==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.6.tgz", - "integrity": "sha512-+slMxhTgILUntZDGNgsKEYHUvpn72WP1YTlkmEhS51vnVd7S9jEEy0n9YAMcI21vUG4akTw9voWH02lrClt/yw==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.0.tgz", + "integrity": "sha512-jHFUG2OwmAuOASqq253RAEG/5BYcPHn27p1NoWZDCf4OdvdK0yRYWX92YKkL+Mk2s+GyJrmd/GATlL5b2IySpw==", "dev": true, "license": "MIT", "dependencies": { "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.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.6.tgz", - "integrity": "sha512-u7lg4Mpl9qWpKgy6NzEkz/w0/keEHtOybmIl0ykgItBxEM5mYotS5PmqTpo+Rhg8FiOiWgwr8USxmKQkqLBCrw==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.0.tgz", + "integrity": "sha512-rlp22GZwNJjFCyL7h5wz9vtpBVuCt3ZYjFWpEPBGzG712/uL1bbSkS675rVAUCRZ4hjoTJ26Q7IKhr5DfJrHDA==", "cpu": [ "arm64" ], @@ -3133,9 +3271,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.6.tgz", - "integrity": "sha512-x1jGpbHbZoZ69nRuogGL2MYPLqohlhnT9OCU6E6QFewwup+z+M6r8oU47BTeJcWsF2sdBahp5cKiAcDbwwK/lg==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.0.tgz", + "integrity": "sha512-DiU85EqSHogCz80+sgsx90/ecygfCSGl5P3b4XDRVZpgujBm5lp4ts7YaHru7eVTyZMjHInzKr+w0/7+qDrvMA==", "cpu": [ "x64" ], @@ -3149,9 +3287,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.6.tgz", - "integrity": "sha512-jar9sFw0XewXsBzPf9runGzoivajeWJUc/JkfbLTC4it9EhU8v7tCRLH7l5Y1ReTMN6zKJO0kKAGqDk8YSO2bg==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.0.tgz", + "integrity": "sha512-VnpoMaGukiNWVxeqKHwi8MN47yKGyki5q+7ql/7p/3ifuU2341i/gDwGK1rivk0pVYbdv5D8z63uu9yMw0QhpQ==", "cpu": [ "arm64" ], @@ -3165,9 +3303,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.6.tgz", - "integrity": "sha512-+n3u//bfsrIaZch4cgOJ3tXCTbSxz0s6brJtU3SzLOvkJlPQMJ+eHVRi6qM2kKKKLuMY+tcau8XD9CJ1OjeSQQ==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.0.tgz", + "integrity": "sha512-ka97/ssYE5nPH4Qs+8bd8RlYeNeUVBhcnsNUmFM6VWEob4jfN9FTr0NBhXVi1XEJpj3cMfgSRW+LdE3SUZbPrw==", "cpu": [ "arm64" ], @@ -3181,9 +3319,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.6.tgz", - "integrity": "sha512-SpuDEXixM3PycniL4iVCLyUyvcl6Lt0mtv3am08sucskpG0tYkW1KlRhTgj4LI5ehyxriVVcfdoxuuP8csi3kQ==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.0.tgz", + "integrity": "sha512-zY1JduE4B3q0k2ZCE+DAF/1efjTXUsKP+VXRtrt/rJCTgDlUyyryx7aOgYXNc1d8gobys/Lof9P9ze8IyRDn7Q==", "cpu": [ "x64" ], @@ -3197,9 +3335,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.6.tgz", - "integrity": "sha512-L4druWmdFSZIIRhF+G60API5sFB7suTbDRhYWSjiw0RbE+15igQvE2g2+S973pMGvwN3guw7cJUjA/TmbPWTHQ==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.0.tgz", + "integrity": "sha512-QqvLZpurBD46RhaVaVBepkVQzh8xtlUN00RlG4Iq1sBheNugamUNPuZEH1r9X1YGQo1KqAe1iiShF0acva3jHQ==", "cpu": [ "x64" ], @@ -3213,9 +3351,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.6.tgz", - "integrity": "sha512-s8w6EeqNmi6gdvM19tqKKWbCyOBvXFbndkGHl+c9YrzsLARRdCHsD9S1fMj8gsXm9v8vhC8s3N8rjuC/XrtkEg==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.0.tgz", + "integrity": "sha512-ODZ0r9WMyylTHAN6pLtvUtQlGXBL9voljv6ujSlcsjOxhtXPI1Ag6AhZK0SE8hEpR1374WZZ5w33ChpJd5fsjw==", "cpu": [ "arm64" ], @@ -3229,9 +3367,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.6.tgz", - "integrity": "sha512-6xomMuu54FAFxttYr5PJbEfu96godcxBTRk1OhAvJq0/EnmFU/Ybiax30Snis4vdWZ9LGpf7Roy5fSs7v/5ROQ==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.0.tgz", + "integrity": "sha512-8+4Z3Z7xa13NdUuUAcpVNA6o76lNPniBd9Xbo02bwXQXnZgFvEopwY2at5+z7yHl47X9qbZpvwatZ2BRo3EdZw==", "cpu": [ "x64" ], @@ -3245,9 +3383,9 @@ } }, "node_modules/@noble/hashes": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", - "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", "engines": { "node": "^14.21.3 || >=16" @@ -3496,22 +3634,6 @@ "dev": true, "license": "ISC" }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "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", @@ -3612,22 +3734,6 @@ "dev": true, "license": "ISC" }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "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", @@ -3694,9 +3800,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.0.tgz", - "integrity": "sha512-l1aJ30CXeauVYaI+btiynHpw341LthkMTv3omi1VJDX14werY2Wmv9n1yudMsq9HuY0m8PvXEVX4d8zxEb+WRg==", + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -3707,9 +3813,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", - "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -3723,13 +3829,13 @@ } }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.0.tgz", - "integrity": "sha512-qIKp+tSCLqofneUWRc5XHtr9jHIq0N0BJfaJamM9gjEFO8sthV4SDXDGNOSAx16PxkbrQJ5/AxMPAGCXl8W/Hg==", + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/api-logs": "0.57.0", + "@opentelemetry/api-logs": "0.57.2", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", @@ -3744,13 +3850,13 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", - "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.30.0", + "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { @@ -3761,15 +3867,15 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.57.0.tgz", - "integrity": "sha512-6Kbxdu/QE9LWH7+WSLmYo3DjAq+c55TiCLXiXu6b/2m2muy5SyOG2m0MrGqetyRpfYSSbIqHmJoqNVTN3+2a9g==", + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.57.2.tgz", + "integrity": "sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/api-logs": "0.57.0", - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0" + "@opentelemetry/api-logs": "0.57.2", + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" }, "engines": { "node": ">=14" @@ -3779,14 +3885,14 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", - "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" }, "engines": { "node": ">=14" @@ -3796,14 +3902,14 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.0.tgz", - "integrity": "sha512-RKQDaDIkV7PwizmHw+rE/FgfB2a6MBx+AEVVlAHXRG1YYxLiBpPX2KhmoB99R5vA4b72iJrjle68NDWnbrE9Dg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0", + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { @@ -3835,23 +3941,25 @@ "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==" + "integrity": "sha512-w3TvtWUKYlf/NoujoyEs38nJRi1lkwxdOXntXDYB9cfHzx+s+iPrps70YwFRRJu9TcHW8ffz503b0E6aAfsuvg==", + "license": "Apache-2.0" }, "node_modules/@orama/orama": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.0.4.tgz", - "integrity": "sha512-ziYjwoxUty8WEvgnUZNeJlCHkYplxWFxjNVXWaNIh1wvQ37tl/qkM0kyLXiwHgSxrIPjuv6A2TwgKjjtwhP3jg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.1.tgz", + "integrity": "sha512-w60E72VyWk4QeGy5j0Nm6z4BYVu2MMgtXi8dE/kVluxvz1JVtU9fPXKUW6E0bfrpN+LQM/2w5Jq5v6stl+V0dQ==", "license": "Apache-2.0", "engines": { "node": ">= 16.0.0" } }, "node_modules/@orama/react-components": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@orama/react-components/-/react-components-0.3.2.tgz", - "integrity": "sha512-+Wb2YtnNuu/48EqUdrdbOqTuTRE+nzO9CsOHeTWigAGWGUzmrL/LKvwL+Oeswh0sjNFFJDhj0y/miTQWIFcQPQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@orama/react-components/-/react-components-0.5.1.tgz", + "integrity": "sha512-R6lLg9dIOdCkTPXDqGSxoQh1DQb02iR+5REiD27UTqv175Gvp6nOYav0hqIn/UQk8wIQPfUOO9A3T2U3T/iyKg==", + "license": "Apache-2.0", "dependencies": { - "@orama/wc-components": "0.3.2" + "@orama/wc-components": "0.5.1" }, "peerDependencies": { "react": ">=17.0.0 <20.0.0", @@ -3859,18 +3967,20 @@ } }, "node_modules/@orama/switch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.0.4.tgz", - "integrity": "sha512-naS+Sel2M2y5RIQ0HlALf52zK7VjTXWSSUrmvBxaC/3kG9nrAI+8kon6HiTM2OmNAxrIEgitH0RJXLawSliyVw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.1.1.tgz", + "integrity": "sha512-DUd5VPtq1q2kj7kZCNk9unX6+Lvc4DsU6WCIgsW+6FdvJlrNIBQeoCsVVqIkdk1B4AKBFONOJJbq9ND4ZUvNtQ==", + "license": "Apache-2.0", "peerDependencies": { - "@orama/orama": "3.0.4", + "@orama/orama": "3.1.1", "@oramacloud/client": "^2.1.1" } }, "node_modules/@orama/wc-components": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@orama/wc-components/-/wc-components-0.3.2.tgz", - "integrity": "sha512-Ghhqc5PS7qMrybXDHH7G6ECmwjiaABgwD4ypCaRMTz0t05SHO+uX/nGbn7YbWvA9dGwQjQz/2Fm2jCrUsqbmpA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@orama/wc-components/-/wc-components-0.5.1.tgz", + "integrity": "sha512-tA8wvx6YGaktjqDD5dY9VvCowVdjmatGhYy+fHp/nor2ezPXWilFyjll4q9HGK/v2Os2l9D0laXVptd4jX3pBQ==", + "license": "Apache-2.0", "dependencies": { "@orama/highlight": "^0.1.6", "@orama/orama": "^3.0.0", @@ -3951,10 +4061,40 @@ "@types/hast": "^3.0.4" } }, - "node_modules/@orama/wc-components/node_modules/shiki": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", - "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "node_modules/@orama/wc-components/node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, + "node_modules/@orama/wc-components/node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/@orama/wc-components/node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "license": "MIT", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "node_modules/@orama/wc-components/node_modules/shiki": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", "license": "MIT", "dependencies": { "@shikijs/core": "1.29.2", @@ -3982,6 +4122,7 @@ "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" } @@ -4022,12 +4163,12 @@ "license": "MIT" }, "node_modules/@radix-ui/react-accessible-icon": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.1.tgz", - "integrity": "sha512-DH8vuU7oqHt9RhO3V9Z1b8ek+bOl4+9VLsh0cgL6t7f2WhbuOChm3ft0EmCCsfd4ORi7Cs3II4aNcTXi+bh+wg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.2.tgz", + "integrity": "sha512-+rnMO0SEfzkcHr93RshkQVpOA26MtGOv4pcS9QUnLg4F8+GDmCJ8c2FEPhPz5e7arf31EzbTqJxFbzg3qen14g==", "license": "MIT", "dependencies": { - "@radix-ui/react-visually-hidden": "1.1.1" + "@radix-ui/react-visually-hidden": "1.1.2" }, "peerDependencies": { "@types/react": "*", @@ -4045,12 +4186,12 @@ } }, "node_modules/@radix-ui/react-arrow": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.1.tgz", - "integrity": "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", + "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.1" + "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { "@types/react": "*", @@ -4068,15 +4209,15 @@ } }, "node_modules/@radix-ui/react-collection": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz", - "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz", + "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1" + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2" }, "peerDependencies": { "@types/react": "*", @@ -4139,14 +4280,14 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.3.tgz", - "integrity": "sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", + "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, @@ -4166,17 +4307,17 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.4.tgz", - "integrity": "sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.6.tgz", + "integrity": "sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.4", - "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-menu": "2.1.6", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { @@ -4210,13 +4351,13 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz", - "integrity": "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", + "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { @@ -4253,12 +4394,12 @@ } }, "node_modules/@radix-ui/react-label": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.1.tgz", - "integrity": "sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.2.tgz", + "integrity": "sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.1" + "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { "@types/react": "*", @@ -4276,29 +4417,29 @@ } }, "node_modules/@radix-ui/react-menu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.4.tgz", - "integrity": "sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.6.tgz", + "integrity": "sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-collection": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.5", "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.1", - "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-roving-focus": "1.1.1", - "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", + "@radix-ui/react-slot": "1.1.2", "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", @@ -4316,16 +4457,16 @@ } }, "node_modules/@radix-ui/react-popper": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.1.tgz", - "integrity": "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", + "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", "license": "MIT", "dependencies": { "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.1", + "@radix-ui/react-arrow": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-rect": "1.1.0", @@ -4348,12 +4489,12 @@ } }, "node_modules/@radix-ui/react-portal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz", - "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", + "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { @@ -4396,12 +4537,12 @@ } }, "node_modules/@radix-ui/react-primitive": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz", - "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.1.1" + "@radix-ui/react-slot": "1.1.2" }, "peerDependencies": { "@types/react": "*", @@ -4419,18 +4560,18 @@ } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.1.tgz", - "integrity": "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz", + "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-collection": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, @@ -4450,9 +4591,9 @@ } }, "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.2.tgz", - "integrity": "sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.3.tgz", + "integrity": "sha512-l7+NNBfBYYJa9tNqVcP2AGvxdE3lmE6kFTBXdvHgUaZuy+4wGCL1Cl2AfaR7RKyimj7lZURGLwFO59k4eBnDJQ==", "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", @@ -4461,7 +4602,7 @@ "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, @@ -4481,32 +4622,32 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.4.tgz", - "integrity": "sha512-pOkb2u8KgO47j/h7AylCj7dJsm69BXcjkrvTqMptFqsE2i0p8lHkfgneXKjAgPzBMivnoMyt8o4KiV4wYzDdyQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.6.tgz", + "integrity": "sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==", "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-collection": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.5", "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.1", - "@radix-ui/react-portal": "1.1.3", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", "@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-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" + "@radix-ui/react-visually-hidden": "1.1.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", @@ -4524,9 +4665,9 @@ } }, "node_modules/@radix-ui/react-slot": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", - "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.1" @@ -4542,9 +4683,9 @@ } }, "node_modules/@radix-ui/react-tabs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.2.tgz", - "integrity": "sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.3.tgz", + "integrity": "sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", @@ -4552,8 +4693,8 @@ "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-roving-focus": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { @@ -4572,50 +4713,23 @@ } }, "node_modules/@radix-ui/react-toast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.5.tgz", - "integrity": "sha512-ZzUsAaOx8NdXZZKcFNDhbSlbsCUy8qQWmzTdgrlrhhZAOx2ofLtKrBDW9fkqhFvXgmtv560Uj16pkLkqML7SHA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.6.tgz", + "integrity": "sha512-gN4dpuIVKEgpLn1z5FhzT9mYRUitbfZq9XqN/7kkBMUgFTzTG8x/KszWJugJXHcwxckY8xcKDZPz7kG3o6DsUA==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-collection": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.4", - "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-portal": "1.1.4", "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-primitive": "2.0.2", "@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.1" - }, - "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-dismissable-layer": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.4.tgz", - "integrity": "sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" + "@radix-ui/react-visually-hidden": "1.1.2" }, "peerDependencies": { "@types/react": "*", @@ -4666,142 +4780,112 @@ } } }, - "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-arrow": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", - "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.2" - }, "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" + "react": "^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-dismissable-layer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", - "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" + "@radix-ui/react-use-callback-ref": "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" + "react": "^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-popper": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", - "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", "license": "MIT", "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-rect": "1.1.0", - "@radix-ui/react-use-size": "1.1.0", - "@radix-ui/rect": "1.1.0" + "@radix-ui/react-use-callback-ref": "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" + "react": "^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-portal": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", - "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.2", - "@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" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "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-primitive": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", - "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.1.2" + "@radix-ui/rect": "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" + "react": "^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-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", - "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1" + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4813,7 +4897,7 @@ } } }, - "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-visually-hidden": { + "node_modules/@radix-ui/react-visually-hidden": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.2.tgz", "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", @@ -4836,147 +4920,7 @@ } } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", - "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-use-controllable-state": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "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-use-escape-keydown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "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-use-layout-effect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", - "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-use-previous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", - "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", - "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-use-rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", - "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/rect": "1.1.0" - }, - "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-use-size": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", - "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "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-visually-hidden": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz", - "integrity": "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.1" - }, - "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/rect": { + "node_modules/@radix-ui/rect": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", @@ -4990,9 +4934,9 @@ "license": "MIT" }, "node_modules/@rushstack/eslint-patch": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", - "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.5.tgz", + "integrity": "sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==", "dev": true, "license": "MIT" }, @@ -5009,72 +4953,70 @@ } }, "node_modules/@shikijs/core": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.2.0.tgz", - "integrity": "sha512-U+vpKdsQDWuX3fPTCkSc8XPX9dCaS+r+qEP1XhnU30yxRFo2OxHJmY2H5rO1q+v0zB5R2vobsxEFt5uPf31CGQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.1.0.tgz", + "integrity": "sha512-1ppAOyg3F18N8Ge9DmJjGqRVswihN33rOgPovR6gUHW17Hw1L4RlRhnmVQcsacSHh0A8IO1FIgNbtTxUFwodmg==", "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "2.2.0", - "@shikijs/engine-oniguruma": "2.2.0", - "@shikijs/types": "2.2.0", - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/types": "3.1.0", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" + "hast-util-to-html": "^9.0.5" } }, "node_modules/@shikijs/engine-javascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.2.0.tgz", - "integrity": "sha512-96SpZ4V3UVMtpSPR5QpmU395CNrQiRPszXK62m8gKR2HMA0653ruce7omS5eX6EyAyFSYHvBWtTuspiIsHpu4A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.1.0.tgz", + "integrity": "sha512-/LwkhW17jYi7uPcdaaSQQDNW+xgrHXarkrxYPoC6WPzH2xW5mFMw12doHXJBqxmYvtcTbaatcv2MkH9+3PU1FA==", "license": "MIT", "dependencies": { - "@shikijs/types": "2.2.0", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "^2.3.0" + "@shikijs/types": "3.1.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.1" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.2.0.tgz", - "integrity": "sha512-wowCKwkvPFFMXFkiKK/a2vs5uTCc0W9+O9Xcu/oqFP6VoDFe14T8u/D+Rl4dCJJSOyeynP9mxNPJ82T5JHTNCw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.1.0.tgz", + "integrity": "sha512-reRgy8VzDPdiDocuGDD60Rk/jLxgcgy+6H4n6jYLeN2Yw5ikasRjQQx8ERXtDM35yg2v/d6KolDBcK8hYYhcmw==", "license": "MIT", "dependencies": { - "@shikijs/types": "2.2.0", - "@shikijs/vscode-textmate": "^10.0.1" + "@shikijs/types": "3.1.0", + "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.2.0.tgz", - "integrity": "sha512-RSWLH3bnoyG6O1kZ2msh5jOkKKp8eENwyT30n62vUtXfp5cxkF/bpWPpO+p4+GAPhL2foBWR2kOerwkKG0HXlQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.1.0.tgz", + "integrity": "sha512-hAM//sExPXAXG3ZDWjrmV6Vlw4zlWFOcT1ZXNhFRBwPP27scZu/ZIdZ+TdTgy06zSvyF4KIjnF8j6+ScKGu6ww==", "license": "MIT", "dependencies": { - "@shikijs/types": "2.2.0" + "@shikijs/types": "3.1.0" } }, "node_modules/@shikijs/themes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.2.0.tgz", - "integrity": "sha512-8Us9ZF2mV9kuh+4ySJ9MzrUDIpc2RIkRfKBZclkliW1z9a0PlGU2U7fCkItZZHpR5e4/ft5BzuO+GDqombC6Aw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.1.0.tgz", + "integrity": "sha512-A4MJmy9+ydLNbNCtkmdTp8a+ON+MMXoUe1KTkELkyu0+pHGOcbouhNuobhZoK59cL4cOST6CCz1x+kUdkp9UZA==", "license": "MIT", "dependencies": { - "@shikijs/types": "2.2.0" + "@shikijs/types": "3.1.0" } }, "node_modules/@shikijs/types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.2.0.tgz", - "integrity": "sha512-wkZZKs80NtW5Jp/7ONI1j7EdXSatX2BKMS7I01wliDa09gJKHkZyVqlEMRka/mjT5Qk9WgAyitoCKgGgbsP/9g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.1.0.tgz", + "integrity": "sha512-F8e7Fy4ihtcNpJG572BZZC1ErYrBrzJ5Cbc9Zi3REgWry43gIvjJ9lFAoUnuy7Bvy4IFz7grUSxL5edfrrjFEA==", "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", - "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "license": "MIT" }, "node_modules/@sinclair/typebox": { @@ -5105,9 +5047,10 @@ } }, "node_modules/@stencil/core": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.23.2.tgz", - "integrity": "sha512-UC0+FApqwQEzIqmN13z0dcTAJOu30zlfTttiAlOsE7TXEK+0G6OnUPz7OtEm1413o3WTNUVpm9JWj3qg0JatIA==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.27.1.tgz", + "integrity": "sha512-wJ+U3yJ9xSrME1PheHh8DnZrgFhjTlvF54mkA0tzTDXYdrEAYXIEAAeWbXx3munYX2Lqj3oDBEDsbsJNxDkwzA==", + "license": "MIT", "bin": { "stencil": "bin/stencil" }, @@ -5117,11 +5060,12 @@ } }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.1.2.tgz", + "integrity": "sha512-wtf9oKps4zBmdLoy1oSZDDc56ux17DZrFNIqqTbdvFXEcPYRzWGD9mRhSC/YxKvC3AdsFXaEsHn7Ph+5fhWcGA==", + "license": "MIT", "engines": { - "node": ">=12.0.0", + "node": ">=18.0.0", "npm": ">=6.0.0" }, "peerDependencies": { @@ -5129,9 +5073,9 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.5.2.tgz", - "integrity": "sha512-wkzw2vRff4zkzdvC/GOlB2PlV0i973u8igSLeg34TWNEAa4bipwVHnFfIojRuP9eN1bZL/0tjuU5pKnbTqH7aQ==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.3.tgz", + "integrity": "sha512-j4Oof3nwjyiO6oNP1bJ98Sz1iZlYhdcgHX284yd0wBO91Q5B2GoCeqyCE+yRCh752ZnnYG1gazJrHmiG6gKxVg==", "dev": true, "license": "MIT", "dependencies": { @@ -5144,19 +5088,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.6.3" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.5.2.tgz", - "integrity": "sha512-Gn9Egk2OS0BkkHd671Y0pIqBr4noAOLUfnpxhHE8r0Tt7FmJFeVSN+dqK7hQeUmKL5jdSY25FTYROg65JmtGOA==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.3.tgz", + "integrity": "sha512-cDvxuMcjoQdtimNrT4BM9AK0qZJhA0Ep/CWPcVK1bAFzqlzBbe//UZa5It/AeC4EMYAr5rFY+LWEli3YPeOnjQ==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.5.2", - "@storybook/test": "8.5.2", + "@storybook/instrumenter": "8.6.3", + "@storybook/test": "8.6.3", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -5165,174 +5109,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/csf": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.12.tgz", - "integrity": "sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^2.19.0" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/instrumenter": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.5.2.tgz", - "integrity": "sha512-BbaUw9GXVzRg3Km95t2mRu4W6C1n1erjzll5maBaVe2+lV9MbCvBcdYwGUgjFNlQ/ETgq6vLfLOEtziycq/B6g==", - "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.5.2" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/test": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.5.2.tgz", - "integrity": "sha512-F5WfD75m25ZRS19cSxCzHWJ/rH8jWwIjhBlhU+UW+5xjnTS1cJuC1yPT/5Jw0/0Aj9zG1atyfBUYnNHYtsBDYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf": "0.1.12", - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.5.2", - "@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.5.2" - } - }, - "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/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT" - }, - "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-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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "storybook": "^8.6.3" } }, "node_modules/@storybook/addon-styling-webpack": { @@ -5349,9 +5126,9 @@ } }, "node_modules/@storybook/addon-themes": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.5.2.tgz", - "integrity": "sha512-MTJkPwXqLK2Co186EUw2wr+1CpVRMbuWsOmQvhMHeU704kQtSYKkhu/xmaExuDYMupn5xiKG0p8Pt5Ck3fEObQ==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.3.tgz", + "integrity": "sha512-UTEsn241v9PpnOR6LEUkPlZ8nzLZeNJGcJZqZKHeAjW+Ag0pXnzvO1QUFxjHuP7i5olzRQh4n2UlWeN/DfLvjw==", "dev": true, "license": "MIT", "dependencies": { @@ -5362,13 +5139,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.6.3" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.5.2.tgz", - "integrity": "sha512-W+7nrMQmxHcUNGsXjmb/fak1mD0a5vf4y1hBhSM7/131t8KBsvEu4ral8LTUhc4ZzuU1eIUM0Qth7SjqHqm5bA==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.3.tgz", + "integrity": "sha512-AixZKiQdBVs7ePj5iV0U1IY2jvH0G7wQJwBRTOq4qC1FKiOsZEYmrwc3wLUBUlVqyenXFKN+H40r4VhPzzSfLw==", "dev": true, "license": "MIT", "dependencies": { @@ -5379,30 +5156,31 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.6.3" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-2.0.0.tgz", - "integrity": "sha512-8lL6vzXMgBFYQ89TFNPG4KjQ1WcRjKOubCTsnv0lRWC6KbF1ipyMFiEDpHOxxHbKhfk2kvQKZVqt8KLNV5zwcg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-2.1.0.tgz", + "integrity": "sha512-mCzNtuqY8LJqj/2vW12o3S/UujRSBFstxRqhOUErrbbOBRyM6RgcPuvytDdRv1npFi8OaKOIz3SoJBT/EtAN3A==", "dev": true, + "license": "MIT", "dependencies": { - "@swc/core": "^1.7.3", - "swc-loader": "^0.2.3" + "@swc/core": "^1.10.8", + "swc-loader": "^0.2.6" }, "engines": { "node": ">=18" } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.5.2.tgz", - "integrity": "sha512-P4zpavhy9cL1GtITlFp1amTgNSfaQyi60jJwi7joUj0z4RRyBr8YpGi5il9PlaxiY2HROsCdKJftTNzWn058yA==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.3.tgz", + "integrity": "sha512-+Er6wFbi6O1xAqSsCZwqMcOfKM90n2jYDgSixYTsgqhjEcKLvCX9sn5akyRB1pPl5cGq4zBDIG4l9aLzZLLC3Q==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.5.2", + "@storybook/core-webpack": "8.6.3", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", @@ -5432,7 +5210,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.6.3" }, "peerDependenciesMeta": { "typescript": { @@ -5441,9 +5219,9 @@ } }, "node_modules/@storybook/components": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.5.2.tgz", - "integrity": "sha512-o5vNN30sGLTJBeGk5SKyekR4RfTpBTGs2LDjXGAmpl2MRhzd62ix8g+KIXSR0rQ55TCvKUl5VR2i99ttlRcEKw==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.3.tgz", + "integrity": "sha512-q5DQkV+E/j0KfF818RywgqEHjaZTg71q5YY4z0UO8CRSzDQ/VYF6L76oc69corbkJtYAk/GqaYJllzrWykS4sg==", "dev": true, "license": "MIT", "funding": { @@ -5455,16 +5233,16 @@ } }, "node_modules/@storybook/core": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.5.2.tgz", - "integrity": "sha512-rCOpXZo2XbdKVnZiv8oC9FId/gLkStpKGGL7hhdg/RyjcyUyTfhsvaf7LXKZH2A0n/UpwFxhF3idRfhgc1XiSg==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.3.tgz", + "integrity": "sha512-0iMTfmo3UFCa1hFJLtThnRIppkIpGPyTL3MElhORP1t5l9lCUq5am0ymbi/TeCbsJPjE86FjeO0NinokL9iQiw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf": "0.1.12", + "@storybook/theming": "8.6.3", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", "esbuild-register": "^3.5.0", "jsdoc-type-pratt-parser": "^4.0.0", "process": "^0.11.10", @@ -5487,9 +5265,9 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.5.2.tgz", - "integrity": "sha512-r+s3zNojxl370CCCmvj0A+N27fW6zjRODQ7jsHWGSQzTDIz5Vj68rJBIOffr/27nN9r/JtbXbwxuO2UfqMqcqA==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.3.tgz", + "integrity": "sha512-JYrHPwgyiXa4BgfkrUIDyl5Dp1I7xZG+GV7z0m/2wCn1PcDrDJ8iRl2HHbVbHZXYRK3zSp84iRjdBK4DF94HGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5500,17 +5278,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" - } - }, - "node_modules/@storybook/core/node_modules/@storybook/csf": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.12.tgz", - "integrity": "sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^2.19.0" + "storybook": "^8.6.3" } }, "node_modules/@storybook/csf": { @@ -5530,10 +5298,28 @@ "dev": true, "license": "MIT" }, + "node_modules/@storybook/instrumenter": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.3.tgz", + "integrity": "sha512-Y5n6JWCWdOqok08Hgklsc98TBoqROhAhBRSzNWuIaLsRhz8EziXQtuEkWqmVbyYOys25iTZiK3S8+QQkOzGrBw==", + "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.6.3" + } + }, "node_modules/@storybook/manager-api": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.5.2.tgz", - "integrity": "sha512-Cn+oINA6BOO2GmGHinGsOWnEpoBnurlZ9ekMq7H/c1SYMvQWNg5RlELyrhsnyhNd83fqFZy9Asb0RXI8oqz7DQ==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.3.tgz", + "integrity": "sha512-7m9MQELc6XpuKIuliqMiQWzl8yVWpUDwTcpr+rTT7l3OfRzw7Y00UFct2tI03YG6EXsxsykw8EmueMQhe0lG5Q==", "dev": true, "license": "MIT", "funding": { @@ -5545,9 +5331,9 @@ } }, "node_modules/@storybook/node-logger": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.4.7.tgz", - "integrity": "sha512-bsNMy9RgN4jVw5MMHMf0T04dX8a1lLTWq4iZoZkfdbshDKn5Z16brzPVwhFg2IE0YTEZi9XyA1NJLPgUTCcp7g==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.6.3.tgz", + "integrity": "sha512-rIq2mWv1lDmBpPNCf4FcBe4D8Ik458GIPxSUZHoOxLmEElOzncixiGWpRKUCycOXpD8f3lZaxgZjYZqVmdeW7A==", "dev": true, "license": "MIT", "funding": { @@ -5559,14 +5345,14 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.5.2.tgz", - "integrity": "sha512-CpRunaOl4tB7Z+1dQEG/LSAdwnCZCaKdfn+Q71k6Pk1vpR6aFlhVbbVP5kgt47vimHDKYKYBQKudP+5IjJNvFA==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.3.tgz", + "integrity": "sha512-ROZdvtRm0jtApA21DQa4q5FkG3EPiHdYEWp01DxtGQrenl8YV4JBF3va9sYcPFki2gW+lx/iVpAcHfIAR7PS2Q==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.5.2", - "@storybook/react": "8.5.2", + "@storybook/core-webpack": "8.6.3", + "@storybook/react": "8.6.3", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/semver": "^7.3.4", "find-up": "^5.0.0", @@ -5587,7 +5373,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.5.2" + "storybook": "^8.6.3" }, "peerDependenciesMeta": { "typescript": { @@ -5596,9 +5382,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.5.2.tgz", - "integrity": "sha512-AOOaBjwnkFU40Fi68fvAnK0gMWPz6o/AmH44yDGsHgbI07UgqxLBKCTpjCGPlyQd5ezEjmGwwFTmcmq5dG8DKA==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.3.tgz", + "integrity": "sha512-y2Ic6eHBQD/AwaCHctKOJ4tOM1r7/mPXfhGh0I+Qf8kZPlDTgQcJ6Z7/Ruma1L+ijXPBWouDaPw51gipcX+t9Q==", "dev": true, "license": "MIT", "funding": { @@ -5610,18 +5396,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.5.2.tgz", - "integrity": "sha512-hWzw9ZllfzsaBJdAoEqPQ2GdVNV4c7PkvIWM6z67epaOHqsdsKScbTMe+YAvFMPtLtOO8KblIrtU5PeD4KyMgw==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.3.tgz", + "integrity": "sha512-B4WYRWU2Y71UWl4CG3+mcB7duNln9finJyDB8Y1o2CYWUxgEo+3Bnp3k7NUr++tYVkZI1H+28UWeX0rpCkvReQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.5.2", + "@storybook/components": "8.6.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.5.2", - "@storybook/preview-api": "8.5.2", - "@storybook/react-dom-shim": "8.5.2", - "@storybook/theming": "8.5.2" + "@storybook/manager-api": "8.6.3", + "@storybook/preview-api": "8.6.3", + "@storybook/react-dom-shim": "8.6.3", + "@storybook/theming": "8.6.3" }, "engines": { "node": ">=18.0.0" @@ -5631,10 +5417,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.5.2", + "@storybook/test": "8.6.3", "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.5.2", + "storybook": "^8.6.3", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5667,9 +5453,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.5.2.tgz", - "integrity": "sha512-lt7XoaeWI8iPlWnWzIm/Wam9TpRFhlqP0KZJoKwDyHiCByqkeMrw5MJREyWq626nf34bOW8D6vkuyTzCHGTxKg==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.3.tgz", + "integrity": "sha512-vE3LA2TxbzDF1Fso2IgvUtoHc+8a6laKhuJdx8frP5A8M1KGOBfuEPFCCcE49Q90HUlDgwb/zQl1GNq/QjLgWQ==", "dev": true, "license": "MIT", "funding": { @@ -5679,19 +5465,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.5.2" + "storybook": "^8.6.3" } }, "node_modules/@storybook/react-webpack5": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.5.2.tgz", - "integrity": "sha512-OrHaOSaabqOJ3433B0Ea5gVhsR1WaZRs49Y+S/z33VX9iILlougXVx9zNPoeZzgDSG4xEEn2uimFpjjcLLkWzA==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.3.tgz", + "integrity": "sha512-T4dpvXUMiG7zMLZcFuJNshMr9rUulowl2AyqLd2LjQtN32COAzhn6uKJkFycTHkOMM8qC03WNefc55MNJVtr/w==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.5.2", - "@storybook/preset-react-webpack": "8.5.2", - "@storybook/react": "8.5.2" + "@storybook/builder-webpack5": "8.6.3", + "@storybook/preset-react-webpack": "8.6.3", + "@storybook/react": "8.6.3" }, "engines": { "node": ">=18.0.0" @@ -5703,7 +5489,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.5.2", + "storybook": "^8.6.3", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5712,10 +5498,148 @@ } } }, + "node_modules/@storybook/test": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.3.tgz", + "integrity": "sha512-UimvhV/PmYoXCwIbGpkyqQfMhjdH2GaHJbV6BWr7M7BHA3kUS6zYJAm2V2CC5SYcmyj7FejLB4tgL7FmLXB6hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.6.3", + "@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.6.3" + } + }, + "node_modules/@storybook/test/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/test/node_modules/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "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", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "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.5.2", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.5.2.tgz", - "integrity": "sha512-vro8vJx16rIE0UehawEZbxFFA4/VGYS20PMKP6Y6Fpsce0t2/cF/U9qg3jOzVb/XDwfx+ne3/V+8rjfWx8wwJw==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.3.tgz", + "integrity": "sha512-sDcWnnko73KOCIc9stQyec9KvTmGOuMswqeKtWh0ha/wsgYB6G2/2j1xOheFmWKPitOsbwgvqtjCP7bRE68uIA==", "dev": true, "license": "MIT", "funding": { @@ -5727,15 +5651,15 @@ } }, "node_modules/@swc/core": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.2.tgz", - "integrity": "sha512-d3reIYowBL6gbp4jC6FRZ3hE0eWcWwqh0XcHd6k5rKF/oZA6jLb7gxIRduJhrn+jyLz/HCC8WyfomUkEcs7iZQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.5.tgz", + "integrity": "sha512-EVY7zfpehxhTZXOfy508gb3D78ihoGGmvyiTWtlBPjgIaidP1Xw0naHMD78CWiFlZmeDjKXJufGtsEGOnZdmNA==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.17" + "@swc/types": "^0.1.19" }, "engines": { "node": ">=10" @@ -5745,16 +5669,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.10.2", - "@swc/core-darwin-x64": "1.10.2", - "@swc/core-linux-arm-gnueabihf": "1.10.2", - "@swc/core-linux-arm64-gnu": "1.10.2", - "@swc/core-linux-arm64-musl": "1.10.2", - "@swc/core-linux-x64-gnu": "1.10.2", - "@swc/core-linux-x64-musl": "1.10.2", - "@swc/core-win32-arm64-msvc": "1.10.2", - "@swc/core-win32-ia32-msvc": "1.10.2", - "@swc/core-win32-x64-msvc": "1.10.2" + "@swc/core-darwin-arm64": "1.11.5", + "@swc/core-darwin-x64": "1.11.5", + "@swc/core-linux-arm-gnueabihf": "1.11.5", + "@swc/core-linux-arm64-gnu": "1.11.5", + "@swc/core-linux-arm64-musl": "1.11.5", + "@swc/core-linux-x64-gnu": "1.11.5", + "@swc/core-linux-x64-musl": "1.11.5", + "@swc/core-win32-arm64-msvc": "1.11.5", + "@swc/core-win32-ia32-msvc": "1.11.5", + "@swc/core-win32-x64-msvc": "1.11.5" }, "peerDependencies": { "@swc/helpers": "*" @@ -5766,9 +5690,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.2.tgz", - "integrity": "sha512-xPDbCUfGdVjA/0yhRFVSyog73wO3/W3JNgx1PkOcCc+0OgZtgAnt4YD8QbSsUE+euc5bQJs/7HfJQ3305+HWVA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.5.tgz", + "integrity": "sha512-GEd1hzEx0mSGkJYMFMGLnrGgjL2rOsOsuYWyjyiA3WLmhD7o+n/EWBDo6mzD/9aeF8dzSPC0TnW216gJbvrNzA==", "cpu": [ "arm64" ], @@ -5783,9 +5707,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.2.tgz", - "integrity": "sha512-Dm4R9ffQw4yrGjvdYxxuO5RViwkRkSsn64WF7YGYZIlhkyFoseibPnQlOsx5qnjquc8f3h1C8/806XG+y3rMaQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.5.tgz", + "integrity": "sha512-toz04z9wAClVvQSEY3xzrgyyeWBAfMWcKG4K0ugNvO56h/wczi2ZHRlnAXZW1tghKBk3z6MXqa/srfXgNhffKw==", "cpu": [ "x64" ], @@ -5800,9 +5724,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.2.tgz", - "integrity": "sha512-aXTqgel7AueM7CcCOFFUq6+gJyD/A3rFBWxPT6wA34IC7oQ0IIFpJjBLl8zN6/0aZ4OQ1ExlQ7zoKaTlk5tBug==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.5.tgz", + "integrity": "sha512-5SjmKxXdwbBpsYGTpgeXOXMIjS563/ntRGn8Zc12H/c4VfPrRLGhgbJ/48z2XVFyBLcw7BCHZyFuVX1+ZI3W0Q==", "cpu": [ "arm" ], @@ -5817,9 +5741,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.2.tgz", - "integrity": "sha512-HYFag6ULpnVMnHuKKAFuZH3kco/2eKKZ24I+gI2M4JlIW4soDmP8Oc2eAADIloln4SfQXzADX34m6merCWp65g==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.5.tgz", + "integrity": "sha512-pydIlInHRzRIwB0NHblz3Dx58H/bsi0I5F2deLf9iOmwPNuOGcEEZF1Qatc7YIjP5DFbXK+Dcz+pMUZb2cc2MQ==", "cpu": [ "arm64" ], @@ -5834,9 +5758,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.2.tgz", - "integrity": "sha512-N8es+V+M9GijYsxfiIG3NJ+lHgoZosX+yjblc5eOx0xrBDeqH3kNLhJpctOczrJk0rUjN+zX5x+8H8qurcEAaw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.5.tgz", + "integrity": "sha512-LhBHKjkZq5tJF1Lh0NJFpx7ROnCWLckrlIAIdSt9XfOV+zuEXJQOj+NFcM1eNk17GFfFyUMOZyGZxzYq5dveEQ==", "cpu": [ "arm64" ], @@ -5851,9 +5775,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.2.tgz", - "integrity": "sha512-fI4rxJkWQaNeG4UcuqKJrc1JM+nAwIzzFba9+A4Aohc6z0EgPokrA1v7WmPUObO+cdZjVXdMpDGkhGQhbok1aQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.5.tgz", + "integrity": "sha512-dCi4xkxXlsk5sQYb3i413Cfh7+wMJeBYTvBZTD5xh+/DgRtIcIJLYJ2tNjWC4/C2i5fj+Ze9bKNSdd8weRWZ3A==", "cpu": [ "x64" ], @@ -5868,9 +5792,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.2.tgz", - "integrity": "sha512-ycDOxBgII/2xkusMgq2S9n81IQ8SeWk1FU0zuUsZrUkaXEq/78+nHFo/0IStPLrtRxzG2gJ0JZvfaa6jMxr79Q==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.5.tgz", + "integrity": "sha512-K0AC4TreM5Oo/tXNXnE/Gf5+5y/HwUdd7xvUjOpZddcX/RlsbYOKWLgOtA3fdFIuta7XC+vrGKmIhm5l70DSVQ==", "cpu": [ "x64" ], @@ -5885,9 +5809,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.2.tgz", - "integrity": "sha512-s7/UrbdfYGdUar+Nj8jxNeXaFdryWnKuJU5udDONgk9gb1xp7K5TPxBL9j7EtCrAenM2sR9Bd84ZemwzyZ/VLw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.5.tgz", + "integrity": "sha512-wzum8sYUsvPY7kgUfuqVYTgIPYmBC8KPksoNM1fz5UfhudU0ciQuYvUBD47GIGOevaoxhLkjPH4CB95vh1mJ9w==", "cpu": [ "arm64" ], @@ -5902,9 +5826,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.2.tgz", - "integrity": "sha512-sz8f+dmrzb816Ji25G+vs8HMq6zHq1IMKF4hVUnSJKdNr2k789+qRjF1fnv3YDcz5kkeYSvolXqVS1mCezDebg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.5.tgz", + "integrity": "sha512-lco7mw0TPRTpVPR6NwggJpjdUkAboGRkLrDHjIsUaR+Y5+0m5FMMkHOMxWXAbrBS5c4ph7QErp4Lma4r9Mn5og==", "cpu": [ "ia32" ], @@ -5919,9 +5843,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.2.tgz", - "integrity": "sha512-XXYHuc5KdhuLx1nP8cEKW+5Kakxy+iq/jcuJ52+27E2uB+xxzLeXvbPvz645je3Cti5nQ4la2HIn6tpST5ufSw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.5.tgz", + "integrity": "sha512-E+DApLSC6JRK8VkDa4bNsBdD7Qoomx1HvKVZpOXl9v94hUZI5GMExl4vU5isvb+hPWL7rZ0NeI7ITnVLgLJRbA==", "cpu": [ "x64" ], @@ -5951,9 +5875,9 @@ } }, "node_modules/@swc/types": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.17.tgz", - "integrity": "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==", + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.19.tgz", + "integrity": "sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6327,16 +6251,6 @@ "@types/json-schema": "*" } }, - "node_modules/@types/eslint__js": { - "version": "8.42.3", - "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", - "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*" - } - }, "node_modules/@types/eslint-scope": { "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", @@ -6511,16 +6425,17 @@ "license": "MIT" }, "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "license": "MIT" }, "node_modules/@types/node": { - "version": "22.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.3.tgz", - "integrity": "sha512-DifAyw4BkrufCILvD3ucnuN8eydUfc/C1GlyrnI+LK6543w5/L3VeVgf05o3B4fqSXP1dKYLOZsKfutpxPzZrw==", + "version": "22.13.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.8.tgz", + "integrity": "sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==", "devOptional": true, + "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } @@ -6532,32 +6447,24 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/prop-types": { - "version": "15.7.14", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", - "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", - "devOptional": true, - "license": "MIT" - }, "node_modules/@types/react": { - "version": "18.3.18", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", - "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "version": "19.0.10", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", + "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", "devOptional": true, "license": "MIT", "dependencies": { - "@types/prop-types": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", - "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", + "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", "devOptional": true, "license": "MIT", "peerDependencies": { - "@types/react": "^18.0.0" + "@types/react": "^19.0.0" } }, "node_modules/@types/resolve": { @@ -6605,7 +6512,8 @@ "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==" + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" }, "node_modules/@types/unist": { "version": "3.0.3", @@ -6631,20 +6539,21 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz", - "integrity": "sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", + "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.19.0", - "@typescript-eslint/type-utils": "8.19.0", - "@typescript-eslint/utils": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/type-utils": "8.25.0", + "@typescript-eslint/utils": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6660,15 +6569,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.0.tgz", - "integrity": "sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", + "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.19.0", - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/typescript-estree": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", "debug": "^4.3.4" }, "engines": { @@ -6684,13 +6594,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz", - "integrity": "sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz", + "integrity": "sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0" + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6701,15 +6612,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz", - "integrity": "sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", + "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.19.0", - "@typescript-eslint/utils": "8.19.0", + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/utils": "8.25.0", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6724,10 +6636,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.0.tgz", - "integrity": "sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.25.0.tgz", + "integrity": "sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -6737,19 +6650,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz", - "integrity": "sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", + "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.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" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6762,59 +6676,17 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/typescript-estree/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, - "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/@typescript-eslint/typescript-estree/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, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/utils": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.0.tgz", - "integrity": "sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", + "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.19.0", - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/typescript-estree": "8.19.0" + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6829,12 +6701,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz", - "integrity": "sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz", + "integrity": "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/types": "8.25.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -6845,10 +6718,23 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/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/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, "node_modules/@vcarl/remark-headings": { @@ -6910,9 +6796,9 @@ } }, "node_modules/@vercel/analytics": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.4.1.tgz", - "integrity": "sha512-ekpL4ReX2TH3LnrRZTUKjHHNpNy9S1I7QmS+g/RQXoSUQ8ienzosuX7T9djZ/s8zPhBx1mpHP/Rw5875N+zQIQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.5.0.tgz", + "integrity": "sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==", "license": "MPL-2.0", "peerDependencies": { "@remix-run/react": "^2", @@ -6966,9 +6852,9 @@ } }, "node_modules/@vercel/speed-insights": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.1.0.tgz", - "integrity": "sha512-rAXxuhhO4mlRGC9noa5F7HLMtGg8YF1zAN6Pjd1Ny4pII4cerhtwSG4vympbCl+pWkH7nBS9kVXRD4FAn54dlg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.2.0.tgz", + "integrity": "sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw==", "hasInstallScript": true, "license": "Apache-2.0", "peerDependencies": { @@ -7046,9 +6932,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", - "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7072,13 +6958,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", - "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", + "@vitest/pretty-format": "2.1.9", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, @@ -7728,6 +7614,16 @@ "astring": "bin/astring" } }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -8129,9 +8025,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", - "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -8213,6 +8109,27 @@ "node": ">=10.16.0" } }, + "node_modules/cacheable": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.8.tgz", + "integrity": "sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.7.0", + "keyv": "^5.2.3" + } + }, + "node_modules/cacheable/node_modules/keyv": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.2.3.tgz", + "integrity": "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.0.2" + } + }, "node_modules/cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -8243,9 +8160,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8313,9 +8230,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "version": "1.0.30001701", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001701.tgz", + "integrity": "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==", "funding": [ { "type": "opencollective", @@ -8353,9 +8270,9 @@ } }, "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, "license": "MIT", "dependencies": { @@ -8514,9 +8431,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "license": "MIT" }, "node_modules/classnames": { @@ -8848,6 +8765,59 @@ "node": ">= 12" } }, + "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", @@ -9332,9 +9302,9 @@ } }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", "license": "MIT" }, "node_modules/decode-named-character-reference": { @@ -9351,11 +9321,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", @@ -9665,9 +9642,10 @@ } }, "node_modules/dompurify": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.3.tgz", - "integrity": "sha512-U1U5Hzc2MO0oW3DF+G9qYN0aT7atAou4AgI0XjWz061nyBPbdxkfdhfy5uMgGn6+oLFCfn44ZGbdDqCzVmlOWA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", + "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", + "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" } @@ -9720,9 +9698,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.109", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.109.tgz", + "integrity": "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==", "license": "ISC" }, "node_modules/emittery": { @@ -9762,10 +9740,17 @@ "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.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "devOptional": true, "license": "MIT", "dependencies": { @@ -9826,9 +9811,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", - "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "license": "MIT", "dependencies": { @@ -9843,10 +9828,11 @@ "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -9867,9 +9853,12 @@ "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", + "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -9943,9 +9932,9 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { @@ -9956,28 +9945,32 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -10031,9 +10024,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -10044,31 +10037,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" } }, "node_modules/esbuild-register": { @@ -10137,21 +10130,22 @@ } }, "node_modules/eslint": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", - "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", + "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/config-array": "^0.19.2", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.21.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -10196,13 +10190,13 @@ } }, "node_modules/eslint-config-next": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.1.3.tgz", - "integrity": "sha512-wGYlNuWnh4ujuKtZvH+7B2Z2vy9nONZE6ztd+DKF7hAsIabkrxmD4TzYHzASHENo42lmz2tnT2B+zN2sOHvpJg==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.0.tgz", + "integrity": "sha512-LkG0KKpinAoNPk2HXSx0fImFb/hQ6RnhSxTkpJFTkQ0SmnzsbRsjjN95WC/mDY34nKOenpptYEVvfkCR/h+VjA==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.1.3", + "@next/eslint-plugin-next": "15.2.0", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -10223,16 +10217,6 @@ } } }, - "node_modules/eslint-config-next/node_modules/@next/eslint-plugin-next": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.3.tgz", - "integrity": "sha512-oeP1vnc5Cq9UoOb8SYHAEPbCXMzOgG70l+Zfd+Ie00R25FOm+CCVNrcIubJvB1tvBgakXE37MmqSycksXVPRqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "3.3.1" - } - }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -10256,19 +10240,19 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz", - "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.3.tgz", + "integrity": "sha512-A0bu4Ks2QqDWNpeEgTQMPTngaMhuDu4yv6xpftBMAf+1ziXnpx+eSR1WRfoPTe2BAiAjHFZ7kSNx1fvr5g5pmQ==", "dev": true, + "license": "ISC", "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.3.7", "enhanced-resolve": "^5.15.0", - "fast-glob": "^3.3.2", - "get-tsconfig": "^4.7.5", + "get-tsconfig": "^4.10.0", "is-bun-module": "^1.0.2", - "is-glob": "^4.0.3", - "stable-hash": "^0.0.4" + "stable-hash": "^0.0.4", + "tinyglobby": "^0.2.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -10290,36 +10274,6 @@ } } }, - "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": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.1.5.tgz", @@ -10349,21 +10303,8 @@ "type": "opencollective", "url": "https://opencollective.com/unified" }, - "peerDependencies": { - "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" + "peerDependencies": { + "eslint": ">=8.0.0" } }, "node_modules/eslint-mdx/node_modules/espree": { @@ -10451,6 +10392,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.6.1.tgz", "integrity": "sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==", "dev": true, + "license": "MIT", "dependencies": { "@types/doctrine": "^0.0.9", "@typescript-eslint/scope-manager": "^8.1.0", @@ -10486,22 +10428,6 @@ "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "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", @@ -10871,16 +10797,16 @@ } }, "node_modules/eslint-plugin-no-relative-import-paths": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-relative-import-paths/-/eslint-plugin-no-relative-import-paths-1.5.5.tgz", - "integrity": "sha512-UjudFFdBbv93v0CsVdEKcMLbBzRIjeK2PubTctX57tgnHxZcMj1Jm8lDBWoETnPxk0S5g5QLSltEM+511yL4+w==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-relative-import-paths/-/eslint-plugin-no-relative-import-paths-1.6.1.tgz", + "integrity": "sha512-YZNeOnsOrJcwhFw0X29MXjIzu2P/f5X2BZDPWw1R3VUYBRFxNIh77lyoL/XrMU9ewZNQPcEvAgL/cBOT1P330A==", "dev": true, "license": "ISC" }, "node_modules/eslint-plugin-react": { - "version": "7.37.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", - "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10911,10 +10837,11 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", - "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10974,24 +10901,6 @@ "semver": "bin/semver.js" } }, - "node_modules/eslint-plugin-storybook": { - "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": { - "@storybook/csf": "^0.1.11", - "@typescript-eslint/utils": "^8.8.1", - "ts-dedent": "^2.2.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "eslint": ">=6" - } - }, "node_modules/eslint-scope": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", @@ -11010,13 +10919,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" @@ -11116,6 +11025,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11177,6 +11099,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", @@ -11466,17 +11401,16 @@ "license": "MIT" }, "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, + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "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" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -11486,7 +11420,6 @@ "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" @@ -11506,7 +11439,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -11517,10 +11450,20 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { @@ -11534,9 +11477,9 @@ } }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -11718,29 +11661,35 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -11922,14 +11871,15 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -12075,22 +12025,22 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -12118,6 +12068,20 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -12150,9 +12114,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, "license": "MIT", "dependencies": { @@ -12169,22 +12133,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.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "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" @@ -12209,28 +12174,19 @@ "devOptional": true, "license": "BSD-2-Clause" }, - "node_modules/glob/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/glob/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": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/global-directory": { @@ -12576,9 +12532,9 @@ } }, "node_modules/hast-util-to-estree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", - "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.2.tgz", + "integrity": "sha512-94SDoKOfop5gP8RHyw4vV1aj+oChuD42g08BONGAaWFbbO6iaWUqxk7SWfGybgcVzhK16KifZr3zD2dqQgx3jQ==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -12592,9 +12548,9 @@ "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.0", + "style-to-object": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" }, @@ -12603,25 +12559,10 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-estree/node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", - "license": "MIT" - }, - "node_modules/hast-util-to-estree/node_modules/style-to-object": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", - "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, "node_modules/hast-util-to-html": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", - "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -12631,7 +12572,7 @@ "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" @@ -12642,9 +12583,9 @@ } }, "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz", - "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.5.tgz", + "integrity": "sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -12657,7 +12598,7 @@ "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-object": "^1.0.0", "unist-util-position": "^5.0.0", @@ -12708,6 +12649,7 @@ "version": "11.11.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" } @@ -12725,6 +12667,13 @@ "node": ">=0.10.0" } }, + "node_modules/hookified": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.7.1.tgz", + "integrity": "sha512-OXcdHsXeOiD7OJ5zvWj8Oy/6RCdLwntAX+wUrfemNcMGn6sux4xbEHi2QXwqePYhjQ/yvxxq2MvCRirdlHscBw==", + "dev": true, + "license": "MIT" + }, "node_modules/hosted-git-info": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", @@ -13002,9 +12951,9 @@ } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -13027,13 +12976,13 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.12.0.tgz", - "integrity": "sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.1.tgz", + "integrity": "sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==", "license": "Apache-2.0", "peer": true, "dependencies": { - "acorn": "^8.8.2", + "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" @@ -13245,14 +13194,14 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.10", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.10.tgz", - "integrity": "sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==", + "version": "10.7.15", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.15.tgz", + "integrity": "sha512-LRyExsEsefQSBjU2p47oAheoKz+EOJxSLDdjOaEjdriajfHsMXOmV/EhMvYSg9bAgCUHasuAC+mcUBe/95PfIg==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/fast-memoize": "2.2.5", - "@formatjs/icu-messageformat-parser": "2.9.7", + "@formatjs/ecma402-abstract": "2.3.3", + "@formatjs/fast-memoize": "2.2.6", + "@formatjs/icu-messageformat-parser": "2.11.1", "tslib": "2" } }, @@ -13322,13 +13271,17 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -13366,13 +13319,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -13569,13 +13522,16 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -13830,13 +13786,13 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -14019,17 +13975,17 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", - "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", "has-symbols": "^1.1.0", - "reflect.getprototypeof": "^1.0.8", "set-function-name": "^2.0.2" }, "engines": { @@ -14037,9 +13993,9 @@ } }, "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", + "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -14178,21 +14134,6 @@ "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 - } - } - }, "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", @@ -14423,6 +14364,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "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": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -14460,6 +14412,28 @@ "dev": true, "license": "MIT" }, + "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": "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/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -14467,7 +14441,20 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "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": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/jest-config/node_modules/pretty-format": { @@ -15505,6 +15492,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "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": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -15542,6 +15540,28 @@ "dev": true, "license": "MIT" }, + "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": "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/jest-runtime/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -15552,6 +15572,19 @@ "node": ">=8" } }, + "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": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "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", @@ -16351,25 +16384,27 @@ "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.3.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.3.0.tgz", - "integrity": "sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==", - "dependencies": { - "chalk": "~5.4.1", - "commander": "~12.1.0", - "debug": "~4.4.0", - "execa": "~8.0.1", - "lilconfig": "~3.1.3", - "listr2": "~8.2.5", - "micromatch": "~4.0.8", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.6.1" + "version": "15.4.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", + "integrity": "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==", + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -16385,6 +16420,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -16393,9 +16429,9 @@ } }, "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==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "license": "MIT", "engines": { "node": ">=18" @@ -16623,6 +16659,7 @@ "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", @@ -16633,6 +16670,7 @@ "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", @@ -16643,6 +16681,7 @@ "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" } @@ -17046,6 +17085,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -17055,9 +17095,9 @@ } }, "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, "license": "MIT" }, @@ -17169,6 +17209,7 @@ "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", @@ -17195,6 +17236,7 @@ "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" }, @@ -17206,6 +17248,7 @@ "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" } @@ -17247,14 +17290,15 @@ } }, "node_modules/mdast-util-directive": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", - "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", + "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", @@ -17268,9 +17312,9 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", - "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -17365,9 +17409,9 @@ } }, "node_modules/mdast-util-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", - "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", @@ -17401,9 +17445,9 @@ } }, "node_modules/mdast-util-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -17515,9 +17559,9 @@ } }, "node_modules/mdast-util-mdx-jsx": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", - "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -17663,7 +17707,8 @@ "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" }, "node_modules/memfs": { "version": "3.5.3", @@ -17724,9 +17769,9 @@ } }, "node_modules/micromark": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", - "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", "funding": [ { "type": "GitHub Sponsors", @@ -17759,9 +17804,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", - "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", "funding": [ { "type": "GitHub Sponsors", @@ -17884,9 +17929,9 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", - "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -18406,9 +18451,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", - "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", "funding": [ { "type": "GitHub Sponsors", @@ -18444,9 +18489,9 @@ "license": "MIT" }, "node_modules/micromark-util-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", - "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", "funding": [ { "type": "GitHub Sponsors", @@ -18528,15 +18573,15 @@ } }, "node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "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": "^2.0.1" }, "engines": { - "node": "20 || >=22" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -18657,12 +18702,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/next/-/next-15.1.6.tgz", - "integrity": "sha512-Hch4wzbaX0vKQtalpXvUiw5sYivBy4cm5rzUKrBnUB/y436LGrvOUqYvlSeNVCWFO/770gDlltR9gqZH62ct4Q==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.0.tgz", + "integrity": "sha512-VaiM7sZYX8KIAHBrRGSFytKknkrexNfGb8GlG6e93JqueCspuGte8i4ybn8z4ww1x3f2uzY4YpTaBEW4/hvsoQ==", "license": "MIT", "dependencies": { - "@next/env": "15.1.6", + "@next/env": "15.2.0", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -18677,14 +18722,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.1.6", - "@next/swc-darwin-x64": "15.1.6", - "@next/swc-linux-arm64-gnu": "15.1.6", - "@next/swc-linux-arm64-musl": "15.1.6", - "@next/swc-linux-x64-gnu": "15.1.6", - "@next/swc-linux-x64-musl": "15.1.6", - "@next/swc-win32-arm64-msvc": "15.1.6", - "@next/swc-win32-x64-msvc": "15.1.6", + "@next/swc-darwin-arm64": "15.2.0", + "@next/swc-darwin-x64": "15.2.0", + "@next/swc-linux-arm64-gnu": "15.2.0", + "@next/swc-linux-arm64-musl": "15.2.0", + "@next/swc-linux-x64-gnu": "15.2.0", + "@next/swc-linux-x64-musl": "15.2.0", + "@next/swc-win32-arm64-msvc": "15.2.0", + "@next/swc-win32-x64-msvc": "15.2.0", "sharp": "^0.33.5" }, "peerDependencies": { @@ -18711,9 +18756,9 @@ } }, "node_modules/next-intl": { - "version": "3.26.3", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.26.3.tgz", - "integrity": "sha512-6Y97ODrDsEE1J8cXKMHwg1laLdtkN66QMIqG8BzH4zennJRUNTtM8UMtBDyhfmF6uiZ+xsbWLXmHUgmUymUsfQ==", + "version": "3.26.5", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.26.5.tgz", + "integrity": "sha512-EQlCIfY0jOhRldiFxwSXG+ImwkQtDEfQeSOEQp6ieAGSLWGlgjdb/Ck/O7wMfC430ZHGeUKVKax8KGusTPKCgg==", "funding": [ { "type": "individual", @@ -18724,7 +18769,7 @@ "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "negotiator": "^1.0.0", - "use-intl": "^3.26.3" + "use-intl": "^3.26.5" }, "peerDependencies": { "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", @@ -18956,9 +19001,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -19101,14 +19146,14 @@ } }, "node_modules/oniguruma-to-es": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", - "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", "license": "MIT", "dependencies": { "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" } }, "node_modules/open": { @@ -19257,6 +19302,24 @@ "node": ">=0.10.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -19633,9 +19696,9 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "license": "MIT", "engines": { @@ -19643,9 +19706,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "funding": [ { "type": "opencollective", @@ -19662,7 +19725,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -19709,12 +19772,12 @@ } }, "node_modules/postcss-calc": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.2.tgz", - "integrity": "sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.1.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -19894,20 +19957,6 @@ "postcss": "^8.1.0" } }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "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" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-modules-scope": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", @@ -19924,20 +19973,6 @@ "postcss": "^8.1.0" } }, - "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "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" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-modules-values": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", @@ -19979,6 +20014,19 @@ "postcss": "^8.2.14" } }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", @@ -20014,9 +20062,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -20069,10 +20117,11 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -20084,9 +20133,9 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", - "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", + "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", "dev": true, "license": "MIT", "engines": { @@ -20097,7 +20146,7 @@ "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", - "@zackad/prettier-plugin-twig-melody": "*", + "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", @@ -20124,7 +20173,7 @@ "@trivago/prettier-plugin-sort-imports": { "optional": true }, - "@zackad/prettier-plugin-twig-melody": { + "@zackad/prettier-plugin-twig": { "optional": true }, "prettier-plugin-astro": { @@ -20276,9 +20325,9 @@ "license": "MIT" }, "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", "license": "MIT", "funding": { "type": "github", @@ -20302,7 +20351,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -20312,6 +20361,7 @@ "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" } @@ -20408,13 +20458,10 @@ } }, "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, "engines": { "node": ">=0.10.0" } @@ -20465,16 +20512,15 @@ } }, "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" + "scheduler": "^0.25.0" }, "peerDependencies": { - "react": "^18.3.1" + "react": "^19.0.0" } }, "node_modules/react-is": { @@ -20485,16 +20531,16 @@ "license": "MIT" }, "node_modules/react-remove-scroll": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.2.tgz", - "integrity": "sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", + "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", "license": "MIT", "dependencies": { "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.1", + "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.2" + "use-sidecar": "^1.1.3" }, "engines": { "node": ">=10" @@ -20620,9 +20666,9 @@ "license": "MIT" }, "node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "version": "0.23.10", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.10.tgz", + "integrity": "sha512-mbCmRMJUKCJ1h41V0cu2C26ULBURwuoZ34C9rChjcDaeJ/4Kv5al3O2HPwTs2m0wQ1vGhMY+tguhzU1aE8md1A==", "dev": true, "license": "MIT", "dependencies": { @@ -20738,19 +20784,19 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", - "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "dunder-proto": "^1.0.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" }, "engines": { @@ -20768,21 +20814,20 @@ "license": "MIT" }, "node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" } }, "node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", "license": "MIT", "dependencies": { - "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, @@ -20793,15 +20838,17 @@ "license": "MIT" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -20889,9 +20936,9 @@ } }, "node_modules/remark-gfm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", - "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -20907,9 +20954,9 @@ } }, "node_modules/remark-lint": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.0.tgz", - "integrity": "sha512-E8yHHDOJ8b+qI0G49BRu24pe8t0fNNBWv8ENQJpCGNrVeTeyBIGEbaUe1yuF7OG8faA6PVpcN/pqWjzW9fcBWQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.1.tgz", + "integrity": "sha512-1+PYGFziOg4pH7DDf1uMd4AR3YuO2EMnds/SdIWMPGT7CAfDRSnAmpxPsJD0Ds3IKpn97h3d5KPGf1WFOg6hXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -20923,9 +20970,9 @@ } }, "node_modules/remark-lint-blockquote-indentation": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.0.tgz", - "integrity": "sha512-hdUvn+KsJbBKpY9jLY01PmfpJ/WGhLu9GJMXQGU8ADXJc+F5DWSgKAr6GQ1IUKqvGYdEML/KZ61WomWFUuecVA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.1.tgz", + "integrity": "sha512-7BhOsImFgTD7IIliu2tt+yJbx5gbMbXCOspc3VdYf/87iLJdWKqJoMy2V6DZG7kBjBlBsIZi38fDDngJttXt4w==", "dev": true, "license": "MIT", "dependencies": { @@ -20942,9 +20989,9 @@ } }, "node_modules/remark-lint-checkbox-character-style": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.0.tgz", - "integrity": "sha512-K0G/Nok59fb2q5KUxcemBVt+ymnhTkDVLJAatZ4PAh9At8y0DGctHdU27jWsuvO0Fs7Zy62Usk7IJE2VO89p1w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.1.tgz", + "integrity": "sha512-6qilm7XQXOcTvjFEqqNY57Ki7md9rkSdpMIfIzVXdEnI4Npl2BnUff6ANrGRM7qTgJTrloaf8H0eQ91urcU6Og==", "dev": true, "license": "MIT", "dependencies": { @@ -20961,9 +21008,9 @@ } }, "node_modules/remark-lint-checkbox-content-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.0.tgz", - "integrity": "sha512-7L25a7TEfdogFSh4HDOnB+GTTTEiXJDMlceUPft9bzIjElI8Hm2+a2D8jUQn4ahj+j/3LmdZW4GjAeyfdPuqTA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.1.tgz", + "integrity": "sha512-R1gV4vGkgJQZQFIGve1paj4mVDUWlgX0KAHhjNpSyzuwuSIDoxWpEuSJSxcnczESgcjM4yVrZqEGMYi/fqZK0w==", "dev": true, "license": "MIT", "dependencies": { @@ -20980,9 +21027,9 @@ } }, "node_modules/remark-lint-code-block-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.0.tgz", - "integrity": "sha512-LKBKMVruEO0tzDnnnqi1TfUcnwY6Mo7cVtZM4E4pKt3KMhtvgU2wD68/MxDOEJd0pmnLrEgIadv74bY0gWhZpg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.1.tgz", + "integrity": "sha512-d4mHsEpv1yqXWl2dd+28tGRX0Lzk5qw7cfxAQVkOXPUONhsMFwXJEBeeqZokeG4lOKtkKdIJR7ezScDfWR0X4w==", "dev": true, "license": "MIT", "dependencies": { @@ -20999,9 +21046,9 @@ } }, "node_modules/remark-lint-definition-spacing": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.0.tgz", - "integrity": "sha512-t6nP8unz6z/DLBTWeOmDFHPFbX3E2PbNgt2fTazRbVnMC6z3o25hBzg5hI6DL0MPt2ZTRX++rJsGRjb+vgh/tQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.1.tgz", + "integrity": "sha512-ZjShKaBUGeHrZyIZWwOZOxX3guj/P7gRR5wbDADQctL4oK+ZLQfOvJFmAsF1nD4gNr0Ficjd0AuiWxQcc1qTMA==", "dev": true, "license": "MIT", "dependencies": { @@ -21018,9 +21065,9 @@ } }, "node_modules/remark-lint-fenced-code-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.0.0.tgz", - "integrity": "sha512-Zs0wJd4nRvBo/9NWQVfWg5Ykapbo0Zzw/SyZc3f0h73S1gTZZcfeU+bA5oDivlBdcUgLBsyHRE0QaoaVvN3/Wg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.1.1.tgz", + "integrity": "sha512-hKPqowc79jrJL47AfnqDThvE8Q249nHCleR5nxuf9ybriMqcAHYxragKzU5c4W1fNy20bTfFdZz/iAAQAk9kwg==", "dev": true, "license": "MIT", "dependencies": { @@ -21037,9 +21084,9 @@ } }, "node_modules/remark-lint-fenced-code-marker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.0.tgz", - "integrity": "sha512-WFN88Rx78m4/HSbW3Kx2XAYbVfzYns4bJd9qpwDD90DA3nc59zciYd01xi6Bk3n9vSs5gIlmG7xkwxVHHJ8KCA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.1.tgz", + "integrity": "sha512-uI91OcVPKjNxV+vpjDW9T64hkE0a/CRn3JhwdMxUAJYpVsKnA7PFPSFJOx/abNsVZHNSe7ZFGgGdaH/lqgSizA==", "dev": true, "license": "MIT", "dependencies": { @@ -21056,9 +21103,9 @@ } }, "node_modules/remark-lint-file-extension": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.0.tgz", - "integrity": "sha512-wrOKiGvcl/ftB7FkeX2/l13ALvhKXV77HGR8AXo86cVY2pD+K0WdOC52DV3ldgpUXpWzE9kcgF8bbkxwzKpFFg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.1.tgz", + "integrity": "sha512-1Ca5Dgu9J/j1fb7nvzNXh2xy4ija03igiP5i4le64LfrlloGax4VWcG/M7uL+CpRTFVqEJMWw0iKDEZxYSgImg==", "dev": true, "license": "MIT", "dependencies": { @@ -21072,9 +21119,9 @@ } }, "node_modules/remark-lint-final-definition": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.1.tgz", - "integrity": "sha512-51T9oSdA7wuhjSdgGo0snO1BY39Igt9cJQi7XpgtgFsbfQk8zSSAUAc/rLabY6+YCTpcPs6qmwvLXZ4mPX6Qlg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.2.tgz", + "integrity": "sha512-fz3UAcFQef77Zb8rz4za2R6y7pdyJot22iGtFoNIKdtbcNa8IKKEVoY3NIfrsLfhrjwzcha1Sp3fFA9NF6lc4w==", "dev": true, "license": "MIT", "dependencies": { @@ -21093,9 +21140,9 @@ } }, "node_modules/remark-lint-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.0.tgz", - "integrity": "sha512-NaPyn6FiOn3IV/6gIcwWfJmgraPT2IaVLjhakfPglZkKVfn/FrOfETyY8Bp+HLoSRI9967OH0yRDnK7/pPIWeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.1.tgz", + "integrity": "sha512-q5diKHD6BMbzqWqgvYPOB8AJgLrMzEMBAprNXjcpKoZ/uCRqly+gxjco+qVUMtMWSd+P+KXZZEqoa7Y6QiOudw==", "dev": true, "license": "MIT", "dependencies": { @@ -21110,9 +21157,9 @@ } }, "node_modules/remark-lint-first-heading-level": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-first-heading-level/-/remark-lint-first-heading-level-4.0.0.tgz", - "integrity": "sha512-CAMSDt03MwzGD1bgOZ+UaE0lN1xZXtJZGRXwMg7OmGazLVDtTsRkMEK0YY2LUyozdHBUFoq6FQt5pKyYdt/Tmw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-first-heading-level/-/remark-lint-first-heading-level-4.0.1.tgz", + "integrity": "sha512-ZqH476wQU2rk3L2X1Ef/FsdDZJsSkMqTkEjKyeac/hxnwDZ8ZLYYMmm4UKTgVZTtqFUkNYzgGEPAFXtrppHbJA==", "dev": true, "license": "MIT", "dependencies": { @@ -21127,9 +21174,9 @@ } }, "node_modules/remark-lint-hard-break-spaces": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.0.0.tgz", - "integrity": "sha512-zCTq7/xfM0ZL3bMopXse9DH2nk38wE1LrxmYwnTrqASBLnEAJWE2U2//tRGVMEBfSAnNvmIo96twz6zkLWjbGA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.1.1.tgz", + "integrity": "sha512-AKDPDt39fvmr3yk38OKZEWJxxCOOUBE+96AsBfs+ExS5LW6oLa9041X5ahFDQHvHGzdoremEIaaElursaPEkNg==", "dev": true, "license": "MIT", "dependencies": { @@ -21144,9 +21191,9 @@ } }, "node_modules/remark-lint-heading-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.0.tgz", - "integrity": "sha512-dQ6Jul5K0+aNUvrq4W7H0+osSoC9hsmwHZqBFq000+eMP/hWJqI8tuudw1rap8HHYuOsKLRbB5q+Fr7G+3Vw+Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.1.tgz", + "integrity": "sha512-+rUpJ/N2CGC5xPgZ18XgsCsUBtadgEhdTi0BJPrsFmHPzL22BUHajeg9im8Y7zphUcbi1qFiKuxZd2nzDgZSXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21164,9 +21211,9 @@ } }, "node_modules/remark-lint-list-item-bullet-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.0.tgz", - "integrity": "sha512-qq22QaxsDjfsL7aWGIPmP3P0N99CJBQQW1+iSrhYAMCDzqVlw6I3wPNAeR6s8mcoeHT8YlT6eQH3V8xJ0SlW6w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.1.tgz", + "integrity": "sha512-LKuTxkw5aYChzZoF3BkfaBheSCHs0T8n8dPHLQEuOLo6iC5wy98iyryz0KZ61GD8stlZgQO2KdWSdnP6vr40Iw==", "dev": true, "license": "MIT", "dependencies": { @@ -21181,9 +21228,9 @@ } }, "node_modules/remark-lint-list-item-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.0.tgz", - "integrity": "sha512-Yd6/g8CH9e4vlPAPNgl7F575uKhP+pTo/qwGkE61GOcgEVNJ/529hjumUhyQ4sOAX0YAPAjxvq6fJvb4AhVOOA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.1.tgz", + "integrity": "sha512-gJd1Q+jOAeTgmGRsdMpnRh01DUrAm0O5PCQxE8ttv1QZOV015p/qJH+B4N6QSmcUuPokHLAh9USuq05C73qpiA==", "dev": true, "license": "MIT", "dependencies": { @@ -21200,9 +21247,9 @@ } }, "node_modules/remark-lint-maximum-line-length": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-4.0.1.tgz", - "integrity": "sha512-hQlh8UrRfhkO4FU7z7t1Bu5ethj1y2iBncO5AOWF38RAmlHaZdB2lQxNA8IvUZITGJYpT1aThdFTEf+58lv08Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-4.1.1.tgz", + "integrity": "sha512-oIncZkI0oIXZk+1kJOMnE3WPbyMTUbds0q1E8WbCwtjN9pAZsQD2e+wK+xdi5VqOLPkvLER+yzbmi/A3Tp+XEg==", "dev": true, "license": "MIT", "dependencies": { @@ -21219,9 +21266,9 @@ } }, "node_modules/remark-lint-no-blockquote-without-marker": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.0.tgz", - "integrity": "sha512-fBhoTpkWcl5tG4FdwPdJIyb8XLrdr6MdLk1+K2BQ6Rom3rRsIYvuox4ohxOunNrXuth8xyw8kC6wDmODR44oFw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.1.tgz", + "integrity": "sha512-b4IOkNcG7C16HYAdKUeAhO7qPt45m+v7SeYbVrqvbSFtlD3EUBL8fgHRgLK1mdujFXDP1VguOEMx+Txv8JOT4w==", "dev": true, "license": "MIT", "dependencies": { @@ -21241,9 +21288,9 @@ } }, "node_modules/remark-lint-no-consecutive-blank-lines": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.0.tgz", - "integrity": "sha512-HsDZbFlelBVO3mEJDXd9v4z0HLB8pqxWnsV+I4ILYFp5lKYf6NxJaLBWFtP1gAg1+95WxityGLkGtYqmicDjpg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.1.tgz", + "integrity": "sha512-yLtYCrEBtGDao4ozmZruRzjMYAcBVFK69PoYjPfNwFO8pQ/LPt8KCq6oyg1ronNyRbDYEGqVdLIHcT/zL3LjPA==", "dev": true, "license": "MIT", "dependencies": { @@ -21262,9 +21309,9 @@ } }, "node_modules/remark-lint-no-duplicate-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.0.tgz", - "integrity": "sha512-21fcOACkCyhNsHkedKlpvqIywYx+5zGR507bW8e59gzdGhTbnBwQ9du4ACmN9jxPTfIBhUVMz0bWezkGrHE7Bg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.1.tgz", + "integrity": "sha512-Ek+A/xDkv5Nn+BXCFmf+uOrFSajCHj6CjhsHjtROgVUeEPj726yYekDBoDRA0Y3+z+U30AsJoHgf/9Jj1IFSug==", "dev": true, "license": "MIT", "dependencies": { @@ -21281,9 +21328,9 @@ } }, "node_modules/remark-lint-no-file-name-articles": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.0.tgz", - "integrity": "sha512-il4IseupahbV2TVfFjfDVL/EQw7jBWVlMVsv4K2cgl5uPIjiCjFGQypqKnWl6pZDN0oNOs/DE8gBdyuDjldJaA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.1.tgz", + "integrity": "sha512-h31ZDDJV2T6g9WLBrXg1CJ1m8M170O/tlDPAEPGCa/rxwKvMcfum4yicaot0ZKbUZ1uEPjVSUPDeo3sU0zciCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21296,9 +21343,9 @@ } }, "node_modules/remark-lint-no-file-name-consecutive-dashes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.0.tgz", - "integrity": "sha512-3vSI1LOQlu8NSCpWLsKELa8dS9HU+YVZE0U43/DNkdEcnZmlJLpTHQjBTMZUHQipRgoOO+TOSyXFyN/H+2lbuQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.1.tgz", + "integrity": "sha512-qGJRZ81sowEjv1dBodbHZ29pDZbrFpxiQQ6gBvkkHkkoYPekdnr8iUxmV38HcqH8+JNW1O4ELr+m71AA9/34Mw==", "dev": true, "license": "MIT", "dependencies": { @@ -21311,9 +21358,9 @@ } }, "node_modules/remark-lint-no-file-name-outer-dashes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.0.tgz", - "integrity": "sha512-3kgamCp39mdlCtqF/+JLwwS4VpSj5wvVwRythUfrpW7993I9kF67dBsaU545aEzWSK+UJZqjb40i0m2VfnBRfQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.1.tgz", + "integrity": "sha512-QIMrBPZKZ6BwQRPM65HhEHcJv6+wZnZ4z2ikvx2ht40cSmIN7ZTL7wKKJlnpF+4Ioi9XUj+cRHWqEhwJ9LCQIw==", "dev": true, "license": "MIT", "dependencies": { @@ -21326,9 +21373,9 @@ } }, "node_modules/remark-lint-no-heading-content-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.0.tgz", - "integrity": "sha512-psYSlD2BjcVkgpeXOLwPcYFBrbtJWp8E8JX1J4vSfoHPeY6aIxgYxXkf57cjGTApfRL8xawBmMDiF1FgQvpZYg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.1.tgz", + "integrity": "sha512-YIWktnZo7M9aw7PGnHdshvetSH3Y0qW+Fm143R66zsk5lLzn1XA5NEd/MtDzP8tSxxV+gcv+bDd5St1QUI4oSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21345,9 +21392,9 @@ } }, "node_modules/remark-lint-no-heading-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.0.tgz", - "integrity": "sha512-JWGIWhaEzH00HywI0DHex92tJ5Mw7l11shQ6/MGhRjYsHMRWcwWcVeOuktVMe/BiQbg0hRoE4+g0z2VgUD6Cqw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.1.tgz", + "integrity": "sha512-R/KkR9Qfh0AM3asadSnQQXMHu6BNZxPbxLI9h9JBPIZM+EtzycDlhaAHbOlQUdaHA5UEANhYENZBLrueH50Cdg==", "dev": true, "license": "MIT", "dependencies": { @@ -21364,9 +21411,9 @@ } }, "node_modules/remark-lint-no-literal-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.0.tgz", - "integrity": "sha512-rl/3Ai4Ax9IH/fRpOJZuXk1HgYX6oFTauhmBOilpqbq/YT2kN3FuXaneXdRfKv1bgMdHaLKxHWxGj/mDyA2n8w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.1.tgz", + "integrity": "sha512-RhTANFkFFXE6bM+WxWcPo2TTPEfkWG3lJZU50ycW7tJJmxUzDNzRed/z80EVJIdGwFa0NntVooLUJp3xrogalQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21397,9 +21444,9 @@ } }, "node_modules/remark-lint-no-multiple-toplevel-headings": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.0.tgz", - "integrity": "sha512-JW11iYxza7asDdhQuKfr8SH1u4NBOCQ4U7Ru0HrKCPcT4y/AB1C1il5uMQzbcervgYPBq69xzyQ24+AJeL0t3A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.1.tgz", + "integrity": "sha512-8sepobIOu3PlDOuMH7jtri+LH4tFNVQU+aqKSkrlNRdp831fYz9S+jA2crTVqWqxVbTwiF96uJWePv8/9qmHnA==", "dev": true, "license": "MIT", "dependencies": { @@ -21416,9 +21463,9 @@ } }, "node_modules/remark-lint-no-shell-dollars": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.0.tgz", - "integrity": "sha512-ye2h8FzjsgqqQV0HHN2g9N4FqI3eD9Gpgu7tU5ADIJyQ3mUJdwBoFn7IlGnpmumR1fb/l6u/AhRavIZxXYqG+Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.1.tgz", + "integrity": "sha512-UPE1DNCIkLtnS3YFD065Gkq5lQqfndBDpX8Ct/Zjn7M0/hzCyf9B6tpwCU0I20m9jzhS/CSY6mxYnAiEg+KkFA==", "dev": true, "license": "MIT", "dependencies": { @@ -21434,9 +21481,9 @@ } }, "node_modules/remark-lint-no-shortcut-reference-image": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.0.tgz", - "integrity": "sha512-YEiCpW5F/8/LZyxlOuVK2L/n0NJ1AB0AJK7oP39OVyEk3Xl7w+JQi6nZ3KiH6REh+PWGqKn6M0KEPL9cT/iAOw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.1.tgz", + "integrity": "sha512-hQhJ3Dr8ZWRdj7qm6+9vcPpqtGchhENA2UHOmcTraLf6dN1cFATCgY/HbTbRIN6NkG/EEClTgRC1QCokWR2Mmw==", "dev": true, "license": "MIT", "dependencies": { @@ -21450,9 +21497,9 @@ } }, "node_modules/remark-lint-no-shortcut-reference-link": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-4.0.0.tgz", - "integrity": "sha512-6jka2Zz3I6G2MvDcKrwADYhTOxHMFMK854u1cfBEIH5/XnCCXROtoqiiDtbZw+NJqbmwsBKvGL4t2gnmEJUmgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-4.0.1.tgz", + "integrity": "sha512-YxciuUZc90QaJYhayGO80lS3zxEOBgwwLW1MKYB7AfUdkrLcLVlS+DFloiq0MZ7EDVXuuGUEnIzyjyLSbI5BUA==", "dev": true, "license": "MIT", "dependencies": { @@ -21466,9 +21513,9 @@ } }, "node_modules/remark-lint-no-table-indentation": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.0.tgz", - "integrity": "sha512-MaLmnzgirpnRiRjWwrsyOX0RmP2eG4YAv169MtsxTVa6O3CpUDwTuTzivudE9L0kVvTlyF9DXEmdyjm85LDyVA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.1.tgz", + "integrity": "sha512-LHw9MGsuilM+3HkbRFZmdSE4T+sziaQzULH5ImYkLH2MLF8GKnAm2mgtveLZcW01wqFV2oEbpF1Y/s/QloXT7w==", "dev": true, "license": "MIT", "dependencies": { @@ -21487,9 +21534,9 @@ } }, "node_modules/remark-lint-no-tabs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.0.tgz", - "integrity": "sha512-rQR7LDdcw047ajB3D+v9uzdB8aZfZtEdlUJvQXKkcVDteWiuXGC3PcIrmM/8n3J/wlFMuwoAaW2IcdlJf8HzXQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.1.tgz", + "integrity": "sha512-+lhGUgY3jhTwWn1x+tTIJNy5Fbs2NcYXCobRY7xeszY0VKPCBF2GyELafOVnr+iTmosXLuhZPp5YwNezQKH9IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21514,9 +21561,9 @@ } }, "node_modules/remark-lint-no-undefined-references": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-5.0.0.tgz", - "integrity": "sha512-O0q8bHpRHK1T85oqO+uep4BkvQnZZp3y+wahDeeLLq9dCJfF56sq6Tt5OOTt1BAOZlpobS3OPQHUiJWYP6hX1w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-5.0.1.tgz", + "integrity": "sha512-j3qOk+jry1NPNbUmydGJpfbo1LeuZkvXOwr8ocxh1ymDzHf2GMCiToAiicDNaOuG85RkiIzLvnnCV5I7Mo5q8w==", "dev": true, "license": "MIT", "dependencies": { @@ -21535,9 +21582,9 @@ } }, "node_modules/remark-lint-no-unused-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.0.tgz", - "integrity": "sha512-YCZ6k575NCTx7mnN+9ls0G6YgMsZHi0LYQqfLW8MNVHBtbpTBvfmk8I39bmsvuKWeBD98weZoXSDqIiIGg+Q/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.1.tgz", + "integrity": "sha512-AdMbaCeMpj32HvDUuyI+bQyu/405Nby/rgFW8XDpI7U7ufPhHl+jj9J4NgeW7Z8DrODGr0iFgPNt6JtNLskFdA==", "dev": true, "license": "MIT", "dependencies": { @@ -21552,9 +21599,9 @@ } }, "node_modules/remark-lint-ordered-list-marker-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.0.tgz", - "integrity": "sha512-xZ7Xppy5fzACH4b9h1b4lTzVtNY2AlUkNTfl1Oe6cIKN8tk3juFxN0wL2RpktPtSZ7iRIabzFmg6l8WPhlASJA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.1.tgz", + "integrity": "sha512-vZTAbstcBPbGwJacwldGzdGmKwy5/4r29SZ9nQkME4alEl5B1ReSBlYa8t7QnTSW7+tqvA9Sg71RPadgAKWa4w==", "dev": true, "license": "MIT", "dependencies": { @@ -21702,9 +21749,9 @@ } }, "node_modules/remark-lint-rule-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.0.tgz", - "integrity": "sha512-Kt7IHMB5IbLgRFKaFUmB895sV3PTD0MBgN9CvXKxr1wHFF43S6tabjFIBSoQqyJRlhH0S3rK6Lvopofa009gLg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.1.tgz", + "integrity": "sha512-gl1Ft13oTS3dJUCsWZzxD/5dAwI1HON67KU7uNfODD5gXJ8Y11deOWbun190ma7XbYdD7P0l8VT2HeRtEQzrWg==", "dev": true, "license": "MIT", "dependencies": { @@ -21721,9 +21768,9 @@ } }, "node_modules/remark-lint-strong-marker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.0.tgz", - "integrity": "sha512-YcvuzakYhQWdCH+1E30sUY+wyvq+PNa77NZAMAYO/cS/pZczFB+q4Ccttw4Q+No/chX8oMfe0GYtm8dDWLei/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.1.tgz", + "integrity": "sha512-KaGtj/OWEP4eoafevnlp3NsEVwC7yGEjBJ6uFMzfjNoXyjATdfZ2euB/AfKVt/A/FdZeeMeVoAUFH4DL+hScLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21739,9 +21786,9 @@ } }, "node_modules/remark-lint-table-cell-padding": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.0.0.tgz", - "integrity": "sha512-LNyiHDQZBIOqcQGG1tYsZHW7g0v8OyRmRgDrD5WEsMaAYfM6EiECUokN/Q4py9h4oM/2KUSrdZbtfuZmy87/kA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.1.1.tgz", + "integrity": "sha512-6fgVA1iINBoAJaZMOnSsxrF9Qj9+hmCqrsrqZqgJJETjT1ODGH64iAN1/6vHR7dIwmy73d6ysB2WrGyKhVlK3A==", "dev": true, "license": "MIT", "dependencies": { @@ -21761,9 +21808,9 @@ } }, "node_modules/remark-lint-table-pipes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.0.tgz", - "integrity": "sha512-e7jzAScDrt5+eMomh099TZJBN2K9ldDxBu9iYhNu5C0YsdAvnckJkgilsuClxFpmx4LCVYaX0EGbt/hQ3LB3xg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.1.tgz", + "integrity": "sha512-oOkRC0WRRDwvodfffGafoBFBTGwy9udQgKtxN53apmZpOmaUAxTi833ite0jMo078+LehNftO5bxrElZ9EQUlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21780,9 +21827,9 @@ } }, "node_modules/remark-lint-unordered-list-marker-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.0.tgz", - "integrity": "sha512-XlP4Wr4KJNovyWVv0H5axfUlF23iE9Kt2SxaVq4+ieum5YcMmKE6KsL+aqt3kiJb60SH1u6a0bxKFvdM/9riOA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.1.tgz", + "integrity": "sha512-HMrVQC0Qbr8ktSy+1lJGRGU10qecL3T14L6s/THEQXR5Tk0wcsLLG0auNvB4r2+H+ClhVO/Vnm1TEosh1OCsfw==", "dev": true, "license": "MIT", "dependencies": { @@ -21892,9 +21939,9 @@ } }, "node_modules/remark-preset-lint-recommended": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.0.tgz", - "integrity": "sha512-A9aPDL78OO12xG2a83DVd+M2QzdBMjn545fbXj40BFJdpt9t//MADkPAwRfpMCBkKi+iECPUTFCb3Jm8SsFG2w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.1.tgz", + "integrity": "sha512-j1CY5u48PtZl872BQ40uWSQMT3R4gXKp0FUgevMu5gW7hFMtvaCiDq+BfhzeR8XKKiW9nIMZGfIMZHostz5X4g==", "dev": true, "license": "MIT", "dependencies": { @@ -22056,9 +22103,9 @@ } }, "node_modules/require-in-the-middle": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", - "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", "license": "MIT", "peer": true, "dependencies": { @@ -22186,9 +22233,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -22218,6 +22265,52 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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", @@ -22252,9 +22345,9 @@ } }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -22315,6 +22408,23 @@ ], "license": "MIT" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -22360,19 +22470,16 @@ } }, "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" }, "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, + "dev": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", @@ -22391,7 +22498,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -22408,7 +22515,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "devOptional": true, + "dev": true, "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" @@ -22418,7 +22525,7 @@ "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, + "dev": true, "license": "MIT" }, "node_modules/section-matter": { @@ -22490,6 +22597,21 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/sharp": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", @@ -22552,18 +22674,18 @@ } }, "node_modules/shiki": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.2.0.tgz", - "integrity": "sha512-3uoZBmc+zpd2JOEeTvKP/vK5UVDDe8YiigkT9flq+MV5Z1MKFiUXfbLIvHfqcJ+V90StDiP1ckN97z1WlhC6cQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.1.0.tgz", + "integrity": "sha512-LdTNyWQlC5zdCaHdcp1zPA1OVA2ivb+KjGOOnGcy02tGaF5ja+dGibWFH7Ar8YlngUgK/scDqworK18Ys9cbYA==", "license": "MIT", "dependencies": { - "@shikijs/core": "2.2.0", - "@shikijs/engine-javascript": "2.2.0", - "@shikijs/engine-oniguruma": "2.2.0", - "@shikijs/langs": "2.2.0", - "@shikijs/themes": "2.2.0", - "@shikijs/types": "2.2.0", - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/core": "3.1.0", + "@shikijs/engine-javascript": "3.1.0", + "@shikijs/engine-oniguruma": "3.1.0", + "@shikijs/langs": "3.1.0", + "@shikijs/themes": "3.1.0", + "@shikijs/types": "3.1.0", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, @@ -22803,9 +22925,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", "dev": true, "license": "CC0-1.0" }, @@ -22816,9 +22938,10 @@ "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==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/sse.js/-/sse.js-2.6.0.tgz", + "integrity": "sha512-eGEqOwiPX9Cm+KsOYkcz7HIEqWUSOFeChr0sT515hDOBLvQy5yxaLSZx9JWMhwjf75CXJq+7cgG1MKNh9GQ36w==", + "license": "Apache-2.0" }, "node_modules/stable-hash": { "version": "0.0.4", @@ -22851,13 +22974,13 @@ } }, "node_modules/storybook": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.5.2.tgz", - "integrity": "sha512-pf84emQ7Pd5jBdT2gzlNs4kRaSI3pq0Lh8lSfV+YqIVXztXIHU+Lqyhek2Lhjb7btzA1tExrhJrgQUsIji7i7A==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.3.tgz", + "integrity": "sha512-Vbmd8/FXp6X0AOMak6arcg3WdkHj+2AYJTNHbCPVHsCEbnREyRZIG+Eq5/Ffmy6byiz+4OAX5HwsHGSMR6Xmow==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.5.2" + "@storybook/core": "8.6.3" }, "bin": { "getstorybook": "bin/index.cjs", @@ -23237,9 +23360,9 @@ } }, "node_modules/stylelint": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz", - "integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==", + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.15.0.tgz", + "integrity": "sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw==", "dev": true, "funding": [ { @@ -23251,6 +23374,7 @@ "url": "https://github.com/sponsors/stylelint" } ], + "license": "MIT", "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", @@ -23261,16 +23385,16 @@ "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", - "css-tree": "^3.0.1", + "css-tree": "^3.1.0", "debug": "^4.3.7", - "fast-glob": "^3.3.2", + "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.1.0", + "file-entry-cache": "^10.0.6", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^6.0.2", + "ignore": "^7.0.3", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.35.0", @@ -23279,14 +23403,14 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", - "postcss": "^8.4.49", + "postcss": "^8.5.3", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "supports-hyperlinks": "^3.1.0", + "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^5.0.1" @@ -23299,9 +23423,9 @@ } }, "node_modules/stylelint-config-recommended": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", - "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-15.0.0.tgz", + "integrity": "sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==", "dev": true, "funding": [ { @@ -23318,13 +23442,13 @@ "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^16.1.0" + "stylelint": "^16.13.0" } }, "node_modules/stylelint-config-standard": { - "version": "36.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", - "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", + "version": "37.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-37.0.0.tgz", + "integrity": "sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==", "dev": true, "funding": [ { @@ -23338,13 +23462,13 @@ ], "license": "MIT", "dependencies": { - "stylelint-config-recommended": "^14.0.1" + "stylelint-config-recommended": "^15.0.0" }, "engines": { "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^16.1.0" + "stylelint": "^16.13.0" } }, "node_modules/stylelint-order": { @@ -23379,29 +23503,6 @@ "stylelint": "^16.2.1" } }, - "node_modules/stylelint/node_modules/@csstools/selector-specificity": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", - "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", - "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": "^7.0.0" - } - }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -23409,61 +23510,26 @@ "dev": true, "license": "MIT" }, - "node_modules/stylelint/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/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==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.6.tgz", + "integrity": "sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^5.0.0" - }, - "engines": { - "node": ">=18" + "flat-cache": "^6.1.6" } }, "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==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.6.tgz", + "integrity": "sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.3.1", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/stylelint/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" + "cacheable": "^1.8.8", + "flatted": "^3.3.2", + "hookified": "^1.7.0" } }, "node_modules/stylelint/node_modules/global-modules": { @@ -23495,9 +23561,9 @@ } }, "node_modules/stylelint/node_modules/ignore": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", - "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", "dev": true, "license": "MIT", "engines": { @@ -23511,20 +23577,6 @@ "dev": true, "license": "ISC" }, - "node_modules/stylelint/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "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" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/stylelint/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -23624,21 +23676,6 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, - "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", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sucrase/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -23685,9 +23722,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "license": "MIT", "dependencies": { @@ -23698,7 +23735,7 @@ "node": ">=14.18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, "node_modules/supports-hyperlinks/node_modules/has-flag": { @@ -23737,12 +23774,12 @@ } }, "node_modules/sval": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/sval/-/sval-0.5.3.tgz", - "integrity": "sha512-neK8qQYxPTi13YxhH4uFE/aSg8idJytcotC1tKSe6yUbJFvETUiqXf6jFXjQSbmz2R0E7c6RycelXwN07cl8Dg==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/sval/-/sval-0.6.1.tgz", + "integrity": "sha512-e4rndan/xKWMrzrqfZpBxt4IVEJofkaSQ+DFnCvcxGKEWumKHtKQDwcNQUUNt2grMAnksluv0tKnPyoE2SWxYw==", "license": "MIT", "dependencies": { - "acorn": "^8.11.3" + "acorn": "^8.14.0" } }, "node_modules/svg-tags": { @@ -23907,34 +23944,6 @@ "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/jiti": { "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", @@ -23961,6 +23970,19 @@ "postcss": "^8.0.0" } }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -23972,9 +23994,9 @@ } }, "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "devOptional": true, "license": "BSD-2-Clause", "dependencies": { @@ -23991,9 +24013,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.12.tgz", + "integrity": "sha512-jDLYqo7oF8tJIttjXO6jBY5Hk8p3A8W4ttih7cCEq64fQFWmgJ4VqAQjKr7WwIDlmXKEc6QeoRb5ecjZ+2afcg==", "devOptional": true, "license": "MIT", "dependencies": { @@ -24140,6 +24162,28 @@ "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", @@ -24189,22 +24233,25 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", - "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", "license": "MIT", "dependencies": { - "fdir": "^6.4.2", + "fdir": "^6.4.3", "picomatch": "^4.0.2" }, "engines": { "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, "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==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -24339,16 +24386,16 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-dedent": { @@ -24399,26 +24446,26 @@ "license": "0BSD" }, "node_modules/turbo": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.3.tgz", - "integrity": "sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.4.4.tgz", + "integrity": "sha512-N9FDOVaY3yz0YCOhYIgOGYad7+m2ptvinXygw27WPLQvcZDl3+0Sa77KGVlLSiuPDChOUEnTKE9VJwLSi9BPGQ==", "license": "MIT", "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "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" + "turbo-darwin-64": "2.4.4", + "turbo-darwin-arm64": "2.4.4", + "turbo-linux-64": "2.4.4", + "turbo-linux-arm64": "2.4.4", + "turbo-windows-64": "2.4.4", + "turbo-windows-arm64": "2.4.4" } }, "node_modules/turbo-darwin-64": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.3.3.tgz", - "integrity": "sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.4.4.tgz", + "integrity": "sha512-5kPvRkLAfmWI0MH96D+/THnDMGXlFNmjeqNRj5grLKiry+M9pKj3pRuScddAXPdlxjO5Ptz06UNaOQrrYGTx1g==", "cpu": [ "x64" ], @@ -24429,9 +24476,9 @@ ] }, "node_modules/turbo-darwin-arm64": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.3.3.tgz", - "integrity": "sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.4.4.tgz", + "integrity": "sha512-/gtHPqbGQXDFhrmy+Q/MFW2HUTUlThJ97WLLSe4bxkDrKHecDYhAjbZ4rN3MM93RV9STQb3Tqy4pZBtsd4DfCw==", "cpu": [ "arm64" ], @@ -24442,9 +24489,9 @@ ] }, "node_modules/turbo-linux-64": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.3.tgz", - "integrity": "sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.4.4.tgz", + "integrity": "sha512-SR0gri4k0bda56hw5u9VgDXLKb1Q+jrw4lM7WAhnNdXvVoep4d6LmnzgMHQQR12Wxl3KyWPbkz9d1whL6NTm2Q==", "cpu": [ "x64" ], @@ -24455,9 +24502,9 @@ ] }, "node_modules/turbo-linux-arm64": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.3.3.tgz", - "integrity": "sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.4.4.tgz", + "integrity": "sha512-COXXwzRd3vslQIfJhXUklgEqlwq35uFUZ7hnN+AUyXx7hUOLIiD5NblL+ETrHnhY4TzWszrbwUMfe2BYWtaPQg==", "cpu": [ "arm64" ], @@ -24468,9 +24515,9 @@ ] }, "node_modules/turbo-windows-64": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.3.3.tgz", - "integrity": "sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.4.4.tgz", + "integrity": "sha512-PV9rYNouGz4Ff3fd6sIfQy5L7HT9a4fcZoEv8PKRavU9O75G7PoDtm8scpHU10QnK0QQNLbE9qNxOAeRvF0fJg==", "cpu": [ "x64" ], @@ -24481,9 +24528,9 @@ ] }, "node_modules/turbo-windows-arm64": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.3.3.tgz", - "integrity": "sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.4.4.tgz", + "integrity": "sha512-403sqp9t5sx6YGEC32IfZTVWkRAixOQomGYB8kEc6ZD+//LirSxzeCHCnM8EmSXw7l57U1G+Fb0kxgTcKPU/Lg==", "cpu": [ "arm64" ], @@ -24615,9 +24662,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -24628,32 +24675,11 @@ "node": ">=14.17" } }, - "node_modules/typescript-eslint": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.0.tgz", - "integrity": "sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.19.0", - "@typescript-eslint/parser": "8.19.0", - "@typescript-eslint/utils": "8.19.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", - "typescript": ">=4.8.4 <5.8.0" - } - }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" }, "node_modules/uglify-js": { "version": "3.19.3", @@ -24835,22 +24861,6 @@ "dev": true, "license": "ISC" }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/unified-engine/node_modules/parse-json": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", @@ -24902,9 +24912,9 @@ } }, "node_modules/unified-lint-rule": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", - "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.1.tgz", + "integrity": "sha512-HxIeQOmwL19DGsxHXbeyzKHBsoSCFO7UtRVUvT2v61ptw/G+GbysWcrpHdfs5jqbIFDA11MoKngIhQK0BeTVjA==", "dev": true, "license": "MIT", "dependencies": { @@ -25057,9 +25067,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -25077,7 +25087,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -25090,7 +25100,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -25150,9 +25160,9 @@ } }, "node_modules/use-intl": { - "version": "3.26.3", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.26.3.tgz", - "integrity": "sha512-yY0a2YseO17cKwHA9M6fcpiEJ2Uo81DEU0NOUxNTp6lJVNOuI6nULANPVVht6IFdrYFtlsMmMoc97+Eq9/Tnng==", + "version": "3.26.5", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.26.5.tgz", + "integrity": "sha512-OdsJnC/znPvHCHLQH/duvQNXnP1w0hPfS+tkSi3mAbfjYBGh4JnyfdwkQBfIVf7t8gs9eSX/CntxUMvtKdG2MQ==", "license": "MIT", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", @@ -25533,9 +25543,9 @@ } }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -25557,9 +25567,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -25681,6 +25691,26 @@ "node": ">=4.0" } }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "devOptional": 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": ">= 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", @@ -25985,9 +26015,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, "license": "MIT", "engines": { @@ -26060,9 +26090,10 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -26129,6 +26160,258 @@ "typescript": "~5.7.2", "typescript-eslint": "~8.19.0" } + }, + "packages/i18n/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.1.tgz", + "integrity": "sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/type-utils": "8.19.1", + "@typescript-eslint/utils": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "packages/i18n/node_modules/@typescript-eslint/parser": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.1.tgz", + "integrity": "sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", + "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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "packages/i18n/node_modules/@typescript-eslint/scope-manager": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", + "integrity": "sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/i18n/node_modules/@typescript-eslint/type-utils": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.1.tgz", + "integrity": "sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/utils": "8.19.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "packages/i18n/node_modules/@typescript-eslint/types": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.1.tgz", + "integrity": "sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/i18n/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", + "integrity": "sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", + "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": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "packages/i18n/node_modules/@typescript-eslint/utils": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.1.tgz", + "integrity": "sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "packages/i18n/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", + "integrity": "sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.19.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/i18n/node_modules/eslint-import-resolver-typescript": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz", + "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.7", + "enhanced-resolve": "^5.15.0", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3", + "stable-hash": "^0.0.4" + }, + "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 + } + } + }, + "packages/i18n/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" + } + }, + "packages/i18n/node_modules/typescript-eslint": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.1.tgz", + "integrity": "sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.19.1", + "@typescript-eslint/parser": "8.19.1", + "@typescript-eslint/utils": "8.19.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", + "typescript": ">=4.8.4 <5.8.0" + } } } } diff --git a/package.json b/package.json index 01d8cb251c6f7..9eb1905513cf8 100644 --- a/package.json +++ b/package.json @@ -37,18 +37,23 @@ "dependencies": { "acorn": "^8.14.0", "husky": "9.1.7", - "lint-staged": "15.3.0", - "turbo": "2.3.3" + "lint-staged": "15.4.3", + "turbo": "2.4.4" }, "devDependencies": { - "@eslint/js": "~9.17.0", - "@types/eslint__js": "8.42.3", - "@types/node": "22.10.3", + "@eslint/js": "~9.21.0", + "@types/node": "22.13.8", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.17.0", + "eslint": "~9.21.0", "eslint-plugin-import-x": "~4.6.1", - "eslint-plugin-no-relative-import-paths": "~1.5.5", - "prettier": "3.4.2", - "prettier-plugin-tailwindcss": "0.6.9" + "eslint-plugin-no-relative-import-paths": "~1.6.1", + "prettier": "3.5.2", + "prettier-plugin-tailwindcss": "0.6.11" + }, + "overrides": { + "@types/react": "$@types/react", + "@types/react-dom": "$@types/react-dom" } } From a28ee8e04b24d40629a23634130c0e9f91ada1e9 Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Sat, 1 Mar 2025 11:11:05 -0800 Subject: [PATCH 0321/1385] hotfix: temporary: disable windows build Signed-off-by: Claudio W <cwunder@gnome.org> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 55f0009c4471d..08814425c6e81 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,7 +42,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest] + os: [ubuntu-latest] steps: - name: Harden Runner From 8751bbfb1749c1666cb7ecbea60badd6cab90e29 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 12:09:48 +0100 Subject: [PATCH 0322/1385] meta: bump ossf/scorecard-action from 2.4.0 to 2.4.1 (#7527) Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.0 to 2.4.1. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/62b2cac7ed8198b15735ed49ab1e5cf35480ba46...f49aabe0b5af0936a0987cfb85d86b75731b0186) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 454727663dc48..dab66bf9d335f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -42,7 +42,7 @@ jobs: persist-credentials: false - name: Run Scorecard Analysis - uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 with: results_file: results.sarif results_format: sarif From 357b6f607de55d3b2037b50926ec082318ad23be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 21:05:55 +1000 Subject: [PATCH 0323/1385] meta: bump the lint group across 1 directory with 2 updates (#7533) Bumps the lint group with 2 updates in the / directory: [eslint-import-resolver-typescript](https://github.com/import-js/eslint-import-resolver-typescript) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint). Updates `eslint-import-resolver-typescript` from 3.7.0 to 3.8.3 - [Release notes](https://github.com/import-js/eslint-import-resolver-typescript/releases) - [Changelog](https://github.com/import-js/eslint-import-resolver-typescript/blob/master/CHANGELOG.md) - [Commits](https://github.com/import-js/eslint-import-resolver-typescript/compare/v3.7.0...v3.8.3) Updates `typescript-eslint` from 8.19.1 to 8.25.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.25.0/packages/typescript-eslint) --- updated-dependencies: - dependency-name: eslint-import-resolver-typescript 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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 50 +++++++++++++++++++------------------- packages/i18n/package.json | 4 +-- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0836f7a9805de..4b1a7391df476 100644 --- a/package-lock.json +++ b/package-lock.json @@ -144,29 +144,6 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "apps/site/node_modules/typescript-eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", - "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.25.0", - "@typescript-eslint/parser": "8.25.0", - "@typescript-eslint/utils": "8.25.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", - "typescript": ">=4.8.4 <5.8.0" - } - }, "node_modules/@adobe/css-tools": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", @@ -24675,6 +24652,29 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", + "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.25.0", + "@typescript-eslint/parser": "8.25.0", + "@typescript-eslint/utils": "8.25.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", + "typescript": ">=4.8.4 <5.8.0" + } + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -26156,9 +26156,9 @@ "packages/i18n": { "name": "@node-core/website-i18n", "devDependencies": { - "eslint-import-resolver-typescript": "~3.7.0", + "eslint-import-resolver-typescript": "~3.8.3", "typescript": "~5.7.2", - "typescript-eslint": "~8.19.0" + "typescript-eslint": "~8.25.0" } }, "packages/i18n/node_modules/@typescript-eslint/eslint-plugin": { diff --git a/packages/i18n/package.json b/packages/i18n/package.json index e836541feda41..e2c37d42811f5 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -16,8 +16,8 @@ "lint:js": "eslint \"**/*.{js,mjs,ts}\"" }, "devDependencies": { - "eslint-import-resolver-typescript": "~3.7.0", + "eslint-import-resolver-typescript": "~3.8.3", "typescript": "~5.7.2", - "typescript-eslint": "~8.19.0" + "typescript-eslint": "~8.25.0" } } From b2c175c0fc0df3f14a961bb7bdbdb713f93c1f9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 12:35:51 +0100 Subject: [PATCH 0324/1385] meta: bump github/codeql-action from 3.28.8 to 3.28.10 (#7525) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.8 to 3.28.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/dd746615b3b9d728a6a37ca2045b68ca76d4841a...b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 5c7a6700d4dba..f57e5f318dd17 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 + uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 + uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 + uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index dab66bf9d335f..b7a680bd21f83 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 + uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: sarif_file: results.sarif From cfc712b4ea9f5eff008db3515716cc1eea34c1a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 11:36:33 +0000 Subject: [PATCH 0325/1385] meta: bump step-security/harden-runner from 2.10.4 to 2.11.0 (#7523) Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.10.4 to 2.11.0. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/cb605e52c26070c328afc4562f0b4ada7618a84e...4d991eb9b905ef189e4c376166672c3f2f230481) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 6 +++--- .github/workflows/pull-request-label.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr-lint.yml | 2 +- .github/workflows/translations-sync.yml | 4 ++-- .github/workflows/translations-upload.yml | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 08814425c6e81..da8117e6178dc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -46,7 +46,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f57e5f318dd17..f2b41eb055dcc 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index acb92494547d8..797d9dcce2430 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index a794a60f2149a..8f6a086b8eb51 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 49e95b3da52c3..572659d74f661 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -37,7 +37,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit @@ -159,7 +159,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/pull-request-label.yml b/.github/workflows/pull-request-label.yml index e3a4a24e759a2..b6d0b196e8643 100644 --- a/.github/workflows/pull-request-label.yml +++ b/.github/workflows/pull-request-label.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b7a680bd21f83..c29bceab5a812 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/translations-pr-lint.yml b/.github/workflows/translations-pr-lint.yml index 661d5ae28dcd5..53da73d640fbb 100644 --- a/.github/workflows/translations-pr-lint.yml +++ b/.github/workflows/translations-pr-lint.yml @@ -42,7 +42,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 105f296166722..5afc89997a316 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -28,7 +28,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit @@ -67,7 +67,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml index de35b39b25bf1..bb25007f20e65 100644 --- a/.github/workflows/translations-upload.yml +++ b/.github/workflows/translations-upload.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit From 24b136bdd911661e1006a0f99ceed0153ea817fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 11:36:52 +0000 Subject: [PATCH 0326/1385] meta: bump actions/cache from 4.2.0 to 4.2.2 (#7528) Bumps [actions/cache](https://github.com/actions/cache) from 4.2.0 to 4.2.2. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/1bd1e32a3bdc45362d1e726936510720a7c30a57...d4323d4df104b026a6aa633fdb11d772146be0bf) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-sync.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index da8117e6178dc..aa848b60e17a0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: # regardless of having code changes or not fetch-depth: 1 - - uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + - uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 with: # See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node path: | diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 572659d74f661..4f1dacb2c68ad 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -76,7 +76,7 @@ jobs: ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }} - name: Restore Lint Cache - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: actions/cache/restore@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 with: path: | .turbo/cache @@ -129,7 +129,7 @@ jobs: (github.event_name == 'pull_request_target' && startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: actions/cache/save@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 with: path: | .turbo/cache diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 5afc89997a316..22ca200e7fe8e 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -78,7 +78,7 @@ jobs: ref: refs/pull/${{ needs.synchronize-with-crowdin.outputs.pull_request_number }}/head - name: Restore Lint Cache - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: actions/cache/restore@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 with: path: | apps/site/.eslintmdcache @@ -123,7 +123,7 @@ jobs: branch: 'chore/crowdin' - name: Save Lint Cache - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: actions/cache/save@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 with: path: | apps/site/.eslintmdcache From 53b73cdd65f689453f9d1014f77b47ba9fd6f9c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 12:43:24 +0100 Subject: [PATCH 0327/1385] meta: bump actions/upload-artifact from 4.6.0 to 4.6.1 (#7522) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08...4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c29bceab5a812..8c6ab800fba0f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -51,7 +51,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: Upload Artifacts - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: SARIF file path: results.sarif From f33bf0059e50d6586904e39b7080fc511b0ec7db Mon Sep 17 00:00:00 2001 From: Callis <callisezenwaka@gmail.com> Date: Wed, 5 Mar 2025 16:35:12 +0000 Subject: [PATCH 0328/1385] docs(websocket): Add guide on using the native WebSocket client. (#7535) * docs(websocket): Add guide on using the native WebSocket client. * docs(websocket): Add guide on using the native WebSocket client. * docs(websocket): Add guide on using the native WebSocket client. --- apps/site/navigation.json | 4 + .../en/learn/getting-started/websocket.md | 83 +++++++++++++++++++ packages/i18n/locales/en.json | 1 + 3 files changed, 88 insertions(+) create mode 100644 apps/site/pages/en/learn/getting-started/websocket.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 4485cda2dc237..6198d48562930 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -189,6 +189,10 @@ "link": "/learn/getting-started/fetch", "label": "components.navigation.learn.gettingStarted.links.fetch" }, + "websocket": { + "link": "/learn/getting-started/websocket", + "label": "components.navigation.learn.gettingStarted.links.websocket" + }, "securityBestPractices": { "link": "/learn/getting-started/security-best-practices", "label": "components.navigation.learn.gettingStarted.links.securityBestPractices" diff --git a/apps/site/pages/en/learn/getting-started/websocket.md b/apps/site/pages/en/learn/getting-started/websocket.md new file mode 100644 index 0000000000000..018e9ffe36488 --- /dev/null +++ b/apps/site/pages/en/learn/getting-started/websocket.md @@ -0,0 +1,83 @@ +--- +title: Node.js WebSocket +layout: learn +authors: callezenwaka +--- + +# Native WebSocket Client in Node.js + +## Introduction + +Since [Node.js v21](https://github.com/nodejs/node/blob/47a59bde2aadb3ad1b377c0ef12df7abc28840e9/doc/changelogs/CHANGELOG_V21.md#L1329-L1345), the [WebSocket API](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) has been enhanced using the [Undici](https://undici.nodejs.org) library, introducing a built-in WebSocket client. This simplifies real-time communication for Node.js applications. In [Node.js v22.4.0](https://github.com/nodejs/node/releases/tag/v22.4.0) release, the WebSocket API was marked as stable, indicating it's ready for production use. + +## What is a WebSocket + +[WebSocket](https://en.wikipedia.org/wiki/WebSocket) is a standardized communication protocol that enables simultaneous two-way communication over a single TCP connection. It has full-duplex or bi-directional capabilities that distinguishes it from HTTP. WebSocket achieves HTTP compatibility by using the HTTP Upgrade header to transition protocols. It allows servers to push content to clients without initial requests and maintains open connections for continuous message exchange, making it ideal for real-time data transfer with lower overhead than alternatives like HTTP polling. WebSocket communications typically occur over TCP ports 443 (secured) or 80 (unsecured), helping bypass firewall restrictions on non-web connections. The protocol defines its own URI schemes (ws:// and wss://) for unencrypted and encrypted connections respectively and supported by all major browsers. + +## Native WebSocket Client + +Node.js can now act as a WebSocket `client` without relying on external libraries like [ws](https://www.npmjs.com/package/ws) or [socket.io](https://www.npmjs.com/package/socket.io) for client connections. This allows Node.js applications to initiate and manage outgoing WebSocket connections directly, streamlining tasks such as connecting to real-time data feeds or interacting with other WebSocket servers. Users can now create a websocket client connection with the standard [new WebSocket()](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket) constructor. + +Building on the above, let's add more practical examples to demonstrate the new WebSocket client functionality that demonstrates basic use-cases. + +### Basic Connection and Message Handling + +```javascript +// Creates a new WebSocket connection to the specified URL. +const socket = new WebSocket('ws://localhost:8080'); + +// Executes when the connection is successfully established. +socket.addEventListener('open', event => { + console.log('WebSocket connection established!'); + // Sends a message to the WebSocket server. + socket.send('Hello Server!'); +}); + +// Listen for messages and executes when a message is received from the server. +socket.addEventListener('message', event => { + console.log('Message from server: ', event.data); +}); + +// Executes when the connection is closed, providing the close code and reason. +socket.addEventListener('close', event => { + console.log('WebSocket connection closed:', event.code, event.reason); +}); + +// Executes if an error occurs during the WebSocket communication. +socket.addEventListener('error', error => { + console.error('WebSocket error:', error); +}); +``` + +### Sending and Receiving JSON Data + +```javascript +const socket = new WebSocket('ws://localhost:8080'); + +socket.addEventListener('open', () => { + const data = { type: 'message', content: 'Hello from Node.js!' }; + socket.send(JSON.stringify(data)); +}); + +socket.addEventListener('message', event => { + try { + const receivedData = JSON.parse(event.data); + console.log('Received JSON:', receivedData); + } catch (error) { + console.error('Error parsing JSON:', error); + console.log('Received data was:', event.data); + } +}); +``` + +The `json` code above demonstrates sending and receiving [JSON](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON) data, which is common in WebSocket applications. It uses [JSON.stringify()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) to convert JavaScript objects to JSON strings before sending. And converts the received string back to a JavaScript object with [JSON.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse). Finally, it includes error handling for JSON parsing. + +This offers reduced dependency management and improved compatibility. Developers can avoid installing and maintaining additional WebSocket client libraries. The built-in implementation aligns with modern web standards, ensuring better interoperability. The enhancement focuses on the client-side of WebSocket communication, enabling Node.js to act as a WebSocket client. + +## Important to Understand + +Node.js v22 **does not** provide a built-in native WebSocket server implementation. To create a WebSocket server that accepts incoming connections from web browsers or other clients, one still need to use libraries like [ws](https://www.npmjs.com/package/ws) or [socket.io](https://www.npmjs.com/package/socket.io). This means that while Node.js can now easily **connect** to WebSocket servers, it still requires external tools to **become** a WebSocket server. + +## In Summary + +Node.js v22 empowers applications to seamlessly interact with WebSocket servers as `clients`, but the creation of WebSocket servers within Node.js remains dependent on established libraries. This distinction is crucial for developers to understand when implementing real-time communication in their Node.js projects. diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index acbc2fa00f75f..8f48727af4695 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -43,6 +43,7 @@ "debugging": "Debugging Node.js", "profiling": "Profiling Node.js Applications", "fetch": "Fetching data with Node.js", + "websocket": "WebSocket client with Node.js", "securityBestPractices": "Security Best Practices" } }, From b5b0f38512a5609eb2f8e3ec21be3b9548c5ae34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Mar 2025 21:50:29 +0100 Subject: [PATCH 0329/1385] meta: bump crowdin/github-action from 2.5.2 to 2.6.1 (#7529) Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.5.2 to 2.6.1. - [Release notes](https://github.com/crowdin/github-action/releases) - [Commits](https://github.com/crowdin/github-action/compare/b811e495831e49ff516e7c801f7c5546879b9ee7...2cc7959c565767d6bc118118d6df3b63bf361370) --- updated-dependencies: - dependency-name: crowdin/github-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/translations-sync.yml | 2 +- .github/workflows/translations-upload.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 22ca200e7fe8e..a91df0e840c56 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -37,7 +37,7 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: Crowdin PR - uses: crowdin/github-action@b811e495831e49ff516e7c801f7c5546879b9ee7 # v2.5.2 + uses: crowdin/github-action@2cc7959c565767d6bc118118d6df3b63bf361370 # v2.6.1 id: crowdin_pr with: # do not upload anything - this is a one-way operation download diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml index bb25007f20e65..819b49dc5021d 100644 --- a/.github/workflows/translations-upload.yml +++ b/.github/workflows/translations-upload.yml @@ -27,7 +27,7 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: crowdin action - uses: crowdin/github-action@b811e495831e49ff516e7c801f7c5546879b9ee7 # v2.5.2 + uses: crowdin/github-action@2cc7959c565767d6bc118118d6df3b63bf361370 # v2.6.1 with: # only upload sources, ensuring this is a one-way operation upload_sources: true From 0135352e42208cb1e93f63a3ab56c37f83ab25db Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Fri, 7 Mar 2025 14:13:46 -0300 Subject: [PATCH 0330/1385] doc: add Updates on CVE to EOL blog post (#7537) * doc: add Updates on CVE to EOL blog post Refs: https://github.com/nodejs/security-wg/issues/1443 * Apply suggestions from code review Co-authored-by: Michael Dawson <mdawson@devrus.com> Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> * fixup! doc: add Updates on CVE to EOL blog post * doc: update release date --------- Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> Co-authored-by: Michael Dawson <mdawson@devrus.com> --- .../updates-cve-for-end-of-life.md | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 apps/site/pages/en/blog/vulnerability/updates-cve-for-end-of-life.md diff --git a/apps/site/pages/en/blog/vulnerability/updates-cve-for-end-of-life.md b/apps/site/pages/en/blog/vulnerability/updates-cve-for-end-of-life.md new file mode 100644 index 0000000000000..23aec38cce35e --- /dev/null +++ b/apps/site/pages/en/blog/vulnerability/updates-cve-for-end-of-life.md @@ -0,0 +1,88 @@ +--- +date: '2025-03-07T16:00:00.000Z' +category: vulnerability +title: Updates on CVE for End-of-Life Versions +layout: blog-post +author: Rafael Gonzaga +--- + +# Update on the issuance of CVEs to mark End-of-Life Node.js Versions + +**TL;DR:** CVE-2025-23087, CVE-2025-23088, and CVE-2025-23089 issued to +tag EOL versions have been rejected by MITRE. +The Node.js team has, therefore, decided to update previous vulnerability specific +CVEs to cover EOL releases, reflecting their ongoing security risks. This means that +all new CVEs issued will include EOL releases in the applicability until we have specific +information that indicates a CVE does not apply to an EOL release line. The project +does not plan to evaluate CVEs against EOL lines but information provided to the +project may be used to update the applicability if/when it is available. + +On January 21, 2025, Node.js released security patches for four active release +lines. At the same time, CVEs were assigned to cover EOL (end-of-life) versions: + +- **CVE-2025-23087:** Applies to Node.js v17 and all earlier versions (including v0.x). +- **CVE-2025-23088:** Applies to Node.js v19. +- **CVE-2025-23089:** Applies to Node.js v21. + +For more details, refer to the original announcement: [Node.js Vulnerability Announcement](https://nodejs.org/en/blog/vulnerability/upcoming-cve-for-eol-versions). + +## Why Node.js Does Not Evaluate EOL Versions + +Due to resource constraints, Node.js does not assess security reports for EOL +releases or include them in regular CVE version ranges. With over 20 EOL +versions—each with different dependencies, build processes, and +platform support—comprehensive vulnerability assessments are not feasible. + +Limiting reviews to a subset of EOL versions could lead to inaccuracies, as +vulnerabilities may appear differently based on underlying components like OpenSSL. +Thus, the focus remains on actively supported releases. + +> "Why did the Node.js project issue a CVE for all EOL releases? Because we +> don’t have the resources to evaluate every single past release to know which +> are vulnerable. Node.js is run by volunteers. We have sufficient funding to +> maintain current releases, but not beyond that. In other words, all past Node.js +> releases are vulnerable or will soon be. This CVE highlights that risk for your +> organization." +> — Matteo Collina ([Source](https://x.com/matteocollina/status/1882892694722101326)) + +## Purpose of Issuing These CVEs + +Security scanners in production environments trigger alerts when an active +Node.js version is flagged as vulnerable, prompting an upgrade. If an EOL +version is not listed as affected, users might mistakenly consider their setup +secure. The Node.js Technical Steering Committee (TSC) noted that outdated +versions, such as Node.js v16 (which, despite being EOL for over a year, still +sees 11 million downloads per month), continue to be widely used. + +Assigning CVEs to EOL versions directly communicates the associated security +risks to organizations. + +## Recent CVE Updates + +Following consultations with the CVE Program, HackerOne, and Node.js, further +updates were made to these CVEs: + +- MITRE has tagged the CVEs with "unsupported when assigned" and marked them as "disputed" since they do not pinpoint a specific vulnerability. +- A note has been added indicating that using the CVE List to report an unsupported product is a new approach under review. + +Ultimately, the Board decided to **reject** these CVEs. However, this decision +does not determine the long-term stance of the CVE Program on EOL support. +The Board will continue discussing potential solutions for managing EOL versions. + +Therefore, the only _viable_ solution to reflect the risk of running and EOL +line is to update previous CVEs to cover EOL releases, reflecting +their ongoing security risks. The process is being tracked in +[nodejs/security-wg#1443](https://github.com/nodejs/security-wg/issues/1443). + +## Questions and Feedback + +We understand that upgrading may require effort, and we’re here to help. If you have +any questions or need assistance, please reach out to us via: + +- [Node.js Help Repository](https://github.com/nodejs/help) + +For organizations or developers who require continued use of EOL Node.js versions, +the [OpenJS Ecosystem Sustainability Program](https://nodejs.org/en/about/previous-releases#commercial-support) +provides commercial support options. + +Thank you for your attention to this important matter. From 48847aa060ca97868a5e9daf41102f89b8a8f7c0 Mon Sep 17 00:00:00 2001 From: Nihat <abdullazadenihat@gmail.com> Date: Fri, 7 Mar 2025 09:42:22 -0800 Subject: [PATCH 0331/1385] =?UTF-8?q?Fix=20typo:=20rename=20outoutPath=20t?= =?UTF-8?q?o=20outputPath=20in=20"reading-files-with-node=E2=80=A6=20(#753?= =?UTF-8?q?8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix typo: rename outoutPath to outputPath in "reading-files-with-nodejs.md" Signed-off-by: Nihat <abdullazadenihat@gmail.com> --- .../learn/manipulating-files/reading-files-with-nodejs.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md index 450d756d37a97..260515e7477d0 100644 --- a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md +++ b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md @@ -97,15 +97,15 @@ import { pipeline } from 'node:stream/promises'; const fileUrl = 'https://www.gutenberg.org/files/2701/2701-0.txt'; const outputFilePath = path.join(process.cwd(), 'moby.md'); -async function downloadFile(url, outoutPath) { +async function downloadFile(url, outputPath) { const response = await fetch(url); if (!response.ok || !response.body) { throw new Error(`Failed to fetch ${url}. Status: ${response.status}`); } - const fileStream = fs.createWriteStream(outoutPath); - console.log(`Downloading file from ${url} to ${outoutPath}`); + const fileStream = fs.createWriteStream(outputPath); + console.log(`Downloading file from ${url} to ${outputPath}`); await pipeline(response.body, fileStream); console.log('File downloaded successfully'); From 5cd3b8d88bc0e2cac321973bd135b63753731042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= <rpfos@naver.com> Date: Sat, 8 Mar 2025 21:05:51 +0900 Subject: [PATCH 0332/1385] docs: add missing backticks to `introduction-to-nodejs.md` (#7539) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hello, I've added missing backticks to `introduction-to-nodejs.md`. I believe that `statusCode`, `200`, and `Content-Type` are code related values, so they must be wrapped in backticks (inline code blocks). Signed-off-by: 루밀LuMir <rpfos@naver.com> --- .../pages/en/learn/getting-started/introduction-to-nodejs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md b/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md index c43edd32f54bf..81908863eda01 100644 --- a/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md +++ b/apps/site/pages/en/learn/getting-started/introduction-to-nodejs.md @@ -83,9 +83,9 @@ In this case with: res.statusCode = 200; ``` -we set the statusCode property to 200, to indicate a successful response. +we set the `statusCode` property to `200`, to indicate a successful response. -We set the Content-Type header: +We set the `Content-Type` header: ```js res.setHeader('Content-Type', 'text/plain'); From 8124f8d6426d70e453703c4d6f872b581dbe58b5 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Sat, 8 Mar 2025 09:14:55 -0600 Subject: [PATCH 0333/1385] revert #7529 consistent failures on download --- .github/workflows/translations-sync.yml | 2 +- .github/workflows/translations-upload.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index a91df0e840c56..22ca200e7fe8e 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -37,7 +37,7 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: Crowdin PR - uses: crowdin/github-action@2cc7959c565767d6bc118118d6df3b63bf361370 # v2.6.1 + uses: crowdin/github-action@b811e495831e49ff516e7c801f7c5546879b9ee7 # v2.5.2 id: crowdin_pr with: # do not upload anything - this is a one-way operation download diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml index 819b49dc5021d..bb25007f20e65 100644 --- a/.github/workflows/translations-upload.yml +++ b/.github/workflows/translations-upload.yml @@ -27,7 +27,7 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: crowdin action - uses: crowdin/github-action@2cc7959c565767d6bc118118d6df3b63bf361370 # v2.6.1 + uses: crowdin/github-action@b811e495831e49ff516e7c801f7c5546879b9ee7 # v2.5.2 with: # only upload sources, ensuring this is a one-way operation upload_sources: true From 45d9fffbad160aae7df694eec95ef3eda51eca0d Mon Sep 17 00:00:00 2001 From: Claudio W <cwunder@gnome.org> Date: Wed, 12 Mar 2025 11:25:27 +0000 Subject: [PATCH 0334/1385] Add DigitalOcean to thanks section of README (#7547) * Add DigitalOcean to thanks section of README Fixes #7546 Add DigitalOcean to the thanks section of the README. * Add a note in the `README.md` file to thank DigitalOcean for generously providing Node.js with credits as part of their open source program. * Add a note in the `apps/site/README.md` file to thank DigitalOcean for generously providing Node.js with credits as part of their open source program. --- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/nodejs/nodejs.org/issues/7546?shareId=XXXX-XXXX-XXXX-XXXX). --- README.md | 1 + apps/site/README.md | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 apps/site/README.md diff --git a/README.md b/README.md index 154ef3a32e853..572b6f53a0bd7 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,7 @@ These are maintained in different repositories and we urge users to open **issue - Thanks to [Sentry](https://sentry.io/welcome/) for providing an open source license for their error reporting, monitoring and diagnostic tools. - Thanks to [Crowdin](https://crowdin.com/) for providing a platform that allows us to localize the Node.js Website and collaborate with translators. - Thanks to [Orama](https://docs.oramasearch.com/) for providing a search platform that indexes our expansive content and provides lightning-fast results for our users. +- Thanks to [DigitalOcean](https://www.digitalocean.com/) for generously providing Node.js with credits as part of their open source program. [code of conduct]: https://github.com/nodejs/admin/blob/main/CODE_OF_CONDUCT.md [contribution guidelines]: https://github.com/nodejs/nodejs.org/blob/main/CONTRIBUTING.md diff --git a/apps/site/README.md b/apps/site/README.md deleted file mode 100644 index 49dcc7a74dcae..0000000000000 --- a/apps/site/README.md +++ /dev/null @@ -1 +0,0 @@ -# Node.js website From 9039a0b80625b672913b6d9d5606c0dfd5f11684 Mon Sep 17 00:00:00 2001 From: Marco Ippolito <marcoippolito54@gmail.com> Date: Thu, 13 Mar 2025 14:30:53 +0100 Subject: [PATCH 0335/1385] Blog: v20.19.0 release post (#7549) Refs: https://github.com/nodejs/node/pull/57349 --- apps/site/pages/en/blog/release/v20.19.0.md | 284 ++++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v20.19.0.md diff --git a/apps/site/pages/en/blog/release/v20.19.0.md b/apps/site/pages/en/blog/release/v20.19.0.md new file mode 100644 index 0000000000000..dbc74039ee20e --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.19.0.md @@ -0,0 +1,284 @@ +--- +date: '2025-03-13T13:18:23.825Z' +category: release +title: Node v20.19.0 (LTS) +layout: blog-post +author: Marco Ippolito +--- + +## 2025-03-13, Version 20.19.0 'Iron' (LTS), @marco-ippolito + +This is a special minor release. +Although v20 is in maintenance mode, meaning only patch releases are expected, +an exception was made to backport `require(esm)` due to its importance and impact on the ecosystem. + +### Notable Changes + +### require(esm) is now enabled by default + +Support for loading native ES modules using require() had been available on v20.x under the command line flag --experimental-require-module, and available by default on v22.x and v23.x. In this release, it is now no longer behind a flag on v20.x. + +This feature has been tested on v23.x and v22.x, and we are looking for user feedback from v20.x to make more final tweaks before fully stabilizing it. When the Node.js instance encounters a native ES module in require() somewhere outside `node_modules` 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) + +### Module syntax detection is now enabled by default + +Module syntax detection (the `--experimental-detect-module` flag) is now +enabled by default. Use `--no-experimental-detect-module` to disable it if +needed. + +Syntax detection attempts to run ambiguous files as CommonJS, and if the module +fails to parse as CommonJS due to ES module syntax, Node.js tries again and runs +the file as an ES module. +Ambiguous files are those with a `.js` or no extension, where the nearest parent +`package.json` has no `"type"` field (either `"type": "module"` or +`"type": "commonjs"`). +Syntax detection should have no performance impact on CommonJS modules, but it +incurs a slight performance penalty for ES modules; add `"type": "module"` to +the nearest parent `package.json` file to eliminate the performance cost. +A use case unlocked by this feature is the ability to use ES module syntax in +extensionless scripts with no nearby `package.json`. + +Thanks to Geoffrey Booth for making this work on [#53619](https://github.com/nodejs/node/pull/53619). + +### Other Notable Changes + +- \[[`285bb4ee14`](https://github.com/nodejs/node/commit/285bb4ee14)] - **crypto**: update root certificates to NSS 3.107 (Node.js GitHub Bot) [#56566](https://github.com/nodejs/node/pull/56566) +- \[[`73b5c16684`](https://github.com/nodejs/node/commit/73b5c16684)] - **(SEMVER-MINOR)** **worker**: add postMessageToThread (Paolo Insogna) [#53682](https://github.com/nodejs/node/pull/53682) +- \[[`de313b2336`](https://github.com/nodejs/node/commit/de313b2336)] - **(SEMVER-MINOR)** **module**: only emit require(esm) warning under --trace-require-module (Joyee Cheung) [#56194](https://github.com/nodejs/node/pull/56194) +- \[[`4fba01911d`](https://github.com/nodejs/node/commit/4fba01911d)] - **(SEMVER-MINOR)** **process**: add process.features.require_module (Joyee Cheung) [#55241](https://github.com/nodejs/node/pull/55241) +- \[[`df8a045afe`](https://github.com/nodejs/node/commit/df8a045afe)] - **(SEMVER-MINOR)** **module**: implement the "module-sync" exports condition (Joyee Cheung) [#54648](https://github.com/nodejs/node/pull/54648) +- \[[`f9dc1eaef5`](https://github.com/nodejs/node/commit/f9dc1eaef5)] - **(SEMVER-MINOR)** **module**: add \_\_esModule to require()'d ESM (Joyee Cheung) [#52166](https://github.com/nodejs/node/pull/52166) + +### Commits + +- \[[`d84be843e3`](https://github.com/nodejs/node/commit/d84be843e3)] - **benchmark**: add validateStream to styleText bench (Rafael Gonzaga) [#56556](https://github.com/nodejs/node/pull/56556) +- \[[`d8eaf5b9b8`](https://github.com/nodejs/node/commit/d8eaf5b9b8)] - **build**: fix compatibility with V8's `depot_tools` (Richard Lau) [#57330](https://github.com/nodejs/node/pull/57330) +- \[[`1ee4bf9690`](https://github.com/nodejs/node/commit/1ee4bf9690)] - **build**: test macos-13 on GitHub actions (Michaël Zasso) [#56307](https://github.com/nodejs/node/pull/56307) +- \[[`1cc8d69882`](https://github.com/nodejs/node/commit/1cc8d69882)] - **build**: build v8 with -fvisibility=hidden on macOS (Joyee Cheung) [#56275](https://github.com/nodejs/node/pull/56275) +- \[[`52f1f7e22b`](https://github.com/nodejs/node/commit/52f1f7e22b)] - **child_process**: fix parsing messages with splitted length field (Maksim Gorkov) [#56106](https://github.com/nodejs/node/pull/56106) +- \[[`5ef3c3c996`](https://github.com/nodejs/node/commit/5ef3c3c996)] - **crypto**: add missing return value check (Michael Dawson) [#56615](https://github.com/nodejs/node/pull/56615) +- \[[`285bb4ee14`](https://github.com/nodejs/node/commit/285bb4ee14)] - **crypto**: update root certificates to NSS 3.107 (Node.js GitHub Bot) [#56566](https://github.com/nodejs/node/pull/56566) +- \[[`46ceb9dc1c`](https://github.com/nodejs/node/commit/46ceb9dc1c)] - **deps**: update timezone to 2025a (Node.js GitHub Bot) [#56876](https://github.com/nodejs/node/pull/56876) +- \[[`d4ca38fe8e`](https://github.com/nodejs/node/commit/d4ca38fe8e)] - **deps**: macro ENODATA is deprecated in libc++ (Cheng) [#56698](https://github.com/nodejs/node/pull/56698) +- \[[`15214e6508`](https://github.com/nodejs/node/commit/15214e6508)] - **deps**: update simdutf to 6.0.3 (Node.js GitHub Bot) [#56567](https://github.com/nodejs/node/pull/56567) +- \[[`1e44f5d84b`](https://github.com/nodejs/node/commit/1e44f5d84b)] - **deps**: update simdutf to 5.7.2 (Node.js GitHub Bot) [#56388](https://github.com/nodejs/node/pull/56388) +- \[[`b92ff7be38`](https://github.com/nodejs/node/commit/b92ff7be38)] - **deps**: update googletest to 7d76a23 (Node.js GitHub Bot) [#56387](https://github.com/nodejs/node/pull/56387) +- \[[`e1b71a81a9`](https://github.com/nodejs/node/commit/e1b71a81a9)] - **deps**: update googletest to e54519b (Node.js GitHub Bot) [#56370](https://github.com/nodejs/node/pull/56370) +- \[[`c0d45e7f38`](https://github.com/nodejs/node/commit/c0d45e7f38)] - **deps**: update simdutf to 5.7.0 (Node.js GitHub Bot) [#56332](https://github.com/nodejs/node/pull/56332) +- \[[`d69107f5a8`](https://github.com/nodejs/node/commit/d69107f5a8)] - **deps**: update icu to 76.1 (Node.js GitHub Bot) [#55551](https://github.com/nodejs/node/pull/55551) +- \[[`5c9a397699`](https://github.com/nodejs/node/commit/5c9a397699)] - **deps**: V8: backport 9ab40592f697 (Lu Yahan) [#56781](https://github.com/nodejs/node/pull/56781) +- \[[`8342233f6d`](https://github.com/nodejs/node/commit/8342233f6d)] - **deps**: update corepack to 0.31.0 (Node.js GitHub Bot) [#56795](https://github.com/nodejs/node/pull/56795) +- \[[`561493d35e`](https://github.com/nodejs/node/commit/561493d35e)] - **deps,src**: simplify base64 encoding (Daniel Lemire) [#52714](https://github.com/nodejs/node/pull/52714) +- \[[`6207b2936c`](https://github.com/nodejs/node/commit/6207b2936c)] - **doc**: move anatoli to emeritus (Michael Dawson) [#56592](https://github.com/nodejs/node/pull/56592) +- \[[`b0ab483400`](https://github.com/nodejs/node/commit/b0ab483400)] - **doc**: fix styles of the expandable TOC (Antoine du Hamel) [#56755](https://github.com/nodejs/node/pull/56755) +- \[[`53e4dc2a82`](https://github.com/nodejs/node/commit/53e4dc2a82)] - **doc**: add "Skip to content" button (Antoine du Hamel) [#56750](https://github.com/nodejs/node/pull/56750) +- \[[`33ee4645c3`](https://github.com/nodejs/node/commit/33ee4645c3)] - **doc**: improve accessibility of expandable lists (Antoine du Hamel) [#56749](https://github.com/nodejs/node/pull/56749) +- \[[`b514438418`](https://github.com/nodejs/node/commit/b514438418)] - **doc**: add note regarding commit message trailers (Dario Piotrowicz) [#56736](https://github.com/nodejs/node/pull/56736) +- \[[`627f2997e3`](https://github.com/nodejs/node/commit/627f2997e3)] - **doc**: fix typo in example code for util.styleText (Robin Mehner) [#56720](https://github.com/nodejs/node/pull/56720) +- \[[`68548dcb48`](https://github.com/nodejs/node/commit/68548dcb48)] - **doc**: fix inconsistencies in `WeakSet` and `WeakMap` comparison details (Shreyans Pathak) [#56683](https://github.com/nodejs/node/pull/56683) +- \[[`337cfb2549`](https://github.com/nodejs/node/commit/337cfb2549)] - **doc**: add RafaelGSS as latest sec release stewards (Rafael Gonzaga) [#56682](https://github.com/nodejs/node/pull/56682) +- \[[`e890c86d7b`](https://github.com/nodejs/node/commit/e890c86d7b)] - **doc**: clarify cjs/esm diff in `queueMicrotask()` vs `process.nextTick()` (Dario Piotrowicz) [#56659](https://github.com/nodejs/node/pull/56659) +- \[[`978263923f`](https://github.com/nodejs/node/commit/978263923f)] - **doc**: `WeakSet` and `WeakMap` comparison details (Shreyans Pathak) [#56648](https://github.com/nodejs/node/pull/56648) +- \[[`aba280ccd8`](https://github.com/nodejs/node/commit/aba280ccd8)] - **doc**: mention prepare --security (Rafael Gonzaga) [#56617](https://github.com/nodejs/node/pull/56617) +- \[[`0a009a527b`](https://github.com/nodejs/node/commit/0a009a527b)] - **doc**: tweak info on reposts in ambassador program (Michael Dawson) [#56589](https://github.com/nodejs/node/pull/56589) +- \[[`d2f09e2ab3`](https://github.com/nodejs/node/commit/d2f09e2ab3)] - **doc**: add type stripping to ambassadors program (Marco Ippolito) [#56598](https://github.com/nodejs/node/pull/56598) +- \[[`b0b77d7fbe`](https://github.com/nodejs/node/commit/b0b77d7fbe)] - **doc**: improve internal documentation on built-in snapshot (Joyee Cheung) [#56505](https://github.com/nodejs/node/pull/56505) +- \[[`4b3e7fee94`](https://github.com/nodejs/node/commit/4b3e7fee94)] - **doc**: document CLI way to open the nodejs/bluesky PR (Antoine du Hamel) [#56506](https://github.com/nodejs/node/pull/56506) +- \[[`03878b0384`](https://github.com/nodejs/node/commit/03878b0384)] - **doc**: update gcc-version for ubuntu-lts (Kunal Kumar) [#56553](https://github.com/nodejs/node/pull/56553) +- \[[`acbbd7c1a6`](https://github.com/nodejs/node/commit/acbbd7c1a6)] - **doc**: fix parentheses in options (Tobias Nießen) [#56563](https://github.com/nodejs/node/pull/56563) +- \[[`3fe80c30b8`](https://github.com/nodejs/node/commit/3fe80c30b8)] - **doc**: include CVE to EOL lines as sec release process (Rafael Gonzaga) [#56520](https://github.com/nodejs/node/pull/56520) +- \[[`ff8af58046`](https://github.com/nodejs/node/commit/ff8af58046)] - **doc**: add esm examples to node:trace_events (Alfredo González) [#56514](https://github.com/nodejs/node/pull/56514) +- \[[`27b9cfd135`](https://github.com/nodejs/node/commit/27b9cfd135)] - **doc**: add message for Ambassadors to promote (Michael Dawson) [#56235](https://github.com/nodejs/node/pull/56235) +- \[[`020c939da1`](https://github.com/nodejs/node/commit/020c939da1)] - **doc**: allow request for TSC reviews via the GitHub UI (Antoine du Hamel) [#56493](https://github.com/nodejs/node/pull/56493) +- \[[`1ef9c9a354`](https://github.com/nodejs/node/commit/1ef9c9a354)] - **doc**: add example for piping ReadableStream (Gabriel Schulhof) [#56415](https://github.com/nodejs/node/pull/56415) +- \[[`e675c3a7fc`](https://github.com/nodejs/node/commit/e675c3a7fc)] - **doc**: expand description of `parseArg`'s `default` (Kevin Gibbons) [#54431](https://github.com/nodejs/node/pull/54431) +- \[[`bc756da876`](https://github.com/nodejs/node/commit/bc756da876)] - **doc**: use `<ul>` instead of `<ol>` in `SECURITY.md` (Antoine du Hamel) [#56346](https://github.com/nodejs/node/pull/56346) +- \[[`ad59c82a49`](https://github.com/nodejs/node/commit/ad59c82a49)] - **doc**: clarify that WASM is trusted (Matteo Collina) [#56345](https://github.com/nodejs/node/pull/56345) +- \[[`8e76cc69e5`](https://github.com/nodejs/node/commit/8e76cc69e5)] - **doc**: move dual package shipping docs to separate repo (Joyee Cheung) [#55444](https://github.com/nodejs/node/pull/55444) +- \[[`9fda8e29cd`](https://github.com/nodejs/node/commit/9fda8e29cd)] - **doc**: mark `--env-file-if-exists` flag as experimental (Juan José) [#56893](https://github.com/nodejs/node/pull/56893) +- \[[`9e975f1a7d`](https://github.com/nodejs/node/commit/9e975f1a7d)] - **doc**: fix link and history of `SourceMap` sections (Antoine du Hamel) [#57098](https://github.com/nodejs/node/pull/57098) +- \[[`64ce95b8fc`](https://github.com/nodejs/node/commit/64ce95b8fc)] - **doc**: update `require(ESM)` history and stability status (Antoine du Hamel) [#55199](https://github.com/nodejs/node/pull/55199) +- \[[`697a39248b`](https://github.com/nodejs/node/commit/697a39248b)] - **doc**: fix history of `process.features` (Antoine du Hamel) [#54897](https://github.com/nodejs/node/pull/54897) +- \[[`7c38e503a3`](https://github.com/nodejs/node/commit/7c38e503a3)] - **doc**: add documentation for process.features (Marco Ippolito) [#54897](https://github.com/nodejs/node/pull/54897) +- \[[`c85b386a39`](https://github.com/nodejs/node/commit/c85b386a39)] - **esm**: fix jsdoc type refs to `ModuleJobBase` in esm/loader (Jacob Smith) [#56499](https://github.com/nodejs/node/pull/56499) +- \[[`4813a6a66c`](https://github.com/nodejs/node/commit/4813a6a66c)] - **esm**: throw `ERR_REQUIRE_ESM` instead of `ERR_INTERNAL_ASSERTION` (Antoine du Hamel) [#54868](https://github.com/nodejs/node/pull/54868) +- \[[`0d327c8e47`](https://github.com/nodejs/node/commit/0d327c8e47)] - **esm**: refactor `get_format` (Antoine du Hamel) [#53872](https://github.com/nodejs/node/pull/53872) +- \[[`e87db6c9bc`](https://github.com/nodejs/node/commit/e87db6c9bc)] - **events**: add hasEventListener util for validate (Sunghoon) [#55230](https://github.com/nodejs/node/pull/55230) +- \[[`674b932f33`](https://github.com/nodejs/node/commit/674b932f33)] - **http**: don't emit error after destroy (Robert Nagy) [#55457](https://github.com/nodejs/node/pull/55457) +- \[[`4c24ef8f71`](https://github.com/nodejs/node/commit/4c24ef8f71)] - **http2**: omit server name when HTTP2 host is IP address (islandryu) [#56530](https://github.com/nodejs/node/pull/56530) +- \[[`533afe8124`](https://github.com/nodejs/node/commit/533afe8124)] - **lib**: reduce amount of caught URL errors (Yagiz Nizipli) [#52658](https://github.com/nodejs/node/pull/52658) +- \[[`34221a1d6e`](https://github.com/nodejs/node/commit/34221a1d6e)] - **lib**: allow CJS source map cache to be reclaimed (Chengzhong Wu) [#51711](https://github.com/nodejs/node/pull/51711) +- \[[`f13589f1f9`](https://github.com/nodejs/node/commit/f13589f1f9)] - **lib,src**: iterate module requests of a module wrap in JS (Chengzhong Wu) [#52058](https://github.com/nodejs/node/pull/52058) +- \[[`6afee9ea43`](https://github.com/nodejs/node/commit/6afee9ea43)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#56580](https://github.com/nodejs/node/pull/56580) +- \[[`85bb738739`](https://github.com/nodejs/node/commit/85bb738739)] - **meta**: add codeowners of security release document (Rafael Gonzaga) [#56521](https://github.com/nodejs/node/pull/56521) +- \[[`48f9ca0992`](https://github.com/nodejs/node/commit/48f9ca0992)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#56342](https://github.com/nodejs/node/pull/56342) +- \[[`4d724121b4`](https://github.com/nodejs/node/commit/4d724121b4)] - **meta**: move MoLow to TSC regular member (Moshe Atlow) [#56276](https://github.com/nodejs/node/pull/56276) +- \[[`5e2dab7868`](https://github.com/nodejs/node/commit/5e2dab7868)] - **module**: fix bad `require.resolve` with option paths for `.` and `..` (Dario Piotrowicz) [#56735](https://github.com/nodejs/node/pull/56735) +- \[[`f507c05060`](https://github.com/nodejs/node/commit/f507c05060)] - **module**: simplify --inspect-brk handling (Joyee Cheung) [#55679](https://github.com/nodejs/node/pull/55679) +- \[[`ed2d373e5a`](https://github.com/nodejs/node/commit/ed2d373e5a)] - **module**: disable require(esm) for policy and network import (Joyee Cheung) [#56927](https://github.com/nodejs/node/pull/56927) +- \[[`de313b2336`](https://github.com/nodejs/node/commit/de313b2336)] - **(SEMVER-MINOR)** **module**: only emit require(esm) warning under --trace-require-module (Joyee Cheung) [#56194](https://github.com/nodejs/node/pull/56194) +- \[[`3d89e6b6fa`](https://github.com/nodejs/node/commit/3d89e6b6fa)] - **module**: mark evaluation rejection in require(esm) as handled (Joyee Cheung) [#56122](https://github.com/nodejs/node/pull/56122) +- \[[`e01dd4bd4f`](https://github.com/nodejs/node/commit/e01dd4bd4f)] - **module**: do not warn when require(esm) comes from node_modules (Joyee Cheung) [#55960](https://github.com/nodejs/node/pull/55960) +- \[[`011e6e0032`](https://github.com/nodejs/node/commit/011e6e0032)] - **module**: fix error thrown from require(esm) hitting TLA repeatedly (Joyee Cheung) [#55520](https://github.com/nodejs/node/pull/55520) +- \[[`fdf50289c6`](https://github.com/nodejs/node/commit/fdf50289c6)] - **module**: trim off internal stack frames for require(esm) warnings (Joyee Cheung) [#55496](https://github.com/nodejs/node/pull/55496) +- \[[`8d33f78ca5`](https://github.com/nodejs/node/commit/8d33f78ca5)] - **module**: allow ESM that failed to be required to be re-imported (Joyee Cheung) [#55502](https://github.com/nodejs/node/pull/55502) +- \[[`8192dd6cf3`](https://github.com/nodejs/node/commit/8192dd6cf3)] - **module**: include module information in require(esm) warning (Joyee Cheung) [#55397](https://github.com/nodejs/node/pull/55397) +- \[[`1db210a0ec`](https://github.com/nodejs/node/commit/1db210a0ec)] - **module**: check --experimental-require-module separately from detection (Joyee Cheung) [#55250](https://github.com/nodejs/node/pull/55250) +- \[[`cf8701c866`](https://github.com/nodejs/node/commit/cf8701c866)] - **module**: use kNodeModulesRE to detect node_modules (Joyee Cheung) [#55243](https://github.com/nodejs/node/pull/55243) +- \[[`dc66632261`](https://github.com/nodejs/node/commit/dc66632261)] - **module**: support 'module.exports' interop export in require(esm) (Guy Bedford) [#54563](https://github.com/nodejs/node/pull/54563) +- \[[`1ac1dda9a4`](https://github.com/nodejs/node/commit/1ac1dda9a4)] - **(SEMVER-MINOR)** **module**: unflag --experimental-require-module (Joyee Cheung) [#55085](https://github.com/nodejs/node/pull/55085) +- \[[`683c93f45f`](https://github.com/nodejs/node/commit/683c93f45f)] - **module**: refator ESM loader for adding future synchronous hooks (Joyee Cheung) [#54769](https://github.com/nodejs/node/pull/54769) +- \[[`df8a045afe`](https://github.com/nodejs/node/commit/df8a045afe)] - **(SEMVER-MINOR)** **module**: implement the "module-sync" exports condition (Joyee Cheung) [#54648](https://github.com/nodejs/node/pull/54648) +- \[[`249d82b686`](https://github.com/nodejs/node/commit/249d82b686)] - **module**: report unfinished TLA in ambiguous modules (Antoine du Hamel) [#54980](https://github.com/nodejs/node/pull/54980) +- \[[`1925d729f9`](https://github.com/nodejs/node/commit/1925d729f9)] - **module**: remove bogus assertion in CJS entrypoint handling with --import (Joyee Cheung) [#54592](https://github.com/nodejs/node/pull/54592) +- \[[`d1331fccb2`](https://github.com/nodejs/node/commit/d1331fccb2)] - **module**: do not warn for typeless package.json when there isn't one (Joyee Cheung) [#54045](https://github.com/nodejs/node/pull/54045) +- \[[`9916458b44`](https://github.com/nodejs/node/commit/9916458b44)] - **(SEMVER-MINOR)** **module**: unflag detect-module (Geoffrey Booth) [#53619](https://github.com/nodejs/node/pull/53619) +- \[[`f9dc1eaef5`](https://github.com/nodejs/node/commit/f9dc1eaef5)] - **(SEMVER-MINOR)** **module**: add \_\_esModule to require()'d ESM (Joyee Cheung) [#52166](https://github.com/nodejs/node/pull/52166) +- \[[`b86f575504`](https://github.com/nodejs/node/commit/b86f575504)] - **module**: do not set CJS variables for Worker eval (Antoine du Hamel) [#53050](https://github.com/nodejs/node/pull/53050) +- \[[`30ed93db12`](https://github.com/nodejs/node/commit/30ed93db12)] - **module**: cache synchronous module jobs before linking (Joyee Cheung) [#52868](https://github.com/nodejs/node/pull/52868) +- \[[`a03faf289d`](https://github.com/nodejs/node/commit/a03faf289d)] - **module**: support ESM detection in the CJS loader (Joyee Cheung) [#52047](https://github.com/nodejs/node/pull/52047) +- \[[`b07ad39bda`](https://github.com/nodejs/node/commit/b07ad39bda)] - **module**: detect ESM syntax by trying to recompile as SourceTextModule (Joyee Cheung) [#52413](https://github.com/nodejs/node/pull/52413) +- \[[`132a5c190f`](https://github.com/nodejs/node/commit/132a5c190f)] - **module**: eliminate performance cost of detection for cjs entry (Geoffrey Booth) [#52093](https://github.com/nodejs/node/pull/52093) +- \[[`55a57a189f`](https://github.com/nodejs/node/commit/55a57a189f)] - **node-api**: remove deprecated attribute from napi_module_register (Vladimir Morozov) [#56162](https://github.com/nodejs/node/pull/56162) +- \[[`4fba01911d`](https://github.com/nodejs/node/commit/4fba01911d)] - **(SEMVER-MINOR)** **process**: add process.features.require_module (Joyee Cheung) [#55241](https://github.com/nodejs/node/pull/55241) +- \[[`c0fad18ac0`](https://github.com/nodejs/node/commit/c0fad18ac0)] - **src**: add nullptr handling from X509_STORE_new() (Burkov Egor) [#56700](https://github.com/nodejs/node/pull/56700) +- \[[`5b88d48cbb`](https://github.com/nodejs/node/commit/5b88d48cbb)] - **src**: add default value for RSACipherConfig mode field (Burkov Egor) [#56701](https://github.com/nodejs/node/pull/56701) +- \[[`e3b69e57a6`](https://github.com/nodejs/node/commit/e3b69e57a6)] - **src**: fix build with GCC 15 (tjuhaszrh) [#56740](https://github.com/nodejs/node/pull/56740) +- \[[`a7c1d8c0e8`](https://github.com/nodejs/node/commit/a7c1d8c0e8)] - **src**: initialize FSReqWrapSync in path that uses it (Michaël Zasso) [#56613](https://github.com/nodejs/node/pull/56613) +- \[[`c06ac66356`](https://github.com/nodejs/node/commit/c06ac66356)] - **src**: fix undefined script name in error source (Chengzhong Wu) [#56502](https://github.com/nodejs/node/pull/56502) +- \[[`500f3ccc66`](https://github.com/nodejs/node/commit/500f3ccc66)] - **src**: lock the thread properly in snapshot builder (Joyee Cheung) [#56327](https://github.com/nodejs/node/pull/56327) +- \[[`cf25a5edeb`](https://github.com/nodejs/node/commit/cf25a5edeb)] - **src**: drain platform tasks before creating startup snapshot (Chengzhong Wu) [#56403](https://github.com/nodejs/node/pull/56403) +- \[[`8af1b53bb8`](https://github.com/nodejs/node/commit/8af1b53bb8)] - **src**: safely remove the last line from dotenv (Shima Ryuhei) [#55982](https://github.com/nodejs/node/pull/55982) +- \[[`bb57e909aa`](https://github.com/nodejs/node/commit/bb57e909aa)] - **src**: remove `base64` from `process.versions` (Richard Lau) [#53442](https://github.com/nodejs/node/pull/53442) +- \[[`b8c89a693e`](https://github.com/nodejs/node/commit/b8c89a693e)] - **src**: add `--env-file-if-exists` flag (Bosco Domingo) [#53060](https://github.com/nodejs/node/pull/53060) +- \[[`9097de073a`](https://github.com/nodejs/node/commit/9097de073a)] - **src**: don't match after `--` in `Dotenv::GetPathFromArgs` (Aviv Keller) [#54237](https://github.com/nodejs/node/pull/54237) +- \[[`ececd225b6`](https://github.com/nodejs/node/commit/ececd225b6)] - **src**: implement IsInsideNodeModules() in C++ (Joyee Cheung) [#55286](https://github.com/nodejs/node/pull/55286) +- \[[`18593b7d3e`](https://github.com/nodejs/node/commit/18593b7d3e)] - **src**: refactor embedded entrypoint loading (Joyee Cheung) [#53573](https://github.com/nodejs/node/pull/53573) +- \[[`d7aefc0524`](https://github.com/nodejs/node/commit/d7aefc0524)] - **stream**: fix typo in ReadableStreamBYOBReader.readIntoRequests (Mattias Buelens) [#56560](https://github.com/nodejs/node/pull/56560) +- \[[`fe5f7bcd47`](https://github.com/nodejs/node/commit/fe5f7bcd47)] - **stream**: validate undefined sizeAlgorithm in WritableStream (Jason Zhang) [#56067](https://github.com/nodejs/node/pull/56067) +- \[[`12744c1fd4`](https://github.com/nodejs/node/commit/12744c1fd4)] - **test**: reduce number of written chunks (Luigi Pinca) [#56757](https://github.com/nodejs/node/pull/56757) +- \[[`e121d7d62c`](https://github.com/nodejs/node/commit/e121d7d62c)] - **test**: fix invalid common.mustSucceed() usage (Luigi Pinca) [#56756](https://github.com/nodejs/node/pull/56756) +- \[[`11b82de7ed`](https://github.com/nodejs/node/commit/11b82de7ed)] - **test**: use strict mode in global setters test (Rich Trott) [#56742](https://github.com/nodejs/node/pull/56742) +- \[[`f9d6e35c5e`](https://github.com/nodejs/node/commit/f9d6e35c5e)] - **test**: cleanup and simplify test-crypto-aes-wrap (James M Snell) [#56748](https://github.com/nodejs/node/pull/56748) +- \[[`792ce98699`](https://github.com/nodejs/node/commit/792ce98699)] - **test**: do not use common.isMainThread (Luigi Pinca) [#56768](https://github.com/nodejs/node/pull/56768) +- \[[`4f0cf475e0`](https://github.com/nodejs/node/commit/4f0cf475e0)] - **test**: add test that uses multibyte for path and resolves modules (yamachu) [#56696](https://github.com/nodejs/node/pull/56696) +- \[[`3bc8d273c2`](https://github.com/nodejs/node/commit/3bc8d273c2)] - **test**: add missing test for env file (Jonas) [#56642](https://github.com/nodejs/node/pull/56642) +- \[[`ad39367712`](https://github.com/nodejs/node/commit/ad39367712)] - **test**: enforce strict mode in test-zlib-const (Rich Trott) [#56689](https://github.com/nodejs/node/pull/56689) +- \[[`ca79914137`](https://github.com/nodejs/node/commit/ca79914137)] - **test**: test-stream-compose.js doesn't need internals (Meghan Denny) [#56619](https://github.com/nodejs/node/pull/56619) +- \[[`08bde67101`](https://github.com/nodejs/node/commit/08bde67101)] - **test**: add maxCount and gcOptions to gcUntil() (Joyee Cheung) [#56522](https://github.com/nodejs/node/pull/56522) +- \[[`40a0f6f6e3`](https://github.com/nodejs/node/commit/40a0f6f6e3)] - **test**: mark test-worker-prof as flaky on smartos (Joyee Cheung) [#56583](https://github.com/nodejs/node/pull/56583) +- \[[`d17bf2f62a`](https://github.com/nodejs/node/commit/d17bf2f62a)] - **test**: update test-child-process-bad-stdio to use node:test (Colin Ihrig) [#56562](https://github.com/nodejs/node/pull/56562) +- \[[`5660b99b43`](https://github.com/nodejs/node/commit/5660b99b43)] - **test**: disable openssl 3.4.0 incompatible tests (Jelle van der Waa) [#56160](https://github.com/nodejs/node/pull/56160) +- \[[`861c99f351`](https://github.com/nodejs/node/commit/861c99f351)] - **test**: make test-crypto-hash compatible with OpenSSL > 3.4.0 (Jelle van der Waa) [#56160](https://github.com/nodejs/node/pull/56160) +- \[[`597a39b5f9`](https://github.com/nodejs/node/commit/597a39b5f9)] - **test**: update error code in tls-psk-circuit for for OpenSSL 3.4 (sebastianas) [#56420](https://github.com/nodejs/node/pull/56420) +- \[[`721e9e1217`](https://github.com/nodejs/node/commit/721e9e1217)] - **test**: add initial test426 coverage (Chengzhong Wu) [#56436](https://github.com/nodejs/node/pull/56436) +- \[[`cfe5380c44`](https://github.com/nodejs/node/commit/cfe5380c44)] - **test**: update test-set-http-max-http-headers to use node:test (Colin Ihrig) [#56439](https://github.com/nodejs/node/pull/56439) +- \[[`51ff71a87a`](https://github.com/nodejs/node/commit/51ff71a87a)] - **test**: update test-child-process-windows-hide to use node:test (Colin Ihrig) [#56437](https://github.com/nodejs/node/pull/56437) +- \[[`d6aca0cd89`](https://github.com/nodejs/node/commit/d6aca0cd89)] - **test**: increase spin for eventloop test on s390 (Michael Dawson) [#56228](https://github.com/nodejs/node/pull/56228) +- \[[`82461af6ec`](https://github.com/nodejs/node/commit/82461af6ec)] - **test**: migrate message eval tests from Python to JS (Yiyun Lei) [#50482](https://github.com/nodejs/node/pull/50482) +- \[[`5083bbb2bb`](https://github.com/nodejs/node/commit/5083bbb2bb)] - **test**: remove async-hooks/test-writewrap flaky designation (Luigi Pinca) [#56048](https://github.com/nodejs/node/pull/56048) +- \[[`b4b26e973d`](https://github.com/nodejs/node/commit/b4b26e973d)] - **test**: deflake test-esm-loader-hooks-inspect-brk (Luigi Pinca) [#56050](https://github.com/nodejs/node/pull/56050) +- \[[`182be26b8a`](https://github.com/nodejs/node/commit/182be26b8a)] - **test**: update WPT for url to 67880a4eb83ca9aa732eec4b35a1971ff5bf37ff (Node.js GitHub Bot) [#55999](https://github.com/nodejs/node/pull/55999) +- \[[`e67a84902f`](https://github.com/nodejs/node/commit/e67a84902f)] - **test_runner**: remove unused errors (Pietro Marchini) [#56607](https://github.com/nodejs/node/pull/56607) +- \[[`4274c6a015`](https://github.com/nodejs/node/commit/4274c6a015)] - **test_runner**: run single test file benchmark (Pietro Marchini) [#56479](https://github.com/nodejs/node/pull/56479) +- \[[`e57004458b`](https://github.com/nodejs/node/commit/e57004458b)] - **tools**: update doc to new version (Node.js GitHub Bot) [#56259](https://github.com/nodejs/node/pull/56259) +- \[[`e039f2b571`](https://github.com/nodejs/node/commit/e039f2b571)] - **tools**: do not throw on missing `create-release-proposal.sh` (Antoine du Hamel) [#56704](https://github.com/nodejs/node/pull/56704) +- \[[`9a1e314498`](https://github.com/nodejs/node/commit/9a1e314498)] - **tools**: fix tools-deps-update (Daniel Lemire) [#56684](https://github.com/nodejs/node/pull/56684) +- \[[`d6469b5287`](https://github.com/nodejs/node/commit/d6469b5287)] - **tools**: do not throw on missing `create-release-proposal.sh` (Antoine du Hamel) [#56695](https://github.com/nodejs/node/pull/56695) +- \[[`e162476fdc`](https://github.com/nodejs/node/commit/e162476fdc)] - **tools**: fix permissions in `lint-release-proposal` workflow (Antoine du Hamel) [#56614](https://github.com/nodejs/node/pull/56614) +- \[[`914b4675c8`](https://github.com/nodejs/node/commit/914b4675c8)] - **tools**: edit `create-release-proposal` workflow (Antoine du Hamel) [#56540](https://github.com/nodejs/node/pull/56540) +- \[[`4ff9aa7235`](https://github.com/nodejs/node/commit/4ff9aa7235)] - **tools**: validate commit list as part of `lint-release-commit` (Antoine du Hamel) [#56291](https://github.com/nodejs/node/pull/56291) +- \[[`589d0ae8ea`](https://github.com/nodejs/node/commit/589d0ae8ea)] - **tools**: fix loong64 build failed (Xiao-Tao) [#56466](https://github.com/nodejs/node/pull/56466) +- \[[`bc8c39bff8`](https://github.com/nodejs/node/commit/bc8c39bff8)] - **tools**: disable unneeded rule ignoring in Python linting (Rich Trott) [#56429](https://github.com/nodejs/node/pull/56429) +- \[[`3b130002bb`](https://github.com/nodejs/node/commit/3b130002bb)] - **tools**: add release line label when opening release proposal (Antoine du Hamel) [#56317](https://github.com/nodejs/node/pull/56317) +- \[[`73b5c16684`](https://github.com/nodejs/node/commit/73b5c16684)] - **(SEMVER-MINOR)** **worker**: add postMessageToThread (Paolo Insogna) [#53682](https://github.com/nodejs/node/pull/53682) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.19.0/node-v20.19.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.19.0/node-v20.19.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.19.0/node-v20.19.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.19.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.19.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.19.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.19.0/node-v20.19.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.19.0/node-v20.19.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.19.0/node-v20.19.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.19.0/node-v20.19.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.19.0/node-v20.19.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.19.0/node-v20.19.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.19.0/node-v20.19.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.19.0/node-v20.19.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.19.0/node-v20.19.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.19.0/node-v20.19.0.tar.gz \ +Other release files: https://nodejs.org/dist/v20.19.0/ \ +Documentation: https://nodejs.org/docs/v20.19.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +0609a0e76791783a3ff7845d55455ba071cb0c70d9f40880b23c2d7863acd16e node-v20.19.0-aix-ppc64.tar.gz +8c7e65cfe4ec208821ee8f6ecda8b3b6ed1cdffbf08ab6e886cd52a7154bc426 node-v20.19.0-arm64.msi +c016cd1975a264a29dc1b07c6fbe60d5df0a0c2beb4113c0450e3d998d1a0d9c node-v20.19.0-darwin-arm64.tar.gz +881a91a81481799f785ff251e3374e90c7ed3e0d6b89e830ffd3806d59338739 node-v20.19.0-darwin-arm64.tar.xz +a8554af97d6491fdbdabe63d3a1cfb9571228d25a3ad9aed2df856facb131b20 node-v20.19.0-darwin-x64.tar.gz +d0f34126b41532719035fdb3484d5c4210f18cd2489d6098dcc57802dfb80a71 node-v20.19.0-darwin-x64.tar.xz +800194e32cef4ee77f5a2e8c0e5dd2b4acb38b39ef2ea544929c181b949494bb node-v20.19.0-headers.tar.gz +cca8de2ca8d8cb0a61c657c90b6ca8d37ec2866332af0129f175042e1749b9b6 node-v20.19.0-headers.tar.xz +618e4294602b78e97118a39050116b70d088b16197cd3819bba1fc18b473dfc4 node-v20.19.0-linux-arm64.tar.gz +dbe339e55eb393955a213e6b872066880bb9feceaa494f4d44c7aac205ec2ab9 node-v20.19.0-linux-arm64.tar.xz +2deb2f333b42fcdeb0d215800b3d2b9af64dd88c1d0b05e67b980398d43c4dce node-v20.19.0-linux-armv7l.tar.gz +9b1509684988e5a343721baf6fce38dc66563921346f73b03ff5775d34ac4624 node-v20.19.0-linux-armv7l.tar.xz +a408067f48198c8ade06c09c5ad36f12b976bc801144ea4220ad850ee14b62a8 node-v20.19.0-linux-ppc64le.tar.gz +84937108f005679e60b486ed8e801cebfe923f02b76d8e710463d32f82181f65 node-v20.19.0-linux-ppc64le.tar.xz +08c3a52fcb1ddcc83d45eb7f6a1366d71d4d499114387e00af64c0e38c471034 node-v20.19.0-linux-s390x.tar.gz +11f8ee99d792a83bba7b29911e0229dd6cd5e88987d7416346067db1cc76d89a node-v20.19.0-linux-s390x.tar.xz +8a4dbcdd8bccef3132d21e8543940557e55dcf44f00f0a99ba8a062f4552e722 node-v20.19.0-linux-x64.tar.gz +b4e336584d62abefad31baecff7af167268be9bb7dd11f1297112e6eed3ca0d5 node-v20.19.0-linux-x64.tar.xz +59a26a91c664916de2d4eaa8bd039a40edf9a080e2cf799f5b1320620aed1da0 node-v20.19.0.pkg +658572c4a0f546b0c07ea64d53b396a19c425ff183924872cb34712a17e15332 node-v20.19.0.tar.gz +5ac2516fc905b6a0bc1a33e7302937eac664a820b887cc86bd48c035fba392d7 node-v20.19.0.tar.xz +43dda26cb68797540b1843185b408007d50806c2d4799e25c28a5596d58dc1c8 node-v20.19.0-win-arm64.7z +773325a26ad51a5ba857963825dee3a871eacef653c31d62e5492574c965accb node-v20.19.0-win-arm64.zip +aaa5903c0e33c242dfc3c0cc32a72ae44341ab8cba8eac819f8b11b3e333941b node-v20.19.0-win-x64.7z +be72284c7bc62de07d5a9fd0ae196879842c085f11f7f2b60bf8864c0c9d6a4f node-v20.19.0-win-x64.zip +fb3e7236b6a67d21e4d3be23670332175d2fa70af5fd8d32fb35ec868969c0fe node-v20.19.0-win-x86.7z +0d5dde8238fce3982342721d66e85cfbd3d3affa777bf248145c4dbaab6b7444 node-v20.19.0-win-x86.zip +e9032adb422bf332001a5d8c799621307b8f2f2f8bcf3071b8b6998923ddc20e node-v20.19.0-x64.msi +68d09bc053428bec1e1c76db1d3b73db8976af1387a0458a53c95b4f972f7427 node-v20.19.0-x86.msi +4ec1ae34fc7c0c65b35ec3688b9dc6d8ad5feca69d5ba45f7d72d559dc850fbb win-arm64/node.exe +a9d9a73785f8d95b98eed317c07ca34d4b2d59a45b425bab8b942795ab9236f1 win-arm64/node.lib +4e4c9631464328ceac80eb73ed60116c6e6181fc160329105b23ef9ac0f3097c win-arm64/node_pdb.7z +76876a35665f2e0d6f40415a798339904370fd0c19f92e9411e2531eb22aa06c win-arm64/node_pdb.zip +6e3a39787e667d50487f7335c85636c2823a53e636d73c2c841d45da4e57906c win-x64/node.exe +72f7ca3b33f0991e93e25521f7e78c8adf187df7d5223bf0efcb5e005420f327 win-x64/node.lib +f3ccba2a1faf67d642f300b23a6ff9116937ae14d444172061615886162fd335 win-x64/node_pdb.7z +07cbff5d671322bbcdc7eb69090794c9a171b552343547b71edfc232296c5616 win-x64/node_pdb.zip +6d2f2131f5ed14c04c0c2c7652f60f62dc1ca4bfb65fb539594e5b0ede86326b win-x86/node.exe +1e70659d1bb7706899c116a5fec9ae0f5e75b691d8c5b9ed55cef9cd05760988 win-x86/node.lib +bf14909bd0ae046ba43e1f6161925e0372eda1056cc5f525de8ad4b4a9729da4 win-x86/node_pdb.7z +4ed51daa06dbf2568eef1061b516905ddddf00bb4aacb8a6786a10b29c85aa8b win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEzGj1oxBv9EgyLkjtJ/XjjVsKIV8FAmfS2pEACgkQJ/XjjVsK +IV8ZHA/+MLLVL5T+0Q+JW+g2Lq4y6vnwhD00iEmCpANlZ4SPz9eZ/mQAsa0DGHkq +gs0rh2SRwMg5Zo1E8Dpjvzv9BVTkjSVb8lwz+dTgnOzD1A2iTUFHiBLHb6fJBbjI +XD3kooNF2pLzLfyMtkrDuCAroa8yxINx1q7CUzheMHvDJZEOE0P3eUZBIH+olrob +ok4dmjKed+MOg4sa8YPAc2mwtIN6K6suXJa+7frXVcL96UE4ReybMFGnbha23uby +cY0IggvzPF++ZtSzXiBrTIBYENqUxrtYONCT7mFoIGmmKtDRdOu+jTRdz3Q608Yg +LpmNVYRAkMLU/T04ePGfujnCA5T/v+r1lzkl8OnOYC+0WuzrwHCUEzAmIsLOy4sg +rL8bQwL9B6BfNvyXAtE4q0lxB+9574qb7YF9tL1sg4ddq+aqqSej2TdhZ0D1Ie3I +9tro9NkjCEbJJBZUxC/u+C3ZNDEKdPqy2QLT5F5kpjIOZoSj61AtQTI0wEMnn5FT +GloxOigpbNV0wOzXKxZQ4LF0YsQCaAHshgdFLMhHg8l84FnMCa4W727mKa233VBG +8gEc9FPopnOAdVAmxqmjLLSYBCptp223vezoCiiJ62vcNWIxyToRUCzfC/fZrzAd +SyvhIeKOyaw1mLkqGOwaW8J9Y8etCmM633hNT74HUqa8M0ZohFs= +=Jkau +-----END PGP SIGNATURE----- +``` From 96c8012cf27e08f3cf44dd0fdf749be2123062c0 Mon Sep 17 00:00:00 2001 From: Jordan Harband <ljharb@gmail.com> Date: Thu, 13 Mar 2025 07:47:36 -0700 Subject: [PATCH 0336/1385] fix(snippets): update nvm version (#7548) --- apps/site/snippets/en/download/nvm.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/snippets/en/download/nvm.bash b/apps/site/snippets/en/download/nvm.bash index 33db32e10fcd9..1d26f29dae9e5 100644 --- a/apps/site/snippets/en/download/nvm.bash +++ b/apps/site/snippets/en/download/nvm.bash @@ -1,5 +1,5 @@ # Download and install nvm: -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash # in lieu of restarting the shell \. "$HOME/.nvm/nvm.sh" From 74f2e3872f8d933c86898e4c200b5062b8721175 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Fri, 14 Mar 2025 00:29:38 +0000 Subject: [PATCH 0337/1385] Blog: v23.10.0 release post (#7550) Refs: https://github.com/nodejs/node/pull/57424 --- apps/site/pages/en/blog/release/v23.10.0.md | 242 ++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.10.0.md diff --git a/apps/site/pages/en/blog/release/v23.10.0.md b/apps/site/pages/en/blog/release/v23.10.0.md new file mode 100644 index 0000000000000..c28d4d78a5d24 --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.10.0.md @@ -0,0 +1,242 @@ +--- +date: '2025-03-13T23:00:19.186Z' +category: release +title: Node v23.10.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-03-13, Version 23.10.0 (Current), @aduh95 + +### Notable Changes + +#### Introducing `--experimental-config-file` + +With the introduction of test runner, SEA, and other feature that require a lot +of flags, a JSON config flag would improve by a lot the developer experience and +increase adoption. + +You can have a `node.config.json` containing: + +```json +{ + "$schema": "https://nodejs.org/dist/v23.10.0/docs/node-config-schema.json", + "nodeOptions": { + "test-coverage-lines": 80, + "test-coverage-branches": 60 + } +} +``` + +You can run your tests without passing the flags defined in the config file. + +```bash +node --experimental-default-config-file --test --experimental-test-coverage +``` + +or + +```bash +node --experimental-config-file=node.config.json --test --experimental-test-coverage +``` + +Node.js will not sanitize or perform validation on the user-provided configuration, +so only ever use trusted configuration files. + +Contributed by Marco Ippolito in [#57016](https://github.com/nodejs/node/pull/57016) +and [#57171](https://github.com/nodejs/node/pull/57171). + +#### Other Notable Changes + +- \[[`323e3ac93c`](https://github.com/nodejs/node/commit/323e3ac93c)] - **crypto**: update root certificates to NSS 3.108 (Node.js GitHub Bot) [#57381](https://github.com/nodejs/node/pull/57381) +- \[[`6fd2ec6816`](https://github.com/nodejs/node/commit/6fd2ec6816)] - **doc**: add `@geeksilva97` to collaborators (Edy Silva) [#57241](https://github.com/nodejs/node/pull/57241) +- \[[`d8937f1742`](https://github.com/nodejs/node/commit/d8937f1742)] - **(SEMVER-MINOR)** **src**: create `THROW_ERR_OPTIONS_BEFORE_BOOTSTRAPPING` (Marco Ippolito) [#57016](https://github.com/nodejs/node/pull/57016) +- \[[`5054fc7941`](https://github.com/nodejs/node/commit/5054fc7941)] - **(SEMVER-MINOR)** **test_runner**: change ts default glob (Marco Ippolito) [#57359](https://github.com/nodejs/node/pull/57359) +- \[[`75f11ae1cc`](https://github.com/nodejs/node/commit/75f11ae1cc)] - **(SEMVER-MINOR)** **tls**: implement `tls.getCACertificates()` (Joyee Cheung) [#57107](https://github.com/nodejs/node/pull/57107) +- \[[`a22c21ceb8`](https://github.com/nodejs/node/commit/a22c21ceb8)] - **(SEMVER-MINOR)** **v8**: add `v8.getCppHeapStatistics()` method (Aditi) [#57146](https://github.com/nodejs/node/pull/57146) + +### Commits + +- \[[`2daee76b26`](https://github.com/nodejs/node/commit/2daee76b26)] - **assert**: improve myers diff performance (Giovanni Bucci) [#57279](https://github.com/nodejs/node/pull/57279) +- \[[`2fbd3bbea7`](https://github.com/nodejs/node/commit/2fbd3bbea7)] - **build**: fix compatibility with V8's `depot_tools` (Richard Lau) [#57330](https://github.com/nodejs/node/pull/57330) +- \[[`6a2e4c5fc1`](https://github.com/nodejs/node/commit/6a2e4c5fc1)] - **build,win**: disable node pch with ccache (Stefan Stojanovic) [#57224](https://github.com/nodejs/node/pull/57224) +- \[[`323e3ac93c`](https://github.com/nodejs/node/commit/323e3ac93c)] - **crypto**: update root certificates to NSS 3.108 (Node.js GitHub Bot) [#57381](https://github.com/nodejs/node/pull/57381) +- \[[`906f23d0e7`](https://github.com/nodejs/node/commit/906f23d0e7)] - **crypto**: add support for intermediate certs in --use-system-ca (Tim Jacomb) [#57164](https://github.com/nodejs/node/pull/57164) +- \[[`03cd7920c8`](https://github.com/nodejs/node/commit/03cd7920c8)] - **deps**: update simdjson to 3.12.2 (Node.js GitHub Bot) [#57084](https://github.com/nodejs/node/pull/57084) +- \[[`9e1fce9a5c`](https://github.com/nodejs/node/commit/9e1fce9a5c)] - **deps**: update archs files for openssl-3.0.16 (Node.js GitHub Bot) [#57335](https://github.com/nodejs/node/pull/57335) +- \[[`4056c1f83e`](https://github.com/nodejs/node/commit/4056c1f83e)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.16 (Node.js GitHub Bot) [#57335](https://github.com/nodejs/node/pull/57335) +- \[[`b402799070`](https://github.com/nodejs/node/commit/b402799070)] - **deps**: update corepack to 0.32.0 (Node.js GitHub Bot) [#57265](https://github.com/nodejs/node/pull/57265) +- \[[`ce1cfff79a`](https://github.com/nodejs/node/commit/ce1cfff79a)] - **deps**: update amaro to 0.4.1 (marco-ippolito) [#57121](https://github.com/nodejs/node/pull/57121) +- \[[`0ac977d679`](https://github.com/nodejs/node/commit/0ac977d679)] - **deps**: update gyp file for ngtcp2 1.11.0 (Richard Lau) [#57225](https://github.com/nodejs/node/pull/57225) +- \[[`f34d78df1f`](https://github.com/nodejs/node/commit/f34d78df1f)] - **deps**: update ada to 3.1.3 (Node.js GitHub Bot) [#57222](https://github.com/nodejs/node/pull/57222) +- \[[`4fe9916701`](https://github.com/nodejs/node/commit/4fe9916701)] - **dns**: remove redundant code using common variable (Deokjin Kim) [#57386](https://github.com/nodejs/node/pull/57386) +- \[[`1c271b162b`](https://github.com/nodejs/node/commit/1c271b162b)] - **doc**: make first parameter optional in `util.getCallSites` (Deokjin Kim) [#57387](https://github.com/nodejs/node/pull/57387) +- \[[`77668fffec`](https://github.com/nodejs/node/commit/77668fffec)] - **doc**: fix usage of module.registerSync in comment (Timo Kössler) [#57328](https://github.com/nodejs/node/pull/57328) +- \[[`9b4f7aac69`](https://github.com/nodejs/node/commit/9b4f7aac69)] - **doc**: add Darshan back as voting TSC member (Michael Dawson) [#57402](https://github.com/nodejs/node/pull/57402) +- \[[`d44ccb319c`](https://github.com/nodejs/node/commit/d44ccb319c)] - **doc**: revise webcrypto.md types, interfaces, and added versions (Filip Skokan) [#57376](https://github.com/nodejs/node/pull/57376) +- \[[`f4de7cef01`](https://github.com/nodejs/node/commit/f4de7cef01)] - **doc**: add info on how project manages social media (Michael Dawson) [#57318](https://github.com/nodejs/node/pull/57318) +- \[[`792ef16921`](https://github.com/nodejs/node/commit/792ef16921)] - **doc**: revise `tsconfig.json` note (Steven) [#57353](https://github.com/nodejs/node/pull/57353) +- \[[`4e438c3fa3`](https://github.com/nodejs/node/commit/4e438c3fa3)] - **doc**: use more clear name in getSystemErrorMessage's example (ikuma-t) [#57310](https://github.com/nodejs/node/pull/57310) +- \[[`5c9f1a40e4`](https://github.com/nodejs/node/commit/5c9f1a40e4)] - **doc**: recommend setting `noEmit: true` in `tsconfig.json` (Steven) [#57320](https://github.com/nodejs/node/pull/57320) +- \[[`e178acf9d8`](https://github.com/nodejs/node/commit/e178acf9d8)] - **doc**: ping nodejs/tsc for each security pull request (Rafael Gonzaga) [#57309](https://github.com/nodejs/node/pull/57309) +- \[[`fbe464e28c`](https://github.com/nodejs/node/commit/fbe464e28c)] - **doc**: fix Windows ccache section position (Stefan Stojanovic) [#57326](https://github.com/nodejs/node/pull/57326) +- \[[`3fe8eac0ba`](https://github.com/nodejs/node/commit/3fe8eac0ba)] - **doc**: update node-api version matrix (Chengzhong Wu) [#57287](https://github.com/nodejs/node/pull/57287) +- \[[`d2f49e7fcf`](https://github.com/nodejs/node/commit/d2f49e7fcf)] - **doc**: recommend `erasableSyntaxOnly` in ts docs (Rob Palmer) [#57271](https://github.com/nodejs/node/pull/57271) +- \[[`03844d99f8`](https://github.com/nodejs/node/commit/03844d99f8)] - **doc**: clarify `path.isAbsolute` is not path traversal mitigation (Eric Fortis) [#57073](https://github.com/nodejs/node/pull/57073) +- \[[`0f8cd32986`](https://github.com/nodejs/node/commit/0f8cd32986)] - **doc**: fix rendering of DEP0174 description (David Sanders) [#56835](https://github.com/nodejs/node/pull/56835) +- \[[`f95ecca71f`](https://github.com/nodejs/node/commit/f95ecca71f)] - **doc**: add 1ilsang to triage team (1ilsang) [#57183](https://github.com/nodejs/node/pull/57183) +- \[[`6fd2ec6816`](https://github.com/nodejs/node/commit/6fd2ec6816)] - **doc**: add @geeksilva97 to collaborators (Edy Silva) [#57241](https://github.com/nodejs/node/pull/57241) +- \[[`b74e0ff7d7`](https://github.com/nodejs/node/commit/b74e0ff7d7)] - **doc**: add missing assert return types (Colin Ihrig) [#57219](https://github.com/nodejs/node/pull/57219) +- \[[`83eed33562`](https://github.com/nodejs/node/commit/83eed33562)] - **doc**: add streamResetBurst and streamResetRate (Sujal Raj) [#57195](https://github.com/nodejs/node/pull/57195) +- \[[`7f48811295`](https://github.com/nodejs/node/commit/7f48811295)] - **doc**: add esm examples to node:util (Alfredo González) [#56793](https://github.com/nodejs/node/pull/56793) +- \[[`5c20dcc166`](https://github.com/nodejs/node/commit/5c20dcc166)] - **esm**: fix module.exports export on CJS modules (Guy Bedford) [#57366](https://github.com/nodejs/node/pull/57366) +- \[[`041a217a4d`](https://github.com/nodejs/node/commit/041a217a4d)] - **fs**: fix rmSync error code (Paul Schwabauer) [#57103](https://github.com/nodejs/node/pull/57103) +- \[[`cea50b7f39`](https://github.com/nodejs/node/commit/cea50b7f39)] - **lib**: optimize priority queue (Gürgün Dayıoğlu) [#57100](https://github.com/nodejs/node/pull/57100) +- \[[`5204d495ae`](https://github.com/nodejs/node/commit/5204d495ae)] - **meta**: bump codecov/codecov-action from 5.3.1 to 5.4.0 (dependabot\[bot]) [#57257](https://github.com/nodejs/node/pull/57257) +- \[[`89599be988`](https://github.com/nodejs/node/commit/89599be988)] - **meta**: bump github/codeql-action from 3.28.8 to 3.28.10 (dependabot\[bot]) [#57254](https://github.com/nodejs/node/pull/57254) +- \[[`66cd3850bc`](https://github.com/nodejs/node/commit/66cd3850bc)] - **meta**: bump ossf/scorecard-action from 2.4.0 to 2.4.1 (dependabot\[bot]) [#57253](https://github.com/nodejs/node/pull/57253) +- \[[`6c22e446bc`](https://github.com/nodejs/node/commit/6c22e446bc)] - **meta**: set nodejs/config as codeowner (Marco Ippolito) [#57237](https://github.com/nodejs/node/pull/57237) +- \[[`ee5ce5ccde`](https://github.com/nodejs/node/commit/ee5ce5ccde)] - **meta**: move RaisinTen back to collaborators, triagers and SEA champion (Darshan Sen) [#57292](https://github.com/nodejs/node/pull/57292) +- \[[`0b0c9cc0f5`](https://github.com/nodejs/node/commit/0b0c9cc0f5)] - **meta**: bump actions/download-artifact from 4.1.8 to 4.1.9 (dependabot\[bot]) [#57260](https://github.com/nodejs/node/pull/57260) +- \[[`e6a98af8bd`](https://github.com/nodejs/node/commit/e6a98af8bd)] - **meta**: bump peter-evans/create-pull-request from 7.0.6 to 7.0.7 (dependabot\[bot]) [#57259](https://github.com/nodejs/node/pull/57259) +- \[[`91394aaf3d`](https://github.com/nodejs/node/commit/91394aaf3d)] - **meta**: bump step-security/harden-runner from 2.10.4 to 2.11.0 (dependabot\[bot]) [#57258](https://github.com/nodejs/node/pull/57258) +- \[[`63dbbe7c91`](https://github.com/nodejs/node/commit/63dbbe7c91)] - **meta**: bump actions/cache from 4.2.0 to 4.2.2 (dependabot\[bot]) [#57256](https://github.com/nodejs/node/pull/57256) +- \[[`d5ccf174ad`](https://github.com/nodejs/node/commit/d5ccf174ad)] - **meta**: bump actions/upload-artifact from 4.6.0 to 4.6.1 (dependabot\[bot]) [#57255](https://github.com/nodejs/node/pull/57255) +- \[[`46b06be9a3`](https://github.com/nodejs/node/commit/46b06be9a3)] - **module**: handle cached linked async jobs in require(esm) (Joyee Cheung) [#57187](https://github.com/nodejs/node/pull/57187) +- \[[`718305db6f`](https://github.com/nodejs/node/commit/718305db6f)] - **module**: add dynamic file-specific ESM warnings (Mert Can Altin) [#56628](https://github.com/nodejs/node/pull/56628) +- \[[`4762f4ada5`](https://github.com/nodejs/node/commit/4762f4ada5)] - **net**: validate non-string host for socket.connect (Daeyeon Jeong) [#57198](https://github.com/nodejs/node/pull/57198) +- \[[`d07bd79ac5`](https://github.com/nodejs/node/commit/d07bd79ac5)] - **net**: replace brand checks with identity checks (Yagiz Nizipli) [#57341](https://github.com/nodejs/node/pull/57341) +- \[[`a757f00747`](https://github.com/nodejs/node/commit/a757f00747)] - **net**: emit an error when custom lookup resolves to a non-string address (Edy Silva) [#57192](https://github.com/nodejs/node/pull/57192) +- \[[`984f7ef5bd`](https://github.com/nodejs/node/commit/984f7ef5bd)] - **readline**: add support for `Symbol.dispose` (Antoine du Hamel) [#57276](https://github.com/nodejs/node/pull/57276) +- \[[`21b6423b9b`](https://github.com/nodejs/node/commit/21b6423b9b)] - **sqlite**: reset statement immediately in run() (Colin Ihrig) [#57350](https://github.com/nodejs/node/pull/57350) +- \[[`e80bbb7355`](https://github.com/nodejs/node/commit/e80bbb7355)] - **sqlite,test,doc**: allow Buffer and URL as database location (Edy Silva) [#56991](https://github.com/nodejs/node/pull/56991) +- \[[`3dc3207298`](https://github.com/nodejs/node/commit/3dc3207298)] - **src**: do not pass nullptr to std::string ctor (Charles Kerr) [#57354](https://github.com/nodejs/node/pull/57354) +- \[[`5e51c62569`](https://github.com/nodejs/node/commit/5e51c62569)] - **src**: fix process exit listeners not receiving unsettled tla codes (Dario Piotrowicz) [#56872](https://github.com/nodejs/node/pull/56872) +- \[[`bf788d9d86`](https://github.com/nodejs/node/commit/bf788d9d86)] - **src**: refactor SubtleCrypto algorithm and length validations (Filip Skokan) [#57319](https://github.com/nodejs/node/pull/57319) +- \[[`37664e8485`](https://github.com/nodejs/node/commit/37664e8485)] - **src**: fix node_config_file.h compilation error in GN build (Cheng) [#57210](https://github.com/nodejs/node/pull/57210) +- \[[`274c18a365`](https://github.com/nodejs/node/commit/274c18a365)] - **(SEMVER-MINOR)** **src**: set default config as node.config.json (Marco Ippolito) [#57171](https://github.com/nodejs/node/pull/57171) +- \[[`433657de8c`](https://github.com/nodejs/node/commit/433657de8c)] - **src**: namespace config file flags (Marco Ippolito) [#57170](https://github.com/nodejs/node/pull/57170) +- \[[`d8937f1742`](https://github.com/nodejs/node/commit/d8937f1742)] - **(SEMVER-MINOR)** **src**: create THROW_ERR_OPTIONS_BEFORE_BOOTSTRAPPING (Marco Ippolito) [#57016](https://github.com/nodejs/node/pull/57016) +- \[[`9fd217daa9`](https://github.com/nodejs/node/commit/9fd217daa9)] - **(SEMVER-MINOR)** **src**: add config file support (Marco Ippolito) [#57016](https://github.com/nodejs/node/pull/57016) +- \[[`b17163b130`](https://github.com/nodejs/node/commit/b17163b130)] - **src**: allow embedder customization of OOMErrorHandler (Shelley Vohr) [#57325](https://github.com/nodejs/node/pull/57325) +- \[[`6f1c622466`](https://github.com/nodejs/node/commit/6f1c622466)] - **src**: use Maybe\<void> in ProcessEmitWarningSync (Daeyeon Jeong) [#57250](https://github.com/nodejs/node/pull/57250) +- \[[`4d86a42aa4`](https://github.com/nodejs/node/commit/4d86a42aa4)] - **src**: remove redundant qualifiers in src/quic (Yagiz Nizipli) [#56967](https://github.com/nodejs/node/pull/56967) +- \[[`41ea5a2864`](https://github.com/nodejs/node/commit/41ea5a2864)] - **src**: make even more improvements to error handling (James M Snell) [#57264](https://github.com/nodejs/node/pull/57264) +- \[[`7a554d9bf3`](https://github.com/nodejs/node/commit/7a554d9bf3)] - **src**: use cached `emit` v8::String (Daeyeon Jeong) [#57249](https://github.com/nodejs/node/pull/57249) +- \[[`b10ac9a958`](https://github.com/nodejs/node/commit/b10ac9a958)] - **src**: refactor SubtleCrypto algorithm and length validations (Filip Skokan) [#57273](https://github.com/nodejs/node/pull/57273) +- \[[`90cd780ca6`](https://github.com/nodejs/node/commit/90cd780ca6)] - **src**: make more error handling improvements (James M Snell) [#57262](https://github.com/nodejs/node/pull/57262) +- \[[`17c9e76722`](https://github.com/nodejs/node/commit/17c9e76722)] - **src**: fix typo in comment (Antoine du Hamel) [#57291](https://github.com/nodejs/node/pull/57291) +- \[[`35c283a3f3`](https://github.com/nodejs/node/commit/35c283a3f3)] - **src**: reduce string allocations on sqlite (Yagiz Nizipli) [#57227](https://github.com/nodejs/node/pull/57227) +- \[[`185d1ffe93`](https://github.com/nodejs/node/commit/185d1ffe93)] - **src**: improve error handling in `node_messaging.cc` (James M Snell) [#57211](https://github.com/nodejs/node/pull/57211) +- \[[`96b2bfb88c`](https://github.com/nodejs/node/commit/96b2bfb88c)] - **src**: improve error handling in `tty_wrap.cc` (James M Snell) [#57211](https://github.com/nodejs/node/pull/57211) +- \[[`f845ad953e`](https://github.com/nodejs/node/commit/f845ad953e)] - **src**: improve error handling in `tcp_wrap.cc` (James M Snell) [#57211](https://github.com/nodejs/node/pull/57211) +- \[[`350f62de6c`](https://github.com/nodejs/node/commit/350f62de6c)] - **src**: fix ThrowInvalidURL call in PathToFileURL (Daniel M Brasil) [#57141](https://github.com/nodejs/node/pull/57141) +- \[[`936a9997b2`](https://github.com/nodejs/node/commit/936a9997b2)] - **src**: improve error handling in buffer and dotenv (James M Snell) [#57189](https://github.com/nodejs/node/pull/57189) +- \[[`975e2a5c1d`](https://github.com/nodejs/node/commit/975e2a5c1d)] - **src**: improve error handling in module_wrap (James M Snell) [#57188](https://github.com/nodejs/node/pull/57188) +- \[[`3d103ecfbe`](https://github.com/nodejs/node/commit/3d103ecfbe)] - **src**: improve error handling in spawn_sync (James M Snell) [#57185](https://github.com/nodejs/node/pull/57185) +- \[[`98d328a1d6`](https://github.com/nodejs/node/commit/98d328a1d6)] - **src**: detect whether the string is one byte representation or not (theweipeng) [#56147](https://github.com/nodejs/node/pull/56147) +- \[[`15d7908656`](https://github.com/nodejs/node/commit/15d7908656)] - **stream**: fix sizeAlgorithm validation in WritableStream (Daeyeon Jeong) [#57280](https://github.com/nodejs/node/pull/57280) +- \[[`b866755299`](https://github.com/nodejs/node/commit/b866755299)] - **test**: test runner run plan (Pietro Marchini) [#57304](https://github.com/nodejs/node/pull/57304) +- \[[`e05e0e5772`](https://github.com/nodejs/node/commit/e05e0e5772)] - **test**: update WPT for urlpattern to 3b6b19853a (Node.js GitHub Bot) [#57377](https://github.com/nodejs/node/pull/57377) +- \[[`36542b5611`](https://github.com/nodejs/node/commit/36542b5611)] - **test**: update WPT for WebCryptoAPI to edd42c005c (Node.js GitHub Bot) [#57365](https://github.com/nodejs/node/pull/57365) +- \[[`28792ee59a`](https://github.com/nodejs/node/commit/28792ee59a)] - **test**: skip `test-config-json-schema` with quic (Richard Lau) [#57225](https://github.com/nodejs/node/pull/57225) +- \[[`5a21fa4573`](https://github.com/nodejs/node/commit/5a21fa4573)] - **test**: add more coverage to node_config_file (Marco Ippolito) [#57170](https://github.com/nodejs/node/pull/57170) +- \[[`99b2369142`](https://github.com/nodejs/node/commit/99b2369142)] - **test**: simplify test-tls-connect-abort-controller.js (Yagiz Nizipli) [#57338](https://github.com/nodejs/node/pull/57338) +- \[[`4af2f7f9a8`](https://github.com/nodejs/node/commit/4af2f7f9a8)] - **test**: use `assert.match` in `test-esm-import-meta` (Antoine du Hamel) [#57290](https://github.com/nodejs/node/pull/57290) +- \[[`99abfb6172`](https://github.com/nodejs/node/commit/99abfb6172)] - **test**: update compression wpt (Yagiz Nizipli) [#56960](https://github.com/nodejs/node/pull/56960) +- \[[`f8dde3a391`](https://github.com/nodejs/node/commit/f8dde3a391)] - **test**: skip uv-thread-name on IBM i (Abdirahim Musse) [#57299](https://github.com/nodejs/node/pull/57299) +- \[[`3bf546c317`](https://github.com/nodejs/node/commit/3bf546c317)] - _**Revert**_ "**test**: temporary remove resource check from fs read-write" (Rafael Gonzaga) [#56906](https://github.com/nodejs/node/pull/56906) +- \[[`8d0f1a7dbf`](https://github.com/nodejs/node/commit/8d0f1a7dbf)] - **test**: module syntax should throw (Marco Ippolito) [#57121](https://github.com/nodejs/node/pull/57121) +- \[[`0fd3d91e3a`](https://github.com/nodejs/node/commit/0fd3d91e3a)] - **test**: more common.mustNotCall in net, tls (Meghan Denny) [#57246](https://github.com/nodejs/node/pull/57246) +- \[[`f803d6ca29`](https://github.com/nodejs/node/commit/f803d6ca29)] - **test**: swap assert.strictEqual() parameters (Luigi Pinca) [#57217](https://github.com/nodejs/node/pull/57217) +- \[[`eb3576fde0`](https://github.com/nodejs/node/commit/eb3576fde0)] - **test**: assert write return values in buffer-bigint64 (Meghan Denny) [#57212](https://github.com/nodejs/node/pull/57212) +- \[[`a08981025a`](https://github.com/nodejs/node/commit/a08981025a)] - **test**: allow embedder running async context frame test (Shelley Vohr) [#57193](https://github.com/nodejs/node/pull/57193) +- \[[`20c032ed98`](https://github.com/nodejs/node/commit/20c032ed98)] - **test**: resolve race condition in test-net-write-fully-async-\* (Matteo Collina) [#57022](https://github.com/nodejs/node/pull/57022) +- \[[`5054fc7941`](https://github.com/nodejs/node/commit/5054fc7941)] - **(SEMVER-MINOR)** **test_runner**: change ts default glob (Marco Ippolito) [#57359](https://github.com/nodejs/node/pull/57359) +- \[[`0ad450f295`](https://github.com/nodejs/node/commit/0ad450f295)] - **timers**: simplify the compareTimersLists function (Gürgün Dayıoğlu) [#57110](https://github.com/nodejs/node/pull/57110) +- \[[`75f11ae1cc`](https://github.com/nodejs/node/commit/75f11ae1cc)] - **(SEMVER-MINOR)** **tls**: implement tls.getCACertificates() (Joyee Cheung) [#57107](https://github.com/nodejs/node/pull/57107) +- \[[`2b2267f203`](https://github.com/nodejs/node/commit/2b2267f203)] - **tools**: add config subspace (Marco Ippolito) [#57239](https://github.com/nodejs/node/pull/57239) +- \[[`8e64d38e91`](https://github.com/nodejs/node/commit/8e64d38e91)] - **tools**: import rather than require ESLint plugins (Michaël Zasso) [#57315](https://github.com/nodejs/node/pull/57315) +- \[[`2569e56b95`](https://github.com/nodejs/node/commit/2569e56b95)] - **tools**: switch back to official OpenSSL (Richard Lau) [#57301](https://github.com/nodejs/node/pull/57301) +- \[[`fd49144378`](https://github.com/nodejs/node/commit/fd49144378)] - **tools**: extract target abseil to abseil.gyp (Chengzhong Wu) [#57289](https://github.com/nodejs/node/pull/57289) +- \[[`77e1a85d24`](https://github.com/nodejs/node/commit/77e1a85d24)] - **tools**: revert to use @stylistic/eslint-plugin-js v3 (Joyee Cheung) [#57314](https://github.com/nodejs/node/pull/57314) +- \[[`2fa6e65262`](https://github.com/nodejs/node/commit/2fa6e65262)] - **tools**: add more details about rolling inspector_protocol (Chengzhong Wu) [#57167](https://github.com/nodejs/node/pull/57167) +- \[[`5788574cdf`](https://github.com/nodejs/node/commit/5788574cdf)] - **tools**: bump the eslint group in /tools/eslint with 5 updates (dependabot\[bot]) [#57261](https://github.com/nodejs/node/pull/57261) +- \[[`5955acadba`](https://github.com/nodejs/node/commit/5955acadba)] - **tools**: remove deps/zlib/GN-scraper.py (Chengzhong Wu) [#57238](https://github.com/nodejs/node/pull/57238) +- \[[`a22c21ceb8`](https://github.com/nodejs/node/commit/a22c21ceb8)] - **(SEMVER-MINOR)** **v8**: add v8.getCppHeapStatistics() method (Aditi) [#57146](https://github.com/nodejs/node/pull/57146) +- \[[`17d4074114`](https://github.com/nodejs/node/commit/17d4074114)] - **win,build**: add option to enable Control Flow Guard (Hüseyin Açacak) [#56605](https://github.com/nodejs/node/pull/56605) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.10.0/node-v23.10.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.10.0/node-v23.10.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.10.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.10.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.10.0/node-v23.10.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.10.0/node-v23.10.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.10.0/node-v23.10.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.10.0/node-v23.10.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.10.0/node-v23.10.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.10.0/node-v23.10.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.10.0/node-v23.10.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.10.0/node-v23.10.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.10.0/node-v23.10.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.10.0/node-v23.10.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.10.0/ \ +Documentation: https://nodejs.org/docs/v23.10.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +269cc2c2ec25228285a9f4221567a9d501171958ad3a3a468ea4d5b422b6df23 node-v23.10.0-aix-ppc64.tar.gz +3aeb0efbc5bddeccec4881f2c513ed542dab80d3111a6d21f1637579996bdecb node-v23.10.0-arm64.msi +f44ff5990735df42c79820654e2e394b6351ac9fd5eb140c3cae953cf7af302c node-v23.10.0-darwin-arm64.tar.gz +906014f3ea4d304e94066cf6a1cccd917004f91c3c5750ea72d6360847a77794 node-v23.10.0-darwin-arm64.tar.xz +6c60ebd659dddca673ae7deff9e8e1cc4048f81a6311811a98ba4fe98372275f node-v23.10.0-darwin-x64.tar.gz +af866d719bfb543937e06073dcbaa95b6a441a7b37f916ddbabf95192c5a1db8 node-v23.10.0-darwin-x64.tar.xz +bcacf2e9aeeff7937e500602ea4b5552272a71ff4aad254cd9c7e155823d4752 node-v23.10.0-headers.tar.gz +aaf870014a959855c2e945ca32fb35ff5f261aa511768142abdcc7f515e2e591 node-v23.10.0-headers.tar.xz +a7a2d642f43436ea22b0a050a3e7b8b9876ea33410e0d74cb18c0901cc9635d0 node-v23.10.0-linux-arm64.tar.gz +7ae7c3faffbbdaccace20cc7877ea4800bd551998ca0042c69d9f191358ee1d2 node-v23.10.0-linux-arm64.tar.xz +fac3f7d4f42dac741e3a538f9fa356b23c81272fe7bc135b944a30b7a4b3face node-v23.10.0-linux-armv7l.tar.gz +48adacddfc26605c9f0bf228a288b5c81bda80b4dd736372511e1cec999925d9 node-v23.10.0-linux-armv7l.tar.xz +ef494e1627423e15aae09c283de854f5e745bcd95bc5dc58652c040307ffded5 node-v23.10.0-linux-ppc64le.tar.gz +6350023929c0abc926e18bdfa03fe6d170a1e274a8d7a8c4697910e1ab521108 node-v23.10.0-linux-ppc64le.tar.xz +78c176dcb05578c31cb5866ab294ba361b2659e3b20ac816fd644b234e3a0394 node-v23.10.0-linux-s390x.tar.gz +b8753a73b000dac3f607de2f4f3c4384cf707ae876027f20e5e2392a1d71df36 node-v23.10.0-linux-s390x.tar.xz +26f85defcb75e3f8f00c6ad429f9a5b2fb1766e955045fe97e31b11c44315f2d node-v23.10.0-linux-x64.tar.gz +c0ab11362d0d671469b3a0bfcc6fb484fee5747ca96f93a3917d9ba34f12f535 node-v23.10.0-linux-x64.tar.xz +1f845932ee31868e60f1008ab8909ce2fbc4abce4c38d5d9ab2b4ec81096a16b node-v23.10.0.pkg +27fea91e7df3f3a18875f76afb63ba4ac60926ffb10ad2be557160ef48787266 node-v23.10.0.tar.gz +b39e5fbd3debb8318ddea6af3e89b07dafb891421fb7ca99fbe19c99adabe5fd node-v23.10.0.tar.xz +8bca1cc8618b45ba3d4673deac5f6fe023f6e80d0f221a7e034bade294c29299 node-v23.10.0-win-arm64.7z +8ccbf4f4128b7d474b5c0a681dc2bf3dc2d5010fd7a40febe0340d0ad42f0efa node-v23.10.0-win-arm64.zip +8d56f1d2a39ec17f45b53f35c201ec206db8c9d052fdc32d9a36efd41608c7e4 node-v23.10.0-win-x64.7z +3f6a293a669a3b9e887fa2f9acb64df37923f165a76de635d72f992b0dbf51bd node-v23.10.0-win-x64.zip +c66e9f5cf6ccb829dcdd9a2de5d1e9c57a9e622b6e71305538fa379d98b49014 node-v23.10.0-x64.msi +23b358a865d69a93bf59e3c696221b5d1754b7de1f66a105da94e7d110add8da win-arm64/node.exe +b04fc2c4f04273feaae3a2bc372d507fa631d7d6fd5f11265219d5b10d083a3e win-arm64/node.lib +18b6e9ffdd83f7ad3e3a59a5a5e210f4beb7d55c3d7913fd072813f6e3907603 win-arm64/node_pdb.7z +aacfae8af0893328cb1d2f25d65be4b466d38bf0808a477e50de8291a3cb6e8e win-arm64/node_pdb.zip +bfa36e570411930744920e9333cd2eca94d8021f1181efc7dccbf14499427b3b win-x64/node.exe +7005ad268c2a3b55e741957609696fd707982d8d7727325c44e2cbf23f00f565 win-x64/node.lib +667ccd6c5f4af88956085ec03648526b3379dbe4693ab37ee08eae0af5f19bce win-x64/node_pdb.7z +dd1073af01c2c5ca68d22600ba781f641fb1151d5ed69e6c1de068552255ec14 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmfTYyUACgkQIdkA/9sj +N1YjcRAAlAonkkTWhUX3wxlVYGmXsBsWfKn5tty06i0YHmAqtwqq9IyutcuP//V6 +MKT0VfXOWR/bjVGzvThDrQkmuoTEz8L8DVh7mspfh8KFfuxoXGfGMPfwa1AB/5gJ +rn/RG0iyYjsEAdJmPe3hoyjxTFIO4aRAQlVO7bH/6fkfee4mJ6TKbFMuQgnXPG9D +pLA4dH+vE6FcFK0PQhZWVo9yTkGpt7V6NoVGDVK5sPnH2OjzUwYW8jfSaJBnX8Ix +AttcOP7tynSRLNOY+EHBMxh3o+Y2WZbneHcR2QbdQM84NMev//9yexLrDxT7Oigc +SM/iXx1hEjdFRQR87rCvoHnVrpRo7rnaRd9yvptuyk1/IyYeCO1xLvZPcy/eia2S +Q4CrAc9sSRI6Q9dq5/PhyBisEnxCLwN/3wJq03+upAWEWvM6tAH8/aBPEutyy0Nh +re8Yakasrovq5JO9aHsi462XobDnVlFQ5ObACcJxhL7OMBfrzqfB6AUzMbysQnH6 +ZQNmbrxvrFO2aVrGEEJkwuC2yQQIRjqSY+G3T+gEYdqoQr5V27rS8qdMAbOJR0w/ +ypzNwyL18m2+OZTCMj0amd0zoQpPr06QLxQKemR7+cBMoMaQSL4XqIQ/XdICO7rC +TJzjzOuCLrq/R6LxPSv2Q7+jTjhFOG3zFsiwMvMMyBMklOIBwJo= +=2HpS +-----END PGP SIGNATURE----- +``` From 3b62b6378b00382f8b7336b0e19b3923e49d3c4f Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Fri, 14 Mar 2025 11:17:19 -0300 Subject: [PATCH 0338/1385] doc: clarify updates to CVE to EOL (#7551) As requested by the board program --- .../vulnerability/updates-cve-for-end-of-life.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/site/pages/en/blog/vulnerability/updates-cve-for-end-of-life.md b/apps/site/pages/en/blog/vulnerability/updates-cve-for-end-of-life.md index 23aec38cce35e..87904a9187fb2 100644 --- a/apps/site/pages/en/blog/vulnerability/updates-cve-for-end-of-life.md +++ b/apps/site/pages/en/blog/vulnerability/updates-cve-for-end-of-life.md @@ -9,7 +9,7 @@ author: Rafael Gonzaga # Update on the issuance of CVEs to mark End-of-Life Node.js Versions **TL;DR:** CVE-2025-23087, CVE-2025-23088, and CVE-2025-23089 issued to -tag EOL versions have been rejected by MITRE. +tag EOL versions have been rejected by the CVE Program. The Node.js team has, therefore, decided to update previous vulnerability specific CVEs to cover EOL releases, reflecting their ongoing security risks. This means that all new CVEs issued will include EOL releases in the applicability until we have specific @@ -62,12 +62,14 @@ risks to organizations. Following consultations with the CVE Program, HackerOne, and Node.js, further updates were made to these CVEs: -- MITRE has tagged the CVEs with "unsupported when assigned" and marked them as "disputed" since they do not pinpoint a specific vulnerability. +- The MITRE Top-Level Root tagged the CVEs with "unsupported when assigned" and marked them as "disputed" since they do not pinpoint a specific vulnerability. - A note has been added indicating that using the CVE List to report an unsupported product is a new approach under review. -Ultimately, the Board decided to **reject** these CVEs. However, this decision -does not determine the long-term stance of the CVE Program on EOL support. -The Board will continue discussing potential solutions for managing EOL versions. +Ultimately, the CVE Board decided that these CVE Records should be rejected +given the current CNA Operational Rules. However, this decision does not +determine the long-term stance of the CVE Program on EOL support. +The Board will continue discussing potential solutions for managing EOL +versions, and is collecting feedback from the community. Therefore, the only _viable_ solution to reflect the risk of running and EOL line is to update previous CVEs to cover EOL releases, reflecting From eb68e5deaf72efc4461cb048d20083663cc5fd24 Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Mon, 17 Mar 2025 16:43:16 +0100 Subject: [PATCH 0339/1385] meta: announce the new discord server (#7490) --- apps/site/authors.json | 364 +++++++++--------- .../components/Containers/Footer/index.tsx | 2 + apps/site/components/Icons/Social/Bluesky.tsx | 4 +- apps/site/components/Icons/Social/Discord.tsx | 20 + apps/site/components/Icons/Social/GitHub.tsx | 2 +- .../site/components/Icons/Social/LinkedIn.tsx | 8 +- .../site/components/Icons/Social/Mastodon.tsx | 6 +- apps/site/components/Icons/Social/Slack.tsx | 2 +- apps/site/components/Icons/Social/Twitter.tsx | 6 +- .../__design__/social-logos.stories.tsx | 4 + apps/site/navigation.json | 15 +- .../site/pages/en/about/get-involved/index.md | 3 +- .../official-discord-launch-announcement.md | 38 ++ .../site/pages/es/about/get-involved/index.md | 36 -- .../site/pages/fr/about/get-involved/index.md | 37 -- .../site/pages/id/about/get-involved/index.md | 37 -- .../site/pages/ja/about/get-involved/index.md | 36 -- .../site/pages/ko/about/get-involved/index.md | 36 -- .../site/pages/pt/about/get-involved/index.md | 36 -- .../site/pages/tr/about/get-involved/index.md | 36 -- .../site/pages/uk/about/get-involved/index.md | 37 -- .../pages/zh-tw/about/get-involved/index.md | 36 -- apps/site/redirects.json | 8 + apps/site/site.json | 10 +- 24 files changed, 279 insertions(+), 540 deletions(-) create mode 100644 apps/site/components/Icons/Social/Discord.tsx create mode 100644 apps/site/pages/en/blog/announcements/official-discord-launch-announcement.md delete mode 100644 apps/site/pages/es/about/get-involved/index.md delete mode 100644 apps/site/pages/fr/about/get-involved/index.md delete mode 100644 apps/site/pages/id/about/get-involved/index.md delete mode 100644 apps/site/pages/ja/about/get-involved/index.md delete mode 100644 apps/site/pages/ko/about/get-involved/index.md delete mode 100644 apps/site/pages/pt/about/get-involved/index.md delete mode 100644 apps/site/pages/tr/about/get-involved/index.md delete mode 100644 apps/site/pages/uk/about/get-involved/index.md delete mode 100644 apps/site/pages/zh-tw/about/get-involved/index.md diff --git a/apps/site/authors.json b/apps/site/authors.json index c2aeadfac66d6..85019ae535ef8 100644 --- a/apps/site/authors.json +++ b/apps/site/authors.json @@ -1,79 +1,63 @@ { - "Timothy J Fontaine": { - "id": "tjfontaine", - "name": "Timothy J Fontaine", - "website": "https://github.com/tjfontaine" - }, - "Node.js Advisory Board": { - "id": "advisory-board", - "name": "Node.js Advisory Board" - }, - "Shelley Vohr": { - "id": "codebytere", - "name": "Shelley Vohr", - "website": "https://github.com/codebytere" - }, - "The Node.js Project": { - "id": "nodejs", - "name": "The Node.js Project", - "website": "https://github.com/nodejs" - }, - "Tierney Cyren": { - "id": "bnb", - "name": "Tierney Cyren", - "website": "https://github.com/bnb" + "Anna Henningsen": { + "id": "addaleax", + "name": "Anna Henningsen", + "website": "https://github.com/addaleax" }, - "Joe Sepi": { - "id": "joesepi", - "name": "Joe Sepi", - "website": "https://github.com/joesepi" + "Antoine du Hamel": { + "id": "aduh95", + "name": "Antoine du Hamel", + "website": "https://github.com/aduh95" }, - "Richard Lau": { - "id": "richardlau", - "name": "Richard Lau", - "website": "https://github.com/richardlau" + "AugustinMauroy": { + "id": "AugustinMauroy", + "name": "Augustin Mauroy", + "website": "https://github.com/AugustinMauroy" }, - "Scott Hammond": { - "id": "scott-hammond", - "name": "Scott Hammond" + "Ben Noordhuis": { + "id": "bennoordhuis", + "name": "Ben Noordhuis", + "website": "https://github.com/bnoordhuis" }, - "Mike Dolan": { - "id": "mike-dolan", - "name": "Mike Dolan" + "Bethany Nicolle Griggs": { + "id": "BethGriggs", + "name": "Bethany Nicolle Griggs", + "website": "https://github.com/BethGriggs" }, - "Mikeal Rogers": { - "id": "mikeal", - "name": "Mikeal Rogers", - "website": "https://github.com/mikeal" + "Brian Muenzenmeyer": { + "id": "bmuenzenmeyer", + "name": "Brian Muenzenmeyer", + "website": "https://github.com/bmuenzenmeyer" }, - "Rod Vagg": { - "id": "rvagg", - "name": "Rod Vagg", - "website": "https://github.com/rvagg" + "Bryan English": { + "id": "bengl", + "name": "Bryan English", + "website": "https://github.com/bengl" }, - "Michaël Zasso": { - "id": "targos", - "name": "Michaël Zasso", - "website": "https://github.com/targos" + "Carl Vitullo": { + "id": "vcarl", + "name": "Carl Vitullo", + "website": "https://github.com/vcarl" }, - "Tracy Hinds": { - "id": "tracy-hinds", - "name": "Tracy Hinds" + "Charlie Robbins": { + "id": "indexzero", + "name": "Charlie Robbins", + "website": "https://github.com/indexzero" }, - "Michael Dawson": { - "id": "mhdawson", - "name": "Michael Dawson", - "website": "https://github.com/mhdawson" + "Claudio Wunder": { + "id": "ovflowd", + "name": "Claudio Wunder", + "website": "https://github.com/ovflowd" }, - "Myles Borins": { - "id": "mylesborins", - "name": "Myles Borins", - "website": "https://github.com/mylesborins" + "Colin Ihrig": { + "id": "cjihrig", + "name": "Colin Ihrig", + "website": "https://github.com/cjihrig" }, - "Isaac Schlueter": { - "id": "isaacs", - "name": "Isaac Schlueter", - "website": "https://github.com/isaacs" + "Danielle Adams": { + "id": "danielleadams", + "name": "Danielle Adams", + "website": "https://github.com/danielleadams" }, "Dave Pacheco": { "id": "dave-pacheco", @@ -84,174 +68,180 @@ "name": "Domenic Denicola", "website": "https://github.com/domenic" }, - "Charlie Robbins": { - "id": "indexzero", - "name": "Charlie Robbins", - "website": "https://github.com/indexzero" + "Emily Rose": { + "id": "emilyrose", + "name": "Emily Rose", + "website": "https://github.com/emilyrose" }, - "Ryan Dahl": { - "id": "ry", - "name": "Ryan Dahl", - "website": "https://github.com/ry" + "Evan Lucas": { + "id": "evanlucas", + "name": "Evan Lucas", + "website": "https://github.com/evanlucas" }, - "ryandahl": { - "id": "ry", - "name": "Ryan Dahl", - "website": "https://github.com/ry" + "Gibson Fahnestock": { + "id": "gibfahn", + "name": "Gibson Fahnestock", + "website": "https://github.com/gibfahn" }, - "Ben Noordhuis": { - "id": "bennoordhuis", - "name": "Ben Noordhuis", - "website": "https://github.com/bnoordhuis" + "Giovanny Gongora": { + "id": "Gioyik", + "name": "Giovanny Gongora", + "website": "https://github.com/Gioyik" + }, + "Isaac Schlueter": { + "id": "isaacs", + "name": "Isaac Schlueter", + "website": "https://github.com/isaacs" + }, + "Italo Casas": { + "id": "italoacasas", + "name": "Italo Casas", + "website": "https://github.com/italoacasas" }, - "Bert Belder": { - "id": "piscisaureus", - "name": "Bert Belder", - "website": "https://github.com/piscisaureus" + "James M Snell": { + "id": "jasnell", + "name": "James M Snell", + "website": "https://github.com/jasnell" }, "Jeremiah Senkpiel": { "id": "Fishrock123", "name": "Jeremiah Senkpiel", "website": "https://github.com/Fishrock123" }, - "Colin Ihrig": { - "id": "cjihrig", - "name": "Colin Ihrig", - "website": "https://github.com/cjihrig" + "Joe Sepi": { + "id": "joesepi", + "name": "Joe Sepi", + "website": "https://github.com/joesepi" }, - "Evan Lucas": { - "id": "evanlucas", - "name": "Evan Lucas", - "website": "https://github.com/evanlucas" + "Joyee Cheung": { + "id": "joyeecheung", + "name": "Joyee Cheung", + "website": "https://github.com/joyeecheung" }, - "James M Snell": { - "id": "jasnell", - "name": "James M Snell", - "website": "https://github.com/jasnell" + "Juan José": { + "id": "juanarbol", + "name": "Juan José Arboleda", + "website": "https://github.com/juanarbol" }, - "Italo Casas": { - "id": "italoacasas", - "name": "Italo Casas", - "website": "https://github.com/italoacasas" + "Juan José Arboleda": { + "id": "juanarbol", + "name": "Juan José Arboleda", + "website": "https://github.com/juanarbol" }, - "Anna Henningsen": { - "id": "addaleax", - "name": "Anna Henningsen", - "website": "https://github.com/addaleax" + "Julián Duque": { + "id": "julianduque", + "name": "Julián Duque", + "website": "https://github.com/julianduque" }, - "Gibson Fahnestock": { - "id": "gibfahn", - "name": "Gibson Fahnestock", - "website": "https://github.com/gibfahn" + "Marco Ippolito": { + "id": "marco-ippolito", + "name": "Marco Ippolito", + "website": "https://github.com/marco-ippolito" + }, + "Matt Cowley": { + "id": "MattIPv4", + "name": "Matt Cowley", + "website": "https://github.com/MattIPv4" + }, + "Michael Dawson": { + "id": "mhdawson", + "name": "Michael Dawson", + "website": "https://github.com/mhdawson" + }, + "Michaël Zasso": { + "id": "targos", + "name": "Michaël Zasso", + "website": "https://github.com/targos" + }, + "Mike Dolan": { + "id": "mike-dolan", + "name": "Mike Dolan" + }, + "Mikeal Rogers": { + "id": "mikeal", + "name": "Mikeal Rogers", + "website": "https://github.com/mikeal" + }, + "Minwoo Jung": { + "id": "minwoo-jung", + "name": "Minwoo Jung", + "website": "https://github.com/minwoo-jung" + }, + "Myles Borins": { + "id": "mylesborins", + "name": "Myles Borins", + "website": "https://github.com/mylesborins" + }, + "Node.js Advisory Board": { + "id": "advisory-board", + "name": "Node.js Advisory Board" + }, + "Richard Lau": { + "id": "richardlau", + "name": "Richard Lau", + "website": "https://github.com/richardlau" + }, + "Rod Vagg": { + "id": "rvagg", + "name": "Rod Vagg", + "website": "https://github.com/rvagg" }, "Ruben Bridgewater": { "id": "BridgeAR", "name": "Ruben Bridgewater", "website": "https://github.com/BridgeAR" }, - "Bethany Nicolle Griggs": { - "id": "BethGriggs", - "name": "Bethany Nicolle Griggs", - "website": "https://github.com/BethGriggs" - }, "Ruy Adorno": { "id": "ruyadorno", "name": "Ruy Adorno", "website": "https://github.com/ruyadorno" }, - "Danielle Adams": { - "id": "danielleadams", - "name": "Danielle Adams", - "website": "https://github.com/danielleadams" + "Ryan Dahl": { + "id": "ry", + "name": "Ryan Dahl", + "website": "https://github.com/ry" }, - "Bryan English": { - "id": "bengl", - "name": "Bryan English", - "website": "https://github.com/bengl" + "Scott Hammond": { + "id": "scott-hammond", + "name": "Scott Hammond" + }, + "Shelley Vohr": { + "id": "codebytere", + "name": "Shelley Vohr", + "website": "https://github.com/codebytere" }, "Stewart X Addison": { "id": "sxa", "name": "Stewart X Addison", "website": "https://github.com/sxa" }, - "Emily Rose": { - "id": "emilyrose", - "name": "Emily Rose", - "website": "https://github.com/emilyrose" - }, - "Julián Duque": { - "id": "julianduque", - "name": "Julián Duque", - "website": "https://github.com/julianduque" - }, - "Giovanny Gongora": { - "id": "Gioyik", - "name": "Giovanny Gongora", - "website": "https://github.com/Gioyik" - }, - "Yosuke Furukawa": { - "id": "yosuke-furukawa", - "name": "Yosuke Furukawa", - "website": "https://github.com/yosuke-furukawa" - }, "Steven Sinatra": { "id": "diagramatics", "name": "Steven Sinatra", "website": "https://github.com/diagramatics" }, - "Minwoo Jung": { - "id": "minwoo-jung", - "name": "Minwoo Jung", - "website": "https://github.com/minwoo-jung" - }, - "Rafael Gonzaga": { - "id": "RafaelGSS", - "name": "Rafael Gonzaga", - "website": "https://github.com/RafaelGSS" - }, - "Joyee Cheung": { - "id": "joyeecheung", - "name": "Joyee Cheung", - "website": "https://github.com/joyeecheung" - }, - "Juan José Arboleda": { - "id": "juanarbol", - "name": "Juan José Arboleda", - "website": "https://github.com/juanarbol" - }, - "Juan José": { - "id": "juanarbol", - "name": "Juan José Arboleda", - "website": "https://github.com/juanarbol" + "The Node.js Project": { + "id": "nodejs", + "name": "The Node.js Project", + "website": "https://github.com/nodejs" }, - "Brian Muenzenmeyer": { - "id": "bmuenzenmeyer", - "name": "Brian Muenzenmeyer", - "website": "https://github.com/bmuenzenmeyer" + "Timothy J Fontaine": { + "id": "tjfontaine", + "name": "Timothy J Fontaine", + "website": "https://github.com/tjfontaine" }, - "Marco Ippolito": { - "id": "marco-ippolito", - "name": "Marco Ippolito", - "website": "https://github.com/marco-ippolito" + "Tracy Hinds": { + "id": "tracy-hinds", + "name": "Tracy Hinds" }, "Ulises Gascón": { "id": "UlisesGascon", "name": "Ulises Gascón", "website": "https://github.com/UlisesGascon" }, - "Claudio Wunder": { - "id": "ovflowd", - "name": "Claudio Wunder", - "website": "https://github.com/ovflowd" - }, - "Matt Cowley": { - "id": "MattIPv4", - "name": "Matt Cowley", - "website": "https://github.com/MattIPv4" - }, - "AugustinMauroy": { - "id": "AugustinMauroy", - "name": "Augustin Mauroy", - "website": "https://github.com/AugustinMauroy" + "Yosuke Furukawa": { + "id": "yosuke-furukawa", + "name": "Yosuke Furukawa", + "website": "https://github.com/yosuke-furukawa" } } diff --git a/apps/site/components/Containers/Footer/index.tsx b/apps/site/components/Containers/Footer/index.tsx index e2d2411db1098..3723b3c284f96 100644 --- a/apps/site/components/Containers/Footer/index.tsx +++ b/apps/site/components/Containers/Footer/index.tsx @@ -3,6 +3,7 @@ import type { FC, SVGProps } from 'react'; import NavItem from '@/components/Containers/NavBar/NavItem'; import Bluesky from '@/components/Icons/Social/Bluesky'; +import Discord from '@/components/Icons/Social/Discord'; import GitHub from '@/components/Icons/Social/GitHub'; import LinkedIn from '@/components/Icons/Social/LinkedIn'; import Mastodon from '@/components/Icons/Social/Mastodon'; @@ -19,6 +20,7 @@ const footerSocialIcons: Record<string, React.FC<SVGProps<SVGSVGElement>>> = { slack: Slack, linkedin: LinkedIn, bluesky: Bluesky, + discord: Discord, }; const Footer: FC = () => { diff --git a/apps/site/components/Icons/Social/Bluesky.tsx b/apps/site/components/Icons/Social/Bluesky.tsx index 9069be9b4ec6b..944e763d67514 100644 --- a/apps/site/components/Icons/Social/Bluesky.tsx +++ b/apps/site/components/Icons/Social/Bluesky.tsx @@ -5,14 +5,14 @@ const Bluesky: FC<SVGProps<SVGSVGElement>> = props => ( width="20" height="20" viewBox="0 0 568 501" - fill="none" xmlns="http://www.w3.org/2000/svg" + fill="none" {...props} > <path fill="#1185FE" d="M123.121 33.664C188.241 82.553 258.281 181.68 284 234.873c25.719-53.192 95.759-152.32 160.879-201.21C491.866-1.611 568-28.906 568 57.947c0 17.346-9.945 145.713-15.778 166.555-20.275 72.453-94.155 90.933-159.875 79.748C507.222 323.8 536.444 388.56 473.333 453.32c-119.86 122.992-172.272-30.859-185.702-70.281-2.462-7.227-3.614-10.608-3.631-7.733-.017-2.875-1.169.506-3.631 7.733-13.43 39.422-65.842 193.273-185.702 70.281-63.111-64.76-33.89-129.52 80.986-149.071-65.72 11.185-139.6-7.295-159.875-79.748C9.945 203.659 0 75.291 0 57.946 0-28.906 76.135-1.612 123.121 33.664Z" - ></path> + /> </svg> ); diff --git a/apps/site/components/Icons/Social/Discord.tsx b/apps/site/components/Icons/Social/Discord.tsx new file mode 100644 index 0000000000000..74a369997acfb --- /dev/null +++ b/apps/site/components/Icons/Social/Discord.tsx @@ -0,0 +1,20 @@ +import type { FC, SVGProps } from 'react'; + +const Bluesky: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + width="20" + height="20" + viewBox="0 -28.5 256 256" + xmlns="http://www.w3.org/2000/svg" + fill="none" + {...props} + > + <path + d="M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z" + fill="#5865F2" + fillRule="nonzero" + /> + </svg> +); + +export default Bluesky; diff --git a/apps/site/components/Icons/Social/GitHub.tsx b/apps/site/components/Icons/Social/GitHub.tsx index 54c4cef57ba19..e771e66f2e6e6 100644 --- a/apps/site/components/Icons/Social/GitHub.tsx +++ b/apps/site/components/Icons/Social/GitHub.tsx @@ -5,8 +5,8 @@ const GitHub: FC<SVGProps<SVGSVGElement>> = props => ( width="20" height="20" viewBox="0 0 20 20" - fill="currentColor" xmlns="http://www.w3.org/2000/svg" + fill="currentColor" {...props} > <path d="M10 1.25C5.16562 1.25 1.25 5.16562 1.25 10C1.25 13.8719 3.75469 17.1422 7.23281 18.3016C7.67031 18.3781 7.83437 18.1156 7.83437 17.8859C7.83437 17.6781 7.82344 16.9891 7.82344 16.2563C5.625 16.6609 5.05625 15.7203 4.88125 15.2281C4.78281 14.9766 4.35625 14.2 3.98438 13.9922C3.67812 13.8281 3.24063 13.4234 3.97344 13.4125C4.6625 13.4016 5.15469 14.0469 5.31875 14.3094C6.10625 15.6328 7.36406 15.2609 7.86719 15.0312C7.94375 14.4625 8.17344 14.0797 8.425 13.8609C6.47813 13.6422 4.44375 12.8875 4.44375 9.54062C4.44375 8.58906 4.78281 7.80156 5.34062 7.18906C5.25313 6.97031 4.94687 6.07344 5.42812 4.87031C5.42812 4.87031 6.16094 4.64063 7.83437 5.76719C8.53438 5.57031 9.27813 5.47187 10.0219 5.47187C10.7656 5.47187 11.5094 5.57031 12.2094 5.76719C13.8828 4.62969 14.6156 4.87031 14.6156 4.87031C15.0969 6.07344 14.7906 6.97031 14.7031 7.18906C15.2609 7.80156 15.6 8.57812 15.6 9.54062C15.6 12.8984 13.5547 13.6422 11.6078 13.8609C11.925 14.1344 12.1984 14.6594 12.1984 15.4797C12.1984 16.65 12.1875 17.5906 12.1875 17.8859C12.1875 18.1156 12.3516 18.3891 12.7891 18.3016C14.5261 17.7152 16.0355 16.5988 17.1048 15.1096C18.1741 13.6204 18.7495 11.8333 18.75 10C18.75 5.16562 14.8344 1.25 10 1.25Z" /> diff --git a/apps/site/components/Icons/Social/LinkedIn.tsx b/apps/site/components/Icons/Social/LinkedIn.tsx index c62c4a97e6ddf..4569e8680faca 100644 --- a/apps/site/components/Icons/Social/LinkedIn.tsx +++ b/apps/site/components/Icons/Social/LinkedIn.tsx @@ -2,14 +2,14 @@ import type { FC, SVGProps } from 'react'; const LinkedIn: FC<SVGProps<SVGSVGElement>> = props => ( <svg - xmlns="http://www.w3.org/2000/svg" + width="20" + height="20" viewBox="0 0 24 24" + xmlns="http://www.w3.org/2000/svg" fill="currentColor" - width="24" - height="24" {...props} > - <path d="M20.5 2h-17A1.5 1.5 0 002 3.5v17A1.5 1.5 0 003.5 22h17a1.5 1.5 0 001.5-1.5v-17A1.5 1.5 0 0020.5 2zM8 19H5v-9h3zM6.5 8.25A1.75 1.75 0 118.3 6.5a1.78 1.78 0 01-1.8 1.75zM19 19h-3v-4.74c0-1.42-.6-1.93-1.38-1.93A1.74 1.74 0 0013 14.19a.66.66 0 000 .14V19h-3v-9h2.9v1.3a3.11 3.11 0 012.7-1.4c1.55 0 3.36.86 3.36 3.66z"></path> + <path d="M20.5 2h-17A1.5 1.5 0 002 3.5v17A1.5 1.5 0 003.5 22h17a1.5 1.5 0 001.5-1.5v-17A1.5 1.5 0 0020.5 2zM8 19H5v-9h3zM6.5 8.25A1.75 1.75 0 118.3 6.5a1.78 1.78 0 01-1.8 1.75zM19 19h-3v-4.74c0-1.42-.6-1.93-1.38-1.93A1.74 1.74 0 0013 14.19a.66.66 0 000 .14V19h-3v-9h2.9v1.3a3.11 3.11 0 012.7-1.4c1.55 0 3.36.86 3.36 3.66z" /> </svg> ); diff --git a/apps/site/components/Icons/Social/Mastodon.tsx b/apps/site/components/Icons/Social/Mastodon.tsx index 18fa61f7ce353..c78185b77ddf3 100644 --- a/apps/site/components/Icons/Social/Mastodon.tsx +++ b/apps/site/components/Icons/Social/Mastodon.tsx @@ -2,11 +2,11 @@ import type { FC, SVGProps } from 'react'; const Mastodon: FC<SVGProps<SVGSVGElement>> = props => ( <svg - width="75" - height="79" + width="20" + height="20" viewBox="0 0 75 79" - fill="none" xmlns="http://www.w3.org/2000/svg" + fill="none" {...props} > <path diff --git a/apps/site/components/Icons/Social/Slack.tsx b/apps/site/components/Icons/Social/Slack.tsx index afe504a20cb59..82f454e65d661 100644 --- a/apps/site/components/Icons/Social/Slack.tsx +++ b/apps/site/components/Icons/Social/Slack.tsx @@ -5,8 +5,8 @@ const Slack: FC<SVGProps<SVGSVGElement>> = props => ( width="20" height="20" viewBox="0 0 20 20" - fill="none" xmlns="http://www.w3.org/2000/svg" + fill="none" {...props} > <path diff --git a/apps/site/components/Icons/Social/Twitter.tsx b/apps/site/components/Icons/Social/Twitter.tsx index 6567d311d7c1d..e6373f539a68f 100644 --- a/apps/site/components/Icons/Social/Twitter.tsx +++ b/apps/site/components/Icons/Social/Twitter.tsx @@ -2,11 +2,11 @@ import type { FC, SVGProps } from 'react'; const Twitter: FC<SVGProps<SVGSVGElement>> = props => ( <svg - width="24" - height="24" + width="20" + height="20" viewBox="0 0 24 24" - fill="currentColor" xmlns="http://www.w3.org/2000/svg" + fill="currentColor" {...props} > <path d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z" /> diff --git a/apps/site/components/__design__/social-logos.stories.tsx b/apps/site/components/__design__/social-logos.stories.tsx index e2699163c1451..0fc12674a0ddc 100644 --- a/apps/site/components/__design__/social-logos.stories.tsx +++ b/apps/site/components/__design__/social-logos.stories.tsx @@ -1,6 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import Bluesky from '@/components/Icons/Social/Bluesky'; +import Discord from '@/components/Icons/Social/Discord'; import GitHub from '@/components/Icons/Social/GitHub'; import LinkedIn from '@/components/Icons/Social/LinkedIn'; import Mastodon from '@/components/Icons/Social/Mastodon'; @@ -20,6 +21,9 @@ export const SocialMediaLogos: StoryObj = { <Twitter width={64} height={64} /> <Bluesky width={64} height={64} /> </div> + <div className="flex flex-col items-center gap-4"> + <Discord width={64} height={64} /> + </div> </div> ), }; diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 6198d48562930..fd6650fe4ff5e 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -63,21 +63,26 @@ "link": "https://github.com/nodejs/node", "alt": "GitHub" }, + { + "icon": "discord", + "link": "https://nodejs.org/discord", + "alt": "Discord" + }, { "icon": "mastodon", "link": "https://social.lfx.dev/@nodejs", "alt": "Mastodon" }, - { - "icon": "twitter", - "link": "https://twitter.com/nodejs", - "alt": "Twitter" - }, { "icon": "bluesky", "link": "https://bsky.app/profile/nodejs.org", "alt": "Bluesky" }, + { + "icon": "twitter", + "link": "https://twitter.com/nodejs", + "alt": "Twitter" + }, { "icon": "slack", "link": "https://slack-invite.openjsf.org/", diff --git a/apps/site/pages/en/about/get-involved/index.md b/apps/site/pages/en/about/get-involved/index.md index d29d68c4fe57a..3932f03924c1c 100644 --- a/apps/site/pages/en/about/get-involved/index.md +++ b/apps/site/pages/en/about/get-involved/index.md @@ -9,6 +9,7 @@ If you are interested in getting involved with the Node.js community, there are ## Community Discussion +- The [Node.js official Discord server](/discord) is a place to chat with other Node.js developers and getting official news from the Node.js project. - The [GitHub issues list](https://github.com/nodejs/node/issues) is the place for discussion of Node.js core features and if you have questions about Node.js, you can use the [github discussions](https://github.com/orgs/nodejs/discussions). - The [`nodejs/help`](https://github.com/nodejs/help/issues) repository is the place to ask questions about Node.js. - The official Node.js Twitter account is [nodejs](https://twitter.com/nodejs). @@ -32,6 +33,4 @@ Please note that these are not officially endorsed by the Node.js project. Also - [Node Slackers](https://www.nodeslackers.com/) is a Node.js-focused Slack community. - [OpenJSF Slack](https://slack-invite.openjsf.org/) is a Slack workspace for the OpenJS Foundation. There are several channels related to Node.js. _(channels prefixed by `#nodejs-` are related to the project)_ -- [Nodeiflux](https://discordapp.com/invite/vUsrbjd) is a friendly community of Node.js backend developers supporting each other on Discord. -- [ES Community](https://discord.gg/zJsuc6vvhn) is a Discord community for French-speaking JavaScript developers. - `irc.libera.chat` in the `#node.js` channel with an [IRC client](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) or connect in your web browser to the channel using [a web client](https://kiwiirc.com/nextclient/). diff --git a/apps/site/pages/en/blog/announcements/official-discord-launch-announcement.md b/apps/site/pages/en/blog/announcements/official-discord-launch-announcement.md new file mode 100644 index 0000000000000..97f49244c569d --- /dev/null +++ b/apps/site/pages/en/blog/announcements/official-discord-launch-announcement.md @@ -0,0 +1,38 @@ +--- +date: '2025-03-17T10:00:00-04:00' +category: announcements +title: Node.js Launches Official Community Space on Discord +layout: blog-post +author: Carl Vitullo, Claudio Wunder +--- + +First, the news: [The OpenJS Foundation](https://openjsf.org/) and [Reactiflux](https://reactiflux.com/) have collaborated to bring forth an official Discord community for Node.js 🎉 You can [join the Node.js Discord](/discord) now. + +Over the past several years, Discord has become the de-facto platform for communities to connect and communicate. Many Node.js community members already use Discord to discuss Node.js, seek advice, and share their projects. By establishing an official Node.js Discord server, we aim to gather these conversations and provide a safe and well-moderated space for our online community to congregate. Lots of other open-source projects, such as [TypeScript](https://discord.gg/typescript), [Rust](https://discord.gg/rust-lang), and [Python](https://discord.gg/python), have successfully built their communities on Discord. + +Our Node.js Discord space will be perfect for: + +- Hosting livestreams by Node.js Ambassadors and community members +- Facilitating discussions about Node.js, answering questions, and sharing projects +- Connecting with Node.js maintainers, influencers, and contributors +- Receiving the latest updates on Node.js releases and events hosted by the OpenJS Foundation + +But this is not a professionally-operated corporate space with full-time staff and a marketing budget, this is an organic community operated by volunteers because they love using JavaScript on the backend. If there's something you feel is missing, shout it out in [#meta-admin](https://discord.com/channels/425824580918181889/425824906882580492) — resources are limited but enthusiasm can go a long way 🫶 + +### The Journey So Far + +Our journey began with [this issue on GitHub](https://github.com/nodejs/admin/issues/872). We partnered with the Reactiflux/Nodeiflux community to rebrand their existing Nodeiflux server as the official Node.js Discord server. Over the past few months, we have been preparing the server for everyone to use, and you can follow some of our progress in the issue. + +Reactiflux was one of the first large commuinities on Discord, joining the platform less than 6 months after its publish launch and operating continuously since then. In 2018, one of its administrators started a "sister server" for those using JS on the backend; Nodeiflux! + +Now, 7 years on, the Nodeiflux server has joined up with the OpenJS Foundation to serve as the official Node.js Discord server. We are excited to see how our community will thrive in this new environment — the server will be jointly managed by the Node.js project and the Nodeiflux community, with the Node.js Technical Steering Committee (TSC) providing advisory support. The Nodeiflux community will handle the day-to-day administration of the server. + +For all intents and purposes, this is an official Node.js space, and we are eager to see how it will grow and evolve. [Join the Node.js Discord](/discord) and become part of our growing community. See you there! + +### Looking Ahead + +We are eager to see how our community will grow and interact in this new space. We look forward to hosting events and livestreams in the future. If you have any ideas or feedback, please share them in the #discord-feedback channel on the server. + +--- + +A warm hug from [@vcarl](https://github.com/vcarl) and [@ovflowd](https://github.com/ovflowd). We hope to see you on the Node.js Discord server soon! diff --git a/apps/site/pages/es/about/get-involved/index.md b/apps/site/pages/es/about/get-involved/index.md deleted file mode 100644 index 47aeed526cdc6..0000000000000 --- a/apps/site/pages/es/about/get-involved/index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Colaborar -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/fr/about/get-involved/index.md b/apps/site/pages/fr/about/get-involved/index.md deleted file mode 100644 index 9da181e3e6085..0000000000000 --- a/apps/site/pages/fr/about/get-involved/index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Impliquez-vous -layout: about ---- - -# Impliquez-vous - -Si vous souhaitez vous impliquer dans la communauté Node.js, il existe de nombreuses façons de le faire. Le projet Node.js est une communauté vaste et diversifiée, et il existe de nombreuses façons de contribuer, au-delà de l'écriture de code. - -## Discussions de la communauté - -- La [GitHub issues list](https://github.com/nodejs/node/issues) est le lieu de discussion des fonctionnalités de base de Node.js et si vous avez des questions sur Node.js, vous pouvez utiliser les [github discussions](https://github.com/orgs/nodejs/discussions). -- Le dépôt [`nodejs/help`](https://github.com/nodejs/help/issues) est l'endroit où poser des questions sur Node.js. -- Le compte Twitter officiel de Node.js est [nodejs](https://twitter.com/nodejs). -- Le [calendrier du projet Node.js](https://nodejs.org/calendar) avec toutes les réunions publiques de l'équipe. - -## Matériel d'apprentissage - -Si vous souhaitez en savoir plus sur Node.js, de nombreuses ressources sont à votre disposition. - -- [Section officielle d'apprentissage](https://nodejs.org/en/learn/) du site web de Node.js. -- [Official API reference documentation](https://nodejs.org/api/). -- [NodeSchool.io](https://nodeschool.io/) vous enseignera les concepts de Node.js par le biais de jeux interactifs en ligne de commande. -- Le site [Stack Overflow Node.js tag](https://stackoverflow.com/questions/tagged/node.js) recueille de nouvelles informations chaque jour. -- [Le tag Node.js de la communauté DEV](https://dev.to/t/node) est un endroit pour partager des projets, des articles et des tutoriels Node.js, ainsi que pour lancer des discussions et demander des commentaires sur des sujets liés à Node.js. Les développeurs de tous niveaux sont les bienvenus. -- La [communauté Reddit Node.js](https://www.reddit.com/r/node) est un lieu de partage de projets, d'articles et de tutoriels Node.js, ainsi que de discussions et de demandes de commentaires sur des sujets liés à Node.js. Les développeurs de tous niveaux sont les bienvenus. - -## Espaces de discussion non officiels - -Si vous cherchez un endroit plus informel pour discuter de Node.js, il existe plusieurs espaces de discussion non officiels. -Veuillez noter qu'ils ne sont pas officiellement approuvés par le projet Node.js. Respectez également leur code de conduite/règles respectives. - -- [Node Slackers](https://www.nodeslackers.com/) est une communauté Slack axée sur Node.js. -- [OpenJSF Slack](https://slack-invite.openjsf.org/) est un espace de travail Slack pour la Fondation OpenJS. Il y a plusieurs canaux liés à Node.js. (les canaux préfixés par `#nodejs-` sont liés au projet). -- [Nodeiflux](https://discordapp.com/invite/vUsrbjd) est une communauté amicale de développeurs backend Node.js qui s'entraident sur Discord. -- [ES Community](https://discord.gg/zJsuc6vvhn) est une communauté Discord pour les développeurs JavaScript francophones. -- `irc.libera.chat` dans le canal `#node.js` avec un [client IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ou connectez-vous dans votre navigateur web au canal en utilisant [un client web](https://kiwiirc.com/nextclient/). diff --git a/apps/site/pages/id/about/get-involved/index.md b/apps/site/pages/id/about/get-involved/index.md deleted file mode 100644 index be69c2227cfd5..0000000000000 --- a/apps/site/pages/id/about/get-involved/index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Mari terlibat -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 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. - -## 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/ja/about/get-involved/index.md b/apps/site/pages/ja/about/get-involved/index.md deleted file mode 100644 index afc7935d98e4b..0000000000000 --- a/apps/site/pages/ja/about/get-involved/index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: 活動への参加 -layout: about ---- - -# 活動への参加 - -Node.jsのコミュニティーへの参加の仕方にはさまざまな方法があります。Node.jsプロジェクトは大規模で多様なコミュニティーとなっているため、コードを書くこと以外にも貢献する方法はたくさんあります。 - -## コミュニティーでの議論 - -- [GitHub issues](https://github.com/nodejs/node/issues)はNode.jsの主機能について議論する場となっています。Node.jsについて疑問がある場合は[github discussions](https://github.com/orgs/nodejs/discussions)も利用できます。 -- [`nodejs/help`](https://github.com/nodejs/help/issues)リポジトリーでもNode.jsに関する質問を受け付けています。 -- Node.jsの公式Twitterアカウントは[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/get-involved/index.md b/apps/site/pages/ko/about/get-involved/index.md deleted file mode 100644 index 1b4adb7941402..0000000000000 --- a/apps/site/pages/ko/about/get-involved/index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -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/pt/about/get-involved/index.md b/apps/site/pages/pt/about/get-involved/index.md deleted file mode 100644 index abdbf70a9d109..0000000000000 --- a/apps/site/pages/pt/about/get-involved/index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Participar -layout: about ---- - -# Participe - -Aos que estiverem interessados em colaborar com a comunidade da Node.js, existem muitas maneiras de fazê-lo. O projeto Node.js é grande e diverso em comunidade, e existem muitas maneiras de colaborar, para além de escrever código. - -## Discussão de Comunidade - -- A [lista de problemas da GitHub](https://github.com/nodejs/node/issues) é o lugar para as discussões sobre as funcionalidades nucleares da Node.js e se tivermos questões sobre a Node.js, podemos utilizar as [discussões da GitHub](https://github.com/orgs/nodejs/discussions). -- O repositório [`nodejs/help`](https://github.com/nodejs/help/issues) é o lugar para fazer-se questões sobre a Node.js. -- A conta oficial do Node.js no Twitter é [nodejs](https://twitter.com/nodejs). -- O [calendário do projeto Node.js](https://nodejs.org/calendar) com todas as reuniões públicas da equipa. - -## Materiais de Estudo - -Se estivermos interessados em saber ou aprender mais sobre a Node.js, existem muitos recursos a nossa disposição. - -- [Secção oficial de aprendizagem](https://nodejs.org/en/learn/) do sítio da Node.js. -- [Documentação oficial de referência da API](https://nodejs.org/api/). -- [NodeSchool.io](https://nodeschool.io/) ensina conceitos de Node.js por jogos interativos da linha de comandos. -- [A tag Stack Overflow Node.js](https://stackoverflow.com/questions/tagged/node.js) coleta novas informações todos os dias. -- [A tag Node.js da comunidade DEV](https://dev.to/t/node) é um lugar para partilhar projetos, artigos e tutoriais do Node.js, bem como iniciar discussões e pedir feedback sobre assuntos relacionados ao Node.js. Desenvolvedores de todos os níveis de habilidade podem participar. -- A [comunidade da Node.js da Reddit](https://www.reddit.com/r/node) é o lugar para partilhar os projetos, artigos, e tutoriais de Node.js, bem como o lugar para começar discussões e pedir por comentários relacionados a Node.js. Programadores de todos os níveis de habilidade são bem-vindos a participar. - -## Áreas de Discussões Não Oficiais - -Se estivermos a procura de um lugar informal para discutir a Node.js, existem vários lugares de discussão não oficial. Notemos que estes não são oficialmente endossados pelo projeto Node.js. E também devemos seguir seus respetivos código de conduta ou regras. - -- [Node Slackers](https://www.nodeslackers.com/) é uma comunidade do Slack focada em Node.js. -- A [Slack da OpenJSF](https://slack-invite.openjsf.org/) é um espaço de trabalho da Fundação OpenJS. Existem vários canais relacionados a Node.js. _(canais prefixados por `#nodejs-`) são relacionados ao projeto_ -- [Nodeiflux](https://discordapp.com/invite/vUsrbjd) é uma comunidade amigável de desenvolvedores de backend Node.js que se apoiam uns aos outros no Discord. -- A [Comunidade ES](https://discord.gg/zJsuc6vvhn) é uma comunidade da Discord para programadores da JavaScript falantes do Francês. -- `irc.libera.chat` no canal `#node.js` com um [cliente de Conversa-Resposta da Internet](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ou podemos conectar o nosso navegador da Web ao canal ao utilizar [um cliente da Web](https://kiwiirc.com/nextclient/). diff --git a/apps/site/pages/tr/about/get-involved/index.md b/apps/site/pages/tr/about/get-involved/index.md deleted file mode 100644 index a9b30b0b26f80..0000000000000 --- a/apps/site/pages/tr/about/get-involved/index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Dahil olun -layout: about ---- - -# Dahil Olun - -Node.js topluluğuna dahil olmanın birden çok yolu vardır. Node.js projesi büyük ve çeşitliliğe sahip bir topluluktur, kod yazmanın ötesinde katkıda bulunmanın birçok yolu vardır. - -## Topluluk Tartışması - -- [GitHub sorunlar listesi](https://github.com/nodejs/node/issues), Node.js'in çekirdek özelliklerinin tartışıldığı yerdir ve Node.js hakkında sorularınız varsa [GitHub tartışmalarını](https://github.com/orgs/nodejs/discussions) kullanabilirsiniz. -- Node.js hakkında soru sormak için [`nodejs/help`](https://github.com/nodejs/help/issues) deposunu kullanabilirsiniz. -- Resmi Node.js X (eski adıyla Twitter) hesabı [nodejs](https://twitter.com/nodejs) şeklindedir. -- Tüm herkese açık ekip toplantılarını içeren [Node.js proje takvimi](https://nodejs.org/calendar). - -## Öğrenme Materyalleri - -Node.js hakkında daha fazla bilgi edinmek istiyorsanız, sizin için birçok kaynak mevcuttur. - -- Node.js web sitesinin [Resmi Öğrenme bölümü](https://nodejs.org/en/learn/). -- [Resmi API referans belgeleri](https://nodejs.org/api/). -- [NodeSchool.io](https://nodeschool.io/) size Node.js kavramlarını etkileşimli komut satırı oyunları aracılığıyla öğretecek. -- [Stack Overflow Node.js etiketi](https://stackoverflow.com/questions/tagged/node.js) her gün yeni bilgiler toplamaktadır. -- [DEV Topluluğu Node.js etiketi](https://dev.to/t/node) Node.js projelerini, makalelerini ve eğitimlerini paylaşmanın yanı sıra Node.js ile ilgili tartışmalar başlatıp ve geri bildirim isteyebileceğiniz bir yerdir. Tüm beceri seviyelerindeki geliştiriciler katılabilir. -- [Reddit'teki Node.js topluluğu](https://www.reddit.com/r/node), Node.js projelerini, makalelerini ve eğitimlerini paylaşabileceğin bir yer. Ayrıca Node.js ile ilgili tartışmalar başlatabilir ve geri bildirim isteyebilirsin. Her seviyeden geliştirici burada yer alabilir. - -## Resmi olmayan Tartışma Alanları - -Node.js hakkında daha samimi bir ortamda tartışmak istiyorsanız, birkaç tane resmi olmayan tartışma alanı var. Ancak, bunların Node.js projesi tarafından resmi olarak desteklenmediğini unutmayın.Ayrıca ilgili davranış kurallarına/kurallara uyun. - -- [Node Slackers](https://www.nodeslackers.com/) Node.js odaklı bir Slack topluluğudur. -- [OpenJSF Slack](https://slack-invite.openjsf.org/) OpenJS Kuruluşu için Slack çalışma alanıdır. Node.js ile ilgili birkaç kanal bulunuyor. _(#nodejs-’ ile başlayan kanallar projeyle ilgilidir)_ -- [Nodeiflux](https://discordapp.com/invite/vUsrbjd), Discord'da birbirini destekleyen Node.js arka uç geliştiricilerinden oluşan samimi bir topluluktur. -- [ES Topluluğu](https://discord.gg/zJsuc6vvhn), Fransızca konuşan JavaScript geliştiricileri için bir Discord topluluğudur. -- `#node.js` kanalındaki `irc.libera.chat`'e [IRC istemcisi](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ile bağlanın veya web tarayıcınızdan [web istemcisi](https://kiwiirc.com/nextclient/) kullanarak kanala bağlanın. diff --git a/apps/site/pages/uk/about/get-involved/index.md b/apps/site/pages/uk/about/get-involved/index.md deleted file mode 100644 index e3a63f171c4e6..0000000000000 --- a/apps/site/pages/uk/about/get-involved/index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Долучитися -layout: about ---- - -# Долучитися - -Якщо ви зацікавлені в участі в спільноті Node.js, ви можете долучитися до нас різними способами. Проєкт Node.js — це велика і різноманітна спільнота, якій можна допомогти не лише кодом. - -## Обговорення спільноти - -- [Список issue'ів на 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. -- Офіційний Twitter Node.js: [nodejs](https://twitter.com/nodejs). -- [Календар проєкту Node.js](https://nodejs.org/calendar) з усіма публічними командними зустрічами. - -## Навчальні матеріали - -Якщо ви хочете дізнатися більше про Node.js, використовуйте наступні ресурси: - -- [Офіційний розділ навчання](https://nodejs.org/en/learn/) вебсайту Node.js. -- [Офіційна документація з API](https://nodejs.org/api/). -- [NodeSchool.io](https://nodeschool.io/) навчить вас концепцій Node.js за допомогою інтерактивних ігор у командному рядку. -- [Тег Node.js у Stack Overflow](https://stackoverflow.com/questions/tagged/node.js) щодня збирає нову інформацію. -- [Тег Node.js на DEV Community](https://dev.to/t/node) — це місце, де можна ділитися проєктами, статтями та посібниками з Node.js, а також почати обговорення та просити відгуки до тем, пов'язаних із Node.js. До участі запрошуються розробники всіх рівнів. -- [Спільнота Node.js у Reddit](https://www.reddit.com/r/node) — це місце, де можна ділитися проєктами, статтями та посібниками, а також починати обговорення та просити відгуки на тему Node.js. Запрошуються розробники всіх рівнів. - -## Неофіційні платформи - -Якщо вас цікавлять менш формальні місця для обговорення Node.js, ви можете відвідати наступні платформи. -Пам'ятайте: вони не є офіційно схваленими проєктом Node.js. Також дотримуйтеся їхніх правил та кодексів поведінки. - -- [Node Slackers](https://www.nodeslackers.com/) — це спільнота Slack із фокусом на Node.js. -- [OpenJSF Slack](https://slack-invite.openjsf.org/) — це робочий простір Slack для OpenJS Foundation. Там є кілька каналів, які стосуються Node.js. _(канали з префіксом `#nodejs-` стосуються проєкту)_ -- [Nodeiflux](https://discordapp.com/invite/vUsrbjd) — це дружня спільнота бекенд-розробників Node.js, які підтримують один одного в Discord. -- [ES Community](https://discord.gg/zJsuc6vvhn) — це Discord-спільнота для французькомовних розробників на JavaScript. -- Для IRC перейдіть на `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/zh-tw/about/get-involved/index.md b/apps/site/pages/zh-tw/about/get-involved/index.md deleted file mode 100644 index 5f36914b7dd5e..0000000000000 --- a/apps/site/pages/zh-tw/about/get-involved/index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: 加入我們 -layout: about ---- - -# 加入我們 - -若您對於參與 Node.js 社群感興趣,有許多管道可以參與。Node.js 專案是一個龐大且多元的社群,除了撰寫程式碼以外,還有許多貢獻方式。 - -## 社群討論 - -- [GitHub 議題列表](https://github.com/nodejs/node/issues) 是討論 Node.js 核心功能的地方。若您對 Node.js 有疑問,可以使用 [GitHub discussions](https://github.com/orgs/nodejs/discussions)。 -- [`nodejs/help`](https://github.com/nodejs/help/issues) 是專為討論 Node.js 問題的儲存庫。 -- Node.js 的官方 Twitter 帳號是 [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)每天都會收集最新資訊。 -- [The DEV Community Node.js tag](https://dev.to/t/node) 是供開發者分享 Node.js 專案、文章與教學,以及討論 Node.js 相關主題、收集他人意見的地方。無論程度如何都歡迎踴躍參與。 -- [Reddit Node.js community](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) 是一個在 Discord 上的法語 JavaScript 社群。 -- 使用 [IRC 客戶端](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients)連線至 `#node.js` 頻道中的 `irc.libera.chat`,或使用[網頁客戶端](https://kiwiirc.com/nextclient/)透過瀏覽器連線至該頻道。 diff --git a/apps/site/redirects.json b/apps/site/redirects.json index 3795508081d2e..02cc24e0f0ca2 100644 --- a/apps/site/redirects.json +++ b/apps/site/redirects.json @@ -331,6 +331,14 @@ { "source": "/:locale/download/source-code/current", "destination": "/:locale/download/current" + }, + { + "source": "/discord", + "destination": "https://discord.gg/vUsrbjd" + }, + { + "source": "/:locale/discord", + "destination": "https://discord.gg/vUsrbjd" } ], "internal": [] diff --git a/apps/site/site.json b/apps/site/site.json index 8e6bb062b680f..6f23ba06f744d 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -28,11 +28,11 @@ ], "websiteBanners": { "index": { - "startDate": "2025-01-21T03:00:00.000Z", - "endDate": "2025-01-28T03:00:00.000Z", - "text": "January Security Release is available", - "link": "https://nodejs.org/en/blog/vulnerability/january-2025-security-releases", - "type": "warning" + "startDate": "2025-03-17T00:00:00.000Z", + "endDate": "2025-04-17T00:00:00.000Z", + "text": "Node.js launches an official Discord community", + "link": "https://nodejs.org/en/blog/announcements/official-discord-launch-announcement", + "type": "default" } }, "websiteBadges": { From ff689521e2f5e66a6922ac9440f30f50500655d5 Mon Sep 17 00:00:00 2001 From: Thiago Romano <thiagopromano@gmail.com> Date: Wed, 19 Mar 2025 23:11:16 +0100 Subject: [PATCH 0340/1385] learn: Update Don't Block the Event Loop outdated remark about `fs.readFile()` (#7493) * Update dont-block-the-event-loop.md Signed-off-by: Thiago Romano <thiagopromano@gmail.com> * Update dont-block-the-event-loop.md Signed-off-by: Thiago Romano <thiagopromano@gmail.com> * Update dont-block-the-event-loop.md Signed-off-by: Thiago Romano <thiagopromano@gmail.com> --------- Signed-off-by: Thiago Romano <thiagopromano@gmail.com> --- .../en/learn/asynchronous-work/dont-block-the-event-loop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/dont-block-the-event-loop.md b/apps/site/pages/en/learn/asynchronous-work/dont-block-the-event-loop.md index b040b41ddb34b..f3b32412d7ebb 100644 --- a/apps/site/pages/en/learn/asynchronous-work/dont-block-the-event-loop.md +++ b/apps/site/pages/en/learn/asynchronous-work/dont-block-the-event-loop.md @@ -436,7 +436,7 @@ Two examples should illustrate the possible variation in task times. Suppose your server must read files in order to handle some client requests. After consulting the Node.js [File system](https://nodejs.org/api/fs.html) APIs, you opted to use `fs.readFile()` for simplicity. -However, `fs.readFile()` is ([currently](https://github.com/nodejs/node/pull/17054)) not partitioned: it submits a single `fs.read()` Task spanning the entire file. +However, `fs.readFile()` before v10 was not partitioned: it submitted a single `fs.read()` Task spanning the entire file. If you read shorter files for some users and longer files for others, `fs.readFile()` may introduce significant variation in Task lengths, to the detriment of Worker Pool throughput. For a worst-case scenario, suppose an attacker can convince your server to read an _arbitrary_ file (this is a [directory traversal vulnerability](https://www.owasp.org/index.php/Path_Traversal)). From abf7ceb5071d50ade0cf8d46e14f4e757851068e Mon Sep 17 00:00:00 2001 From: Shivsingh15 <167164485+Shivsingh15@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:07:22 +0530 Subject: [PATCH 0341/1385] learn: add Asynchronous JS link (#7509) * About Asynchronous JS Signed-off-by: Shivsingh15 <167164485+Shivsingh15@users.noreply.github.com> * remove extra space and back Slash from the Async Link Signed-off-by: Shivsingh15 <167164485+Shivsingh15@users.noreply.github.com> --------- Signed-off-by: Shivsingh15 <167164485+Shivsingh15@users.noreply.github.com> --- .../how-much-javascript-do-you-need-to-know-to-use-nodejs.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/site/pages/en/learn/getting-started/how-much-javascript-do-you-need-to-know-to-use-nodejs.md b/apps/site/pages/en/learn/getting-started/how-much-javascript-do-you-need-to-know-to-use-nodejs.md index a04415c5713c6..c74b408ba71a2 100644 --- a/apps/site/pages/en/learn/getting-started/how-much-javascript-do-you-need-to-know-to-use-nodejs.md +++ b/apps/site/pages/en/learn/getting-started/how-much-javascript-do-you-need-to-know-to-use-nodejs.md @@ -24,6 +24,7 @@ As a beginner, it's hard to get to a point where you are confident enough in you - [Template Literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) - [Strict Mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode) - [ECMAScript 2015 (ES6) and beyond](/learn/getting-started/ecmascript-2015-es6-and-beyond) +- [Asynchronous JavaScript](https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Async_JS) With those concepts in mind, you are well on your road to become a proficient JavaScript developer, in both the browser and in Node.js. From 9d04a979bd7e31e6b53b4a716e5e362a4a511115 Mon Sep 17 00:00:00 2001 From: Joyee Cheung <joyeec9h3@gmail.com> Date: Thu, 20 Mar 2025 13:46:14 +0100 Subject: [PATCH 0342/1385] Blog: synchronize v20.19.0 changelog with core repo (#7556) --- apps/site/pages/en/blog/release/v20.19.0.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/site/pages/en/blog/release/v20.19.0.md b/apps/site/pages/en/blog/release/v20.19.0.md index dbc74039ee20e..bbfca5276573a 100644 --- a/apps/site/pages/en/blog/release/v20.19.0.md +++ b/apps/site/pages/en/blog/release/v20.19.0.md @@ -18,7 +18,9 @@ an exception was made to backport `require(esm)` due to its importance and impac Support for loading native ES modules using require() had been available on v20.x under the command line flag --experimental-require-module, and available by default on v22.x and v23.x. In this release, it is now no longer behind a flag on v20.x. -This feature has been tested on v23.x and v22.x, and we are looking for user feedback from v20.x to make more final tweaks before fully stabilizing it. When the Node.js instance encounters a native ES module in require() somewhere outside `node_modules` 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. +This feature has been tested on v23.x and v22.x, and we are looking for user feedback from v20.x to make more final tweaks before fully stabilizing it. +It now no longer emits a warning unless `--trace-require-module` is explicitly used. +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. From 77aa3f25447c1de06959782ad2b77f34d7a8b046 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 22 Mar 2025 02:34:02 +0100 Subject: [PATCH 0343/1385] chore(deps): bump next from 15.2.0 to 15.2.3 in /apps/site (#7558) Bumps [next](https://github.com/vercel/next.js) from 15.2.0 to 15.2.3. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v15.2.0...v15.2.3) --- updated-dependencies: - dependency-name: next dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/package.json b/apps/site/package.json index caa3a0d316248..d7e50657d3b0e 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -53,7 +53,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.2.0", + "next": "15.2.3", "next-intl": "~3.26.5", "next-themes": "~0.4.4", "postcss": "~8.5.3", From 167a8f42e5d74a623756b8774c9498632929058d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 22 Mar 2025 12:30:34 +0100 Subject: [PATCH 0344/1385] [automated]: crowdin sync (#7560) * 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 <support+bot@crowdin.com> Co-authored-by: bmuenzenmeyer <298435+bmuenzenmeyer@users.noreply.github.com> --- apps/site/pages/es/about/branding.mdx | 95 +++-- apps/site/pages/es/about/governance.md | 19 +- apps/site/pages/es/about/index.mdx | 15 +- .../site/pages/es/about/previous-releases.mdx | 18 +- .../pages/es/about/security-reporting.mdx | 16 +- apps/site/pages/es/download/current.mdx | 30 ++ apps/site/pages/es/download/index.mdx | 30 ++ apps/site/pages/es/index.mdx | 245 ++++++----- .../pages/fa/about/security-reporting.mdx | 16 +- apps/site/pages/fr/about/branding.mdx | 95 +++-- apps/site/pages/fr/about/index.mdx | 4 +- .../site/pages/fr/about/previous-releases.mdx | 2 +- .../pages/fr/about/security-reporting.mdx | 46 +- apps/site/pages/fr/download/current.mdx | 13 +- apps/site/pages/fr/download/index.mdx | 13 +- apps/site/pages/fr/index.mdx | 241 ++++++----- apps/site/pages/id/about/branding.mdx | 95 +++-- apps/site/pages/id/about/index.mdx | 2 +- .../site/pages/id/about/previous-releases.mdx | 2 +- .../pages/id/about/security-reporting.mdx | 16 +- apps/site/pages/id/download/current.mdx | 13 +- apps/site/pages/id/download/index.mdx | 13 +- apps/site/pages/id/index.mdx | 245 ++++++----- apps/site/pages/ja/about/branding.mdx | 95 +++-- .../site/pages/ja/about/get-involved/index.md | 35 ++ apps/site/pages/ja/about/governance.md | 18 +- apps/site/pages/ja/about/index.mdx | 14 +- .../site/pages/ja/about/previous-releases.mdx | 2 +- .../pages/ja/about/security-reporting.mdx | 16 +- apps/site/pages/ja/download/current.mdx | 17 +- apps/site/pages/ja/download/index.mdx | 17 +- apps/site/pages/ja/index.mdx | 241 ++++++----- apps/site/pages/ko/about/branding.mdx | 95 +++-- apps/site/pages/ko/about/governance.md | 17 +- .../site/pages/ko/about/previous-releases.mdx | 2 +- .../pages/ko/about/security-reporting.mdx | 18 +- apps/site/pages/pt/about/branding.mdx | 97 +++-- .../pages/pt/about/get-involved/events.mdx | 2 +- apps/site/pages/pt/about/governance.md | 17 +- apps/site/pages/pt/about/index.mdx | 16 +- .../site/pages/pt/about/previous-releases.mdx | 19 +- .../pages/pt/about/security-reporting.mdx | 22 +- apps/site/pages/pt/download/current.mdx | 30 ++ apps/site/pages/pt/download/index.mdx | 30 ++ apps/site/pages/pt/index.mdx | 20 +- apps/site/pages/ro/about/branding.mdx | 83 ++++ apps/site/pages/ro/about/governance.md | 24 ++ apps/site/pages/ro/about/index.mdx | 54 +++ .../pages/ro/download/package-manager/all.md | 394 ++++++++++++++++++ .../pages/tr/about/security-reporting.mdx | 16 +- apps/site/pages/uk/about/branding.mdx | 95 +++-- .../site/pages/uk/about/get-involved/index.md | 36 ++ apps/site/pages/uk/about/index.mdx | 2 +- .../site/pages/uk/about/previous-releases.mdx | 2 +- .../pages/uk/about/security-reporting.mdx | 16 +- apps/site/pages/uk/download/current.mdx | 19 +- apps/site/pages/uk/download/index.mdx | 19 +- apps/site/pages/uk/index.mdx | 243 ++++++----- .../pages/zh-cn/about/security-reporting.mdx | 16 +- apps/site/pages/zh-tw/about/governance.md | 17 +- apps/site/pages/zh-tw/about/index.mdx | 14 +- .../pages/zh-tw/about/previous-releases.mdx | 2 +- .../pages/zh-tw/about/security-reporting.mdx | 18 +- apps/site/pages/zh-tw/download/current.mdx | 30 ++ apps/site/pages/zh-tw/download/index.mdx | 17 +- apps/site/pages/zh-tw/index.mdx | 241 ++++++----- apps/site/snippets/es/download/fnm.bash | 11 + apps/site/snippets/es/download/npm.bash | 2 + apps/site/snippets/es/download/pnpm.bash | 5 + apps/site/snippets/es/download/volta.bash | 11 + apps/site/snippets/fr/download/volta.bash | 11 + apps/site/snippets/ja/download/nvm.bash | 5 +- apps/site/snippets/ja/download/volta.bash | 11 + apps/site/snippets/pt/download/brew.bash | 8 + apps/site/snippets/pt/download/choco.bash | 8 + apps/site/snippets/pt/download/devbox.bash | 14 + apps/site/snippets/pt/download/docker.bash | 11 + apps/site/snippets/pt/download/fnm.bash | 11 + apps/site/snippets/pt/download/npm.bash | 2 + apps/site/snippets/pt/download/nvm.bash | 12 + apps/site/snippets/pt/download/pnpm.bash | 5 + apps/site/snippets/pt/download/volta.bash | 11 + apps/site/snippets/pt/download/yarn.bash | 5 + apps/site/snippets/ro/download/brew.bash | 8 + apps/site/snippets/uk/download/nvm.bash | 5 +- apps/site/snippets/uk/download/volta.bash | 11 + apps/site/snippets/zh-tw/download/brew.bash | 4 +- apps/site/snippets/zh-tw/download/choco.bash | 6 +- apps/site/snippets/zh-tw/download/devbox.bash | 4 +- apps/site/snippets/zh-tw/download/docker.bash | 6 +- apps/site/snippets/zh-tw/download/fnm.bash | 6 +- apps/site/snippets/zh-tw/download/npm.bash | 4 +- apps/site/snippets/zh-tw/download/pnpm.bash | 4 +- apps/site/snippets/zh-tw/download/yarn.bash | 4 +- packages/i18n/locales/ja.json | 22 +- packages/i18n/locales/pt.json | 138 +++--- packages/i18n/locales/uk.json | 16 +- packages/i18n/locales/zh-tw.json | 28 +- 98 files changed, 2387 insertions(+), 1504 deletions(-) create mode 100644 apps/site/pages/es/download/current.mdx create mode 100644 apps/site/pages/es/download/index.mdx create mode 100644 apps/site/pages/ja/about/get-involved/index.md create mode 100644 apps/site/pages/pt/download/current.mdx create mode 100644 apps/site/pages/pt/download/index.mdx create mode 100644 apps/site/pages/ro/about/branding.mdx create mode 100644 apps/site/pages/ro/about/governance.md create mode 100644 apps/site/pages/ro/about/index.mdx create mode 100644 apps/site/pages/ro/download/package-manager/all.md create mode 100644 apps/site/pages/uk/about/get-involved/index.md create mode 100644 apps/site/pages/zh-tw/download/current.mdx create mode 100644 apps/site/snippets/es/download/fnm.bash create mode 100644 apps/site/snippets/es/download/npm.bash create mode 100644 apps/site/snippets/es/download/pnpm.bash create mode 100644 apps/site/snippets/es/download/volta.bash create mode 100644 apps/site/snippets/fr/download/volta.bash create mode 100644 apps/site/snippets/ja/download/volta.bash create mode 100644 apps/site/snippets/pt/download/brew.bash create mode 100644 apps/site/snippets/pt/download/choco.bash create mode 100644 apps/site/snippets/pt/download/devbox.bash create mode 100644 apps/site/snippets/pt/download/docker.bash create mode 100644 apps/site/snippets/pt/download/fnm.bash create mode 100644 apps/site/snippets/pt/download/npm.bash create mode 100644 apps/site/snippets/pt/download/nvm.bash create mode 100644 apps/site/snippets/pt/download/pnpm.bash create mode 100644 apps/site/snippets/pt/download/volta.bash create mode 100644 apps/site/snippets/pt/download/yarn.bash create mode 100644 apps/site/snippets/ro/download/brew.bash create mode 100644 apps/site/snippets/uk/download/volta.bash diff --git a/apps/site/pages/es/about/branding.mdx b/apps/site/pages/es/about/branding.mdx index 08ccf552e7e9d..1fc4dcc0da676 100644 --- a/apps/site/pages/es/about/branding.mdx +++ b/apps/site/pages/es/about/branding.mdx @@ -3,7 +3,7 @@ title: Marca de Node.js layout: about --- -Marca de Node.js +# 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®. @@ -24,61 +24,60 @@ Créditos a [Angela Angelini](https://www.linkedin.com/in/angeliningl/) por dise ### Logo Horizontal de Node.js® <table> -<tbody> - <tr> - <td> - <img alt="Logo Horizontal Oscuro de Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Logo Horizontal Claro de Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Logo Horizontal Oscuro de Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Logo Horizontal Claro de Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> </table> ### Logo Apilado de Node.js® <table> -<tbody> - <tr> - <td> - <img alt="Logo Apilado Oscuro de Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Logo Apilado Claro de Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> - - </tr> - - <tr> - <td> - <img alt="Logo Apilado Negro de Node.js" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Logo Apilado Blanco de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Logo Apilado Oscuro de Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Logo Apilado Claro de Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Logo Apilado Negro de Node.js" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Logo Apilado Blanco de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> </table> ### Iconos de JS <table> -<tbody> - <tr> - <td> - <img alt="Iconos Verde de JS" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="Iconos Blanco de JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Iconos Verde de JS" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Iconos Blanco de JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> </table> diff --git a/apps/site/pages/es/about/governance.md b/apps/site/pages/es/about/governance.md index 92eca9e99ac0e..0f738c136b13f 100644 --- a/apps/site/pages/es/about/governance.md +++ b/apps/site/pages/es/about/governance.md @@ -7,25 +7,18 @@ layout: about ## Proceso de Búsqueda de Consenso -El proyecto Node.js sigue un modelo de toma de decisiones basado en la [Búsqueda de Consenso][]. +El proyecto Node.js busca hacer [decisiones por consenso](https://es.wikipedia.org/wiki/Decisi%C3%B3n_por_consenso). ## Colaboradores -El repositorio principal de GitHub [nodejs/node][] es mantenido por los Colaboradores, quienes son nominados por otros Colaboradores existentes de manera continua. +El repositorio principal de GitHub [nodejs/node](https://github.com/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. +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 lista de los colaboradores actuales se puede encontrar en el [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members) del proyecto. -La guía para Colaboraciones es mantenida en [collaborator-guide.md][]. +La guía para colaboraciones es mantenida en [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/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 +El proyecto está gobernado por el [Comité Técnico de Dirección (TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md) 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. diff --git a/apps/site/pages/es/about/index.mdx b/apps/site/pages/es/about/index.mdx index df9cfdc257303..c3f48857414e8 100644 --- a/apps/site/pages/es/about/index.mdx +++ b/apps/site/pages/es/about/index.mdx @@ -3,7 +3,7 @@ title: Sobre Node.js® layout: about --- -Sobre Node.js® +# 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. @@ -43,21 +43,14 @@ server.listen(port, hostname, () => { 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][]. +Si algo de este lenguaje no le resulta familiar, hay un artículo completo sobre [Bloqueante vs. No-Bloqueante](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking). --- -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. +Node.js es similar en diseño y está influenciado por sistemas como [Event Machine](https://github.com/eventmachine/eventmachine) de Ruby y [Twisted](https://twisted.org/) 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 -[torcido]: https://twisted.org/ +Que Node.js esté diseñado sin hilos no significa que no puedas aprovechar múltiples núcleos en tu entorno. Los procesos secundarios se pueden generar utilizando nuestra API [`child_process.fork()`](https://nodejs.org/api/child_process.html) y están diseñados para que sea fácil comunicarse con ellos. Construido sobre esa misma interfaz se encuentra el módulo [`cluster`](https://nodejs.org/api/cluster.html), que le permite compartir sockets entre procesos para permitir el equilibrio de carga en sus núcleos. diff --git a/apps/site/pages/es/about/previous-releases.mdx b/apps/site/pages/es/about/previous-releases.mdx index d13f8b51ac065..46bcef2d0f050 100644 --- a/apps/site/pages/es/about/previous-releases.mdx +++ b/apps/site/pages/es/about/previous-releases.mdx @@ -3,7 +3,7 @@ title: Versiones de Node.js layout: about --- -Versiones de Node.js +# 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. @@ -14,7 +14,7 @@ Las aplicaciones de producción solo deben usar versiones _LTS Activo_ o _LTS en ![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). +Los detalles del calendario de lanzamiento de Node.js están disponibles [en GitHub](https://github.com/nodejs/release#release-schedule). ### Soporte Comercial @@ -23,3 +23,17 @@ El soporte comercial para versiones posteriores a la fase de Mantenimiento está ## ¿Buscando las últimas versiones de una rama específica? <DownloadReleasesTable /> + +## Oficial versus Comunidad + +El sito web de Node.js ofrece varios métodos de instalación que facilitan una instalación de Node.js sin interacción, como por una interfaz de línea de comandos (CLI), gestores de paquetes del OS (como `apt`), o gestores de versiones de Node.js (como `nvm`). + +El proyecto Node.js, en un intento de popularizar y anunciar esfuerzos comunitarios, ha introducido una página nueva de Descargas que enumera métodos de instalación Oficial y de la Comunidad, así proveyendo más flexibilidad y opciones para usuarios. +Como parte de este cambio, hemos introducido el concepto de métodos de instalación "Oficial" y "Comunidad". Para considerarse "Oficial", un método de instalación debe cumplir con los siguientes requisitos: + +| Requisitos | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Lanzamientos nuevos de Node.js deben estar disponible al mismo tiempo que el lanzamiento oficial | +| Los mantenedores del proyecto tienen una estrecha relación con Node.js, la cual incluye comunicación directa | +| El método de instalación descarga los binarios oficiales empaquetados por el proyecto Node.js | +| El método de instalación **no** compila desde el código fuente cuando binarios están disponibles, ni modifica los binarios oficiales proveídos por Node.js | diff --git a/apps/site/pages/es/about/security-reporting.mdx b/apps/site/pages/es/about/security-reporting.mdx index 012bfa538e2ff..b88189dceb075 100644 --- a/apps/site/pages/es/about/security-reporting.mdx +++ b/apps/site/pages/es/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: Reportes de Seguridad layout: about --- -Reportes de Seguridad +# 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). @@ -28,22 +28,22 @@ mantenedores. 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. +- 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. +- 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. +- 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. +- 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. +- 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) +- [Grupo de Google](https://groups.google.com/group/nodejs-sec) +- [Blog de Node.js](/blog) ## Comentarios sobre esta política diff --git a/apps/site/pages/es/download/current.mdx b/apps/site/pages/es/download/current.mdx new file mode 100644 index 0000000000000..7b0959c0e8187 --- /dev/null +++ b/apps/site/pages/es/download/current.mdx @@ -0,0 +1,30 @@ +--- +layout: download +title: Descarga Node.js® +--- + +<section> + Obtén Node.js® <Release.VersionDropdown /> para <Release.OperatingSystemDropdown /> usando <Release.InstallationMethodDropdown /> con <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + + <Release.Provider> + O obtenga una versión pre compilada de Node.js® para <Release.OperatingSystemDropdown /> usando la arquitectura <Release.PlatformDropdown />. + + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> +</section> + +<section> + Lee el <Release.ChangelogLink>historial de cambios</Release.ChangelogLink> para esta versión. + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. + +Aprende a <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verificar</LinkWithArrow> la firma SHASUMS. + +¿Buscas el código fuente de Node.js? Descarga un archivo tarball firmado con el <Release.DownloadLink kind="source">código fuente de Node.js</Release.DownloadLink>. + +Consulta nuestros binarios <LinkWithArrow href="https://nodejs.org/download/nightly/">diarios</LinkWithArrow> o todas las <LinkWithArrow href="https://nodejs.org/download/release/">versiones anteriores</LinkWithArrow> o los binarios <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">no oficiales</LinkWithArrow> para otras plataformas. + +</section> diff --git a/apps/site/pages/es/download/index.mdx b/apps/site/pages/es/download/index.mdx new file mode 100644 index 0000000000000..2f92d13eaa65d --- /dev/null +++ b/apps/site/pages/es/download/index.mdx @@ -0,0 +1,30 @@ +--- +layout: download +title: Descarga Node.js® +--- + +<section> + Obtiene Node.js® <Release.VersionDropdown /> para <Release.OperatingSystemDropdown /> usando <Release.InstallationMethodDropdown /> con <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + + <Release.Provider> + O obtiene una versión pre compilada de Node.js® para <Release.OperatingSystemDropdown /> usando la arquitectura <Release.PlatformDropdown />. + + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> +</section> + +<section> + Lee el <Release.ChangelogLink>historial</Release.ChangelogLink> para esta versión. + +Lee el <Release.BlogPostLink>artículo del blog</Release.BlogPostLink> para esta versión. + +Aprende a <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verificar</LinkWithArrow> la firma SHASUMS. + +¿Buscas el código fuente de Node.js? Descarga un archivo tarball firmado con el <Release.DownloadLink kind="source">código fuente de Node.js</Release.DownloadLink>. + +Consulta nuestros binarios <LinkWithArrow href="https://nodejs.org/download/nightly/">diarios</LinkWithArrow> o todas las <LinkWithArrow href="https://nodejs.org/download/release/">versiones anteriores</LinkWithArrow> o los binarios <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">no oficiales</LinkWithArrow> para otras plataformas. + +</section> diff --git a/apps/site/pages/es/index.mdx b/apps/site/pages/es/index.mdx index 5ef18bf2575ed..72c9f55539fa3 100644 --- a/apps/site/pages/es/index.mdx +++ b/apps/site/pages/es/index.mdx @@ -4,135 +4,132 @@ layout: home --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Ejecuta JavaScript en cualquier parte</h1> - -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. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Descargar Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Ejecuta JavaScript en cualquier parte</h1> + + 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. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Descargar Node.js (LTS)</DownloadButton> + <small> + Descarga Node.js <b>{release.versionWithPrefix}</b> + <sup title="Descarga un instalador de Node.js para tu plataforma">1</sup> con soporte a largo plazo. + Node.js también puede ser instalado a través de <Link href="/download">gestores de versiones</Link>. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Descarga Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> con soporte a largo plazo. - Node.js también puede ser instalado a través de <Link href="/download/package-manager">gestores de paquetes</Link>. + ¿Quieres nuevas funciones más pronto? + Consigue<b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> en vez. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - ¿Quieres nuevas funciones más pronto? - Consigue<b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> en vez. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> + <div> + ```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` + ``` + + </div> Aprenda más sobre lo que Node.js puede ofrecer con nuestros [Materiales de aprendizaje](/learn). diff --git a/apps/site/pages/fa/about/security-reporting.mdx b/apps/site/pages/fa/about/security-reporting.mdx index ab8dafdc590ec..e67faff678d69 100644 --- a/apps/site/pages/fa/about/security-reporting.mdx +++ b/apps/site/pages/fa/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: گزارش امنیتی layout: about --- -گزارش امنیتی +# گزارش امنیتی برای جزئیات بیشتر در مورد سیاست‌های امنیتی فعال، [این صفحه](https://github.com/nodejs/node/security/policy) را بررسی کنید. @@ -27,22 +27,22 @@ layout: about سیاست افشاگری امنیتی برای Node.js : -گزارش امنیتی دریافت و یک کنترل کننده اصلی به آن اختصاص داده می‌شود. این شخص فرایند رفع مشکل و انتشار را هماهنگ می‌کند. مشکل تایید و لیستی از تمام نسخه‌های تاثیرپذیر تعیین می‌شود. کد برای یافتن هرگونه مشکل مشابه بالقوه دیگر بررسی می‌شود. رفع‌ها برای تمام نسخه‌هایی که هنوز تحت پشتیبانی هستند آماده می‌شوند. این رفع‌ها به مخزن عمومی ارسال نمی‌شوند بلکه به صورت محلی نگهداری می‌شوند تا زمان اعلام فرا برسد. +- گزارش امنیتی دریافت و یک کنترل کننده اصلی به آن اختصاص داده می‌شود. این شخص فرایند رفع مشکل و انتشار را هماهنگ می‌کند. مشکل تایید و لیستی از تمام نسخه‌های تاثیرپذیر تعیین می‌شود. کد برای یافتن هرگونه مشکل مشابه بالقوه دیگر بررسی می‌شود. رفع‌ها برای تمام نسخه‌هایی که هنوز تحت پشتیبانی هستند آماده می‌شوند. این رفع‌ها به مخزن عمومی ارسال نمی‌شوند بلکه به صورت محلی نگهداری می‌شوند تا زمان اعلام فرا برسد. -یک تاریخ محرمانگی پیشنهادی برای این آسیب‌پذیری انتخاب می‌شود و یک CVE (آسیب‌پذیری‌ها و مواجهه‌های رایج مشترک) برای آسیب‌پذیری درخواست می‌شود. +- یک تاریخ محرمانگی پیشنهادی برای این آسیب‌پذیری انتخاب می‌شود و یک CVE (آسیب‌پذیری‌ها و مواجهه‌های رایج مشترک) برای آسیب‌پذیری درخواست می‌شود. -در تاریخ محرمانگی، کپی اطلاعیه به لیست ایمیل امنیتی Node.js ارسال می‌شود. تغییرات به مخزن عمومی ارسال و نسخه‌های جدید در nodejs.org منتشر می‌شوند. در عرض 6 ساعت از اطلاع‌رسانی به لیست ایمیل، کپی‌ای از اطلاعیه در بلاگ Node.js منتشر خواهد شد. +- در تاریخ محرمانگی، کپی اطلاعیه به لیست ایمیل امنیتی Node.js ارسال می‌شود. تغییرات به مخزن عمومی ارسال و نسخه‌های جدید در nodejs.org منتشر می‌شوند. در عرض 6 ساعت از اطلاع‌رسانی به لیست ایمیل، کپی‌ای از اطلاعیه در بلاگ Node.js منتشر خواهد شد. -معمولاً تاریخ محرمانگی 72 ساعت پس از صدور CVE تنظیم می‌شود. با این حال، ممکن است بر اساس شدت باگ یا دشواری در اعمال رفع تغییر کند. +- معمولاً تاریخ محرمانگی 72 ساعت پس از صدور CVE تنظیم می‌شود. با این حال، ممکن است بر اساس شدت باگ یا دشواری در اعمال رفع تغییر کند. -این فرایند ممکن است زمانبر باشد، به ویژه زمانی که هماهنگی با نگهدارندگان پروژه‌های دیگر نیز مورد نیاز باشد. تلاش خواهد شد تا باگ در سریع‌ترین زمان ممکن برطرف شود؛ با این حال، مهم است که ما از فرایند انتشار بالا پیروی کنیم تا اطمینان حاصل شود که افشاگری به شیوه‌ای یکپارچه انجام می‌شود. +- این فرایند ممکن است زمانبر باشد، به ویژه زمانی که هماهنگی با نگهدارندگان پروژه‌های دیگر نیز مورد نیاز باشد. تلاش خواهد شد تا باگ در سریع‌ترین زمان ممکن برطرف شود؛ با این حال، مهم است که ما از فرایند انتشار بالا پیروی کنیم تا اطمینان حاصل شود که افشاگری به شیوه‌ای یکپارچه انجام می‌شود. ## دریافت به‌روزرسانی‌های امنیتی اطلاعیه‌های امنیتی از طریق روش‌های زیر توزیع خواهند شد: -[گروه گوگل](https://groups.google.com/group/nodejs-sec) -[بلاگ Node.js](/blog) +- [گروه گوگل](https://groups.google.com/group/nodejs-sec) +- [بلاگ Node.js](/blog) ## نظرات درباره این سیاست diff --git a/apps/site/pages/fr/about/branding.mdx b/apps/site/pages/fr/about/branding.mdx index bd7fe749280d8..ef0dedb49af36 100644 --- a/apps/site/pages/fr/about/branding.mdx +++ b/apps/site/pages/fr/about/branding.mdx @@ -3,7 +3,7 @@ title: L'image de marque de Node.js layout: about --- -L'image de marque de Node.js +# L'image de marque de Node.js Veuillez consulter la [politique en matière de marques](https://trademark-policy.openjsf.org/) pour obtenir des informations sur l'utilisation autorisée des logos et marques de Node.js®. @@ -24,61 +24,60 @@ Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la c ### Node.js® Logo horizontal <table> -<tbody> - <tr> - <td> - <img alt="Logo horizontal sombre de Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Logo horizontal clair de Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Logo horizontal sombre de Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Logo horizontal clair de Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> </table> ### Logo Node.js® empilé <table> -<tbody> - <tr> - <td> - <img alt="Logo empilé sombre de Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Logo empilé clair de Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> - - </tr> - - <tr> - <td> - <img alt="Logo empilé noir de Node.js" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Logo empilé blanc de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Logo empilé sombre de Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Logo empilé clair de Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Logo empilé noir de Node.js" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Logo empilé blanc de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> </table> ### Icons JS <table> -<tbody> - <tr> - <td> - <img alt="Icons JS Vert" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="Icons JS Blanc" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Icons JS Vert" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Icons JS Blanc" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> </table> diff --git a/apps/site/pages/fr/about/index.mdx b/apps/site/pages/fr/about/index.mdx index df8c511311299..30fc43194dba1 100644 --- a/apps/site/pages/fr/about/index.mdx +++ b/apps/site/pages/fr/about/index.mdx @@ -3,10 +3,10 @@ title: À propos de Node.js® layout: about --- -À propos de Node.js® +# À propos de Node.js® En tant que moteur d'exécution JavaScript asynchrone orienté événements, Node.js est conçu pour construire des applications réseau évolutives. Dans l'exemple "hello world" suivant, de nombreuses connexions peuvent être gérées simultanément. -chaque connexion, la fonction callback est exécutée, mais s'il n'y a pas de travail à faire, Node.js se met en veille. +À chaque connexion, la fonction callback est exécutée, mais s'il n'y a pas de travail à faire, Node.js se met en veille. ```cjs const { createServer } = require('node:http'); diff --git a/apps/site/pages/fr/about/previous-releases.mdx b/apps/site/pages/fr/about/previous-releases.mdx index 4f414b6691601..f01be60082b75 100644 --- a/apps/site/pages/fr/about/previous-releases.mdx +++ b/apps/site/pages/fr/about/previous-releases.mdx @@ -3,7 +3,7 @@ title: Versions de Node.js layout: about --- -Versions de Node.js +# Versions de Node.js Les versions majeures de Node.js passent au statut de version _Current_ pendant six mois, ce qui donne aux auteurs de bibliothèques le temps de les prendre en charge. Après six mois, les versions impaires (9, 11, etc.) ne sont plus supportées, et les versions paires (10, 12, etc.) passent au statut _Active LTS_ et sont prêtes pour une utilisation générale. diff --git a/apps/site/pages/fr/about/security-reporting.mdx b/apps/site/pages/fr/about/security-reporting.mdx index b17332a3543ac..7a295d1c67239 100644 --- a/apps/site/pages/fr/about/security-reporting.mdx +++ b/apps/site/pages/fr/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: Rapport de sécurité layout: about --- -Rapport de sécurité +# Rapport de sécurité Pour plus de détails sur les politiques de sécurité active, consultez [cette page](https://github.com/nodejs/node/security/policy). @@ -34,37 +34,37 @@ Les bogues de sécurité dans les modules tiers doivent être signalés à leurs Voici la politique de divulgation de la sécurité pour Node.js -Le rapport de sécurité est reçu et un gestionnaire principal lui est attribué. Cette personne -Cette personne coordonnera le processus de correction et de libération. Le problème est confirmé -et une liste de toutes les versions affectées est établie. Le code est audité pour trouver -tout problème similaire potentiel. Des correctifs sont préparés pour toutes les versions qui sont -toujours en cours de maintenance. Ces correctifs ne sont pas déposés dans le -mais sont plutôt conservés localement dans l'attente de l'annonce. +- Le rapport de sécurité est reçu et un gestionnaire principal lui est attribué. Cette personne + Cette personne coordonnera le processus de correction et de libération. Le problème est confirmé + et une liste de toutes les versions affectées est établie. Le code est audité pour trouver + tout problème similaire potentiel. Des correctifs sont préparés pour toutes les versions qui sont + toujours en cours de maintenance. Ces correctifs ne sont pas déposés dans le + mais sont plutôt conservés localement dans l'attente de l'annonce. -Une date d'embargo est proposée pour cette vulnérabilité et un CVE (Common Vulnerabilities and Exposures (CVE®)) est demandé pour cette vulnérabilité. -Vulnérabilités et expositions communes (CVE®) est demandé pour la vulnérabilité. +- Une date d'embargo est proposée pour cette vulnérabilité et un CVE (Common Vulnerabilities and Exposures (CVE®)) est demandé pour cette vulnérabilité. + Vulnérabilités et expositions communes (CVE®) est demandé pour la vulnérabilité. -À la date d'embargo, la liste de diffusion sur la sécurité de Node.js reçoit une copie de l'annonce. -annonce. Les changements sont poussés vers le dépôt public et de nouvelles versions -sont déployées sur nodejs.org. Dans les 6 heures suivant la notification de la liste de diffusion -une copie de l'avis sera publiée sur le blog de Node.js. +- À la date d'embargo, la liste de diffusion sur la sécurité de Node.js reçoit une copie de l'annonce. + annonce. Les changements sont poussés vers le dépôt public et de nouvelles versions + sont déployées sur nodejs.org. Dans les 6 heures suivant la notification de la liste de diffusion + une copie de l'avis sera publiée sur le blog de Node.js. -En règle générale, la date d'embargo est fixée à 72 heures à compter de l'émission du CVE. -est publié. Toutefois, cela peut varier en fonction de la gravité du bogue ou de la -de la difficulté à appliquer un correctif. +- En règle générale, la date d'embargo est fixée à 72 heures à compter de l'émission du CVE. + est publié. Toutefois, cela peut varier en fonction de la gravité du bogue ou de la + de la difficulté à appliquer un correctif. -Ce processus peut prendre un certain temps, en particulier lorsqu'une coordination est nécessaire avec les responsables d'autres projets. -avec les responsables d'autres projets. Tous les efforts seront faits pour traiter le -bogue le plus rapidement possible ; cependant, il est important que nous suivions la -processus de publication ci-dessus pour s'assurer que la divulgation est traitée de manière -de manière cohérente. +- Ce processus peut prendre un certain temps, en particulier lorsqu'une coordination est nécessaire avec les responsables d'autres projets. + avec les responsables d'autres projets. Tous les efforts seront faits pour traiter le + bogue le plus rapidement possible ; cependant, il est important que nous suivions la + processus de publication ci-dessus pour s'assurer que la divulgation est traitée de manière + de manière cohérente. ## Recevoir les alertes de sécurité Les notifications de sécurité seront diffusées par les méthodes suivantes. -[Google Group](https://groups.google.com/group/nodejs-sec) -[Node.js Blog](/blog) +- [Google Group](https://groups.google.com/group/nodejs-sec) +- [Node.js Blog](/blog) ## Commentaires sur cette politique diff --git a/apps/site/pages/fr/download/current.mdx b/apps/site/pages/fr/download/current.mdx index e8bb2365da1c8..70386163f0977 100644 --- a/apps/site/pages/fr/download/current.mdx +++ b/apps/site/pages/fr/download/current.mdx @@ -4,19 +4,20 @@ title: Télécharger Node.js® --- <section> -Obtenir Node.js® <Release.VersionDropdown /> pour <Release.OperatingSystemDropdown /> l'utiliser <Release.InstallationMethodDropdown /> avec <Release.PackageManagerDropdown /> + Obtenir Node.js® <Release.VersionDropdown /> pour <Release.OperatingSystemDropdown /> l'utiliser <Release.InstallationMethodDropdown /> avec <Release.PackageManagerDropdown /> <Release.ReleaseCodeBox /> -<Release.Provider> - Ou obtenez Node.js® préconstruit <Release.OperatingSystemDropdown /> exécutant une <Release.PlatformDropdown /> architecture. + <Release.Provider> + Ou obtenez Node.js® préconstruit <Release.OperatingSystemDropdown /> exécutant une <Release.PlatformDropdown /> architecture. - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. + Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. diff --git a/apps/site/pages/fr/download/index.mdx b/apps/site/pages/fr/download/index.mdx index 371b0ce5c6847..9002a88b086cc 100644 --- a/apps/site/pages/fr/download/index.mdx +++ b/apps/site/pages/fr/download/index.mdx @@ -4,19 +4,20 @@ title: Télécharger Node.js® --- <section> -Obtenir Node.js® <Release.VersionDropdown /> pour <Release.OperatingSystemDropdown /> l'utiliser <Release.InstallationMethodDropdown /> avec <Release.PackageManagerDropdown /> + Obtenir Node.js® <Release.VersionDropdown /> pour <Release.OperatingSystemDropdown /> l'utiliser <Release.InstallationMethodDropdown /> avec <Release.PackageManagerDropdown /> <Release.ReleaseCodeBox /> -<Release.Provider> - Ou obtenez un Node.js® préconstruit <Release.OperatingSystemDropdown /> exécutant une <Release.PlatformDropdown /> architecture. + <Release.Provider> + Ou obtenez un Node.js® préconstruit <Release.OperatingSystemDropdown /> exécutant une <Release.PlatformDropdown /> architecture. - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. + Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx index 4d23f884a27be..64f3ec059b2da 100644 --- a/apps/site/pages/fr/index.mdx +++ b/apps/site/pages/fr/index.mdx @@ -4,133 +4,130 @@ layout: home --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Exécuter du JavaScript partout</h1> - -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. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Télécharger Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Exécuter du JavaScript partout</h1> + + 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. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Télécharger Node.js (LTS)</DownloadButton> + <small> + Téléchargements Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> avec un support à long terme. + Node.js peut également être installé via <Link href="/download">le gestionnaire de versions</Link>. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Téléchargements Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> avec un support à long terme. - Node.js peut également être installé via <Link href="/download">le gestionnaire de versions</Link>. + Vous voulez de nouvelles fonctionnalités plus tôt ? + Obtenez <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> à la place. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Vous voulez de nouvelles fonctionnalités plus tôt ? - Obtenez <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> à la place. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> + <div> + ```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` + ``` + + </div> 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 503745304067a..c190541460ed9 100644 --- a/apps/site/pages/id/about/branding.mdx +++ b/apps/site/pages/id/about/branding.mdx @@ -3,7 +3,7 @@ title: Pencitraan merek Node.js layout: about --- -Pencitraan merek Node.js +# Pencitraan merek Node.js Harap tinjau [kebijakan merek dagang](https://trademark-policy.openjsf.org/) untuk informasi tentang penggunaan logo dan merek Node.js® yang diizinkan. @@ -24,61 +24,60 @@ Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) a ### Logo Horizontal Node.js® <table> -<tbody> - <tr> - <td> - <img alt="Logo Gelap Horizontal Node.js®" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Logo Terang Horizontal Node.js®" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Logo Gelap Horizontal Node.js®" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Logo Terang Horizontal Node.js®" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> </table> ### Logo Bertumpuk Node.js® <table> -<tbody> - <tr> - <td> - <img alt="Logo Gelap Bertumpuk Node.js®" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Logo Terang Bertumpuk Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> - - </tr> - - <tr> - <td> - <img alt="Logo Bertumpuk Hitam Node.js" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Logo Bertumpuk Putih Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Logo Gelap Bertumpuk Node.js®" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Logo Terang Bertumpuk Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Logo Bertumpuk Hitam Node.js" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Logo Bertumpuk Putih Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> </table> ### JS Icons <table> -<tbody> - <tr> - <td> - <img alt="JS Icons Green" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="Ikon JS Putih" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="JS Icons Green" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Ikon JS Putih" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> </table> diff --git a/apps/site/pages/id/about/index.mdx b/apps/site/pages/id/about/index.mdx index 975d2c2e5af02..7b95f5b35d3e7 100644 --- a/apps/site/pages/id/about/index.mdx +++ b/apps/site/pages/id/about/index.mdx @@ -3,7 +3,7 @@ title: Tentang Node.js® layout: about --- -Tentang Node.js® +# Tentang Node.js® Sebagai runtime JavaScript berbasis peristiwa asinkron, Node.js dirancang untuk membangun aplikasi jaringan yang dapat diskalakan. Dalam contoh "Hello World" berikut, banyak diff --git a/apps/site/pages/id/about/previous-releases.mdx b/apps/site/pages/id/about/previous-releases.mdx index 947a3f11d80c8..4aee5571c3262 100644 --- a/apps/site/pages/id/about/previous-releases.mdx +++ b/apps/site/pages/id/about/previous-releases.mdx @@ -3,7 +3,7 @@ title: Rilisan Node.js layout: about --- -Rilisan Node.js +# Rilisan Node.js Versi Node.js utama memasuki status rilis saat ini selama enam bulan, yang memberikan waktu bagi penulis perpustakaan untuk menambahkan dukungan untuk versi tersebut. Setelah enam bulan, rilis bernomor ganjil (9, 11, dst.) menjadi tidak didukung, dan rilis bernomor genap (10, 12, dst.) berpindah ke status LTS Aktif dan siap untuk penggunaan umum. Status rilis LTS adalah "dukungan jangka panjang", yang biasanya menjamin bahwa bug kritis akan diperbaiki selama total 30 bulan. Aplikasi produksi hanya boleh menggunakan rilis LTS Aktif atau LTS Pemeliharaan. diff --git a/apps/site/pages/id/about/security-reporting.mdx b/apps/site/pages/id/about/security-reporting.mdx index d2808fcb4b6bd..396acfce25eb6 100644 --- a/apps/site/pages/id/about/security-reporting.mdx +++ b/apps/site/pages/id/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: Laporan Keamanan layout: about --- -Laporan Keamanan +# Laporan Keamanan For more details on active Security Policies, checkout [this page](https://github.com/nodejs/node/security/policy). @@ -27,22 +27,22 @@ Bug keamanan di modul pihak ketiga harus dilaporkan ke pengelola masing-masing. Berikut adalah kebijakan pengungkapan keamanan untuk Node.js -Laporan keamanan diterima dan ditetapkan sebagai penangan utama. Orang ini akan mengoordinasikan proses perbaikan dan pelepasan. Masalahnya telah dikonfirmasi dan daftar semua versi yang terpengaruh telah ditentukan. Kode diaudit untuk menemukan potensi masalah serupa. Perbaikan disiapkan untuk semua rilis yang masih dalam pemeliharaan. Perbaikan ini tidak dilakukan pada repositori publik melainkan disimpan secara lokal sambil menunggu pengumuman. +- Laporan keamanan diterima dan ditetapkan sebagai penangan utama. Orang ini akan mengoordinasikan proses perbaikan dan pelepasan. Masalahnya telah dikonfirmasi dan daftar semua versi yang terpengaruh telah ditentukan. Kode diaudit untuk menemukan potensi masalah serupa. Perbaikan disiapkan untuk semua rilis yang masih dalam pemeliharaan. Perbaikan ini tidak dilakukan pada repositori publik melainkan disimpan secara lokal sambil menunggu pengumuman. -Tanggal embargo yang disarankan untuk kerentanan ini dipilih dan CVE (Common Vulnerabilities and Exposures (CVE®)) diminta untuk kerentanan tersebut. +- Tanggal embargo yang disarankan untuk kerentanan ini dipilih dan CVE (Common Vulnerabilities and Exposures (CVE®)) diminta untuk kerentanan tersebut. -Pada tanggal embargo, salinan pengumuman dikirim ke milis keamanan Node.js. Perubahan tersebut dikirim ke repositori publik dan versi baru disebarkan ke nodejs.org. Dalam waktu 6 jam setelah milis diberitahukan, salinan nasihat akan dipublikasikan di blog Node.js. +- Pada tanggal embargo, salinan pengumuman dikirim ke milis keamanan Node.js. Perubahan tersebut dikirim ke repositori publik dan versi baru disebarkan ke nodejs.org. Dalam waktu 6 jam setelah milis diberitahukan, salinan nasihat akan dipublikasikan di blog Node.js. -Biasanya tanggal embargo akan ditetapkan 72 jam sejak CVE diterbitkan. Namun, hal ini dapat bervariasi tergantung pada tingkat keparahan bug atau kesulitan dalam menerapkan perbaikan. +- Biasanya tanggal embargo akan ditetapkan 72 jam sejak CVE diterbitkan. Namun, hal ini dapat bervariasi tergantung pada tingkat keparahan bug atau kesulitan dalam menerapkan perbaikan. -Proses ini dapat memakan waktu, terutama bila diperlukan koordinasi dengan pengelola proyek lain. Segala upaya akan dilakukan untuk menangani bug tersebut secepat mungkin; namun, penting bagi kami untuk mengikuti proses rilis di atas untuk memastikan bahwa pengungkapan ditangani secara konsisten. +- Proses ini dapat memakan waktu, terutama bila diperlukan koordinasi dengan pengelola proyek lain. Segala upaya akan dilakukan untuk menangani bug tersebut secepat mungkin; namun, penting bagi kami untuk mengikuti proses rilis di atas untuk memastikan bahwa pengungkapan ditangani secara konsisten. ## Menerima pembaruan keamanan Pemberitahuan keamanan akan didistribusikan melalui metode berikut. -[Google Grup](https://groups.google.com/group/nodejs-sec) -[Blog Node.js](/blog) +- [Google Grup](https://groups.google.com/group/nodejs-sec) +- [Blog Node.js](/blog) ## Komentar tentang kebijakan ini diff --git a/apps/site/pages/id/download/current.mdx b/apps/site/pages/id/download/current.mdx index cccf988f76667..fb8fa3cf72115 100644 --- a/apps/site/pages/id/download/current.mdx +++ b/apps/site/pages/id/download/current.mdx @@ -4,19 +4,20 @@ title: Unduh Node.js® --- <section> -Dapatkan Node.js® <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> menggunakan <Release.InstallationMethodDropdown /> dengan <Release.PackageManagerDropdown /> + Dapatkan Node.js® <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> menggunakan <Release.InstallationMethodDropdown /> dengan <Release.PackageManagerDropdown /> <Release.ReleaseCodeBox /> -<Release.Provider> - Atau dapatkan Node.js® yang sudah dibuat sebelumnya untuk <Release.OperatingSystemDropdown /> yang menjalankan arsitektur <Release.PlatformDropdown />. + <Release.Provider> + Atau dapatkan Node.js® yang sudah dibuat sebelumnya untuk <Release.OperatingSystemDropdown /> yang menjalankan arsitektur <Release.PlatformDropdown />. - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. + Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. diff --git a/apps/site/pages/id/download/index.mdx b/apps/site/pages/id/download/index.mdx index cccf988f76667..fb8fa3cf72115 100644 --- a/apps/site/pages/id/download/index.mdx +++ b/apps/site/pages/id/download/index.mdx @@ -4,19 +4,20 @@ title: Unduh Node.js® --- <section> -Dapatkan Node.js® <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> menggunakan <Release.InstallationMethodDropdown /> dengan <Release.PackageManagerDropdown /> + Dapatkan Node.js® <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> menggunakan <Release.InstallationMethodDropdown /> dengan <Release.PackageManagerDropdown /> <Release.ReleaseCodeBox /> -<Release.Provider> - Atau dapatkan Node.js® yang sudah dibuat sebelumnya untuk <Release.OperatingSystemDropdown /> yang menjalankan arsitektur <Release.PlatformDropdown />. + <Release.Provider> + Atau dapatkan Node.js® yang sudah dibuat sebelumnya untuk <Release.OperatingSystemDropdown /> yang menjalankan arsitektur <Release.PlatformDropdown />. - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. + Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. diff --git a/apps/site/pages/id/index.mdx b/apps/site/pages/id/index.mdx index a446694c9353d..ae92dab406685 100644 --- a/apps/site/pages/id/index.mdx +++ b/apps/site/pages/id/index.mdx @@ -4,135 +4,132 @@ layout: home --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Jalankan JavaScript Di Mana Saja</h1> - -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. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Unduh Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Jalankan JavaScript Di Mana Saja</h1> + + 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. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Unduh Node.js (LTS)</DownloadButton> + <small> + Unduhan Node.js <b>{release.versionWithPrefix}</b> + <sup title="Mengunduh penginstal Node.js untuk platform Anda saat ini">1</sup> dengan dukungan jangka panjang (LTS). + Node.js juga dapat diinstal melalui <Link href="/download">manajer paket</Link>. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Unduhan Node.js <b>{release.versionWithPrefix}</b> - <sup title="Mengunduh penginstal Node.js untuk platform Anda saat ini">1</sup> dengan dukungan jangka panjang (LTS). - Node.js juga dapat diinstal melalui <Link href="/download">manajer paket</Link>. + Ingin fitur baru lebih cepat? + Dapatkan <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> sebagai gantinya. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Ingin fitur baru lebih cepat? - Dapatkan <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> sebagai gantinya. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> + <div> + ```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` + ``` + + </div> Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami. diff --git a/apps/site/pages/ja/about/branding.mdx b/apps/site/pages/ja/about/branding.mdx index 2e2e19b65d342..b0a6de5ff36af 100644 --- a/apps/site/pages/ja/about/branding.mdx +++ b/apps/site/pages/ja/about/branding.mdx @@ -3,7 +3,7 @@ title: Node.jsのブランドについて layout: about --- -Node.jsのブランドについて +# Node.jsのブランドについて Node.jsのロゴやシンボルマークの許可されている利用方法については[商標ポリシー](https://trademark-policy.openjsf.org/)を確認してください。 @@ -24,61 +24,60 @@ Node.jsのロゴやシンボルマークの許可されている利用方法に ### Node.js®横型ロゴ <table> -<tbody> - <tr> - <td> - <img alt="Node.jsダーク横型ロゴ" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Node.jsライト横型ロゴ" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Node.jsダーク横型ロゴ" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Node.jsライト横型ロゴ" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> </table> ### Node.js®スタック型ロゴ <table> -<tbody> - <tr> - <td> - <img alt="Node.jsダークスタック型ロゴ" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Node.jsライトスタック型ロゴ" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> - - </tr> - - <tr> - <td> - <img alt="Node.jsブラックスタック型ロゴ" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Node.jsホワイトスタック型ロゴ" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Node.jsダークスタック型ロゴ" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Node.jsライトスタック型ロゴ" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Node.jsブラックスタック型ロゴ" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Node.jsホワイトスタック型ロゴ" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> </table> ### JSアイコン <table> -<tbody> - <tr> - <td> - <img alt="JSアイコングリーン" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="JSアイコンホワイト" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="JSアイコングリーン" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="JSアイコンホワイト" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> </table> diff --git a/apps/site/pages/ja/about/get-involved/index.md b/apps/site/pages/ja/about/get-involved/index.md new file mode 100644 index 0000000000000..79bcf319dbe0e --- /dev/null +++ b/apps/site/pages/ja/about/get-involved/index.md @@ -0,0 +1,35 @@ +--- +title: 活動への参加 +layout: about +--- + +# 活動への参加 + +Node.jsのコミュニティーへの参加の仕方にはさまざまな方法があります。Node.jsプロジェクトは大規模で多様なコミュニティーとなっているため、コードを書くこと以外にも貢献する方法はたくさんあります。 + +## コミュニティーでの議論 + +- [Node.js公式Discordサーバー](/discord)ではNode.js開発者とチャットしたりNode.jsプロジェクトからのニュースを知ることができます。 +- [GitHub issues](https://github.com/nodejs/node/issues)はNode.jsの主機能について議論する場となっています。Node.jsについて疑問がある場合は[github discussions](https://github.com/orgs/nodejs/discussions)も利用できます。 +- [`nodejs/help`](https://github.com/nodejs/help/issues)リポジトリーでもNode.jsに関する質問を受け付けています。 +- Node.jsの公式Twitterアカウントは[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-` で始まるチャンネル)_ +- `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/ja/about/governance.md b/apps/site/pages/ja/about/governance.md index b52e03304333e..1f55253a50166 100644 --- a/apps/site/pages/ja/about/governance.md +++ b/apps/site/pages/ja/about/governance.md @@ -7,26 +7,18 @@ layout: about ## 合意を求めるプロセス -Node.jsプロジェクトは、[合意を求める][Consensus Seeking]意思決定モデルに従います。 +Node.jsプロジェクトは[合意を求める](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making)意思決定モデルに従った体制を取っています。 ## コラボレーター -[nodejs/node][]のGitHubリポジトリーは推薦されたコラボレーター同士によって継続的に維持管理されています。 +[nodejs/node](https://github.com/nodejs/node)のGitHubリポジトリーは推薦されたコラボレーター同士によって継続的に維持管理されています。 重要かつ貴重な貢献を行った方はコラボレーターに任命され、プロジェクトへのコミット権限が与えられます。これらの個人は他のコラボレーターによって指名され、その指名については既存のコラボレーター間で議論されます。 -現在のコラボレーターの一覧はプロジェクトの[README.md][]を確認してください。 +現在のコラボレーターの一覧はプロジェクトの[README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members)を確認してください。 -コラボレーターに関する詳細は[collaborator-guide.md][]に記載されています。 +コラボレーターに関する詳細は[collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md)に記載されています。 ## 技術運営委員会 -プロジェクトは[技術運営委員会(TSC)][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 +プロジェクトは[技術運営委員会(TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md)によって運営されており、プロジェクトの上位レベルでの舵取りを担当しています。TSCは他の既存のTSCメンバーによって指名された活発なコラボレーターのサブセットです。 diff --git a/apps/site/pages/ja/about/index.mdx b/apps/site/pages/ja/about/index.mdx index d536d925af52a..5608f8f4e8211 100644 --- a/apps/site/pages/ja/about/index.mdx +++ b/apps/site/pages/ja/about/index.mdx @@ -3,7 +3,7 @@ title: Node.js®とは layout: about --- -Node.js®とは +# Node.js®とは 非同期イベント駆動型のJavaScript実行環境であるNode.jsはスケール可能なネットワークアプリケーションを構築するために設計されています。次の「hello world」の例では多数のネットワーク接続を同時に処理できます。各ネットワーク接続でコールバックが呼び出されますが、実行する処理がない場合はNode.jsはスリープします。 @@ -43,18 +43,12 @@ server.listen(port, hostname, () => { これはOSのスレッドを使用する一般的な同時実行モデルとは対照的です。スレッドベースのネットワーク処理は比較的効率が悪く、使いこなすのが非常に難しくなります。さらにNode.jsではロックがないため、プロセスのデッドロックの心配から解放されます。Node.jsにはI/Oを直接実行する関数がほとんどないため、Node.js標準ライブラリーの同期メソッドを使用してI/Oが実行される場合を除いてプロセスがブロックされることはありません。何もブロックしないNode.jsでスケーラブルなシステムを開発するのは非常に合理的です。 -もしこの説明が聞き慣れない場合は [Blocking vs. Non-Blocking][] を確認してみてください。 +もしこの内容に馴染みがない場合は、さらに詳しく解説している[Blocking vs. Non-Blocking](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking)を確認してください。 --- -Node.jsはRubyの [Event Machine][] やPythonの [Twisted][] に影響を受けており、似たシステム設計になっています。Node.jsはイベントモデルをもう少し深掘りしています。Node.jsはイベントループをライブラリーとしてではなく実行環境の構成要素として提供します。他のシステムではイベントループを開始するために常にブロック処理の呼び出しがあります。一般的にはスクリプトの最初にコールバックによって振る舞いが定義され、最後に `EventMachine::run()` のようなブロック処理の呼び出しによってサーバーが起動されます。Node.jsにはこのようなイベントループの開始時の呼び出しがありません。Node.jsは入力されたスクリプトを実行したあと、単にイベントループに入ります。Node.jsは実行するコールバックがなくなるとイベントループを終了します。この動作はブラウザー上のJavaScriptと同じでイベントループはユーザーから隠されています。 +Node.jsはRubyの[Event Machine](https://github.com/eventmachine/eventmachine)やPythonの[Twisted](https://twisted.org/)に影響を受けており、似たシステム設計になっています。Node.jsはイベントモデルをもう少し深掘りしています。Node.jsはイベントループをライブラリーとしてではなく実行環境の構成要素として提供します。他のシステムではイベントループを開始するために常にブロック処理の呼び出しがあります。一般的にはスクリプトの最初にコールバックによって振る舞いが定義され、最後に `EventMachine::run()` のようなブロック処理の呼び出しによってサーバーが起動されます。Node.jsにはこのようなイベントループの開始時の呼び出しがありません。Node.jsは入力されたスクリプトを実行したあと、単にイベントループに入ります。Node.jsは実行するコールバックがなくなるとイベントループを終了します。この動作はブラウザー上のJavaScriptと同じでイベントループはユーザーから隠されています。 HTTPはNode.jsの中では第一級オブジェクトであり、ストリーミングや低レイテンシーを意識して設計されています。このためNode.jsはウェブのライブラリーやフレームワークの基盤として適しています。 -Node.jsはスレッドを用いず設計されていますが、マルチコアを利用できないわけではありません。子プロセスは [`child_process.fork()`][] APIを使って作成でき、簡単に通信できるように設計されています。これと同じインターフェイスをもとに作られたのが [`cluster`][] モジュールで、プロセス間でソケットを共有することでコアの負荷分散を行えます。 - -[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/ +Node.jsはスレッドを用いず設計されていますが、マルチコアを利用できないわけではありません。子プロセスは[`child_process.fork()`](https://nodejs.org/api/child_process.html) APIを使って作成でき、簡単に通信できるように設計されています。これと同じインターフェイスをもとに作られたのが[`cluster`](https://nodejs.org/api/cluster.html)モジュールで、プロセス間でソケットを共有することでコアの負荷分散を行えます。 diff --git a/apps/site/pages/ja/about/previous-releases.mdx b/apps/site/pages/ja/about/previous-releases.mdx index 0b5284f20bab3..399118202e683 100644 --- a/apps/site/pages/ja/about/previous-releases.mdx +++ b/apps/site/pages/ja/about/previous-releases.mdx @@ -3,7 +3,7 @@ title: Node.js リリース layout: about --- -Node.js リリース +# Node.js リリース Node.jsのメジャーバージョンは6か月間 _Current_ ステータスとなり、ライブラリー開発者にサポートを追加する時間を与えます。6か月後、奇数番号のバージョン(9、11など)はサポートが終了し、偶数番号のバージョン(10、12など)が _Active LTS_ ステータスに移行し、一般公開向けの準備が整います。_LTS_ ステータスとは「長期間サポート」であり、通常は合計30か月間の重要なバグ修正が保証されます。プロダクションのアプリケーションでは _Active LTS_ または _Maintenance LTS_ ステータスのバージョンのみを利用してください。 diff --git a/apps/site/pages/ja/about/security-reporting.mdx b/apps/site/pages/ja/about/security-reporting.mdx index af86a59df66a3..0ad425d53f27a 100644 --- a/apps/site/pages/ja/about/security-reporting.mdx +++ b/apps/site/pages/ja/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: セキュリティーレポート layout: about --- -セキュリティーレポート +# セキュリティーレポート 最新のセキュリティーポリシーについては[こちらのページ](https://github.com/nodejs/node/security/policy)も確認してください。 @@ -27,22 +27,22 @@ Node.jsプロジェクトはセキュリティー研究者と責任ある情報 こちらがNode.jsのセキュリティーに関する情報開示方針です。 -報告されたセキュリティーの問題は受領されると、主担当者が割り当てられます。この主担当者は問題の修正やリリース工程を調整します。問題の確認が終わると影響を受けるすべてのバージョンの一覧が決まります。コードは潜在的に類似の問題がないか確認するために監査されます。これらの修正はメンテナンス中のすべてのバージョンへ適用するために準備されます。これらの修正は公開リポジトリーにコミットされることはなく、情報が発表されるまで内部で保持されます。 +- 報告されたセキュリティーの問題は受領されると、主担当者が割り当てられます。この主担当者は問題の修正やリリース工程を調整します。問題の確認が終わると影響を受けるすべてのバージョンの一覧が決まります。コードは潜在的に類似の問題がないか確認するために監査されます。これらの修正はメンテナンス中のすべてのバージョンへ適用するために準備されます。これらの修正は公開リポジトリーにコミットされることはなく、情報が発表されるまで内部で保持されます。 -この脆弱性のために提案された禁止日が選択され、脆弱性に対してCVE(Common Vulnerabilities and Exposures(CVE®))が要求されます。 +- この脆弱性のために提案された禁止日が選択され、脆弱性に対してCVE(Common Vulnerabilities and Exposures(CVE®))が要求されます。 -禁止日にはNode.jsのセキュリティーメーリングリストに発表される内容のコピーが送信されます。変更は公開リポジトリーにプッシュされ、新しいビルドはnodejs.orgにデプロイされます。メーリングリストが通知されてから6時間以内に勧告のコピーがNode.jsブログに公開されます。 +- 禁止日にはNode.jsのセキュリティーメーリングリストに発表される内容のコピーが送信されます。変更は公開リポジトリーにプッシュされ、新しいビルドはnodejs.orgにデプロイされます。メーリングリストが通知されてから6時間以内に勧告のコピーがNode.jsブログに公開されます。 -通常、禁止日はCVEが発行されてから72時間に設定されます。ただし、これは問題の深刻度や修正の適用にかかる難易度によって異なる場合があります。 +- 通常、禁止日はCVEが発行されてから72時間に設定されます。ただし、これは問題の深刻度や修正の適用にかかる難易度によって異なる場合があります。 -これらの工程には時間がかかる場合があります。特に他のプロジェクトの管理者との調整が必要な場合です。問題を可能な限り迅速に処理するためにあらゆる努力がなされます。ただし、情報の開示が一貫して処理されることを確保するために、上記のリリース工程に従うことが重要です。 +- これらの工程には時間がかかる場合があります。特に他のプロジェクトの管理者との調整が必要な場合です。問題を可能な限り迅速に処理するためにあらゆる努力がなされます。ただし、情報の開示が一貫して処理されることを確保するために、上記のリリース工程に従うことが重要です。 ## セキュリティー更新の受信 セキュリティーの問題に関する情報は次の方法で通知されます。 -[Googleグループ](https://groups.google.com/group/nodejs-sec) -[Node.jsブログ](/blog) +- [Googleグループ](https://groups.google.com/group/nodejs-sec) +- [Node.jsブログ](/blog) ## この方針に関するご意見 diff --git a/apps/site/pages/ja/download/current.mdx b/apps/site/pages/ja/download/current.mdx index aa1e295165498..2dcbd1693702c 100644 --- a/apps/site/pages/ja/download/current.mdx +++ b/apps/site/pages/ja/download/current.mdx @@ -4,25 +4,26 @@ title: Node.js®をダウンロードする --- <section> -<Release.OperatingSystemDropdown />用のNode.js® <Release.VersionDropdown />と<Release.PackageManagerDropdown />を<Release.InstallationMethodDropdown />を使ってダウンロードする + <Release.OperatingSystemDropdown />用のNode.js® <Release.VersionDropdown />と<Release.PackageManagerDropdown />を<Release.InstallationMethodDropdown />を使ってダウンロードする <Release.ReleaseCodeBox /> -<Release.Provider> - <Release.PlatformDropdown />アーキテクチャーで動作する<Release.OperatingSystemDropdown />用のビルド済みのNode.js®も利用できます。 + <Release.Provider> + <Release.PlatformDropdown />アーキテクチャーで動作する<Release.OperatingSystemDropdown />用のビルド済みのNode.js®も利用できます。 - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 + このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 このバージョンの<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>を確認できます。 署名済みSHASUMSの<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">検証方法</LinkWithArrow>について詳しくはこちら。 -ソースコードから<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.jsをビルドする方法</LinkWithArrow>はこちら。 +署名済みの<Release.DownloadLink kind="source">Node.jsのソースコード</Release.DownloadLink>のtarballもダウンロードできます。 -<LinkWithArrow href="https://nodejs.org/download/nightly/">ナイトリー版</LinkWithArrow>のバイナリーや<Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">過去のリリース</Link>、その他のプラットフォーム用の<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非公式</LinkWithArrow>のバイナリーもあります。 + <LinkWithArrow href="https://nodejs.org/download/nightly/">ナイトリー版</LinkWithArrow>のバイナリーや<LinkWithArrow href="https://nodejs.org/download/release/">過去のリリース</LinkWithArrow>、他のプラットフォーム用の<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非公式版</LinkWithArrow>のバイナリーも取得できます。 </section> diff --git a/apps/site/pages/ja/download/index.mdx b/apps/site/pages/ja/download/index.mdx index aa1e295165498..2dcbd1693702c 100644 --- a/apps/site/pages/ja/download/index.mdx +++ b/apps/site/pages/ja/download/index.mdx @@ -4,25 +4,26 @@ title: Node.js®をダウンロードする --- <section> -<Release.OperatingSystemDropdown />用のNode.js® <Release.VersionDropdown />と<Release.PackageManagerDropdown />を<Release.InstallationMethodDropdown />を使ってダウンロードする + <Release.OperatingSystemDropdown />用のNode.js® <Release.VersionDropdown />と<Release.PackageManagerDropdown />を<Release.InstallationMethodDropdown />を使ってダウンロードする <Release.ReleaseCodeBox /> -<Release.Provider> - <Release.PlatformDropdown />アーキテクチャーで動作する<Release.OperatingSystemDropdown />用のビルド済みのNode.js®も利用できます。 + <Release.Provider> + <Release.PlatformDropdown />アーキテクチャーで動作する<Release.OperatingSystemDropdown />用のビルド済みのNode.js®も利用できます。 - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 + このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 このバージョンの<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>を確認できます。 署名済みSHASUMSの<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">検証方法</LinkWithArrow>について詳しくはこちら。 -ソースコードから<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">Node.jsをビルドする方法</LinkWithArrow>はこちら。 +署名済みの<Release.DownloadLink kind="source">Node.jsのソースコード</Release.DownloadLink>のtarballもダウンロードできます。 -<LinkWithArrow href="https://nodejs.org/download/nightly/">ナイトリー版</LinkWithArrow>のバイナリーや<Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">過去のリリース</Link>、その他のプラットフォーム用の<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非公式</LinkWithArrow>のバイナリーもあります。 + <LinkWithArrow href="https://nodejs.org/download/nightly/">ナイトリー版</LinkWithArrow>のバイナリーや<LinkWithArrow href="https://nodejs.org/download/release/">過去のリリース</LinkWithArrow>、他のプラットフォーム用の<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非公式版</LinkWithArrow>のバイナリーも取得できます。 </section> diff --git a/apps/site/pages/ja/index.mdx b/apps/site/pages/ja/index.mdx index 935fef71d8b3d..dc21ad41a0bb4 100644 --- a/apps/site/pages/ja/index.mdx +++ b/apps/site/pages/ja/index.mdx @@ -4,133 +4,130 @@ layout: home --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">どこでもJavaScriptを使おう</h1> - -Node.js®はクロスプラットフォームに対応したフリーでオープンソースのJavaScript実行環境です。開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトなどを開発する環境を提供します。 - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js (LTS)をダウンロードする</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">どこでもJavaScriptを使おう</h1> + + Node.js®はクロスプラットフォームに対応したフリーでオープンソースのJavaScript実行環境です。開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトなどを開発する環境を提供します。 + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Node.js(LTS)をダウンロードする</DownloadButton> + <small> + 長期サポート版Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>をダウンロードする。 + <Link href="/download">バージョンマネージャー</Link>を利用したインストール方法もあります。 + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - 長期サポート版Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>をダウンロードする。 - <Link href="/download/package-manager">パッケージマネージャー</Link>を利用したインストール方法もあります。 + 最新の機能をすぐに試したい場合は + <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>をインストールできます。 </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 最新の機能をすぐに試したい場合は - <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>をインストールできます。 - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> + <div> + ```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` + ``` + + </div> 私たちの[学習教材](/learn)でNode.jsでできることをさらに学んでみましょう。 diff --git a/apps/site/pages/ko/about/branding.mdx b/apps/site/pages/ko/about/branding.mdx index 3b957d4cec5f4..4731174c26566 100644 --- a/apps/site/pages/ko/about/branding.mdx +++ b/apps/site/pages/ko/about/branding.mdx @@ -3,7 +3,7 @@ title: Node.js 브랜딩 layout: about --- -Node.js 브랜딩 +# Node.js 브랜딩 Node.js® 로고 및 마크의 허용 가능한 사용에 대한 정보는 [상표 정책](https://trademark-policy.openjsf.org/)을 참조하세요. @@ -24,61 +24,60 @@ Node.js® 로고 및 마크의 허용 가능한 사용에 대한 정보는 [상 ### Node.js® 수평 로고 <table> -<tbody> - <tr> - <td> - <img alt="Node.js 어두운 수평 로고" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Node.js 밝은 수평 로고" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Node.js 어두운 수평 로고" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Node.js 밝은 수평 로고" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> </table> ### Node.js® 세로 로고 <table> -<tbody> - <tr> - <td> - <img alt="Node.js 어두운 세로 로고" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Node.js 밝은 세로 로고" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> - - </tr> - - <tr> - <td> - <img alt="Node.js 검은색 세로 로고" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Node.js 흰색 세로 로고" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Node.js 어두운 세로 로고" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Node.js 밝은 세로 로고" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Node.js 검은색 세로 로고" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Node.js 흰색 세로 로고" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> </table> ### JS 아이콘 <table> -<tbody> - <tr> - <td> - <img alt="녹색 JS 아이콘" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="흰색 JS 아이콘" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="녹색 JS 아이콘" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="흰색 JS 아이콘" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> </table> diff --git a/apps/site/pages/ko/about/governance.md b/apps/site/pages/ko/about/governance.md index 8e4eb43d35e7b..839c56b4a9b31 100644 --- a/apps/site/pages/ko/about/governance.md +++ b/apps/site/pages/ko/about/governance.md @@ -7,25 +7,18 @@ layout: about ## 합의 추구 과정 -Node.js 프로젝트는 합의 추구([Consensus Seeking][]) 의사 결정 모델을 따릅니다. +Node.js 프로젝트는 [합의 의사 결정](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making)이라는 합의 추구 과정을 따르고 있습니다. ## 기여자 -[nodejs/node][] 핵심 GitHub 리포지토리는 다른 기존 기여자에 의해 지속적으로 지명된 기여자들에 의해 유지 관리됩니다. +[nodejs/node](https://github.com/nodejs/node) GitHub 리포지토리는 기존 기여자와 기존 기여자가 지명한 기여자들에 의해 유지 관리됩니다. 상당하고 가치 있는 기여를 하는 개인들은 기여자로 임명되며 프로젝트에 대한 커밋 권한을 부여받습니다. 이러한 개인들은 다른 기여자들에 의해 식별되며, 그들의 지명은 기존 기여자들과 논의됩니다. -현재 기여자 목록은 프로젝트의 [README.md][]에서 확인할 수 있습니다. +현재 기여자 목록을 보고 싶다면 프로젝트의 [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members)를 참고하세요. -기여자를 위한 가이드는 [collaborator-guide.md][]에서 유지 관리됩니다. +기여자를 위한 가이드는 [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/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 +이 프로젝트는 기술 운영 위원회[Technical Steering Committee (TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md)에 의해 운영되며, 프로젝트의 상위 지침을 관리합니다. TSC는 다른 기존 TSC 멤버에 의해 지명된 활동적인 기여자 입니다. diff --git a/apps/site/pages/ko/about/previous-releases.mdx b/apps/site/pages/ko/about/previous-releases.mdx index d3845b108f9c3..041e833284221 100644 --- a/apps/site/pages/ko/about/previous-releases.mdx +++ b/apps/site/pages/ko/about/previous-releases.mdx @@ -3,7 +3,7 @@ title: Node.js 릴리스 layout: about --- -Node.js 릴리스 +# Node.js 릴리스 Node.js 주요 버전은 _Current_ 릴리스 상태로 6개월 동안 유지되며, 이 기간 동안 라이브러리 작성자들이 해당 버전에 대한 지원을 추가할 시간을 제공합니다. 6개월 후, 홀수 버전(9, 11 등)은 지원이 중단되고, 짝수 버전(10, 12 등)은 Active LTS 상태로 전환되어 일반 사용에 적합해집니다. diff --git a/apps/site/pages/ko/about/security-reporting.mdx b/apps/site/pages/ko/about/security-reporting.mdx index 3f5e5252363e8..4df9921a8fbe9 100644 --- a/apps/site/pages/ko/about/security-reporting.mdx +++ b/apps/site/pages/ko/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: 보안 보고 layout: about --- -보안 보고 +# 보안 보고 활성 보안 정책에 대한 자세한 내용은 [이 페이지](https://github.com/nodejs/node/security/policy)를 확인하세요. @@ -27,26 +27,26 @@ Node.js 프로젝트는 보안 연구자 및 책임 있는 공개 보고를 위 Node.js의 보안 공개 정책은 다음과 같습니다. -보안 보고서가 수신되고 주요 담당자가 지정됩니다. 이 담당자는 수정 및 릴리스 프로세스를 조정합니다. 문제가 확인되고 영향을 받는 버전 목록이 결정됩니다. 코드 감사가 진행되어 유사한 잠재적 문제가 있는지 확인합니다. 유지 관리 중인 모든 릴리스에 대한 수정 사항이 준비되며, 이 수정 사항은 공개 리포지토리에 커밋되지 않고 발표를 기다리며 로컬에 보관됩니다. +- 보안 보고서가 수신되고 주요 담당자가 지정됩니다. 이 담당자는 수정 및 릴리스 프로세스를 조정합니다. 문제가 확인되고 영향을 받는 버전 목록이 결정됩니다. 코드 감사가 진행되어 유사한 잠재적 문제가 있는지 확인합니다. 유지 관리 중인 모든 릴리스에 대한 수정 사항이 준비되며, 이 수정 사항은 공개 리포지토리에 커밋되지 않고 발표를 기다리며 로컬에 보관됩니다. -이 취약점에 대해 제안된 비공개 기간(엠바고 날짜)이 선택되며, 해당 취약점에 대한 CVE(Common Vulnerabilities and Exposures, CVE®)가 요청됩니다. +- 이 취약점에 대해 제안된 비공개 기간(엠바고 날짜)이 선택되며, 해당 취약점에 대한 CVE(Common Vulnerabilities and Exposures, CVE®)가 요청됩니다. -비공개 기간에 Node.js 보안 메일링 리스트에 발표 사본이 발송됩니다. 변경 사항이 공개 리포지토리에 푸시되고, 새로운 빌드가 nodejs.org에 배포됩니다. 메일링 리스트에 통지된 후 6시간 이내에 advisory 사본이 Node.js 블로그에 게시됩니다. +- 비공개 기간에 Node.js 보안 메일링 리스트에 발표 사본이 발송됩니다. 변경 사항이 공개 리포지토리에 푸시되고, 새로운 빌드가 nodejs.org에 배포됩니다. 메일링 리스트에 통지된 후 6시간 이내에 advisory 사본이 Node.js 블로그에 게시됩니다. -일반적으로, CVE가 발급된 시점부터 72시간 후로 비공개 기간(엠바고 날짜)이 설정됩니다. 그러나 이는 버그의 심각도나 수정 사항 적용의 난이도에 따라 달라질 수 있습니다. +- 일반적으로, CVE가 발급된 시점부터 72시간 후로 비공개 기간(엠바고 날짜)이 설정됩니다. 그러나 이는 버그의 심각도나 수정 사항 적용의 난이도에 따라 달라질 수 있습니다. -이 과정은 특히 다른 프로젝트의 유지관리자들과 조율이 필요한 경우 시간이 다소 걸릴 수 있습니다. 버그를 최대한 신속하게 처리하기 위해 모든 노력을 기울일 것이지만, 공개가 일관된 방식으로 처리될 수 있도록 위에 설명된 공개 절차를 따르는 것이 중요합니다. +- 이 과정은 특히 다른 프로젝트의 유지관리자들과 조율이 필요한 경우 시간이 다소 걸릴 수 있습니다. 버그를 최대한 신속하게 처리하기 위해 모든 노력을 기울일 것이지만, 공개가 일관된 방식으로 처리될 수 있도록 위에 설명된 공개 절차를 따르는 것이 중요합니다. ## 보안 업데이트 수신 보안 알림은 다음 방법을 통해 배포됩니다. -[Google Group](https://groups.google.com/group/nodejs-sec) -[Node.js 블로그](/blog) +- [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)하여 논의해 주세요. +이 프로세스를 개선할 수 있는 제안이 있는 경우 [풀 리퀘스트](https://github.com/nodejs/nodejs.org)를 제출하시거나 [문제를 제기](https://github.com/nodejs/security-wg/issues/new)하여 논의해 주세요. ## OpenSSF 모범 사례 diff --git a/apps/site/pages/pt/about/branding.mdx b/apps/site/pages/pt/about/branding.mdx index e281a14fb546b..2027e83dbcf66 100644 --- a/apps/site/pages/pt/about/branding.mdx +++ b/apps/site/pages/pt/about/branding.mdx @@ -3,13 +3,13 @@ title: Marca da Node.js layout: about --- -Marca da Node.js +# Marca da Node.js Consultar a [política de marcas registadas](https://trademark-policy.openjsf.org/) por informação sobre a utilização permitida dos logótipos e marcas da Node.js®. ## Mascote da Node.js® -Crédito a [@Ang_ngl on X](https://x.com/Ang_ngl) por desenhar e contribuir com a Tartaruga do Foguetão. +Agradecimento a [Angela Angelini](https://www.linkedin.com/in/angeliningl/) por desenhar e contribuir com a Tartaruga Foguetão. <img alt="Mascote da Node.js" @@ -24,61 +24,60 @@ Crédito a [@Ang_ngl on X](https://x.com/Ang_ngl) por desenhar e contribuir com ### Logótipo Horizontal da Node.js® <table> -<tbody> - <tr> - <td> - <img alt="Logótipo Escuro Horizontal da Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Logótipo Claro Horizontal da Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Logótipo Escuro Horizontal da Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Logótipo Claro Horizontal da Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> </table> ### Logótipo Empilhado da Node.js® <table> -<tbody> - <tr> - <td> - <img alt="Logótipo Escuro Empilhado da Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Logótipo Claro Empilhado da Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> - - </tr> - - <tr> - <td> - <img alt="Logótipo Empilhado Preto da Node.js" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Logótipo Empilhado Branco da Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Logótipo Escuro Empilhado da Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Logótipo Claro Empilhado da Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Logótipo Empilhado Preto da Node.js" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Logótipo Empilhado Branco da Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> </table> ### Ícones da JS <table> -<tbody> - <tr> - <td> - <img alt="Ícones da JS Verde" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="Ícones da JS Branco" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Ícones da JS Verde" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Ícones da JS Branco" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> </table> diff --git a/apps/site/pages/pt/about/get-involved/events.mdx b/apps/site/pages/pt/about/get-involved/events.mdx index fbb2b8f05a4e1..d5e96a4ed3234 100644 --- a/apps/site/pages/pt/about/get-involved/events.mdx +++ b/apps/site/pages/pt/about/get-involved/events.mdx @@ -9,7 +9,7 @@ Os eventos do Node.js são abertos e disponíveis ao público. Qualquer pessoa ### Próximas reuniões do Node.js® -projeto Node.js realiza várias reuniões ao longo do ano para discutir e planear aspetos do projeto. +O projeto Node.js realiza várias reuniões ao longo do ano para discutir e planear aspetos do projeto. As próximas reuniões que vão ocorrer nos próximos 7 dias. diff --git a/apps/site/pages/pt/about/governance.md b/apps/site/pages/pt/about/governance.md index 7fed8c9af7bd0..76a868746671b 100644 --- a/apps/site/pages/pt/about/governance.md +++ b/apps/site/pages/pt/about/governance.md @@ -7,25 +7,18 @@ layout: about ## Processo de Procura de Consenso -O projeto Node.js segue um modelo de tomada de decisão de [Procura de Consenso][Consensus Seeking]. +O projeto Node.js segue um modelo de tomada de decisão de [procura de consenso](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making). ## Colaboradores -O repositório central da GitHub [nodejs/node][] é mantido pelos colaboradores nomeados por outros colaboradores existentes numa base contínua. +O repositório principal da GitHub, [nodejs/node](https://github.com/nodejs/node), é mantido pelos colaboradores nomeados por outros colaboradores existentes numa base contínua. Os indivíduos que fazem contribuições significativas e valiosas são nomeados colaboradores e têm acesso ao projeto. Estes indivíduos são identificados por outros colaboradores e a sua nomeação é discutida com os colaboradores existentes. -Para a lista atual de colaboradores, consultar o [README.md][] do projeto. +Para obter a lista atual de colaboradores, podemos consultar o [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members) do projeto. -Um guia para colaboradores é mantido no [collaborator-guide.md][]. +Um guia para os colaboradores é mantido em [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md). ## Comité de Direção Técnica -O projeto é gerido pelo [Comité de Direção Técnica][Technical Steering Committee (TSC)] responsável pela orientação de alto nível do projeto. O TSC é um subconjunto de colaboradores ativos nomeados por outros membros existentes do 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 +O projeto é gerido pelo [Comité de Direção Técnica (TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md), responsável pela orientação de alto nível do projeto. O TSC é um subconjunto de colaboradores ativos, nomeados por outros membros existentes do TSC. diff --git a/apps/site/pages/pt/about/index.mdx b/apps/site/pages/pt/about/index.mdx index 5a9795a95a8a3..fe66bbb7fa45e 100644 --- a/apps/site/pages/pt/about/index.mdx +++ b/apps/site/pages/pt/about/index.mdx @@ -3,7 +3,7 @@ title: Sobre a Node.js® layout: about --- -Sobre a Node.js® +# Sobre a Node.js® Como uma execução de JavaScript assíncrona orientada a eventos, a Node.js foi desenhada para construir aplicações de rede escaláveis. No seguinte exemplo de "hello world", muitas conexões podem ser manipuladas simultaneamente. Em cada conexão, a função de retorno de chamada é disparada, mas se não existir trabalho a ser feito, a Node.js dormirá. @@ -43,18 +43,12 @@ server.listen(port, hostname, () => { Isto contrasta com o modelo de concorrência mais comum atualmente, em que são utilizadas as linhas de processamento do sistema operativo. A conexão de rede baseada em linhas de processamento é relativamente ineficiente e muito difícil de usar. Além disto, os utilizadores da Node.js estão livres de preocupações com o bloqueio do processo, uma vez que não existem bloqueios. Quase nenhuma função na Node.js executa diretamente E/S, pelo que o processo nunca bloqueia, exceto quando as E/S são executadas usando métodos síncronos da biblioteca padrão da Node.js. Uma vez que nada bloqueia, os sistemas escaláveis são muito razoáveis de desenvolver na Node.js. -Se alguma desta linguagem não for familiar, existe um artigo completo sobre [Bloqueio vs Não Bloqueio][Blocking vs. Non-Blocking]. +Se alguma desta linguagem não for familiar, existe um artigo completo sobre [Bloqueio vs. Não Bloqueio](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking). --- -Node.js é semelhante em desenho a, e influenciada por, sistemas como a [Máquina de Evento][Event Machine] da Ruby e o [Twisted][Twisted] da Python. A Node.js leva o modelo de evento um pouco mais longe. Esta apresenta um ciclo de eventos como uma construção de execução e não como uma biblioteca. Noutros sistemas, existe sempre uma chamada bloqueante para começar o ciclo de eventos. Tipicamente, o comportamento é definido através das funções de retorno de chamada no início de um programa, e no final um servidor é iniciado através duma chamada bloqueante como `EventMachine::run()`. Na Node.js, não existe essa chama que começa o ciclo de evento. A Node.js simplesmente entra no ciclo de eventos após executar o programa de entrada. A Node.js sai do ciclo de eventos quando não existir mais funções de retorno de chamada para executar. Este comportamento é semelhante a JavaScript do navegador — o ciclo de eventos está oculto para o utilizador. +A Node.js é semelhante em desenho a, e influenciada por, sistemas como a [Máquina de Evento](https://github.com/eventmachine/eventmachine) da Ruby e o [Twisted](https://twisted.org/) da Python. A Node.js leva o modelo de evento um pouco mais longe. Esta apresenta um ciclo de eventos como uma construção de execução e não como uma biblioteca. Noutros sistemas, existe sempre uma chamada bloqueante para começar o ciclo de eventos. Tipicamente, o comportamento é definido através das funções de retorno de chamada no início de um programa, e no final um servidor é iniciado através duma chamada bloqueante como `EventMachine::run()`. Na Node.js, não existe essa chama que começa o ciclo de evento. A Node.js simplesmente entra no ciclo de eventos após executar o programa de entrada. A Node.js sai do ciclo de eventos quando não existir mais funções de retorno de chamada para executar. Este comportamento é semelhante ao interpretador de JavaScript do navegador — o ciclo de eventos é oculto ao utilizador. -protocolo de transferência de hipertexto é um cidadão de primeira classe na Node.js, desenhado com fluxo contínuo e baixa latência em mente. Isto torna a Node.js adequada para a fundação duma biblioteca ou abstração da Web. +O protocolo de transferência de hipertexto é um cidadão de primeira classe na Node.js, desenhado com fluxo contínuo e baixa latência em mente. Isto torna a Node.js adequada para a fundação duma biblioteca ou abstração da Web. -fato da Node.js ter sido desenhada sem linhas de processamento não significa que não possamos tirar partido de vários núcleos no nosso ambiente. Os processos filhos podem ser gerados com o uso da nossa interface de programação de aplicação [`child_process.fork()`][], e estão desenhadas para serem fáceis de se comunicar. Construída sobre esta mesma interface está o módulo [`cluster`][], que permite-nos partilhar tomadas entre processos para permitir o balanceio de carga entre os nossos núcleos. - -[bloqueio vs não bloqueio]: /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 evento]: https://github.com/eventmachine/eventmachine -[torcido]: https://twisted.org/ +O fato da Node.js ter sido desenhada sem linhas de processamento não significa que não possamos tirar partido de vários núcleos no nosso ambiente. Os processos filhos podem ser gerados com o uso da nossa interface de programação de aplicação [`child_process.fork()`](https://nodejs.org/api/child_process.html), e estão desenhadas para serem fáceis de se comunicar. Construída sobre esta mesma interface está o módulo [`cluster`](https://nodejs.org/api/cluster.html), que permite-nos partilhar tomadas entre processos para permitir o balanceio de carga entre os nossos núcleos. diff --git a/apps/site/pages/pt/about/previous-releases.mdx b/apps/site/pages/pt/about/previous-releases.mdx index 503b6a9241cb6..7ee88e88e6ec5 100644 --- a/apps/site/pages/pt/about/previous-releases.mdx +++ b/apps/site/pages/pt/about/previous-releases.mdx @@ -3,7 +3,7 @@ title: Lançamentos da Node.js layout: about --- -Lançamentos da Node.js +# Lançamentos da Node.js As principais versões da Node.js entram no estado de lançamento _Atual (Current)_ por seis meses, o que dá aos autores de bibliotecas tempo para adicionar suporte a estas. Depois de seis meses, as versões de número ímpares (9, 11, etc.) deixam de ser suportadas e as versões de números pares (10, 12, etc) passam para o estado _SLP Ativo (Active LTS)_ e estão prontas para uso geral. O estado de lançamento _SLP (LTS)_ é “suporte de longo prazo”, o que normalmente garante que os erros de programação críticos serão corrigidos durante um total de 30 meses. As aplicações de produção apenas devem usar os lançamentos _SLP Ativo (Active LTS)_ ou _SLP de Manutenção (Maintenance LTS)_. @@ -15,8 +15,21 @@ Todos os detalhes sobre o calendário de lançamento da Node.js estão disponív ### 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/). +O apoio comercial para versões após a fase de manutenção está disponível através do nosso parceiro [HeroDevs](https://herodevs.com/) do Programa de Sustentabilidade do Ecossistema OpenJS. -## Procura o lançamento mais recente de um ramo de versão? +## Procura pelo lançamento mais recente do ramo de uma versão? <DownloadReleasesTable /> + +## Oficial ou Comunitário + +O sítio da Node.js oferece vários métodos de instalação que permitem que a Node.js seja instalada duma maneira não interativa, por exemplo, através das interfaces de linha de comando, gestores de pacotes do sistema operativo (como o `apt`) ou gestores de versões da Node.js (como o `nvm`). + +O projeto Node.js, numa tentativa de popularizar e publicitar os esforços da comunidade, introduziu uma nova página de Descargas que lista os métodos de instalação Oficial e Comunitário, proporcionando mais versatilidade e opções aos utilizadores. Com essa mudança, introduzimos o conceito de métodos de instalação “Oficial” e “Comunitário”. Para ser considerado “Oficial”, o método de instalação deve atender aos seguintes requisitos: + +| Requisitos | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| As novas versões da Node.js devem estar disponíveis em simultâneo com o lançamento oficial | +| Os responsáveis pela manutenção dos projetos têm uma relação estreita com a Node.js, incluindo comunicação direta | +| O método de instalação descarrega os binários oficiais empacotados pelo projeto Node.js | +| O método de instalação **não** compila a partir da fonte quando os binários estão disponíveis, nem altera os binários oficiais fornecidos pela Node.js | diff --git a/apps/site/pages/pt/about/security-reporting.mdx b/apps/site/pages/pt/about/security-reporting.mdx index 184f4b990d644..45306d781f42f 100644 --- a/apps/site/pages/pt/about/security-reporting.mdx +++ b/apps/site/pages/pt/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: Relatórios de Segurança layout: about --- -Relatórios de Segurança +# Relatórios de Segurança Para obter mais informações sobre as Políticas de Segurança ativas, consultar [esta página](https://github.com/nodejs/node/security/policy). @@ -11,13 +11,13 @@ Para obter mais informações sobre as Políticas de Segurança ativas, consulta Reportar erros de segurança na Node.js através da [HackerOne](https://hackerone.com/nodejs). -nosso relatório será confirmado dentro de 5 dias e receberemos uma resposta mais detalhada ao nosso relatório dentro de 10 dias, indicando os próximos passos no tratamento da nossa submissão. +O nosso relatório será confirmado dentro de 5 dias e receberemos uma resposta mais detalhada ao nosso relatório dentro de 10 dias, indicando os próximos passos no tratamento da nossa submissão. Após a resposta inicial ao nosso relatório, a equipa de segurança esforçar-se-á por manter-nos informados sobre os progressos realizados no sentido duma correção e de um anúncio completo, podendo solicitar informações ou orientações adicionais sobre o problema reportado. ### Programa de recompensa por erros da Node.js -projeto Node.js tem um programa oficial de recompensa por erros para investigadores de segurança e divulgações públicas responsáveis. O programa é gerido através da plataforma HackerOne. Consultar [https://hackerone.com/nodejs](https://hackerone.com/nodejs) por mais detalhes. +O projeto Node.js tem um programa oficial de recompensa por erros para investigadores de segurança e divulgações públicas responsáveis. O programa é gerido através da plataforma HackerOne. Consultar [https://hackerone.com/nodejs](https://hackerone.com/nodejs) por mais detalhes. ## Reportar um erro num módulo de terceiro @@ -27,22 +27,22 @@ Os erros de segurança em módulos de terceiros devem ser reportados aos seus re Eis a política de divulgação de segurança da Node.js -O relatório de segurança é recebido e é-lhe atribuído um responsável principal. Esta pessoa coordenará o processo de correção e lançamento. O problema é confirmado e determinada uma lista de todas as versões afetadas. O código é auditado para detetar quaisquer problemas semelhantes. São preparadas correções para todas as versões que ainda se encontram em manutenção. Estas correções não são colocadas no repositório público, mas sim mantidas localmente enquanto se aguarda o anúncio. +- O relatório de segurança é recebido e é-lhe atribuído um responsável principal. Esta pessoa coordenará o processo de correção e lançamento. O problema é confirmado e determinada uma lista de todas as versões afetadas. O código é auditado para detetar quaisquer problemas semelhantes. São preparadas correções para todas as versões que ainda se encontram em manutenção. Estas correções não são colocadas no repositório público, mas sim mantidas localmente enquanto se aguarda o anúncio. -É selecionada uma data de embargo para esta vulnerabilidade e requisitada um CVE (Common Vulnerabilities and Exposures (CVE®)) para a vulnerabilidade. +- É selecionada uma data de embargo para esta vulnerabilidade e requisitada um CVE (Common Vulnerabilities and Exposures (CVE®)) para a vulnerabilidade. -Na data do embargo, a lista de discussão de segurança da Node.js recebe uma cópia do anúncio. As alterações são enviadas ao repositório público e novas compilações são implantadas na nodejs.org. Dentro de 6 horas após a notificação da lista de correio eletrónico, será publicada uma cópia do aviso no blogue da Node.js. +- Na data do embargo, a lista de discussão de segurança da Node.js recebe uma cópia do anúncio. As alterações são enviadas ao repositório público e novas compilações são implantadas na nodejs.org. Dentro de 6 horas após a notificação da lista de correio eletrónico, será publicada uma cópia do aviso no blogue da Node.js. -Normalmente, a data de embargo será definida 72 horas a partir do momento em que o CVE é emitido. No entanto, isto pode variar consoante a gravidade do erro ou a dificuldade em aplicar uma correção. +- Normalmente, a data de embargo será definida 72 horas a partir do momento em que o CVE é emitido. No entanto, isto pode variar consoante a gravidade do erro ou a dificuldade em aplicar uma correção. -Este processo pode demorar algum tempo, especialmente quando é necessária coordenação com os responsáveis de outros projetos. Todos os esforços serão feitos para tratar o erro da maneira mais atempada possível; no entanto, é importante que sigamos o processo de divulgação acima referido para garantir que a divulgação é tratada de maneira consistente. +- Este processo pode demorar algum tempo, especialmente quando é necessária coordenação com os responsáveis de outros projetos. Todos os esforços serão feitos para tratar o erro da maneira mais atempada possível; no entanto, é importante que sigamos o processo de divulgação acima referido para garantir que a divulgação é tratada de maneira consistente. ## Receber atualizações de segurança As notificações de segurança serão distribuídas através dos seguintes métodos. -[Grupo da Google](https://groups.google.com/group/nodejs-sec) -[Blogue da Node.js](/blog) +- [Grupo da Google](https://groups.google.com/group/nodejs-sec) +- [Blogue da Node.js](/blog) ## Comentários sobre esta política @@ -61,4 +61,4 @@ Se tivermos sugestões sobre como este processo poderia ser melhorado, podemos s /> </a> -distintivo de boas práticas da “Open Source Security Foundation (OpenSSF)” é uma maneira de os projetos de Software Livre e de Código Aberto (FLOSS) mostrarem que seguem as boas práticas. Os projetos podem certificar-se voluntariamente como seguem cada uma das boas práticas. Os consumidores do distintivo podem avaliar rapidamente quais os projetos FLOSS que seguem as boas práticas e, consequentemente, têm maior probabilidade de produzir software seguro de superior qualidade. +O distintivo de boas práticas da “Open Source Security Foundation (OpenSSF)” é uma maneira de os projetos de Software Livre e de Código Aberto (FLOSS) mostrarem que seguem as boas práticas. Os projetos podem certificar-se voluntariamente como seguem cada uma das boas práticas. Os consumidores do distintivo podem avaliar rapidamente quais os projetos FLOSS que seguem as boas práticas e, consequentemente, têm maior probabilidade de produzir software seguro de superior qualidade. diff --git a/apps/site/pages/pt/download/current.mdx b/apps/site/pages/pt/download/current.mdx new file mode 100644 index 0000000000000..be4d887abbba8 --- /dev/null +++ b/apps/site/pages/pt/download/current.mdx @@ -0,0 +1,30 @@ +--- +layout: download +title: Descarregar a Node.js® +--- + +<section> + Obter a Node.js® <Release.VersionDropdown /> para <Release.OperatingSystemDropdown /> usando <Release.InstallationMethodDropdown /> com <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + + <Release.Provider> + Ou obter um binário de Node.js® pré-compilada para <Release.OperatingSystemDropdown /> executando uma arquitetura <Release.PlatformDropdown />. + + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> +</section> + +<section> + Ler o <Release.ChangelogLink>registo de alterações</Release.ChangelogLink> para esta versão. + +Ler a <Release.BlogPostLink>publicação de blogue</Release.BlogPostLink> para esta versão. + +Saber como <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verificar</LinkWithArrow> SHASUMS assinados. + +Procuramos pelo código-fonte da Node.js? Podemos descarregar um ficheiro compactado assinado do <Release.DownloadLink kind="source">código-fonte da Node.js</Release.DownloadLink>. + +Consultar nossos binários <LinkWithArrow href="https://nodejs.org/download/nightly/">noturnos</LinkWithArrow> ou todos <LinkWithArrow href="https://nodejs.org/download/release/">lançamentos anteriores</LinkWithArrow> ou os binários <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">não oficiais</LinkWithArrow> para outras plataformas. + +</section> diff --git a/apps/site/pages/pt/download/index.mdx b/apps/site/pages/pt/download/index.mdx new file mode 100644 index 0000000000000..d1b4aa4bb0548 --- /dev/null +++ b/apps/site/pages/pt/download/index.mdx @@ -0,0 +1,30 @@ +--- +layout: download +title: Descarregar a Node.js® +--- + +<section> + Obter a Node.js® <Release.VersionDropdown /> para <Release.OperatingSystemDropdown /> usando <Release.InstallationMethodDropdown /> com <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + + <Release.Provider> + Ou obter um binário de Node.js® pré-compilada para <Release.OperatingSystemDropdown /> executando uma arquitetura <Release.PlatformDropdown />. + + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> +</section> + +<section> + Ler o <Release.ChangelogLink>registo de alterações</Release.ChangelogLink> para esta versão. + +Ler o <Release.BlogPostLink>registo de alterações</Release.BlogPostLink> para esta versão. + +Saber como <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verificar</LinkWithArrow> SHASUMS assinados. + +Procuramos pelo código-fonte da Node.js? Podemos descarregar um ficheiro compactado assinado do <Release.DownloadLink kind="source">código-fonte da Node.js</Release.DownloadLink>. + +Consultar nossos binários <LinkWithArrow href="https://nodejs.org/download/nightly/">noturnos</LinkWithArrow> ou todos <LinkWithArrow href="https://nodejs.org/download/release/">lançamentos anteriores</LinkWithArrow> ou os binários <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">não oficiais</LinkWithArrow> para outras plataformas. + +</section> diff --git a/apps/site/pages/pt/index.mdx b/apps/site/pages/pt/index.mdx index 21f1e16961367..57261fea5aba2 100644 --- a/apps/site/pages/pt/index.mdx +++ b/apps/site/pages/pt/index.mdx @@ -9,8 +9,8 @@ layout: home <div> <h1 className="special">Executar a JavaScript em Toda Parte</h1> - 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 + Node.js® é um ambiente de execução de JavaScript multiplataforma, + de código-aberto e gratuita, que permite aos programadores criar servidores, aplicações da Web, ferramentas de linha de comando e programas de automação de tarefas. </div> @@ -21,9 +21,9 @@ layout: home <> <DownloadButton release={release}>Descarregar a Node.js (LTS)</DownloadButton> <small> - Descarregar a Node.js <b>{release.versionWithPrefix}</b> - <sup title="Descarregar um instalador da Node.js para a nossa plataforma atual">1</sup> com o suporte de longo prazo. - A Node.js também pode ser instalada através dos <Link href="/download/package-manager">gestores de pacotes</Link>. + Descarrega a Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> com suporte de longo prazo. + A Node.js também pode ser instalada por meio de <Link href="/download">gestores de versão</Link>. </small> </> )} @@ -32,9 +32,9 @@ layout: home <WithNodeRelease status={['Current']}> {({ release }) => ( <small> - Se estivermos ansiosos quanto as novas funcionalidades, - podemos obter a <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Descarregar um instalador da Node.js para a nossa plataforma atual">1</sup>. + Queremos novas funcionalidades mais cedo? + Podemos então obter a <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Descarrega um instalador da Node.js para a nossa plataforma atual">1</sup>. </small> )} </WithNodeRelease> @@ -130,5 +130,7 @@ layout: home ``` </div> - Podemos saber mais do que a Node.js é capaz de oferecer com os nossos [materiais de aprendizado](/learn). + +É possível saber que mais a Node.js consegue oferecer com os nossos [materiais de estudo](/learn). + </section> diff --git a/apps/site/pages/ro/about/branding.mdx b/apps/site/pages/ro/about/branding.mdx new file mode 100644 index 0000000000000..6d5cd43daf277 --- /dev/null +++ b/apps/site/pages/ro/about/branding.mdx @@ -0,0 +1,83 @@ +--- +title: Identitate Node.js +layout: about +--- + +# Identitate Node.js + +Te rugăm să revizuiești [politica privind mărcile comerciale](https://trademark-policy.openjsf.org/) pentru informații despre utilizarea autorizată a siglelor și mărcilor Node.js®. + +## Mascota Node.js® + +Mulțumiri către [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pentru proiectarea și contribuția adusă cu mascota Rocket Turtle. + +<img + alt="Mascota Node.js" + src="/static/images/node-mascot.svg" + className="w-[100px]" + width="100" + height="114" +/> + +## Logo Node.js® + +### Logo orizontal Node.js® + +<table> + <tbody> + <tr> + <td> + <img alt="Logo orizontal întunecat Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Logo orizontal deschis Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> +</table> + +### Logo stivuit Node.js® + +<table> + <tbody> + <tr> + <td> + <img alt="Logo stivuit întunecat Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Logo stivuit deschis Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Logo stivuit negru Node.js" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Logo stivuit alb Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> +</table> + +### Pictogramă JS + +<table> + <tbody> + <tr> + <td> + <img alt="Pictogramă JS verde" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Pictogramă JS albă" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> +</table> diff --git a/apps/site/pages/ro/about/governance.md b/apps/site/pages/ro/about/governance.md new file mode 100644 index 0000000000000..6e91be0ca901a --- /dev/null +++ b/apps/site/pages/ro/about/governance.md @@ -0,0 +1,24 @@ +--- +title: Administrarea proiectului +layout: about +--- + +# Administrarea proiectului + +## Proces de căutare a consensului + +Proiectul Node.js urmează un model de luare a deciziilor bazat pe [Căutarea Consensului](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making). + +## Colaboratori + +Repozitoriul principal GitHub [nodejs/node](https://github.com/nodejs/node) este administrat de colaboratori, care sunt nominalizați în mod continuu de alți colaboratori existenți. + +Persoanele care aduc contribuții semnificative și valoroase devin colaboratori și primesc acces de tip "commit" la proiect. Aceste persoane sunt identificate de alți colaboratori, iar nominalizarea lor este discutată cu colaboratorii existenți. + +Pentru lista curentă de colaboratori, vedeți [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members). + +Un ghid pentru colaboratori este menținut la [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md). + +## Comitetul tehnic de conducere + +Proiectul este guvernat de [Comitetul Tehnic de Conducere (CTC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md), care este responsabil pentru îndrumarea la nivel înalt a proiectului. CTC este un subset de colaboratori activi care sunt nominalizați de alți membri existenți ai CTC. diff --git a/apps/site/pages/ro/about/index.mdx b/apps/site/pages/ro/about/index.mdx new file mode 100644 index 0000000000000..c7313b67ccc75 --- /dev/null +++ b/apps/site/pages/ro/about/index.mdx @@ -0,0 +1,54 @@ +--- +title: Despre Node.js® +layout: about +--- + +# Despre Node.js® + +Fiind un mediu de execuție JavaScript asincron și bazat pe evenimente, Node.js este conceput pentru a crea aplicații de rețea scalabile. În exemplul „hello world” de mai jos, multe conexiuni pot fi gestionate simultan. La fiecare conexiune, este declanșat un callback, iar dacă nu există sarcini de procesat, Node.js intră într-o stare de așteptare. + +```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}/`); +}); +``` + +Această abordare diferă de modelul de concurență mai comun din zilele noastre, care utilizează fire de execuție (threads) ale sistemului de operare. Rețelele bazate pe fire de execuție sunt relativ ineficiente și dificile de gestionat. În plus, utilizatorii Node.js nu trebuie să își facă griji cu privire la blocarea procesului, deoarece nu există mecanisme de blocare. Aproape nicio funcție din Node.js nu efectuează direct operații de I/O, astfel încât procesul nu se blochează decât dacă se folosesc metode sincrone din biblioteca standard Node.js. Datorită acestui comportament, dezvoltarea sistemelor scalabile în Node.js este foarte fezabilă. + +Dacă unele dintre terminologii nu vă sunt familiare, există un articol complet despre [Blocant vs Non-Blocant](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking). + +--- + +Node.js are un design similar și este influențat de sisteme precum [Event Machine](https://github.com/eventmachine/eventmachine) din Ruby și [Twisted](https://twisted.org/) din Python. Totuși, Node.js duce modelul bazat pe evenimente un pas mai departe, prezentând event loop-ul ca o componentă a mediului de execuție, nu ca pe o bibliotecă externă. În alte sisteme, există întotdeauna un apel blocant pentru a porni event loop-ul. De obicei, comportamentul este definit prin callback-uri la începutul unui script, iar la final serverul este pornit printr-un apel blocant, precum EventMachine::run(). În Node.js, nu există un apel explicit pentru a porni event loop-ul. Node.js intră automat în event loop după ce execută scriptul primit ca intrare și iese din event loop atunci când nu mai există callback-uri de procesat. Acest comportament este similar cu cel din JavaScript-ul din browser, unde event loop-ul este ascuns de utilizator. + +HTTP este un cetățean de primă clasă în Node.js, fiind proiectat având în vedere streaming-ul și latența redusă. Acest lucru face din Node.js o bază ideală pentru crearea de biblioteci sau framework-uri web. + +Faptul că Node.js este conceput fără fire de execuție (threads) nu înseamnă că nu poți valorifica mai multe nuclee ale procesorului din mediul tău. Poți crea procese copil folosind API-ul [`child_process.fork()`](https://nodejs.org/api/child_process.html) și comunica ușor cu acestea. Pe baza aceleiași interfețe, modulul [`cluster`](https://nodejs.org/api/cluster.html) permite partajarea socket-urilor între procese, oferind posibilitatea de a distribui sarcina între nucleele tale. diff --git a/apps/site/pages/ro/download/package-manager/all.md b/apps/site/pages/ro/download/package-manager/all.md new file mode 100644 index 0000000000000..a6c4c599762c6 --- /dev/null +++ b/apps/site/pages/ro/download/package-manager/all.md @@ -0,0 +1,394 @@ +--- +layout: article +title: Instalarea Node.js folosind un manager de pachete +--- + +# Instalarea Node.js folosind manageri de pachete + +> Pachetele de pe această pagină sunt întreținute și gestionate de către menținătorii lor respectivi, **nu** de echipa de bază Node.js. Vă rugăm să raportați orice problemă întâmpinată direct menținătorului pachetului. Dacă se dovedește că problema este în Node.js, menținătorul o va raporta mai departe către echipa Node.js. + +## Alpine Linux + +Versiunile LTS de Node.js și pachetele npm sunt disponibile în Repozitoriul Principal. + +```bash +apk add nodejs npm +``` + +Versiunea actuală de Node.js poate fi instalată din Repozitoriul Comunității. + +```bash +apk add nodejs-current +``` + +## Android + +Suportul pentru Android este încă experimental în Node.js, astfel încât dezvoltatorii Node.js nu oferă încă pachete precompilate. + +Cu toate acestea, există câteva soluții oferite de terți. De exemplu, comunitatea [Termux](https://termux.com/) pune la dispoziție un emulator de terminal și un mediu Linux pentru Android, împreună cu un manager de pachete propriu și o [colecție extinsă](https://github.com/termux/termux-packages) de aplicații precompilate. Comanda următoare, executată în aplicația Termux, va instala cea mai recentă versiune disponibilă de Node.js: + +```bash +pkg install nodejs +``` + +În prezent, fișierele binare Node.js din Termux sunt construite cu legături către `system-icu` (în funcție de pachetul `libicu`). + +## Arch Linux + +Versiunile LTS de Node.js și pachetele npm sunt disponibile în Repozitoriul Principal. + +```bash +pacman -S nodejs npm +``` + +## CentOS, Fedora și Red Hat Enterprise Linux + +Node.js este disponibil ca un modul numit `nodejs` în CentOS/RHEL 8 și Fedora + +```bash +dnf module install nodejs:<stream> +``` + +Unde `<stream>` corespunde versiunii majore a Node.js. Pentru a vedea o listă de fluxuri disponibile: + +```bash +dnf module list nodejs +``` + +De exemplu, pentru a instala Node.js 18: + +```bash +dnf module install nodejs:18/common +``` + +### Alternative + +Aceste resurse oferă pachete compatibile cu CentOS, Fedora și RHEL. + +- [Node.js snaps](#snap) întreținute si susținute la https://github.com/nodejs/snap +- [Distribuții binare Node.js](#debian-and-ubuntu-based-linux-distributions) întreținute si susținute de [NodeSource](https://github.com/nodesource/distributions) + +## Distribuții Linux bazate pe Debian și Ubuntu + +[Distribuții binare de Node.js](https://github.com/nodesource/distributions) sunt disponibile de la NodeSource. + +### Alternative + +Pachetele compatibile cu distribuțiile Linux bazate pe Debian și Ubuntu sunt disponibile prin intermediul [Node.js snaps](#snap). + +## Exherbo Linux + +Pachetele Node.js și npm sunt disponibile în [repozitoriul arbor](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node). + +```bash +cave resolve -x node +``` + +## fnm + +Un manager de versiuni Node.js rapid și simplu, construit în Rust, folosit pentru a gestiona mai multe versiuni lansate de Node.js. Vă permite să efectuați operațiuni precum instalarea, dezinstalarea, schimbarea automată a versiunilor de Node pe baza directorului curent etc. +Pentru a instala fnm, utilizați acest [script de instalare](https://github.com/Schniz/fnm#using-a-script-macoslinux). + +fnm are suport pentru mai multe platforme (macOS, Windows, Linux) și toate shell-urile populare (Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt). +fnm este construit având în vedere viteza și compatibilitatea cu fișierele `.node-version` și `.nvmrc`. + +## FreeBSD + +Cea mai recentă versiune de Node.js este disponibilă prin portul [www/node](https://www.freshports.org/www/node). + +Instalați un pachet binar prin [pkg](https://www.freebsd.org/cgi/man.cgi?pkg): + +```bash +pkg install node +``` + +Sau compilați-l singur folosind [porturi](https://www.freebsd.org/cgi/man.cgi?ports): + +```bash +cd /usr/ports/www/node && make install +``` + +## Gentoo + +Node.js este disponibil în arborele portage. + +```bash +emerge nodejs +``` + +## IBM i + +Versiunile LTS ale Node.js sunt disponibile de la IBM și sunt disponibile prin intermediul [managerul de pachete „yum”](https://ibm.biz/ibmi-rpms). Numele pachetului este `nodejs` urmat de numărul versiunii majore (de exemplu, `nodejs18`, `nodejs20` etc.) + +Pentru a instala Node.js 20.x din linia de comandă, rulați următoarele ca utilizator cu autorizare specială \*ALLOBJ: + +```bash +yum install nodejs20 +``` + +Node.js poate fi instalat și cu produsul IBM i Access Client Solutions. Consultați [acest document de asistență](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) pentru mai multe detalii + +## macOS + +Descărcați [macOS Installer](/#home-downloadhead) direct de pe site-ul web [nodejs.org](https://nodejs.org/). + +_Dacă doriți să descărcați pachetul folosind 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 "/" +``` + +### Alternative + +Folosind **[Homebrew](https://brew.sh/)**: + +```bash +brew install node +``` + +Folosind **[MacPorts](https://www.macports.org/)**: + +```bash +port install nodejs<major version> + +# Example +port install nodejs7 +``` + +Folosind **[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)**: + +Instalați pachetul binar: + +```bash +pkgin -y install nodejs +``` + +Sau construiți manual din pkgsrc: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## n + +`n` este un manager de versiuni Node.js simplu de utilizat pentru Mac și Linux. Specificați versiunea țintă de instalat folosind o sintaxă bogată sau selectați dintr-un meniu de versiuni descărcate anterior. Versiunile sunt instalate la nivel de sistem sau la nivel de utilizator, iar pentru o utilizare mai vizată, puteți rula o versiune direct din descărcările din cache. + +Consultați [homepage](https://github.com/tj/n) pentru metode de instalare (bootstrap, npm, Homebrew, terță parte) și toate detaliile de utilizare. + +Dacă aveți deja `npm`, atunci instalați `n` și apoi cea mai nouă versiune LTS `node` este la fel de simplă ca: + +``` +npm install -g n +n lts +``` + +## NetBSD + +Node.js este disponibil în arborele pkgsrc: + +```bash +cd /usr/pkgsrc/lang/nodejs && make install +``` + +Sau instalați un pachet binar (dacă este disponibil pentru platforma dvs.) folosind pkgin: + +```bash +pkgin -y install nodejs +``` + +## Nodenv + +`nodenv` este un manager de versiuni de nod ușor, similar cu `nvm`. Este simplu și previzibil. Un ecosistem bogat de pluginuri vă permite să îl adaptați nevoilor dvs. Utilizați `nodenv` pentru a alege o versiune Node pentru aplicația dvs. și pentru a garanta că mediul dumneavoastră de dezvoltare se potrivește cu producția. + +Instrucțiunile de instalare Nodenv sunt menținute [pe pagina sa Github](https://github.com/nodenv/nodenv#installation). Vă rugăm să vizitați pagina respectivă pentru a vă asigura că urmați cea mai recentă versiune a pașilor de instalare. + +## nvm + +Node Version Manager este un script bash folosit pentru a gestiona mai multe versiuni Node.js lansate. Permite +să efectuați operațiuni precum instalarea, dezinstalarea, schimbarea versiunii etc. +Pentru a instala nvm, utilizați acest [script de instalare](https://github.com/nvm-sh/nvm#install--update-script). + +Pe sistemele Unix / OS X Node.js construit din sursă poate fi instalat folosind +[nvm](https://github.com/creationix/nvm) prin instalarea în locația la care se așteaptă nvm: + +```bash +env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX="" +``` + +După aceasta, puteți folosi `nvm` pentru a comuta între versiunile lansate și versiunile +construit din sursă. +De exemplu, dacă versiunea Node.js este v8.0.0-pre: + +```bash +nvm use 8 +``` + +Odată ce lansarea oficială este lansată, veți dori să dezinstalați versiunea construită +din sursa: + +```bash +nvm uninstall 8 +``` + +## nvs + +#### Windows + +Managerul de versiuni „nvs” este multiplatformă și poate fi utilizat pe sisteme Windows, macOS și Unix + +Pentru a instala `nvs` pe Windows, accesați [pagina de lansare](https://github.com/jasongin/nvs/releases) aici și descărcați fișierul de instalare MSI al celei mai recente ediții. + +De asemenea, puteți folosi `chocolatey` pentru a-l instala: + +```bash +choco install nvs +``` + +#### macOS,UnixLike + +Puteți găsi documentația referitoare la pașii de instalare a `nvs` în sisteme macOS/Unix-like [aici](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux) + +#### Utilizare + +După aceasta, puteți folosi `nvs` pentru a comuta între diferite versiuni de nod. + +Pentru a adăuga cea mai recentă versiune a nodului: + +```bash +nvs add latest +``` + +Sau pentru a adăuga cea mai recentă versiune LTS a node-ului: + +```bash +nvs add lts +``` + +Apoi rulați comanda `nvs use` pentru a adăuga o versiune a nodului la `PATH` pentru shell-ul curent: + +```bash +$ nvs use lts +PATH -= %LOCALAPPDATA%\nvs\default +PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64 +``` + +Pentru a-l adăuga permanent la `PATH`, utilizați `nvs link`: + +```bash +nvs link lts +``` + +## OpenBSD + +Node.js este disponibil prin sistemul de porturi. + +```bash +/usr/ports/lang/node +``` + +Folosind [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) pe OpenBSD: + +```bash +pkg_add node +``` + +## openSUSE și SLE + +Node.js este disponibil în depozitele principale în următoarele pachete: + +- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14` +- **openSUSE Tumbleweed**: `nodejs20` +- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, and `nodejs14` + („Modulul Web și Scripting” trebuie să fie [activată](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).) +- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, și `nodejs14` ("Web and Scripting Module" trebuie să fie [activat](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).) + +De exemplu, pentru a instala Node.js 14.x pe openSUSE Leap 15.2, rulați următoarea comandă ca și utilizator root: + +```bash +zypper install nodejs14 +``` + +Diferite versiune majore de Node pot fi instalate si folosite concomitent. + +## SmartOS și illumos + +Imaginile SmartOS vin cu pkgsrc preinstalat. Pe alte distribuții illumos, instalați mai întâi **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, iar apoi puteți instala pachetul binar în mod obișnuit: + +```bash +pkgin -y install nodejs +``` + +Sau compilați manual din pkgsrc: + +```bash +cd pkgsrc/lang/nodejs && bmake install +``` + +## Snap + +[Snap-urile Node.js](https://github.com/nodejs/snap) sund disponibile sub denumirea de [`node`](https://snapcraft.io/node) în magazinul Snap. + +## Solus + +Solus oferă Node.js în repozitoriul său principal. + +```bash +sudo eopkg install nodejs +``` + +## vfox + +Un manager de versiuni pentru mai multe platforme (Windows, macOS, Linux), **extensibil**. + +Vă permite să folosiți **versiuni diferite pentru proiecte diferite**, **versiuni diferite pentru sesiuni shell diferite** și să comute automat între versiunile Node în funcție de directorul curent, etc. + +Este compatibil cu toate shell-urile populare (Bash, Zsh, Fish, PowerShell, Clink, Cmder). + +Consultați [Ghidul de început rapid](https://vfox.lhan.me/guides/quick-start.html) pentru a începe rapid să utilizați vfox și pentru toate detaliile de utilizare. + +## Void Linux + +Void Linux include versiunea stabilă de Node.js în repozitoriul principal. + +```bash +xbps-install -Sy nodejs +``` + +## Windows + +Descărcați [Instalatorul pentru Windows](/#home-downloadhead) direct de pe website-ul [nodejs.org](https://nodejs.org/). + +### Alternative + +Folosind **[Winget](https://aka.ms/winget-cli)**: + +```bash +winget install OpenJS.NodeJS +# or for LTS +winget install OpenJS.NodeJS.LTS +``` + +După rularea uneia dintre cele două comenzi de mai sus, poate fi necesar să reporniți emulatorul de terminal înainte ca instrucțiunea CLI `node` să devină disponibilă. + +Folosind **[Chocolatey](https://chocolatey.org/)**: + +```bash +cinst nodejs +# or for full install with npm +cinst nodejs.install +``` + +Folosind **[Scoop](https://scoop.sh/)**: + +```bash +scoop install nodejs +# or for LTS +scoop install nodejs-lts +``` + +## z/OS + +IBM® SDK pentru Node.js - z/OS® este disponibil în două formate de instalare: SMP/E și PAX. Alegeți formatul de instalare potrivit pentru dvs.: + +- [Instalarea și configurarea ediției SMP/E a Node.js pe z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition) +- [Instalarea și configurarea ediției PAX a Node.js pe z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition) diff --git a/apps/site/pages/tr/about/security-reporting.mdx b/apps/site/pages/tr/about/security-reporting.mdx index 8c5cf0326847d..20fb41402ffeb 100644 --- a/apps/site/pages/tr/about/security-reporting.mdx +++ b/apps/site/pages/tr/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: Güvenlik Raporlaması layout: about --- -Güvenlik Raporlaması +# Güvenlik Raporlaması Aktif Güvenlik Politikaları hakkında daha fazla bilgi için [bu sayfaya](https://github.com/nodejs/node/security/policy) göz atın. @@ -27,22 +27,22 @@ Node.js projesi, güvenlik araştırmacıları ve sorumlu kamu açıklamaları i Node.js için güvenlik açıklama politikası -Güvenlik raporu alınır ve birincil bir işleyici atanır. Bu kişi düzeltme ve sürüm sürecini koordine edecektir. Sorun doğrulanır ve etkilenen tüm sürümlerin bir listesi belirlenir. Kod, olası benzer sorunları bulmak için denetlenir. Hala bakım altında olan tüm sürümler için düzeltmeler hazırlanır. Bu düzeltmeler genel depoya taahhüt edilmez, bunun yerine duyuruya kadar yerel olarak tutulur. +- Güvenlik raporu alınır ve birincil bir işleyici atanır. Bu kişi düzeltme ve sürüm sürecini koordine edecektir. Sorun doğrulanır ve etkilenen tüm sürümlerin bir listesi belirlenir. Kod, olası benzer sorunları bulmak için denetlenir. Hala bakım altında olan tüm sürümler için düzeltmeler hazırlanır. Bu düzeltmeler genel depoya taahhüt edilmez, bunun yerine duyuruya kadar yerel olarak tutulur. -Bu zafiyet için önerilen ambargo tarihi belirlenir ve bir CVE (Common Vulnerabilities and Exposures - Ortak Zayıflıklar ve Maruz Kalma) talep edilir. +- Bu zafiyet için önerilen ambargo tarihi belirlenir ve bir CVE (Common Vulnerabilities and Exposures - Ortak Zayıflıklar ve Maruz Kalma) talep edilir. -Ambargo tarihinde, Node.js güvenlik posta listesine duyurunun bir kopyası gönderilir. Değişiklikler genel depoya gönderilir ve yeni yapılar nodejs.org'a dağıtılır. Posta listesine bildirim yapıldıktan sonraki 6 saat içinde, duyurunun bir kopyası Node.js blogunda yayınlanır. +- Ambargo tarihinde, Node.js güvenlik posta listesine duyurunun bir kopyası gönderilir. Değişiklikler genel depoya gönderilir ve yeni yapılar nodejs.org'a dağıtılır. Posta listesine bildirim yapıldıktan sonraki 6 saat içinde, duyurunun bir kopyası Node.js blogunda yayınlanır. -Genellikle, zafiyetin yayınlandığı tarihten itibaren 72 saat sonra ambargo tarihi belirlenir. Ancak, bu, hatanın ciddiyetine veya bir düzeltmenin uygulanmasındaki zorluğa bağlı olarak değişebilir. +- Genellikle, zafiyetin yayınlandığı tarihten itibaren 72 saat sonra ambargo tarihi belirlenir. Ancak, bu, hatanın ciddiyetine veya bir düzeltmenin uygulanmasındaki zorluğa bağlı olarak değişebilir. -Bu süreç, özellikle diğer projelerin bakımcılarıyla koordinasyon gerektiğinde biraz zaman alabilir. Hatanın mümkün olduğunca zamanında ele alınması için her türlü çaba gösterilecektir; ancak, ifşanın tutarlı bir şekilde ele alınmasını sağlamak için yukarıdaki yayın sürecini takip etmemiz önemlidir. +- Bu süreç, özellikle diğer projelerin bakımcılarıyla koordinasyon gerektiğinde biraz zaman alabilir. Hatanın mümkün olduğunca zamanında ele alınması için her türlü çaba gösterilecektir; ancak, ifşanın tutarlı bir şekilde ele alınmasını sağlamak için yukarıdaki yayın sürecini takip etmemiz önemlidir. ## Güvenlik güncellemeleri almak Güvenlik bildirimleri aşağıdaki yöntemlerle dağıtılacaktır. -[Google Grubu](https://groups.google.com/group/nodejs-sec) -[Node.js Bloğu](/blog) +- [Google Grubu](https://groups.google.com/group/nodejs-sec) +- [Node.js Bloğu](/blog) ## Bu politikaya ilişkin yorumlar diff --git a/apps/site/pages/uk/about/branding.mdx b/apps/site/pages/uk/about/branding.mdx index 0d416c8a49ea4..0b768febe4c27 100644 --- a/apps/site/pages/uk/about/branding.mdx +++ b/apps/site/pages/uk/about/branding.mdx @@ -3,7 +3,7 @@ title: Брендинг Node.js layout: about --- -Брендинг Node.js +# Брендинг Node.js Будь ласка, перегляньте [політику торгових марок](https://trademark-policy.openjsf.org/), щоб дізнатися про дозвіл на використання логотипів та знаків Node.js®. @@ -24,61 +24,60 @@ layout: about ### Горизонтальний логотип Node.js® <table> -<tbody> - <tr> - <td> - <img alt="Темний горизонтальний логотип Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Світлий горизонтальний логотип Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Темний горизонтальний логотип Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Світлий горизонтальний логотип Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> </table> ### Складений логотип Node.js® <table> -<tbody> - <tr> - <td> - <img alt="Темний складений логотип Node.js®" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Світлий складений логотип Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> - - </tr> - - <tr> - <td> - <img alt="Чорний складений логотип Node.js®" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Білий складений логотип Node.js®" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Темний складений логотип Node.js®" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Світлий складений логотип Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Чорний складений логотип Node.js®" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Білий складений логотип Node.js®" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> </table> ### Значки JS <table> -<tbody> - <tr> - <td> - <img alt="Зелений значок JS" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="Білий значок JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> - - </tr> -</tbody> + <tbody> + <tr> + <td> + <img alt="Зелений значок JS" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="Білий значок JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> </table> diff --git a/apps/site/pages/uk/about/get-involved/index.md b/apps/site/pages/uk/about/get-involved/index.md new file mode 100644 index 0000000000000..77bd3479f706d --- /dev/null +++ b/apps/site/pages/uk/about/get-involved/index.md @@ -0,0 +1,36 @@ +--- +title: Долучитися +layout: about +--- + +# Долучитися + +Якщо ви зацікавлені в участі в спільноті Node.js, ви можете долучитися до нас різними способами. Проєкт Node.js — це велика і різноманітна спільнота, якій можна допомогти не лише кодом. + +## Обговорення спільноти + +- [Офіційний Discord-сервер Node.js](/discord) — це місце для спілкування з іншими розробниками Node.js та отримання офіційних новин проєкту Node.js. +- [Список issue'ів на 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. +- Офіційний Twitter Node.js: [nodejs](https://twitter.com/nodejs). +- [Календар проєкту Node.js](https://nodejs.org/calendar) з усіма публічними командними зустрічами. + +## Навчальні матеріали + +Якщо ви хочете дізнатися більше про Node.js, використовуйте наступні ресурси: + +- [Офіційний розділ навчання](https://nodejs.org/en/learn/) вебсайту Node.js. +- [Офіційна документація з API](https://nodejs.org/api/). +- [NodeSchool.io](https://nodeschool.io/) навчить вас концепцій Node.js за допомогою інтерактивних ігор у командному рядку. +- [Тег Node.js у Stack Overflow](https://stackoverflow.com/questions/tagged/node.js) щодня збирає нову інформацію. +- [Тег Node.js на DEV Community](https://dev.to/t/node) — це місце, де можна ділитися проєктами, статтями та посібниками з Node.js, а також почати обговорення та просити відгуки до тем, пов'язаних із Node.js. До участі запрошуються розробники всіх рівнів. +- [Спільнота Node.js у Reddit](https://www.reddit.com/r/node) — це місце, де можна ділитися проєктами, статтями та посібниками, а також починати обговорення та просити відгуки на тему Node.js. Запрошуються розробники всіх рівнів. + +## Неофіційні платформи + +Якщо вас цікавлять менш формальні місця для обговорення Node.js, ви можете відвідати наступні платформи. +Пам'ятайте: вони не є офіційно схваленими проєктом Node.js. Також дотримуйтеся їхніх правил та кодексів поведінки. + +- [Node Slackers](https://www.nodeslackers.com/) — це спільнота Slack із фокусом на Node.js. +- [OpenJSF Slack](https://slack-invite.openjsf.org/) — це робочий простір Slack для OpenJS Foundation. Там є кілька каналів, які стосуються Node.js. _(канали з префіксом `#nodejs-` стосуються проєкту)_ +- Для IRC перейдіть на `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/uk/about/index.mdx b/apps/site/pages/uk/about/index.mdx index 772d78a8c3d84..11a83ab918c7f 100644 --- a/apps/site/pages/uk/about/index.mdx +++ b/apps/site/pages/uk/about/index.mdx @@ -3,7 +3,7 @@ title: Про Node.js® layout: about --- -Про Node.js® +# Про Node.js® Node.js, асинхронне подієве середовище виконання JavaScript, створене будувати масштабовані мережеві застосунки. Наступний приклад «Hello World» може обробляти багато з'єднань одночасно. Після кожного з'єднання виконується функція зворотного виклику, а якщо робота для виконання відсутня, Node.js буде очікувати. diff --git a/apps/site/pages/uk/about/previous-releases.mdx b/apps/site/pages/uk/about/previous-releases.mdx index 5bb462b04b52f..c50df72d0f0b5 100644 --- a/apps/site/pages/uk/about/previous-releases.mdx +++ b/apps/site/pages/uk/about/previous-releases.mdx @@ -3,7 +3,7 @@ title: Релізи Node.js layout: about --- -Релізи Node.js +# Релізи Node.js Основні версії Node.js мають статус релізу _Current_ протягом шести місяців, що дає час розробникам бібліотек надати їм підтримку. Через шість місяців непарні релізи (9, 11 тощо) більше не підтримуватимуться, а парні релізи (10, 12 тощо) отримають статус _Active LTS_ та стануть готовими до загального використання. diff --git a/apps/site/pages/uk/about/security-reporting.mdx b/apps/site/pages/uk/about/security-reporting.mdx index a4051acc496f6..3abf65a897195 100644 --- a/apps/site/pages/uk/about/security-reporting.mdx +++ b/apps/site/pages/uk/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: Звітність про безпеку layout: about --- -Звітність про безпеку +# Звітність про безпеку Для детальнішої інформації про чинні норми безпеки перейдіть [на цю сторінку](https://github.com/nodejs/node/security/policy). @@ -27,22 +27,22 @@ layout: about Ось політика розкриття інформації щодо безпеки в Node.js -Основний обробник отримує повідомлення про помилку безпеки, яке йому призначається. Ця особа координуватиме процес виправлення помилки та релізу. Помилку знаходять та визначають усі версії, де вона присутня. Код перевіряють на наявність схожих помилок. Потім проводять виправлення для всіх супроводжуваних релізів. Ці виправлення не випускаються в публічний репозиторій, а зберігаються локально, поки не буде здійснено оголошення. +- Основний обробник отримує повідомлення про помилку безпеки, яке йому призначається. Ця особа координуватиме процес виправлення помилки та релізу. Помилку знаходять та визначають усі версії, де вона присутня. Код перевіряють на наявність схожих помилок. Потім проводять виправлення для всіх супроводжуваних релізів. Ці виправлення не випускаються в публічний репозиторій, а зберігаються локально, поки не буде здійснено оголошення. -Обирається дата оголошення цієї вразливості та робиться запит на CVE (Common Vulnerabilities and Exposures (CVE®)) щодо неї. +- Обирається дата оголошення цієї вразливості та робиться запит на CVE (Common Vulnerabilities and Exposures (CVE®)) щодо неї. -У цю дату копію оголошення розсилають адресатам, які відповідають за безпеку Node.js. Зміни додаються до публічного репозиторію, а нові збірки — до nodejs.org. Протягом 6 годин після розсилки копія оголошення публікується в блозі Node.js. +- У цю дату копію оголошення розсилають адресатам, які відповідають за безпеку Node.js. Зміни додаються до публічного репозиторію, а нові збірки — до nodejs.org. Протягом 6 годин після розсилки копія оголошення публікується в блозі Node.js. -Зазвичай датою оголошення є дата через 72 години після запиту на CVE. Однак вона може варіюватися залежно від серйозності помилки та складності її виправлення. +- Зазвичай датою оголошення є дата через 72 години після запиту на CVE. Однак вона може варіюватися залежно від серйозності помилки та складності її виправлення. -Цей процес може зайняти певний час, особливо тоді, коли потрібна координація із супроводжувачами інших проєктів. Усі зусилля будуть спрямовані на обробку помилки якомога швидше, однак для нас важливо дотримуватися процесу вище, щоб оголошення відбулося належним чином. +- Цей процес може зайняти певний час, особливо тоді, коли потрібна координація із супроводжувачами інших проєктів. Усі зусилля будуть спрямовані на обробку помилки якомога швидше, однак для нас важливо дотримуватися процесу вище, щоб оголошення відбулося належним чином. ## Отримання оновлень безпеки Сповіщення, що стосуються безпеки, будуть поширюватися наступними методами: -[Google Group](https://groups.google.com/group/nodejs-sec) -[Блог Node.js](/blog) +- [Google Group](https://groups.google.com/group/nodejs-sec) +- [Блог Node.js](/blog) ## Коментарі стосовно цієї політики diff --git a/apps/site/pages/uk/download/current.mdx b/apps/site/pages/uk/download/current.mdx index 8b6fc6186765f..7b9e6e28fa89e 100644 --- a/apps/site/pages/uk/download/current.mdx +++ b/apps/site/pages/uk/download/current.mdx @@ -4,28 +4,29 @@ title: Завантажити Node.js® --- <section> -Отримати Node.js® <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> за допомогою <Release.InstallationMethodDropdown /> з <Release.PackageManagerDropdown /> + Отримати Node.js® <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> за допомогою <Release.InstallationMethodDropdown /> з <Release.PackageManagerDropdown /> <Release.ReleaseCodeBox /> -<Release.Provider> - Або отримайте збудований Node.js® для <Release.OperatingSystemDropdown /> з архітектурою <Release.PlatformDropdown />. + <Release.Provider> + Або отримайте збудований Node.js® для <Release.OperatingSystemDropdown /> з архітектурою <Release.PlatformDropdown />. - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. + Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">перевірити</LinkWithArrow> підписані SHASUMS. -Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">зібрати Node.js</LinkWithArrow> із вихідного коду. +Шукаєте вихідний код Node.js? Завантажте підписаний tar-архів з <Release.DownloadLink kind="source">вихідним кодом Node.js</Release.DownloadLink>. Перегляньте наші <LinkWithArrow href="https://nodejs.org/download/nightly/">нічні</LinkWithArrow> бінарні файли, -усі <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">попередні релізи</Link> чи +усі <LinkWithArrow href="https://nodejs.org/download/release/">попередні релізи</LinkWithArrow> чи -<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">неофіційні</LinkWithArrow> бінарні файли для інших платформ. + <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">неофіційні</LinkWithArrow> бінарні файли для інших платформ. </section> diff --git a/apps/site/pages/uk/download/index.mdx b/apps/site/pages/uk/download/index.mdx index 8b6fc6186765f..7b9e6e28fa89e 100644 --- a/apps/site/pages/uk/download/index.mdx +++ b/apps/site/pages/uk/download/index.mdx @@ -4,28 +4,29 @@ title: Завантажити Node.js® --- <section> -Отримати Node.js® <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> за допомогою <Release.InstallationMethodDropdown /> з <Release.PackageManagerDropdown /> + Отримати Node.js® <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> за допомогою <Release.InstallationMethodDropdown /> з <Release.PackageManagerDropdown /> <Release.ReleaseCodeBox /> -<Release.Provider> - Або отримайте збудований Node.js® для <Release.OperatingSystemDropdown /> з архітектурою <Release.PlatformDropdown />. + <Release.Provider> + Або отримайте збудований Node.js® для <Release.OperatingSystemDropdown /> з архітектурою <Release.PlatformDropdown />. - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. + Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">перевірити</LinkWithArrow> підписані SHASUMS. -Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">зібрати Node.js</LinkWithArrow> із вихідного коду. +Шукаєте вихідний код Node.js? Завантажте підписаний tar-архів з <Release.DownloadLink kind="source">вихідним кодом Node.js</Release.DownloadLink>. Перегляньте наші <LinkWithArrow href="https://nodejs.org/download/nightly/">нічні</LinkWithArrow> бінарні файли, -усі <Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">попередні релізи</Link> чи +усі <LinkWithArrow href="https://nodejs.org/download/release/">попередні релізи</LinkWithArrow> чи -<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">неофіційні</LinkWithArrow> бінарні файли для інших платформ. + <LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">неофіційні</LinkWithArrow> бінарні файли для інших платформ. </section> diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx index a1ea7751f6f0d..07671833ad3e8 100644 --- a/apps/site/pages/uk/index.mdx +++ b/apps/site/pages/uk/index.mdx @@ -4,134 +4,131 @@ layout: home --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">Запускайте JavaScript будь-де</h1> - -Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, -яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Завантажити Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">Запускайте JavaScript будь-де</h1> + + Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, + яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти. + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>Завантажити Node.js (LTS)</DownloadButton> + <small> + Завантажує Node.js <b>{release.versionWithPrefix}</b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> із довгостроковою підтримкою. + Node.js також можна встановити через <Link href="/download">менеджери версій</Link>. + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - Завантажує Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> із довгостроковою підтримкою. - Node.js також можна встановити через <Link href="/download">менеджери версій</Link>. + Хочете отримати нові функції швидше? + Завантажте <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup>. </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Хочете отримати нові функції швидше? - Завантажте <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>. - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> + <div> + ```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` + ``` + + </div> Дізнайтеся більше про можливості Node.js із [нашими навчальними матеріалами](/learn). diff --git a/apps/site/pages/zh-cn/about/security-reporting.mdx b/apps/site/pages/zh-cn/about/security-reporting.mdx index fafe4d90c5cef..58a3eb2f5b313 100644 --- a/apps/site/pages/zh-cn/about/security-reporting.mdx +++ b/apps/site/pages/zh-cn/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: 安全报告 layout: about --- -安全报告 +# 安全报告 有关活动安全策略的更多详细信息,请查看[此页面](https://github.com/nodejs/node/security/policy)。 @@ -27,22 +27,22 @@ Node.js 项目为安全研究人员和负责任的公开披露提供官方漏洞 这是 Node.js 的安全问题通报规则 -安全报告已收到并分配了主要处理者。这个人将协调修复并报告进度。当问题被确认,并确定了所有受影响版本的列表。将对代码进行审核,以找出任何潜在的类似问题。为仍在维护中的所有版本进行修复。这些修复不会提交到公共存储库,而是在宣布之前保留在本地。 +- 安全报告已收到并分配了主要处理者。这个人将协调修复并报告进度。当问题被确认,并确定了所有受影响版本的列表。将对代码进行审核,以找出任何潜在的类似问题。为仍在维护中的所有版本进行修复。这些修复不会提交到公共存储库,而是在宣布之前保留在本地。 -为此漏洞选择了建议禁运日期,并且为此漏洞提出 (CVE®))(常见漏洞暴露)请求。 +- 为此漏洞选择了建议禁运日期,并且为此漏洞提出 (CVE®))(常见漏洞暴露)请求。 -在禁运日期时,Node.js 安全邮件列表以公告副本形式发出,并且这些更改将被推送到公共存储库,并将新生成部署到 nodejs.org。在通知邮件列表的 6 小时内,将在 Node.js 博客上发布相关咨询副本。 +- 在禁运日期时,Node.js 安全邮件列表以公告副本形式发出,并且这些更改将被推送到公共存储库,并将新生成部署到 nodejs.org。在通知邮件列表的 6 小时内,将在 Node.js 博客上发布相关咨询副本。 -通常禁运日期将在 CVE 发布之时起,在 72 小时内设置。但是这可能会因安全缺陷的严重程度或应用修复程序的困难程度而有所不同。 +- 通常禁运日期将在 CVE 发布之时起,在 72 小时内设置。但是这可能会因安全缺陷的严重程度或应用修复程序的困难程度而有所不同。 -这个过程可能需要一些时间,特别是当需要与其他项目的维护人员进行协调时。但是将尽一切努力尽可能及时地处理缺陷漏洞。然而我们仍必须遵循上面的发布过程,以确保以一致的方式处理泄漏。 +- 这个过程可能需要一些时间,特别是当需要与其他项目的维护人员进行协调时。但是将尽一切努力尽可能及时地处理缺陷漏洞。然而我们仍必须遵循上面的发布过程,以确保以一致的方式处理泄漏。 ## 接收安全更新 安全通知将通过以下方式分发。 -[Google Group](https://groups.google.com/group/nodejs-sec) -[Node.js 博客](/blog) +- [Google Group](https://groups.google.com/group/nodejs-sec) +- [Node.js 博客](/blog) ## 对于此政策的评论与建议 diff --git a/apps/site/pages/zh-tw/about/governance.md b/apps/site/pages/zh-tw/about/governance.md index c97d04939e838..5247cce8e9473 100644 --- a/apps/site/pages/zh-tw/about/governance.md +++ b/apps/site/pages/zh-tw/about/governance.md @@ -7,25 +7,18 @@ layout: about ## 共識尋求過程 -Node.js 專案遵循共識尋求的決策模式。 +Node.js 專案採用[共識決策](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making)模式。 ## 協作者 -[nodejs/node][] 核心 GitHub 儲存庫由協作者維護,這些負責人是由其他現有協作者持續提名選出的。 +[nodejs/node](https://github.com/nodejs/node) 核心 GitHub 儲存庫由協作者維護,這些負責人是由其他現有協作者持續提名選出的。 做出重要貢獻者會被任命為協作者並獲得專案的上傳權限。其人選由其他協作者篩選、提名,並與現有協作者討論。 -如欲查看目前的協作者清單,請參閱專案的 [README.md][]。 +關於目前的協作者名單,請見 [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members)。 -如需協作者指南請參閱 [collaborator-guide.md][]。 +關於協作者指南,請見 [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md)。 ## 技術指導委員會 -本專案由負責專案的高層指導的技術指導委員會 (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 +本專案由負責專案的高層指導的[技術指導委員會 (TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md) 管理。TSC 是由現有 TSC 成員提名的一部分活躍協作者組成的。 diff --git a/apps/site/pages/zh-tw/about/index.mdx b/apps/site/pages/zh-tw/about/index.mdx index 27483a60e62d5..2be4e46c3c1bd 100644 --- a/apps/site/pages/zh-tw/about/index.mdx +++ b/apps/site/pages/zh-tw/about/index.mdx @@ -3,7 +3,7 @@ title: 關於 Node.js® layout: about --- -關於 Node.js® +# 關於 Node.js® Node.js 身為非同步事件驅動的 JavaScript 執行環境,旨在建構可擴展的網路應用程式。在下面的 "hello world" 範例中,Node.js 可以同時處理多個並行連線。每個連線都會觸發回呼函式,但如果沒有任何工作需要處理, Node.js 就會進入休眠。 @@ -43,18 +43,12 @@ server.listen(port, hostname, () => { 這與目前更常見的作業系統多執行緒並行模型形成鮮明對比。執行緒導向的網路效率相對較低且難以使用。此外,Node.js 的使用者也不必擔心死鎖 (deadlock) 問題,因為系統中並沒有上鎖機制。Node.js 中幾乎沒有直接執行 I/O 的函式,所以除了使用 Node.js 標準函式庫的同步方法進行 I/O 外,不會阻塞行程。少了阻塞使得在 Node.js 中開發可擴展的系統變得非常容易。 -如果對上文中部分用語不熟悉,可以參考關於[阻塞與非阻塞][]的完整文章。 +如果您不熟悉這些術語,可以參考這篇完整的文章[〈阻塞與非阻塞概述〉](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking)。 --- -Node.js 在設計上類似於 Ruby 的 [Event Machine][] 和 Python 的 [Twisted][] 等系統,也受到了它們的影響並進一步發展事件模型。它將事件迴圈呈現為一個執行時期結構而非函式庫。在其他系統中,總是需要阻塞式呼叫才能啟動事件迴圈。通常,行為是定義於在指令稿開頭的回呼函式,並在結尾透過 `EventMachine::run()` 等阻塞式呼叫啟動伺服器。然而在 Node.js 中卻沒有這種啟動事件迴圈的呼叫。Node.js 會在執行輸入指令稿後直接進入事件迴圈。若無需要執行的回呼函式,Node.js 就會退出事件迴圈。這種行為類似於瀏覽器中的 JavaScript,即使用者不會感知事件迴圈的存在。 +Node.js 在設計上類似於 Ruby 的 [Event Machine](https://github.com/eventmachine/eventmachine) 和 Python 的 [Twisted](https://twisted.org/) 等系統,也受到了它們的影響並進一步發展事件模型。它將事件迴圈呈現為一個執行時期結構而非函式庫。在其他系統中,總是需要阻塞式呼叫才能啟動事件迴圈。通常,行為是定義於在指令稿開頭的回呼函式,並在結尾透過 `EventMachine::run()` 等阻塞式呼叫啟動伺服器。然而在 Node.js 中卻沒有這種啟動事件迴圈的呼叫。Node.js 會在執行輸入指令稿後直接進入事件迴圈。若無需要執行的回呼函式,Node.js 就會退出事件迴圈。這種行為類似於瀏覽器中的 JavaScript,即使用者不會感知事件迴圈的存在。 HTTP 是 Node.js 中的一等公民,在設計時就考慮到了串流處理和低延遲。這使得 Node.js 非常適合作為 web 函式庫或框架的基礎。 -雖然 Node.js 的設計中沒有執行緒,但這並不代表其無法善用多核心環境。透過我們的 `child_process.fork()][]` API 可以產生能便利互相溝通的子行程。基於相同介面的 `[cluster][]` 模組則可讓您在程序間共享 socket,已達成多核心負載平衡。 - -[阻塞與非阻塞]: /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/ +雖然 Node.js 的設計中沒有執行緒,但這並不代表其無法善用多核心環境。透過我們的 [`child_process.fork()`](https://nodejs.org/api/child_process.html) API 可以產生能便利互相溝通的子行程。基於相同介面的 [`cluster`](https://nodejs.org/api/cluster.html) 模組則可讓您在程序間共享 socket,以達成多核心負載平衡。 diff --git a/apps/site/pages/zh-tw/about/previous-releases.mdx b/apps/site/pages/zh-tw/about/previous-releases.mdx index 14e357731035d..d4b8d5fcc3a54 100644 --- a/apps/site/pages/zh-tw/about/previous-releases.mdx +++ b/apps/site/pages/zh-tw/about/previous-releases.mdx @@ -3,7 +3,7 @@ title: Node.js 版本 layout: about --- -Node.js 版本 +# Node.js 版本 Node.js 的主要版本在釋出後六個月內皆處於最新 (Current) 狀態,讓函式庫作者有時間為其新增支援功能。六個月後,奇數編號的釋出版本 (如 9、11 等) 會停止支援,而偶數編號的釋出版本 (如 10、12 等) 會進入活躍 LTS (Active LTS) 狀態,開放一般大眾使用。LTS 狀態代表「長期支援」,在 30 個月內發現的重大錯誤通常都會得到修復。生產環境的應用程式僅應使用活躍 LTS 或維護 LTS (Maintenance LTS) 版本。 diff --git a/apps/site/pages/zh-tw/about/security-reporting.mdx b/apps/site/pages/zh-tw/about/security-reporting.mdx index 30e939514b44d..4716c887dc6eb 100644 --- a/apps/site/pages/zh-tw/about/security-reporting.mdx +++ b/apps/site/pages/zh-tw/about/security-reporting.mdx @@ -3,7 +3,7 @@ title: 安全性回報 layout: about --- -安全性回報 +# 安全性回報 如欲瞭解更多安全策略的相關資訊,請查看[此頁面](https://github.com/nodejs/node/security/policy)。 @@ -27,23 +27,23 @@ Node.js 專案為安全研究人員和盡責公開揭露設立了官方漏洞獎 下列為 Node.js 的安全揭露政策 -安全報告接受後將指派給一位主要處理人。這位人員將會協調修復和釋出流程。當問題確認後,將整理出所有受影響的版本清單。隨後審核程式碼以排查任何潛在的類似問題。接著針對所有仍在維護中的版本提出修復方案。修復內容不會上傳至公開儲存庫,而是在等待公告期間暫時保存在本機。 +- 安全報告接受後將指派給一位主要處理人。這位人員將會協調修復和釋出流程。當問題確認後,將整理出所有受影響的版本清單。隨後審核程式碼以排查任何潛在的類似問題。接著針對所有仍在維護中的版本提出修復方案。修復內容不會上傳至公開儲存庫,而是在等待公告期間暫時保存在本機。 -針對該漏洞選定建議的解禁日期,並申請一組 CVE® (通用漏洞和揭露,Common Vulnerabilities and Exposures) 編號。 +- 針對該漏洞選定建議的解禁日期,並申請一組 CVE® (通用漏洞和揭露,Common Vulnerabilities and Exposures) 編號。 -在保密日期截止當天,Node.js 安全郵件清單會收到公告的副本。變更內容將推送至公共儲存庫,同時新版本將部署到 nodejs.org。在 -郵件清單收到通知的 6 小時內,公告副本就會張貼在 Node.js 部落格上。 +- 在保密日期截止當天,Node.js 安全郵件清單會收到公告的副本。變更內容將推送至公共儲存庫,同時新版本將部署到 nodejs.org。在 + 郵件清單收到通知的 6 小時內,公告副本就會張貼在 Node.js 部落格上。 -一般而言解禁日期會訂於 CVE 核發的 72 小時後,但仍可能依照漏洞的複雜度及部署的困難度而有變化。 +- 一般而言解禁日期會訂於 CVE 核發的 72 小時後,但仍可能依照漏洞的複雜度及部署的困難度而有變化。 -整個流程需要耗費不少時間,尤其在需要與其他專案維護者協調的情況下更是如此。雖然我們會盡快處理漏洞,但我們仍須遵循上述釋出流程以貫徹揭露政策。 +- 整個流程需要耗費不少時間,尤其在需要與其他專案維護者協調的情況下更是如此。雖然我們會盡快處理漏洞,但我們仍須遵循上述釋出流程以貫徹揭露政策。 ## 接收安全性更新 安全性通知將由以下管道送出。 -[Google 網路論壇](https://groups.google.com/group/nodejs-sec) -[Node.js 部落格](/blog) +- [Google 網路論壇](https://groups.google.com/group/nodejs-sec) +- [Node.js 部落格](/blog) ## 針對此政策提出建議 diff --git a/apps/site/pages/zh-tw/download/current.mdx b/apps/site/pages/zh-tw/download/current.mdx new file mode 100644 index 0000000000000..139e605e0cb94 --- /dev/null +++ b/apps/site/pages/zh-tw/download/current.mdx @@ -0,0 +1,30 @@ +--- +layout: download +title: 下載 Node.js® +--- + +<section> + 取得適用於 <Release.OperatingSystemDropdown /> 的 Node.js® <Release.VersionDropdown /> 透過 <Release.InstallationMethodDropdown /> 包含 <Release.PackageManagerDropdown /> + +<Release.ReleaseCodeBox /> + + <Release.Provider> + 或者取得適用於 <Release.OperatingSystemDropdown /> <Release.PlatformDropdown /> 平台的 Node.js® 組建。 + + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> +</section> + +<section> + 閱讀此版本的<Release.ChangelogLink>更新備註</Release.ChangelogLink>。 + +閱讀此版本的<Release.BlogPostLink>部落格文章</Release.BlogPostLink>。 + +瞭解如何<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">驗證已簽署的 SHASUMS</LinkWithArrow>。 + +在尋找 Node.js 原始碼?下載經簽署的 <Release.DownloadLink kind="source">Node.js 原始碼 tarball</Release.DownloadLink>。 + +查看我們的<LinkWithArrow href="https://nodejs.org/download/nightly/">每日</LinkWithArrow>組建版本、所有<LinkWithArrow href="https://nodejs.org/download/release/">先前版本</LinkWithArrow>,或適用於其他平台的<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非官方</LinkWithArrow>組建。 + +</section> diff --git a/apps/site/pages/zh-tw/download/index.mdx b/apps/site/pages/zh-tw/download/index.mdx index d8fb2039e3b26..139e605e0cb94 100644 --- a/apps/site/pages/zh-tw/download/index.mdx +++ b/apps/site/pages/zh-tw/download/index.mdx @@ -4,26 +4,27 @@ title: 下載 Node.js® --- <section> -取得適用於 <Release.OperatingSystemDropdown /> 的 Node.js® <Release.VersionDropdown /> 透過 <Release.InstallationMethodDropdown /> 包含 <Release.PackageManagerDropdown /> + 取得適用於 <Release.OperatingSystemDropdown /> 的 Node.js® <Release.VersionDropdown /> 透過 <Release.InstallationMethodDropdown /> 包含 <Release.PackageManagerDropdown /> <Release.ReleaseCodeBox /> -<Release.Provider> - 或者取得適用於 <Release.OperatingSystemDropdown /> <Release.PlatformDropdown /> 平台的 Node.js® 組建。 + <Release.Provider> + 或者取得適用於 <Release.OperatingSystemDropdown /> <Release.PlatformDropdown /> 平台的 Node.js® 組建。 - <Release.PrebuiltDownloadButtons /> -</Release.Provider> + <Release.PrebuiltDownloadButtons /> + + </Release.Provider> </section> <section> -閱讀此版本的<Release.ChangelogLink>更新備註</Release.ChangelogLink>。 + 閱讀此版本的<Release.ChangelogLink>更新備註</Release.ChangelogLink>。 閱讀此版本的<Release.BlogPostLink>部落格文章</Release.BlogPostLink>。 瞭解如何<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">驗證已簽署的 SHASUMS</LinkWithArrow>。 -暸解如何自原始碼<LinkWithArrow href="https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms">建置 Node.js</LinkWithArrow>。 +在尋找 Node.js 原始碼?下載經簽署的 <Release.DownloadLink kind="source">Node.js 原始碼 tarball</Release.DownloadLink>。 -查看我們的<LinkWithArrow href="https://nodejs.org/download/nightly/">每日</LinkWithArrow>組建版本、所有<Link href="/about/previous-releases#looking-for-latest-release-of-a-version-branch">先前版本</Link>或適用於其他平台的<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非官方</LinkWithArrow>組建。 +查看我們的<LinkWithArrow href="https://nodejs.org/download/nightly/">每日</LinkWithArrow>組建版本、所有<LinkWithArrow href="https://nodejs.org/download/release/">先前版本</LinkWithArrow>,或適用於其他平台的<LinkWithArrow href="https://unofficial-builds.nodejs.org/download/">非官方</LinkWithArrow>組建。 </section> diff --git a/apps/site/pages/zh-tw/index.mdx b/apps/site/pages/zh-tw/index.mdx index 31c0945a4c935..b329dd7ed0112 100644 --- a/apps/site/pages/zh-tw/index.mdx +++ b/apps/site/pages/zh-tw/index.mdx @@ -4,133 +4,130 @@ layout: home --- <section> -<WithBadge section="index" /> - -<div> - <h1 className="special">隨時隨地執行 JavaScript</h1> - -Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發者建立伺服器、網頁應用程式、命令列工具與指令稿。 - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>下載 Node.js (LTS)</DownloadButton> + <WithBadge section="index" /> + + <div> + <h1 className="special">隨時隨地執行 JavaScript</h1> + + Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發者建立伺服器、網頁應用程式、命令列工具與指令稿。 + + </div> + + <div> + <WithNodeRelease status={['LTS']}> + {({ release }) => ( + <> + <DownloadButton release={release}>下載 Node.js (LTS)</DownloadButton> + <small> + 下載享有長期支援的 Node.js <b>{release.versionWithPrefix}</b> + <sup title="下載適用您的平台的 Node.js 安裝程式">1</sup>。 + 您也可以透過<Link href="/download">版本管理程式</Link>來安裝 Node.js。 + </small> + </> + )} + </WithNodeRelease> + + <WithNodeRelease status={['Current']}> + {({ release }) => ( <small> - 下載享有長期支援的 Node.js <b>{release.versionWithPrefix}</b> - <sup title="下載適用於您目前平台的 Node.js 安裝程式">1</sup>。 - 您也可以透過<Link href="/download/package-manager">套件管理程式</Link>來安裝 Node.js。 + 想要更快體驗新功能嗎? + 那就下載 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> + <sup title="Downloads a Node.js installer for your current platform">1</sup> 吧。 </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 想要更快體驗新功能嗎? - 那就下載 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 吧。 - </small> - )} - </WithNodeRelease> -</div> + )} + </WithNodeRelease> + + </div> </section> <section> -<div> - ```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` -``` - -</div> + <div> + ```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` + ``` + + </div> 我們提供大量[學習資源](/learn),探索 Node.js 的無限潛能。 diff --git a/apps/site/snippets/es/download/fnm.bash b/apps/site/snippets/es/download/fnm.bash new file mode 100644 index 0000000000000..45a5f022a7f70 --- /dev/null +++ b/apps/site/snippets/es/download/fnm.bash @@ -0,0 +1,11 @@ +# Descarga e instala fnm: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# Descarga e instala Node.js: +fnm install ${props.release.major} + +# Verifica la versión de Node.js: +node -v # Debería mostrar "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/es/download/npm.bash b/apps/site/snippets/es/download/npm.bash new file mode 100644 index 0000000000000..18fc8f39651af --- /dev/null +++ b/apps/site/snippets/es/download/npm.bash @@ -0,0 +1,2 @@ +# Verifica versión de npm: +npm -v # Debería mostrar "${props.release.npm}". diff --git a/apps/site/snippets/es/download/pnpm.bash b/apps/site/snippets/es/download/pnpm.bash new file mode 100644 index 0000000000000..883e54f2377d6 --- /dev/null +++ b/apps/site/snippets/es/download/pnpm.bash @@ -0,0 +1,5 @@ +# Descarga e instala pnpm: +corepack enable pnpm + +# Verifica versión de pnpm: +pnpm -v diff --git a/apps/site/snippets/es/download/volta.bash b/apps/site/snippets/es/download/volta.bash new file mode 100644 index 0000000000000..e430a1693a089 --- /dev/null +++ b/apps/site/snippets/es/download/volta.bash @@ -0,0 +1,11 @@ +# En la mayoría de los sistemas Unix, incluyendo macOS, puedes instalar con un solo comando: +${props.os === 'WIN' ? + 'winget install Volta.Volta' : + 'curl https://get.volta.sh | bash' +} + +# Descarga e instala Node.js: +volta install node@${props.release.major} + +# Verifica la versión de Node.js: +node -v # Debería mostrar "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/fr/download/volta.bash b/apps/site/snippets/fr/download/volta.bash new file mode 100644 index 0000000000000..f00c6d7e042bd --- /dev/null +++ b/apps/site/snippets/fr/download/volta.bash @@ -0,0 +1,11 @@ +# Sur la plupart des systèmes Unix, y compris macOS, vous pouvez effectuer l'installation à l'aide d'une seule commande : +${props.os === 'WIN' ? + 'winget install Volta.Volta' : + 'curl https://get.volta.sh | bash' +} + +# Télécharger et installer Node.js : +volta install node@${props.release.major} + +# Vérifier la version de Node.js : +node -v # Doit afficher "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/ja/download/nvm.bash b/apps/site/snippets/ja/download/nvm.bash index 52e85e6b5bb1e..4fe9d37ea72dd 100644 --- a/apps/site/snippets/ja/download/nvm.bash +++ b/apps/site/snippets/ja/download/nvm.bash @@ -1,5 +1,8 @@ # nvmをダウンロードしてインストールする: -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash + +# シェルを再起動する代わりに実行する +\. "$HOME/.nvm/nvm.sh" # Node.jsをダウンロードしてインストールする: nvm install ${props.release.major} diff --git a/apps/site/snippets/ja/download/volta.bash b/apps/site/snippets/ja/download/volta.bash new file mode 100644 index 0000000000000..6fa8adce46583 --- /dev/null +++ b/apps/site/snippets/ja/download/volta.bash @@ -0,0 +1,11 @@ +# macOSを含むほとんどのUnixシステムでは1つのコマンドでインストールできます: +${props.os === 'WIN' ? + 'winget install Volta.Volta' : + 'curl https://get.volta.sh | bash' +} + +# Node.jsをダウンロードしてインストールする: +volta install node@${props.release.major} + +# Node.jsのバージョンを確認する: +node -v # "${props.release.versionWithPrefix}"が表示される。 diff --git a/apps/site/snippets/pt/download/brew.bash b/apps/site/snippets/pt/download/brew.bash new file mode 100644 index 0000000000000..6d06da2d48681 --- /dev/null +++ b/apps/site/snippets/pt/download/brew.bash @@ -0,0 +1,8 @@ +# Descarregar e instalar a Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Descarregar e instalar a Node.js: +brew install node@${props.release.major} + +# Consultar a versão da Node.js: +node -v # Deveria imprimir "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/pt/download/choco.bash b/apps/site/snippets/pt/download/choco.bash new file mode 100644 index 0000000000000..0e1e275d5c2ac --- /dev/null +++ b/apps/site/snippets/pt/download/choco.bash @@ -0,0 +1,8 @@ +# Descarregar e instalar a Chocolatey: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# Descarregar e instalar a Node.js: +choco install nodejs-lts --version="${props.release.major}" + +# Consultar a versão da Node.js: +node -v # Deveria imprimir "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/pt/download/devbox.bash b/apps/site/snippets/pt/download/devbox.bash new file mode 100644 index 0000000000000..9bde94d1391bf --- /dev/null +++ b/apps/site/snippets/pt/download/devbox.bash @@ -0,0 +1,14 @@ +# Descarregar e instalar a Devbox +curl -fsSL https://get.jetify.com/devbox | bash + +# Inicializar a Devbox no nosso projeto +devbox init + +# Descarregar e instalar a Node.js: +devbox add node@${props.release.major} + +# Abrir uma concha de Devbox +devbox shell + +# Consultar a versão da Node.js: +node -v # Deveria imprimir "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/pt/download/docker.bash b/apps/site/snippets/pt/download/docker.bash new file mode 100644 index 0000000000000..db9424c9975ac --- /dev/null +++ b/apps/site/snippets/pt/download/docker.bash @@ -0,0 +1,11 @@ +# Docker possui instruções de instalação específicas para cada sistema operativo. +# Podemos consultar a documentação oficial no https://docker.com/get-started/ + +# Puxar ou extrair a imagem de Docker da Node.js: +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Criar um contentor de Node.js e iniciar uma sessão de Shell: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Consultar a versão da Node.js: +node -v # Deveria imprimir "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/pt/download/fnm.bash b/apps/site/snippets/pt/download/fnm.bash new file mode 100644 index 0000000000000..1b67090e062de --- /dev/null +++ b/apps/site/snippets/pt/download/fnm.bash @@ -0,0 +1,11 @@ +# Descarregar e instalar a fnm: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# Descarregar e instalar a Node.js: +fnm install ${props.release.major} + +# Consultar a versão da Node.js: +node -v # Deveria imprimir "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/pt/download/npm.bash b/apps/site/snippets/pt/download/npm.bash new file mode 100644 index 0000000000000..78b266c9637aa --- /dev/null +++ b/apps/site/snippets/pt/download/npm.bash @@ -0,0 +1,2 @@ +# Consultar a versão da npm: +npm -v # Deveria imprimir "${props.release.npm}". diff --git a/apps/site/snippets/pt/download/nvm.bash b/apps/site/snippets/pt/download/nvm.bash new file mode 100644 index 0000000000000..5cd1621fc6e5a --- /dev/null +++ b/apps/site/snippets/pt/download/nvm.bash @@ -0,0 +1,12 @@ +# Descarregar e instalar a nvm: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash + +# Em vez de reiniciar a concha ou shell +\. "$HOME/.nvm/nvm.sh" + +# Descarregar e instalar a Node.js: +nvm install ${props.release.major} + +# Consultar a versão da Node.js: +node -v # Deveria imprimir "${props.release.versionWithPrefix}". +nvm current # Deveria imprimir "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/pt/download/pnpm.bash b/apps/site/snippets/pt/download/pnpm.bash new file mode 100644 index 0000000000000..ebb7aa2be8715 --- /dev/null +++ b/apps/site/snippets/pt/download/pnpm.bash @@ -0,0 +1,5 @@ +# Descarregar e instalar a pnpm: +corepack enable pnpm + +# Consultar a versão da pnpm: +pnpm -v diff --git a/apps/site/snippets/pt/download/volta.bash b/apps/site/snippets/pt/download/volta.bash new file mode 100644 index 0000000000000..38c2ce95f10a0 --- /dev/null +++ b/apps/site/snippets/pt/download/volta.bash @@ -0,0 +1,11 @@ +# Na maioria dos sistemas de Unix incluindo macOS, podemos instalar com um único comando: +${props.os === 'WIN' ? + 'winget install Volta.Volta' : + 'curl https://get.volta.sh | bash' +} + +# Descarregar e instalar a Node.js: +volta install node@${props.release.major} + +# Consultar a versão da Node.js: +node -v # Deve imprimir "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/pt/download/yarn.bash b/apps/site/snippets/pt/download/yarn.bash new file mode 100644 index 0000000000000..de3df206e8d41 --- /dev/null +++ b/apps/site/snippets/pt/download/yarn.bash @@ -0,0 +1,5 @@ +# Descarregar e instalar a Yarn: +corepack enable yarn + +# Consultar a versão da Yarn: +yarn -v diff --git a/apps/site/snippets/ro/download/brew.bash b/apps/site/snippets/ro/download/brew.bash new file mode 100644 index 0000000000000..c67f743ea11f5 --- /dev/null +++ b/apps/site/snippets/ro/download/brew.bash @@ -0,0 +1,8 @@ +# Descărcați și instalați Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Descărcați și instalați Node.js: +brew install node@${props.release.major} + +# Verificați versiunea de Node.js: +node -v # Ar trebui să afișeze "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/uk/download/nvm.bash b/apps/site/snippets/uk/download/nvm.bash index 97925cfe00e44..07545f1cca90b 100644 --- a/apps/site/snippets/uk/download/nvm.bash +++ b/apps/site/snippets/uk/download/nvm.bash @@ -1,5 +1,8 @@ # Завантажує й установлює nvm: -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash + +# Замість перезапуску оболонки можна виконати: +\. "$HOME/.nvm/nvm.sh" # Завантажує й установлює Node.js: nvm install ${props.release.major} diff --git a/apps/site/snippets/uk/download/volta.bash b/apps/site/snippets/uk/download/volta.bash new file mode 100644 index 0000000000000..aacfc54f3c8e4 --- /dev/null +++ b/apps/site/snippets/uk/download/volta.bash @@ -0,0 +1,11 @@ +# На більшості системах Unix, включно з macOS, його можна встановити однією командою: +${props.os === 'WIN' ? + 'winget install Volta.Volta' : + 'curl https://get.volta.sh | bash' +} + +# Завантажує й установлює Node.js: +volta install node@${props.release.major} + +# Перевіряє версію Node.js: +node -v # Повинно вивести «${props.release.versionWithPrefix}». diff --git a/apps/site/snippets/zh-tw/download/brew.bash b/apps/site/snippets/zh-tw/download/brew.bash index f424c65921ad0..f1bcecea25a5c 100644 --- a/apps/site/snippets/zh-tw/download/brew.bash +++ b/apps/site/snippets/zh-tw/download/brew.bash @@ -1,8 +1,8 @@ # 下載並安裝 Homebrew curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash -# 下載並安裝 Node.js: +# 下載並安裝 Node.js: brew install node@${props.release.major} -# 核對 Node.js 版本: +# 核對 Node.js 版本: node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/choco.bash b/apps/site/snippets/zh-tw/download/choco.bash index 1a1908fb88d45..af3bd1855dd41 100644 --- a/apps/site/snippets/zh-tw/download/choco.bash +++ b/apps/site/snippets/zh-tw/download/choco.bash @@ -1,8 +1,8 @@ -# 下載並安裝 Chocolatey: +# 下載並安裝 Chocolatey: powershell -c "irm https://community.chocolatey.org/install.ps1|iex" -# 下載並安裝 Node.js: +# 下載並安裝 Node.js: choco install nodejs-lts --version="${props.release.major}" -# 核對 Node.js 版本: +# 核對 Node.js 版本: node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/devbox.bash b/apps/site/snippets/zh-tw/download/devbox.bash index e160988cf68a2..328deeef5e796 100644 --- a/apps/site/snippets/zh-tw/download/devbox.bash +++ b/apps/site/snippets/zh-tw/download/devbox.bash @@ -4,11 +4,11 @@ curl -fsSL https://get.jetify.com/devbox | bash # 在您的專案中初始化 Devbox devbox init -# 下載並安裝 Node.js: +# 下載並安裝 Node.js: devbox add node@${props.release.major} # 啟動 Devbox shell devbox shell -# 核對 Node.js 版本: +# 核對 Node.js 版本: node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/docker.bash b/apps/site/snippets/zh-tw/download/docker.bash index fdb493e7ecaa5..9920e638fd135 100644 --- a/apps/site/snippets/zh-tw/download/docker.bash +++ b/apps/site/snippets/zh-tw/download/docker.bash @@ -1,11 +1,11 @@ # Docker 針對不同作業系統有特定的安裝指示。 # 請至 https://docker.com/get-started/ 查閱官方文件 -# 拉取 Node.js Docker 映像: +# 拉取 Node.js Docker 映像: docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} -# 建立 Node.js 容器並啟動 Shell 工作階段: +# 建立 Node.js 容器並啟動 Shell 工作階段: docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} -# 核對 Node.js 版本: +# 核對 Node.js 版本: node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/fnm.bash b/apps/site/snippets/zh-tw/download/fnm.bash index c88ef97f75139..b4873871fa95c 100644 --- a/apps/site/snippets/zh-tw/download/fnm.bash +++ b/apps/site/snippets/zh-tw/download/fnm.bash @@ -1,11 +1,11 @@ -# 下載並安裝 fnm: +# 下載並安裝 fnm: ${props.os === 'WIN' ? 'winget install Schniz.fnm' : 'curl -o- https://fnm.vercel.app/install | bash' } -# 下載並安裝 Node.js: +# 下載並安裝 Node.js: fnm install ${props.release.major} -# 核對 Node.js 版本: +# 核對 Node.js 版本: node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/npm.bash b/apps/site/snippets/zh-tw/download/npm.bash index cd133eba0f096..0401c490be5a0 100644 --- a/apps/site/snippets/zh-tw/download/npm.bash +++ b/apps/site/snippets/zh-tw/download/npm.bash @@ -1,2 +1,2 @@ -# 核對 npm 版本: -npm -v # 應當會印出 "${props.release.npm}"。 +# 核對 npm 版本: +npm -v # 應會印出 "${props.release.npm}"。 diff --git a/apps/site/snippets/zh-tw/download/pnpm.bash b/apps/site/snippets/zh-tw/download/pnpm.bash index 100738061ff97..28eb2886fab49 100644 --- a/apps/site/snippets/zh-tw/download/pnpm.bash +++ b/apps/site/snippets/zh-tw/download/pnpm.bash @@ -1,5 +1,5 @@ -# 下載並安裝 pnpm: +# 下載並安裝 pnpm: corepack enable pnpm -# 核對 pnpm 版本: +# 核對 pnpm 版本: pnpm -v diff --git a/apps/site/snippets/zh-tw/download/yarn.bash b/apps/site/snippets/zh-tw/download/yarn.bash index 6e383bb4b7c3e..becfd1dceb23d 100644 --- a/apps/site/snippets/zh-tw/download/yarn.bash +++ b/apps/site/snippets/zh-tw/download/yarn.bash @@ -1,5 +1,5 @@ -# 下載並安裝 Yarn: +# 下載並安裝 Yarn: corepack enable yarn -# 核對 Yarn 版本: +# 核對 Yarn 版本: yarn -v diff --git a/packages/i18n/locales/ja.json b/packages/i18n/locales/ja.json index e1e508dc76d7b..f805f8a0a762f 100644 --- a/packages/i18n/locales/ja.json +++ b/packages/i18n/locales/ja.json @@ -11,16 +11,19 @@ } }, "navBar": { + "controls": { + "toggle": "メニューを切り替える" + }, "links": { "about": "About", "download": "ダウンロード", "docs": "ドキュメント", "guides": "ガイド", "learn": "学ぶ", - "security": "セキュリティー", + "security": "セキュリティ", "certification": "認定資格", "blog": "ブログ", - "contribute": "開発への協力" + "contribute": "貢献" } } }, @@ -39,7 +42,9 @@ "nodejsWithWebassembly": "Node.jsとWebAssembly", "debugging": "Node.jsのデバッグ", "profiling": "Node.jsアプリケーションのプロファイリング", - "securityBestPractices": "セキュリティーベストプラクティス" + "fetch": "Node.jsでデータを取得する", + "websocket": "Node.jsでのWebSocketクライアント", + "securityBestPractices": "セキュリティベストプラクティス" } }, "typescript": { @@ -48,7 +53,8 @@ "introduction": "TypeScriptの導入", "transpile": "トランスパイルを用いたTypeScriptの実行", "run": "実行ツールを用いたTypeScriptの実行", - "runNatively": "TypeScriptをネイティブに実行する" + "runNatively": "TypeScriptをネイティブに実行する", + "publishingTSPackage": "TypeScriptパッケージを公開する" } }, "asynchronousWork": { @@ -124,7 +130,7 @@ "branding": "Node.jsのブランド", "governance": "プロジェクトの管理体制", "releases": "Node.js リリース", - "security": "セキュリティーレポート" + "security": "セキュリティレポート" } }, "getInvolved": { @@ -280,9 +286,11 @@ "brew": "HomebrewはmacOS用およびLinux用のパッケージマネージャーです。", "choco": "ChocolateyはWIndows用のパッケージマネージャーです。", "devbox": "Devboxは隔離された再現可能な開発環境を構築します。", - "docker": "Dockerはコンテナー化に関するプラットフォームです。" + "docker": "Dockerはコンテナー化に関するプラットフォームです。", + "volta": "\"Volta\"はクロスプラットフォームに対応したNode.jsのバージョンマネージャーです。" } } - } + }, + "logo": "Node.jsロゴ" } } diff --git a/packages/i18n/locales/pt.json b/packages/i18n/locales/pt.json index f1cee6d50be9a..ddc80dfb64029 100644 --- a/packages/i18n/locales/pt.json +++ b/packages/i18n/locales/pt.json @@ -5,11 +5,15 @@ "links": { "trademarkPolicy": "Política da Marca Comercial", "privacyPolicy": "Política de Privacidade", + "versionSupport": "Suporte da Versão", "codeOfConduct": "Código de Conduta", "security": "Política de Segurança" } }, "navBar": { + "controls": { + "toggle": "Alternar menu de navegação" + }, "links": { "about": "Sobre", "download": "Descarregar", @@ -18,7 +22,8 @@ "learn": "Estudar", "security": "Segurança", "certification": "Certificação", - "blog": "Blogue" + "blog": "Blogue", + "contribute": "Colaborar" } } }, @@ -37,6 +42,8 @@ "nodejsWithWebassembly": "Node.js com WebAssembly", "debugging": "Depuração da Node.js", "profiling": "Definição de Perfis de Aplicações de Node.js", + "fetch": "Obter dados com a Node.js", + "websocket": "Cliente de WebSocket com a Node.js", "securityBestPractices": "Boas Práticas de Segurança" } }, @@ -46,7 +53,8 @@ "introduction": "Introdução à TypeScript", "transpile": "Executar o código da TypeScript utilizando a tradução de código", "run": "Executar a TypeScript com uma executora", - "runNatively": "Executar a TypeScript Nativamente" + "runNatively": "Executar a TypeScript Nativamente", + "publishingTSPackage": "Publicar um pacote de TypeScript" } }, "asynchronousWork": { @@ -88,9 +96,11 @@ "modules": { "links": { "modules": "Módulos", + "publishingAPackage": "Publicar um pacote", "publishingNodeApiModules": "Como publicar um pacote da Node-API", "anatomyOfAnHttpTransaction": "Anatomia de uma Transação do Protocolo de Hipertexto", "abiStability": "Estabilidade da Interface Binária da Aplicação", + "howToUseStreams": "Como usar fluxos", "backpressuringInStreams": "Contrapressão nas Correntes de Dados" } }, @@ -133,32 +143,28 @@ } } }, - "downloadList": { - "links": { - "previousReleases": "Lançamentos da Node.js", - "packageManager": "Instalar a Node.js através do gestor de pacote", - "shaSums": { - "title": "SHASUMS assinados para ficheiros de lançamento", - "howToVerify": " (Como verificar)" - }, - "allDownloads": "Todas as opções de descarga", - "nightlyReleases": "Compilações noturnas", - "unofficialBuilds": "Compilações não oficiais", - "buildingFromSource": "Compilar a Node.js a partir do código fonte nas plataformas suportadas", - "installingOnLinux": "Instalar a Node.js através do arquivo binário", - "installingOnWsl": "Instalar no Subsistema de Windows para Linux (WSL)" - } - }, "downloadReleasesTable": { - "changelog": "Registo de Alterações", - "releases": "Lançamentos", - "docs": "Documentação" + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "Nome de código", + "releaseDate": "Lançado em", + "actions": { + "changelog": "Registo de alterações", + "releases": "Lançamentos", + "docs": "Documentação" + } }, "pagination": { "next": "Próxima", "previous": "Anterior" }, "common": { + "alertBox": { + "info": "Informação", + "warning": "Aviso", + "danger": "Perigo" + }, "breadcrumbs": { "navigateToHome": "Navegar para a Página Inicial" }, @@ -188,11 +194,6 @@ "label": "Alternar Modo Escuro" } }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "Nenhum Evento Próximo" - } - }, "metabar": { "lastUpdated": "Última Atualização", "readingTime": "Duração da Leitura", @@ -204,32 +205,9 @@ "viewAs": "Ver como", "tableOfContents": "Índice" }, - "downloads": { - "changelogModal": { - "startContributing": "Começar a Colaborar" - } - }, "search": { "searchBox": { "placeholder": "Pesquisar..." - }, - "seeAll": { - "text": "Ver todos os {count} resultados" - }, - "searchError": { - "text": "Ocorreu um erro durante a pesquisa. Por favor, tente novamente mais tarde." - }, - "poweredBy": { - "text": "Com o apoio de" - }, - "noResults": { - "text": "Não foram encontrados resultados para \"{query}\"." - }, - "emptyState": { - "text": "Procure algo..." - }, - "searchPage": { - "title": "Estás a pesquisar: {query}" } }, "blog": { @@ -280,49 +258,39 @@ "backToHome": "Voltar à Página Inicial" }, "download": { - "selectCategory": "Categorias", - "categories": { - "prebuilt-installer": "Instalador do Pré-compilado", - "prebuilt-binaries": "Binários Pré-compilados", - "package-manager": "Gestor de Pacote", - "source-code": "Código-Fonte" - }, "buttons": { - "prebuilt": "Descarregar a Node.js {version}", - "source": "Descarregue o código fonte do Node.js {version}" + "installer": "{os} Instalador (.{extension})", + "binary": "Binário Autónomo (.{extension})" }, "dropdown": { - "bitness": "Quantidade dos Bits", + "platform": "Plataforma", "os": "Sistema Operativo", "version": "Versão", - "platform": "Plataforma" + "installMethod": "Método de Instalação", + "packageManager": "Gestor de Pacote", + "unknown": "Desconhecido", + "platformGroups": { + "official": "Recomendado (Oficial)", + "unofficial": "Comunidade (Não Oficial)" + } }, "codeBox": { - "fnmEnvSetup": "configurar o ambiente da fnm", - "systemManagerWarning": "não é um gestor de pacote da Node.js. Devemos certificar-nos de que já temos {packageManager} instalado.", - "communityWarning": "Os gestores de pacotes e os seus programas de instalação não são mantidos pelo projeto Node.js.", - "communityWarningReport": "Se encontrarmos problemas, devemos dirigir-nos aos responsáveis do gestor de pacote.", - "installsNvm": "instala a nvm (Node Version Manager, ou Gestor de Pacote de Node)", - "downloadAndInstallNodejsRestartTerminal": "descarregar e instalar a Node.js (podemos precisar de reiniciar o terminal)", - "verifiesRightNodejsVersion": "verifica se a versão correta da Node.js está no ambiente", - "verifiesRightNpmVersion": "verifica se a versão correta da npm está no ambiente", - "shouldPrint": "deve imprimir `{version}`", - "installsFnm": "instala a fnm (Fast Node Manager, ou Gestor Rápido de Node)", - "downloadAndInstallNodejs": "decarregar e instalar a Node.js", - "activateFNM": "ativar a fnm", - "noteWithColon": "NOTA:", - "dockerIsNotNodejsPackageManager": "Docker não é um gestor de pacote da Node.js.", - "PleaseEndureAlreadyInstallOnSystem": "Precisamos de certificar-nos de que já instalada no nosso sistema.", - "dockerInstructions": "Seguir as instruções oficiais em https://docs.docker.com/desktop/", - "dockerImagesLink": "As imagens da Docker são fornecidas oficialmente em https://github.com/nodejs/docker-node/", - "pullsNodejsDockerImage": "puxa a imagem de Docker da Node.js", - "homebrewIsNotNodejsPackageManager": "Homebrew não é um gestor de pacote da Node.js.", - "homebrewInstructions": "Seguir as instruções oficiais em https://brew.sh/", - "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew só suporta instalar versões principais da Node.js e pode não suportar a versão mais recente da Node.js da linha de lançamento {version}.", - "chocolateyIsNotNodejsPackageManager": "Chocolatey não é um gestor de pacote da Node.js.", - "chocolateyInstructions": "Seguir as instruções oficiais em https://chocolatey.org/", - "chocolateyNotMaintanedByNodejs": "Chocolatey não é oficialmente mantida pelo projeto Node.js e pode não suportar a versão {version} da Node.js" + "unsupportedVersionWarning": "Esta versão está fora de manutenção. Usar uma versão suportada atualmente. <link>Entender o Suporte do Fim da Vida.</link>", + "communityPlatformInfo": "Os métodos de instalação que envolvem software da comunidade são apoiados pelas equipas que mantêm esse software.", + "externalSupportInfo": "Se encontrarmos quaisquer problemas, podemos visitar o <link>sítio da {platform}</link>", + "noScriptDetected": "Esta página requer JavaScript. Nós podemos descarregar a Node.js sem JavaScript ao visitar diretamente a <link>página de lançamentos</link>.", + "platformInfo": { + "default": "{platform} e os seus programas de instalação não são mantidos pelo projeto Node.js.", + "nvm": "\"nvm\" é um gestor de versão de Node.js multiplataforma.", + "fnm": "\"fnm\" é um gestor de versão de Node.js multiplataforma.", + "brew": "Homebrew é um gestor de pacote para macOS e Linux.", + "choco": "Chocolatey é um gestor de pacote para Windows.", + "devbox": "Devbox cria ambientes de desenvolvimentos isolados e reprodutíveis.", + "docker": "Docker é uma plataforma de contentorização.", + "volta": "\"Volta\" é um gestor de versão de Node.js multiplataforma." + } } - } + }, + "logo": "Logótipo da Node.js" } } diff --git a/packages/i18n/locales/uk.json b/packages/i18n/locales/uk.json index af28f362248e8..5315e3fd9059c 100644 --- a/packages/i18n/locales/uk.json +++ b/packages/i18n/locales/uk.json @@ -11,6 +11,9 @@ } }, "navBar": { + "controls": { + "toggle": "Перемкнути меню навігації" + }, "links": { "about": "Про Node.js", "download": "Завантажити", @@ -39,6 +42,8 @@ "nodejsWithWebassembly": "Node.js із WebAssembly", "debugging": "Налагодження Node.js", "profiling": "Профілювання застосунків Node.js", + "fetch": "Отримання даних із Node.js", + "websocket": "Клієнт WebSocket із Node.js", "securityBestPractices": "Найкращі практики безпеки" } }, @@ -48,7 +53,8 @@ "introduction": "Вступ до TypeScript", "transpile": "Запуск коду на TypeScript за допомогою транспіляції", "run": "Запуск коду на TypeScript із виконавцем", - "runNatively": "Запуск коду на TypeScript нативно" + "runNatively": "Запуск коду на TypeScript нативно", + "publishingTSPackage": "Публікація пакета TypeScript" } }, "asynchronousWork": { @@ -142,7 +148,7 @@ "nApiVersion": "N-API", "npmVersion": "npm", "codename": "Кодова назва", - "releaseDate": "Опубліковано о", + "releaseDate": "Опубліковано", "actions": { "changelog": "Список змін", "releases": "Релізи", @@ -280,9 +286,11 @@ "brew": "Homebrew — це менеджер пакетів для macOS та Linux.", "choco": "Chocolatey — це менеджер пакетів для Windows.", "devbox": "Devbox створює ізольовані та відтворювані середовища розробки.", - "docker": "Docker — це платформа контейнеризації." + "docker": "Docker — це платформа контейнеризації.", + "volta": "«Volta» — це кросплатформний менеджер версій Node.js." } } - } + }, + "logo": "Логотип Node.js" } } diff --git a/packages/i18n/locales/zh-tw.json b/packages/i18n/locales/zh-tw.json index 676656b2e8507..b4dea03530208 100644 --- a/packages/i18n/locales/zh-tw.json +++ b/packages/i18n/locales/zh-tw.json @@ -11,6 +11,9 @@ } }, "navBar": { + "controls": { + "toggle": "切換導覽選單" + }, "links": { "about": "關於", "download": "下載", @@ -39,6 +42,8 @@ "nodejsWithWebassembly": "Node.js 搭配 WebAssembly", "debugging": "Node.js 除錯", "profiling": "分析 Node.js 應用程式", + "fetch": "以 Node.js 獲取 (fetch) 資料", + "websocket": "Node.js WebSocket 用戶端", "securityBestPractices": "安全最佳實踐" } }, @@ -48,7 +53,8 @@ "introduction": "TypeScript 介紹", "transpile": "透過翻譯執行 TypeScript 程式碼。", "run": "透過執行器執行 TypeScript", - "runNatively": "原生執行 TypeScript" + "runNatively": "原生執行 TypeScript", + "publishingTSPackage": "發佈 TypeScript 套件" } }, "asynchronousWork": { @@ -80,7 +86,7 @@ "commandLine": { "links": { "commandLine": "命令列", - "runNodejsScriptsFromTheCommandLine": "使用命令列執行 Node.js 腳本", + "runNodejsScriptsFromTheCommandLine": "使用命令列執行 Node.js 指令稿", "howToReadEnvironmentVariablesFromNodejs": "如何從 Node.js 中讀取環境變數", "howToUseTheNodejsRepl": "如何使用 Node.js REPL", "outputToTheCommandLineUsingNodejs": "使用 Node.js 輸出到命令列", @@ -103,7 +109,7 @@ "diagnostics": "診斷訊息", "userJourney": "使用者旅程", "memory": "記憶體", - "liveDebugging": "即時除錯", + "liveDebugging": "即時偵錯", "poorPerformance": "低效能", "flameGraphs": "火焰圖" } @@ -113,7 +119,7 @@ "testRunner": "測試執行器", "introduction": "探索 Node.js 中的測試執行器", "usingTestRunner": "使用 Node.js 中的測試執行器", - "mocking": "如何使用串流" + "mocking": "在測試中模擬物件" } } }, @@ -264,8 +270,8 @@ "packageManager": "套件管理程式", "unknown": "未知", "platformGroups": { - "official": "官方推薦", - "unofficial": "非官方社群" + "official": "推薦(官方)", + "unofficial": "社群(非官方)" } }, "codeBox": { @@ -275,14 +281,16 @@ "noScriptDetected": "此網頁需要使用 JavaScript。您可以直接造訪 <link>發行網頁</link> 以下載 Node.js,無需 JavaScript。", "platformInfo": { "default": "套件管理器與其安裝指令稿並非由 Node.js 專案維護。", - "nvm": "\"nvm\" 是跨平台的 Node.js 版本管理程式。", - "fnm": "\"fnm\" 是跨平台的 Node.js 版本管理程式。", + "nvm": "「nvm」是跨平台的 Node.js 版本管理程式。", + "fnm": "「fnm」是跨平台的 Node.js 版本管理程式。", "brew": "Homebrew 是 macOS 及 Linux 的套件管理程式。", "choco": "Chocolatey 是 Windows 的套件管理程式。", "devbox": "Devbox 會建立隔離且可重現的開發環境。", - "docker": "Docker 是一款容器化平台。" + "docker": "Docker 是一款容器化平台。", + "volta": "「Volta」是跨平台的 Node.js 版本管理程式。" } } - } + }, + "logo": "Node.js 標誌" } } From bcfd5fbbe939f0d0a72d9fd931ced6b0572bc175 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 22 Mar 2025 11:31:34 +0000 Subject: [PATCH 0345/1385] meta: bump next from 15.2.0 to 15.2.3 (#7559) Bumps [next](https://github.com/vercel/next.js) from 15.2.0 to 15.2.3. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v15.2.0...v15.2.3) --- updated-dependencies: - dependency-name: next dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 80 +++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4b1a7391df476..2978fed0058c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.2.0", + "next": "15.2.3", "next-intl": "~3.26.5", "next-themes": "~0.4.4", "postcss": "~8.5.3", @@ -3186,9 +3186,9 @@ } }, "node_modules/@next/env": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.0.tgz", - "integrity": "sha512-eMgJu1RBXxxqqnuRJQh5RozhskoNUDHBFybvi+Z+yK9qzKeG7dadhv/Vp1YooSZmCnegf7JxWuapV77necLZNA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz", + "integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -3232,9 +3232,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.0.tgz", - "integrity": "sha512-rlp22GZwNJjFCyL7h5wz9vtpBVuCt3ZYjFWpEPBGzG712/uL1bbSkS675rVAUCRZ4hjoTJ26Q7IKhr5DfJrHDA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.3.tgz", + "integrity": "sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==", "cpu": [ "arm64" ], @@ -3248,9 +3248,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.0.tgz", - "integrity": "sha512-DiU85EqSHogCz80+sgsx90/ecygfCSGl5P3b4XDRVZpgujBm5lp4ts7YaHru7eVTyZMjHInzKr+w0/7+qDrvMA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.3.tgz", + "integrity": "sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==", "cpu": [ "x64" ], @@ -3264,9 +3264,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.0.tgz", - "integrity": "sha512-VnpoMaGukiNWVxeqKHwi8MN47yKGyki5q+7ql/7p/3ifuU2341i/gDwGK1rivk0pVYbdv5D8z63uu9yMw0QhpQ==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.3.tgz", + "integrity": "sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==", "cpu": [ "arm64" ], @@ -3280,9 +3280,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.0.tgz", - "integrity": "sha512-ka97/ssYE5nPH4Qs+8bd8RlYeNeUVBhcnsNUmFM6VWEob4jfN9FTr0NBhXVi1XEJpj3cMfgSRW+LdE3SUZbPrw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.3.tgz", + "integrity": "sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==", "cpu": [ "arm64" ], @@ -3296,9 +3296,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.0.tgz", - "integrity": "sha512-zY1JduE4B3q0k2ZCE+DAF/1efjTXUsKP+VXRtrt/rJCTgDlUyyryx7aOgYXNc1d8gobys/Lof9P9ze8IyRDn7Q==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.3.tgz", + "integrity": "sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==", "cpu": [ "x64" ], @@ -3312,9 +3312,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.0.tgz", - "integrity": "sha512-QqvLZpurBD46RhaVaVBepkVQzh8xtlUN00RlG4Iq1sBheNugamUNPuZEH1r9X1YGQo1KqAe1iiShF0acva3jHQ==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.3.tgz", + "integrity": "sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==", "cpu": [ "x64" ], @@ -3328,9 +3328,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.0.tgz", - "integrity": "sha512-ODZ0r9WMyylTHAN6pLtvUtQlGXBL9voljv6ujSlcsjOxhtXPI1Ag6AhZK0SE8hEpR1374WZZ5w33ChpJd5fsjw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.3.tgz", + "integrity": "sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==", "cpu": [ "arm64" ], @@ -3344,9 +3344,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.0.tgz", - "integrity": "sha512-8+4Z3Z7xa13NdUuUAcpVNA6o76lNPniBd9Xbo02bwXQXnZgFvEopwY2at5+z7yHl47X9qbZpvwatZ2BRo3EdZw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.3.tgz", + "integrity": "sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==", "cpu": [ "x64" ], @@ -18679,12 +18679,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/next/-/next-15.2.0.tgz", - "integrity": "sha512-VaiM7sZYX8KIAHBrRGSFytKknkrexNfGb8GlG6e93JqueCspuGte8i4ybn8z4ww1x3f2uzY4YpTaBEW4/hvsoQ==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.3.tgz", + "integrity": "sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==", "license": "MIT", "dependencies": { - "@next/env": "15.2.0", + "@next/env": "15.2.3", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -18699,14 +18699,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.2.0", - "@next/swc-darwin-x64": "15.2.0", - "@next/swc-linux-arm64-gnu": "15.2.0", - "@next/swc-linux-arm64-musl": "15.2.0", - "@next/swc-linux-x64-gnu": "15.2.0", - "@next/swc-linux-x64-musl": "15.2.0", - "@next/swc-win32-arm64-msvc": "15.2.0", - "@next/swc-win32-x64-msvc": "15.2.0", + "@next/swc-darwin-arm64": "15.2.3", + "@next/swc-darwin-x64": "15.2.3", + "@next/swc-linux-arm64-gnu": "15.2.3", + "@next/swc-linux-arm64-musl": "15.2.3", + "@next/swc-linux-x64-gnu": "15.2.3", + "@next/swc-linux-x64-musl": "15.2.3", + "@next/swc-win32-arm64-msvc": "15.2.3", + "@next/swc-win32-x64-msvc": "15.2.3", "sharp": "^0.33.5" }, "peerDependencies": { From a42315ec77e9bbde1e366a429b48d9f2998b7d53 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 22 Mar 2025 09:41:18 -0400 Subject: [PATCH 0346/1385] feat(learn): Collecting code coverage (#7006) * feat(learn): Collecting code coverage * add links Signed-off-by: Aviv Keller <38299977+RedYetiDev@users.noreply.github.com> * fix coverage command Co-authored-by: Michael Esteban <mickel13@gmail.com> Signed-off-by: Aviv Keller <38299977+RedYetiDev@users.noreply.github.com> * fixup! add run() API support Signed-off-by: Aviv Keller <redyetidev@gmail.com> * fix formatting * fix formatting --------- Signed-off-by: Aviv Keller <38299977+RedYetiDev@users.noreply.github.com> Signed-off-by: Aviv Keller <redyetidev@gmail.com> Co-authored-by: RedYetiDev <38299977+RedYetiDev@users.noreply.github.com> Co-authored-by: Michael Esteban <mickel13@gmail.com> Co-authored-by: Aviv Keller <redyetidev@gmail.com> --- apps/site/navigation.json | 4 + .../test-runner/collecting-code-coverage.md | 325 ++++++++++++++++++ packages/i18n/locales/en.json | 3 +- 3 files changed, 331 insertions(+), 1 deletion(-) create mode 100644 apps/site/pages/en/learn/test-runner/collecting-code-coverage.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index fd6650fe4ff5e..87faeab6e3cfa 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -396,6 +396,10 @@ "mocking": { "link": "/learn/test-runner/mocking", "label": "components.navigation.learn.testRunner.links.mocking" + }, + "collectingCodeCoverage": { + "link": "/learn/test-runner/collecting-code-coverage", + "label": "components.navigation.learn.testRunner.links.collectingCodeCoverage" } } } diff --git a/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md b/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md new file mode 100644 index 0000000000000..c6fc6d55340a0 --- /dev/null +++ b/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md @@ -0,0 +1,325 @@ +--- +title: Collecting code coverage in Node.js +layout: learn +authors: RedYetiDev +--- + +# Collecting code coverage in Node.js + +Node.js provides built-in support for code coverage through its test runner, which can be enabled using the [`--experimental-code-coverage`](https://nodejs.org/api/cli.html#--experimental-test-coverage) flag. + +If using the `run()` API, the `coverage` option must be set to `true`. For more information on the `run()` API, see [the `node:test` documentation](https://nodejs.org/docs/latest/api/test.html#runoptions). + +## What is code coverage? + +Code coverage is a metric for test runners that gauges how much of a program’s source code is executed during testing. It reveals which portions of the codebase are tested and which are not, helping to pinpoint gaps in the test suite. This ensures more comprehensive testing of the software and minimizes the risk of undetected bugs. Typically expressed as a percentage, higher code coverage percentages indicate more thorough test coverage. For a more detailed explanation of code coverage, you can refer to the ["Code coverage" Wikipedia article](https://en.wikipedia.org/wiki/Code_coverage). + +## Basic coverage reporting + +Let's walk through a simple example to demonstrate how code coverage works in Node.js. + +> **Note:** This example, and all other ones in this file, are written using CommonJS. If you are unfamiliar with this concept, please read the [CommonJS Modules](https://nodejs.org/docs/latest/api/modules.html) documentation. + +```cjs displayName="main.js" +function add(a, b) { + return a + b; +} + +function isEven(num) { + return num % 2 === 0; +} + +function multiply(a, b) { + return a * b; +} + +module.exports = { add, isEven, multiply }; +``` + +```cjs displayName="main.test.js" +const { add, isEven } = require('./main.js'); +const { test } = require('node:test'); + +test('add() should add two numbers', t => { + t.assert.strictEqual(add(1, 2), 3); +}); + +test('isEven() should report whether a number is even', t => { + t.assert.ok(isEven(0)); +}); +``` + +In the module, we have three functions: `add`, `isEven`, and `multiply`. + +In the test file, we are testing the `add()` and `isEven()` functions. Notice that the `multiply()` function is not covered by any tests. + +To collect code coverage while running your tests, see the following snippets: + +```bash displayName="CLI" +node --experimental-test-coverage --test main.test.js +``` + +```js displayName="run()" +run({ files: ['main.test.js'], coverage: true }); +``` + +After running the tests, you'll receive a report that looks something like this: + +```text displayName="Coverage Report" +✔ add() should add two numbers (1.505987ms) +✔ isEven() should report whether a number is even (0.175859ms) +ℹ tests 2 +ℹ suites 0 +ℹ pass 2 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 59.480373 +ℹ start of coverage report +ℹ ------------------------------------------------------------- +ℹ file | line % | branch % | funcs % | uncovered lines +ℹ ------------------------------------------------------------- +ℹ main.js | 76.92 | 100.00 | 66.67 | 9-11 +ℹ main.test.js | 100.00 | 100.00 | 100.00 | +ℹ ------------------------------------------------------------- +ℹ all files | 86.96 | 100.00 | 80.00 | +ℹ ------------------------------------------------------------- +ℹ end of coverage report +``` + +The coverage report provides a breakdown of how much of your code is covered by tests: + +- **Line Coverage**: The percentage of lines executed during the tests. +- **Branch Coverage**: The percentage of code branches (like if-else statements) tested. +- **Function Coverage**: The percentage of functions that have been invoked during testing. + +In this example: + +- `main.js` shows 76.92% line coverage and 66.67% function coverage because the `multiply()` function was not tested. The uncovered lines (9-11) correspond to this function. +- `main.test.js` shows 100% coverage across all metrics, indicating that the tests themselves were fully executed. + +## Including and excluding + +When working on applications, you might encounter situations where certain files or lines of code need to be excluded. + +Node.js provides mechanisms to handle this, including the use of comments to ignore specific code sections and the CLI to exclude entire patterns. + +### Using comments + +```cjs displayName="main.js" +function add(a, b) { + return a + b; +} + +function isEven(num) { + return num % 2 === 0; +} + +/* node:coverage ignore next 3 */ +function multiply(a, b) { + return a * b; +} + +module.exports = { add, isEven, multiply }; +``` + +```text displayName="Coverage Report" +✔ add() should add two numbers (1.430634ms) +✔ isEven() should report whether a number is even (0.202118ms) +ℹ tests 2 +ℹ suites 0 +ℹ pass 2 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 60.507104 +ℹ start of coverage report +ℹ ------------------------------------------------------------- +ℹ file | line % | branch % | funcs % | uncovered lines +ℹ ------------------------------------------------------------- +ℹ main.js | 100.00 | 100.00 | 100.00 | +ℹ main.test.js | 100.00 | 100.00 | 100.00 | +ℹ ------------------------------------------------------------- +ℹ all files | 100.00 | 100.00 | 100.00 | +ℹ ------------------------------------------------------------- +ℹ end of coverage report +``` + +When reporting coverage with this modified `main.js` file, the report will now show 100% coverage across all metrics. This is because the uncovered lines (9-11) have been ignored. + +There are multiple ways to ignore sections of code using comments. + +```cjs displayName="ignore next" +function add(a, b) { + return a + b; +} + +function isEven(num) { + return num % 2 === 0; +} + +/* node:coverage ignore next 3 */ +function multiply(a, b) { + return a * b; +} + +module.exports = { add, isEven, multiply }; +``` + +```cjs displayName="ignore next" +function add(a, b) { + return a + b; +} + +function isEven(num) { + return num % 2 === 0; +} + +/* node:coverage ignore next */ +function multiply(a, b) { + /* node:coverage ignore next */ + return a * b; + /* node:coverage ignore next */ +} + +module.exports = { add, isEven, multiply }; +``` + +```cjs displayName="disable" +function add(a, b) { + return a + b; +} + +function isEven(num) { + return num % 2 === 0; +} + +/* node:coverage disable */ +function multiply(a, b) { + return a * b; +} +/* node:coverage enable */ + +module.exports = { add, isEven, multiply }; +``` + +Each of these different methods will produce the same report, with 100% code coverage across all metrics. + +### Using the CLI + +Node.js offers two CLI arguments for managing the inclusion or exclusion of specific files in a coverage report. + +The [`--test-coverage-include`](https://nodejs.org/api/cli.html#--test-coverage-include) flag (`coverageIncludeGlobs` in the `run()` API) restricts the coverage to files that match the provided glob pattern. By default, files in the `/node_modules/` directory are excluded, but this flag allows you to explicitly include them. + +The [`--test-coverage-exclude`](https://nodejs.org/api/cli.html#--test-coverage-exclude) flag (`coverageExcludeGlobs` in the `run()` API) omits files that match the given glob pattern from the coverage report. + +These flags can be used multiple times, and when both are used together, files must adhere to the inclusion rules, while also avoiding the exclusion rules. + +```text displayName="Directory Structure" +. +├── main.test.js +├── src +│   ├── age.js +│   └── name.js +``` + +```text displayName="Coverage Report" +ℹ start of coverage report +ℹ ------------------------------------------------------------- +ℹ file | line % | branch % | funcs % | uncovered lines +ℹ ------------------------------------------------------------- +ℹ main.test.js | 100.00 | 100.00 | 100.00 | +ℹ src/age.js | 45.45 | 100.00 | 0.00 | 3-5 7-9 +ℹ src/name.js | 100.00 | 100.00 | 100.00 | +ℹ ------------------------------------------------------------- +ℹ all files | 88.68 | 100.00 | 75.00 | +ℹ ------------------------------------------------------------- +ℹ end of coverage report +``` + +`src/age.js` has less-than-optimal coverage in the report above, but with the `--test-coverage-exclude` flag (`coverageExcludeGlobs` in the `run()` API), it can be excluded from the report entirely. + +```bash displayName="CLI" +node --experimental-test-coverage --test-coverage-exclude=src/age.js --test main.test.js +``` + +```js displayName="run()" +run({ + files: ['main.test.js'], + coverage: true, + coverageExclude: ['src/age.js'], +}); +``` + +```text displayName="New coverage report" +ℹ start of coverage report +ℹ ------------------------------------------------------------- +ℹ file | line % | branch % | funcs % | uncovered lines +ℹ ------------------------------------------------------------- +ℹ main.test.js | 100.00 | 100.00 | 100.00 | +ℹ src/name.js | 100.00 | 100.00 | 100.00 | +ℹ ------------------------------------------------------------- +ℹ all files | 100.00 | 100.00 | 100.00 | +ℹ ------------------------------------------------------------- +ℹ end of coverage report +``` + +Our test file is also included in this coverage report, but we only want JavaScript files in the `src/` directory. The `--test-coverage-include` flag (`coverageIncludeGlobs` in the `run()` API) can be used in this case. + +```bash displayName="CLI" +node --experimental-test-coverage --test-coverage-include=src/*.js --test main.test.js +``` + +```js displayName="run()" +run({ files: ['main.test.js'], coverage: true, coverageInclude: ['src/*.js'] }); +``` + +```text displayName="New coverage report" +ℹ start of coverage report +ℹ ------------------------------------------------------------ +ℹ file | line % | branch % | funcs % | uncovered lines +ℹ ------------------------------------------------------------ +ℹ src/age.js | 45.45 | 100.00 | 0.00 | 3-5 7-9 +ℹ src/name.js | 100.00 | 100.00 | 100.00 | +ℹ ------------------------------------------------------------ +ℹ all files | 72.73 | 100.00 | 66.67 | +ℹ ------------------------------------------------------------ +ℹ end of coverage report +``` + +## Thresholds + +By default, when all tests pass, Node.js exits with code `0`, which indicates a successful execution. However, the coverage report can be configured to exit with code `1` when coverage is failing. + +Node.js currently supports thresholds for all three of the coverages supported: + +- [`--test-coverage-lines`](https://nodejs.org/api/cli.html#--test-coverage-linesthreshold) (`lineCoverage` in the `run()` API) for line coverage. +- [`--test-coverage-branches`](https://nodejs.org/api/cli.html#--test-coverage-branchesthreshold) (`branchCoverage` in the `run()` API) for branch coverage. +- [`--test-coverage-functions`](https://nodejs.org/api/cli.html#--test-coverage-functionsthreshold) (`functionCoverage` in the `run()` API) for function coverage. + +If you wanted to require the previous example to have line coverage >= 90%, you could use the `--test-coverage-lines=90` flag (`lineCoverage: 90` in the `run()` API). + +```bash displayName="CLI" +node --experimental-test-coverage --test-coverage-lines=90 --test main.test.js +``` + +```js displayName="run()" +run({ files: ['main.test.js'], coverage: true, lineCoverage: 90 }); +``` + +```text displayName="Coverage Report" +ℹ start of coverage report +ℹ ------------------------------------------------------------- +ℹ file | line % | branch % | funcs % | uncovered lines +ℹ ------------------------------------------------------------- +ℹ main.test.js | 100.00 | 100.00 | 100.00 | +ℹ src/age.js | 45.45 | 100.00 | 0.00 | 3-5 7-9 +ℹ src/name.js | 100.00 | 100.00 | 100.00 | +ℹ ------------------------------------------------------------- +ℹ all files | 88.68 | 100.00 | 75.00 | +ℹ ------------------------------------------------------------- +ℹ end of coverage report +ℹ Error: 88.68% line coverage does not meet threshold of 90%. +``` diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 8f48727af4695..ef968567df4bc 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -119,7 +119,8 @@ "testRunner": "Test Runner", "introduction": "Discovering Node.js's test runner", "usingTestRunner": "Using Node.js's test runner", - "mocking": "Mocking in tests" + "mocking": "Mocking in tests", + "collectingCodeCoverage": "Collecting code coverage in Node.js" } } }, From 8eba3da5250f25ac4395956d44124fc86a695954 Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Mon, 24 Mar 2025 16:55:43 +0100 Subject: [PATCH 0347/1385] chore: made changes to get-involved (#7563) * chore: made chances to get-involved Signed-off-by: Claudio W. <cwunder@gnome.org> * Apply suggestions from code review Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Claudio W. <cwunder@gnome.org> --------- Signed-off-by: Claudio W. <cwunder@gnome.org> Co-authored-by: Aviv Keller <me@aviv.sh> --- .../site/pages/en/about/get-involved/index.md | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/apps/site/pages/en/about/get-involved/index.md b/apps/site/pages/en/about/get-involved/index.md index 3932f03924c1c..e1c13de78bf64 100644 --- a/apps/site/pages/en/about/get-involved/index.md +++ b/apps/site/pages/en/about/get-involved/index.md @@ -5,31 +5,29 @@ layout: about # Get Involved -If you are interested in getting involved with the Node.js community, there are many ways to do so. The Node.js project is a large and diverse community, and there are many ways to contribute, beyond just writing code. +If you are interested in getting involved with the Node.js community, there are many ways to do so. The Node.js project is a large and diverse community with many ways to contribute beyond just writing code. ## Community Discussion -- The [Node.js official Discord server](/discord) is a place to chat with other Node.js developers and getting official news from the Node.js project. -- The [GitHub issues list](https://github.com/nodejs/node/issues) is the place for discussion of Node.js core features and if you have questions about Node.js, you can use the [github discussions](https://github.com/orgs/nodejs/discussions). -- The [`nodejs/help`](https://github.com/nodejs/help/issues) repository is the place to ask questions about Node.js. -- The official Node.js Twitter account is [nodejs](https://twitter.com/nodejs). -- The [Node.js project calendar](https://nodejs.org/calendar) with all public team meetings. +- The [`nodejs/node` GitHub repository](https://github.com/nodejs/node/issues) is the place to discuss Node.js core features and reporting issues. +- The [`nodejs/help` GitHub repository](https://github.com/nodejs/help/issues) is the official place to ask questions about Node.js. +- Node.js's [official Discord server](/discord) is a place to chat with other Node.js developers and get official news from the Node.js project. +- Node.js's [project calendar](https://nodejs.org/calendar) with all public Node.js team meetings. ## Learning Materials If you are looking to learn more about Node.js, there are many resources available to you. -- [Official Learn section](https://nodejs.org/en/learn/) of the Node.js website. -- [Official API reference documentation](https://nodejs.org/api/). -- [NodeSchool.io](https://nodeschool.io/) will teach you Node.js concepts via interactive command-line games. -- [Stack Overflow Node.js tag](https://stackoverflow.com/questions/tagged/node.js) collects new information every day. -- [The DEV Community Node.js tag](https://dev.to/t/node) is a place to share Node.js projects, articles and tutorials as well as start discussions and ask for feedback on Node.js-related topics. Developers of all skill-levels are welcome to take part. -- [Reddit Node.js community](https://www.reddit.com/r/node) is a place to share Node.js projects, articles and tutorials as well as start discussions and ask for feedback on Node.js-related topics. Developers of all skill-levels are welcome to take part. +- Node.js's [official learning materials](https://nodejs.org/en/learn/). +- Node.js's [official API reference documentation](https://nodejs.org/api/). +- [NodeSchool.io](https://nodeschool.io/) teaches Node.js concepts via interactive command-line games. +- [StackOverflow's Node.js tag](https://stackoverflow.com/questions/tagged/node.js) contains a large number of threads with helpful resources. +- [The DEV Community Node.js's tag](https://dev.to/t/node) contains articles and content related to Node.js. ## Unofficial Discussion Areas -If you are looking for a more informal place to discuss Node.js, there are several unofficial discussion areas. -Please note that these are not officially endorsed by the Node.js project. Also follow their respective code of conduct/rules. +There are several unofficial discussion areas if you are looking for a more informal place to discuss Node.js. +Please note that the Node.js project does not officially endorse these. Please follow their respective codes of conduct/rules. - [Node Slackers](https://www.nodeslackers.com/) is a Node.js-focused Slack community. - [OpenJSF Slack](https://slack-invite.openjsf.org/) is a Slack workspace for the OpenJS Foundation. There are several channels related to Node.js. _(channels prefixed by `#nodejs-` are related to the project)_ From 435becbf26727c9034e22a96fe627a2e422085ec Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Mon, 24 Mar 2025 18:59:12 -0400 Subject: [PATCH 0348/1385] feat(ui): add ui-components package (#7401) * feat(ui): add ui-components package * fixup! feat(ui): add ui-components package * fixup! fixup! feat(ui): add ui-components package * allow manual deployment of linting * Fix indentation in COLLABORATOR_GUIDE.md * resolve reviews * undo allowing manual deployment --- .github/workflows/lint-and-tests.yml | 11 +- COLLABORATOR_GUIDE.md | 102 +++-- apps/site/.storybook/main.ts | 75 ---- apps/site/.stylelintignore | 3 - .../next-data/og/[category]/[title]/route.tsx | 6 +- .../Blog/BlogHeader/index.stories.tsx | 23 - .../BlogPostCard/__tests__/index.test.mjs | 2 +- .../BlogPostCard/index.module.css | 0 .../{Common => Blog}/BlogPostCard/index.tsx | 2 +- apps/site/components/Common/ActiveLink.tsx | 14 + .../Common/AvatarGroup/Avatar/index.tsx | 61 --- .../AvatarGroup/Overlay/index.stories.tsx | 21 - .../components/Common/AvatarGroup/index.tsx | 80 ---- .../Common/Blockquote/index.module.css | 27 -- .../Common/BlogPostCard/index.stories.tsx | 35 -- .../BreadcrumbItem/index.module.css | 39 -- .../BreadcrumbLink/index.module.css | 20 - .../BreadcrumbRoot/index.module.css | 7 - apps/site/components/Common/Button.tsx | 12 + apps/site/components/Common/CodeBox.tsx | 36 ++ .../site/components/Common/CodeTabs/index.tsx | 41 -- apps/site/components/Common/CrossLink.tsx | 19 + apps/site/components/Common/LinkTabs.tsx | 15 + .../components/Common/NodejsLogo/index.tsx | 16 - apps/site/components/Common/Pagination.tsx | 30 ++ .../Containers/Footer/index.stories.tsx | 10 - .../components/Containers/Footer/index.tsx | 62 --- .../components/Containers/NavBar/index.tsx | 109 ----- .../Containers/Sidebar/SidebarGroup/index.tsx | 24 - .../Sidebar/SidebarItem/index.module.css | 33 -- .../DownloadButton/index.stories.tsx | 30 -- .../Release/InstallationMethodDropdown.tsx | 2 +- .../Release/OperatingSystemDropdown.tsx | 2 +- .../Release/PackageManagerDropdown.tsx | 2 +- .../Downloads/Release/PlatformDropdown.tsx | 2 +- .../Release/PrebuiltDownloadButtons.tsx | 2 +- .../Downloads/Release/ReleaseCodeBox.tsx | 4 +- .../Downloads/Release/VersionDropdown.tsx | 2 +- .../Icons/InstallationMethod/FNM.tsx | 99 ---- .../Icons/InstallationMethod/index.ts | 9 - .../components/Icons/OperatingSystem/index.ts | 6 - .../components/Icons/PackageManager/index.ts | 5 - .../MDX/Calendar/Event/index.stories.tsx | 18 - .../components/MDX/CodeBox/index.stories.tsx | 47 -- .../components/MDX/CodeTabs/index.stories.tsx | 56 --- apps/site/components/MDX/CodeTabs/index.tsx | 10 +- .../__design__/node-logos.stories.tsx | 60 --- .../__design__/package-manager.stories.tsx | 15 - .../__design__/platform-logos.stories.tsx | 29 -- .../__design__/social-logos.stories.tsx | 31 -- .../components/__design__/table.stories.tsx | 62 --- apps/site/components/withAvatarGroup.tsx | 10 +- apps/site/components/withBadge.tsx | 10 +- apps/site/components/withBanner.tsx | 13 +- apps/site/components/withBlogCategories.tsx | 2 +- apps/site/components/withBreadcrumbs.tsx | 16 +- apps/site/components/withFooter.tsx | 25 +- apps/site/components/withMetaBar.tsx | 29 +- apps/site/components/withNavBar.tsx | 61 ++- apps/site/components/withNodejsLogo.tsx | 15 +- .../components/withProgressionSidebar.tsx | 25 +- apps/site/components/withRouterSelect.tsx | 2 +- apps/site/components/withSidebar.tsx | 22 +- apps/site/eslint.config.js | 7 +- apps/site/layouts/GlowingBackdrop.tsx | 2 +- apps/site/layouts/Post.tsx | 2 +- apps/site/next.mdx.use.client.mjs | 3 +- apps/site/package.json | 21 +- apps/site/providers/notificationProvider.tsx | 3 +- apps/site/styles/effects.css | 13 - apps/site/styles/index.css | 4 +- apps/site/styles/markdown.css | 4 - apps/site/tailwind.config.ts | 187 +------- apps/site/tsconfig.json | 4 +- apps/site/turbo.json | 17 +- apps/site/util/downloadUtils.tsx | 8 +- package-lock.json | 421 +++++++++++++++--- package.json | 1 + packages/ui-components/.postcssrc.json | 11 + .../ui-components}/.storybook/constants.ts | 0 packages/ui-components/.storybook/main.ts | 34 ++ .../.storybook/preview-head.html | 0 .../ui-components}/.storybook/preview.tsx | 19 +- packages/ui-components/.stylelintignore | 1 + packages/ui-components/.stylelintrc.mjs | 46 ++ .../Common/AlertBox/index.module.css | 0 .../Common/AlertBox/index.stories.tsx | 2 +- .../ui-components}/Common/AlertBox/index.tsx | 0 .../AvatarGroup/Avatar/index.module.css | 0 .../AvatarGroup/Avatar/index.stories.tsx | 7 +- .../Common/AvatarGroup/Avatar/index.tsx | 76 ++++ .../AvatarGroup/Overlay/index.module.css | 0 .../AvatarGroup/Overlay/index.stories.tsx | 33 ++ .../Common/AvatarGroup/Overlay/index.tsx | 10 +- .../AvatarGroup/__tests__/index.test.mjs | 22 +- .../Common/AvatarGroup/index.module.css | 0 .../Common/AvatarGroup/index.stories.tsx | 10 +- .../Common/AvatarGroup/index.tsx | 90 ++++ .../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 +- .../BaseActiveLink}/__tests__/index.test.mjs | 23 - .../Common/BaseActiveLink}/index.tsx | 24 +- .../Common/BaseButton}/index.module.css | 0 .../Common/BaseButton}/index.stories.tsx | 8 +- .../Common/BaseButton}/index.tsx | 25 +- .../Common/BaseCodeBox}/index.module.css | 0 .../Common/BaseCodeBox}/index.stories.tsx | 21 +- .../Common/BaseCodeBox}/index.tsx | 78 ++-- .../Common/BaseCrossLink}/index.module.css | 0 .../Common/BaseCrossLink}/index.stories.tsx | 8 +- .../Common/BaseCrossLink}/index.tsx | 31 +- .../Common/BaseLinkTabs}/index.module.css | 0 .../Common/BaseLinkTabs}/index.stories.tsx | 9 +- .../Common/BaseLinkTabs}/index.tsx | 23 +- .../BasePagination}/Ellipsis/index.module.css | 0 .../Ellipsis/index.stories.tsx | 2 +- .../Common/BasePagination}/Ellipsis/index.tsx | 0 .../__tests__/index.test.mjs | 2 +- .../PaginationListItem/index.module.css | 0 .../PaginationListItem/index.stories.tsx | 2 +- .../PaginationListItem/index.tsx | 15 +- .../Common/BasePagination}/PrevNextArrow.tsx | 0 .../BasePagination}/__tests__/index.test.mjs | 23 +- .../Common/BasePagination}/index.module.css | 0 .../Common/BasePagination}/index.stories.tsx | 16 +- .../Common/BasePagination}/index.tsx | 45 +- .../BasePagination}/useGetPageElements.tsx | 27 +- .../Common/Blockquote/index.module.css | 11 + .../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 | 25 ++ .../Breadcrumbs/BreadcrumbItem/index.tsx | 0 .../BreadcrumbLink/index.module.css | 11 + .../Breadcrumbs/BreadcrumbLink/index.tsx | 10 +- .../BreadcrumbRoot/index.module.css | 3 + .../Breadcrumbs/BreadcrumbRoot/index.tsx | 0 .../BreadcrumbTruncatedItem/index.tsx | 2 +- .../Common/Breadcrumbs/index.stories.tsx | 2 +- .../Common/Breadcrumbs/index.tsx | 23 +- .../Common/CodeTabs/index.module.css | 0 .../Common/CodeTabs/index.stories.tsx | 25 +- .../ui-components/Common/CodeTabs/index.tsx | 16 + .../Common/GlowingBackdrop/index.module.css | 0 .../Common/GlowingBackdrop/index.stories.tsx | 2 +- .../Common/GlowingBackdrop/index.tsx | 2 +- .../Common/LanguageDropDown/index.module.css | 0 .../Common/LanguageDropDown/index.stories.tsx | 2 +- .../Common/LanguageDropDown/index.tsx | 12 +- .../Common/NodejsLogo/index.module.css | 0 .../Common/NodejsLogo/index.stories.tsx | 2 +- .../ui-components/Common/NodejsLogo/index.tsx | 26 ++ .../Common/Notification/index.module.css | 0 .../Common/Notification/index.stories.tsx | 2 +- .../Common/Notification/index.tsx | 0 .../Common/Preview/index.module.css | 0 .../Common/Preview/index.stories.tsx | 2 +- .../ui-components}/Common/Preview/index.tsx | 8 +- .../ProgressionSidebarGroup/index.module.css | 0 .../ProgressionSidebarGroup/index.tsx | 17 +- .../ProgressionSidebarIcon/index.tsx | 0 .../ProgressionSidebarItem/index.module.css | 0 .../ProgressionSidebarItem/index.tsx | 17 +- .../ProgressionSidebar/index.module.css | 0 .../ProgressionSidebar/index.stories.tsx | 2 +- .../Common/ProgressionSidebar/index.tsx | 34 +- .../Common/Select/__tests__/index.test.mjs | 0 .../Common/Select/index.module.css | 0 .../Common/Select/index.stories.tsx | 4 +- .../ui-components}/Common/Select/index.tsx | 5 +- .../Common/Skeleton/index.module.css | 3 +- .../ui-components}/Common/Skeleton/index.tsx | 0 .../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 | 0 .../Common/ThemeToggle/index.stories.tsx | 2 +- .../Common/ThemeToggle/index.tsx | 11 +- .../Common/Tooltip/index.module.css | 0 .../Common/Tooltip/index.stories.tsx | 5 +- .../ui-components}/Common/Tooltip/index.tsx | 0 .../Containers/Footer/index.module.css | 0 .../Containers/Footer/index.stories.tsx | 27 ++ .../ui-components/Containers/Footer/index.tsx | 95 ++++ .../MetaBar/__tests__/index.test.mjs | 0 .../Containers/MetaBar/index.module.css | 0 .../Containers/MetaBar/index.stories.tsx | 33 +- .../Containers/MetaBar/index.tsx | 31 +- .../NavBar/NavItem/index.module.css | 0 .../NavBar/NavItem/index.stories.tsx | 3 +- .../Containers/NavBar/NavItem/index.tsx | 14 +- .../Containers/NavBar/index.module.css | 0 .../Containers/NavBar/index.stories.tsx | 17 +- .../ui-components/Containers/NavBar/index.tsx | 94 ++++ .../Sidebar/SidebarGroup/index.module.css | 0 .../Sidebar/SidebarGroup/index.stories.tsx | 2 +- .../Containers/Sidebar/SidebarGroup/index.tsx | 33 ++ .../Sidebar/SidebarItem}/index.module.css | 0 .../Sidebar/SidebarItem/index.stories.tsx | 2 +- .../Containers/Sidebar/SidebarItem/index.tsx | 13 +- .../Containers/Sidebar/index.module.css | 29 ++ .../Containers/Sidebar/index.stories.tsx | 4 +- .../Containers/Sidebar/index.tsx | 31 +- .../Icons/HexagonGrid.stories.tsx | 2 +- .../ui-components}/Icons/HexagonGrid.tsx | 0 .../Icons/InstallationMethod/Choco.tsx | 0 .../Icons/InstallationMethod/Devbox.tsx | 0 .../Icons/InstallationMethod/Docker.tsx | 0 .../Icons/InstallationMethod/FNM.tsx | 132 ++++++ .../Icons/InstallationMethod/Homebrew.tsx | 0 .../Icons/InstallationMethod/NVM.tsx | 0 .../Icons/InstallationMethod/Volta.tsx | 0 .../Icons/InstallationMethod/index.ts | 9 + .../ui-components/Icons/Logos/JsGreen.tsx | 4 +- .../ui-components/Icons/Logos/JsWhite.tsx | 6 +- .../ui-components}/Icons/Logos/Nodejs.tsx | 12 +- .../Icons/Logos/NodejsStackedBlack.tsx | 4 +- .../Icons/Logos/NodejsStackedDark.tsx | 4 +- .../Icons/Logos/NodejsStackedLight.tsx | 4 +- .../Icons/Logos/NodejsStackedWhite.tsx | 4 +- packages/ui-components/Icons/Logos/index.ts | 17 + .../Icons/OperatingSystem/AIX.tsx | 0 .../Icons/OperatingSystem/Apple.tsx | 0 .../Icons/OperatingSystem/Linux.tsx | 0 .../Icons/OperatingSystem/Microsoft.tsx | 0 .../Icons/OperatingSystem/index.ts | 6 + .../Icons/PackageManager/Npm.tsx | 0 .../Icons/PackageManager/Pnpm.tsx | 0 .../Icons/PackageManager/Yarn.tsx | 0 .../Icons/PackageManager/index.ts | 5 + .../ui-components}/Icons/Social/Bluesky.tsx | 4 +- .../ui-components}/Icons/Social/Discord.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 +- packages/ui-components/Icons/Social/index.ts | 9 + .../__design__/colors.stories.tsx | 0 .../__design__/effects.stories.tsx | 0 .../__design__/font-family.stories.tsx | 0 .../__design__/list.stories.tsx | 0 .../__design__/node-logos.stories.tsx | 61 +++ .../__design__/platform-logos.stories.tsx | 34 ++ .../__design__/social-logos.stories.tsx | 33 ++ .../__design__/table.stories.tsx | 52 +++ .../__design__/text.stories.tsx | 0 packages/ui-components/__mocks__/styleMock.js | 1 + packages/ui-components/eslint.config.js | 68 +++ packages/ui-components/global.d.ts | 4 + packages/ui-components/jest.config.mjs | 30 ++ packages/ui-components/package.json | 61 +++ packages/ui-components/styles/effects.css | 12 + packages/ui-components/styles/index.css | 12 + packages/ui-components/styles/markdown.css | 172 +++++++ packages/ui-components/tailwind.config.ts | 164 +++++++ packages/ui-components/tsconfig.json | 26 ++ packages/ui-components/turbo.json | 30 ++ packages/ui-components/types.ts | 25 ++ 266 files changed, 2884 insertions(+), 2014 deletions(-) delete mode 100644 apps/site/.storybook/main.ts delete mode 100644 apps/site/components/Blog/BlogHeader/index.stories.tsx rename apps/site/components/{Common => Blog}/BlogPostCard/__tests__/index.test.mjs (97%) rename apps/site/components/{Common => Blog}/BlogPostCard/index.module.css (100%) rename apps/site/components/{Common => Blog}/BlogPostCard/index.tsx (96%) create mode 100644 apps/site/components/Common/ActiveLink.tsx delete mode 100644 apps/site/components/Common/AvatarGroup/Avatar/index.tsx delete mode 100644 apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx delete mode 100644 apps/site/components/Common/AvatarGroup/index.tsx delete mode 100644 apps/site/components/Common/Blockquote/index.module.css delete mode 100644 apps/site/components/Common/BlogPostCard/index.stories.tsx delete mode 100644 apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css delete mode 100644 apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.module.css delete mode 100644 apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css create mode 100644 apps/site/components/Common/Button.tsx create mode 100644 apps/site/components/Common/CodeBox.tsx delete mode 100644 apps/site/components/Common/CodeTabs/index.tsx create mode 100644 apps/site/components/Common/CrossLink.tsx create mode 100644 apps/site/components/Common/LinkTabs.tsx delete mode 100644 apps/site/components/Common/NodejsLogo/index.tsx create mode 100644 apps/site/components/Common/Pagination.tsx delete mode 100644 apps/site/components/Containers/Footer/index.stories.tsx delete mode 100644 apps/site/components/Containers/Footer/index.tsx delete mode 100644 apps/site/components/Containers/NavBar/index.tsx delete mode 100644 apps/site/components/Containers/Sidebar/SidebarGroup/index.tsx delete mode 100644 apps/site/components/Containers/Sidebar/SidebarItem/index.module.css delete mode 100644 apps/site/components/Downloads/DownloadButton/index.stories.tsx delete mode 100644 apps/site/components/Icons/InstallationMethod/FNM.tsx delete mode 100644 apps/site/components/Icons/InstallationMethod/index.ts delete mode 100644 apps/site/components/Icons/OperatingSystem/index.ts delete mode 100644 apps/site/components/Icons/PackageManager/index.ts delete mode 100644 apps/site/components/MDX/Calendar/Event/index.stories.tsx delete mode 100644 apps/site/components/MDX/CodeBox/index.stories.tsx delete mode 100644 apps/site/components/MDX/CodeTabs/index.stories.tsx delete mode 100644 apps/site/components/__design__/node-logos.stories.tsx delete mode 100644 apps/site/components/__design__/package-manager.stories.tsx delete mode 100644 apps/site/components/__design__/platform-logos.stories.tsx delete mode 100644 apps/site/components/__design__/social-logos.stories.tsx delete mode 100644 apps/site/components/__design__/table.stories.tsx create mode 100644 packages/ui-components/.postcssrc.json rename {apps/site => packages/ui-components}/.storybook/constants.ts (100%) create mode 100644 packages/ui-components/.storybook/main.ts rename {apps/site => packages/ui-components}/.storybook/preview-head.html (100%) rename {apps/site => packages/ui-components}/.storybook/preview.tsx (50%) create mode 100644 packages/ui-components/.stylelintignore create mode 100644 packages/ui-components/.stylelintrc.mjs rename {apps/site/components => packages/ui-components}/Common/AlertBox/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/AlertBox/index.stories.tsx (96%) rename {apps/site/components => packages/ui-components}/Common/AlertBox/index.tsx (100%) 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 (66%) 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 (78%) rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/__tests__/index.test.mjs (59%) 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 (78%) create mode 100644 packages/ui-components/Common/AvatarGroup/index.tsx 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/Common/ActiveLink => packages/ui-components/Common/BaseActiveLink}/__tests__/index.test.mjs (63%) rename {apps/site/components/Common/ActiveLink => packages/ui-components/Common/BaseActiveLink}/index.tsx (60%) rename {apps/site/components/Common/Button => packages/ui-components/Common/BaseButton}/index.module.css (100%) rename {apps/site/components/Common/Button => packages/ui-components/Common/BaseButton}/index.stories.tsx (85%) rename {apps/site/components/Common/Button => packages/ui-components/Common/BaseButton}/index.tsx (79%) rename {apps/site/components/Common/CodeBox => packages/ui-components/Common/BaseCodeBox}/index.module.css (100%) rename {apps/site/components/Common/CodeBox => packages/ui-components/Common/BaseCodeBox}/index.stories.tsx (62%) rename {apps/site/components/Common/CodeBox => packages/ui-components/Common/BaseCodeBox}/index.tsx (70%) rename {apps/site/components/Common/CrossLink => packages/ui-components/Common/BaseCrossLink}/index.module.css (100%) rename {apps/site/components/Common/CrossLink => packages/ui-components/Common/BaseCrossLink}/index.stories.tsx (76%) rename {apps/site/components/Common/CrossLink => packages/ui-components/Common/BaseCrossLink}/index.tsx (54%) rename {apps/site/components/Common/LinkTabs => packages/ui-components/Common/BaseLinkTabs}/index.module.css (100%) rename {apps/site/components/Common/LinkTabs => packages/ui-components/Common/BaseLinkTabs}/index.stories.tsx (70%) rename {apps/site/components/Common/LinkTabs => packages/ui-components/Common/BaseLinkTabs}/index.tsx (65%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/Ellipsis/index.module.css (100%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/Ellipsis/index.stories.tsx (74%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/Ellipsis/index.tsx (100%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/PaginationListItem/__tests__/index.test.mjs (92%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/PaginationListItem/index.module.css (100%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/PaginationListItem/index.stories.tsx (87%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/PaginationListItem/index.tsx (75%) rename {apps/site/components/Common => packages/ui-components/Common/BasePagination}/PrevNextArrow.tsx (100%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/__tests__/index.test.mjs (89%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/index.module.css (100%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/index.stories.tsx (69%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/index.tsx (56%) rename {apps/site/components/Common/Pagination => packages/ui-components/Common/BasePagination}/useGetPageElements.tsx (79%) create mode 100644 packages/ui-components/Common/Blockquote/index.module.css 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%) create mode 100644 packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbItem/index.tsx (100%) create mode 100644 packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbLink/index.tsx (80%) create mode 100644 packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css 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 (65%) rename {apps/site/components => packages/ui-components}/Common/CodeTabs/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/CodeTabs/index.stories.tsx (78%) create mode 100644 packages/ui-components/Common/CodeTabs/index.tsx 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 (75%) rename {apps/site/components => packages/ui-components}/Common/LanguageDropDown/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/LanguageDropDown/index.stories.tsx (86%) rename {apps/site/components => packages/ui-components}/Common/LanguageDropDown/index.tsx (84%) 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%) create mode 100644 packages/ui-components/Common/NodejsLogo/index.tsx 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/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 (65%) rename {apps/site/components => packages/ui-components}/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx (58%) rename {apps/site/components => packages/ui-components}/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx (100%) rename {apps/site/components => packages/ui-components}/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx (52%) rename {apps/site/components => packages/ui-components}/Common/ProgressionSidebar/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/ProgressionSidebar/index.stories.tsx (95%) rename {apps/site/components => packages/ui-components}/Common/ProgressionSidebar/index.tsx (58%) 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 (94%) rename {apps/site/components => packages/ui-components}/Common/Select/index.tsx (97%) rename {apps/site/components => packages/ui-components}/Common/Skeleton/index.module.css (86%) rename {apps/site/components => packages/ui-components}/Common/Skeleton/index.tsx (100%) rename {apps/site/components => packages/ui-components}/Common/Tabs/__tests__/index.test.mjs (93%) 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%) rename {apps/site/components => packages/ui-components}/Common/ThemeToggle/index.module.css (100%) 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/Footer/index.module.css (100%) create mode 100644 packages/ui-components/Containers/Footer/index.stories.tsx create mode 100644 packages/ui-components/Containers/Footer/index.tsx rename {apps/site/components => packages/ui-components}/Containers/MetaBar/__tests__/index.test.mjs (100%) rename {apps/site/components => packages/ui-components}/Containers/MetaBar/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Containers/MetaBar/index.stories.tsx (71%) rename {apps/site/components => packages/ui-components}/Containers/MetaBar/index.tsx (67%) 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 (78%) 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 (64%) create mode 100644 packages/ui-components/Containers/NavBar/index.tsx rename {apps/site/components => packages/ui-components}/Containers/Sidebar/SidebarGroup/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Containers/Sidebar/SidebarGroup/index.stories.tsx (89%) create mode 100644 packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx rename {apps/site/components/Containers/Sidebar => packages/ui-components/Containers/Sidebar/SidebarItem}/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Containers/Sidebar/SidebarItem/index.stories.tsx (78%) rename {apps/site/components => packages/ui-components}/Containers/Sidebar/SidebarItem/index.tsx (56%) create mode 100644 packages/ui-components/Containers/Sidebar/index.module.css rename {apps/site/components => packages/ui-components}/Containers/Sidebar/index.stories.tsx (93%) rename {apps/site/components => packages/ui-components}/Containers/Sidebar/index.tsx (57%) 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 => packages/ui-components}/Icons/InstallationMethod/Choco.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/InstallationMethod/Devbox.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/InstallationMethod/Docker.tsx (100%) create mode 100644 packages/ui-components/Icons/InstallationMethod/FNM.tsx rename {apps/site/components => packages/ui-components}/Icons/InstallationMethod/Homebrew.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/InstallationMethod/NVM.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/InstallationMethod/Volta.tsx (100%) create mode 100644 packages/ui-components/Icons/InstallationMethod/index.ts 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%) create mode 100644 packages/ui-components/Icons/Logos/index.ts rename {apps/site/components => packages/ui-components}/Icons/OperatingSystem/AIX.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/OperatingSystem/Apple.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/OperatingSystem/Linux.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/OperatingSystem/Microsoft.tsx (100%) create mode 100644 packages/ui-components/Icons/OperatingSystem/index.ts rename {apps/site/components => packages/ui-components}/Icons/PackageManager/Npm.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/PackageManager/Pnpm.tsx (100%) rename {apps/site/components => packages/ui-components}/Icons/PackageManager/Yarn.tsx (100%) create mode 100644 packages/ui-components/Icons/PackageManager/index.ts rename {apps/site/components => packages/ui-components}/Icons/Social/Bluesky.tsx (90%) rename {apps/site/components => packages/ui-components}/Icons/Social/Discord.tsx (96%) 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/Icons/Social/index.ts 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%) 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/__design__/table.stories.tsx 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/eslint.config.js create mode 100644 packages/ui-components/global.d.ts create mode 100644 packages/ui-components/jest.config.mjs create mode 100644 packages/ui-components/package.json create mode 100644 packages/ui-components/styles/effects.css create mode 100644 packages/ui-components/styles/index.css create mode 100644 packages/ui-components/styles/markdown.css 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 create mode 100644 packages/ui-components/types.ts diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 4f1dacb2c68ad..86995c912fe6b 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -204,7 +204,7 @@ jobs: # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 uses: chromaui/action@30b6228aa809059d46219e0f556752e8672a7e26 with: - workingDir: apps/site + workingDir: packages/ui-components buildScriptName: storybook:build projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} exitOnceUploaded: true @@ -220,6 +220,9 @@ jobs: uses: MishaKav/jest-coverage-comment@d74238813c33e6ea20530ff91b5ea37953d11c91 # v1.0.27 with: title: 'Unit Test Coverage Report' - junitxml-path: ./apps/site/junit.xml - junitxml-title: Unit Test Report - coverage-summary-path: ./apps/site/coverage/coverage-summary.json + multiple-junitxml-files: | + @node-core/ui-components, ./packages/ui-components/junit.xml + @nodejs/website, ./apps/site/junit.xml + multiple-files: | + @node-core/ui-components, ./packages/ui-components/coverage/coverage-summary.json + @nodejs/website, ./apps/site/coverage/coverage-summary.json diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 00b0939cf28fd..00316821f8541 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -102,10 +102,10 @@ The Website also uses several other Open Source libraries (not limited to) liste Locations are subject to change. (If you are someone updating these paths, please document those changes here.) -- React Components are defined on `apps/site/components` +- React Components are defined on `apps/site/components` and `packages/ui-components` - React Templates are defined on `apps/site/layouts` -- Global Stylesheets are declared on `apps/site/styles` - - Styles are done with [PostCSS][] +- Global Stylesheets are declared on `packages/ui-components/styles` + - Styles are done with [PostCSS][] and [Tailwind][] - Public files are stored on `apps/site/public` - Static Images, JavaScript files, and others are stored within `apps/site/public/static` - Internationalisation is done on `apps/site/i18n` @@ -126,7 +126,7 @@ please document those changes here.) - Generation of build-time indexes such as blog data - Multi-Purpose Scripts are stored within `apps/site/scripts` - Such as Node.js Release Blog Post generation -- Storybook Configuration is done within `apps/site/.storybook` +- Storybook Configuration is done within `packages/ui-components/.storybook` - We use an almost out-of-the-box Storybook Experience with a few extra customisations ### Adding new Pages @@ -197,8 +197,6 @@ Finally, if you're unfamiliar with how to use Tailwind or how to use Tailwind wi - We discourage the usage of any plain CSS styles and tokens, when in doubt ask for help - We require that you define one Tailwind Token per line, just as shown on the example above, since this improves readability - Only write CSS within CSS Modules, avoid writing CSS within JavaScript files -- We recommend creating mixins for reusable animations, effects and more - - You can create Mixins within the `apps/site/styles/mixins` folder > \[!NOTE]\ > Tailwind is already configured for this repository. You don't need to import any Tailwind module within your CSS module.\ @@ -211,26 +209,76 @@ Finally, if you're unfamiliar with how to use Tailwind or how to use Tailwind wi ### Best practices when creating a Component -- All React Components should be placed within the `apps/site/components` folder. -- Each Component should be placed, whenever possible, within a sub-folder, which we call the "Domain" of the Component - - The domain represents where these Components belong to or where they will be used. - - For example, Components used within Article Pages or that are part of the structure of an Article or the Article Layouts, - should be placed within `apps/site/components/Article` -- Each component should have its folder with the name of the Component -- The structure of each component folder follows the following template: +- **All React components** should be placed within either `@node-core/ui-components` (for reusable components) or `apps/site/components` (for website-specific components). +- **Generic UI components** that are not tied to the website should be placed in the `@node-core/ui-components` package. + - These components should be **framework-agnostic** and must not rely on Next.js-specific features such as `usePathname()` or `useTranslations()`. + - If a component previously relied on Next.js, it should now accept these values as **props** instead. +- **Website-specific components** that rely on Next.js or are tied to the website should remain in `apps/site/components`. + - These components can use Next.js-specific hooks, API calls, or configurations. + - When using a generic UI component that requires Next.js functionality, pass it as a **prop** instead of modifying the component. +- **Each component** should be placed within a sub-folder, which we call the **"Domain"** of the component. + - The domain represents where the component belongs or where it will be used. + - For example, components used within article pages or related to the structure of an article should be placed within `@node-core/ui-components/Common/Article`. +- **Each component should have its own folder** with the name of the component. +- The structure of each component folder follows this template: + ```text - ComponentName - - index.tsx // the component itself - - index.module.css // all styles of the component are placed there - - index.stories.tsx // component Storybook stories - - __tests__ // component tests (such as unit tests, etc) - - index.test.mjs // unit tests should be done in ESM and not TypeScript + - index.tsx // The component itself + - index.module.css // Component-specific styles + - index.stories.tsx // Storybook stories (only for @node-core/ui-components) + - __tests__/ // Component tests (such as unit tests, etc.) + - index.test.mjs // Unit tests should be done in ESM, not TypeScript ``` -- React Hooks belonging to a single Component should be placed within the Component's folder - - If the Hook as a wider usability or can be used by other components, it should be placed in the root `hooks` folder. -- If the Component has "sub-components" they should follow the same philosophy as the Component itself. - - For example, if the Component `ComponentName` has a sub-component called `SubComponentName`, - then it should be placed within `ComponentName/SubComponentName` + +- **If a component requires Next.js features, it should be wrapped within `apps/site`** rather than being modified directly in `@node-core/ui-components`. + + - Example: A component that requires `usePathname()` should **not** call it directly inside `@node-core/ui-components`. Instead: + - The **base component** should accept `pathname` as a prop. + - The **wrapper component** in `apps/site` should call `usePathname()` and pass it to the base component. + + Example structure: + + - **Base Component (`@node-core/ui-components`)** + + ```tsx + const BaseComponent: FC<...> = ({ pathname, ariaLabel }) => { + return <... ariaLabel={ariaLabel}></...>; + }; + ``` + + - **Wrapper Component (`apps/site/components`)** + + ```tsx + const Component: FC<...> = (...) => { + const pathname = usePathname(); + const t = useTranslations(); + + return <BaseComponent pathname={pathname} ariaLabel={t('my.key')} />; + }; + ``` + + - **Importing Components:** + - **For website-specific functionality**, import the wrapper from `apps/site/components`. + - **For direct UI use cases**, import from `@node-core/ui-components`. + +- **Storybook is now a dependency of `@node-core/ui-components`** and should not be included in `apps/site`. + + - Storybook stories should be written only for components in `@node-core/ui-components`. + +- **React Hooks that belong to a single component should be placed within that component’s folder.** + + - If the hook has a **wider usability** or can be used by multiple components, it should be placed in the `apps/site/hooks` folder. + - These hooks should only exist in `apps/site`. + +- **If a component has sub-components, they should follow the same structure as the main component.** + - Example: If `ComponentName` has a sub-component called `SubComponentName`, it should be placed within: + ```text + - ComponentName/ + - index.tsx + - SubComponentName/ + - index.tsx + ``` #### How a new Component should look like when freshly created @@ -272,7 +320,7 @@ To add a new download installation method, follow these steps: - Add a new entry to the `INSTALL_METHODS` array. - Each entry should have the following properties: - - `iconImage`: The React component of the icon image for the installation method. This should be an SVG component stored within `apps/site/components/Icons/InstallationMethod` and must follow the other icon component references (being a `FC` supporting `SVGSVGElement` props). + - `iconImage`: The React component of the icon image for the installation method. This should be an SVG component stored within `@node-core/ui-components/Icons/InstallationMethod` and must follow the other icon component references (being a `FC` supporting `SVGSVGElement` props). - Don't forget to add it on the `index.tsx` file from the `InstallationMethod` folder. - `recommended`: A boolean indicating if this method is recommended. This property is available only for official installation methods. - `url`: The URL for the installation method. @@ -379,7 +427,7 @@ Each new feature or bug fix should be accompanied by a unit test (when deemed va We use [Jest][] as our test runner and [React Testing Library][] for our React unit tests. We also use [Storybook][] to document our components. -Each component should have a storybook story that documents the component's usage. +Components within `packages/ui-components` should have a storybook story that documents the component's usage. Visual Regression Testing is automatically done via [Chromatic](https://www.chromatic.com/) to ensure that Components are rendered correctly. @@ -407,7 +455,7 @@ They also allow Developers to preview Components and be able to test them manual ```tsx import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NameOfComponent from '@components/PathTo/YourComponent'; +import NameOfComponent from '@node-core/ui-components/PathTo/YourComponent'; type Story = StoryObj<typeof NameOfComponent>; type Meta = MetaObj<typeof NameOfComponent>; @@ -548,7 +596,7 @@ The Node.js Website uses Tailwind as a CSS Framework for crafting our React Comp #### Font Families on the Website We use `next/fonts` Open Sans as the default font for the Node.js Website. -The font is configured as a CSS variable and then configured on `tailwind.config.js` as the default font for the Website. +The font is configured as a CSS variable and then configured on `packages/ui-components/tailwind.config.ts` as the default font for the Website. #### Why we use RadixUI? diff --git a/apps/site/.storybook/main.ts b/apps/site/.storybook/main.ts deleted file mode 100644 index f6b01fc299b9a..0000000000000 --- a/apps/site/.storybook/main.ts +++ /dev/null @@ -1,75 +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: { - parser: { - syntax: 'typescript', - tsx: true, - }, - 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/image': join(mocksFolder, './next-image.mjs'), - '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/.stylelintignore b/apps/site/.stylelintignore index cb71469e033ce..a8600c22f4b77 100644 --- a/apps/site/.stylelintignore +++ b/apps/site/.stylelintignore @@ -10,8 +10,5 @@ public # Jest coverage -# Storybook -storybook-static - # Old Styles styles/old 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 844c9fa6753f5..effcd1719afc8 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'; @@ -37,7 +37,7 @@ export const GET = async (_: Request, props: StaticParams) => { <HexagonGrid style={{ background: gridBackground }} /> <div tw="absolute mx-auto flex max-w-xl flex-col text-center text-3xl font-semibold text-white"> - <JsIconWhite width={71} height={80} tw="mx-auto" /> + <JsWhiteIcon width={71} height={80} tw="mx-auto" /> <h2>{params.title.slice(0, 100)}</h2> </div> diff --git a/apps/site/components/Blog/BlogHeader/index.stories.tsx b/apps/site/components/Blog/BlogHeader/index.stories.tsx deleted file mode 100644 index 0e29b475119bc..0000000000000 --- a/apps/site/components/Blog/BlogHeader/index.stories.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import BlogHeader from '@/components/Blog/BlogHeader'; - -type Story = StoryObj<typeof BlogHeader>; -type Meta = MetaObj<typeof BlogHeader>; - -export const Default: Story = { - args: { - // See `@/site.json` for the `rssFeeds` object - category: 'all', - }, - decorators: [ - // We need to wrap to allow global styles to be applied (markdown styles) - Story => ( - <main> - <Story /> - </main> - ), - ], -}; - -export default { component: BlogHeader } as Meta; diff --git a/apps/site/components/Common/BlogPostCard/__tests__/index.test.mjs b/apps/site/components/Blog/BlogPostCard/__tests__/index.test.mjs similarity index 97% rename from apps/site/components/Common/BlogPostCard/__tests__/index.test.mjs rename to apps/site/components/Blog/BlogPostCard/__tests__/index.test.mjs index e4752d4b09dc9..3094ba35e9c03 100644 --- a/apps/site/components/Common/BlogPostCard/__tests__/index.test.mjs +++ b/apps/site/components/Blog/BlogPostCard/__tests__/index.test.mjs @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; -import BlogPostCard from '@/components/Common/BlogPostCard'; +import BlogPostCard from '@/components/Blog/BlogPostCard'; function renderBlogPostCard({ title = 'Blog post title', diff --git a/apps/site/components/Common/BlogPostCard/index.module.css b/apps/site/components/Blog/BlogPostCard/index.module.css similarity index 100% rename from apps/site/components/Common/BlogPostCard/index.module.css rename to apps/site/components/Blog/BlogPostCard/index.module.css diff --git a/apps/site/components/Common/BlogPostCard/index.tsx b/apps/site/components/Blog/BlogPostCard/index.tsx similarity index 96% rename from apps/site/components/Common/BlogPostCard/index.tsx rename to apps/site/components/Blog/BlogPostCard/index.tsx index 30815ad9ed62c..b99c1ac13a465 100644 --- a/apps/site/components/Common/BlogPostCard/index.tsx +++ b/apps/site/components/Blog/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 type { BlogCategory } from '@/types'; diff --git a/apps/site/components/Common/ActiveLink.tsx b/apps/site/components/Common/ActiveLink.tsx new file mode 100644 index 0000000000000..63f6b2f2e16eb --- /dev/null +++ b/apps/site/components/Common/ActiveLink.tsx @@ -0,0 +1,14 @@ +'use client'; + +import type { ActiveLocalizedLinkProps } from '@node-core/ui-components/Common/BaseActiveLink'; +import BaseActiveLink from '@node-core/ui-components/Common/BaseActiveLink'; +import type { FC } from 'react'; + +import Link from '@/components/Link'; +import { usePathname } from '@/navigation.mjs'; + +const ActiveLink: FC< + Omit<ActiveLocalizedLinkProps, 'pathname' | 'as'> +> = props => <BaseActiveLink pathname={usePathname()} as={Link} {...props} />; + +export default ActiveLink; 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 3e7f98724cb80..0000000000000 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import classNames from 'classnames'; -import Image from 'next/image'; -import type { HTMLAttributes } 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; -}; - -// @TODO: We temporarily removed the Avatar Radix UI primitive, since it was causing flashing -// during initial load and not being able to render nicely when images are already cached. -// @see https://github.com/radix-ui/primitives/pull/3008 -const Avatar = forwardRef< - HTMLSpanElement, - HTMLAttributes<HTMLSpanElement> & AvatarProps ->(({ image, nickname, name, fallback, url, size = 'small', ...props }, ref) => { - const Wrapper = url ? Link : 'div'; - - return ( - <span - {...props} - ref={ref} - className={classNames(styles.avatar, styles[size], props.className)} - > - <Wrapper - href={url || undefined} - target={url ? '_blank' : undefined} - className={styles.wrapper} - > - {image && ( - <Image - width={40} - height={40} - loading="lazy" - decoding="async" - src={image} - alt={name || nickname} - className={styles.item} - /> - )} - - {!image && ( - <span className={classNames(styles.item, styles[size])}> - {fallback} - </span> - )} - </Wrapper> - </span> - ); -}); - -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<typeof AvatarOverlay>; -type Meta = MetaObj<typeof AvatarOverlay>; - -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/AvatarGroup/index.tsx b/apps/site/components/Common/AvatarGroup/index.tsx deleted file mode 100644 index 2bacc71b8ab7b..0000000000000 --- a/apps/site/components/Common/AvatarGroup/index.tsx +++ /dev/null @@ -1,80 +0,0 @@ -'use client'; - -import classNames from 'classnames'; -import type { FC } from 'react'; -import { useState, useMemo, Fragment } from 'react'; - -import type { AvatarProps } from '@/components/Common/AvatarGroup/Avatar'; -import Avatar from '@/components/Common/AvatarGroup/Avatar'; -import avatarstyles from '@/components/Common/AvatarGroup/Avatar/index.module.css'; -import AvatarOverlay from '@/components/Common/AvatarGroup/Overlay'; -import Tooltip from '@/components/Common/Tooltip'; - -import styles from './index.module.css'; - -type AvatarGroupProps = { - avatars: Array<AvatarProps>; - limit?: number; - isExpandable?: boolean; - size?: AvatarProps['size']; - container?: HTMLElement; -}; - -const AvatarGroup: FC<AvatarGroupProps> = ({ - avatars, - limit = 10, - isExpandable = true, - size = 'small', - container, -}) => { - const [showMore, setShowMore] = useState(false); - - const renderAvatars = useMemo( - () => avatars.slice(0, showMore ? avatars.length : limit), - [showMore, avatars, limit] - ); - - return ( - <div - className={classNames(styles.avatarGroup, styles[size], { - [styles.expandable]: avatars.length > limit, - })} - > - {renderAvatars.map(({ ...avatar }) => ( - <Fragment key={avatar.nickname}> - <Tooltip - asChild - container={container} - content={<AvatarOverlay {...avatar} />} - > - <Avatar - {...avatar} - size={size} - className={classNames({ - 'cursor-pointer': avatar.url, - 'pointer-events-none': !avatar.url, - })} - /> - </Tooltip> - </Fragment> - ))} - - {avatars.length > limit && ( - <span - onClick={isExpandable ? () => setShowMore(prev => !prev) : undefined} - className={classNames( - avatarstyles.avatar, - avatarstyles[size], - 'cursor-pointer' - )} - > - <span className={avatarstyles.item}> - {`${showMore ? '-' : '+'}${avatars.length - limit}`} - </span> - </span> - )} - </div> - ); -}; - -export default AvatarGroup; diff --git a/apps/site/components/Common/Blockquote/index.module.css b/apps/site/components/Common/Blockquote/index.module.css deleted file mode 100644 index 410802f9cb90f..0000000000000 --- a/apps/site/components/Common/Blockquote/index.module.css +++ /dev/null @@ -1,27 +0,0 @@ -.wrapper { - @apply flex - max-w-2xl - flex-col - items-start - gap-4 - self-stretch - border-l-2 - border-green-600 - py-2 - pl-5 - text-lg - font-semibold - text-neutral-900 - dark:border-green-400 - dark:text-white; - - & cite { - @apply font-regular - text-base - not-italic; - - &::before { - @apply content-['—_']; - } - } -} diff --git a/apps/site/components/Common/BlogPostCard/index.stories.tsx b/apps/site/components/Common/BlogPostCard/index.stories.tsx deleted file mode 100644 index dca5f00ccaa1c..0000000000000 --- a/apps/site/components/Common/BlogPostCard/index.stories.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import BlogPostCard from '@/components/Common/BlogPostCard'; - -type Story = StoryObj<typeof BlogPostCard>; -type Meta = MetaObj<typeof BlogPostCard>; - -export const Default: Story = { - args: { - title: 'Node.js March 17th Infrastructure Incident Post-mortem', - category: 'vulnerability', - description: - 'Starting on March 15th and going through to March 17th (with much of the issue being mitigated on the 16th), users were receiving intermittent 404 responses when trying to download Node.js from nodejs.org, or even accessing parts of the website.', - authors: ['Claudio Wunder'], - slug: '/blog/vulnerability/something', - date: new Date('17 October 2023'), - }, - decorators: [ - Story => ( - <div className="max-w-lg"> - <Story /> - </div> - ), - ], -}; - -export const MoreThanOneAuthor: Story = { - ...Default, - args: { - ...Default.args, - authors: [...(Default.args?.authors ?? []), 'Brian Muenzenmeyer'], - }, -}; - -export default { component: BlogPostCard } as Meta; diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css b/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css deleted file mode 100644 index 713fad32dac39..0000000000000 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.module.css +++ /dev/null @@ -1,39 +0,0 @@ -.item { - @apply flex - max-w-fit - items-center - gap-5 - truncate - text-sm - font-medium; - - &:not(:last-child) { - @apply shrink-0; - } - - a { - @apply shrink - grow; - } - - &, - > a, - > a:hover { - @apply text-neutral-800 - motion-safe:transition-colors - dark:text-neutral-200; - } - - &.visuallyHidden { - @apply hidden; - } - - .separator { - @apply size-4 - max-w-fit - shrink-0 - grow - text-neutral-600 - dark:text-neutral-400; - } -} diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.module.css b/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.module.css deleted file mode 100644 index ea0d6b9db96b5..0000000000000 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.module.css +++ /dev/null @@ -1,20 +0,0 @@ -.link { - @apply max-w-fit - truncate; - - &.active { - @apply rounded - bg-green-600 - px-2 - py-1 - font-semibold - text-white - motion-safe:transition-colors - dark:text-white; - - &:hover { - @apply bg-green-700 - text-white; - } - } -} diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css b/apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css deleted file mode 100644 index 51043398d4657..0000000000000 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css +++ /dev/null @@ -1,7 +0,0 @@ -.list { - @apply xs:w-full - flex - w-screen - gap-5 - px-6; -} diff --git a/apps/site/components/Common/Button.tsx b/apps/site/components/Common/Button.tsx new file mode 100644 index 0000000000000..87d98febce2d1 --- /dev/null +++ b/apps/site/components/Common/Button.tsx @@ -0,0 +1,12 @@ +import BaseButton, { + type ButtonProps, +} from '@node-core/ui-components/Common/BaseButton'; +import type { FC, ComponentProps } from 'react'; + +import Link from '@/components/Link'; + +const Button: FC< + Omit<ButtonProps, 'as'> & Omit<ComponentProps<typeof Link>, 'as' | 'size'> +> = props => <BaseButton as={Link} {...props} />; + +export default Button; diff --git a/apps/site/components/Common/CodeBox.tsx b/apps/site/components/Common/CodeBox.tsx new file mode 100644 index 0000000000000..b95304a11a08e --- /dev/null +++ b/apps/site/components/Common/CodeBox.tsx @@ -0,0 +1,36 @@ +'use client'; + +import BaseCodeBox from '@node-core/ui-components/Common/BaseCodeBox'; +import { useTranslations } from 'next-intl'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; + +import Link from '@/components/Link'; +import { useCopyToClipboard, useNotification } from '@/hooks'; + +type CodeBoxProps = { + language: string; + className?: string; + showCopyButton?: boolean; +}; + +const CodeBox: FC<PropsWithChildren<CodeBoxProps>> = props => { + const [, copyToClipboard] = useCopyToClipboard(); + const notify = useNotification(); + const t = useTranslations(); + + const onCopy = (text: string, message: ReactNode) => { + copyToClipboard(text); + notify({ duration: 300, message }); + }; + return ( + <BaseCodeBox + as={Link} + onCopy={onCopy} + {...props} + copyText={t('components.common.codebox.copy')} + copiedText={t('components.common.codebox.copied')} + /> + ); +}; + +export default CodeBox; 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<typeof Tabs>, - 'tabs' | 'defaultValue' -> & { - linkUrl?: string; - linkText?: string; -}; - -const CodeTabs: FC<PropsWithChildren<CodeTabsProps>> = ({ - children, - linkUrl, - linkText, - ...props -}) => ( - <Tabs - {...props} - className={styles.root} - triggerClassName={styles.trigger} - addons={ - linkUrl && - linkText && ( - <Link className={styles.link} href={linkUrl}> - {linkText} - <ArrowUpRightIcon className={styles.icon} /> - </Link> - ) - } - > - {children} - </Tabs> -); - -export default CodeTabs; diff --git a/apps/site/components/Common/CrossLink.tsx b/apps/site/components/Common/CrossLink.tsx new file mode 100644 index 0000000000000..85ef3fc0c8809 --- /dev/null +++ b/apps/site/components/Common/CrossLink.tsx @@ -0,0 +1,19 @@ +import BaseCrossLink from '@node-core/ui-components/Common/BaseCrossLink'; +import type { CrossLinkProps } from '@node-core/ui-components/Common/BaseCrossLink'; +import { useTranslations } from 'next-intl'; +import type { FC } from 'react'; + +import Link from '@/components/Link'; + +const CrossLink: FC<Omit<CrossLinkProps, 'as' | 'label'>> = props => { + const t = useTranslations(); + return ( + <BaseCrossLink + label={t(`components.common.crossLink.${props.type}`)} + as={Link} + {...props} + /> + ); +}; + +export default CrossLink; diff --git a/apps/site/components/Common/LinkTabs.tsx b/apps/site/components/Common/LinkTabs.tsx new file mode 100644 index 0000000000000..7f45ef41b8994 --- /dev/null +++ b/apps/site/components/Common/LinkTabs.tsx @@ -0,0 +1,15 @@ +'use client'; + +import BaseLinkTabs from '@node-core/ui-components/Common/BaseLinkTabs'; +import type { LinkTabsProps } from '@node-core/ui-components/Common/BaseLinkTabs'; +import type { FC } from 'react'; + +import Link from '@/components/Link'; +import { useRouter } from '@/navigation.mjs'; + +const LinkTabs: FC<Omit<LinkTabsProps, 'as' | 'onSelect'>> = props => { + const { push } = useRouter(); + return <BaseLinkTabs onSelect={value => push(value)} as={Link} {...props} />; +}; + +export default LinkTabs; diff --git a/apps/site/components/Common/NodejsLogo/index.tsx b/apps/site/components/Common/NodejsLogo/index.tsx deleted file mode 100644 index 7ca383e10c505..0000000000000 --- a/apps/site/components/Common/NodejsLogo/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -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 = { - variant?: LogoVariant; -}; - -const NodejsLogo: FC<NodejsLogoProps> = ({ variant = 'default' }) => ( - <Nodejs variant={variant} className={style.nodejsLogo} /> -); - -export default NodejsLogo; diff --git a/apps/site/components/Common/Pagination.tsx b/apps/site/components/Common/Pagination.tsx new file mode 100644 index 0000000000000..05a759cba1d31 --- /dev/null +++ b/apps/site/components/Common/Pagination.tsx @@ -0,0 +1,30 @@ +import BasePagination from '@node-core/ui-components/Common/BasePagination'; +import type { PaginationProps } from '@node-core/ui-components/Common/BasePagination'; +import { useTranslations } from 'next-intl'; +import type { FC } from 'react'; + +import Link from '@/components/Link'; + +const Pagination: FC< + Omit<PaginationProps, 'as' | 'labels' | 'getPageLabel'> +> = props => { + const t = useTranslations(); + return ( + <BasePagination + as={Link} + labels={{ + aria: t('components.common.pagination.defaultLabel'), + prevAria: t('components.common.pagination.prevAriaLabel'), + prev: t('components.pagination.previous'), + nextAria: t('components.common.pagination.nextAriaLabel'), + next: t('components.pagination.next'), + }} + getPageLabel={pageNumber => + t('components.common.pagination.pageLabel', { pageNumber }) + } + {...props} + /> + ); +}; + +export default Pagination; diff --git a/apps/site/components/Containers/Footer/index.stories.tsx b/apps/site/components/Containers/Footer/index.stories.tsx deleted file mode 100644 index ec44bb46b083b..0000000000000 --- a/apps/site/components/Containers/Footer/index.stories.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import Footer from '@/components/Containers/Footer'; - -type Story = StoryObj<typeof Footer>; -type Meta = MetaObj<typeof Footer>; - -export const Default: Story = {}; - -export default { component: Footer } as Meta; diff --git a/apps/site/components/Containers/Footer/index.tsx b/apps/site/components/Containers/Footer/index.tsx deleted file mode 100644 index 3723b3c284f96..0000000000000 --- a/apps/site/components/Containers/Footer/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -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 Discord from '@/components/Icons/Social/Discord'; -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<string, React.FC<SVGProps<SVGSVGElement>>> = { - github: GitHub, - mastodon: Mastodon, - twitter: Twitter, - slack: Slack, - linkedin: LinkedIn, - bluesky: Bluesky, - discord: Discord, -}; - -const Footer: FC = () => { - const t = useTranslations(); - - const openJSlink = siteNavigation.footerLinks.at(-1)!; - - return ( - <footer className={styles.footer}> - <div className={styles.sectionPrimary}> - {siteNavigation.footerLinks.slice(0, -1).map(item => ( - <NavItem type="footer" href={item.link} key={item.link}> - {t(item.text)} - </NavItem> - ))} - </div> - - <div className={styles.sectionSecondary}> - <NavItem type="footer" href={openJSlink.link}> - © {openJSlink.text} - </NavItem> - - <div className={styles.social}> - {siteNavigation.socialLinks.map(link => { - const SocialIcon = footerSocialIcons[link.icon]; - - return ( - <NavItem key={link.icon} href={link.link} type="footer"> - <SocialIcon width={20} height={20} aria-label={link.link} /> - </NavItem> - ); - })} - </div> - </div> - </footer> - ); -}; - -export default Footer; diff --git a/apps/site/components/Containers/NavBar/index.tsx b/apps/site/components/Containers/NavBar/index.tsx deleted file mode 100644 index 840ef6d242a35..0000000000000 --- a/apps/site/components/Containers/NavBar/index.tsx +++ /dev/null @@ -1,109 +0,0 @@ -'use client'; - -import Hamburger from '@heroicons/react/24/solid/Bars3Icon'; -import XMark from '@heroicons/react/24/solid/XMarkIcon'; -import * as Label from '@radix-ui/react-label'; -import classNames from 'classnames'; -import dynamic from 'next/dynamic'; -import { useTranslations } from 'next-intl'; -import { useState } from 'react'; -import type { FC, ComponentProps, HTMLAttributeAnchorTarget } from 'react'; - -import LanguageDropdown from '@/components/Common/LanguageDropDown'; -import Skeleton from '@/components/Common/Skeleton'; -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'; - -import style from './index.module.css'; - -const SearchButton = dynamic(() => import('@/components/Common/Search'), { - ssr: false, - loading: () => ( - <Skeleton className={style.searchButtonSkeleton} loading={true} /> - ), -}); - -const navInteractionIcons = { - show: <Hamburger className={style.navInteractionIcon} />, - close: <XMark className={style.navInteractionIcon} />, -}; - -type NavbarProps = { - navItems: Array<{ - text: FormattedMessage; - link: string; - target?: HTMLAttributeAnchorTarget | undefined; - }>; - languages: ComponentProps<typeof LanguageDropdown>; - onThemeTogglerClick: () => void; -}; - -const NavBar: FC<NavbarProps> = ({ - navItems, - languages, - onThemeTogglerClick, -}) => { - const [isMenuOpen, setIsMenuOpen] = useState(false); - const t = useTranslations(); - - return ( - <nav className={`${style.container}`}> - <div className={style.nodeIconAndMobileItemsToggler}> - <Link className={style.nodeIconWrapper} href="/" aria-label="Home"> - <WithNodejsLogo /> - </Link> - - <Label.Root - className={style.sidebarItemTogglerLabel} - htmlFor="sidebarItemToggler" - > - {navInteractionIcons[isMenuOpen ? 'close' : 'show']} - </Label.Root> - </div> - - <input - className={classNames(['peer', style.sidebarItemToggler])} - id="sidebarItemToggler" - type="checkbox" - onChange={e => setIsMenuOpen(() => e.target.checked)} - aria-label={t(`components.containers.navBar.controls.toggle`)} - /> - - <div className={`${style.main} peer-checked:flex`}> - <div className={style.navItems}> - {navItems.map(({ text, link, target }) => ( - <NavItem key={link} href={link} target={target}> - {text} - </NavItem> - ))} - </div> - - <div className={style.actionsWrapper}> - <SearchButton /> - - <ThemeToggle onClick={onThemeTogglerClick} /> - - <LanguageDropdown - onChange={languages.onChange} - availableLanguages={languages.availableLanguages} - currentLanguage={languages.currentLanguage} - /> - - <Link - className={style.ghIconWrapper} - href="https://github.com/nodejs/node" - aria-label="Node.js Github" - > - <GitHub /> - </Link> - </div> - </div> - </nav> - ); -}; - -export default NavBar; diff --git a/apps/site/components/Containers/Sidebar/SidebarGroup/index.tsx b/apps/site/components/Containers/Sidebar/SidebarGroup/index.tsx deleted file mode 100644 index f22de23fa5408..0000000000000 --- a/apps/site/components/Containers/Sidebar/SidebarGroup/index.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import type { ComponentProps, FC } from 'react'; - -import SidebarItem from '@/components/Containers/Sidebar/SidebarItem'; -import type { FormattedMessage } from '@/types'; - -import styles from './index.module.css'; - -type SidebarGroupProps = { - groupName: FormattedMessage; - items: Array<ComponentProps<typeof SidebarItem>>; -}; - -const SidebarGroup: FC<SidebarGroupProps> = ({ groupName, items }) => ( - <section className={styles.group}> - <label className={styles.groupName}>{groupName}</label> - <ul className={styles.itemList}> - {items.map(({ label, link }) => ( - <SidebarItem key={link} label={label} link={link} /> - ))} - </ul> - </section> -); - -export default SidebarGroup; diff --git a/apps/site/components/Containers/Sidebar/SidebarItem/index.module.css b/apps/site/components/Containers/Sidebar/SidebarItem/index.module.css deleted file mode 100644 index 38c89b9fd6028..0000000000000 --- a/apps/site/components/Containers/Sidebar/SidebarItem/index.module.css +++ /dev/null @@ -1,33 +0,0 @@ -.sideBarItem { - @apply flex - w-full - list-none - text-neutral-800 - dark:text-neutral-200; - - a { - @apply inline-flex - items-center - gap-2 - p-2; - } - - .label { - @apply font-regular - w-full - text-sm; - } - - .icon { - @apply size-3 - text-neutral-500 - dark:text-neutral-200; - } -} - -.active { - @apply rounded - bg-green-600 - text-white - dark:text-white; -} diff --git a/apps/site/components/Downloads/DownloadButton/index.stories.tsx b/apps/site/components/Downloads/DownloadButton/index.stories.tsx deleted file mode 100644 index 84c68376a49a9..0000000000000 --- a/apps/site/components/Downloads/DownloadButton/index.stories.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import DownloadButton from '@/components/Downloads/DownloadButton'; - -type Story = StoryObj<typeof DownloadButton>; -type Meta = MetaObj<typeof DownloadButton>; - -export const Default: Story = { - args: { - release: { - currentStart: '2023-04-18', - ltsStart: '2023-10-24', - maintenanceStart: '2024-10-22', - endOfLife: '2026-04-30', - status: 'LTS', - major: 20, - version: '20.11.0', - versionWithPrefix: 'v20.11.0', - codename: 'Iron', - isLts: true, - npm: '10.2.4', - v8: '11.3.244.8', - releaseDate: '2024-01-09', - modules: '115', - }, - children: 'Download Node.js', - }, -}; - -export default { component: DownloadButton } as Meta; diff --git a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx index a5d4a9307db52..c857c9b0ddf87 100644 --- a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx +++ b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx @@ -1,10 +1,10 @@ 'use client'; +import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; -import Select from '@/components/Common/Select'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { InstallationMethod } from '@/types/release'; import { nextItem, INSTALL_METHODS, parseCompat } from '@/util/downloadUtils'; diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index 536707ad2c506..578c0e0e0be15 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -1,10 +1,10 @@ 'use client'; +import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; -import Select from '@/components/Common/Select'; import { useClientContext } from '@/hooks'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { UserOS } from '@/types/userOS'; diff --git a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx index 3faf61f0a1e9e..ff58252e08420 100644 --- a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx +++ b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx @@ -1,10 +1,10 @@ 'use client'; +import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; -import Select from '@/components/Common/Select'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { PackageManager } from '@/types/release'; import { nextItem, PACKAGE_MANAGERS, parseCompat } from '@/util/downloadUtils'; diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index de595264ab5d9..a6a30bbaef6a7 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -1,10 +1,10 @@ 'use client'; +import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useEffect, useContext, useMemo } from 'react'; -import Select from '@/components/Common/Select'; import { useClientContext } from '@/hooks'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { UserPlatform } from '@/types/userOS'; diff --git a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx index 5a943b0472a8b..b968e68651c2b 100644 --- a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx +++ b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx @@ -1,12 +1,12 @@ 'use client'; import { CloudArrowDownIcon } from '@heroicons/react/24/outline'; +import Skeleton from '@node-core/ui-components/Common/Skeleton'; import { useTranslations } from 'next-intl'; import { useContext } from 'react'; import type { FC } from 'react'; import Button from '@/components/Common/Button'; -import Skeleton from '@/components/Common/Skeleton'; import { ReleaseContext } from '@/providers/releaseProvider'; import { OperatingSystemLabel, diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 70de6d02fc989..7678f7ac66f16 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -1,12 +1,12 @@ 'use client'; +import AlertBox from '@node-core/ui-components/Common/AlertBox'; +import Skeleton from '@node-core/ui-components/Common/Skeleton'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useContext, useMemo } from 'react'; -import AlertBox from '@/components/Common/AlertBox'; import CodeBox from '@/components/Common/CodeBox'; -import Skeleton from '@/components/Common/Skeleton'; import Link from '@/components/Link'; import LinkWithArrow from '@/components/LinkWithArrow'; import { createSval } from '@/next.jsx.compiler.mjs'; diff --git a/apps/site/components/Downloads/Release/VersionDropdown.tsx b/apps/site/components/Downloads/Release/VersionDropdown.tsx index 9cdff66faab24..2f8b1b015c358 100644 --- a/apps/site/components/Downloads/Release/VersionDropdown.tsx +++ b/apps/site/components/Downloads/Release/VersionDropdown.tsx @@ -1,10 +1,10 @@ 'use client'; +import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useContext } from 'react'; -import Select from '@/components/Common/Select'; import { ReleaseContext, ReleasesContext } from '@/providers/releaseProvider'; const getDropDownStatus = (version: string, status: string) => { diff --git a/apps/site/components/Icons/InstallationMethod/FNM.tsx b/apps/site/components/Icons/InstallationMethod/FNM.tsx deleted file mode 100644 index 90407358527b3..0000000000000 --- a/apps/site/components/Icons/InstallationMethod/FNM.tsx +++ /dev/null @@ -1,99 +0,0 @@ -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<SVGProps<SVGSVGElement>> = props => ( - <svg - width="32" - height="32" - viewBox="0 0 32 32" - fill="none" - xmlns="http://www.w3.org/2000/svg" - {...props} - > - <g clipPath="url(#clip0_9_63)"> - <path - d="M1.335 29.3115C1.6927 20.3502 3.86906 17.6129 12.4625 18.1841L1.335 29.3115Z" - fill="#FFA700" - /> - <path - d="M1.33445 29.3111C10.2957 28.9534 13.0331 26.7771 12.4619 18.1836L1.33445 29.3111Z" - fill="#FFA700" - /> - <circle cx="8.06134" cy="22.6108" r="3.34002" fill="#FFC920" /> - <path - d="M8.06101 8.39001L12.0369 8.63409L7.99678 16.541C5.44038 15.0251 3.62263 14.4213 1.36169 14.2415L8.06101 8.39001Z" - fill="#EC423C" - /> - <path - d="M1.36169 14.2415C5.11912 13.5681 7.43848 12.6734 12.0369 8.63416L7.99678 16.541C5.44038 15.0252 3.62263 14.4214 1.36169 14.2415Z" - fill="black" - fillOpacity="0.1" - /> - <path - d="M30.6523 0.00493863C25.904 0.00502983 3.51938 7.45518 8.66979 21.9874L30.6523 0.00493863Z" - fill="#DAD5D4" - /> - <path - d="M30.6472 0.00728336C30.6471 4.75558 23.1969 27.1402 8.66469 21.9898L30.6472 0.00728336Z" - fill="#DAD5D4" - /> - <path - d="M23.4046 2.61321L26.6702 1.70942L29.0319 4.07117L28.1281 7.33672L24.8626 8.24052L22.5008 5.87876L23.4046 2.61321Z" - fill="#EC423C" - /> - <path - d="M7.25505 23.4488L14.5967 16.1072C14.2755 15.497 7.94876 20.6997 7.67899 21.0658C7.40922 21.4319 7.29288 22.2291 7.25505 23.4488Z" - fill="#EC423C" - /> - <path - d="M7.25251 23.4459L14.5941 16.1042C15.2043 16.4254 10.0016 22.7522 9.63548 23.0219C9.26936 23.2917 8.47216 23.4081 7.25251 23.4459Z" - fill="#EC423C" - /> - <path - d="M30.6472 0.00728336C30.6471 4.75558 23.1969 27.1402 8.66469 21.9898C14.4457 15.5825 21.7231 10.277 30.6472 0.00728336Z" - fill="black" - fillOpacity="0.1" - /> - <mask - id="path-12-outside-1_9_63" - maskUnits="userSpaceOnUse" - x="4.55376" - y="9.34656" - width="24.7487" - height="24.7487" - fill="black" - > - <rect - fill="white" - x="4.55376" - y="9.34656" - width="24.7487" - height="24.7487" - /> - <path d="M10.1695 22.4334C10.7254 21.8775 11.3141 21.4742 11.9354 21.2235L12.4177 22.4252C12.0308 22.5942 11.6683 22.8476 11.3304 23.1855C11.0742 23.4417 10.9353 23.6733 10.9135 23.8804C10.8971 24.0821 10.9952 24.2892 11.2078 24.5017L11.7882 25.0822L13.2025 23.6679L13.9547 24.7143L12.6875 25.9815L15.8595 29.1535L14.576 30.437L11.404 27.265L10.4883 28.1806L9.58906 27.2814L10.5047 26.3657L9.88337 25.7444C9.43646 25.2975 9.22935 24.7797 9.26205 24.1911C9.29475 23.5916 9.59724 23.0057 10.1695 22.4334ZM13.1912 23.1397L14.3194 22.0115L14.908 22.4202C14.8862 22.006 14.9298 21.6409 15.0388 21.3248C15.1478 20.9977 15.3386 20.698 15.6111 20.4255C15.9871 20.0494 16.3932 19.8723 16.8292 19.8941C17.2707 19.9104 17.6958 20.123 18.1045 20.5317L21.2929 23.7201L20.0012 25.0118L17.1889 22.1995C16.9164 21.927 16.6984 21.7689 16.5349 21.7253C16.3714 21.6817 16.2106 21.739 16.0525 21.897C15.9217 22.0278 15.8372 22.1995 15.7991 22.4121C15.7609 22.6137 15.7582 22.8617 15.7909 23.156L18.824 26.1891L17.5323 27.4808L13.1912 23.1397ZM20.9136 15.1229C21.2243 14.8122 21.554 14.6896 21.9029 14.755C22.2517 14.8095 22.6468 15.0575 23.0883 15.499L26.3012 18.7118L25.1975 19.8155L22.1318 16.7498C21.9737 16.5917 21.8484 16.4991 21.7557 16.4718C21.6685 16.4391 21.584 16.4636 21.5023 16.5454C21.3497 16.698 21.2952 16.9433 21.3388 17.2812L24.5353 20.4777L23.6197 21.3933L20.5539 18.3276C20.3959 18.1696 20.2705 18.0769 20.1779 18.0496C20.0907 18.0169 20.0062 18.0415 19.9244 18.1232C19.7718 18.2758 19.7173 18.5211 19.7609 18.859L22.9575 22.0555L21.8375 23.1756L17.4964 18.8345L18.4365 17.8943L18.9434 18.2213C18.8889 17.8834 18.8862 17.6027 18.9352 17.3793C18.9843 17.1449 19.1015 16.9351 19.2868 16.7498C19.4557 16.5808 19.641 16.4827 19.8427 16.4555C20.0389 16.4228 20.2487 16.4691 20.4722 16.5944C20.4231 15.9568 20.5703 15.4663 20.9136 15.1229Z" /> - </mask> - <path - d="M10.1695 22.4334C10.7254 21.8775 11.3141 21.4742 11.9354 21.2235L12.4177 22.4252C12.0308 22.5942 11.6683 22.8476 11.3304 23.1855C11.0742 23.4417 10.9353 23.6733 10.9135 23.8804C10.8971 24.0821 10.9952 24.2892 11.2078 24.5017L11.7882 25.0822L13.2025 23.6679L13.9547 24.7143L12.6875 25.9815L15.8595 29.1535L14.576 30.437L11.404 27.265L10.4883 28.1806L9.58906 27.2814L10.5047 26.3657L9.88337 25.7444C9.43646 25.2975 9.22935 24.7797 9.26205 24.1911C9.29475 23.5916 9.59724 23.0057 10.1695 22.4334ZM13.1912 23.1397L14.3194 22.0115L14.908 22.4202C14.8862 22.006 14.9298 21.6409 15.0388 21.3248C15.1478 20.9977 15.3386 20.698 15.6111 20.4255C15.9871 20.0494 16.3932 19.8723 16.8292 19.8941C17.2707 19.9104 17.6958 20.123 18.1045 20.5317L21.2929 23.7201L20.0012 25.0118L17.1889 22.1995C16.9164 21.927 16.6984 21.7689 16.5349 21.7253C16.3714 21.6817 16.2106 21.739 16.0525 21.897C15.9217 22.0278 15.8372 22.1995 15.7991 22.4121C15.7609 22.6137 15.7582 22.8617 15.7909 23.156L18.824 26.1891L17.5323 27.4808L13.1912 23.1397ZM20.9136 15.1229C21.2243 14.8122 21.554 14.6896 21.9029 14.755C22.2517 14.8095 22.6468 15.0575 23.0883 15.499L26.3012 18.7118L25.1975 19.8155L22.1318 16.7498C21.9737 16.5917 21.8484 16.4991 21.7557 16.4718C21.6685 16.4391 21.584 16.4636 21.5023 16.5454C21.3497 16.698 21.2952 16.9433 21.3388 17.2812L24.5353 20.4777L23.6197 21.3933L20.5539 18.3276C20.3959 18.1696 20.2705 18.0769 20.1779 18.0496C20.0907 18.0169 20.0062 18.0415 19.9244 18.1232C19.7718 18.2758 19.7173 18.5211 19.7609 18.859L22.9575 22.0555L21.8375 23.1756L17.4964 18.8345L18.4365 17.8943L18.9434 18.2213C18.8889 17.8834 18.8862 17.6027 18.9352 17.3793C18.9843 17.1449 19.1015 16.9351 19.2868 16.7498C19.4557 16.5808 19.641 16.4827 19.8427 16.4555C20.0389 16.4228 20.2487 16.4691 20.4722 16.5944C20.4231 15.9568 20.5703 15.4663 20.9136 15.1229Z" - fill="#FFA700" - /> - <path - d="M11.9354 21.2235L13.4852 20.6014L12.862 19.0487L11.3105 19.6748L11.9354 21.2235ZM12.4177 22.4252L13.086 23.9557L14.5712 23.3072L13.9676 21.8032L12.4177 22.4252ZM10.9135 23.8804L9.25262 23.7056L9.25053 23.7255L9.24891 23.7455L10.9135 23.8804ZM11.7882 25.0822L10.6073 26.2631L11.7882 27.4439L12.9691 26.2631L11.7882 25.0822ZM13.2025 23.6679L14.5586 22.6932L13.4115 21.0972L12.0217 22.487L13.2025 23.6679ZM13.9547 24.7143L15.1355 25.8952L16.1389 24.8918L15.3107 23.7396L13.9547 24.7143ZM12.6875 25.9815L11.5066 24.8006L10.3257 25.9815L11.5066 27.1624L12.6875 25.9815ZM15.8595 29.1535L17.0404 30.3344L18.2213 29.1535L17.0404 27.9726L15.8595 29.1535ZM14.576 30.437L13.3951 31.6179L14.576 32.7988L15.7569 31.6179L14.576 30.437ZM11.404 27.265L12.5849 26.0841L11.404 24.9032L10.2231 26.0841L11.404 27.265ZM10.4883 28.1806L9.30747 29.3615L10.4883 30.5424L11.6692 29.3615L10.4883 28.1806ZM9.58906 27.2814L8.40818 26.1005L7.22731 27.2814L8.40818 28.4622L9.58906 27.2814ZM10.5047 26.3657L11.6856 27.5466L12.8664 26.3657L11.6856 25.1848L10.5047 26.3657ZM9.26205 24.1911L10.9295 24.2837L10.9296 24.282L9.26205 24.1911ZM11.3504 23.6143C11.7747 23.1899 12.18 22.9256 12.5603 22.7721L11.3105 19.6748C10.4481 20.0227 9.67612 20.565 8.98863 21.2525L11.3504 23.6143ZM10.3855 21.8455L10.8679 23.0473L13.9676 21.8032L13.4852 20.6014L10.3855 21.8455ZM11.7495 20.8947C11.1478 21.1575 10.6157 21.5385 10.1495 22.0046L12.5113 24.3664C12.721 24.1567 12.9137 24.0309 13.086 23.9557L11.7495 20.8947ZM10.1495 22.0046C9.80318 22.351 9.33483 22.9247 9.25262 23.7056L12.5743 24.0553C12.5533 24.2545 12.4861 24.3772 12.4661 24.4106C12.4461 24.4438 12.4492 24.4285 12.5113 24.3664L10.1495 22.0046ZM9.24891 23.7455C9.17686 24.6341 9.63926 25.295 10.0269 25.6826L12.3886 23.3209C12.3512 23.2834 12.6174 23.5301 12.578 24.0154L9.24891 23.7455ZM10.0269 25.6826L10.6073 26.2631L12.9691 23.9013L12.3886 23.3209L10.0269 25.6826ZM12.9691 26.2631L14.3834 24.8487L12.0217 22.487L10.6073 23.9013L12.9691 26.2631ZM11.8465 24.6425L12.5986 25.689L15.3107 23.7396L14.5586 22.6932L11.8465 24.6425ZM12.7738 23.5334L11.5066 24.8006L13.8684 27.1624L15.1355 25.8952L12.7738 23.5334ZM11.5066 27.1624L14.6786 30.3344L17.0404 27.9726L13.8684 24.8006L11.5066 27.1624ZM14.6786 27.9726L13.3951 29.2561L15.7569 31.6179L17.0404 30.3344L14.6786 27.9726ZM15.7569 29.2561L12.5849 26.0841L10.2231 28.4459L13.3951 31.6179L15.7569 29.2561ZM10.2231 26.0841L9.30747 26.9998L11.6692 29.3615L12.5849 28.4459L10.2231 26.0841ZM11.6692 26.9998L10.7699 26.1005L8.40818 28.4622L9.30747 29.3615L11.6692 26.9998ZM10.7699 28.4622L11.6856 27.5466L9.32382 25.1848L8.40818 26.1005L10.7699 28.4622ZM11.6856 25.1848L11.0642 24.5635L8.7025 26.9253L9.32382 27.5466L11.6856 25.1848ZM11.0642 24.5635C10.926 24.4253 10.9252 24.3607 10.9295 24.2837L7.59461 24.0985C7.53348 25.1987 7.94691 26.1697 8.7025 26.9253L11.0642 24.5635ZM10.9296 24.282C10.9331 24.2182 10.9666 23.9981 11.3504 23.6143L8.98863 21.2525C8.22791 22.0132 7.65643 22.965 7.59452 24.1001L10.9296 24.282ZM13.1912 23.1397L12.0103 21.9588L10.8294 23.1397L12.0103 24.3205L13.1912 23.1397ZM14.3194 22.0115L15.2719 20.6398L14.1255 19.8436L13.1385 20.8306L14.3194 22.0115ZM14.908 22.4202L13.9554 23.7919L16.7548 25.736L16.5757 22.3325L14.908 22.4202ZM15.0388 21.3248L16.6176 21.8692L16.6204 21.861L16.6231 21.8529L15.0388 21.3248ZM16.8292 19.8941L16.7458 21.562L16.7566 21.5625L16.7674 21.5629L16.8292 19.8941ZM21.2929 23.7201L22.4738 24.901L23.6547 23.7201L22.4738 22.5392L21.2929 23.7201ZM20.0012 25.0118L18.8203 26.1927L20.0012 27.3736L21.1821 26.1927L20.0012 25.0118ZM16.5349 21.7253L16.9652 20.1117L16.9652 20.1117L16.5349 21.7253ZM15.7991 22.4121L17.44 22.7225L17.4415 22.7148L17.4428 22.7071L15.7991 22.4121ZM15.7909 23.156L14.1311 23.3404L14.1958 23.9227L14.61 24.3369L15.7909 23.156ZM18.824 26.1891L20.0048 27.3699L21.1857 26.1891L20.0048 25.0082L18.824 26.1891ZM17.5323 27.4808L16.3514 28.6616L17.5323 29.8425L18.7131 28.6616L17.5323 27.4808ZM14.3721 24.3205L15.5002 23.1924L13.1385 20.8306L12.0103 21.9588L14.3721 24.3205ZM13.3668 23.3832L13.9554 23.7919L15.8606 21.0485L15.2719 20.6398L13.3668 23.3832ZM16.5757 22.3325C16.5626 22.0829 16.5932 21.9398 16.6176 21.8692L13.46 20.7803C13.2664 21.3419 13.2098 21.9292 13.2403 22.508L16.5757 22.3325ZM16.6231 21.8529C16.6409 21.7996 16.6809 21.7174 16.7919 21.6063L14.4302 19.2446C13.9962 19.6786 13.6547 20.1959 13.4545 20.7966L16.6231 21.8529ZM16.7919 21.6063C16.8612 21.5371 16.888 21.5314 16.8654 21.5413C16.854 21.5462 16.8352 21.5528 16.8107 21.5573C16.7862 21.5619 16.7636 21.5629 16.7458 21.562L16.9126 18.2261C15.9043 18.1757 15.0611 18.6137 14.4302 19.2446L16.7919 21.6063ZM16.7674 21.5629C16.7322 21.5616 16.7165 21.5516 16.7323 21.5595C16.7539 21.5703 16.8197 21.6087 16.9237 21.7126L19.2854 19.3509C18.6732 18.7386 17.8706 18.2615 16.891 18.2252L16.7674 21.5629ZM16.9237 21.7126L20.112 24.901L22.4738 22.5392L19.2854 19.3509L16.9237 21.7126ZM20.112 22.5392L18.8203 23.8309L21.1821 26.1927L22.4738 24.901L20.112 22.5392ZM21.1821 23.8309L18.3698 21.0186L16.008 23.3804L18.8203 26.1927L21.1821 23.8309ZM18.3698 21.0186C18.0922 20.7411 17.5995 20.2809 16.9652 20.1117L16.1046 23.339C16.0488 23.3241 16.0031 23.3077 15.9683 23.2935C15.9333 23.2792 15.9062 23.2659 15.8873 23.256C15.851 23.2368 15.835 23.2245 15.8408 23.2286C15.8456 23.2322 15.8629 23.2452 15.8931 23.2717C15.9228 23.2978 15.9611 23.3334 16.008 23.3804L18.3698 21.0186ZM16.9652 20.1117C16.0421 19.8656 15.2967 20.2911 14.8717 20.7161L17.2334 23.0779C17.1892 23.1221 17.0654 23.2328 16.8517 23.3089C16.6165 23.3926 16.3524 23.405 16.1046 23.339L16.9652 20.1117ZM14.8717 20.7161C14.4613 21.1265 14.2434 21.6266 14.1554 22.117L17.4428 22.7071C17.4378 22.7349 17.4243 22.7905 17.3895 22.8612C17.3537 22.9339 17.3019 23.0094 17.2334 23.0779L14.8717 20.7161ZM14.1582 22.1016C14.0788 22.521 14.0875 22.9475 14.1311 23.3404L17.4507 22.9716C17.4405 22.8793 17.4379 22.8124 17.4384 22.7676C17.4389 22.7222 17.4424 22.7096 17.44 22.7225L14.1582 22.1016ZM14.61 24.3369L17.6431 27.3699L20.0048 25.0082L16.9718 21.9751L14.61 24.3369ZM17.6431 25.0082L16.3514 26.2999L18.7131 28.6616L20.0048 27.3699L17.6431 25.0082ZM18.7131 26.2999L14.3721 21.9588L12.0103 24.3205L16.3514 28.6616L18.7131 26.2999ZM21.9029 14.755L21.5951 16.3964L21.62 16.4011L21.645 16.405L21.9029 14.755ZM26.3012 18.7118L27.482 19.8927L28.6629 18.7118L27.482 17.531L26.3012 18.7118ZM25.1975 19.8155L24.0166 20.9964L25.1975 22.1773L26.3784 20.9964L25.1975 19.8155ZM21.7557 16.4718L21.1693 18.0355L21.2262 18.0568L21.2845 18.074L21.7557 16.4718ZM21.3388 17.2812L19.6825 17.4949L19.7553 18.0595L20.1579 18.462L21.3388 17.2812ZM24.5353 20.4777L25.7162 21.6586L26.8971 20.4777L25.7162 19.2968L24.5353 20.4777ZM23.6197 21.3933L22.4388 22.5742L23.6197 23.7551L24.8005 22.5742L23.6197 21.3933ZM20.1779 18.0496L19.5915 19.6133L19.6484 19.6347L19.7066 19.6518L20.1779 18.0496ZM19.7609 18.859L18.1046 19.0727L18.1775 19.6373L18.58 20.0399L19.7609 18.859ZM22.9575 22.0555L24.1383 23.2364L25.3192 22.0555L24.1383 20.8747L22.9575 22.0555ZM21.8375 23.1756L20.6566 24.3564L21.8375 25.5373L23.0183 24.3564L21.8375 23.1756ZM17.4964 18.8345L16.3155 17.6536L15.1346 18.8345L16.3155 20.0154L17.4964 18.8345ZM18.4365 17.8943L19.3419 16.491L18.209 15.7601L17.2556 16.7134L18.4365 17.8943ZM18.9434 18.2213L18.038 19.6246L21.1892 21.6577L20.5921 17.9554L18.9434 18.2213ZM18.9352 17.3793L20.5664 17.7373L20.5681 17.7294L20.5698 17.7214L18.9352 17.3793ZM19.8427 16.4555L20.0663 18.1104L20.0918 18.107L20.1172 18.1028L19.8427 16.4555ZM20.4722 16.5944L19.6551 18.0509L22.3766 19.5776L22.1373 16.4664L20.4722 16.5944ZM22.0945 16.3038C22.1212 16.2771 22.0847 16.3228 21.9761 16.3632C21.8541 16.4086 21.716 16.4191 21.5951 16.3964L22.2106 13.1136C21.1888 12.922 20.3282 13.3465 19.7328 13.942L22.0945 16.3038ZM21.645 16.405C21.5362 16.388 21.5088 16.356 21.5731 16.3964C21.6357 16.4357 21.7475 16.52 21.9074 16.6798L24.2691 14.3181C23.7474 13.7963 23.0388 13.2422 22.1607 13.105L21.645 16.405ZM21.9074 16.6798L25.1203 19.8927L27.482 17.531L24.2691 14.3181L21.9074 16.6798ZM25.1203 17.531L24.0166 18.6346L26.3784 20.9964L27.482 19.8927L25.1203 17.531ZM26.3784 18.6346L23.3126 15.5689L20.9509 17.9307L24.0166 20.9964L26.3784 18.6346ZM23.3126 15.5689C23.1528 15.4091 22.7656 15.0281 22.2269 14.8697L21.2845 18.074C21.1642 18.0386 21.0765 17.9953 21.0265 17.9678C20.9747 17.9393 20.9408 17.9153 20.9266 17.9047C20.9008 17.8857 20.9076 17.8874 20.9509 17.9307L23.3126 15.5689ZM22.3421 14.9081C21.9824 14.7733 21.5704 14.7431 21.1613 14.8619C20.7771 14.9734 20.5007 15.1852 20.3214 15.3645L22.6831 17.7263C22.5856 17.8239 22.3923 17.9824 22.0926 18.0695C21.7679 18.1637 21.4418 18.1377 21.1693 18.0355L22.3421 14.9081ZM20.3214 15.3645C19.6319 16.054 19.6113 16.9435 19.6825 17.4949L22.995 17.0675C22.9898 17.0267 23.0039 17.0856 22.9772 17.2061C22.9471 17.3416 22.8663 17.5432 22.6831 17.7263L20.3214 15.3645ZM20.1579 18.462L23.3544 21.6586L25.7162 19.2968L22.5196 16.1003L20.1579 18.462ZM23.3544 19.2968L22.4388 20.2125L24.8005 22.5742L25.7162 21.6586L23.3544 19.2968ZM24.8005 20.2125L21.7348 17.1467L19.3731 19.5085L22.4388 22.5742L24.8005 20.2125ZM21.7348 17.1467C21.575 16.9869 21.1877 16.6059 20.6491 16.4475L19.7066 19.6518C19.5863 19.6164 19.4987 19.5731 19.4487 19.5456C19.3968 19.5171 19.363 19.4931 19.3487 19.4826C19.323 19.4635 19.3298 19.4652 19.3731 19.5085L21.7348 17.1467ZM20.7642 16.486C20.4046 16.3511 19.9926 16.321 19.5835 16.4397C19.1993 16.5513 18.9229 16.763 18.7436 16.9423L21.1053 19.3041C21.0077 19.4017 20.8145 19.5603 20.5147 19.6473C20.1901 19.7416 19.8639 19.7155 19.5915 19.6133L20.7642 16.486ZM18.7436 16.9423C18.054 17.6319 18.0335 18.5214 18.1046 19.0727L21.4172 18.6453C21.4119 18.6045 21.4261 18.6635 21.3993 18.7839C21.3692 18.9194 21.2884 19.121 21.1053 19.3041L18.7436 16.9423ZM18.58 20.0399L21.7766 23.2364L24.1383 20.8747L20.9418 17.6781L18.58 20.0399ZM21.7766 20.8747L20.6566 21.9947L23.0183 24.3564L24.1383 23.2364L21.7766 20.8747ZM23.0183 21.9947L18.6772 17.6536L16.3155 20.0154L20.6566 24.3564L23.0183 21.9947ZM18.6772 20.0154L19.6174 19.0752L17.2556 16.7134L16.3155 17.6536L18.6772 20.0154ZM17.5312 19.2976L18.038 19.6246L19.8488 16.818L19.3419 16.491L17.5312 19.2976ZM20.5921 17.9554C20.5754 17.8518 20.5708 17.7821 20.5704 17.7412C20.57 17.6994 20.5741 17.7022 20.5664 17.7373L17.304 17.0212C17.1934 17.5251 17.2218 18.035 17.2947 18.4873L20.5921 17.9554ZM20.5698 17.7214C20.5596 17.7702 20.5414 17.8183 20.518 17.8604C20.495 17.9014 20.4741 17.9242 20.4676 17.9307L18.1059 15.5689C17.7136 15.9612 17.4224 16.4552 17.3006 17.0372L20.5698 17.7214ZM20.4676 17.9307C20.4505 17.9478 20.4072 17.9866 20.3338 18.0254C20.2579 18.0656 20.1664 18.0969 20.0663 18.1104L19.619 14.8005C18.9946 14.8849 18.4867 15.1881 18.1059 15.5689L20.4676 17.9307ZM20.1172 18.1028C19.8419 18.1486 19.6664 18.0573 19.6551 18.0509L21.2892 15.138C20.831 14.8809 20.2358 14.6969 19.5681 14.8082L20.1172 18.1028ZM22.1373 16.4664C22.1247 16.3034 22.1435 16.2343 22.1453 16.2282C22.1459 16.2263 22.1428 16.237 22.1323 16.2547C22.1217 16.2729 22.1083 16.29 22.0945 16.3038L19.7328 13.942C18.9433 14.7315 18.7333 15.7628 18.8071 16.7225L22.1373 16.4664Z" - fill="white" - mask="url(#path-12-outside-1_9_63)" - /> - </g> - <defs> - <clipPath id="clip0_9_63"> - <rect - width="29.3408" - height="32" - fill="white" - transform="translate(1.32959)" - /> - </clipPath> - </defs> - </svg> -); - -export default FNM; diff --git a/apps/site/components/Icons/InstallationMethod/index.ts b/apps/site/components/Icons/InstallationMethod/index.ts deleted file mode 100644 index 41c7897e2172f..0000000000000 --- a/apps/site/components/Icons/InstallationMethod/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import Choco from '@/components/Icons/InstallationMethod/Choco'; -import Devbox from '@/components/Icons/InstallationMethod/Devbox'; -import Docker from '@/components/Icons/InstallationMethod/Docker'; -import FNM from '@/components/Icons/InstallationMethod/FNM'; -import Homebrew from '@/components/Icons/InstallationMethod/Homebrew'; -import NVM from '@/components/Icons/InstallationMethod/NVM'; -import Volta from '@/components/Icons/InstallationMethod/Volta'; - -export default { Choco, Devbox, Docker, FNM, Homebrew, NVM, Volta }; diff --git a/apps/site/components/Icons/OperatingSystem/index.ts b/apps/site/components/Icons/OperatingSystem/index.ts deleted file mode 100644 index 167e970f87135..0000000000000 --- a/apps/site/components/Icons/OperatingSystem/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import AIX from '@/components/Icons/OperatingSystem/AIX'; -import Apple from '@/components/Icons/OperatingSystem/Apple'; -import Linux from '@/components/Icons/OperatingSystem/Linux'; -import Microsoft from '@/components/Icons/OperatingSystem/Microsoft'; - -export default { AIX, Apple, Linux, Microsoft }; diff --git a/apps/site/components/Icons/PackageManager/index.ts b/apps/site/components/Icons/PackageManager/index.ts deleted file mode 100644 index 4ba989918ca4c..0000000000000 --- a/apps/site/components/Icons/PackageManager/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import NPM from '@/components/Icons/PackageManager/Npm'; -import PNPM from '@/components/Icons/PackageManager/Pnpm'; -import YARN from '@/components/Icons/PackageManager/Yarn'; - -export default { NPM, PNPM, YARN }; diff --git a/apps/site/components/MDX/Calendar/Event/index.stories.tsx b/apps/site/components/MDX/Calendar/Event/index.stories.tsx deleted file mode 100644 index d35c692533176..0000000000000 --- a/apps/site/components/MDX/Calendar/Event/index.stories.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import Event from '@/components/MDX/Calendar/Event'; - -type Story = StoryObj<typeof Event>; -type Meta = MetaObj<typeof Event>; - -export const Default: Story = { - args: { - start: { date: '2024-02-19T12:30:00.000Z' }, - end: { date: '2024-02-19T16:00:00.000Z' }, - summary: 'Example Event', - location: 'Event Location', - description: 'This is an example event description.', - }, -}; - -export default { component: Event } as Meta; diff --git a/apps/site/components/MDX/CodeBox/index.stories.tsx b/apps/site/components/MDX/CodeBox/index.stories.tsx deleted file mode 100644 index 8982fe9ef4e0b..0000000000000 --- a/apps/site/components/MDX/CodeBox/index.stories.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import { VFile } from 'vfile'; - -import { compile } from '@/next.mdx.compiler.mjs'; -import { MDX_COMPONENTS } from '@/next.mdx.components.mjs'; - -type Props = { children: string }; - -type Story = StoryObj<Props>; -type Meta = MetaObj<Props>; - -export const Default: Story = { - args: { - children: `\`\`\`javascript -const http = require('http'); - -const hostname = '127.0.0.1'; -const port = 3000; - -const server = http.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}/\`); -}); -\`\`\``, - }, -}; - -export default { - title: 'MDX/CodeBox', - render: (_, { loaded: { Content } }) => Content, - loaders: [ - async ({ args }) => { - const { content } = await compile( - new VFile(args.children), - 'mdx', - MDX_COMPONENTS - ); - - return { Content: content }; - }, - ], -} as Meta; diff --git a/apps/site/components/MDX/CodeTabs/index.stories.tsx b/apps/site/components/MDX/CodeTabs/index.stories.tsx deleted file mode 100644 index dd6474be252f1..0000000000000 --- a/apps/site/components/MDX/CodeTabs/index.stories.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import { VFile } from 'vfile'; - -import { compile } from '@/next.mdx.compiler.mjs'; -import { MDX_COMPONENTS } from '@/next.mdx.components.mjs'; - -type Props = { children: string }; - -type Story = StoryObj<Props>; -type Meta = MetaObj<Props>; - -export const Default: Story = { - args: { - children: `\`\`\`mjs -const { createHmac } = await import('node:crypto'); - -const secret = 'abcdefg'; -const hash = createHmac('sha256', secret) - .update('I love cupcakes') - .digest('hex'); - -console.log(hash); -// Prints: -// c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e -\`\`\` - -\`\`\`cjs displayName="CommonJS" showCopyButton="true" -const { createHmac } = require('node:crypto'); - -const secret = 'abcdefg'; -const hash = createHmac('sha256', secret) - .update('I love cupcakes') - .digest('hex'); - -console.log(hash); -// Prints: -// c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e -\`\`\``, - }, -}; - -export default { - title: 'MDX/CodeTabs', - render: (_, { loaded: { Content } }) => Content, - loaders: [ - async ({ args }) => { - const { content } = await compile( - new VFile(args.children), - 'mdx', - MDX_COMPONENTS - ); - - return { Content: content }; - }, - ], -} as Meta; diff --git a/apps/site/components/MDX/CodeTabs/index.tsx b/apps/site/components/MDX/CodeTabs/index.tsx index 45adc0f5cf751..cebf603d2b37a 100644 --- a/apps/site/components/MDX/CodeTabs/index.tsx +++ b/apps/site/components/MDX/CodeTabs/index.tsx @@ -1,12 +1,8 @@ +import CodeTabs from '@node-core/ui-components/Common/CodeTabs'; import * as TabsPrimitive from '@radix-ui/react-tabs'; -import type { ComponentProps, FC, ReactElement } from 'react'; +import type { FC, ReactElement } from 'react'; -import CodeTabs from '@/components/Common/CodeTabs'; - -type MDXCodeTabsProps = Pick< - ComponentProps<typeof CodeTabs>, - 'linkText' | 'linkUrl' -> & { +type MDXCodeTabsProps = { children: Array<ReactElement<unknown>>; languages: string; displayNames?: string; 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: () => <NodejsLogo width={267} height={80} />, -}; - -export const PrideLogo: StoryObj = { - render: () => <NodejsLogo variant="pride" width={267} height={80} />, -}; - -export const StackedLogos: StoryObj = { - render: () => ( - <div className="flex flex-row gap-4"> - <div className="flex flex-col gap-2"> - <NodejsStackedDark - className="block dark:hidden" - width={267} - height={164} - /> - - <NodejsStackedBlack - className="block dark:hidden" - width={267} - height={164} - /> - - <NodejsStackedLight - className="hidden dark:block" - width={267} - height={164} - /> - - <NodejsStackedWhite - className="hidden dark:block" - width={267} - height={164} - /> - </div> - </div> - ), -}; - -export const JSSymbols: StoryObj = { - render: () => ( - <div className="flex flex-row gap-4"> - <JsIconWhite className="hidden dark:block" width={30} height={30} /> - <JsIconGreen className="block dark:hidden" width={30} height={30} /> - </div> - ), -}; - -export default { title: 'Design System' } as MetaObj; diff --git a/apps/site/components/__design__/package-manager.stories.tsx b/apps/site/components/__design__/package-manager.stories.tsx deleted file mode 100644 index 76ecbe338b8eb..0000000000000 --- a/apps/site/components/__design__/package-manager.stories.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import PackageManagerIcons from '@/components/Icons/PackageManager'; - -export const PackageManager: StoryObj = { - render: () => ( - <div className="flex space-x-4"> - <PackageManagerIcons.NPM width={64} height={64} /> - <PackageManagerIcons.PNPM width={64} height={64} /> - <PackageManagerIcons.YARN width={64} height={64} /> - </div> - ), -}; - -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 39d6b20c7534f..0000000000000 --- a/apps/site/components/__design__/platform-logos.stories.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import InstallMethodIcons from '@/components/Icons/InstallationMethod'; -import OSIcons from '@/components/Icons/OperatingSystem'; - -export const PlatformLogos: StoryObj = { - render: () => ( - <div className="flex flex-row gap-4"> - <div className="flex flex-col items-center gap-4"> - <OSIcons.Apple width={64} height={64} /> - <OSIcons.Linux width={64} height={64} /> - <OSIcons.Microsoft width={64} height={64} /> - <OSIcons.AIX width={64} height={64} /> - </div> - <div className="flex flex-col items-center gap-4"> - <InstallMethodIcons.Docker width={64} height={64} /> - <InstallMethodIcons.Homebrew width={64} height={64} /> - <InstallMethodIcons.NVM width={64} height={64} /> - <InstallMethodIcons.Devbox width={64} height={64} /> - <InstallMethodIcons.Volta width={64} height={64} /> - </div> - <div className="flex flex-col items-center gap-4"> - <InstallMethodIcons.Choco width={64} height={64} /> - </div> - </div> - ), -}; - -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 0fc12674a0ddc..0000000000000 --- a/apps/site/components/__design__/social-logos.stories.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import Bluesky from '@/components/Icons/Social/Bluesky'; -import Discord from '@/components/Icons/Social/Discord'; -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: () => ( - <div className="flex flex-row gap-4"> - <div className="flex flex-col items-center gap-4"> - <GitHub width={64} height={64} /> - <Mastodon width={64} height={64} /> - <LinkedIn width={64} height={64} /> - </div> - <div className="flex flex-col items-center gap-4"> - <Slack width={64} height={64} /> - <Twitter width={64} height={64} /> - <Bluesky width={64} height={64} /> - </div> - <div className="flex flex-col items-center gap-4"> - <Discord width={64} height={64} /> - </div> - </div> - ), -}; - -export default { title: 'Design System' } as MetaObj; diff --git a/apps/site/components/__design__/table.stories.tsx b/apps/site/components/__design__/table.stories.tsx deleted file mode 100644 index fb5be4b91ecd4..0000000000000 --- a/apps/site/components/__design__/table.stories.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -export const Table: StoryObj = { - render: () => ( - <main> - <table> - <thead> - <tr> - <th>Column 1</th> - <th>Column 2</th> - <th>Column 3</th> - </tr> - </thead> - <tbody> - <tr> - <td>Data 1</td> - <td>Data 2</td> - <td>Data 3</td> - </tr> - <tr> - <td>Data 1</td> - <td>Data 2</td> - <td>Data 3</td> - </tr> - <tr> - <td>Data 1</td> - <td>Data 2</td> - <td>Data 3</td> - </tr> - </tbody> - </table> - </main> - ), -}; - -export const HeadlessTable: StoryObj = { - render: () => ( - <main> - <table> - <tbody> - <tr> - <td>Data 1</td> - <td>Data 2</td> - <td>Data 3</td> - </tr> - <tr> - <td>Data 1</td> - <td>Data 2</td> - <td>Data 3</td> - </tr> - <tr> - <td>Data 1</td> - <td>Data 2</td> - <td>Data 3</td> - </tr> - </tbody> - </table> - </main> - ), -}; - -export default { title: 'Design System' } as MetaObj; diff --git a/apps/site/components/withAvatarGroup.tsx b/apps/site/components/withAvatarGroup.tsx index dbd8dee55e530..10bbcfc8732fb 100644 --- a/apps/site/components/withAvatarGroup.tsx +++ b/apps/site/components/withAvatarGroup.tsx @@ -1,12 +1,16 @@ +'use client'; + +import AvatarGroup from '@node-core/ui-components/Common/AvatarGroup'; +import Image from 'next/image'; import type { ComponentProps, FC } from 'react'; -import AvatarGroup from '@/components/Common/AvatarGroup'; +import Link from '@/components/Link'; import type { AuthorProps } from '@/types'; import { getAuthors } from '@/util/authorUtils'; type WithAvatarGroupProps = Omit< ComponentProps<typeof AvatarGroup>, - 'avatars' + 'avatars' | 'as' > & AuthorProps; @@ -22,6 +26,8 @@ const WithAvatarGroup: FC<WithAvatarGroupProps> = ({ names: names, clickable: clickable, })} + as={Link} + img={Image} {...props} /> ); diff --git a/apps/site/components/withBadge.tsx b/apps/site/components/withBadge.tsx index b927605692ab1..7b91c84c373c5 100644 --- a/apps/site/components/withBadge.tsx +++ b/apps/site/components/withBadge.tsx @@ -1,6 +1,7 @@ +import Badge from '@node-core/ui-components/Common/Badge'; import type { FC } from 'react'; -import Badge from '@/components/Common/Badge'; +import Link from '@/components/Link'; import { siteConfig } from '@/next.json.mjs'; import { dateIsBetween } from '@/util/dateUtils'; @@ -9,7 +10,12 @@ const WithBadge: FC<{ section: string }> = ({ section }) => { if (badge && dateIsBetween(badge.startDate, badge.endDate)) { return ( - <Badge badgeText={badge.title} kind={badge.kind} href={badge.link}> + <Badge + as={Link} + badgeText={badge.title} + kind={badge.kind} + href={badge.link} + > {badge.text} </Badge> ); diff --git a/apps/site/components/withBanner.tsx b/apps/site/components/withBanner.tsx index af571479ad8f4..32061a10c7284 100644 --- a/apps/site/components/withBanner.tsx +++ b/apps/site/components/withBanner.tsx @@ -1,6 +1,8 @@ +import { ArrowUpRightIcon } from '@heroicons/react/24/outline'; +import Banner from '@node-core/ui-components/Common/Banner'; import type { FC } from 'react'; -import Banner from '@/components/Common/Banner'; +import Link from '@/components/Link'; import { siteConfig } from '@/next.json.mjs'; import { dateIsBetween } from '@/util/dateUtils'; @@ -9,8 +11,13 @@ const WithBanner: FC<{ section: string }> = ({ section }) => { if (banner && dateIsBetween(banner.startDate, banner.endDate)) { return ( - <Banner type={banner.type} link={banner.link}> - {banner.text} + <Banner type={banner.type}> + {banner.link ? ( + <Link href={banner.link}>{banner.text}</Link> + ) : ( + banner.text + )} + {banner.link && <ArrowUpRightIcon />} </Banner> ); } diff --git a/apps/site/components/withBlogCategories.tsx b/apps/site/components/withBlogCategories.tsx index f061e93013187..3c4c4cbcb8d5b 100644 --- a/apps/site/components/withBlogCategories.tsx +++ b/apps/site/components/withBlogCategories.tsx @@ -1,7 +1,7 @@ import { useTranslations } from 'next-intl'; import type { ComponentProps, FC } from 'react'; -import BlogPostCard from '@/components/Common/BlogPostCard'; +import BlogPostCard from '@/components/Blog/BlogPostCard'; import LinkTabs from '@/components/Common/LinkTabs'; import Pagination from '@/components/Common/Pagination'; import type { BlogPostsRSC } from '@/types'; diff --git a/apps/site/components/withBreadcrumbs.tsx b/apps/site/components/withBreadcrumbs.tsx index 7d4c166c11350..2a740173061ae 100644 --- a/apps/site/components/withBreadcrumbs.tsx +++ b/apps/site/components/withBreadcrumbs.tsx @@ -1,9 +1,11 @@ 'use client'; +import type { BreadcrumbLink } from '@node-core/ui-components/Common/Breadcrumbs'; +import Breadcrumbs from '@node-core/ui-components/Common/Breadcrumbs'; +import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import type { BreadcrumbLink } from '@/components/Common/Breadcrumbs'; -import Breadcrumbs from '@/components/Common/Breadcrumbs'; +import Link from '@/components/Link'; import { useClientContext, useMediaQuery, useSiteNavigation } from '@/hooks'; import type { NavigationKeys } from '@/types'; import { dashToCamelCase } from '@/util/stringUtils'; @@ -14,6 +16,7 @@ type WithBreadcrumbsProps = { const WithBreadcrumbs: FC<WithBreadcrumbsProps> = ({ navKeys = [] }) => { const { getSideNavigation } = useSiteNavigation(); + const t = useTranslations(); const { pathname } = useClientContext(); const isMobileScreen = useMediaQuery('(max-width: 639px)'); @@ -57,7 +60,14 @@ const WithBreadcrumbs: FC<WithBreadcrumbsProps> = ({ navKeys = [] }) => { }, [] as Array<BreadcrumbLink>); }; - return <Breadcrumbs links={getBreadrumbs()} maxLength={maxLength} />; + return ( + <Breadcrumbs + links={getBreadrumbs()} + maxLength={maxLength} + as={Link} + homeLinkAriaLabel={t('components.common.breadcrumbs.navigateToHome')} + /> + ); }; export default WithBreadcrumbs; diff --git a/apps/site/components/withFooter.tsx b/apps/site/components/withFooter.tsx index abdc64b295f53..53b9c96592b54 100644 --- a/apps/site/components/withFooter.tsx +++ b/apps/site/components/withFooter.tsx @@ -1,7 +1,28 @@ +'use client'; + +import Footer from '@node-core/ui-components/Containers/Footer'; +import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Footer from '@/components/Containers/Footer'; +import Link from '@/components/Link'; +import { usePathname } from '@/navigation.mjs'; +import { siteNavigation } from '@/next.json.mjs'; + +const WithFooter: FC = () => { + const t = useTranslations(); + const pathname = usePathname(); + + const { socialLinks, footerLinks } = siteNavigation; + const updatedFooterLinks = footerLinks + .slice(0, -1) + .map(link => ({ ...link, text: t(link.text) })); + + // Add OpenJS link + updatedFooterLinks.push(footerLinks.at(-1)!); + + const navigation = { socialLinks, footerLinks: updatedFooterLinks }; -const WithFooter: FC = () => <Footer />; + return <Footer navigation={navigation} as={Link} pathname={pathname} />; +}; export default WithFooter; diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index fab6acf616060..133568e2793a8 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -1,10 +1,10 @@ 'use client'; +import MetaBar from '@node-core/ui-components/Containers/MetaBar'; +import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; import { useFormatter, useLocale, useTranslations } 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'; @@ -42,21 +42,24 @@ const WithMetaBar: FC = () => { return ( <MetaBar + heading={t('components.metabar.tableOfContents')} + as={Link} items={{ - 'components.metabar.lastUpdated': lastUpdated, - 'components.metabar.readingTime': readingTimeText, + [t('components.metabar.lastUpdated')]: lastUpdated, + [t('components.metabar.readingTime')]: readingTimeText, ...(usernames.length && { - [`components.metabar.${usernames.length > 1 ? 'authors' : 'author'}`]: - ( - <WithAvatarGroup - usernames={usernames} - limit={isMobileResolution ? 7 : isTabletResolution ? 5 : 9} - /> - ), + [t( + `components.metabar.${usernames.length > 1 ? 'authors' : 'author'}` + )]: ( + <WithAvatarGroup + usernames={usernames} + limit={isMobileResolution ? 7 : isTabletResolution ? 5 : 9} + /> + ), }), - 'components.metabar.contribute': ( + [t('components.metabar.contribute')]: ( <> - <GitHub className="fill-neutral-700 dark:fill-neutral-100" /> + <GitHubIcon className="fill-neutral-700 dark:fill-neutral-100" /> <Link href={ locale === defaultLocale.code diff --git a/apps/site/components/withNavBar.tsx b/apps/site/components/withNavBar.tsx index 21b39f48f44d3..9850ad9f31c8d 100644 --- a/apps/site/components/withNavBar.tsx +++ b/apps/site/components/withNavBar.tsx @@ -1,43 +1,86 @@ 'use client'; -import { useLocale } from 'next-intl'; +import LanguageDropdown from '@node-core/ui-components/Common/LanguageDropDown'; +import Skeleton from '@node-core/ui-components/Common/Skeleton'; +import ThemeToggle from '@node-core/ui-components/Common/ThemeToggle'; +import NavBar from '@node-core/ui-components/Containers/NavBar'; +// TODO(@AvivKeller): I don't like that we are importing styles from another module +import styles from '@node-core/ui-components/Containers/NavBar/index.module.css'; +import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; +import type { SimpleLocaleConfig } from '@node-core/ui-components/types'; +import dynamic from 'next/dynamic'; +import { useLocale, useTranslations } from 'next-intl'; import { useTheme } from 'next-themes'; import type { FC } from 'react'; -import NavBar from '@/components/Containers/NavBar'; +import Link from '@/components/Link'; import WithBanner from '@/components/withBanner'; +import WithNodejsLogo from '@/components/withNodejsLogo'; import { useSiteNavigation } from '@/hooks'; import { useRouter, usePathname } from '@/navigation.mjs'; import { availableLocales } from '@/next.locales.mjs'; +const SearchButton = dynamic(() => import('@/components/Common/Search'), { + ssr: false, + loading: () => ( + <Skeleton className={styles.searchButtonSkeleton} loading={true} /> + ), +}); + const WithNavBar: FC = () => { const { navigationItems } = useSiteNavigation(); const { resolvedTheme, setTheme } = useTheme(); const { replace } = useRouter(); const pathname = usePathname(); + const t = useTranslations(); const locale = useLocale(); const toggleCurrentTheme = () => setTheme(resolvedTheme === 'dark' ? 'light' : 'dark'); + const changeLanguage = (locale: SimpleLocaleConfig) => + replace(pathname!, { locale: locale.code }); + return ( <div> <WithBanner section="index" /> <NavBar - onThemeTogglerClick={toggleCurrentTheme} - languages={{ - currentLanguage: locale, - availableLanguages: availableLocales, - onChange: locale => replace(pathname!, { locale: locale.code }), - }} navItems={navigationItems.map(([, { label, link, target }]) => ({ link, text: label, target, }))} - /> + pathname={pathname} + as={Link} + Logo={WithNodejsLogo} + sidebarItemTogglerAriaLabel={t( + 'components.containers.navBar.controls.toggle' + )} + > + <SearchButton /> + + <ThemeToggle + onClick={toggleCurrentTheme} + ariaLabel={t('components.common.themeToggle.label')} + /> + + <LanguageDropdown + onChange={changeLanguage} + availableLanguages={availableLocales} + currentLanguage={locale} + ariaLabel={t('components.common.languageDropdown.label')} + /> + + <Link + href="https://github.com/nodejs/node" + aria-label="Node.js Github" + className={styles.ghIconWrapper} + > + <GitHubIcon /> + </Link> + </NavBar> </div> ); }; diff --git a/apps/site/components/withNodejsLogo.tsx b/apps/site/components/withNodejsLogo.tsx index d6c270d50641f..0b76506a77904 100644 --- a/apps/site/components/withNodejsLogo.tsx +++ b/apps/site/components/withNodejsLogo.tsx @@ -1,10 +1,17 @@ +import NodejsLogo from '@node-core/ui-components/Common/NodejsLogo'; +import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import NodejsLogo from '@/components/Common/NodejsLogo'; import { siteConfig } from '@/next.json.mjs'; -const WithNodejsLogo: FC = () => ( - <NodejsLogo variant={siteConfig.logoVariant} /> -); +const WithNodejsLogo: FC = () => { + const t = useTranslations(); + return ( + <NodejsLogo + variant={siteConfig.logoVariant} + ariaLabel={t('layouts.logo')} + /> + ); +}; export default WithNodejsLogo; diff --git a/apps/site/components/withProgressionSidebar.tsx b/apps/site/components/withProgressionSidebar.tsx index b71995a37c808..7994de82db2d4 100644 --- a/apps/site/components/withProgressionSidebar.tsx +++ b/apps/site/components/withProgressionSidebar.tsx @@ -1,8 +1,13 @@ -import type { RichTranslationValues } from 'next-intl'; +'use client'; + +import ProgressionSidebar from '@node-core/ui-components/Common/ProgressionSidebar'; +import { usePathname } from 'next/navigation'; +import { useTranslations, type RichTranslationValues } from 'next-intl'; import type { FC } from 'react'; -import ProgressionSidebar from '@/components/Common/ProgressionSidebar'; -import { useSiteNavigation } from '@/hooks'; +import Link from '@/components/Link'; +import { useSiteNavigation } from '@/hooks/server'; +import { useRouter } from '@/navigation.mjs'; import type { NavigationKeys } from '@/types'; type WithProgressionSidebarProps = { @@ -15,7 +20,9 @@ const WithProgressionSidebar: FC<WithProgressionSidebarProps> = ({ context, }) => { const { getSideNavigation } = useSiteNavigation(); - + const pathname = usePathname(); + const t = useTranslations(); + const { push } = useRouter(); const [[, sidebarNavigation]] = getSideNavigation([navKey], context); const mappedProgressionSidebarItems = sidebarNavigation.items.map( @@ -25,7 +32,15 @@ const WithProgressionSidebar: FC<WithProgressionSidebarProps> = ({ }) ); - return <ProgressionSidebar groups={mappedProgressionSidebarItems} />; + return ( + <ProgressionSidebar + groups={mappedProgressionSidebarItems} + pathname={pathname!} + title={t('components.common.sidebar.title')} + onSelect={push} + as={Link} + /> + ); }; export default WithProgressionSidebar; diff --git a/apps/site/components/withRouterSelect.tsx b/apps/site/components/withRouterSelect.tsx index f0efadac95640..7c526a8f4011c 100644 --- a/apps/site/components/withRouterSelect.tsx +++ b/apps/site/components/withRouterSelect.tsx @@ -1,8 +1,8 @@ 'use client'; +import Select from '@node-core/ui-components/Common/Select'; import type { ComponentProps, FC } from 'react'; -import Select from '@/components/Common/Select'; import { useRouter } from '@/navigation.mjs'; type WithSidebarSelectProps = Pick< diff --git a/apps/site/components/withSidebar.tsx b/apps/site/components/withSidebar.tsx index 8f358e450ecdf..a74be89323d85 100644 --- a/apps/site/components/withSidebar.tsx +++ b/apps/site/components/withSidebar.tsx @@ -1,8 +1,13 @@ -import type { RichTranslationValues } from 'next-intl'; +'use client'; + +import Sidebar from '@node-core/ui-components/Containers/Sidebar'; +import { usePathname } from 'next/navigation'; +import { useTranslations, type RichTranslationValues } from 'next-intl'; import type { FC } from 'react'; -import Sidebar from '@/components/Containers/Sidebar'; +import Link from '@/components/Link'; import { useSiteNavigation } from '@/hooks/server'; +import { useRouter } from '@/navigation.mjs'; import type { NavigationKeys } from '@/types'; type WithSidebarProps = { @@ -12,6 +17,9 @@ type WithSidebarProps = { const WithSidebar: FC<WithSidebarProps> = ({ navKeys, context }) => { const { getSideNavigation } = useSiteNavigation(); + const pathname = usePathname()!; + const t = useTranslations(); + const { push } = useRouter(); const mappedSidebarItems = getSideNavigation(navKeys, context).map( ([, { label, items }]) => ({ @@ -20,7 +28,15 @@ const WithSidebar: FC<WithSidebarProps> = ({ navKeys, context }) => { }) ); - return <Sidebar groups={mappedSidebarItems} />; + return ( + <Sidebar + groups={mappedSidebarItems} + pathname={pathname} + title={t('components.common.sidebar.title')} + onSelect={value => push(value)} + as={Link} + /> + ); }; export default WithSidebar; diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index 8c682bd3def2c..dbeafd7b881d1 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -2,7 +2,6 @@ import { FlatCompat } from '@eslint/eslintrc'; import importX from 'eslint-plugin-import-x'; import * as mdx from 'eslint-plugin-mdx'; 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 @@ -81,13 +80,9 @@ export default tseslint.config( }, }, { - files: ['.storybook/**', '**/*.mjs', '**/*.test.*'], + files: ['**/*.mjs', '**/*.test.*'], rules: { 'no-relative-import-paths/no-relative-import-paths': 'off', }, - }, - { - files: ['components/**/*.stories.tsx'], - extends: [...storybook.configs['flat/recommended']], } ); diff --git a/apps/site/layouts/GlowingBackdrop.tsx b/apps/site/layouts/GlowingBackdrop.tsx index a291865f640d8..491eb03b0bc7a 100644 --- a/apps/site/layouts/GlowingBackdrop.tsx +++ b/apps/site/layouts/GlowingBackdrop.tsx @@ -1,7 +1,7 @@ +import GlowingBackdrop from '@node-core/ui-components/Common/GlowingBackdrop'; import classNames from 'classnames'; import type { FC, PropsWithChildren } from 'react'; -import GlowingBackdrop from '@/components/Common/GlowingBackdrop'; import WithFooter from '@/components/withFooter'; import WithNavBar from '@/components/withNavBar'; diff --git a/apps/site/layouts/Post.tsx b/apps/site/layouts/Post.tsx index 767cab456dc92..57ee76f80347d 100644 --- a/apps/site/layouts/Post.tsx +++ b/apps/site/layouts/Post.tsx @@ -1,6 +1,6 @@ +import Preview from '@node-core/ui-components/Common/Preview'; import type { FC, PropsWithChildren } from 'react'; -import Preview from '@/components/Common/Preview'; import WithAvatarGroup from '@/components/withAvatarGroup'; import WithBlogCrossLinks from '@/components/withBlogCrossLinks'; import WithFooter from '@/components/withFooter'; diff --git a/apps/site/next.mdx.use.client.mjs b/apps/site/next.mdx.use.client.mjs index 64584887b2a7a..ca3f20882f805 100644 --- a/apps/site/next.mdx.use.client.mjs +++ b/apps/site/next.mdx.use.client.mjs @@ -1,6 +1,7 @@ 'use strict'; -import Blockquote from './components/Common/Blockquote'; +import Blockquote from '@node-core/ui-components/Common/Blockquote'; + import Button from './components/Common/Button'; import DownloadButton from './components/Downloads/DownloadButton'; import DownloadLink from './components/Downloads/DownloadLink'; diff --git a/apps/site/package.json b/apps/site/package.json index d7e50657d3b0e..a61227d1db300 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -16,8 +16,6 @@ "lint": "turbo run lint:md lint:snippets 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 --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", "test": "turbo test:unit" @@ -25,22 +23,15 @@ "dependencies": { "@heroicons/react": "~2.2.0", "@mdx-js/mdx": "^3.1.0", + "@node-core/ui-components": "*", "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", "@orama/react-components": "^0.5.1", "@oramacloud/client": "^2.1.4", - "@radix-ui/react-accessible-icon": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.6", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-scroll-area": "^1.2.3", - "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", - "@radix-ui/react-tooltip": "^1.1.8", - "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@tailwindcss/container-queries": "~0.1.1", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", "@vercel/otel": "~1.10.1", @@ -48,7 +39,6 @@ "autoprefixer": "~10.4.20", "classnames": "~2.5.1", "cross-env": "7.0.3", - "dedent": "1.5.3", "feed": "~4.2.2", "github-slugger": "~2.0.0", "glob": "~11.0.1", @@ -79,13 +69,6 @@ "devDependencies": { "@eslint/compat": "~1.2.7", "@next/eslint-plugin-next": "15.2.0", - "@storybook/addon-controls": "^8.6.3", - "@storybook/addon-interactions": "^8.6.3", - "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.3", - "@storybook/addon-viewport": "^8.6.3", - "@storybook/addon-webpack5-compiler-swc": "^2.1.0", - "@storybook/react-webpack5": "^8.6.3", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", @@ -96,14 +79,12 @@ "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.4", "eslint-plugin-react-hooks": "5.2.0", - "eslint-plugin-storybook": "~0.11.3", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "storybook": "^8.6.3", "stylelint": "16.15.0", "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", diff --git a/apps/site/providers/notificationProvider.tsx b/apps/site/providers/notificationProvider.tsx index 5b7e9590950f0..cd07fe6c1e029 100644 --- a/apps/site/providers/notificationProvider.tsx +++ b/apps/site/providers/notificationProvider.tsx @@ -1,3 +1,4 @@ +import Notification from '@node-core/ui-components/Common/Notification'; import * as Toast from '@radix-ui/react-toast'; import type { Dispatch, @@ -8,8 +9,6 @@ import type { } from 'react'; import { createContext, useEffect, useState } from 'react'; -import Notification from '@/components/Common/Notification'; - type NotificationContextType = { message: string | ReactNode; duration: number; diff --git a/apps/site/styles/effects.css b/apps/site/styles/effects.css index 874840458209a..a4c4df007ded9 100644 --- a/apps/site/styles/effects.css +++ b/apps/site/styles/effects.css @@ -1,16 +1,3 @@ -h1.special { - @apply bg-gradient-subtle-gray - dark:bg-gradient-subtle-white - bg-clip-text - text-4xl - leading-[3rem] - -tracking-[0.045rem] - [-webkit-text-fill-color:transparent] - md:text-5xl - md:leading-[4rem] - md:-tracking-[0.06rem]; -} - .turtle { @apply animate-surf absolute diff --git a/apps/site/styles/index.css b/apps/site/styles/index.css index 51f236e207c48..2c1c1b1a53051 100644 --- a/apps/site/styles/index.css +++ b/apps/site/styles/index.css @@ -6,9 +6,7 @@ * @see https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint */ -@import 'tailwindcss/base'; -@import 'tailwindcss/components'; -@import 'tailwindcss/utilities'; +@import '@node-core/ui-components/styles/index.css'; @import './base.css'; @import './markdown.css'; @import './effects.css'; diff --git a/apps/site/styles/markdown.css b/apps/site/styles/markdown.css index 4f60ba4a38a91..3984a3ed9c03c 100644 --- a/apps/site/styles/markdown.css +++ b/apps/site/styles/markdown.css @@ -93,10 +93,6 @@ main { &:has(code) { @apply max-xs:decoration-neutral-800 dark:max-xs:decoration-neutral-200; - - code { - @apply text-inherit; - } } } diff --git a/apps/site/tailwind.config.ts b/apps/site/tailwind.config.ts index 49e90dc0ac42a..30b7baf1d0bf9 100644 --- a/apps/site/tailwind.config.ts +++ b/apps/site/tailwind.config.ts @@ -1,186 +1 @@ -import type { Config } from 'tailwindcss'; -import plugin from 'tailwindcss/plugin'; - -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', - }, - pulse: { - 100: '#0000330F', - 200: '#00002D17', - 300: '#DDEAF814', - 400: '#D3EDF81D', - }, - white: '#FFFFFF', - transparent: 'transparent', - shadow: '#101828', - inherit: 'inherit', - }, - 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', - pulse: 'pulse 500ms infinite alternate-reverse', - 'pulse-dark': 'pulse-dark 500ms infinite alternate-reverse', - }, - 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)' }, - }, - pulse: { - from: { background: 'theme("colors.pulse.100")' }, - to: { background: 'theme("colors.pulse.200")' }, - }, - 'pulse-dark': { - from: { background: 'theme("colors.pulse.300")' }, - to: { background: 'theme("colors.pulse.400")' }, - }, - }, - }, - }, - darkMode: ['selector', '[data-theme="dark"]'], - plugins: [ - require('@savvywombat/tailwindcss-grid-areas'), - require('@tailwindcss/container-queries'), - plugin(function ({ addUtilities }) { - addUtilities({ - '.scrollbar-thin': { - 'scrollbar-width': 'thin', - }, - }); - }), - ], -} satisfies Config; +export { default } from '@node-core/ui-components/tailwind.config'; diff --git a/apps/site/tsconfig.json b/apps/site/tsconfig.json index 3aee2c1724e0e..e65aab6fc99c8 100644 --- a/apps/site/tsconfig.json +++ b/apps/site/tsconfig.json @@ -24,9 +24,7 @@ "**/*.mdx", "**/*.ts", "**/*.tsx", - ".next/types/**/*.ts", - ".storybook/**/*.ts", - ".storybook/**/*.tsx" + ".next/types/**/*.ts" ], "exclude": ["node_modules", ".next"] } diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 3e6e21152528f..4ebfd0d562679 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -100,7 +100,7 @@ "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx,mjs}", "{next-data,scripts,i18n}/**/*.{mjs,json}", - "{.storybook,public}/**/*.{ts,js,json}", + "public/**/*.{ts,js,json}", "*.{json,ts,tsx}" ] }, @@ -122,21 +122,6 @@ "format": { "cache": false }, - "storybook": { - "cache": false, - "persistent": true - }, - "storybook:build": { - "inputs": [ - "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", - "{app,components,layouts,pages,styles}/**/*.css", - "{next-data,scripts,i18n}/**/*.{mjs,json}", - "{.storybook,public}/**/*.{ts,js,css,json}", - "{app,pages}/**/*.{mdx,md}", - "*.{md,mdx,json,ts,tsx,mjs,yml}" - ], - "outputs": ["storybook-static/**"] - }, "test:unit": { "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx,mjs}", diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index 0c537fb0f69fb..e61a0ff004dac 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -1,9 +1,9 @@ +import type { SelectValue } from '@node-core/ui-components/Common/Select'; +import * as InstallMethodIcons from '@node-core/ui-components/Icons/InstallationMethod'; +import * as OSIcons from '@node-core/ui-components/Icons/OperatingSystem'; +import * as PackageManagerIcons from '@node-core/ui-components/Icons/PackageManager'; import satisfies from 'semver/functions/satisfies'; -import type { SelectValue } from '@/components/Common/Select'; -import InstallMethodIcons from '@/components/Icons/InstallationMethod'; -import OSIcons from '@/components/Icons/OperatingSystem'; -import PackageManagerIcons from '@/components/Icons/PackageManager'; import type { NodeReleaseStatus } from '@/types'; import type * as Types from '@/types/release'; import type { UserOS, UserPlatform } from '@/types/userOS'; diff --git a/package-lock.json b/package-lock.json index 2978fed0058c2..39b7b51d48ef5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,22 +37,15 @@ "dependencies": { "@heroicons/react": "~2.2.0", "@mdx-js/mdx": "^3.1.0", + "@node-core/ui-components": "*", "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", "@orama/react-components": "^0.5.1", "@oramacloud/client": "^2.1.4", - "@radix-ui/react-accessible-icon": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.6", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-scroll-area": "^1.2.3", - "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", - "@radix-ui/react-tooltip": "^1.1.8", - "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@tailwindcss/container-queries": "~0.1.1", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", "@vercel/otel": "~1.10.1", @@ -60,7 +53,6 @@ "autoprefixer": "~10.4.20", "classnames": "~2.5.1", "cross-env": "7.0.3", - "dedent": "1.5.3", "feed": "~4.2.2", "github-slugger": "~2.0.0", "glob": "~11.0.1", @@ -91,13 +83,6 @@ "devDependencies": { "@eslint/compat": "~1.2.7", "@next/eslint-plugin-next": "15.2.0", - "@storybook/addon-controls": "^8.6.3", - "@storybook/addon-interactions": "^8.6.3", - "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.3", - "@storybook/addon-viewport": "^8.6.3", - "@storybook/addon-webpack5-compiler-swc": "^2.1.0", - "@storybook/react-webpack5": "^8.6.3", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", @@ -108,14 +93,12 @@ "eslint-plugin-mdx": "~3.1.5", "eslint-plugin-react": "~7.37.4", "eslint-plugin-react-hooks": "5.2.0", - "eslint-plugin-storybook": "~0.11.3", "handlebars": "4.7.8", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "storybook": "^8.6.3", "stylelint": "16.15.0", "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", @@ -125,25 +108,6 @@ "user-agent-data-types": "0.4.2" } }, - "apps/site/node_modules/eslint-plugin-storybook": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.3.tgz", - "integrity": "sha512-gDBnBZiyk4ZG7OMSJRaHBcuJ8TMCXgMIQ3HB/XvtN0SvSio2ZOIeYD3yGj39g/DbyCe/Bg02j/ip9tWlDEs82A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf": "^0.1.11", - "@typescript-eslint/utils": "^8.8.1", - "ts-dedent": "^2.2.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "eslint": ">=8", - "typescript": ">=4.8.4 <5.8.0" - } - }, "node_modules/@adobe/css-tools": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", @@ -2540,6 +2504,19 @@ "node": ">=8" } }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -3371,6 +3348,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 @@ -4139,29 +4120,6 @@ "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", "license": "MIT" }, - "node_modules/@radix-ui/react-accessible-icon": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.2.tgz", - "integrity": "sha512-+rnMO0SEfzkcHr93RshkQVpOA26MtGOv4pcS9QUnLg4F8+GDmCJ8c2FEPhPz5e7arf31EzbTqJxFbzg3qen14g==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-visually-hidden": "1.1.2" - }, - "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-arrow": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", @@ -5851,6 +5809,24 @@ "tslib": "^2.8.0" } }, + "node_modules/@swc/jest": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.37.tgz", + "integrity": "sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/create-cache-key-function": "^29.7.0", + "@swc/counter": "^0.1.3", + "jsonc-parser": "^3.2.0" + }, + "engines": { + "npm": ">= 7.0.0" + }, + "peerDependencies": { + "@swc/core": "*" + } + }, "node_modules/@swc/types": { "version": "0.1.19", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.19.tgz", @@ -9301,6 +9277,7 @@ "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" @@ -10878,6 +10855,25 @@ "semver": "bin/semver.js" } }, + "node_modules/eslint-plugin-storybook": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.3.tgz", + "integrity": "sha512-gDBnBZiyk4ZG7OMSJRaHBcuJ8TMCXgMIQ3HB/XvtN0SvSio2ZOIeYD3yGj39g/DbyCe/Bg02j/ip9tWlDEs82A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.1.11", + "@typescript-eslint/utils": "^8.8.1", + "ts-dedent": "^2.2.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "eslint": ">=8", + "typescript": ">=4.8.4 <5.8.0" + } + }, "node_modules/eslint-scope": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", @@ -12389,6 +12385,13 @@ "node": ">=0.10.0" } }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true, + "license": "(Apache-2.0 OR MPL-1.1)" + }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -12896,6 +12899,19 @@ "postcss": "^8.1.0" } }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -16230,6 +16246,13 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -26412,6 +26435,284 @@ "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } + }, + "packages/ui-components": { + "name": "@node-core/ui-components", + "dependencies": { + "@heroicons/react": "^2.2.0", + "@radix-ui/react-dropdown-menu": "~2.1.6", + "@radix-ui/react-label": "~2.1.2", + "@radix-ui/react-scroll-area": "~1.2.3", + "@radix-ui/react-select": "~2.1.6", + "@radix-ui/react-tabs": "~1.1.3", + "@radix-ui/react-toast": "~1.2.6", + "@radix-ui/react-tooltip": "~1.1.8", + "@savvywombat/tailwindcss-grid-areas": "~4.0.0", + "@tailwindcss/container-queries": "~0.1.1", + "@vcarl/remark-headings": "~0.1.0", + "classnames": "~2.5.1", + "tailwindcss": "~3.4.17" + }, + "devDependencies": { + "@node-core/website-i18n": "*", + "@storybook/addon-controls": "^8.6.3", + "@storybook/addon-interactions": "^8.6.3", + "@storybook/addon-styling-webpack": "^1.0.1", + "@storybook/addon-themes": "^8.6.3", + "@storybook/addon-viewport": "^8.6.3", + "@storybook/addon-webpack5-compiler-swc": "^2.1.0", + "@storybook/react-webpack5": "^8.6.3", + "@swc/jest": "^0.2.37", + "@testing-library/jest-dom": "~6.6.3", + "@testing-library/react": "~16.2.0", + "@testing-library/user-event": "~14.6.1", + "eslint-plugin-react": "~7.37.4", + "eslint-plugin-storybook": "~0.11.3", + "identity-obj-proxy": "^3.0.0", + "jest": "29.7.0", + "jest-environment-jsdom": "29.7.0", + "jest-junit": "16.0.0", + "storybook": "^8.6.3", + "stylelint": "^16.15.0", + "stylelint-config-standard": "^37.0.0", + "stylelint-order": "6.0.4", + "stylelint-selector-bem-pattern": "4.0.1", + "typescript": "~5.8.2", + "typescript-eslint": "~8.26.0" + }, + "engines": { + "node": ">=20" + } + }, + "packages/ui-components/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.0.tgz", + "integrity": "sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.26.0", + "@typescript-eslint/type-utils": "8.26.0", + "@typescript-eslint/utils": "8.26.0", + "@typescript-eslint/visitor-keys": "8.26.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/ui-components/node_modules/@typescript-eslint/parser": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.0.tgz", + "integrity": "sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.26.0", + "@typescript-eslint/types": "8.26.0", + "@typescript-eslint/typescript-estree": "8.26.0", + "@typescript-eslint/visitor-keys": "8.26.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/ui-components/node_modules/@typescript-eslint/scope-manager": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.0.tgz", + "integrity": "sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.0", + "@typescript-eslint/visitor-keys": "8.26.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/ui-components/node_modules/@typescript-eslint/type-utils": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.0.tgz", + "integrity": "sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.26.0", + "@typescript-eslint/utils": "8.26.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/ui-components/node_modules/@typescript-eslint/types": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.0.tgz", + "integrity": "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/ui-components/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.0.tgz", + "integrity": "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.0", + "@typescript-eslint/visitor-keys": "8.26.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": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/ui-components/node_modules/@typescript-eslint/utils": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.0.tgz", + "integrity": "sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.26.0", + "@typescript-eslint/types": "8.26.0", + "@typescript-eslint/typescript-estree": "8.26.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/ui-components/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.0.tgz", + "integrity": "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/ui-components/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" + } + }, + "packages/ui-components/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "packages/ui-components/node_modules/typescript-eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.0.tgz", + "integrity": "sha512-PtVz9nAnuNJuAVeUFvwztjuUgSnJInODAUx47VDwWPXzd5vismPOtPtt83tzNXyOjVQbPRp786D6WFW/M2koIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.26.0", + "@typescript-eslint/parser": "8.26.0", + "@typescript-eslint/utils": "8.26.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", + "typescript": ">=4.8.4 <5.9.0" + } } } } diff --git a/package.json b/package.json index 9eb1905513cf8..51c2e580cc9c0 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "scripts": { "dev": "turbo run dev", "build": "turbo run build", + "storybook": "turbo run storybook", "storybook:build": "turbo run storybook:build", "start": "turbo run start", "check-types": "turbo check-types", diff --git a/packages/ui-components/.postcssrc.json b/packages/ui-components/.postcssrc.json new file mode 100644 index 0000000000000..f48fb87dce6e0 --- /dev/null +++ b/packages/ui-components/.postcssrc.json @@ -0,0 +1,11 @@ +{ + "plugins": { + "postcss-mixins": {}, + "postcss-simple-vars": {}, + "postcss-calc": {}, + "postcss-import": {}, + "tailwindcss/nesting": {}, + "tailwindcss": {}, + "autoprefixer": {} + } +} diff --git a/apps/site/.storybook/constants.ts b/packages/ui-components/.storybook/constants.ts similarity index 100% rename from apps/site/.storybook/constants.ts rename to packages/ui-components/.storybook/constants.ts 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/apps/site/.storybook/preview-head.html b/packages/ui-components/.storybook/preview-head.html similarity index 100% rename from apps/site/.storybook/preview-head.html rename to packages/ui-components/.storybook/preview-head.html diff --git a/apps/site/.storybook/preview.tsx b/packages/ui-components/.storybook/preview.tsx similarity index 50% rename from apps/site/.storybook/preview.tsx rename to packages/ui-components/.storybook/preview.tsx index 1cc9e387dce32..09aae8acad918 100644 --- a/apps/site/.storybook/preview.tsx +++ b/packages/ui-components/.storybook/preview.tsx @@ -1,10 +1,8 @@ -import englishLocale from '@node-core/website-i18n/locales/en.json'; +import * as Toast from '@radix-ui/react-toast'; 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 './constants'; import '../styles/index.css'; @@ -15,15 +13,10 @@ const preview: Preview = { }, decorators: [ Story => ( - <NextIntlClientProvider - locale="en" - timeZone="Etc/UTC" - messages={englishLocale} - > - <NotificationProvider viewportClassName="absolute top-0 left-0 list-none"> - <Story /> - </NotificationProvider> - </NextIntlClientProvider> + <Toast.Provider> + <Story /> + <Toast.Viewport /> + </Toast.Provider> ), withThemeByDataAttribute<ReactRenderer>({ themes: { light: '', dark: 'dark' }, 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..1858d79f3f0ed --- /dev/null +++ b/packages/ui-components/.stylelintrc.mjs @@ -0,0 +1,46 @@ +// 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 }], + 'at-rule-no-deprecated': [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/Common/AlertBox/index.module.css b/packages/ui-components/Common/AlertBox/index.module.css similarity index 100% rename from apps/site/components/Common/AlertBox/index.module.css rename to packages/ui-components/Common/AlertBox/index.module.css diff --git a/apps/site/components/Common/AlertBox/index.stories.tsx b/packages/ui-components/Common/AlertBox/index.stories.tsx similarity index 96% rename from apps/site/components/Common/AlertBox/index.stories.tsx rename to packages/ui-components/Common/AlertBox/index.stories.tsx index e5b5340faba61..5329069af7b89 100644 --- a/apps/site/components/Common/AlertBox/index.stories.tsx +++ b/packages/ui-components/Common/AlertBox/index.stories.tsx @@ -1,7 +1,7 @@ import { ExclamationCircleIcon } from '@heroicons/react/24/solid'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import AlertBox from '@/components/Common/AlertBox'; +import AlertBox from '@node-core/ui-components/Common/AlertBox'; type Story = StoryObj<typeof AlertBox>; type Meta = MetaObj<typeof AlertBox>; diff --git a/apps/site/components/Common/AlertBox/index.tsx b/packages/ui-components/Common/AlertBox/index.tsx similarity index 100% rename from apps/site/components/Common/AlertBox/index.tsx rename to packages/ui-components/Common/AlertBox/index.tsx diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.module.css b/packages/ui-components/Common/AvatarGroup/Avatar/index.module.css similarity index 100% rename from apps/site/components/Common/AvatarGroup/Avatar/index.module.css rename to packages/ui-components/Common/AvatarGroup/Avatar/index.module.css diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx b/packages/ui-components/Common/AvatarGroup/Avatar/index.stories.tsx similarity index 66% rename from apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx rename to packages/ui-components/Common/AvatarGroup/Avatar/index.stories.tsx index e676fc02dc440..b1520f9f3cf44 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.stories.tsx +++ b/packages/ui-components/Common/AvatarGroup/Avatar/index.stories.tsx @@ -1,15 +1,14 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Avatar from '@/components/Common/AvatarGroup/Avatar'; -import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; +import Avatar from '@node-core/ui-components/Common/AvatarGroup/Avatar'; type Story = StoryObj<typeof Avatar>; type Meta = MetaObj<typeof Avatar>; export const Default: Story = { args: { - image: getGitHubAvatarUrl('ovflowd'), - nickname: 'ovflowd', + image: 'https://avatars.githubusercontent.com/ghost', + nickname: 'ghost', }, }; diff --git a/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx b/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx new file mode 100644 index 0000000000000..fcf15fc679599 --- /dev/null +++ b/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx @@ -0,0 +1,76 @@ +import classNames from 'classnames'; +import type { HTMLAttributes, ElementType } from 'react'; +import { forwardRef } from 'react'; + +import type { LinkLike } from '@node-core/ui-components/types'; + +import styles from './index.module.css'; + +export type AvatarProps = { + image?: string; + name?: string; + nickname: string; + fallback?: string; + size?: 'small' | 'medium'; + url?: string; + as?: LinkLike | 'div'; + img?: ElementType | 'img'; +}; + +// @TODO: We temporarily removed the Avatar Radix UI primitive, since it was causing flashing +// during initial load and not being able to render nicely when images are already cached. +// @see https://github.com/radix-ui/primitives/pull/3008 +const Avatar = forwardRef< + HTMLSpanElement, + HTMLAttributes<HTMLSpanElement> & AvatarProps +>( + ( + { + image, + nickname, + name, + fallback, + url, + size = 'small', + as: Component = 'a', + img: Image = 'img', + ...props + }, + ref + ) => { + if (!url) Component = 'div'; + return ( + <span + {...props} + ref={ref} + className={classNames(styles.avatar, styles[size], props.className)} + > + <Component + href={url || undefined} + target={url ? '_blank' : undefined} + className={styles.wrapper} + > + {image && ( + <Image + width={40} + height={40} + loading="lazy" + decoding="async" + src={image} + alt={name || nickname} + className={styles.item} + /> + )} + + {!image && ( + <span className={classNames(styles.item, styles[size])}> + {fallback} + </span> + )} + </Component> + </span> + ); + } +); + +export default Avatar; diff --git a/apps/site/components/Common/AvatarGroup/Overlay/index.module.css b/packages/ui-components/Common/AvatarGroup/Overlay/index.module.css similarity index 100% rename from apps/site/components/Common/AvatarGroup/Overlay/index.module.css rename to packages/ui-components/Common/AvatarGroup/Overlay/index.module.css diff --git a/packages/ui-components/Common/AvatarGroup/Overlay/index.stories.tsx b/packages/ui-components/Common/AvatarGroup/Overlay/index.stories.tsx new file mode 100644 index 0000000000000..77dbb5b53bd57 --- /dev/null +++ b/packages/ui-components/Common/AvatarGroup/Overlay/index.stories.tsx @@ -0,0 +1,33 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import AvatarOverlay from '@node-core/ui-components/Common/AvatarGroup/Overlay'; + +type Story = StoryObj<typeof AvatarOverlay>; +type Meta = MetaObj<typeof AvatarOverlay>; + +const author = { + image: 'https://avatars.githubusercontent.com/ghost', + name: 'Ghost User', + nickname: 'ghost', + fallback: 'GU', +}; + +export const Default: Story = { + args: author, +}; + +export const FallBack: Story = { + args: { + nickname: author.nickname, + fallback: author.fallback, + }, +}; + +export const WithoutName: Story = { + args: { + ...author, + name: undefined, + }, +}; + +export default { component: AvatarOverlay } as Meta; diff --git a/apps/site/components/Common/AvatarGroup/Overlay/index.tsx b/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx similarity index 78% rename from apps/site/components/Common/AvatarGroup/Overlay/index.tsx rename to packages/ui-components/Common/AvatarGroup/Overlay/index.tsx index 0fa95e1978363..9e74a9a34b85c 100644 --- a/apps/site/components/Common/AvatarGroup/Overlay/index.tsx +++ b/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx @@ -1,8 +1,7 @@ import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; import type { ComponentProps, FC } from 'react'; -import Avatar from '@/components/Common/AvatarGroup/Avatar'; -import Link from '@/components/Link'; +import Avatar from '@node-core/ui-components/Common/AvatarGroup/Avatar'; import styles from './index.module.css'; @@ -16,14 +15,17 @@ const AvatarOverlay: FC<AvatarOverlayProps> = ({ nickname, fallback, url, + as: Component = 'a', + img, }) => ( - <Link className={styles.overlay} href={url} target="_blank"> + <Component className={styles.overlay} href={url} target="_blank"> <Avatar image={image} name={name} nickname={nickname} fallback={fallback} size="medium" + img={img} /> <div className={styles.user}> @@ -31,7 +33,7 @@ const AvatarOverlay: FC<AvatarOverlayProps> = ({ {nickname && <div className={styles.nickname}>{nickname}</div>} </div> <ArrowUpRightIcon className={styles.arrow} /> - </Link> + </Component> ); export default AvatarOverlay; diff --git a/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs b/packages/ui-components/Common/AvatarGroup/__tests__/index.test.mjs similarity index 59% rename from apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs rename to packages/ui-components/Common/AvatarGroup/__tests__/index.test.mjs index ad3986cc3631e..61ae2f643b5bc 100644 --- a/apps/site/components/Common/AvatarGroup/__tests__/index.test.mjs +++ b/packages/ui-components/Common/AvatarGroup/__tests__/index.test.mjs @@ -2,8 +2,6 @@ import { render, fireEvent } from '@testing-library/react'; import AvatarGroup from '../index'; -import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; - const names = [ 'ovflowd', 'bmuenzenmeyer', @@ -11,6 +9,7 @@ const names = [ 'HinataKah0', 'Harkunwar', 'rodion-arr', + 'avivkeller', 'mikeesto', 'bnb', 'benhalverson', @@ -22,25 +21,32 @@ const names = [ ]; const avatars = names.map(name => ({ - image: getGitHubAvatarUrl(name), + image: `https://avatars.githubusercontent.com/${name}`, nickname: name, })); +const limit = 2; +const remaining = names.length - limit; + describe('AvatarGroup', () => { it('renders the AvatarGroup component properly', () => { - const { getByText } = render(<AvatarGroup avatars={avatars} limit={2} />); + const { getByText } = render( + <AvatarGroup avatars={avatars} limit={limit} /> + ); - const showMoreButton = getByText('+12'); + const showMoreButton = getByText(`+${remaining}`); expect(showMoreButton).toBeInTheDocument(); }); it('displays the rest of the avatars when "show more" button is clicked', () => { - const { getByText } = render(<AvatarGroup avatars={avatars} limit={2} />); + const { getByText } = render( + <AvatarGroup avatars={avatars} limit={limit} /> + ); - const showMoreButton = getByText('+12'); + const showMoreButton = getByText(`+${remaining}`); fireEvent.click(showMoreButton); - const hideMoreButton = getByText('-12'); + const hideMoreButton = getByText(`-${remaining}`); expect(hideMoreButton).toBeInTheDocument(); }); }); diff --git a/apps/site/components/Common/AvatarGroup/index.module.css b/packages/ui-components/Common/AvatarGroup/index.module.css similarity index 100% rename from apps/site/components/Common/AvatarGroup/index.module.css rename to packages/ui-components/Common/AvatarGroup/index.module.css diff --git a/apps/site/components/Common/AvatarGroup/index.stories.tsx b/packages/ui-components/Common/AvatarGroup/index.stories.tsx similarity index 78% rename from apps/site/components/Common/AvatarGroup/index.stories.tsx rename to packages/ui-components/Common/AvatarGroup/index.stories.tsx index 2a927ac95ba66..928f369286ddb 100644 --- a/apps/site/components/Common/AvatarGroup/index.stories.tsx +++ b/packages/ui-components/Common/AvatarGroup/index.stories.tsx @@ -1,7 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import AvatarGroup from '@/components/Common/AvatarGroup'; -import { getAuthorWithId } from '@/util/authorUtils'; +import AvatarGroup from '@node-core/ui-components/Common/AvatarGroup'; type Story = StoryObj<typeof AvatarGroup>; type Meta = MetaObj<typeof AvatarGroup>; @@ -21,10 +20,15 @@ const names = [ 'Wai-Dung', 'manishprivet', 'araujogui', + 'avivkeller', ]; const defaultProps = { - avatars: getAuthorWithId(names, true), + avatars: names.map(name => ({ + image: `https://avatars.githubusercontent.com/${name}`, + nickname: name, + fallback: 'FB', + })), }; export const Default: Story = { diff --git a/packages/ui-components/Common/AvatarGroup/index.tsx b/packages/ui-components/Common/AvatarGroup/index.tsx new file mode 100644 index 0000000000000..53bc0d6f61a03 --- /dev/null +++ b/packages/ui-components/Common/AvatarGroup/index.tsx @@ -0,0 +1,90 @@ +'use client'; + +import classNames from 'classnames'; +import type { FC, ElementType } from 'react'; +import { useState, useMemo } from 'react'; + +import type { AvatarProps } from '@node-core/ui-components/Common/AvatarGroup/Avatar'; +import Avatar from '@node-core/ui-components/Common/AvatarGroup/Avatar'; +import avatarstyles from '@node-core/ui-components/Common/AvatarGroup/Avatar/index.module.css'; +import AvatarOverlay from '@node-core/ui-components/Common/AvatarGroup/Overlay'; +import Tooltip from '@node-core/ui-components/Common/Tooltip'; +import type { LinkLike } from '@node-core/ui-components/types'; + +import styles from './index.module.css'; + +type AvatarGroupProps = { + avatars: Array<AvatarProps>; + limit?: number; + isExpandable?: boolean; + size?: AvatarProps['size']; + container?: HTMLElement; + as?: LinkLike; + img?: ElementType | 'img'; +}; + +const AvatarGroup: FC<AvatarGroupProps> = ({ + avatars, + limit = 10, + isExpandable = true, + size = 'small', + container, + as, + img, +}) => { + const [showMore, setShowMore] = useState(false); + + const renderAvatars = useMemo( + () => avatars.slice(0, showMore ? avatars.length : limit), + [avatars, limit, showMore] + ); + + const handleShowMoreClick = isExpandable + ? () => setShowMore(prev => !prev) + : undefined; + + return ( + <div + className={classNames(styles.avatarGroup, styles[size], { + [styles.expandable]: avatars.length > limit, + })} + > + {renderAvatars.map(avatar => ( + <Tooltip + key={avatar.nickname} + asChild + container={container} + content={<AvatarOverlay {...avatar} as={as} img={img} />} + > + <Avatar + {...avatar} + size={size} + className={classNames({ + 'cursor-pointer': avatar.url, + 'pointer-events-none': !avatar.url, + })} + as={as} + img={img} + /> + </Tooltip> + ))} + + {avatars.length > limit && ( + <span + onClick={handleShowMoreClick} + className={classNames( + avatarstyles.avatar, + avatarstyles[size], + 'cursor-pointer' + )} + > + <span className={avatarstyles.item}> + {`${showMore ? '-' : '+'}${avatars.length - limit}`} + </span> + </span> + )} + </div> + ); +}; + +export default AvatarGroup; diff --git a/apps/site/components/Common/Badge/index.module.css b/packages/ui-components/Common/Badge/index.module.css similarity index 100% rename from apps/site/components/Common/Badge/index.module.css rename to packages/ui-components/Common/Badge/index.module.css diff --git a/apps/site/components/Common/Badge/index.stories.tsx b/packages/ui-components/Common/Badge/index.stories.tsx similarity index 91% rename from apps/site/components/Common/Badge/index.stories.tsx rename to packages/ui-components/Common/Badge/index.stories.tsx index 0b200b997c009..b37dfa5b0a621 100644 --- a/apps/site/components/Common/Badge/index.stories.tsx +++ b/packages/ui-components/Common/Badge/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Badge from '@/components/Common/Badge'; +import Badge from '@node-core/ui-components/Common/Badge'; type Story = StoryObj<typeof Badge>; type Meta = MetaObj<typeof Badge>; diff --git a/apps/site/components/Common/Badge/index.tsx b/packages/ui-components/Common/Badge/index.tsx similarity index 73% rename from apps/site/components/Common/Badge/index.tsx rename to packages/ui-components/Common/Badge/index.tsx index 8463fccf52e62..49590ebefe08e 100644 --- a/apps/site/components/Common/Badge/index.tsx +++ b/packages/ui-components/Common/Badge/index.tsx @@ -1,26 +1,28 @@ import ArrowRightIcon from '@heroicons/react/24/solid/ArrowRightIcon'; import type { ComponentProps, FC, PropsWithChildren } from 'react'; -import Link from '@/components/Link'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; type BadgeProps = { kind?: 'default' | 'warning' | 'error'; badgeText?: string; -} & ComponentProps<typeof Link>; + as: LinkLike; +} & ComponentProps<LinkLike>; const Badge: FC<PropsWithChildren<BadgeProps>> = ({ kind = 'default', badgeText, children, + as: Component = 'a', ...args }) => ( - <Link className={`${styles.wrapper} ${styles[kind]}`} {...args}> + <Component className={`${styles.wrapper} ${styles[kind]}`} {...args}> {badgeText && <span className={styles.badge}>{badgeText}</span>} <span className={styles.message}>{children}</span> {args.href && <ArrowRightIcon className={styles.icon} />} - </Link> + </Component> ); export default Badge; diff --git a/apps/site/components/Common/Banner/index.module.css b/packages/ui-components/Common/Banner/index.module.css similarity index 100% rename from apps/site/components/Common/Banner/index.module.css rename to packages/ui-components/Common/Banner/index.module.css diff --git a/apps/site/components/Common/Banner/index.stories.tsx b/packages/ui-components/Common/Banner/index.stories.tsx similarity index 61% rename from apps/site/components/Common/Banner/index.stories.tsx rename to packages/ui-components/Common/Banner/index.stories.tsx index cf489c8d983a6..f893f3cab801e 100644 --- a/apps/site/components/Common/Banner/index.stories.tsx +++ b/packages/ui-components/Common/Banner/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Banner from '@/components/Common/Banner'; +import Banner from '@node-core/ui-components/Common/Banner'; type Story = StoryObj<typeof Banner>; type Meta = MetaObj<typeof Banner>; @@ -9,7 +9,6 @@ export const Default: Story = { args: { children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', type: 'default', - link: 'https://github.com/openjs-foundation/summit/issues/360', }, }; @@ -17,7 +16,6 @@ export const Error: Story = { args: { children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', type: 'error', - link: 'https://github.com/nodejs/nodejs.org/issues/4495', }, }; @@ -25,14 +23,6 @@ export const Warning: Story = { args: { children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', type: 'warning', - link: 'https://github.com/nodejs/nodejs.org/issues/4495', - }, -}; - -export const NoLink: Story = { - args: { - children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', - type: 'default', }, }; diff --git a/apps/site/components/Common/Banner/index.tsx b/packages/ui-components/Common/Banner/index.tsx similarity index 58% rename from apps/site/components/Common/Banner/index.tsx rename to packages/ui-components/Common/Banner/index.tsx index f72b98e15a79e..0eb3f9faf73ef 100644 --- a/apps/site/components/Common/Banner/index.tsx +++ b/packages/ui-components/Common/Banner/index.tsx @@ -1,23 +1,17 @@ -import { ArrowUpRightIcon } from '@heroicons/react/24/outline'; import type { FC, PropsWithChildren } from 'react'; -import Link from '@/components/Link'; - import styles from './index.module.css'; -type BannerProps = { - link?: string; +export type BannerProps = { type?: 'default' | 'warning' | 'error'; }; const Banner: FC<PropsWithChildren<BannerProps>> = ({ type = 'default', - link, children, }) => ( <div className={`${styles.banner} ${styles[type] || styles.default}`}> - {link ? <Link href={link}>{children}</Link> : children} - {link && <ArrowUpRightIcon />} + {children} </div> ); diff --git a/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs b/packages/ui-components/Common/BaseActiveLink/__tests__/index.test.mjs similarity index 63% rename from apps/site/components/Common/ActiveLink/__tests__/index.test.mjs rename to packages/ui-components/Common/BaseActiveLink/__tests__/index.test.mjs index df11e03aa6f3f..2ce5778f60b63 100644 --- a/apps/site/components/Common/ActiveLink/__tests__/index.test.mjs +++ b/packages/ui-components/Common/BaseActiveLink/__tests__/index.test.mjs @@ -2,11 +2,6 @@ import { render, screen } from '@testing-library/react'; import ActiveLink from '..'; -jest.mock('@/navigation.mjs', () => ({ - ...jest.requireActual('@/navigation.mjs'), - usePathname: jest.fn(), -})); - describe('ActiveLink', () => { it('renders as localized link', () => { render( @@ -43,22 +38,4 @@ describe('ActiveLink', () => { 'link active' ); }); - - it('does not set active class when href base does not match', () => { - const { usePathname } = require('@/navigation.mjs'); - usePathname.mockReturnValue('/not-link/sublink'); - - render( - <ActiveLink - className="link" - activeClassName="active" - allowSubPath={true} - href={'/link/sub-link'} - > - Link - </ActiveLink> - ); - - expect(screen.findByText('Link')).resolves.toHaveAttribute('class', 'link'); - }); }); diff --git a/apps/site/components/Common/ActiveLink/index.tsx b/packages/ui-components/Common/BaseActiveLink/index.tsx similarity index 60% rename from apps/site/components/Common/ActiveLink/index.tsx rename to packages/ui-components/Common/BaseActiveLink/index.tsx index bdf566d87dc71..40d85fd9c0db7 100644 --- a/apps/site/components/Common/ActiveLink/index.tsx +++ b/packages/ui-components/Common/BaseActiveLink/index.tsx @@ -1,26 +1,24 @@ -'use client'; - import classNames from 'classnames'; import type { ComponentProps, FC } from 'react'; -import Link from '@/components/Link'; -import { usePathname } from '@/navigation.mjs'; +import type { LinkLike } from '@node-core/ui-components/types'; -type ActiveLocalizedLinkProps = ComponentProps<typeof Link> & { +export type ActiveLocalizedLinkProps = ComponentProps<LinkLike> & { activeClassName?: string; allowSubPath?: boolean; + pathname?: string; + as?: LinkLike; }; -const ActiveLink: FC<ActiveLocalizedLinkProps> = ({ - children, +const BaseActiveLink: FC<ActiveLocalizedLinkProps> = ({ activeClassName = 'active', allowSubPath = false, className, href = '', + pathname = '/', + as: Component = 'a', ...props }) => { - const pathname = usePathname(); - const finalClassName = classNames(className, { [activeClassName]: allowSubPath ? // When using allowSubPath we want only to check if @@ -30,11 +28,7 @@ const ActiveLink: FC<ActiveLocalizedLinkProps> = ({ : href.toString() === pathname, }); - return ( - <Link className={finalClassName} href={href} {...props}> - {children} - </Link> - ); + return <Component className={finalClassName} href={href} {...props} />; }; -export default ActiveLink; +export default BaseActiveLink; diff --git a/apps/site/components/Common/Button/index.module.css b/packages/ui-components/Common/BaseButton/index.module.css similarity index 100% rename from apps/site/components/Common/Button/index.module.css rename to packages/ui-components/Common/BaseButton/index.module.css diff --git a/apps/site/components/Common/Button/index.stories.tsx b/packages/ui-components/Common/BaseButton/index.stories.tsx similarity index 85% rename from apps/site/components/Common/Button/index.stories.tsx rename to packages/ui-components/Common/BaseButton/index.stories.tsx index b518ac0fbd3f7..6d0e741cc361a 100644 --- a/apps/site/components/Common/Button/index.stories.tsx +++ b/packages/ui-components/Common/BaseButton/index.stories.tsx @@ -1,10 +1,10 @@ import { ArrowRightIcon } from '@heroicons/react/24/solid'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Button from '@/components/Common/Button'; +import BaseButton from '@node-core/ui-components/Common/BaseButton'; -type Story = StoryObj<typeof Button>; -type Meta = MetaObj<typeof Button>; +type Story = StoryObj<typeof BaseButton>; +type Meta = MetaObj<typeof BaseButton>; export const Neutral: Story = { args: { @@ -57,7 +57,7 @@ export const WithIcon: Story = { }; export default { - component: Button, + component: BaseButton, argTypes: { size: { options: ['default', 'small'], diff --git a/apps/site/components/Common/Button/index.tsx b/packages/ui-components/Common/BaseButton/index.tsx similarity index 79% rename from apps/site/components/Common/Button/index.tsx rename to packages/ui-components/Common/BaseButton/index.tsx index 218051d2a78fd..109b4988af78a 100644 --- a/apps/site/components/Common/Button/index.tsx +++ b/packages/ui-components/Common/BaseButton/index.tsx @@ -1,32 +1,31 @@ -'use client'; - import classNames from 'classnames'; import type { FC, AnchorHTMLAttributes, ButtonHTMLAttributes } from 'react'; -import Link from '@/components/Link'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; -type ButtonProps = ( +export type ButtonProps = ( | AnchorHTMLAttributes<HTMLAnchorElement> | ButtonHTMLAttributes<HTMLButtonElement> ) & { kind?: 'neutral' | 'primary' | 'secondary' | 'special'; size?: 'default' | 'small'; disabled?: boolean; + as?: LinkLike; }; -const Button: FC<ButtonProps> = ({ +const BaseButton: FC<ButtonProps> = ({ kind = 'primary', size = 'default', disabled = false, - children, className, + as: Component = 'a', ...props }) => { - if ('href' in props) { + if ('href' in props && Component) { return ( - <Link + <Component role="button" href={disabled ? undefined : props.href} aria-disabled={disabled} @@ -38,9 +37,7 @@ const Button: FC<ButtonProps> = ({ )} tabIndex={disabled ? -1 : 0} {...props} - > - {children} - </Link> + /> ); } @@ -55,10 +52,8 @@ const Button: FC<ButtonProps> = ({ )} type="button" {...(props as ButtonHTMLAttributes<HTMLButtonElement>)} - > - {children} - </button> + /> ); }; -export default Button; +export default BaseButton; diff --git a/apps/site/components/Common/CodeBox/index.module.css b/packages/ui-components/Common/BaseCodeBox/index.module.css similarity index 100% rename from apps/site/components/Common/CodeBox/index.module.css rename to packages/ui-components/Common/BaseCodeBox/index.module.css diff --git a/apps/site/components/Common/CodeBox/index.stories.tsx b/packages/ui-components/Common/BaseCodeBox/index.stories.tsx similarity index 62% rename from apps/site/components/Common/CodeBox/index.stories.tsx rename to packages/ui-components/Common/BaseCodeBox/index.stories.tsx index f44b33e17707d..003b6b2c2692d 100644 --- a/apps/site/components/Common/CodeBox/index.stories.tsx +++ b/packages/ui-components/Common/BaseCodeBox/index.stories.tsx @@ -1,9 +1,9 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import CodeBox from '@/components/Common/CodeBox'; +import BaseCodeBox from '@node-core/ui-components/Common/BaseCodeBox'; -type Story = StoryObj<typeof CodeBox>; -type Meta = MetaObj<typeof CodeBox>; +type Story = StoryObj<typeof BaseCodeBox>; +type Meta = MetaObj<typeof BaseCodeBox>; const content = `const http = require('http'); @@ -20,19 +20,20 @@ server.listen(port, hostname, () => { console.log(\`Server running at http://\${hostname}:\${port}/\`); });`; +const args = { + language: 'JavaScript (CJS)', + children: <code>{content}</code>, +}; + export const Default: Story = { - args: { - language: 'JavaScript (CJS)', - children: <code>{content}</code>, - }, + args, }; export const WithCopyButton: Story = { args: { - language: 'JavaScript (CJS)', + ...args, showCopyButton: true, - children: <code>{content}</code>, }, }; -export default { component: CodeBox } as Meta; +export default { component: BaseCodeBox } as Meta; diff --git a/apps/site/components/Common/CodeBox/index.tsx b/packages/ui-components/Common/BaseCodeBox/index.tsx similarity index 70% rename from apps/site/components/Common/CodeBox/index.tsx rename to packages/ui-components/Common/BaseCodeBox/index.tsx index e0f640f119958..b51d89c67cf11 100644 --- a/apps/site/components/Common/CodeBox/index.tsx +++ b/packages/ui-components/Common/BaseCodeBox/index.tsx @@ -1,16 +1,15 @@ 'use client'; import { - CodeBracketIcon, DocumentDuplicateIcon, + CodeBracketIcon, } from '@heroicons/react/24/outline'; import classNames from 'classnames'; -import { useTranslations } from 'next-intl'; -import type { FC, PropsWithChildren, ReactElement } from 'react'; +import type { FC, PropsWithChildren, ReactElement, ReactNode } from 'react'; import { Fragment, isValidElement, useRef } from 'react'; -import Button from '@/components/Common/Button'; -import { useCopyToClipboard, useNotification } from '@/hooks'; +import BaseButton from '@node-core/ui-components/Common/BaseButton'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; @@ -67,60 +66,63 @@ const transformCode = <T extends ReactElement<PropsWithChildren>>( ); }; -type CodeBoxProps = { +interface CodeBoxProps { language: string; - showCopyButton?: boolean; className?: string; -}; + onCopy: (text: string, message: ReactNode) => void; + as?: LinkLike; + copyText: string; + copiedText: string; + showCopyButton?: boolean; +} -const CodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ +const BaseCodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ children, language, - showCopyButton = true, className, -}) => { - const ref = useRef<HTMLPreElement>(null); - - const notify = useNotification(); - const [, copyToClipboard] = useCopyToClipboard(); - const t = useTranslations(); - - const onCopy = async () => { - if (ref.current?.textContent) { - copyToClipboard(ref.current.textContent); - - notify({ - duration: 3000, - message: ( - <div className={styles.notification}> - <CodeBracketIcon className={styles.icon} /> - {t('components.common.codebox.copied')} - </div> - ), - }); + onCopy, + copiedText, + copyText, + as = 'a', + showCopyButton = true, +}: PropsWithChildren<CodeBoxProps>) => { + const containerRef = useRef<HTMLPreElement>(null); + + const handleCopy = (): void => { + const text = containerRef.current?.textContent; + if (text) { + onCopy( + text, + <div className={styles.notification}> + <CodeBracketIcon className={styles.icon} /> + {copiedText} + </div> + ); } }; return ( <div className={styles.root}> <pre - ref={ref} + ref={containerRef} className={classNames(styles.content, className)} tabIndex={0} - dir="ltr" > {transformCode(children as ReactElement<PropsWithChildren>, language)} </pre> - {language && ( <div className={styles.footer}> <span className={styles.language}>{language}</span> - {showCopyButton && ( - <Button kind="neutral" className={styles.action} onClick={onCopy}> + <BaseButton + as={as} + className={styles.action} + kind="neutral" + onClick={handleCopy} + > <DocumentDuplicateIcon className={styles.icon} /> - {t('components.common.codebox.copy')} - </Button> + {copyText} + </BaseButton> )} </div> )} @@ -128,4 +130,4 @@ const CodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ ); }; -export default CodeBox; +export default BaseCodeBox; diff --git a/apps/site/components/Common/CrossLink/index.module.css b/packages/ui-components/Common/BaseCrossLink/index.module.css similarity index 100% rename from apps/site/components/Common/CrossLink/index.module.css rename to packages/ui-components/Common/BaseCrossLink/index.module.css diff --git a/apps/site/components/Common/CrossLink/index.stories.tsx b/packages/ui-components/Common/BaseCrossLink/index.stories.tsx similarity index 76% rename from apps/site/components/Common/CrossLink/index.stories.tsx rename to packages/ui-components/Common/BaseCrossLink/index.stories.tsx index 36ccf37f396dc..e34f67cfa666a 100644 --- a/apps/site/components/Common/CrossLink/index.stories.tsx +++ b/packages/ui-components/Common/BaseCrossLink/index.stories.tsx @@ -1,9 +1,9 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import CrossLink from '@/components/Common/CrossLink'; +import BaseCrossLink from '@node-core/ui-components/Common/BaseCrossLink'; -type Story = StoryObj<typeof CrossLink>; -type Meta = MetaObj<typeof CrossLink>; +type Story = StoryObj<typeof BaseCrossLink>; +type Meta = MetaObj<typeof BaseCrossLink>; export const Prev: Story = { args: { @@ -35,4 +35,4 @@ export const Next: Story = { ], }; -export default { component: CrossLink } as Meta; +export default { component: BaseCrossLink } as Meta; diff --git a/apps/site/components/Common/CrossLink/index.tsx b/packages/ui-components/Common/BaseCrossLink/index.tsx similarity index 54% rename from apps/site/components/Common/CrossLink/index.tsx rename to packages/ui-components/Common/BaseCrossLink/index.tsx index e96bef0b5a35f..3c15a34c83c48 100644 --- a/apps/site/components/Common/CrossLink/index.tsx +++ b/packages/ui-components/Common/BaseCrossLink/index.tsx @@ -1,31 +1,38 @@ import classNames from 'classnames'; -import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import PrevNextArrow from '@/components/Common/PrevNextArrow'; -import Link from '@/components/Link'; -import type { FormattedMessage } from '@/types'; +import PrevNextArrow from '@node-core/ui-components/Common/BasePagination/PrevNextArrow'; +import type { + LinkLike, + FormattedMessage, +} from '@node-core/ui-components/types'; import styles from './index.module.css'; -type CrossLinkProps = { +export type CrossLinkProps = { type: 'previous' | 'next'; text: FormattedMessage; + label: string; link: string; + as: LinkLike; }; -const CrossLink: FC<CrossLinkProps> = ({ type, text, link }) => { - const t = useTranslations(); - +const BaseCrossLink: FC<CrossLinkProps> = ({ + type, + label, + text, + link, + as: Component = 'a', +}) => { return ( - <Link className={styles.crossLink} href={link}> + <Component className={styles.crossLink} href={link}> <span className={classNames(styles.header, { [styles.reverse]: type === 'next', })} > <PrevNextArrow className={styles.icon} type={type} /> - {t(`components.common.crossLink.${type}`)} + {label} </span> <span @@ -35,8 +42,8 @@ const CrossLink: FC<CrossLinkProps> = ({ type, text, link }) => { > {text} </span> - </Link> + </Component> ); }; -export default CrossLink; +export default BaseCrossLink; diff --git a/apps/site/components/Common/LinkTabs/index.module.css b/packages/ui-components/Common/BaseLinkTabs/index.module.css similarity index 100% rename from apps/site/components/Common/LinkTabs/index.module.css rename to packages/ui-components/Common/BaseLinkTabs/index.module.css diff --git a/apps/site/components/Common/LinkTabs/index.stories.tsx b/packages/ui-components/Common/BaseLinkTabs/index.stories.tsx similarity index 70% rename from apps/site/components/Common/LinkTabs/index.stories.tsx rename to packages/ui-components/Common/BaseLinkTabs/index.stories.tsx index a8bf1cef29079..76bf7e499c3eb 100644 --- a/apps/site/components/Common/LinkTabs/index.stories.tsx +++ b/packages/ui-components/Common/BaseLinkTabs/index.stories.tsx @@ -1,9 +1,9 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import LinkTabs from '@/components/Common/LinkTabs'; +import BaseLinkTabs from '@node-core/ui-components/Common/BaseLinkTabs'; -type Story = StoryObj<typeof LinkTabs>; -type Meta = MetaObj<typeof LinkTabs>; +type Story = StoryObj<typeof BaseLinkTabs>; +type Meta = MetaObj<typeof BaseLinkTabs>; export const Default: Story = { args: { @@ -27,7 +27,8 @@ export const Default: Story = { ], activeTab: 'prebuilt', children: <p>Tab content goes here</p>, + onSelect: console.log, }, }; -export default { component: LinkTabs } as Meta; +export default { component: BaseLinkTabs } as Meta; diff --git a/apps/site/components/Common/LinkTabs/index.tsx b/packages/ui-components/Common/BaseLinkTabs/index.tsx similarity index 65% rename from apps/site/components/Common/LinkTabs/index.tsx rename to packages/ui-components/Common/BaseLinkTabs/index.tsx index 5ad243dc847b4..04578e0da7336 100644 --- a/apps/site/components/Common/LinkTabs/index.tsx +++ b/packages/ui-components/Common/BaseLinkTabs/index.tsx @@ -1,43 +1,48 @@ import type { FC, PropsWithChildren } from 'react'; -import Link from '@/components/Link'; -import WithRouterSelect from '@/components/withRouterSelect'; +import Select from '@node-core/ui-components/Common/Select'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; type LinkTab = { key: string; label: string; link: string }; -type LinkTabsProps = { +export type LinkTabsProps = PropsWithChildren<{ label?: string; tabs: Array<LinkTab>; activeTab: string; -}; + as?: LinkLike; + onSelect: (value: string) => void; +}>; -const LinkTabs: FC<PropsWithChildren<LinkTabsProps>> = ({ +const BaseLinkTabs: FC<LinkTabsProps> = ({ tabs, label, activeTab, children, + as: Component = 'a', + onSelect, }) => ( <> <div className={styles.tabsList}> {tabs.map(tab => ( - <Link + <Component key={tab.key} href={tab.link} className={styles.tabsTrigger} data-state={tab.key === activeTab ? 'active' : 'inactive'} > {tab.label} - </Link> + </Component> ))} </div> <div className={styles.tabsSelect}> - <WithRouterSelect + <Select label={label} defaultValue={tabs.find(tab => tab.key === activeTab)?.link} values={tabs.map(tab => ({ label: tab.label, value: tab.link }))} + onChange={onSelect} /> </div> @@ -45,4 +50,4 @@ const LinkTabs: FC<PropsWithChildren<LinkTabsProps>> = ({ </> ); -export default LinkTabs; +export default BaseLinkTabs; diff --git a/apps/site/components/Common/Pagination/Ellipsis/index.module.css b/packages/ui-components/Common/BasePagination/Ellipsis/index.module.css similarity index 100% rename from apps/site/components/Common/Pagination/Ellipsis/index.module.css rename to packages/ui-components/Common/BasePagination/Ellipsis/index.module.css diff --git a/apps/site/components/Common/Pagination/Ellipsis/index.stories.tsx b/packages/ui-components/Common/BasePagination/Ellipsis/index.stories.tsx similarity index 74% rename from apps/site/components/Common/Pagination/Ellipsis/index.stories.tsx rename to packages/ui-components/Common/BasePagination/Ellipsis/index.stories.tsx index 0949bcc20cf72..916c1f6c9b802 100644 --- a/apps/site/components/Common/Pagination/Ellipsis/index.stories.tsx +++ b/packages/ui-components/Common/BasePagination/Ellipsis/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Ellipsis from '@/components/Common/Pagination/Ellipsis'; +import Ellipsis from '@node-core/ui-components/Common/BasePagination/Ellipsis'; type Story = StoryObj<typeof Ellipsis>; type Meta = MetaObj<typeof Ellipsis>; diff --git a/apps/site/components/Common/Pagination/Ellipsis/index.tsx b/packages/ui-components/Common/BasePagination/Ellipsis/index.tsx similarity index 100% rename from apps/site/components/Common/Pagination/Ellipsis/index.tsx rename to packages/ui-components/Common/BasePagination/Ellipsis/index.tsx diff --git a/apps/site/components/Common/Pagination/PaginationListItem/__tests__/index.test.mjs b/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.mjs similarity index 92% rename from apps/site/components/Common/Pagination/PaginationListItem/__tests__/index.test.mjs rename to packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.mjs index 9c0d2b26f8c6e..eff421e52fa06 100644 --- a/apps/site/components/Common/Pagination/PaginationListItem/__tests__/index.test.mjs +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.mjs @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; -import PaginationListItem from '@/components/Common/Pagination/PaginationListItem'; +import PaginationListItem from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; function renderPaginationListItem({ url, diff --git a/apps/site/components/Common/Pagination/PaginationListItem/index.module.css b/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css similarity index 100% rename from apps/site/components/Common/Pagination/PaginationListItem/index.module.css rename to packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css diff --git a/apps/site/components/Common/Pagination/PaginationListItem/index.stories.tsx b/packages/ui-components/Common/BasePagination/PaginationListItem/index.stories.tsx similarity index 87% rename from apps/site/components/Common/Pagination/PaginationListItem/index.stories.tsx rename to packages/ui-components/Common/BasePagination/PaginationListItem/index.stories.tsx index ed4de699b966e..5a0934c9a39d9 100644 --- a/apps/site/components/Common/Pagination/PaginationListItem/index.stories.tsx +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import PaginationListItem from '@/components/Common/Pagination/PaginationListItem'; +import PaginationListItem from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; type Story = StoryObj<typeof PaginationListItem>; type Meta = MetaObj<typeof PaginationListItem>; diff --git a/apps/site/components/Common/Pagination/PaginationListItem/index.tsx b/packages/ui-components/Common/BasePagination/PaginationListItem/index.tsx similarity index 75% rename from apps/site/components/Common/Pagination/PaginationListItem/index.tsx rename to packages/ui-components/Common/BasePagination/PaginationListItem/index.tsx index a1fd525c7a58f..66543d4c8601a 100644 --- a/apps/site/components/Common/Pagination/PaginationListItem/index.tsx +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/index.tsx @@ -1,7 +1,6 @@ -import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; @@ -11,6 +10,8 @@ export type PaginationListItemProps = { // One-based number of the current page currentPage: number; totalPages: number; + as?: LinkLike; + label: string; }; const PaginationListItem: FC<PaginationListItemProps> = ({ @@ -18,19 +19,19 @@ const PaginationListItem: FC<PaginationListItemProps> = ({ pageNumber, currentPage, totalPages, + as: Component = 'a', + label, }) => { - const t = useTranslations(); - return ( <li key={pageNumber} aria-setsize={totalPages} aria-posinset={pageNumber}> - <Link + <Component href={url} - aria-label={t('components.common.pagination.pageLabel', { pageNumber })} + aria-label={label} className={styles.listItem} {...(pageNumber === currentPage && { 'aria-current': 'page' })} > <span>{pageNumber}</span> - </Link> + </Component> </li> ); }; diff --git a/apps/site/components/Common/PrevNextArrow.tsx b/packages/ui-components/Common/BasePagination/PrevNextArrow.tsx similarity index 100% rename from apps/site/components/Common/PrevNextArrow.tsx rename to packages/ui-components/Common/BasePagination/PrevNextArrow.tsx diff --git a/apps/site/components/Common/Pagination/__tests__/index.test.mjs b/packages/ui-components/Common/BasePagination/__tests__/index.test.mjs similarity index 89% rename from apps/site/components/Common/Pagination/__tests__/index.test.mjs rename to packages/ui-components/Common/BasePagination/__tests__/index.test.mjs index b28e69af50f65..8e4f5b710db0e 100644 --- a/apps/site/components/Common/Pagination/__tests__/index.test.mjs +++ b/packages/ui-components/Common/BasePagination/__tests__/index.test.mjs @@ -1,6 +1,15 @@ import { render, screen } from '@testing-library/react'; -import Pagination from '@/components/Common/Pagination'; +import BasePagination from '@node-core/ui-components/Common/BasePagination'; + +const getPageLabel = number => number.toString(); +const labels = { + aria: 'Aria', + prevAria: 'Previous Aria', + prev: 'Previous', + nextAria: 'Next Aria', + next: 'Next', +}; function renderPagination({ currentPage = 1, @@ -12,10 +21,12 @@ function renderPagination({ .map(item => ({ url: `${item.url}-${Math.random()}` })); render( - <Pagination + <BasePagination currentPage={currentPage} pages={parsedPages} currentPageSiblingsCount={currentPageSiblingsCount} + getPageLabel={getPageLabel} + labels={labels} /> ); @@ -34,13 +45,13 @@ describe('Pagination', () => { expect( screen.getByRole('button', { - name: 'components.common.pagination.prevAriaLabel', + name: labels.prevAria, }) ).toBeVisible(); expect( screen.getByRole('button', { - name: 'components.common.pagination.nextAriaLabel', + name: labels.nextAria, }) ).toBeVisible(); }); @@ -160,7 +171,7 @@ describe('Pagination', () => { expect( screen.getByRole('button', { - name: 'components.common.pagination.prevAriaLabel', + name: labels.prevAria, }) ).toHaveAttribute('aria-disabled'); }); @@ -173,7 +184,7 @@ describe('Pagination', () => { expect( screen.getByRole('button', { - name: 'components.common.pagination.nextAriaLabel', + name: labels.nextAria, }) ).toHaveAttribute('aria-disabled'); }); diff --git a/apps/site/components/Common/Pagination/index.module.css b/packages/ui-components/Common/BasePagination/index.module.css similarity index 100% rename from apps/site/components/Common/Pagination/index.module.css rename to packages/ui-components/Common/BasePagination/index.module.css diff --git a/apps/site/components/Common/Pagination/index.stories.tsx b/packages/ui-components/Common/BasePagination/index.stories.tsx similarity index 69% rename from apps/site/components/Common/Pagination/index.stories.tsx rename to packages/ui-components/Common/BasePagination/index.stories.tsx index 2fc4287fea3c3..98fb6397da289 100644 --- a/apps/site/components/Common/Pagination/index.stories.tsx +++ b/packages/ui-components/Common/BasePagination/index.stories.tsx @@ -1,15 +1,23 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Pagination from '@/components/Common/Pagination'; +import BasePagination from '@node-core/ui-components/Common/BasePagination'; -type Story = StoryObj<typeof Pagination>; -type Meta = MetaObj<typeof Pagination>; +type Story = StoryObj<typeof BasePagination>; +type Meta = MetaObj<typeof BasePagination>; export const Default: Story = { args: { currentPage: 1, currentPageSiblingsCount: 1, pages: [{ url: '1' }, { url: '2' }, { url: '3' }], + getPageLabel: value => `Page: ${value}`, + labels: { + aria: 'Aria', + prevAria: 'Previous Aria', + prev: 'Previous', + nextAria: 'Next Aria', + next: 'Next', + }, }, }; @@ -56,4 +64,4 @@ export const TwoEllipses: Story = { }, }; -export default { component: Pagination } as Meta; +export default { component: BasePagination } as Meta; diff --git a/apps/site/components/Common/Pagination/index.tsx b/packages/ui-components/Common/BasePagination/index.tsx similarity index 56% rename from apps/site/components/Common/Pagination/index.tsx rename to packages/ui-components/Common/BasePagination/index.tsx index 969cf4dc86fc3..4cabe6e6e2683 100644 --- a/apps/site/components/Common/Pagination/index.tsx +++ b/packages/ui-components/Common/BasePagination/index.tsx @@ -1,66 +1,77 @@ 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 Button from '@node-core/ui-components/Common/BaseButton'; +import { useGetPageElements } from '@node-core/ui-components/Common/BasePagination/useGetPageElements'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; type Page = { url: string }; -type PaginationProps = { +export type PaginationProps = { // One-based number of the current page currentPage: number; pages: Array<Page>; // The number of page buttons on each side of the current page button // @default 1 currentPageSiblingsCount?: number; + as?: LinkLike; + getPageLabel: (pageNumber: number) => string; + labels: { + aria: string; + prevAria: string; + prev: string; + nextAria: string; + next: string; + }; }; -const Pagination: FC<PaginationProps> = ({ +const BasePagination: FC<PaginationProps> = ({ currentPage, pages, + as = 'a', currentPageSiblingsCount = 1, + labels, + getPageLabel, }) => { - const t = useTranslations(); - const parsedPages = useGetPageElements( currentPage, pages, - currentPageSiblingsCount + currentPageSiblingsCount, + as, + getPageLabel ); return ( - <nav - aria-label={t('components.common.pagination.defaultLabel')} - className={styles.pagination} - > + <nav aria-label={labels.aria} className={styles.pagination}> <Button - aria-label={t('components.common.pagination.prevAriaLabel')} + as={as} + aria-label={labels.prevAria} disabled={currentPage === 1} kind="secondary" className={styles.previousButton} href={pages[currentPage - 2]?.url} > <ArrowLeftIcon className={styles.arrowIcon} /> - <span>{t('components.common.pagination.prev')}</span> + <span>{labels.prev}</span> </Button> <ol className={styles.list}>{parsedPages}</ol> <Button - aria-label={t('components.common.pagination.nextAriaLabel')} + as={as} + aria-label={labels.nextAria} disabled={currentPage === pages.length} kind="secondary" className={styles.nextButton} href={pages[currentPage]?.url} > - <span>{t('components.common.pagination.next')}</span> + <span>{labels.next}</span> <ArrowRightIcon className={styles.arrowIcon} /> </Button> </nav> ); }; -export default Pagination; +export default BasePagination; diff --git a/apps/site/components/Common/Pagination/useGetPageElements.tsx b/packages/ui-components/Common/BasePagination/useGetPageElements.tsx similarity index 79% rename from apps/site/components/Common/Pagination/useGetPageElements.tsx rename to packages/ui-components/Common/BasePagination/useGetPageElements.tsx index 9ea65422e02ac..eabceb995c5ec 100644 --- a/apps/site/components/Common/Pagination/useGetPageElements.tsx +++ b/packages/ui-components/Common/BasePagination/useGetPageElements.tsx @@ -1,20 +1,25 @@ import type { ComponentProps } from 'react'; -import type Pagination from '@/components/Common/Pagination'; -import Ellipsis from '@/components/Common/Pagination/Ellipsis'; -import type { PaginationListItemProps } from '@/components/Common/Pagination/PaginationListItem/index'; -import PaginationListItem from '@/components/Common/Pagination/PaginationListItem/index'; +import type BasePagination from '@node-core/ui-components/Common/BasePagination'; +import Ellipsis from '@node-core/ui-components/Common/BasePagination/Ellipsis'; +import type { PaginationListItemProps } from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; +import PaginationListItem from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; +import type { LinkLike } from '@node-core/ui-components/types'; const parsePages = ( - pages: ComponentProps<typeof Pagination>['pages'], + pages: ComponentProps<typeof BasePagination>['pages'], currentPage: number, - totalPages: number + totalPages: number, + as: LinkLike, + getLabel: (pageNumber: number) => string ): Array<PaginationListItemProps> => pages.map(({ url }, index) => ({ url, pageNumber: index + 1, currentPage, totalPages, + label: getLabel(index + 1), + as, })); const createPaginationListItems = ( @@ -31,12 +36,14 @@ const MAXIMUM_AMOUNT_OF_ELLIPSES = 2; // React MUI's Pagination component as reference. More info here: // https://github.com/mui/material-ui/blob/master/packages/mui-material/src/usePagination/usePagination.js export const useGetPageElements = ( - currentPage: ComponentProps<typeof Pagination>['currentPage'], - pages: ComponentProps<typeof Pagination>['pages'], - currentPageSiblingsCount: number + currentPage: ComponentProps<typeof BasePagination>['currentPage'], + pages: ComponentProps<typeof BasePagination>['pages'], + currentPageSiblingsCount: number, + as: LinkLike, + getLabel: (pageNumber: number) => string ) => { const totalPages = pages.length; - const parsedPages = parsePages(pages, currentPage, totalPages); + const parsedPages = parsePages(pages, currentPage, totalPages, as, getLabel); const currentPageIndex = currentPage - 1; // We multiply it by two (2) as siblings are located on both left and right sides diff --git a/packages/ui-components/Common/Blockquote/index.module.css b/packages/ui-components/Common/Blockquote/index.module.css new file mode 100644 index 0000000000000..f13d733741d0a --- /dev/null +++ b/packages/ui-components/Common/Blockquote/index.module.css @@ -0,0 +1,11 @@ +.wrapper { + @apply flex max-w-2xl flex-col items-start gap-4 self-stretch border-l-2 border-green-600 py-2 pl-5 text-lg font-semibold text-neutral-900 dark:border-green-400 dark:text-white; + + & cite { + @apply font-regular text-base not-italic; + + &::before { + @apply content-['—_']; + } + } +} diff --git a/apps/site/components/Common/Blockquote/index.stories.tsx b/packages/ui-components/Common/Blockquote/index.stories.tsx similarity index 95% rename from apps/site/components/Common/Blockquote/index.stories.tsx rename to packages/ui-components/Common/Blockquote/index.stories.tsx index d00a56c084f33..7d0bb884f0d62 100644 --- a/apps/site/components/Common/Blockquote/index.stories.tsx +++ b/packages/ui-components/Common/Blockquote/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Blockquote from '@/components/Common/Blockquote'; +import Blockquote from '@node-core/ui-components/Common/Blockquote'; type Story = StoryObj<typeof Blockquote>; type Meta = MetaObj<typeof Blockquote>; diff --git a/apps/site/components/Common/Blockquote/index.tsx b/packages/ui-components/Common/Blockquote/index.tsx similarity index 100% rename from apps/site/components/Common/Blockquote/index.tsx rename to packages/ui-components/Common/Blockquote/index.tsx diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css similarity index 100% rename from apps/site/components/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css rename to packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx b/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx similarity index 59% rename from apps/site/components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx rename to packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx index dc366d30e4f98..c8ed33c1385ad 100644 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx @@ -1,8 +1,7 @@ import HomeIcon from '@heroicons/react/24/outline/HomeIcon'; -import { useTranslations } from 'next-intl'; import type { ComponentProps, FC } from 'react'; -import BreadcrumbLink from '@/components/Common/Breadcrumbs/BreadcrumbLink'; +import BreadcrumbLink from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbLink'; import styles from './index.module.css'; @@ -16,15 +15,12 @@ const BreadcrumbHomeLink: FC<BreadcrumbHomeLinkProps> = ({ href = '/', ...props }) => { - const t = useTranslations(); - - const navigateToHome = t('components.common.breadcrumbs.navigateToHome'); - + const ariaLabel = props['aria-label']; return ( - <BreadcrumbLink href={href} aria-label={navigateToHome} {...props}> + <BreadcrumbLink href={href} {...props}> <HomeIcon - title={navigateToHome} - aria-label={navigateToHome} + title={ariaLabel} + aria-label={ariaLabel} className={styles.icon} /> </BreadcrumbLink> diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css new file mode 100644 index 0000000000000..35f6968d03714 --- /dev/null +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css @@ -0,0 +1,25 @@ +.item { + @apply flex max-w-fit items-center gap-5 truncate text-sm font-medium; + + &:last-child { + @apply w-full; + } + + a { + @apply shrink grow; + } + + &, + > a, + > a:hover { + @apply text-neutral-800 motion-safe:transition-colors dark:text-neutral-200; + } + + &.visuallyHidden { + @apply hidden; + } + + .separator { + @apply size-4 max-w-fit shrink-0 grow text-neutral-600 dark:text-neutral-400; + } +} diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.tsx b/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.tsx similarity index 100% rename from apps/site/components/Common/Breadcrumbs/BreadcrumbItem/index.tsx rename to packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.tsx diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css new file mode 100644 index 0000000000000..14f71131540ec --- /dev/null +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css @@ -0,0 +1,11 @@ +.link { + @apply max-w-fit truncate; + + &.active { + @apply rounded bg-green-600 px-2 py-1 font-semibold text-white motion-safe:transition-colors dark:text-white; + + &:hover { + @apply bg-green-700 text-white; + } + } +} diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.tsx b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.tsx similarity index 80% rename from apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.tsx rename to packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.tsx index 93f58ae3a5d96..61c7969f0dfea 100644 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbLink/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.tsx @@ -1,20 +1,22 @@ import classNames from 'classnames'; import type { ComponentProps, FC } from 'react'; -import Link from '@/components/Link'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; type BreadcrumbLinkProps = { active?: boolean; -} & ComponentProps<typeof Link>; + as: LinkLike; +} & ComponentProps<LinkLike>; const BreadcrumbLink: FC<BreadcrumbLinkProps> = ({ href, active, + as: Component = 'a', ...props }) => ( - <Link + <Component itemScope itemType="http://schema.org/Thing" itemProp="item" @@ -29,7 +31,7 @@ const BreadcrumbLink: FC<BreadcrumbLinkProps> = ({ {...props} > <span itemProp="name">{props.children}</span> - </Link> + </Component> ); export default BreadcrumbLink; diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css new file mode 100644 index 0000000000000..4f13b9c6c1bd2 --- /dev/null +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css @@ -0,0 +1,3 @@ +.list { + @apply xs:w-full flex w-screen gap-5 px-6; +} diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.tsx b/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.tsx similarity index 100% rename from apps/site/components/Common/Breadcrumbs/BreadcrumbRoot/index.tsx rename to packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.tsx diff --git a/apps/site/components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx b/packages/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx similarity index 66% rename from apps/site/components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx rename to packages/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx index 557baee9c1085..5177da5a6ab01 100644 --- a/apps/site/components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx @@ -1,4 +1,4 @@ -import BreadcrumbItem from '@/components/Common/Breadcrumbs/BreadcrumbItem'; +import BreadcrumbItem from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbItem'; const BreadcrumbTruncatedItem = () => ( <BreadcrumbItem disableMicrodata> diff --git a/apps/site/components/Common/Breadcrumbs/index.stories.tsx b/packages/ui-components/Common/Breadcrumbs/index.stories.tsx similarity index 95% rename from apps/site/components/Common/Breadcrumbs/index.stories.tsx rename to packages/ui-components/Common/Breadcrumbs/index.stories.tsx index 678def7290c08..e591ba7e5f0b8 100644 --- a/apps/site/components/Common/Breadcrumbs/index.stories.tsx +++ b/packages/ui-components/Common/Breadcrumbs/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Breadcrumbs from '@/components/Common/Breadcrumbs'; +import Breadcrumbs from '@node-core/ui-components/Common/Breadcrumbs'; type Story = StoryObj<typeof Breadcrumbs>; type Meta = MetaObj<typeof Breadcrumbs>; diff --git a/apps/site/components/Common/Breadcrumbs/index.tsx b/packages/ui-components/Common/Breadcrumbs/index.tsx similarity index 65% rename from apps/site/components/Common/Breadcrumbs/index.tsx rename to packages/ui-components/Common/Breadcrumbs/index.tsx index 13c796305cb47..acf8c0ee10204 100644 --- a/apps/site/components/Common/Breadcrumbs/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/index.tsx @@ -1,12 +1,15 @@ import type { FC } from 'react'; import { useMemo } from 'react'; -import BreadcrumbHomeLink from '@/components/Common/Breadcrumbs/BreadcrumbHomeLink'; -import BreadcrumbItem from '@/components/Common/Breadcrumbs/BreadcrumbItem'; -import BreadcrumbLink from '@/components/Common/Breadcrumbs/BreadcrumbLink'; -import BreadcrumbRoot from '@/components/Common/Breadcrumbs/BreadcrumbRoot'; -import BreadcrumbTruncatedItem from '@/components/Common/Breadcrumbs/BreadcrumbTruncatedItem'; -import type { FormattedMessage } from '@/types'; +import BreadcrumbHomeLink from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink'; +import BreadcrumbItem from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbItem'; +import BreadcrumbLink from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbLink'; +import BreadcrumbRoot from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbRoot'; +import BreadcrumbTruncatedItem from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem'; +import type { + FormattedMessage, + LinkLike, +} from '@node-core/ui-components/types'; export type BreadcrumbLink = { label: FormattedMessage; @@ -17,12 +20,16 @@ type BreadcrumbsProps = { links: Array<BreadcrumbLink>; maxLength?: number; hideHome?: boolean; + as: LinkLike; + homeLinkAriaLabel?: string; }; const Breadcrumbs: FC<BreadcrumbsProps> = ({ links = [], maxLength = 5, hideHome = false, + as = 'a', + homeLinkAriaLabel, }) => { const totalLength = links.length + +!hideHome; const lengthOffset = maxLength - totalLength; @@ -44,7 +51,7 @@ const Breadcrumbs: FC<BreadcrumbsProps> = ({ hideSeparator={isLastItem} position={position + +!hideHome} > - <BreadcrumbLink href={link.href} active={isLastItem}> + <BreadcrumbLink as={as} href={link.href} active={isLastItem}> {link.label} </BreadcrumbLink> </BreadcrumbItem> @@ -57,7 +64,7 @@ const Breadcrumbs: FC<BreadcrumbsProps> = ({ <BreadcrumbRoot> {!hideHome && ( <BreadcrumbItem position={1}> - <BreadcrumbHomeLink /> + <BreadcrumbHomeLink as={as} aria-label={homeLinkAriaLabel} /> </BreadcrumbItem> )} {isOverflow && <BreadcrumbTruncatedItem />} diff --git a/apps/site/components/Common/CodeTabs/index.module.css b/packages/ui-components/Common/CodeTabs/index.module.css similarity index 100% rename from apps/site/components/Common/CodeTabs/index.module.css rename to packages/ui-components/Common/CodeTabs/index.module.css diff --git a/apps/site/components/Common/CodeTabs/index.stories.tsx b/packages/ui-components/Common/CodeTabs/index.stories.tsx similarity index 78% rename from apps/site/components/Common/CodeTabs/index.stories.tsx rename to packages/ui-components/Common/CodeTabs/index.stories.tsx index b6a3b9e5f0b9c..0cd1d6c43eb36 100644 --- a/apps/site/components/Common/CodeTabs/index.stories.tsx +++ b/packages/ui-components/Common/CodeTabs/index.stories.tsx @@ -2,8 +2,8 @@ import * as TabsPrimitive from '@radix-ui/react-tabs'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import type { FC } from 'react'; -import CodeBox from '@/components/Common/CodeBox'; -import CodeTabs from '@/components/Common/CodeTabs'; +import BaseCodeBox from '@node-core/ui-components/Common/BaseCodeBox'; +import CodeTabs from '@node-core/ui-components/Common/CodeTabs'; type Story = StoryObj<typeof CodeTabs>; type Meta = MetaObj<typeof CodeTabs>; @@ -38,30 +38,29 @@ server.listen(port, hostname, () => { console.log(\`Server running at http://\${hostname}:\${port}/\`); });`; +const boxProps = { + onCopy: console.log, + copyText: '[Copy Text]', + copiedText: '[Copied Text]', +}; + const TabsContent: FC = () => ( <> <TabsPrimitive.Content key="mjs" value="mjs"> - <CodeBox language="JavaScript (MJS)" showCopyButton> + <BaseCodeBox language="JavaScript (MJS)" {...boxProps}> <code>{mjsContent}</code> - </CodeBox> + </BaseCodeBox> </TabsPrimitive.Content> <TabsPrimitive.Content key="cjs" value="cjs"> - <CodeBox language="JavaScript (CJS)" showCopyButton> + <BaseCodeBox language="JavaScript (CJS)" {...boxProps}> <code>{cjsContent}</code> - </CodeBox> + </BaseCodeBox> </TabsPrimitive.Content> </> ); export const Default: Story = {}; -export const WithMoreOptions: Story = { - args: { - linkUrl: 'https://github.com/nodejs/nodejs.org', - linkText: 'More options', - }, -}; - export default { component: CodeTabs, args: { diff --git a/packages/ui-components/Common/CodeTabs/index.tsx b/packages/ui-components/Common/CodeTabs/index.tsx new file mode 100644 index 0000000000000..e56a19543cb0c --- /dev/null +++ b/packages/ui-components/Common/CodeTabs/index.tsx @@ -0,0 +1,16 @@ +import type { ComponentProps, FC } from 'react'; + +import Tabs from '@node-core/ui-components/Common/Tabs'; + +import styles from './index.module.css'; + +type CodeTabsProps = Pick< + ComponentProps<typeof Tabs>, + 'tabs' | 'defaultValue' | 'children' | 'addons' +>; + +const CodeTabs: FC<CodeTabsProps> = ({ ...props }) => ( + <Tabs {...props} className={styles.root} triggerClassName={styles.trigger} /> +); + +export default CodeTabs; diff --git a/apps/site/components/Common/GlowingBackdrop/index.module.css b/packages/ui-components/Common/GlowingBackdrop/index.module.css similarity index 100% rename from apps/site/components/Common/GlowingBackdrop/index.module.css rename to packages/ui-components/Common/GlowingBackdrop/index.module.css diff --git a/apps/site/components/Common/GlowingBackdrop/index.stories.tsx b/packages/ui-components/Common/GlowingBackdrop/index.stories.tsx similarity index 76% rename from apps/site/components/Common/GlowingBackdrop/index.stories.tsx rename to packages/ui-components/Common/GlowingBackdrop/index.stories.tsx index 5fdc861abfcc7..6db52628da914 100644 --- a/apps/site/components/Common/GlowingBackdrop/index.stories.tsx +++ b/packages/ui-components/Common/GlowingBackdrop/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import GlowingBackdrop from '@/components/Common/GlowingBackdrop'; +import GlowingBackdrop from '@node-core/ui-components/Common/GlowingBackdrop'; type Story = StoryObj<typeof GlowingBackdrop>; type Meta = MetaObj<typeof GlowingBackdrop>; diff --git a/apps/site/components/Common/GlowingBackdrop/index.tsx b/packages/ui-components/Common/GlowingBackdrop/index.tsx similarity index 75% rename from apps/site/components/Common/GlowingBackdrop/index.tsx rename to packages/ui-components/Common/GlowingBackdrop/index.tsx index e5b10fe51abb0..bd774964e1500 100644 --- a/apps/site/components/Common/GlowingBackdrop/index.tsx +++ b/packages/ui-components/Common/GlowingBackdrop/index.tsx @@ -1,6 +1,6 @@ import type { FC } from 'react'; -import HexagonGrid from '@/components/Icons/HexagonGrid'; +import HexagonGrid from '@node-core/ui-components/Icons/HexagonGrid'; import styles from './index.module.css'; diff --git a/apps/site/components/Common/LanguageDropDown/index.module.css b/packages/ui-components/Common/LanguageDropDown/index.module.css similarity index 100% rename from apps/site/components/Common/LanguageDropDown/index.module.css rename to packages/ui-components/Common/LanguageDropDown/index.module.css diff --git a/apps/site/components/Common/LanguageDropDown/index.stories.tsx b/packages/ui-components/Common/LanguageDropDown/index.stories.tsx similarity index 86% rename from apps/site/components/Common/LanguageDropDown/index.stories.tsx rename to packages/ui-components/Common/LanguageDropDown/index.stories.tsx index 2f5ac8f98f0fe..200674881139d 100644 --- a/apps/site/components/Common/LanguageDropDown/index.stories.tsx +++ b/packages/ui-components/Common/LanguageDropDown/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import LanguageDropDown from '@/components/Common/LanguageDropDown'; +import LanguageDropDown from '@node-core/ui-components/Common/LanguageDropDown'; type Story = StoryObj<typeof LanguageDropDown>; type Meta = MetaObj<typeof LanguageDropDown>; diff --git a/apps/site/components/Common/LanguageDropDown/index.tsx b/packages/ui-components/Common/LanguageDropDown/index.tsx similarity index 84% rename from apps/site/components/Common/LanguageDropDown/index.tsx rename to packages/ui-components/Common/LanguageDropDown/index.tsx index 5c71e3c7b3450..d9f845198b483 100644 --- a/apps/site/components/Common/LanguageDropDown/index.tsx +++ b/packages/ui-components/Common/LanguageDropDown/index.tsx @@ -1,29 +1,25 @@ import { LanguageIcon } from '@heroicons/react/24/outline'; -import type { LocaleConfig } from '@node-core/website-i18n/types'; import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; import classNames from 'classnames'; -import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import styles from './index.module.css'; +import type { SimpleLocaleConfig } from '@node-core/ui-components/types'; -type SimpleLocaleConfig = Pick<LocaleConfig, 'name' | 'code' | 'localName'>; +import styles from './index.module.css'; type LanguageDropDownProps = { onChange?: (newLocale: SimpleLocaleConfig) => void; currentLanguage: string; availableLanguages: Array<SimpleLocaleConfig>; + ariaLabel: string; }; const LanguageDropdown: FC<LanguageDropDownProps> = ({ onChange = () => {}, currentLanguage, availableLanguages, + ariaLabel, }) => { - const t = useTranslations(); - - const ariaLabel = t('components.common.languageDropdown.label'); - return ( <DropdownMenu.Root> <DropdownMenu.Trigger asChild> diff --git a/apps/site/components/Common/NodejsLogo/index.module.css b/packages/ui-components/Common/NodejsLogo/index.module.css similarity index 100% rename from apps/site/components/Common/NodejsLogo/index.module.css rename to packages/ui-components/Common/NodejsLogo/index.module.css diff --git a/apps/site/components/Common/NodejsLogo/index.stories.tsx b/packages/ui-components/Common/NodejsLogo/index.stories.tsx similarity index 81% rename from apps/site/components/Common/NodejsLogo/index.stories.tsx rename to packages/ui-components/Common/NodejsLogo/index.stories.tsx index 691b885d1d283..f8c739ef55a01 100644 --- a/apps/site/components/Common/NodejsLogo/index.stories.tsx +++ b/packages/ui-components/Common/NodejsLogo/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NodejsLogo from '@/components/Common/NodejsLogo'; +import NodejsLogo from '@node-core/ui-components/Common/NodejsLogo'; type Story = StoryObj<typeof NodejsLogo>; type Meta = MetaObj<typeof NodejsLogo>; diff --git a/packages/ui-components/Common/NodejsLogo/index.tsx b/packages/ui-components/Common/NodejsLogo/index.tsx new file mode 100644 index 0000000000000..38c0c995b0d58 --- /dev/null +++ b/packages/ui-components/Common/NodejsLogo/index.tsx @@ -0,0 +1,26 @@ +import type { FC } from 'react'; + +import NodejsIcon from '@node-core/ui-components/Icons/Logos/Nodejs'; +import type { LogoVariant } from '@node-core/ui-components/types'; + +import style from './index.module.css'; + +type NodejsLogoProps = { + variant?: LogoVariant; + ariaLabel?: string; +}; + +const NodejsLogo: FC<NodejsLogoProps> = ({ + variant = 'default', + ariaLabel, +}) => { + return ( + <NodejsIcon + variant={variant} + className={style.nodejsLogo} + ariaLabel={ariaLabel} + /> + ); +}; + +export default NodejsLogo; diff --git a/apps/site/components/Common/Notification/index.module.css b/packages/ui-components/Common/Notification/index.module.css similarity index 100% rename from apps/site/components/Common/Notification/index.module.css rename to packages/ui-components/Common/Notification/index.module.css diff --git a/apps/site/components/Common/Notification/index.stories.tsx b/packages/ui-components/Common/Notification/index.stories.tsx similarity index 91% rename from apps/site/components/Common/Notification/index.stories.tsx rename to packages/ui-components/Common/Notification/index.stories.tsx index 884d0bb441876..3bff7438edb61 100644 --- a/apps/site/components/Common/Notification/index.stories.tsx +++ b/packages/ui-components/Common/Notification/index.stories.tsx @@ -1,7 +1,7 @@ import { CodeBracketIcon } from '@heroicons/react/24/solid'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Notification from '@/components/Common/Notification'; +import Notification from '@node-core/ui-components/Common/Notification'; type Story = StoryObj<typeof Notification>; type Meta = MetaObj<typeof Notification>; diff --git a/apps/site/components/Common/Notification/index.tsx b/packages/ui-components/Common/Notification/index.tsx similarity index 100% rename from apps/site/components/Common/Notification/index.tsx rename to packages/ui-components/Common/Notification/index.tsx diff --git a/apps/site/components/Common/Preview/index.module.css b/packages/ui-components/Common/Preview/index.module.css similarity index 100% rename from apps/site/components/Common/Preview/index.module.css rename to packages/ui-components/Common/Preview/index.module.css diff --git a/apps/site/components/Common/Preview/index.stories.tsx b/packages/ui-components/Common/Preview/index.stories.tsx similarity index 93% rename from apps/site/components/Common/Preview/index.stories.tsx rename to packages/ui-components/Common/Preview/index.stories.tsx index 602ee26f11c26..92a606add2b11 100644 --- a/apps/site/components/Common/Preview/index.stories.tsx +++ b/packages/ui-components/Common/Preview/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Preview from '@/components/Common/Preview'; +import Preview from '@node-core/ui-components/Common/Preview'; type Story = StoryObj<typeof Preview>; type Meta = MetaObj<typeof Preview>; diff --git a/apps/site/components/Common/Preview/index.tsx b/packages/ui-components/Common/Preview/index.tsx similarity index 65% rename from apps/site/components/Common/Preview/index.tsx rename to packages/ui-components/Common/Preview/index.tsx index 489fdc01b18a4..16d06d039805e 100644 --- a/apps/site/components/Common/Preview/index.tsx +++ b/packages/ui-components/Common/Preview/index.tsx @@ -1,9 +1,9 @@ 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 HexagonGrid from '@node-core/ui-components/Icons/HexagonGrid'; +import JsWhiteIcon from '@node-core/ui-components/Icons/Logos/JsWhite'; +import type { BlogPreviewType } from '@node-core/ui-components/types'; import styles from './index.module.css'; @@ -16,7 +16,7 @@ const Preview: FC<PreviewProps> = ({ type = 'announcements', title }) => ( <div className={classNames(styles.root, styles[type])}> <div className={styles.container} aria-hidden={true}> <HexagonGrid className={styles.hexagon} /> - <JsIconWhite className={styles.logo} /> + <JsWhiteIcon className={styles.logo} /> {title} </div> </div> diff --git a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css similarity index 100% rename from apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css rename to packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css diff --git a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx similarity index 58% rename from apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx rename to packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx index 0a64e67aa3f08..20219c29e6528 100644 --- a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx +++ b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx @@ -1,24 +1,35 @@ import type { ComponentProps, FC } from 'react'; -import ProgressionSidebarItem from '@/components/Common/ProgressionSidebar/ProgressionSidebarItem'; -import type { FormattedMessage } from '@/types'; +import ProgressionSidebarItem from '@node-core/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem'; +import type { + FormattedMessage, + LinkLike, +} from '@node-core/ui-components/types'; import styles from './index.module.css'; type ProgressionSidebarGroupProps = { groupName: FormattedMessage; items: Array<ComponentProps<typeof ProgressionSidebarItem>>; + pathname?: string; + as?: LinkLike; }; const ProgressionSidebarGroup: FC<ProgressionSidebarGroupProps> = ({ groupName, items, + ...props }) => ( <section className={styles.group}> {groupName} <div className={styles.items}> {items.map(({ label, link }) => ( - <ProgressionSidebarItem key={link} label={label} link={link} /> + <ProgressionSidebarItem + key={link} + label={label} + link={link} + {...props} + /> ))} </div> </section> diff --git a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx similarity index 100% rename from apps/site/components/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx rename to packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx diff --git a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css similarity index 100% rename from apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css rename to packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css diff --git a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx similarity index 52% rename from apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx rename to packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx index 047beac8d7326..1ffcb13dadea0 100644 --- a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx +++ b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx @@ -1,28 +1,35 @@ import type { FC } from 'react'; -import ActiveLink from '@/components/Common/ActiveLink'; -import ProgressionSidebarIcon from '@/components/Common/ProgressionSidebar/ProgressionSidebarIcon'; -import type { FormattedMessage } from '@/types'; +import BaseActiveLink from '@node-core/ui-components/Common/BaseActiveLink'; +import ProgressionSidebarIcon from '@node-core/ui-components/Common/ProgressionSidebar/ProgressionSidebarIcon'; +import type { + FormattedMessage, + LinkLike, +} from '@node-core/ui-components/types'; import styles from './index.module.css'; type ProgressionSidebarItemProps = { label: FormattedMessage; link: string; + as?: LinkLike; + pathname?: string; }; const ProgressionSidebarItem: FC<ProgressionSidebarItemProps> = ({ label, link, + ...props }) => ( - <ActiveLink + <BaseActiveLink className={styles.item} activeClassName={styles.active} href={link} + {...props} > <ProgressionSidebarIcon /> {label} - </ActiveLink> + </BaseActiveLink> ); export default ProgressionSidebarItem; diff --git a/apps/site/components/Common/ProgressionSidebar/index.module.css b/packages/ui-components/Common/ProgressionSidebar/index.module.css similarity index 100% rename from apps/site/components/Common/ProgressionSidebar/index.module.css rename to packages/ui-components/Common/ProgressionSidebar/index.module.css diff --git a/apps/site/components/Common/ProgressionSidebar/index.stories.tsx b/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx similarity index 95% rename from apps/site/components/Common/ProgressionSidebar/index.stories.tsx rename to packages/ui-components/Common/ProgressionSidebar/index.stories.tsx index cff59dc659816..f2594b1d82c75 100644 --- a/apps/site/components/Common/ProgressionSidebar/index.stories.tsx +++ b/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import ProgressionSidebar from '@/components/Common/ProgressionSidebar'; +import ProgressionSidebar from '@node-core/ui-components/Common/ProgressionSidebar'; type Story = StoryObj<typeof ProgressionSidebar>; type Meta = MetaObj<typeof ProgressionSidebar>; diff --git a/apps/site/components/Common/ProgressionSidebar/index.tsx b/packages/ui-components/Common/ProgressionSidebar/index.tsx similarity index 58% rename from apps/site/components/Common/ProgressionSidebar/index.tsx rename to packages/ui-components/Common/ProgressionSidebar/index.tsx index 2fdec5637c339..f571c850af269 100644 --- a/apps/site/components/Common/ProgressionSidebar/index.tsx +++ b/packages/ui-components/Common/ProgressionSidebar/index.tsx @@ -1,26 +1,29 @@ 'use client'; -import { useTranslations } from 'next-intl'; -import type { ComponentProps, FC } from 'react'; -import { useRef } from 'react'; +import { useRef, type ComponentProps, type FC } from 'react'; -import ProgressionSidebarGroup from '@/components/Common/ProgressionSidebar/ProgressionSidebarGroup'; -import WithRouterSelect from '@/components/withRouterSelect'; -import { useClientContext, useNavigationState } from '@/hooks'; +import ProgressionSidebarGroup from '@node-core/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup'; +import Select from '@node-core/ui-components/Common/Select'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; type ProgressionSidebarProps = { groups: Array<ComponentProps<typeof ProgressionSidebarGroup>>; + pathname?: string; + title: string; + onSelect: (value: string) => void; + as?: LinkLike; }; -const ProgressionSidebar: FC<ProgressionSidebarProps> = ({ groups }) => { - const t = useTranslations(); - const { pathname } = useClientContext(); +const ProgressionSidebar: FC<ProgressionSidebarProps> = ({ + groups, + pathname, + title, + onSelect, + as, +}) => { const ref = useRef<HTMLElement>(null); - - useNavigationState('progressionSidebar', ref); - const selectItems = groups.map(({ items, groupName }) => ({ label: groupName, items: items.map(({ label, link }) => ({ value: link, label })), @@ -33,8 +36,9 @@ const ProgressionSidebar: FC<ProgressionSidebarProps> = ({ groups }) => { return ( <nav className={styles.wrapper} ref={ref}> - <WithRouterSelect - label={t('components.common.sidebar.title')} + <Select + label={title} + onChange={onSelect} values={selectItems} defaultValue={currentItem?.value} /> @@ -44,6 +48,8 @@ const ProgressionSidebar: FC<ProgressionSidebarProps> = ({ groups }) => { key={groupName.toString()} groupName={groupName} items={items} + as={as} + pathname={pathname} /> ))} </nav> diff --git a/apps/site/components/Common/Select/__tests__/index.test.mjs b/packages/ui-components/Common/Select/__tests__/index.test.mjs similarity index 100% rename from apps/site/components/Common/Select/__tests__/index.test.mjs rename to packages/ui-components/Common/Select/__tests__/index.test.mjs diff --git a/apps/site/components/Common/Select/index.module.css b/packages/ui-components/Common/Select/index.module.css similarity index 100% rename from apps/site/components/Common/Select/index.module.css rename to packages/ui-components/Common/Select/index.module.css diff --git a/apps/site/components/Common/Select/index.stories.tsx b/packages/ui-components/Common/Select/index.stories.tsx similarity index 94% rename from apps/site/components/Common/Select/index.stories.tsx rename to packages/ui-components/Common/Select/index.stories.tsx index 4c24dd474aca0..23a1bede20d45 100644 --- a/apps/site/components/Common/Select/index.stories.tsx +++ b/packages/ui-components/Common/Select/index.stories.tsx @@ -1,7 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Select from '@/components/Common/Select'; -import OSIcons from '@/components/Icons/OperatingSystem'; +import Select from '@node-core/ui-components/Common/Select'; +import * as OSIcons from '@node-core/ui-components/Icons/OperatingSystem'; type Story = StoryObj<typeof Select>; type Meta = MetaObj<typeof Select>; diff --git a/apps/site/components/Common/Select/index.tsx b/packages/ui-components/Common/Select/index.tsx similarity index 97% rename from apps/site/components/Common/Select/index.tsx rename to packages/ui-components/Common/Select/index.tsx index b2abbbd1b848e..88df36658e897 100644 --- a/apps/site/components/Common/Select/index.tsx +++ b/packages/ui-components/Common/Select/index.tsx @@ -7,8 +7,8 @@ import classNames from 'classnames'; import { useEffect, useId, useMemo, useState } from 'react'; import type { ReactElement, ReactNode } from 'react'; -import Skeleton from '@/components/Common/Skeleton'; -import type { FormattedMessage } from '@/types'; +import Skeleton from '@node-core/ui-components/Common/Skeleton'; +import type { FormattedMessage } from '@node-core/ui-components/types'; import styles from './index.module.css'; @@ -114,7 +114,6 @@ const Select = <T extends string>({ )); // We explicitly want to recalculate these values only when the values themselves changed // This is to prevent re-rendering and re-calcukating the values on every render - // eslint-disable-next-line react-hooks/exhaustive-deps }, [JSON.stringify(values)]); // Both change the internal state and emit the change event diff --git a/apps/site/components/Common/Skeleton/index.module.css b/packages/ui-components/Common/Skeleton/index.module.css similarity index 86% rename from apps/site/components/Common/Skeleton/index.module.css rename to packages/ui-components/Common/Skeleton/index.module.css index 389dc00ca4499..261615ad0156a 100644 --- a/apps/site/components/Common/Skeleton/index.module.css +++ b/packages/ui-components/Common/Skeleton/index.module.css @@ -1,6 +1,5 @@ .skeleton { - @apply dark:animate-pulse-dark - pointer-events-none + @apply pointer-events-none animate-pulse cursor-default select-none diff --git a/apps/site/components/Common/Skeleton/index.tsx b/packages/ui-components/Common/Skeleton/index.tsx similarity index 100% rename from apps/site/components/Common/Skeleton/index.tsx rename to packages/ui-components/Common/Skeleton/index.tsx diff --git a/apps/site/components/Common/Tabs/__tests__/index.test.mjs b/packages/ui-components/Common/Tabs/__tests__/index.test.mjs similarity index 93% rename from apps/site/components/Common/Tabs/__tests__/index.test.mjs rename to packages/ui-components/Common/Tabs/__tests__/index.test.mjs index df4cfc4677afa..0d319164bd5bd 100644 --- a/apps/site/components/Common/Tabs/__tests__/index.test.mjs +++ b/packages/ui-components/Common/Tabs/__tests__/index.test.mjs @@ -2,7 +2,6 @@ import * as TabsPrimitive from '@radix-ui/react-tabs'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import Link from '../../../Link'; import Tabs from '../index'; const Sut = ({ addons }) => { @@ -43,7 +42,7 @@ describe('Tabs', () => { }); it('should render the given addons', async () => { - render(<Sut addons={<Link href="/">addon</Link>} />); + render(<Sut addons={<a href="/">addon</a>} />); expect(screen.getByRole('link', { name: 'addon' })).toBeInTheDocument(); }); diff --git a/apps/site/components/Common/Tabs/index.module.css b/packages/ui-components/Common/Tabs/index.module.css similarity index 100% rename from apps/site/components/Common/Tabs/index.module.css rename to packages/ui-components/Common/Tabs/index.module.css diff --git a/apps/site/components/Common/Tabs/index.stories.tsx b/packages/ui-components/Common/Tabs/index.stories.tsx similarity index 94% rename from apps/site/components/Common/Tabs/index.stories.tsx rename to packages/ui-components/Common/Tabs/index.stories.tsx index 5cd3767843033..0325422768505 100644 --- a/apps/site/components/Common/Tabs/index.stories.tsx +++ b/packages/ui-components/Common/Tabs/index.stories.tsx @@ -2,7 +2,7 @@ import * as TabsPrimitive from '@radix-ui/react-tabs'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import type { ComponentProps } from 'react'; -import Tabs from '@/components/Common/Tabs'; +import Tabs from '@node-core/ui-components/Common/Tabs'; type Story = StoryObj<typeof Tabs>; type Meta = MetaObj<typeof Tabs>; diff --git a/apps/site/components/Common/Tabs/index.tsx b/packages/ui-components/Common/Tabs/index.tsx similarity index 100% rename from apps/site/components/Common/Tabs/index.tsx rename to packages/ui-components/Common/Tabs/index.tsx diff --git a/apps/site/components/Common/ThemeToggle/__tests__/index.test.mjs b/packages/ui-components/Common/ThemeToggle/__tests__/index.test.mjs similarity index 100% rename from apps/site/components/Common/ThemeToggle/__tests__/index.test.mjs rename to packages/ui-components/Common/ThemeToggle/__tests__/index.test.mjs diff --git a/apps/site/components/Common/ThemeToggle/index.module.css b/packages/ui-components/Common/ThemeToggle/index.module.css similarity index 100% rename from apps/site/components/Common/ThemeToggle/index.module.css rename to packages/ui-components/Common/ThemeToggle/index.module.css diff --git a/apps/site/components/Common/ThemeToggle/index.stories.tsx b/packages/ui-components/Common/ThemeToggle/index.stories.tsx similarity index 77% rename from apps/site/components/Common/ThemeToggle/index.stories.tsx rename to packages/ui-components/Common/ThemeToggle/index.stories.tsx index d249c438179ed..a09fe58a118c0 100644 --- a/apps/site/components/Common/ThemeToggle/index.stories.tsx +++ b/packages/ui-components/Common/ThemeToggle/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import ThemeToggle from '@/components/Common/ThemeToggle'; +import ThemeToggle from '@node-core/ui-components/Common/ThemeToggle'; type Story = StoryObj<typeof ThemeToggle>; type Meta = MetaObj<typeof ThemeToggle>; diff --git a/apps/site/components/Common/ThemeToggle/index.tsx b/packages/ui-components/Common/ThemeToggle/index.tsx similarity index 73% rename from apps/site/components/Common/ThemeToggle/index.tsx rename to packages/ui-components/Common/ThemeToggle/index.tsx index ac2f06fefc8f4..01ada3d2765be 100644 --- a/apps/site/components/Common/ThemeToggle/index.tsx +++ b/packages/ui-components/Common/ThemeToggle/index.tsx @@ -1,18 +1,17 @@ import { MoonIcon, SunIcon } from '@heroicons/react/24/outline'; -import { useTranslations } from 'next-intl'; import type { FC, MouseEvent } from 'react'; import styles from './index.module.css'; type ThemeToggleProps = { onClick?: (event: MouseEvent<HTMLButtonElement>) => void; + ariaLabel: string; }; -const ThemeToggle: FC<ThemeToggleProps> = ({ onClick = () => {} }) => { - const t = useTranslations(); - - const ariaLabel = t('components.common.themeToggle.label'); - +const ThemeToggle: FC<ThemeToggleProps> = ({ + onClick = () => {}, + ariaLabel, +}) => { return ( <button type="button" diff --git a/apps/site/components/Common/Tooltip/index.module.css b/packages/ui-components/Common/Tooltip/index.module.css similarity index 100% rename from apps/site/components/Common/Tooltip/index.module.css rename to packages/ui-components/Common/Tooltip/index.module.css diff --git a/apps/site/components/Common/Tooltip/index.stories.tsx b/packages/ui-components/Common/Tooltip/index.stories.tsx similarity index 88% rename from apps/site/components/Common/Tooltip/index.stories.tsx rename to packages/ui-components/Common/Tooltip/index.stories.tsx index f37905ad80603..bf4a087dc13b7 100644 --- a/apps/site/components/Common/Tooltip/index.stories.tsx +++ b/packages/ui-components/Common/Tooltip/index.stories.tsx @@ -1,13 +1,12 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Button from '@/components/Common/Button'; -import Tooltip from '@/components/Common/Tooltip'; +import Tooltip from '@node-core/ui-components/Common/Tooltip'; type Story = StoryObj<typeof Tooltip>; type Meta = MetaObj<typeof Tooltip>; const defaultProps = { - children: <Button>Rocket Turtle</Button>, + children: <a>Rocket Turtle</a>, content: <div className="p-3">🚀 🐢</div>, }; diff --git a/apps/site/components/Common/Tooltip/index.tsx b/packages/ui-components/Common/Tooltip/index.tsx similarity index 100% rename from apps/site/components/Common/Tooltip/index.tsx rename to packages/ui-components/Common/Tooltip/index.tsx diff --git a/apps/site/components/Containers/Footer/index.module.css b/packages/ui-components/Containers/Footer/index.module.css similarity index 100% rename from apps/site/components/Containers/Footer/index.module.css rename to packages/ui-components/Containers/Footer/index.module.css diff --git a/packages/ui-components/Containers/Footer/index.stories.tsx b/packages/ui-components/Containers/Footer/index.stories.tsx new file mode 100644 index 0000000000000..872a0bf48c1ff --- /dev/null +++ b/packages/ui-components/Containers/Footer/index.stories.tsx @@ -0,0 +1,27 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import Footer from '@node-core/ui-components/Containers/Footer'; + +type Story = StoryObj<typeof Footer>; +type Meta = MetaObj<typeof Footer>; + +export const Default: Story = { + args: { + navigation: { + footerLinks: [ + { link: '/', text: 'Home' }, + { link: 'https://openjsf.org', text: 'OpenJS Foundation' }, + ], + socialLinks: [ + { icon: 'github', link: 'https://github.com' }, + { icon: 'mastodon', link: 'https://mastodon.social' }, + { icon: 'twitter', link: 'https://twitter.com' }, + { icon: 'slack', link: 'https://slack.com' }, + { icon: 'linkedin', link: 'https://linkedin.com' }, + { icon: 'bluesky', link: 'https://bsky.app' }, + ], + }, + }, +}; + +export default { component: Footer } as Meta; diff --git a/packages/ui-components/Containers/Footer/index.tsx b/packages/ui-components/Containers/Footer/index.tsx new file mode 100644 index 0000000000000..d6a2dacbeb482 --- /dev/null +++ b/packages/ui-components/Containers/Footer/index.tsx @@ -0,0 +1,95 @@ +'use client'; + +import type { FC, SVGProps } from 'react'; + +import NavItem from '@node-core/ui-components/Containers/NavBar/NavItem'; +import { + Bluesky, + Discord, + GitHub, + LinkedIn, + Mastodon, + Slack, + X, +} from '@node-core/ui-components/Icons/Social'; +import type { LinkLike } from '@node-core/ui-components/types'; + +import styles from './index.module.css'; + +const footerSocialIcons: Record<string, React.FC<SVGProps<SVGSVGElement>>> = { + github: GitHub, + mastodon: Mastodon, + twitter: X, + slack: Slack, + linkedin: LinkedIn, + bluesky: Bluesky, + discord: Discord, +}; + +type Navigation = { + socialLinks: Array<{ + icon: string; + link: string; + }>; + footerLinks: Array<{ + text: string; + link: string; + }>; +}; + +const Footer: FC<{ + pathname: string; + as: LinkLike; + navigation: Navigation; +}> = ({ pathname = '/', as = 'a', navigation }) => { + const openJSlink = navigation.footerLinks.at(-1)!; + + return ( + <footer className={styles.footer}> + <div className={styles.sectionPrimary}> + {navigation.footerLinks.slice(0, -1).map(item => ( + <NavItem + key={item.link} + type="footer" + href={item.link} + as={as} + pathname={pathname} + > + {item.text} + </NavItem> + ))} + </div> + + <div className={styles.sectionSecondary}> + <NavItem + type="footer" + href={openJSlink.link} + as={as} + pathname={pathname} + > + © {openJSlink.text} + </NavItem> + + <div className={styles.social}> + {navigation.socialLinks.map(link => { + const SocialIcon = footerSocialIcons[link.icon]; + + return ( + <NavItem + key={link.icon} + href={link.link} + type="footer" + as={as} + pathname={pathname} + > + <SocialIcon width={20} height={20} aria-label={link.link} /> + </NavItem> + ); + })} + </div> + </div> + </footer> + ); +}; + +export default Footer; diff --git a/apps/site/components/Containers/MetaBar/__tests__/index.test.mjs b/packages/ui-components/Containers/MetaBar/__tests__/index.test.mjs similarity index 100% rename from apps/site/components/Containers/MetaBar/__tests__/index.test.mjs rename to packages/ui-components/Containers/MetaBar/__tests__/index.test.mjs diff --git a/apps/site/components/Containers/MetaBar/index.module.css b/packages/ui-components/Containers/MetaBar/index.module.css similarity index 100% rename from apps/site/components/Containers/MetaBar/index.module.css rename to packages/ui-components/Containers/MetaBar/index.module.css diff --git a/apps/site/components/Containers/MetaBar/index.stories.tsx b/packages/ui-components/Containers/MetaBar/index.stories.tsx similarity index 71% rename from apps/site/components/Containers/MetaBar/index.stories.tsx rename to packages/ui-components/Containers/MetaBar/index.stories.tsx index adc1cb49d6c6a..9f70782713604 100644 --- a/apps/site/components/Containers/MetaBar/index.stories.tsx +++ b/packages/ui-components/Containers/MetaBar/index.stories.tsx @@ -1,31 +1,12 @@ import { CodeBracketIcon } from '@heroicons/react/24/outline'; 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'; +import MetaBar from '@node-core/ui-components/Containers/MetaBar'; +import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; type Story = StoryObj<typeof MetaBar>; type Meta = MetaObj<typeof MetaBar>; -const names = [ - 'ovflowd', - 'bmuenzenmeyer', - 'AugustinMauroy', - 'HinataKah0', - 'Harkunwar', - 'rodion-arr', - 'mikeesto', - 'bnb', - 'benhalverson', - 'aymen94', - 'shanpriyan', - 'Wai-Dung', - 'manishprivet', - 'araujogui', -]; - export const Default: Story = { args: { items: { @@ -35,19 +16,17 @@ export const Default: Story = { 'components.metabar.readingTime': '15 minutes', 'components.metabar.addedIn': 'v1.0.0', 'components.metabar.author': 'The Node.js Project', - 'components.metabar.authors': ( - <WithAvatarGroup usernames={names} limit={6} /> - ), + 'components.metabar.authors': <p>...</p>, 'components.metabar.contribute': ( <> - <GitHub className="fill-neutral-700 dark:fill-neutral-100" /> - <Link href="/contribute">Edit this page</Link> + <GitHubIcon className="fill-neutral-700 dark:fill-neutral-100" /> + <a href="/contribute">Edit this page</a> </> ), 'components.metabar.viewAs': ( <> <CodeBracketIcon /> - <Link href="/json">JSON</Link> + <a href="/json">JSON</a> </> ), }, diff --git a/apps/site/components/Containers/MetaBar/index.tsx b/packages/ui-components/Containers/MetaBar/index.tsx similarity index 67% rename from apps/site/components/Containers/MetaBar/index.tsx rename to packages/ui-components/Containers/MetaBar/index.tsx index e1b06d74f7104..eaca311870cee 100644 --- a/apps/site/components/Containers/MetaBar/index.tsx +++ b/packages/ui-components/Containers/MetaBar/index.tsx @@ -1,27 +1,31 @@ import type { Heading } from '@vcarl/remark-headings'; -import { useTranslations } from 'next-intl'; import { Fragment, useMemo } from 'react'; import type { FC } from 'react'; -import Link from '@/components/Link'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; type MetaBarProps = { - items: Partial<Record<IntlMessageKeys, React.ReactNode>>; + items: Partial<Record<string, React.ReactNode>>; headings?: { items: Array<Heading>; minDepth?: number; }; + as?: LinkLike; + heading: string; }; -const MetaBar: FC<MetaBarProps> = ({ items, headings }) => { - const t = useTranslations(); - +const MetaBar: FC<MetaBarProps> = ({ + items, + headings, + as: Component = 'a', + heading, +}) => { // The default depth of headings to display in the table of contents. const { minDepth = 2, items: headingItems = [] } = headings || {}; - const heading = useMemo( + const filteredHeadings = useMemo( () => headingItems.filter(({ depth }) => depth >= minDepth && depth <= 4), [minDepth, headingItems] ); @@ -33,24 +37,27 @@ const MetaBar: FC<MetaBarProps> = ({ items, headings }) => { .filter(([, value]) => !!value) .map(([key, value]) => ( <Fragment key={key}> - <dt>{t(key as IntlMessageKeys)}</dt> + <dt>{key}</dt> <dd>{value}</dd> </Fragment> ))} - {heading.length > 0 && ( + {filteredHeadings.length > 0 && ( <> - <dt>{t('components.metabar.tableOfContents')}</dt> + <dt>{heading}</dt> <dd> <ol> - {heading.map(head => ( + {filteredHeadings.map(head => ( <li key={head.value} className={ head.depth === 3 ? 'pl-2' : head.depth === 4 ? 'pl-4' : '' } > - <Link href={`#${head?.data?.id}`}> {head.value}</Link> + <Component href={`#${head?.data?.id}`}> + {' '} + {head.value} + </Component> </li> ))} </ol> diff --git a/apps/site/components/Containers/NavBar/NavItem/index.module.css b/packages/ui-components/Containers/NavBar/NavItem/index.module.css similarity index 100% rename from apps/site/components/Containers/NavBar/NavItem/index.module.css rename to packages/ui-components/Containers/NavBar/NavItem/index.module.css diff --git a/apps/site/components/Containers/NavBar/NavItem/index.stories.tsx b/packages/ui-components/Containers/NavBar/NavItem/index.stories.tsx similarity index 87% rename from apps/site/components/Containers/NavBar/NavItem/index.stories.tsx rename to packages/ui-components/Containers/NavBar/NavItem/index.stories.tsx index e861afef7691f..3cfae44cdf8fd 100644 --- a/apps/site/components/Containers/NavBar/NavItem/index.stories.tsx +++ b/packages/ui-components/Containers/NavBar/NavItem/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NavItem from '@/components/Containers/NavBar/NavItem'; +import NavItem from '@node-core/ui-components/Containers/NavBar/NavItem'; type Story = StoryObj<typeof NavItem>; type Meta = MetaObj<typeof NavItem>; @@ -16,6 +16,7 @@ export const WithExternalLink: Story = { args: { href: 'https://nodejs.org/en', children: 'Learn', + target: '_blank', }, }; diff --git a/apps/site/components/Containers/NavBar/NavItem/index.tsx b/packages/ui-components/Containers/NavBar/NavItem/index.tsx similarity index 78% rename from apps/site/components/Containers/NavBar/NavItem/index.tsx rename to packages/ui-components/Containers/NavBar/NavItem/index.tsx index 9e9ff0ce7c248..2daaa4f8c6ce7 100644 --- a/apps/site/components/Containers/NavBar/NavItem/index.tsx +++ b/packages/ui-components/Containers/NavBar/NavItem/index.tsx @@ -2,7 +2,8 @@ import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; import classNames from 'classnames'; import type { FC, HTMLAttributeAnchorTarget, PropsWithChildren } from 'react'; -import ActiveLink from '@/components/Common/ActiveLink'; +import BaseActiveLink from '@node-core/ui-components/Common/BaseActiveLink'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; @@ -13,6 +14,9 @@ type NavItemProps = { type?: NavItemType; className?: string; target?: HTMLAttributeAnchorTarget | undefined; + + pathname: string; + as: LinkLike; }; const NavItem: FC<PropsWithChildren<NavItemProps>> = ({ @@ -21,18 +25,20 @@ const NavItem: FC<PropsWithChildren<NavItemProps>> = ({ children, className, target, + ...props }) => ( - <ActiveLink + <BaseActiveLink + target={target} href={href} className={classNames(styles.navItem, styles[type], className)} activeClassName={styles.active} allowSubPath={href.startsWith('/')} - target={target} + {...props} > <span className={styles.label}>{children}</span> {target === '_blank' && <ArrowUpRightIcon className={styles.icon} />} - </ActiveLink> + </BaseActiveLink> ); export default NavItem; diff --git a/apps/site/components/Containers/NavBar/index.module.css b/packages/ui-components/Containers/NavBar/index.module.css similarity index 100% rename from apps/site/components/Containers/NavBar/index.module.css rename to packages/ui-components/Containers/NavBar/index.module.css diff --git a/apps/site/components/Containers/NavBar/index.stories.tsx b/packages/ui-components/Containers/NavBar/index.stories.tsx similarity index 64% rename from apps/site/components/Containers/NavBar/index.stories.tsx rename to packages/ui-components/Containers/NavBar/index.stories.tsx index 5d42306a661bc..665b574fa85aa 100644 --- a/apps/site/components/Containers/NavBar/index.stories.tsx +++ b/packages/ui-components/Containers/NavBar/index.stories.tsx @@ -1,12 +1,18 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NavBar from '@/components/Containers/NavBar'; +import NavBar from '@node-core/ui-components/Containers/NavBar'; type Story = StoryObj<typeof NavBar>; type Meta = MetaObj<typeof NavBar>; export const Default: Story = { args: { + as: 'a', + Logo: 'a', + pathname: '/', + + children: <a>Some other child</a>, + navItems: [ { text: 'Learn', @@ -33,15 +39,6 @@ export const Default: Story = { link: 'https://openjsf.org/certification', }, ], - languages: { - availableLanguages: [ - { name: 'English', code: 'en', localName: 'English' }, - { name: 'French', code: 'fr', localName: 'Français' }, - { name: 'Spanish', code: 'es', localName: 'Español' }, - ], - currentLanguage: 'en', - }, - onThemeTogglerClick: () => {}, }, }; diff --git a/packages/ui-components/Containers/NavBar/index.tsx b/packages/ui-components/Containers/NavBar/index.tsx new file mode 100644 index 0000000000000..4e6a6c890ef77 --- /dev/null +++ b/packages/ui-components/Containers/NavBar/index.tsx @@ -0,0 +1,94 @@ +'use client'; + +import Hamburger from '@heroicons/react/24/solid/Bars3Icon'; +import XMark from '@heroicons/react/24/solid/XMarkIcon'; +import * as Label from '@radix-ui/react-label'; +import classNames from 'classnames'; +import { useState } from 'react'; +import type { + FC, + HTMLAttributeAnchorTarget, + PropsWithChildren, + ElementType, +} from 'react'; + +import NavItem from '@node-core/ui-components/Containers/NavBar/NavItem'; +import type { + FormattedMessage, + LinkLike, +} from '@node-core/ui-components/types'; + +import style from './index.module.css'; + +const navInteractionIcons = { + show: <Hamburger className={style.navInteractionIcon} />, + close: <XMark className={style.navInteractionIcon} />, +}; + +type NavbarProps = { + navItems: Array<{ + text: FormattedMessage; + link: string; + target?: HTMLAttributeAnchorTarget | undefined; + }>; + Logo: ElementType; + as: LinkLike; + pathname: string; + sidebarItemTogglerAriaLabel: string; +}; + +const NavBar: FC<PropsWithChildren<NavbarProps>> = ({ + children, + Logo, + as: Component = 'a', + navItems, + pathname, + sidebarItemTogglerAriaLabel, +}) => { + const [isMenuOpen, setIsMenuOpen] = useState(false); + + return ( + <nav className={`${style.container}`}> + <div className={style.nodeIconAndMobileItemsToggler}> + <Component className={style.nodeIconWrapper} href="/" aria-label="Home"> + <Logo /> + </Component> + + <Label.Root + className={classNames(['peer', style.sidebarItemToggler])} + htmlFor="sidebarItemToggler" + > + {navInteractionIcons[isMenuOpen ? 'close' : 'show']} + </Label.Root> + </div> + + <input + className={classNames(['peer', style.sidebarItemToggler])} + id="sidebarItemToggler" + type="checkbox" + onChange={e => setIsMenuOpen(() => e.target.checked)} + aria-label={sidebarItemTogglerAriaLabel} + /> + + <div className={`${style.main} peer-checked:flex`}> + <div className={style.navItems}> + {navItems.map(({ text, link, target }) => ( + <NavItem + pathname={pathname} + as={Component} + key={link} + href={link} + target={target} + > + {text} + </NavItem> + ))} + </div> + + <div className={style.actionsWrapper}>{children}</div> + </div> + </nav> + ); +}; + +export default NavBar; diff --git a/apps/site/components/Containers/Sidebar/SidebarGroup/index.module.css b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css similarity index 100% rename from apps/site/components/Containers/Sidebar/SidebarGroup/index.module.css rename to packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css diff --git a/apps/site/components/Containers/Sidebar/SidebarGroup/index.stories.tsx b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.stories.tsx similarity index 89% rename from apps/site/components/Containers/Sidebar/SidebarGroup/index.stories.tsx rename to packages/ui-components/Containers/Sidebar/SidebarGroup/index.stories.tsx index 3ee85d621bf0b..5fd052df21822 100644 --- a/apps/site/components/Containers/Sidebar/SidebarGroup/index.stories.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import SidebarGroup from '@/components/Containers/Sidebar/SidebarGroup'; +import SidebarGroup from '@node-core/ui-components/Containers/Sidebar/SidebarGroup'; type Story = StoryObj<typeof SidebarGroup>; type Meta = MetaObj<typeof SidebarGroup>; diff --git a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx new file mode 100644 index 0000000000000..e26183fe0e58e --- /dev/null +++ b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx @@ -0,0 +1,33 @@ +import type { ComponentProps, FC } from 'react'; + +import SidebarItem from '@node-core/ui-components/Containers/Sidebar/SidebarItem'; +import type { + FormattedMessage, + LinkLike, +} from '@node-core/ui-components/types'; + +import styles from './index.module.css'; + +type SidebarGroupProps = { + groupName: FormattedMessage; + items: Array<Omit<ComponentProps<typeof SidebarItem>, 'as' | 'pathname'>>; + as?: LinkLike; + pathname?: string; +}; + +const SidebarGroup: FC<SidebarGroupProps> = ({ + groupName, + items, + ...props +}) => ( + <section className={styles.group}> + <label className={styles.groupName}>{groupName}</label> + <ul className={styles.itemList}> + {items.map(({ label, link }) => ( + <SidebarItem key={link} label={label} link={link} {...props} /> + ))} + </ul> + </section> +); + +export default SidebarGroup; diff --git a/apps/site/components/Containers/Sidebar/index.module.css b/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css similarity index 100% rename from apps/site/components/Containers/Sidebar/index.module.css rename to packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css diff --git a/apps/site/components/Containers/Sidebar/SidebarItem/index.stories.tsx b/packages/ui-components/Containers/Sidebar/SidebarItem/index.stories.tsx similarity index 78% rename from apps/site/components/Containers/Sidebar/SidebarItem/index.stories.tsx rename to packages/ui-components/Containers/Sidebar/SidebarItem/index.stories.tsx index 3ed6e4383e819..a8cb4c50fda36 100644 --- a/apps/site/components/Containers/Sidebar/SidebarItem/index.stories.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import SidebarItem from '@/components/Containers/Sidebar/SidebarItem'; +import SidebarItem from '@node-core/ui-components/Containers/Sidebar/SidebarItem'; type Story = StoryObj<typeof SidebarItem>; type Meta = MetaObj<typeof SidebarItem>; diff --git a/apps/site/components/Containers/Sidebar/SidebarItem/index.tsx b/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx similarity index 56% rename from apps/site/components/Containers/Sidebar/SidebarItem/index.tsx rename to packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx index 6650182a133d9..417cb0744f517 100644 --- a/apps/site/components/Containers/Sidebar/SidebarItem/index.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx @@ -1,19 +1,24 @@ import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; import type { FC } from 'react'; -import ActiveLink from '@/components/Common/ActiveLink'; -import type { FormattedMessage } from '@/types'; +import ActiveLink from '@node-core/ui-components/Common/BaseActiveLink'; +import type { + FormattedMessage, + LinkLike, +} from '@node-core/ui-components/types'; import styles from './index.module.css'; type SidebarItemProps = { label: FormattedMessage; link: string; + as?: LinkLike; + pathname?: string; }; -const SidebarItem: FC<SidebarItemProps> = ({ label, link }) => ( +const SidebarItem: FC<SidebarItemProps> = ({ label, link, ...props }) => ( <li className={styles.sideBarItem}> - <ActiveLink href={link} activeClassName={styles.active}> + <ActiveLink href={link} activeClassName={styles.active} {...props}> <span className={styles.label}>{label}</span> {link.startsWith('http') && <ArrowUpRightIcon className={styles.icon} />} diff --git a/packages/ui-components/Containers/Sidebar/index.module.css b/packages/ui-components/Containers/Sidebar/index.module.css new file mode 100644 index 0000000000000..7324ae7ba9f29 --- /dev/null +++ b/packages/ui-components/Containers/Sidebar/index.module.css @@ -0,0 +1,29 @@ +.wrapper { + @apply flex + w-full + flex-col + items-start + gap-8 + overflow-auto + overflow-x-hidden + border-r-neutral-200 + bg-white + px-4 + py-6 + sm:border-r + md:max-w-xs + lg:px-6 + dark:border-r-neutral-900 + dark:bg-neutral-950; + + > section { + @apply hidden + sm:flex; + } + + > span { + @apply flex + w-full + sm:hidden; + } +} diff --git a/apps/site/components/Containers/Sidebar/index.stories.tsx b/packages/ui-components/Containers/Sidebar/index.stories.tsx similarity index 93% rename from apps/site/components/Containers/Sidebar/index.stories.tsx rename to packages/ui-components/Containers/Sidebar/index.stories.tsx index d854bdb70e7b5..4fcb32d9379fe 100644 --- a/apps/site/components/Containers/Sidebar/index.stories.tsx +++ b/packages/ui-components/Containers/Sidebar/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Sidebar from '@/components/Containers/Sidebar'; +import Sidebar from '@node-core/ui-components/Containers/Sidebar'; type Story = StoryObj<typeof Sidebar>; type Meta = MetaObj<typeof Sidebar>; @@ -76,6 +76,8 @@ export const Default: Story = { ], }, ], + title: 'Sidebar', + onSelect: console.log, }, }; diff --git a/apps/site/components/Containers/Sidebar/index.tsx b/packages/ui-components/Containers/Sidebar/index.tsx similarity index 57% rename from apps/site/components/Containers/Sidebar/index.tsx rename to packages/ui-components/Containers/Sidebar/index.tsx index ced013a038b84..d2756905294dc 100644 --- a/apps/site/components/Containers/Sidebar/index.tsx +++ b/packages/ui-components/Containers/Sidebar/index.tsx @@ -1,20 +1,26 @@ -import { useTranslations } from 'next-intl'; import type { ComponentProps, FC } from 'react'; -import SidebarGroup from '@/components/Containers/Sidebar/SidebarGroup'; -import WithRouterSelect from '@/components/withRouterSelect'; -import { useClientContext } from '@/hooks/react-server'; +import Select from '@node-core/ui-components/Common/Select'; +import SidebarGroup from '@node-core/ui-components/Containers/Sidebar/SidebarGroup'; +import type { LinkLike } from '@node-core/ui-components/types'; import styles from './index.module.css'; type SidebarProps = { - groups: Array<ComponentProps<typeof SidebarGroup>>; + groups: Array<Omit<ComponentProps<typeof SidebarGroup>, 'as' | 'pathname'>>; + pathname?: string; + title: string; + onSelect: (value: string) => void; + as?: LinkLike; }; -const SideBar: FC<SidebarProps> = ({ groups }) => { - const t = useTranslations(); - const { pathname } = useClientContext(); - +const SideBar: FC<SidebarProps> = ({ + groups, + pathname, + title, + onSelect, + as, +}) => { const selectItems = groups.map(({ items, groupName }) => ({ label: groupName, items: items.map(({ label, link }) => ({ value: link, label })), @@ -28,10 +34,11 @@ const SideBar: FC<SidebarProps> = ({ groups }) => { return ( <aside className={styles.wrapper}> {selectItems.length > 0 && ( - <WithRouterSelect - label={t('components.common.sidebar.title')} + <Select + label={title} values={selectItems} defaultValue={currentItem?.value} + onChange={onSelect} /> )} @@ -40,6 +47,8 @@ const SideBar: FC<SidebarProps> = ({ groups }) => { key={groupName.toString()} groupName={groupName} items={items} + pathname={pathname} + as={as} /> ))} </aside> 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<typeof HexagonGrid>; type Meta = MetaObj<typeof HexagonGrid>; 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/InstallationMethod/Choco.tsx b/packages/ui-components/Icons/InstallationMethod/Choco.tsx similarity index 100% rename from apps/site/components/Icons/InstallationMethod/Choco.tsx rename to packages/ui-components/Icons/InstallationMethod/Choco.tsx diff --git a/apps/site/components/Icons/InstallationMethod/Devbox.tsx b/packages/ui-components/Icons/InstallationMethod/Devbox.tsx similarity index 100% rename from apps/site/components/Icons/InstallationMethod/Devbox.tsx rename to packages/ui-components/Icons/InstallationMethod/Devbox.tsx diff --git a/apps/site/components/Icons/InstallationMethod/Docker.tsx b/packages/ui-components/Icons/InstallationMethod/Docker.tsx similarity index 100% rename from apps/site/components/Icons/InstallationMethod/Docker.tsx rename to packages/ui-components/Icons/InstallationMethod/Docker.tsx diff --git a/packages/ui-components/Icons/InstallationMethod/FNM.tsx b/packages/ui-components/Icons/InstallationMethod/FNM.tsx new file mode 100644 index 0000000000000..2ca3f84d46b67 --- /dev/null +++ b/packages/ui-components/Icons/InstallationMethod/FNM.tsx @@ -0,0 +1,132 @@ +import type { FC, SVGProps } from 'react'; + +const FNM: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + xmlns="http://www.w3.org/2000/svg" + width="32" + height="32" + fill="none" + viewBox="0 0 1142 1269" + {...props} + > + <mask + id="b" + width="1142" + height="1141" + x="0" + y="0" + maskUnits="userSpaceOnUse" + style={{ maskType: 'alpha' }} + > + <path + fill="#A0041E" + d="M.88 553.942 261.56 325.848l521.357 32.585 32.585 521.357-228.094 260.68s.033-195.478-195.509-391.019C196.357 553.909.88 553.942.88 553.942" + ></path> + <path + fill="#FFAC33" + d="M0 1140.47s-1.172-259.995 97.266-358.434c98.439-98.438 359.802-91.661 359.802-91.661s-.033 254.585-97.787 352.335c-97.755 97.76-359.28 97.76-359.28 97.76" + ></path> + <path + fill="#FFCC4D" + d="M261.526 1010.13c71.985 0 130.34-58.355 130.34-130.34 0-71.984-58.355-130.339-130.34-130.339-71.984 0-130.339 58.355-130.339 130.339s58.355 130.34 130.339 130.34" + ></path> + <path + fill="url(#a)" + d="M1141.32 0S815.468 0 424.45 325.848C228.942 488.772 228.942 782.036 294.111 847.206s358.433 65.169 521.357-130.34C1141.32 325.848 1141.32 0 1141.32 0" + ></path> + <path + fill="#A0041E" + d="M228.974 912.376s0-76.259 19.065-95.324c19.064-19.064 247.859-209.692 266.905-190.646s-171.601 247.84-190.666 266.905-95.304 19.065-95.304 19.065" + ></path> + </mask> + <g mask="url(#b)"> + <path + fill="#DA5045" + d="M1 554.094 261.679 326l521.357 32.585 32.585 521.357-228.094 260.678s.033-195.476-195.509-391.017C196.476 554.061 1 554.094 1 554.094" + ></path> + <path + fill="#000" + fillOpacity="0.06" + d="M-5 557.5c176.085-36.724 269.853-84.021 426.5-225.5l-152 323.5z" + ></path> + <path + fill="#FFAC33" + d="M0 1140.47s-1.172-259.995 97.266-358.434c98.439-98.438 359.802-91.661 359.802-91.661s-.033 254.585-97.787 352.335c-97.755 97.76-359.28 97.76-359.28 97.76" + ></path> + <path + fill="#FFCC4D" + d="M261.526 1010.13c71.985 0 130.34-58.355 130.34-130.34 0-71.984-58.355-130.339-130.34-130.339-71.984 0-130.339 58.355-130.339 130.339s58.355 130.34 130.339 130.34" + ></path> + <path + fill="#D9D5D4" + d="M1141.32 0S815.469 0 424.451 325.848c-195.509 162.924-195.509 456.188-130.34 521.358 65.17 65.169 358.433 65.169 521.358-130.34C1141.32 325.848 1141.32 0 1141.32 0" + ></path> + <path + fill="#DA5045" + d="M228.974 912.376s0-76.259 19.065-95.324c19.064-19.064 247.859-209.692 266.905-190.646s-171.601 247.84-190.666 266.905-95.304 19.065-95.304 19.065" + ></path> + <mask + id="c" + width="253" + height="253" + x="823" + y="66" + maskUnits="userSpaceOnUse" + style={{ maskType: 'alpha' }} + > + <path + fill="#62AB5C" + stroke="#63AC5D" + d="m823.635 227.688 37.272-126.542 123.781-34.511 90.192 90.19-30.83 127.462-130.225 33.591z" + ></path> + </mask> + <g mask="url(#c)"> + <path + fill="#DA5045" + d="M1010 433.376 760.134 183.513l-16.566-16.565 207.989-207.99 266.433 266.429z" + ></path> + </g> + <path + fill="#000" + fillOpacity="0.13" + d="M979 1136 297.5 841l216.422-216C786.213 382.599 926.373 235.651 1171.21-31z" + ></path> + </g> + <mask + id="d" + width="915.703" + height="915.703" + x="141.068" + y="389.054" + fill="#000" + maskUnits="userSpaceOnUse" + > + <path fill="#fff" d="M141.068 389.054h915.703v915.703H141.068z"></path> + <path d="M337.103 867.387c-45.767 45.767-44.495 95.348-11.124 128.72l24.155 24.153-35.596 35.6 34.96 34.96 35.597-35.6 123.316 123.32 49.898-49.9-123.316-123.32 49.263-49.259-29.24-40.682-54.983 54.984-22.566-22.566c-16.527-16.527-15.256-31.147 4.767-51.17 12.078-12.077 26.38-22.565 42.271-29.557l-18.752-46.721c-21.294 8.582-43.859 22.248-68.65 47.038m287.825 194.633 50.217-50.22-117.913-117.909c-2.543-21.612-.636-38.139 10.17-48.945 12.395-12.395 23.201-9.217 44.178 11.76l109.331 109.331 50.217-50.216-123.952-123.952c-32.1-32.1-68.014-33.053-96.936-4.131-21.613 21.612-29.24 45.766-27.333 77.549l-22.884-15.891-43.86 43.859zm131.456-480.427c-15.256 15.256-18.752 35.279-17.163 57.209-17.48-9.853-33.371-6.674-46.084 6.039-14.938 14.937-17.163 32.418-13.349 57.208l-19.705-12.713-36.55 36.55 168.765 168.765 43.542-43.542-124.27-124.27c-1.907-15.255 1.272-23.519 6.357-28.604 6.674-6.674 12.713-3.814 24.472 7.946l119.185 119.184 35.596-35.596-124.269-124.27c-1.907-15.255.953-23.201 6.356-28.604 6.674-6.674 12.713-3.814 24.473 7.946l119.184 119.184 42.906-42.906-124.905-124.906c-34.643-34.643-60.704-38.456-84.541-14.62"></path> + </mask> + <path + fill="#FFAC33" + d="M337.103 867.387c-45.767 45.767-44.495 95.348-11.124 128.72l24.155 24.153-35.596 35.6 34.96 34.96 35.597-35.6 123.316 123.32 49.898-49.9-123.316-123.32 49.263-49.259-29.24-40.682-54.983 54.984-22.566-22.566c-16.527-16.527-15.256-31.147 4.767-51.17 12.078-12.077 26.38-22.565 42.271-29.557l-18.752-46.721c-21.294 8.582-43.859 22.248-68.65 47.038m287.825 194.633 50.217-50.22-117.913-117.909c-2.543-21.612-.636-38.139 10.17-48.945 12.395-12.395 23.201-9.217 44.178 11.76l109.331 109.331 50.217-50.216-123.952-123.952c-32.1-32.1-68.014-33.053-96.936-4.131-21.613 21.612-29.24 45.766-27.333 77.549l-22.884-15.891-43.86 43.859zm131.456-480.427c-15.256 15.256-18.752 35.279-17.163 57.209-17.48-9.853-33.371-6.674-46.084 6.039-14.938 14.937-17.163 32.418-13.349 57.208l-19.705-12.713-36.55 36.55 168.765 168.765 43.542-43.542-124.27-124.27c-1.907-15.255 1.272-23.519 6.357-28.604 6.674-6.674 12.713-3.814 24.472 7.946l119.185 119.184 35.596-35.596-124.269-124.27c-1.907-15.255.953-23.201 6.356-28.604 6.674-6.674 12.713-3.814 24.473 7.946l119.184 119.184 42.906-42.906-124.905-124.906c-34.643-34.643-60.704-38.456-84.541-14.62" + ></path> + <path + fill="#fff" + d="m350.134 1020.26 45.046 45.05 45.046-45.05-45.046-45.045zm-35.596 35.6-45.046-45.05-45.046 45.05 45.046 45.04zm34.96 34.96-45.046 45.04 45.046 45.05 45.046-45.05zm35.597-35.6 45.046-45.04-45.046-45.05-45.046 45.05zm123.316 123.32-45.046 45.04 45.046 45.05 45.046-45.05zm49.898-49.9 45.046 45.05 45.046-45.05-45.046-45.05zm-123.316-123.32-45.046-45.043-45.046 45.043 45.046 45.05zm49.263-49.259 45.046 45.049 38.274-38.277-31.591-43.953zm-29.24-40.682 51.729-37.18-43.758-60.882-53.017 53.016zm-54.983 54.984-45.046 45.047 45.046 45.04 45.046-45.04zm24.472-103.293 25.656 58.31 56.427-24.828-22.962-57.211zm-18.752-46.721 59.121-23.728-23.762-59.204-59.17 23.845zm-113.696 1.992c-31.063 31.064-51.501 68.926-53.8 110.539-2.34 42.351 14.647 80.24 42.676 108.27l90.092-90.09c-5.342-5.342-5.676-8.926-5.553-11.15.164-2.961 1.974-12.773 16.677-27.477zm-11.124 218.809 24.155 24.16 90.092-90.095-24.155-24.155zm24.155-65.935-35.596 35.595 90.092 90.09 35.596-35.59zM269.492 1100.9l34.96 34.96 90.092-90.09-34.96-34.96zm125.052 34.96 35.597-35.59-90.092-90.09-35.597 35.59zm-54.495-35.59 123.316 123.31 90.092-90.09-123.316-123.31zm213.408 123.31 49.898-49.89-90.092-90.1-49.898 49.9zm49.898-139.99L480.039 960.277l-90.092 90.093 123.316 123.32zm-123.316-33.22 49.263-49.26-90.092-90.095-49.263 49.262zm55.946-131.49-29.24-40.681-103.458 74.36 29.24 40.682zM409.97 870.333l-54.983 54.984 90.092 90.093 54.983-54.985zm35.109 54.984-22.566-22.566-90.092 90.092 22.566 22.567zm-22.566-22.566c-.782-.782 1.338 1.08 3.518 5.697 2.512 5.32 4.307 12.667 3.552 20.898-.706 7.69-3.317 12.646-4.292 14.265-.852 1.415-.762.813 1.989-1.938l-90.092-90.092c-12.984 12.985-31.635 35.107-34.482 66.119-3.209 34.972 14.933 60.361 29.715 75.143zm4.767 38.922c7.514-7.513 15.434-13.017 22.881-16.293l-51.312-116.62c-24.335 10.707-45.02 26.18-61.661 42.821zm56.346-98.332-18.752-46.72-118.241 47.457 18.752 46.72zm-101.684-82.079c-29.481 11.881-59.216 30.41-89.885 61.079l90.092 90.092c18.912-18.911 34.309-27.714 47.416-32.996zm242.986 300.758-45.046 45.05 45.046 45.04 45.046-45.04zm50.217-50.22 45.046 45.05 45.046-45.05-45.046-45.042zM557.232 893.891l-63.269 7.443 2.584 21.965 15.639 15.638zm163.679 72.146-45.046 45.043 45.046 45.05 45.047-45.05zm50.217-50.216 45.046 45.046 45.046-45.046-45.046-45.046zm-248.221-50.534-36.337 52.325 107.786 74.852-7.859-130.993zm-22.884-15.891 36.337-52.326-43.733-30.37-37.65 37.65zm-43.86 43.859-45.046-45.046-45.046 45.046 45.046 45.046zm213.811 213.815 50.217-50.22-90.092-90.092-50.217 50.212zm50.217-140.312L602.278 848.845l-90.092 90.092 117.913 117.913zm-99.691-80.31c-.426-3.626-.563-6.198-.567-7.936-.004-1.748.131-2.156.026-1.589-.115.625-.536 2.511-1.786 5.077-1.305 2.681-3.216 5.483-5.725 7.992L522.356 799.9c-33.098 33.098-31.285 76.85-28.393 101.434zm-8.052 3.544c-.753.754-5.433 5.344-14.163 8.507-10.064 3.647-20.355 3.56-28.714 1.289-6.934-1.884-10.414-4.685-9.721-4.176.497.366 2.545 2.001 6.684 6.14l90.092-90.092c-10.252-10.253-28.757-28.062-53.651-34.825-15.232-4.138-31.86-4.006-48.092 1.875-14.897 5.398-25.576 14.239-32.527 21.19zm-45.914 11.76 109.331 109.328 90.093-90.089L656.626 811.66zm199.424 109.328 50.216-50.213-90.092-90.092-50.217 50.216zm50.216-140.305L692.222 746.823l-90.092 90.092 123.952 123.952zM692.222 746.823c-23.943-23.943-55.326-42.147-92.269-43.561-37.811-1.447-70.444 15.114-94.759 39.43l90.092 90.092c2.469-2.469 3.703-2.92 3.348-2.765-.521.229-1.864.624-3.555.559-1.608-.061-2.005-.478-.932.056 1.198.597 3.983 2.281 7.983 6.281zm-187.028-4.131c-36.508 36.507-48.693 79.482-45.878 126.41l127.181-7.631c-.998-16.637 2.072-21.971 8.789-28.687zm54.05 70.27L536.36 797.07l-72.674 104.651 22.884 15.891zm-104.267-8.612-43.86 43.859 90.092 90.092 43.86-43.859zm-43.86 133.951 168.765 168.769 90.092-90.1-168.765-168.761zm328.104-299.499-31.28 55.496 103.396 58.278-8.578-118.378zm-59.433 63.247-34.536 53.531 119.041 76.801-21.541-140.019zm-19.705-12.713 34.536-53.531-43.216-27.881-36.366 36.366zm-36.55 36.55-45.046-45.046-45.046 45.046 45.046 45.046zm168.765 168.765-45.046 45.046 45.046 45.046 45.046-45.046zm43.542-43.542 45.046 45.046 45.046-45.046-45.046-45.046zm-124.27-124.27-63.212 7.902 2.711 21.689 15.455 15.455zm150.014 98.526-45.046 45.046 45.046 45.046 45.046-45.046zm35.596-35.596 45.046 45.046 45.046-45.046-45.046-45.046zm-124.269-124.27-63.213 7.902 2.711 21.689 15.456 15.455zm150.013 98.526-45.046 45.046 45.046 45.046 45.046-45.046zm42.906-42.906 45.05 45.046 45.04-45.046-45.04-45.046zM711.338 536.547c-33.958 33.958-37.873 76.252-35.655 106.859l127.076-9.208c-.475-6.557.105-9.434.268-10.042.046-.171-.043.215-.422.891a7.6 7.6 0 0 1-1.175 1.592zm59.163 46.758c-18.768-10.578-41.31-16.552-65.481-12.958-23.931 3.559-43.019 15.537-56.929 29.448l90.092 90.092c-1.198 1.197-5.984 5.229-14.421 6.484-8.677 1.29-14.533-1.347-15.821-2.073zm-122.41 16.49c-16.009 16.009-26.481 35.165-31.024 56.952-4.185 20.072-2.661 39.271-.243 54.989l125.928-19.374c-.658-4.273-.863-7.035-.893-8.731-.029-1.638.118-1.758-.065-.877-.213 1.021-.709 2.61-1.648 4.332-.924 1.697-1.793 2.63-1.963 2.801zm66.233 48.723-19.705-12.713-69.072 107.062 19.705 12.713zm-99.287-4.228-36.55 36.55 90.092 90.092 36.55-36.55zm-36.55 126.642 168.765 168.765 90.092-90.092L668.579 680.84zm258.857 168.765 43.542-43.542-90.092-90.092-43.542 43.542zm43.542-133.634-124.27-124.27-90.092 90.092 124.27 124.27zm-106.103-87.125c-.278-2.225.401.393-.981 5.736-1.612 6.234-5.21 12.988-10.829 18.607l-90.092-90.092c-23.749 23.749-27.889 54.624-24.523 81.552zm-11.81 24.343c-3.029 3.029-10.397 9.474-22.417 12.939-13.12 3.782-25.099 2.124-33.567-.875-7.206-2.552-11.331-5.851-11.68-6.124-.623-.487-.125-.164 2.044 2.006l90.092-90.092c-5.01-5.011-18.743-19.097-37.921-25.89-12.283-4.35-27.758-6.206-44.255-1.45-15.397 4.437-26.022 13.028-32.388 19.394zm-65.62 7.946 119.185 119.184 90.092-90.092-119.185-119.184zM906.63 870.411l35.596-35.596-90.092-90.092-35.596 35.596zm35.596-125.688-124.269-124.27-90.092 90.092 124.269 124.27zm-106.103-87.125c-.356-2.854.413-.138-1.004 5.481-.759 3.009-2.055 6.487-4.111 10.077a42 42 0 0 1-6.695 8.785l-90.092-90.092c-24.404 24.404-27.807 55.283-24.523 81.552zm-11.81 24.343c-3.029 3.029-10.397 9.474-22.416 12.939-13.121 3.781-25.1 2.124-33.568-.875-7.205-2.552-11.331-5.851-11.68-6.124-.623-.488-.125-.164 2.045 2.006l90.092-90.092c-5.011-5.011-18.744-19.098-37.922-25.89-12.282-4.35-27.757-6.206-44.255-1.451-15.396 4.438-26.022 13.029-32.388 19.395zm-65.619 7.946 119.184 119.184 90.092-90.092-119.184-119.184zM967.97 809.071l42.91-42.906-90.096-90.092-42.906 42.906zm42.91-132.998L885.971 551.167l-90.092 90.092 124.905 124.906zM885.971 551.167c-20.39-20.39-47.292-41.431-80.896-47.031-39.377-6.563-71.502 10.176-93.737 32.411l90.092 90.092c1.377-1.376.247.209-3.653 1.719a26.7 26.7 0 0 1-6.936 1.637c-2.586.26-4.881.122-6.712-.184-3.527-.587-4.232-1.591-1.702.008 2.561 1.617 7.017 5.006 13.452 11.44z" + mask="url(#d)" + ></path> + <defs> + <linearGradient + id="a" + x1="406.603" + x2="825.103" + y1="413" + y2="941" + gradientUnits="userSpaceOnUse" + > + <stop stopColor="#D9D5D4"></stop> + <stop offset="1" stopColor="#928989"></stop> + </linearGradient> + </defs> + </svg> +); + +export default FNM; diff --git a/apps/site/components/Icons/InstallationMethod/Homebrew.tsx b/packages/ui-components/Icons/InstallationMethod/Homebrew.tsx similarity index 100% rename from apps/site/components/Icons/InstallationMethod/Homebrew.tsx rename to packages/ui-components/Icons/InstallationMethod/Homebrew.tsx diff --git a/apps/site/components/Icons/InstallationMethod/NVM.tsx b/packages/ui-components/Icons/InstallationMethod/NVM.tsx similarity index 100% rename from apps/site/components/Icons/InstallationMethod/NVM.tsx rename to packages/ui-components/Icons/InstallationMethod/NVM.tsx diff --git a/apps/site/components/Icons/InstallationMethod/Volta.tsx b/packages/ui-components/Icons/InstallationMethod/Volta.tsx similarity index 100% rename from apps/site/components/Icons/InstallationMethod/Volta.tsx rename to packages/ui-components/Icons/InstallationMethod/Volta.tsx diff --git a/packages/ui-components/Icons/InstallationMethod/index.ts b/packages/ui-components/Icons/InstallationMethod/index.ts new file mode 100644 index 0000000000000..a44debeb655f0 --- /dev/null +++ b/packages/ui-components/Icons/InstallationMethod/index.ts @@ -0,0 +1,9 @@ +import Choco from '@node-core/ui-components/Icons/InstallationMethod/Choco'; +import Devbox from '@node-core/ui-components/Icons/InstallationMethod/Devbox'; +import Docker from '@node-core/ui-components/Icons/InstallationMethod/Docker'; +import FNM from '@node-core/ui-components/Icons/InstallationMethod/FNM'; +import Homebrew from '@node-core/ui-components/Icons/InstallationMethod/Homebrew'; +import NVM from '@node-core/ui-components/Icons/InstallationMethod/NVM'; +import Volta from '@node-core/ui-components/Icons/InstallationMethod/Volta'; + +export { Choco, Devbox, Docker, FNM, Homebrew, NVM, Volta }; 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<SVGProps<SVGSVGElement>> = props => ( +const JsGreenIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="71" height="80" @@ -21,4 +21,4 @@ const JsIconGreen: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -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<TailwindSVG> = props => ( +const JsWhiteIcon: FC<TailwindSVG> = props => ( <svg width="71" height="80" @@ -34,4 +34,4 @@ const JsIconWhite: FC<TailwindSVG> = props => ( </svg> ); -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 08f1624bcec6b..c4c197126ddb9 100644 --- a/apps/site/components/Icons/Logos/Nodejs.tsx +++ b/packages/ui-components/Icons/Logos/Nodejs.tsx @@ -1,26 +1,26 @@ import classNames from 'classnames'; -import { useTranslations } from 'next-intl'; import type { FC, SVGProps } from 'react'; -import type { LogoVariant } from '@/types'; +import type { LogoVariant } from '@node-core/ui-components/types'; type NodeJsLogoProps = SVGProps<SVGSVGElement> & { variant?: LogoVariant; + ariaLabel?: string; }; -const Nodejs: FC<NodeJsLogoProps> = ({ +const NodejsIcon: FC<NodeJsLogoProps> = ({ className, variant = 'default', + ariaLabel = '', ...props }) => { - const t = useTranslations(); return ( <svg width="267" height="80" viewBox="0 0 267 80" fill="none" - aria-label={t('layouts.logo')} + aria-label={ariaLabel} xmlns="http://www.w3.org/2000/svg" className={classNames('fill-[#333333] dark:fill-white', className)} {...props} @@ -185,4 +185,4 @@ const Nodejs: FC<NodeJsLogoProps> = ({ ); }; -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<SVGProps<SVGSVGElement>> = props => ( +const NodejsStackedBlackIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="267" height="164" @@ -95,4 +95,4 @@ const NodejsStackedBlack: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -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<SVGProps<SVGSVGElement>> = props => ( +const NodejsStackedDarkIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="289" height="177" @@ -121,4 +121,4 @@ const NodejsStackedDark: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -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<SVGProps<SVGSVGElement>> = props => ( +const NodejsStackedLightIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="319" height="195" @@ -120,4 +120,4 @@ const NodejsStackedLight: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -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<SVGProps<SVGSVGElement>> = props => ( +const NodejsStackedWhiteIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="320" height="196" @@ -95,4 +95,4 @@ const NodejsStackedWhite: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -export default NodejsStackedWhite; +export default NodejsStackedWhiteIcon; diff --git a/packages/ui-components/Icons/Logos/index.ts b/packages/ui-components/Icons/Logos/index.ts new file mode 100644 index 0000000000000..de487f949bc23 --- /dev/null +++ b/packages/ui-components/Icons/Logos/index.ts @@ -0,0 +1,17 @@ +import JsGreen from '@node-core/ui-components/Icons/Logos/JsGreen'; +import JsWhite from '@node-core/ui-components/Icons/Logos/JsWhite'; +import Nodejs from '@node-core/ui-components/Icons/Logos/Nodejs'; +import NodejsStackedBlack from '@node-core/ui-components/Icons/Logos/NodejsStackedBlack'; +import NodejsStackedDark from '@node-core/ui-components/Icons/Logos/NodejsStackedDark'; +import NodejsStackedLight from '@node-core/ui-components/Icons/Logos/NodejsStackedLight'; +import NodejsStackedWhite from '@node-core/ui-components/Icons/Logos/NodejsStackedWhite'; + +export { + JsGreen, + JsWhite, + Nodejs, + NodejsStackedBlack, + NodejsStackedDark, + NodejsStackedLight, + NodejsStackedWhite, +}; diff --git a/apps/site/components/Icons/OperatingSystem/AIX.tsx b/packages/ui-components/Icons/OperatingSystem/AIX.tsx similarity index 100% rename from apps/site/components/Icons/OperatingSystem/AIX.tsx rename to packages/ui-components/Icons/OperatingSystem/AIX.tsx diff --git a/apps/site/components/Icons/OperatingSystem/Apple.tsx b/packages/ui-components/Icons/OperatingSystem/Apple.tsx similarity index 100% rename from apps/site/components/Icons/OperatingSystem/Apple.tsx rename to packages/ui-components/Icons/OperatingSystem/Apple.tsx diff --git a/apps/site/components/Icons/OperatingSystem/Linux.tsx b/packages/ui-components/Icons/OperatingSystem/Linux.tsx similarity index 100% rename from apps/site/components/Icons/OperatingSystem/Linux.tsx rename to packages/ui-components/Icons/OperatingSystem/Linux.tsx diff --git a/apps/site/components/Icons/OperatingSystem/Microsoft.tsx b/packages/ui-components/Icons/OperatingSystem/Microsoft.tsx similarity index 100% rename from apps/site/components/Icons/OperatingSystem/Microsoft.tsx rename to packages/ui-components/Icons/OperatingSystem/Microsoft.tsx diff --git a/packages/ui-components/Icons/OperatingSystem/index.ts b/packages/ui-components/Icons/OperatingSystem/index.ts new file mode 100644 index 0000000000000..161eba3f61f41 --- /dev/null +++ b/packages/ui-components/Icons/OperatingSystem/index.ts @@ -0,0 +1,6 @@ +import AIX from '@node-core/ui-components/Icons/OperatingSystem/AIX'; +import Apple from '@node-core/ui-components/Icons/OperatingSystem/Apple'; +import Linux from '@node-core/ui-components/Icons/OperatingSystem/Linux'; +import Microsoft from '@node-core/ui-components/Icons/OperatingSystem/Microsoft'; + +export { AIX, Apple, Linux, Microsoft }; diff --git a/apps/site/components/Icons/PackageManager/Npm.tsx b/packages/ui-components/Icons/PackageManager/Npm.tsx similarity index 100% rename from apps/site/components/Icons/PackageManager/Npm.tsx rename to packages/ui-components/Icons/PackageManager/Npm.tsx diff --git a/apps/site/components/Icons/PackageManager/Pnpm.tsx b/packages/ui-components/Icons/PackageManager/Pnpm.tsx similarity index 100% rename from apps/site/components/Icons/PackageManager/Pnpm.tsx rename to packages/ui-components/Icons/PackageManager/Pnpm.tsx diff --git a/apps/site/components/Icons/PackageManager/Yarn.tsx b/packages/ui-components/Icons/PackageManager/Yarn.tsx similarity index 100% rename from apps/site/components/Icons/PackageManager/Yarn.tsx rename to packages/ui-components/Icons/PackageManager/Yarn.tsx diff --git a/packages/ui-components/Icons/PackageManager/index.ts b/packages/ui-components/Icons/PackageManager/index.ts new file mode 100644 index 0000000000000..2bf58ab964c5a --- /dev/null +++ b/packages/ui-components/Icons/PackageManager/index.ts @@ -0,0 +1,5 @@ +import NPM from '@node-core/ui-components/Icons/PackageManager/Npm'; +import PNPM from '@node-core/ui-components/Icons/PackageManager/Pnpm'; +import YARN from '@node-core/ui-components/Icons/PackageManager/Yarn'; + +export { NPM, PNPM, YARN }; 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 944e763d67514..374a0a74fdfe1 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<SVGProps<SVGSVGElement>> = props => ( +const BlueskyIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="20" height="20" @@ -16,4 +16,4 @@ const Bluesky: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -export default Bluesky; +export default BlueskyIcon; diff --git a/apps/site/components/Icons/Social/Discord.tsx b/packages/ui-components/Icons/Social/Discord.tsx similarity index 96% rename from apps/site/components/Icons/Social/Discord.tsx rename to packages/ui-components/Icons/Social/Discord.tsx index 74a369997acfb..b026ceac2008c 100644 --- a/apps/site/components/Icons/Social/Discord.tsx +++ b/packages/ui-components/Icons/Social/Discord.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Bluesky: FC<SVGProps<SVGSVGElement>> = props => ( +const Discord: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="20" height="20" @@ -17,4 +17,4 @@ const Bluesky: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -export default Bluesky; +export default Discord; 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 e771e66f2e6e6..cec572a73ce95 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<SVGProps<SVGSVGElement>> = props => ( +const GitHubIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="20" height="20" @@ -13,4 +13,4 @@ const GitHub: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -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 4569e8680faca..f3077a9444a58 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<SVGProps<SVGSVGElement>> = props => ( +const LinkedInIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="20" height="20" @@ -13,4 +13,4 @@ const LinkedIn: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -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 c78185b77ddf3..90034d7a866ee 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<SVGProps<SVGSVGElement>> = props => ( +const MastodonIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="20" height="20" @@ -33,4 +33,4 @@ const Mastodon: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -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 82f454e65d661..37098a5b12879 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<SVGProps<SVGSVGElement>> = props => ( +const SlackIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="20" height="20" @@ -28,4 +28,4 @@ const Slack: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -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 e6373f539a68f..4c1c9d583b90f 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<SVGProps<SVGSVGElement>> = props => ( +const XIcon: FC<SVGProps<SVGSVGElement>> = props => ( <svg width="20" height="20" @@ -13,4 +13,4 @@ const Twitter: FC<SVGProps<SVGSVGElement>> = props => ( </svg> ); -export default Twitter; +export default XIcon; diff --git a/packages/ui-components/Icons/Social/index.ts b/packages/ui-components/Icons/Social/index.ts new file mode 100644 index 0000000000000..4f9da6edd82f3 --- /dev/null +++ b/packages/ui-components/Icons/Social/index.ts @@ -0,0 +1,9 @@ +import Bluesky from '@node-core/ui-components/Icons/Social/Bluesky'; +import Discord from '@node-core/ui-components/Icons/Social/Discord'; +import GitHub from '@node-core/ui-components/Icons/Social/GitHub'; +import LinkedIn from '@node-core/ui-components/Icons/Social/LinkedIn'; +import Mastodon from '@node-core/ui-components/Icons/Social/Mastodon'; +import Slack from '@node-core/ui-components/Icons/Social/Slack'; +import X from '@node-core/ui-components/Icons/Social/X'; + +export { Bluesky, Discord, GitHub, LinkedIn, Mastodon, Slack, X }; diff --git a/apps/site/components/__design__/colors.stories.tsx b/packages/ui-components/__design__/colors.stories.tsx similarity index 100% rename from apps/site/components/__design__/colors.stories.tsx rename to packages/ui-components/__design__/colors.stories.tsx diff --git a/apps/site/components/__design__/effects.stories.tsx b/packages/ui-components/__design__/effects.stories.tsx similarity index 100% rename from apps/site/components/__design__/effects.stories.tsx rename to packages/ui-components/__design__/effects.stories.tsx diff --git a/apps/site/components/__design__/font-family.stories.tsx b/packages/ui-components/__design__/font-family.stories.tsx similarity index 100% rename from apps/site/components/__design__/font-family.stories.tsx rename to packages/ui-components/__design__/font-family.stories.tsx diff --git a/apps/site/components/__design__/list.stories.tsx b/packages/ui-components/__design__/list.stories.tsx similarity index 100% rename from apps/site/components/__design__/list.stories.tsx rename to packages/ui-components/__design__/list.stories.tsx 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..61abc86dc6ac5 --- /dev/null +++ b/packages/ui-components/__design__/node-logos.stories.tsx @@ -0,0 +1,61 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import { + JsGreen, + JsWhite, + Nodejs, + NodejsStackedBlack, + NodejsStackedDark, + NodejsStackedLight, + NodejsStackedWhite, +} from '@node-core/ui-components/Icons/Logos'; + +export const HorizontalLogo: StoryObj = { + render: () => <Nodejs width={267} height={80} />, +}; + +export const PrideLogo: StoryObj = { + render: () => <Nodejs variant="pride" width={267} height={80} />, +}; + +export const StackedLogos: StoryObj = { + render: () => ( + <div className="flex flex-row gap-4"> + <div className="flex flex-col gap-2"> + {[NodejsStackedDark, NodejsStackedBlack].map((Icon, index) => ( + <Icon + key={index} + className="block dark:hidden" + width={267} + height={164} + /> + ))} + {[NodejsStackedLight, NodejsStackedWhite].map((Icon, index) => ( + <Icon + key={index} + className="hidden dark:block" + width={267} + height={164} + /> + ))} + </div> + </div> + ), +}; + +export const JSSymbols: StoryObj = { + render: () => ( + <div className="flex flex-row gap-4"> + {[JsWhite, JsGreen].map((Icon, index) => ( + <Icon + key={index} + className={index === 0 ? 'hidden dark:block' : 'block dark:hidden'} + width={30} + height={30} + /> + ))} + </div> + ), +}; + +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..fa457bf7d6142 --- /dev/null +++ b/packages/ui-components/__design__/platform-logos.stories.tsx @@ -0,0 +1,34 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import { + Docker, + Homebrew, + NVM, + Devbox, + Choco, +} from '@node-core/ui-components/Icons/InstallationMethod'; +import { + Apple, + Linux, + Microsoft, + AIX, +} from '@node-core/ui-components/Icons/OperatingSystem'; + +const osIcons = [Apple, Linux, Microsoft, AIX]; +const installMethodIcons = [Docker, Homebrew, NVM, Devbox, Choco]; + +export const PlatformLogos: StoryObj = { + render: () => ( + <div className="flex flex-row gap-4"> + {[osIcons, installMethodIcons].map((icons, idx) => ( + <div key={idx} className="flex flex-col items-center gap-4"> + {icons.map((Icon, index) => ( + <Icon key={index} width={64} height={64} /> + ))} + </div> + ))} + </div> + ), +}; + +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..ab7ddea04721c --- /dev/null +++ b/packages/ui-components/__design__/social-logos.stories.tsx @@ -0,0 +1,33 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import { + Bluesky, + Discord, + GitHub, + LinkedIn, + Mastodon, + Slack, + X, +} from '@node-core/ui-components/Icons/Social'; + +const socialIcons = [ + [GitHub, Mastodon, LinkedIn], + [Slack, X, Bluesky], + [Discord], +]; + +export const SocialMediaLogos: StoryObj = { + render: () => ( + <div className="flex flex-row gap-4"> + {socialIcons.map((group, idx) => ( + <div key={idx} className="flex flex-col items-center gap-4"> + {group.map((Icon, index) => ( + <Icon key={index} width={64} height={64} /> + ))} + </div> + ))} + </div> + ), +}; + +export default { title: 'Design System' } as MetaObj; diff --git a/packages/ui-components/__design__/table.stories.tsx b/packages/ui-components/__design__/table.stories.tsx new file mode 100644 index 0000000000000..1bdd818e2a32b --- /dev/null +++ b/packages/ui-components/__design__/table.stories.tsx @@ -0,0 +1,52 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +const tableData = [ + ['Data 1', 'Data 2', 'Data 3'], + ['Data 1', 'Data 2', 'Data 3'], + ['Data 1', 'Data 2', 'Data 3'], +]; + +export const Table: StoryObj = { + render: () => ( + <main> + <table> + <thead> + <tr> + {['Column 1', 'Column 2', 'Column 3'].map((col, idx) => ( + <th key={idx}>{col}</th> + ))} + </tr> + </thead> + <tbody> + {tableData.map((row, rowIndex) => ( + <tr key={rowIndex}> + {row.map((cell, cellIndex) => ( + <td key={cellIndex}>{cell}</td> + ))} + </tr> + ))} + </tbody> + </table> + </main> + ), +}; + +export const HeadlessTable: StoryObj = { + render: () => ( + <main> + <table> + <tbody> + {tableData.map((row, rowIndex) => ( + <tr key={rowIndex}> + {row.map((cell, cellIndex) => ( + <td key={cellIndex}>{cell}</td> + ))} + </tr> + ))} + </tbody> + </table> + </main> + ), +}; + +export default { title: 'Design System' } as MetaObj; diff --git a/apps/site/components/__design__/text.stories.tsx b/packages/ui-components/__design__/text.stories.tsx similarity index 100% rename from apps/site/components/__design__/text.stories.tsx rename to packages/ui-components/__design__/text.stories.tsx diff --git a/packages/ui-components/__mocks__/styleMock.js b/packages/ui-components/__mocks__/styleMock.js new file mode 100644 index 0000000000000..f053ebf7976e3 --- /dev/null +++ b/packages/ui-components/__mocks__/styleMock.js @@ -0,0 +1 @@ +module.exports = {}; 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/global.d.ts b/packages/ui-components/global.d.ts new file mode 100644 index 0000000000000..d774364b20387 --- /dev/null +++ b/packages/ui-components/global.d.ts @@ -0,0 +1,4 @@ +declare module '*.module.css' { + const classes: { readonly [key: string]: string }; + export default classes; +} diff --git a/packages/ui-components/jest.config.mjs b/packages/ui-components/jest.config.mjs new file mode 100644 index 0000000000000..6e656274fd70f --- /dev/null +++ b/packages/ui-components/jest.config.mjs @@ -0,0 +1,30 @@ +export default { + setupFilesAfterEnv: ['@testing-library/jest-dom'], + moduleDirectories: ['node_modules', '<rootDir>/'], + testEnvironment: 'jest-environment-jsdom', + testMatch: ['**/__tests__/*.test.mjs'], + coverageReporters: ['json', 'json-summary'], + reporters: ['default', 'jest-junit'], + moduleNameMapper: { + '^.+\\.module\\.(css|sass|scss)$': 'identity-obj-proxy', + '^.+\\.(css|sass|scss)$': '<rootDir>/__mocks__/styleMock.js', + }, + transform: { + '^.+\\.(js|jsx|ts|tsx|mjs)$': [ + '@swc/jest', + { + jsc: { + transform: { + react: { + runtime: 'automatic', + }, + }, + parser: { + syntax: 'typescript', + tsx: true, + }, + }, + }, + ], + }, +}; diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json new file mode 100644 index 0000000000000..21efbccc540bd --- /dev/null +++ b/packages/ui-components/package.json @@ -0,0 +1,61 @@ +{ + "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", + "test:unit": "cross-env NODE_NO_WARNINGS=1 jest", + "test:unit:watch": "npm run test:unit -- --watch", + "test": "turbo test:unit" + }, + "engines": { + "node": ">=20" + }, + "dependencies": { + "@heroicons/react": "^2.2.0", + "@radix-ui/react-dropdown-menu": "~2.1.6", + "@radix-ui/react-label": "~2.1.2", + "@radix-ui/react-scroll-area": "~1.2.3", + "@radix-ui/react-select": "~2.1.6", + "@radix-ui/react-tabs": "~1.1.3", + "@radix-ui/react-toast": "~1.2.6", + "@radix-ui/react-tooltip": "~1.1.8", + "@savvywombat/tailwindcss-grid-areas": "~4.0.0", + "@tailwindcss/container-queries": "~0.1.1", + "@vcarl/remark-headings": "~0.1.0", + "classnames": "~2.5.1", + "tailwindcss": "~3.4.17" + }, + "devDependencies": { + "@node-core/website-i18n": "*", + "@storybook/addon-controls": "^8.6.3", + "@storybook/addon-interactions": "^8.6.3", + "@storybook/addon-styling-webpack": "^1.0.1", + "@storybook/addon-themes": "^8.6.3", + "@storybook/addon-viewport": "^8.6.3", + "@storybook/addon-webpack5-compiler-swc": "^2.1.0", + "@storybook/react-webpack5": "^8.6.3", + "@swc/jest": "^0.2.37", + "@testing-library/jest-dom": "~6.6.3", + "@testing-library/react": "~16.2.0", + "@testing-library/user-event": "~14.6.1", + "eslint-plugin-react": "~7.37.4", + "eslint-plugin-storybook": "~0.11.3", + "identity-obj-proxy": "^3.0.0", + "jest": "29.7.0", + "jest-environment-jsdom": "29.7.0", + "jest-junit": "16.0.0", + "storybook": "^8.6.3", + "stylelint": "^16.15.0", + "stylelint-config-standard": "^37.0.0", + "stylelint-order": "6.0.4", + "stylelint-selector-bem-pattern": "4.0.1", + "typescript": "~5.8.2", + "typescript-eslint": "~8.26.0" + } +} diff --git a/packages/ui-components/styles/effects.css b/packages/ui-components/styles/effects.css new file mode 100644 index 0000000000000..bececd16aae56 --- /dev/null +++ b/packages/ui-components/styles/effects.css @@ -0,0 +1,12 @@ +h1.special { + @apply bg-gradient-subtle-gray + dark:bg-gradient-subtle-white + bg-clip-text + text-4xl + leading-[3rem] + -tracking-[0.045rem] + [-webkit-text-fill-color:transparent] + md:text-5xl + md:leading-[4rem] + md:-tracking-[0.06rem]; +} diff --git a/packages/ui-components/styles/index.css b/packages/ui-components/styles/index.css new file mode 100644 index 0000000000000..824dbf9a86ce7 --- /dev/null +++ b/packages/ui-components/styles/index.css @@ -0,0 +1,12 @@ +@charset "utf-8"; + +/* IDE Support + * We recommend Stylelint and Tailwind Extensions for better IDE support. + * @see https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss + * @see https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint +*/ + +@import 'tailwindcss/base'; +@import 'tailwindcss/components'; +@import 'tailwindcss/utilities'; +@import './effects.css'; diff --git a/packages/ui-components/styles/markdown.css b/packages/ui-components/styles/markdown.css new file mode 100644 index 0000000000000..3984a3ed9c03c --- /dev/null +++ b/packages/ui-components/styles/markdown.css @@ -0,0 +1,172 @@ +main { + @apply flex + w-full + flex-col + gap-6; + + hr { + @apply w-full + border-t + border-t-neutral-200 + bg-white + dark:border-t-neutral-900 + dark:bg-neutral-950; + } + + h1 { + @apply text-3xl; + } + + h2 { + @apply text-2xl; + } + + h3 { + @apply text-xl; + } + + h4 { + @apply text-lg; + } + + h5, + h6 { + @apply text-base; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + &[id] a { + @apply text-neutral-900 + dark:text-white; + } + } + + h1, + h2, + h3, + h4, + h5, + h6, + strong { + @apply font-semibold + text-neutral-900 + dark:text-white; + } + + code { + @apply font-ibm-plex-mono + rounded + bg-neutral-100 + px-1 + text-base + font-semibold + text-neutral-900 + dark:bg-neutral-900 + dark:text-white; + } + + p { + @apply text-neutral-900 + dark:text-white; + } + + a, + .anchor { + @apply max-xs:font-semibold + text-green-600 + dark:text-green-400; + + &:hover { + @apply text-green-900 + dark:text-green-300; + } + + &[role='button'] { + @apply max-xs:font-regular; + } + + &:has(code) { + @apply max-xs:decoration-neutral-800 + dark:max-xs:decoration-neutral-200; + } + } + + ul { + @apply list-disc + pl-9 + pr-5 + leading-6 + text-neutral-900 + dark:text-white; + + li div:has(> pre) { + @apply !my-1; + } + } + + ol { + @apply list-decimal + px-5 + leading-6 + text-neutral-900 + dark:text-white; + + li div:has(> pre) { + @apply !my-1; + } + } + + table { + @apply mb-1 + w-full + border-separate + border-spacing-0 + rounded + border + border-neutral-200 + text-left + text-sm + dark:border-neutral-800; + + th, + td { + @apply max-xs:block + max-xs:border-l-0 + border + border-r-0 + border-t-0 + border-neutral-200 + px-4 + py-2 + text-neutral-900 + dark:border-neutral-800 + dark:text-white; + + > a { + @apply pr-2; + } + } + + th { + @apply font-semibold; + } + + tr:last-child td { + @apply sm:border-b-0; + + &:last-child { + @apply max-xs:border-b-0; + } + } + + td:first-child, + th:first-child { + @apply sm:border-l-0; + } + } +} diff --git a/packages/ui-components/tailwind.config.ts b/packages/ui-components/tailwind.config.ts new file mode 100644 index 0000000000000..b7e3e319d4fa7 --- /dev/null +++ b/packages/ui-components/tailwind.config.ts @@ -0,0 +1,164 @@ +import type { Config } from 'tailwindcss'; +import plugin from 'tailwindcss/plugin'; + +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', + }, + // TODO(@avivkeller): The --font-xyz-xyz variable is assigned by Next.js in apps/site. + // Ideally, this package shouldn't depend on the consuming application's + // variables, it should remain self-contained. + 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'), + plugin(function ({ addUtilities }) { + addUtilities({ + '.scrollbar-thin': { + 'scrollbar-width': 'thin', + }, + }); + }), + ], +} satisfies Config; diff --git a/packages/ui-components/tsconfig.json b/packages/ui-components/tsconfig.json new file mode 100644 index 0000000000000..70e9aa7cd51c2 --- /dev/null +++ b/packages/ui-components/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "esnext", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { "@node-core/ui-components/*": ["./*"] } + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ".storybook/**/*.ts", + ".storybook/**/*.tsx" + ], + "exclude": ["node_modules"] +} diff --git a/packages/ui-components/turbo.json b/packages/ui-components/turbo.json new file mode 100644 index 0000000000000..aa32f3355f61f --- /dev/null +++ b/packages/ui-components/turbo.json @@ -0,0 +1,30 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"], + "globalEnv": ["NODE_ENV"], + "tasks": { + "build": {}, + "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/**"] + }, + "test:unit": { + "inputs": ["**/*.{ts,tsx,mjs}"], + "outputs": ["coverage/**", "junit.xml"] + } + } +} diff --git a/packages/ui-components/types.ts b/packages/ui-components/types.ts new file mode 100644 index 0000000000000..319b3be22d6e4 --- /dev/null +++ b/packages/ui-components/types.ts @@ -0,0 +1,25 @@ +import type { LocaleConfig } from '@node-core/website-i18n/types'; +import type { + SVGProps, + AnchorHTMLAttributes, + ReactElement, + JSXElementConstructor, + ReactNode, +} from 'react'; + +export type LogoVariant = 'default' | 'pride'; +export type TailwindSVG = SVGProps<SVGSVGElement> & { tw?: string }; +export type BlogPreviewType = 'announcements' | 'release' | 'vulnerability'; +export type LinkLike = + | JSXElementConstructor<AnchorHTMLAttributes<HTMLAnchorElement>> + | 'a'; + +export type FormattedMessage = + | string + | ReactElement<HTMLElement, string | JSXElementConstructor<HTMLElement>> + | ReadonlyArray<ReactNode>; + +export type SimpleLocaleConfig = Pick< + LocaleConfig, + 'name' | 'code' | 'localName' +>; From b0b51640e83a8de145e53a954c91ea4e0c060aed Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Tue, 25 Mar 2025 11:15:25 +0100 Subject: [PATCH 0349/1385] fix: modified css module (#7570) * fix: modified css module * fix: active link * fix: separate type import --- .../components/withProgressionSidebar.tsx | 6 ++- apps/site/components/withSidebar.tsx | 6 ++- .../Sidebar/SidebarItem/index.module.css | 46 ++++++++++--------- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/apps/site/components/withProgressionSidebar.tsx b/apps/site/components/withProgressionSidebar.tsx index 7994de82db2d4..9ee005206bf46 100644 --- a/apps/site/components/withProgressionSidebar.tsx +++ b/apps/site/components/withProgressionSidebar.tsx @@ -2,7 +2,8 @@ import ProgressionSidebar from '@node-core/ui-components/Common/ProgressionSidebar'; import { usePathname } from 'next/navigation'; -import { useTranslations, type RichTranslationValues } from 'next-intl'; +import { useLocale, useTranslations } from 'next-intl'; +import type { RichTranslationValues } from 'next-intl'; import type { FC } from 'react'; import Link from '@/components/Link'; @@ -21,6 +22,7 @@ const WithProgressionSidebar: FC<WithProgressionSidebarProps> = ({ }) => { const { getSideNavigation } = useSiteNavigation(); const pathname = usePathname(); + const locale = useLocale(); const t = useTranslations(); const { push } = useRouter(); const [[, sidebarNavigation]] = getSideNavigation([navKey], context); @@ -35,7 +37,7 @@ const WithProgressionSidebar: FC<WithProgressionSidebarProps> = ({ return ( <ProgressionSidebar groups={mappedProgressionSidebarItems} - pathname={pathname!} + pathname={pathname?.replace(`/${locale}`, '')} title={t('components.common.sidebar.title')} onSelect={push} as={Link} diff --git a/apps/site/components/withSidebar.tsx b/apps/site/components/withSidebar.tsx index a74be89323d85..ac70f5bf624d4 100644 --- a/apps/site/components/withSidebar.tsx +++ b/apps/site/components/withSidebar.tsx @@ -2,7 +2,8 @@ import Sidebar from '@node-core/ui-components/Containers/Sidebar'; import { usePathname } from 'next/navigation'; -import { useTranslations, type RichTranslationValues } from 'next-intl'; +import { useLocale, useTranslations } from 'next-intl'; +import type { RichTranslationValues } from 'next-intl'; import type { FC } from 'react'; import Link from '@/components/Link'; @@ -18,6 +19,7 @@ type WithSidebarProps = { const WithSidebar: FC<WithSidebarProps> = ({ navKeys, context }) => { const { getSideNavigation } = useSiteNavigation(); const pathname = usePathname()!; + const locale = useLocale(); const t = useTranslations(); const { push } = useRouter(); @@ -31,7 +33,7 @@ const WithSidebar: FC<WithSidebarProps> = ({ navKeys, context }) => { return ( <Sidebar groups={mappedSidebarItems} - pathname={pathname} + pathname={pathname.replace(`/${locale}`, '')} title={t('components.common.sidebar.title')} onSelect={value => push(value)} as={Link} diff --git a/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css b/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css index 7324ae7ba9f29..38c89b9fd6028 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css @@ -1,29 +1,33 @@ -.wrapper { +.sideBarItem { @apply flex w-full - flex-col - items-start - gap-8 - overflow-auto - overflow-x-hidden - border-r-neutral-200 - bg-white - px-4 - py-6 - sm:border-r - md:max-w-xs - lg:px-6 - dark:border-r-neutral-900 - dark:bg-neutral-950; + list-none + text-neutral-800 + dark:text-neutral-200; - > section { - @apply hidden - sm:flex; + a { + @apply inline-flex + items-center + gap-2 + p-2; } - > span { - @apply flex + .label { + @apply font-regular w-full - sm:hidden; + text-sm; } + + .icon { + @apply size-3 + text-neutral-500 + dark:text-neutral-200; + } +} + +.active { + @apply rounded + bg-green-600 + text-white + dark:text-white; } From 7d6831ba9b7136da4b136123e247e32301ad7f57 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Tue, 25 Mar 2025 11:28:55 +0100 Subject: [PATCH 0350/1385] meta: `npm audit fix` lockfile (#7565) * meta: update security dep * Update package-lock.json --- package-lock.json | 2416 +++++++++++++++++++++++++++------------------ 1 file changed, 1431 insertions(+), 985 deletions(-) diff --git a/package-lock.json b/package-lock.json index 39b7b51d48ef5..bb2d66ff27967 100644 --- a/package-lock.json +++ b/package-lock.json @@ -108,6 +108,173 @@ "user-agent-data-types": "0.4.2" } }, + "apps/site/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", + "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/type-utils": "8.25.0", + "@typescript-eslint/utils": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "apps/site/node_modules/@typescript-eslint/parser": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", + "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "apps/site/node_modules/@typescript-eslint/type-utils": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", + "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/utils": "8.25.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "apps/site/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", + "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.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": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "apps/site/node_modules/@typescript-eslint/utils": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", + "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "apps/site/node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "apps/site/node_modules/typescript-eslint": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", + "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.25.0", + "@typescript-eslint/parser": "8.25.0", + "@typescript-eslint/utils": "8.25.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", + "typescript": ">=4.8.4 <5.8.0" + } + }, "node_modules/@adobe/css-tools": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", @@ -166,22 +333,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", + "@babel/generator": "^7.26.10", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -207,14 +374,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", - "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -322,27 +489,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", - "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", + "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/types": "^7.26.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", - "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", + "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.9" + "@babel/types": "^7.26.10" }, "bin": { "parser": "bin/babel-parser.js" @@ -591,9 +758,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", - "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", "dev": true, "license": "MIT", "dependencies": { @@ -619,17 +786,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", - "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/parser": "^7.26.9", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/types": "^7.26.10", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -648,9 +815,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", - "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -669,14 +836,14 @@ "license": "MIT" }, "node_modules/@commitlint/config-validator": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.5.0.tgz", - "integrity": "sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==", + "version": "19.8.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.0.tgz", + "integrity": "sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@commitlint/types": "^19.5.0", + "@commitlint/types": "^19.8.0", "ajv": "^8.11.0" }, "engines": { @@ -684,9 +851,9 @@ } }, "node_modules/@commitlint/execute-rule": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz", - "integrity": "sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==", + "version": "19.8.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.0.tgz", + "integrity": "sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==", "dev": true, "license": "MIT", "optional": true, @@ -695,17 +862,17 @@ } }, "node_modules/@commitlint/load": { - "version": "19.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.6.1.tgz", - "integrity": "sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==", + "version": "19.8.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.0.tgz", + "integrity": "sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@commitlint/config-validator": "^19.5.0", - "@commitlint/execute-rule": "^19.5.0", - "@commitlint/resolve-extends": "^19.5.0", - "@commitlint/types": "^19.5.0", + "@commitlint/config-validator": "^19.8.0", + "@commitlint/execute-rule": "^19.8.0", + "@commitlint/resolve-extends": "^19.8.0", + "@commitlint/types": "^19.8.0", "chalk": "^5.3.0", "cosmiconfig": "^9.0.0", "cosmiconfig-typescript-loader": "^6.1.0", @@ -732,15 +899,15 @@ } }, "node_modules/@commitlint/resolve-extends": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz", - "integrity": "sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==", + "version": "19.8.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.0.tgz", + "integrity": "sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@commitlint/config-validator": "^19.5.0", - "@commitlint/types": "^19.5.0", + "@commitlint/config-validator": "^19.8.0", + "@commitlint/types": "^19.8.0", "global-directory": "^4.0.1", "import-meta-resolve": "^4.0.0", "lodash.mergewith": "^4.6.2", @@ -751,9 +918,9 @@ } }, "node_modules/@commitlint/types": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.5.0.tgz", - "integrity": "sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==", + "version": "19.8.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.0.tgz", + "integrity": "sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==", "dev": true, "license": "MIT", "optional": true, @@ -891,9 +1058,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", "cpu": [ "ppc64" ], @@ -908,9 +1075,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", "cpu": [ "arm" ], @@ -925,9 +1092,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", "cpu": [ "arm64" ], @@ -942,9 +1109,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", "cpu": [ "x64" ], @@ -959,9 +1126,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", "cpu": [ "arm64" ], @@ -976,9 +1143,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", "cpu": [ "x64" ], @@ -993,9 +1160,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", "cpu": [ "arm64" ], @@ -1010,9 +1177,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", "cpu": [ "x64" ], @@ -1027,9 +1194,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", "cpu": [ "arm" ], @@ -1044,9 +1211,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", "cpu": [ "arm64" ], @@ -1061,9 +1228,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", "cpu": [ "ia32" ], @@ -1078,9 +1245,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", "cpu": [ "loong64" ], @@ -1095,9 +1262,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", "cpu": [ "mips64el" ], @@ -1112,9 +1279,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", "cpu": [ "ppc64" ], @@ -1129,9 +1296,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", "cpu": [ "riscv64" ], @@ -1146,9 +1313,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", "cpu": [ "s390x" ], @@ -1163,9 +1330,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", "cpu": [ "x64" ], @@ -1180,9 +1347,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", "cpu": [ "arm64" ], @@ -1197,9 +1364,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", "cpu": [ "x64" ], @@ -1214,9 +1381,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", "cpu": [ "arm64" ], @@ -1231,9 +1398,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", "cpu": [ "x64" ], @@ -1248,9 +1415,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", "cpu": [ "x64" ], @@ -1265,9 +1432,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", "cpu": [ "arm64" ], @@ -1282,9 +1449,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", "cpu": [ "ia32" ], @@ -1299,9 +1466,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", "cpu": [ "x64" ], @@ -1316,9 +1483,9 @@ } }, "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==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", "dev": true, "license": "MIT", "dependencies": { @@ -1415,9 +1582,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1559,54 +1726,54 @@ "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.3.tgz", - "integrity": "sha512-pJT1OkhplSmvvr6i3CWTPvC/FGC06MbN5TNBfRO6Ox62AEz90eMq+dVvtX9Bl3jxCEkS0tATzDarRZuOLw7oFg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.4.tgz", + "integrity": "sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==", "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "2.2.6", - "@formatjs/intl-localematcher": "0.6.0", - "decimal.js": "10", - "tslib": "2" + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/intl-localematcher": "0.6.1", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/ecma402-abstract/node_modules/@formatjs/intl-localematcher": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.0.tgz", - "integrity": "sha512-4rB4g+3hESy1bHSBG3tDFaMY2CH67iT7yne1e+0CLTsGLDcmoEWWpJjjpWVaYgYfYuohIRuo0E+N536gd2ZHZA==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", "license": "MIT", "dependencies": { - "tslib": "2" + "tslib": "^2.8.0" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.6.tgz", - "integrity": "sha512-luIXeE2LJbQnnzotY1f2U2m7xuQNj2DA8Vq4ce1BY9ebRZaoPB1+8eZ6nXpLzsxuW5spQxr7LdCg+CApZwkqkw==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", + "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", "license": "MIT", "dependencies": { - "tslib": "2" + "tslib": "^2.8.0" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.1.tgz", - "integrity": "sha512-o0AhSNaOfKoic0Sn1GkFCK4MxdRsw7mPJ5/rBpIqdvcC7MIuyUSW8WChUEvrK78HhNpYOgqCQbINxCTumJLzZA==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.2.tgz", + "integrity": "sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.3", - "@formatjs/icu-skeleton-parser": "1.8.13", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/icu-skeleton-parser": "1.8.14", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.13", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.13.tgz", - "integrity": "sha512-N/LIdTvVc1TpJmMt2jVg0Fr1F7Q1qJPdZSCs19unMskCmVQ/sa0H9L8PWt13vq+gLdLg1+pPsvBLydL1Apahjg==", + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.14.tgz", + "integrity": "sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.3", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-localematcher": { @@ -3443,9 +3610,9 @@ } }, "node_modules/@npmcli/config/node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", "dev": true, "funding": [ { @@ -3758,16 +3925,16 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", - "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", + "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", "license": "Apache-2.0", "peer": true, "dependencies": { "@opentelemetry/api": "^1.3.0" }, "engines": { - "node": ">=14" + "node": ">=8.0.0" } }, "node_modules/@opentelemetry/core": { @@ -3787,21 +3954,20 @@ } }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", - "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz", + "integrity": "sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/api-logs": "0.57.2", + "@opentelemetry/api-logs": "0.200.0", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", "shimmer": "^1.2.1" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -3825,23 +3991,66 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.57.2.tgz", - "integrity": "sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz", + "integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1" + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", + "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", + "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/core": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.30.0.tgz", + "integrity": "sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@opentelemetry/sdk-metrics": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", @@ -3903,9 +4112,9 @@ "license": "Apache-2.0" }, "node_modules/@orama/orama": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.1.tgz", - "integrity": "sha512-w60E72VyWk4QeGy5j0Nm6z4BYVu2MMgtXi8dE/kVluxvz1JVtU9fPXKUW6E0bfrpN+LQM/2w5Jq5v6stl+V0dQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.3.tgz", + "integrity": "sha512-UdtAMLe2RxtqvmfNDJSMpYoQYUpXgs+9qXVVFCO0BqHF86gp+uz8N6ftkaLe1p55OQXmliciw7BH34GFozKLnQ==", "license": "Apache-2.0", "engines": { "node": ">= 16.0.0" @@ -3925,12 +4134,12 @@ } }, "node_modules/@orama/switch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.1.1.tgz", - "integrity": "sha512-DUd5VPtq1q2kj7kZCNk9unX6+Lvc4DsU6WCIgsW+6FdvJlrNIBQeoCsVVqIkdk1B4AKBFONOJJbq9ND4ZUvNtQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.1.3.tgz", + "integrity": "sha512-Gtah1T5jhF4hv+Bpl1k8ogAg3klTUwWzpI9sUG2XuaLHKPiob0PrVxD7YxJ06BERkFY0KdcDEK6k5fgIYcDPxA==", "license": "Apache-2.0", "peerDependencies": { - "@orama/orama": "3.1.1", + "@orama/orama": "3.1.3", "@oramacloud/client": "^2.1.1" } }, @@ -4096,9 +4305,9 @@ } }, "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz", + "integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==", "dev": true, "license": "MIT", "engines": { @@ -4861,7 +5070,111 @@ "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", "license": "MIT" }, - "node_modules/@rtsao/scc": { + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", + "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", + "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", + "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", + "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", + "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", + "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", + "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", + "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", @@ -4869,9 +5182,9 @@ "license": "MIT" }, "node_modules/@rushstack/eslint-patch": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.5.tgz", - "integrity": "sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", + "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", "dev": true, "license": "MIT" }, @@ -4982,9 +5295,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.27.1", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.27.1.tgz", - "integrity": "sha512-wJ+U3yJ9xSrME1PheHh8DnZrgFhjTlvF54mkA0tzTDXYdrEAYXIEAAeWbXx3munYX2Lqj3oDBEDsbsJNxDkwzA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.28.2.tgz", + "integrity": "sha512-sHwBNionxzHfmjQ93ffaQOBNvd5HrSn8e5KSsiBBaODgC/g9squZoARYHHJ0VFfUpOXkEoZQ+ASixpUBafG9bA==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -4992,6 +5305,16 @@ "engines": { "node": ">=16.0.0", "npm": ">=7.10.0" + }, + "optionalDependencies": { + "@rollup/rollup-darwin-arm64": "4.34.9", + "@rollup/rollup-darwin-x64": "4.34.9", + "@rollup/rollup-linux-arm64-gnu": "4.34.9", + "@rollup/rollup-linux-arm64-musl": "4.34.9", + "@rollup/rollup-linux-x64-gnu": "4.34.9", + "@rollup/rollup-linux-x64-musl": "4.34.9", + "@rollup/rollup-win32-arm64-msvc": "4.34.9", + "@rollup/rollup-win32-x64-msvc": "4.34.9" } }, "node_modules/@stencil/store": { @@ -5008,9 +5331,9 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.3.tgz", - "integrity": "sha512-j4Oof3nwjyiO6oNP1bJ98Sz1iZlYhdcgHX284yd0wBO91Q5B2GoCeqyCE+yRCh752ZnnYG1gazJrHmiG6gKxVg==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.8.tgz", + "integrity": "sha512-rgV0EdxmqL7HWm8W8ractgcB7WjLktWPgruDJTcHMvdVbpPDP7y3+xNivZs1IqTFV4uA6GS2pPuhzBjwppwtKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5023,19 +5346,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.3" + "storybook": "^8.6.8" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.3.tgz", - "integrity": "sha512-cDvxuMcjoQdtimNrT4BM9AK0qZJhA0Ep/CWPcVK1bAFzqlzBbe//UZa5It/AeC4EMYAr5rFY+LWEli3YPeOnjQ==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.8.tgz", + "integrity": "sha512-tSSUmZFAJ3PcxEoysGxdLd8p6HnioYR5oLU55n2CNL5Wdj79sHDX8JoCegrkzQuvZy50z3D72mhvsI+RJB3LLg==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.3", - "@storybook/test": "8.6.3", + "@storybook/instrumenter": "8.6.8", + "@storybook/test": "8.6.8", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -5044,7 +5367,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.3" + "storybook": "^8.6.8" } }, "node_modules/@storybook/addon-styling-webpack": { @@ -5061,9 +5384,9 @@ } }, "node_modules/@storybook/addon-themes": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.3.tgz", - "integrity": "sha512-UTEsn241v9PpnOR6LEUkPlZ8nzLZeNJGcJZqZKHeAjW+Ag0pXnzvO1QUFxjHuP7i5olzRQh4n2UlWeN/DfLvjw==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.8.tgz", + "integrity": "sha512-zc4Hr8bQPDMNV+7IbtpZhnbSIWxzV1Ragv0eRDHIuAJkmxYc5QS+J+FSHQa5UYTWjEO6UxUk91x0YV7wpQQSZA==", "dev": true, "license": "MIT", "dependencies": { @@ -5074,13 +5397,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.3" + "storybook": "^8.6.8" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.3.tgz", - "integrity": "sha512-AixZKiQdBVs7ePj5iV0U1IY2jvH0G7wQJwBRTOq4qC1FKiOsZEYmrwc3wLUBUlVqyenXFKN+H40r4VhPzzSfLw==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.8.tgz", + "integrity": "sha512-SWhuPBYkZi5ReMvXfE+qu+trydkXz83XqDwjC8cCa/yi2SjQFxcJC66paHjPM+3SNIShVZhw3gnB9mbzZ4Yohg==", "dev": true, "license": "MIT", "dependencies": { @@ -5091,7 +5414,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.3" + "storybook": "^8.6.8" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { @@ -5109,13 +5432,13 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.3.tgz", - "integrity": "sha512-+Er6wFbi6O1xAqSsCZwqMcOfKM90n2jYDgSixYTsgqhjEcKLvCX9sn5akyRB1pPl5cGq4zBDIG4l9aLzZLLC3Q==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.8.tgz", + "integrity": "sha512-XRV+YWw0MByrB0KyZuLgBoEpebB8qcW0cXMLseO33G3FeT+Bf94H2/WQJA+sKjSPhf2LZPBV1Rg6xYyvumeUUw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.3", + "@storybook/core-webpack": "8.6.8", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", @@ -5145,7 +5468,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.3" + "storybook": "^8.6.8" }, "peerDependenciesMeta": { "typescript": { @@ -5154,9 +5477,9 @@ } }, "node_modules/@storybook/components": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.3.tgz", - "integrity": "sha512-q5DQkV+E/j0KfF818RywgqEHjaZTg71q5YY4z0UO8CRSzDQ/VYF6L76oc69corbkJtYAk/GqaYJllzrWykS4sg==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.8.tgz", + "integrity": "sha512-zfJcNEDrhJYFMKw6fPeeOVYqDh9cUl7Og3p+mVtMFA31ShPIlz8JFXEmMOODGalT4yLakZgFHWcp9MZn9TFUXg==", "dev": true, "license": "MIT", "funding": { @@ -5168,13 +5491,13 @@ } }, "node_modules/@storybook/core": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.3.tgz", - "integrity": "sha512-0iMTfmo3UFCa1hFJLtThnRIppkIpGPyTL3MElhORP1t5l9lCUq5am0ymbi/TeCbsJPjE86FjeO0NinokL9iQiw==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.8.tgz", + "integrity": "sha512-CZhLIAGNRJlmf9eQ70ATgNc/MNXKIS/nvN3jiGWkp5oN69OSiqzdLukxsuZdCPUtj7gtF0XTESQ7wkkZgkYXoQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/theming": "8.6.3", + "@storybook/theming": "8.6.8", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", @@ -5200,9 +5523,9 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.3.tgz", - "integrity": "sha512-JYrHPwgyiXa4BgfkrUIDyl5Dp1I7xZG+GV7z0m/2wCn1PcDrDJ8iRl2HHbVbHZXYRK3zSp84iRjdBK4DF94HGQ==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.8.tgz", + "integrity": "sha512-QI5G5H4kOn3M0Y4E3RpuF08Mcm2X0yaywKbbj9g0S8RkrOIam3oXdJz6qHkru30l9nTsRyw/mng1YuzumGtPFw==", "dev": true, "license": "MIT", "dependencies": { @@ -5213,7 +5536,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.3" + "storybook": "^8.6.8" } }, "node_modules/@storybook/csf": { @@ -5234,9 +5557,9 @@ "license": "MIT" }, "node_modules/@storybook/instrumenter": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.3.tgz", - "integrity": "sha512-Y5n6JWCWdOqok08Hgklsc98TBoqROhAhBRSzNWuIaLsRhz8EziXQtuEkWqmVbyYOys25iTZiK3S8+QQkOzGrBw==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.8.tgz", + "integrity": "sha512-FgfIINbA5svlIIBMc+q4hdIEdLRT+8i6R76BUeKj5btD8tYxWY4LywMeItZx8uyaFGFjYlFdMKnyXCmSnFXnaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5248,13 +5571,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.3" + "storybook": "^8.6.8" } }, "node_modules/@storybook/manager-api": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.3.tgz", - "integrity": "sha512-7m9MQELc6XpuKIuliqMiQWzl8yVWpUDwTcpr+rTT7l3OfRzw7Y00UFct2tI03YG6EXsxsykw8EmueMQhe0lG5Q==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.8.tgz", + "integrity": "sha512-MTyMYRXSP0iRE5xaFCNdD8ZBrhtJXTDNhQTWsjZQBmYgA94mf6FHSzsgGgOQp/sqTPzONZpBCrw7Y0aY8zxHKw==", "dev": true, "license": "MIT", "funding": { @@ -5266,9 +5589,9 @@ } }, "node_modules/@storybook/node-logger": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.6.3.tgz", - "integrity": "sha512-rIq2mWv1lDmBpPNCf4FcBe4D8Ik458GIPxSUZHoOxLmEElOzncixiGWpRKUCycOXpD8f3lZaxgZjYZqVmdeW7A==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.6.8.tgz", + "integrity": "sha512-uzUxS6AdQGDh+SpEFZQ7alqv4HUTZojntPtKWgx5aiDK61AU9JGa/MAny18ZVitLgY4FloO46E802gUaWdnYCA==", "dev": true, "license": "MIT", "funding": { @@ -5280,14 +5603,14 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.3.tgz", - "integrity": "sha512-ROZdvtRm0jtApA21DQa4q5FkG3EPiHdYEWp01DxtGQrenl8YV4JBF3va9sYcPFki2gW+lx/iVpAcHfIAR7PS2Q==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.8.tgz", + "integrity": "sha512-fK7UI9OPUm4we291nvhlZ5ydonW6qhatisgAR3Ty6DUuSJtQTDiuBNRJY/nDZUwQs0+Gq+MmyZ2/R3s/SJIaLg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.3", - "@storybook/react": "8.6.3", + "@storybook/core-webpack": "8.6.8", + "@storybook/react": "8.6.8", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/semver": "^7.3.4", "find-up": "^5.0.0", @@ -5308,7 +5631,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.6.3" + "storybook": "^8.6.8" }, "peerDependenciesMeta": { "typescript": { @@ -5317,9 +5640,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.3.tgz", - "integrity": "sha512-y2Ic6eHBQD/AwaCHctKOJ4tOM1r7/mPXfhGh0I+Qf8kZPlDTgQcJ6Z7/Ruma1L+ijXPBWouDaPw51gipcX+t9Q==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.8.tgz", + "integrity": "sha512-c5Hc6Knmun+aBEesEjD+5LPuqFTQMCSLg+zS41JncH7B+agrUiihX3opma4OVZ4GibWIIq1YvIeXBLqj1MoIUw==", "dev": true, "license": "MIT", "funding": { @@ -5331,18 +5654,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.3.tgz", - "integrity": "sha512-B4WYRWU2Y71UWl4CG3+mcB7duNln9finJyDB8Y1o2CYWUxgEo+3Bnp3k7NUr++tYVkZI1H+28UWeX0rpCkvReQ==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.8.tgz", + "integrity": "sha512-UVP+vuVrgC9CgUp2ZKQs3ch2JzImGAUbVUpmb+GMAOGD3DGAf9iP7qldIZc5rrNw/jNyTFTo4oX6XnXrWgOCVg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.6.3", + "@storybook/components": "8.6.8", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.3", - "@storybook/preview-api": "8.6.3", - "@storybook/react-dom-shim": "8.6.3", - "@storybook/theming": "8.6.3" + "@storybook/manager-api": "8.6.8", + "@storybook/preview-api": "8.6.8", + "@storybook/react-dom-shim": "8.6.8", + "@storybook/theming": "8.6.8" }, "engines": { "node": ">=18.0.0" @@ -5352,10 +5675,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.3", + "@storybook/test": "8.6.8", "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.6.3", + "storybook": "^8.6.8", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5388,9 +5711,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.3.tgz", - "integrity": "sha512-vE3LA2TxbzDF1Fso2IgvUtoHc+8a6laKhuJdx8frP5A8M1KGOBfuEPFCCcE49Q90HUlDgwb/zQl1GNq/QjLgWQ==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.8.tgz", + "integrity": "sha512-wp+3z5j8QJkFMVGqyE0FKcf61TL6LKLiIDxxQGxprSHKOE0RqNLGzQUTVZHWBbC3LfE018uFbGlLt02dVpUXKg==", "dev": true, "license": "MIT", "funding": { @@ -5400,19 +5723,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.6.3" + "storybook": "^8.6.8" } }, "node_modules/@storybook/react-webpack5": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.3.tgz", - "integrity": "sha512-T4dpvXUMiG7zMLZcFuJNshMr9rUulowl2AyqLd2LjQtN32COAzhn6uKJkFycTHkOMM8qC03WNefc55MNJVtr/w==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.8.tgz", + "integrity": "sha512-RAFiqOXj4WJ6U5mSyl7NFYsoq5zF12KUqoOAFx2972IO+YbqHVGqENf+zLCFyn9Gd19x3dupvWFipn4wqPqK8w==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.6.3", - "@storybook/preset-react-webpack": "8.6.3", - "@storybook/react": "8.6.3" + "@storybook/builder-webpack5": "8.6.8", + "@storybook/preset-react-webpack": "8.6.8", + "@storybook/react": "8.6.8" }, "engines": { "node": ">=18.0.0" @@ -5424,7 +5747,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.6.3", + "storybook": "^8.6.8", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5434,14 +5757,14 @@ } }, "node_modules/@storybook/test": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.3.tgz", - "integrity": "sha512-UimvhV/PmYoXCwIbGpkyqQfMhjdH2GaHJbV6BWr7M7BHA3kUS6zYJAm2V2CC5SYcmyj7FejLB4tgL7FmLXB6hA==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.8.tgz", + "integrity": "sha512-wMJkWWcfPK374uw3JPpgMBkPYkIhYPxqRVp/KAJR/h10YIhSAXg7yiH1LYmmNAwrmvI7Uc3KZZ9fX/Qvot5uRg==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.3", + "@storybook/instrumenter": "8.6.8", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -5453,7 +5776,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.3" + "storybook": "^8.6.8" } }, "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { @@ -5572,9 +5895,9 @@ } }, "node_modules/@storybook/theming": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.3.tgz", - "integrity": "sha512-sDcWnnko73KOCIc9stQyec9KvTmGOuMswqeKtWh0ha/wsgYB6G2/2j1xOheFmWKPitOsbwgvqtjCP7bRE68uIA==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.8.tgz", + "integrity": "sha512-Lgtmjudkd8s5wTxCbMvZNIY7iWOwnsWI04zejpubxbuNLFvOIvJnICVzrEzxuMYPIDg9cvPVYT3AkuE2NucUVg==", "dev": true, "license": "MIT", "funding": { @@ -5586,9 +5909,9 @@ } }, "node_modules/@swc/core": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.5.tgz", - "integrity": "sha512-EVY7zfpehxhTZXOfy508gb3D78ihoGGmvyiTWtlBPjgIaidP1Xw0naHMD78CWiFlZmeDjKXJufGtsEGOnZdmNA==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.11.tgz", + "integrity": "sha512-pCVY2Wn6dV/labNvssk9b3Owi4WOYsapcbWm90XkIj4xH/56Z6gzja9fsU+4MdPuEfC2Smw835nZHcdCFGyX6A==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -5604,16 +5927,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.11.5", - "@swc/core-darwin-x64": "1.11.5", - "@swc/core-linux-arm-gnueabihf": "1.11.5", - "@swc/core-linux-arm64-gnu": "1.11.5", - "@swc/core-linux-arm64-musl": "1.11.5", - "@swc/core-linux-x64-gnu": "1.11.5", - "@swc/core-linux-x64-musl": "1.11.5", - "@swc/core-win32-arm64-msvc": "1.11.5", - "@swc/core-win32-ia32-msvc": "1.11.5", - "@swc/core-win32-x64-msvc": "1.11.5" + "@swc/core-darwin-arm64": "1.11.11", + "@swc/core-darwin-x64": "1.11.11", + "@swc/core-linux-arm-gnueabihf": "1.11.11", + "@swc/core-linux-arm64-gnu": "1.11.11", + "@swc/core-linux-arm64-musl": "1.11.11", + "@swc/core-linux-x64-gnu": "1.11.11", + "@swc/core-linux-x64-musl": "1.11.11", + "@swc/core-win32-arm64-msvc": "1.11.11", + "@swc/core-win32-ia32-msvc": "1.11.11", + "@swc/core-win32-x64-msvc": "1.11.11" }, "peerDependencies": { "@swc/helpers": "*" @@ -5625,9 +5948,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.5.tgz", - "integrity": "sha512-GEd1hzEx0mSGkJYMFMGLnrGgjL2rOsOsuYWyjyiA3WLmhD7o+n/EWBDo6mzD/9aeF8dzSPC0TnW216gJbvrNzA==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.11.tgz", + "integrity": "sha512-vJcjGVDB8cZH7zyOkC0AfpFYI/7GHKG0NSsH3tpuKrmoAXJyCYspKPGid7FT53EAlWreN7+Pew+bukYf5j+Fmg==", "cpu": [ "arm64" ], @@ -5642,9 +5965,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.5.tgz", - "integrity": "sha512-toz04z9wAClVvQSEY3xzrgyyeWBAfMWcKG4K0ugNvO56h/wczi2ZHRlnAXZW1tghKBk3z6MXqa/srfXgNhffKw==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.11.tgz", + "integrity": "sha512-/N4dGdqEYvD48mCF3QBSycAbbQd3yoZ2YHSzYesQf8usNc2YpIhYqEH3sql02UsxTjEFOJSf1bxZABDdhbSl6A==", "cpu": [ "x64" ], @@ -5659,9 +5982,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.5.tgz", - "integrity": "sha512-5SjmKxXdwbBpsYGTpgeXOXMIjS563/ntRGn8Zc12H/c4VfPrRLGhgbJ/48z2XVFyBLcw7BCHZyFuVX1+ZI3W0Q==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.11.tgz", + "integrity": "sha512-hsBhKK+wVXdN3x9MrL5GW0yT8o9GxteE5zHAI2HJjRQel3HtW7m5Nvwaq+q8rwMf4YQRd8ydbvwl4iUOZx7i2Q==", "cpu": [ "arm" ], @@ -5676,9 +5999,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.5.tgz", - "integrity": "sha512-pydIlInHRzRIwB0NHblz3Dx58H/bsi0I5F2deLf9iOmwPNuOGcEEZF1Qatc7YIjP5DFbXK+Dcz+pMUZb2cc2MQ==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.11.tgz", + "integrity": "sha512-YOCdxsqbnn/HMPCNM6nrXUpSndLXMUssGTtzT7ffXqr7WuzRg2e170FVDVQFIkb08E7Ku5uOnnUVAChAJQbMOQ==", "cpu": [ "arm64" ], @@ -5693,9 +6016,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.5.tgz", - "integrity": "sha512-LhBHKjkZq5tJF1Lh0NJFpx7ROnCWLckrlIAIdSt9XfOV+zuEXJQOj+NFcM1eNk17GFfFyUMOZyGZxzYq5dveEQ==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.11.tgz", + "integrity": "sha512-nR2tfdQRRzwqR2XYw9NnBk9Fdvff/b8IiJzDL28gRR2QiJWLaE8LsRovtWrzCOYq6o5Uu9cJ3WbabWthLo4jLw==", "cpu": [ "arm64" ], @@ -5710,9 +6033,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.5.tgz", - "integrity": "sha512-dCi4xkxXlsk5sQYb3i413Cfh7+wMJeBYTvBZTD5xh+/DgRtIcIJLYJ2tNjWC4/C2i5fj+Ze9bKNSdd8weRWZ3A==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.11.tgz", + "integrity": "sha512-b4gBp5HA9xNWNC5gsYbdzGBJWx4vKSGybGMGOVWWuF+ynx10+0sA/o4XJGuNHm8TEDuNh9YLKf6QkIO8+GPJ1g==", "cpu": [ "x64" ], @@ -5727,9 +6050,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.5.tgz", - "integrity": "sha512-K0AC4TreM5Oo/tXNXnE/Gf5+5y/HwUdd7xvUjOpZddcX/RlsbYOKWLgOtA3fdFIuta7XC+vrGKmIhm5l70DSVQ==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.11.tgz", + "integrity": "sha512-dEvqmQVswjNvMBwXNb8q5uSvhWrJLdttBSef3s6UC5oDSwOr00t3RQPzyS3n5qmGJ8UMTdPRmsopxmqaODISdg==", "cpu": [ "x64" ], @@ -5744,9 +6067,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.5.tgz", - "integrity": "sha512-wzum8sYUsvPY7kgUfuqVYTgIPYmBC8KPksoNM1fz5UfhudU0ciQuYvUBD47GIGOevaoxhLkjPH4CB95vh1mJ9w==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.11.tgz", + "integrity": "sha512-aZNZznem9WRnw2FbTqVpnclvl8Q2apOBW2B316gZK+qxbe+ktjOUnYaMhdCG3+BYggyIBDOnaJeQrXbKIMmNdw==", "cpu": [ "arm64" ], @@ -5761,9 +6084,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.5.tgz", - "integrity": "sha512-lco7mw0TPRTpVPR6NwggJpjdUkAboGRkLrDHjIsUaR+Y5+0m5FMMkHOMxWXAbrBS5c4ph7QErp4Lma4r9Mn5og==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.11.tgz", + "integrity": "sha512-DjeJn/IfjgOddmJ8IBbWuDK53Fqw7UvOz7kyI/728CSdDYC3LXigzj3ZYs4VvyeOt+ZcQZUB2HA27edOifomGw==", "cpu": [ "ia32" ], @@ -5778,9 +6101,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.5.tgz", - "integrity": "sha512-E+DApLSC6JRK8VkDa4bNsBdD7Qoomx1HvKVZpOXl9v94hUZI5GMExl4vU5isvb+hPWL7rZ0NeI7ITnVLgLJRbA==", + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.11.tgz", + "integrity": "sha512-Gp/SLoeMtsU4n0uRoKDOlGrRC6wCfifq7bqLwSlAG8u8MyJYJCcwjg7ggm0rhLdC2vbiZ+lLVl3kkETp+JUvKg==", "cpu": [ "x64" ], @@ -6401,9 +6724,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.0.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", - "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "version": "19.0.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", + "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -6492,17 +6815,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", - "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.27.0.tgz", + "integrity": "sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/type-utils": "8.25.0", - "@typescript-eslint/utils": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/type-utils": "8.27.0", + "@typescript-eslint/utils": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -6518,20 +6841,83 @@ "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", + "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.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/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", + "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", + "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/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", + "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.27.0", + "eslint-visitor-keys": "^4.2.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/eslint-plugin/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/@typescript-eslint/parser": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", - "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.27.0.tgz", + "integrity": "sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/typescript-estree": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/typescript-estree": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "debug": "^4.3.4" }, "engines": { @@ -6543,7 +6929,70 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", + "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.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/parser/node_modules/@typescript-eslint/types": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", + "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", + "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/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", + "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.27.0", + "eslint-visitor-keys": "^4.2.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/parser/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/@typescript-eslint/scope-manager": { @@ -6565,14 +7014,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", - "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.27.0.tgz", + "integrity": "sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.25.0", - "@typescript-eslint/utils": "8.25.0", + "@typescript-eslint/typescript-estree": "8.27.0", + "@typescript-eslint/utils": "8.27.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -6585,7 +7034,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/types": { @@ -6603,14 +7052,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", - "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.27.0.tgz", + "integrity": "sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6626,41 +7075,31 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", - "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", + "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", "dev": true, "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/typescript-estree": "8.25.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", - "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz", - "integrity": "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", + "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/types": "8.27.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -6671,7 +7110,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "node_modules/@typescript-eslint/typescript-estree/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==", @@ -6684,35 +7123,153 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@vcarl/remark-headings": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@vcarl/remark-headings/-/remark-headings-0.1.0.tgz", - "integrity": "sha512-ffQxJUcapJ9Bk+fiGN49YJ9RaYMibrSTSezB1Fcrtu+0YSZxA3bsaLlIv1u/4sjPIeW/BKrs4xtMT3l3P9Ba5Q==", - "license": "MIT", - "dependencies": { - "mdast-util-to-string": "^3.1.0", - "unist-util-visit": "^4.0.0" - } - }, - "node_modules/@vcarl/remark-headings/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "node_modules/@typescript-eslint/utils": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.27.0.tgz", + "integrity": "sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==", + "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/typescript-estree": "8.27.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", + "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.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/utils/node_modules/@typescript-eslint/types": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", + "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", + "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/visitor-keys": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", + "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.27.0", + "eslint-visitor-keys": "^4.2.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/utils/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/@typescript-eslint/visitor-keys": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz", + "integrity": "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.25.0", + "eslint-visitor-keys": "^4.2.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/visitor-keys/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/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@vcarl/remark-headings": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@vcarl/remark-headings/-/remark-headings-0.1.0.tgz", + "integrity": "sha512-ffQxJUcapJ9Bk+fiGN49YJ9RaYMibrSTSezB1Fcrtu+0YSZxA3bsaLlIv1u/4sjPIeW/BKrs4xtMT3l3P9Ba5Q==", + "license": "MIT", + "dependencies": { + "mdast-util-to-string": "^3.1.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/@vcarl/remark-headings/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/@vcarl/remark-headings/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" }, "funding": { "type": "opencollective", @@ -6787,9 +7344,9 @@ } }, "node_modules/@vercel/otel": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@vercel/otel/-/otel-1.10.1.tgz", - "integrity": "sha512-jZrHSAP03WVUfu1yid4AkYAZ/pwde/txVBSovk5kxQ99Bmb8sqMmQ9RJCSbWuV1EvbTimrVotAP0Devi/qHXgw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@vercel/otel/-/otel-1.10.4.tgz", + "integrity": "sha512-X01cOLU2Aiku4y1Vn9HQ8VmkQEdIQiWhjHa7DEUspcNGNg0Xm7GYAU7ErZ0pH/5spsrvb2wpIIHSBFgs0M5p4g==", "license": "MIT", "engines": { "node": ">=18" @@ -7119,9 +7676,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -7421,18 +7978,19 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -7595,9 +8153,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -7614,11 +8172,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -7648,9 +8206,9 @@ } }, "node_modules/axe-core": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", - "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", "dev": true, "license": "MPL-2.0", "engines": { @@ -8063,24 +8621,24 @@ } }, "node_modules/cacheable": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.8.tgz", - "integrity": "sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", + "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", "dev": true, "license": "MIT", "dependencies": { - "hookified": "^1.7.0", - "keyv": "^5.2.3" + "hookified": "^1.7.1", + "keyv": "^5.3.1" } }, "node_modules/cacheable/node_modules/keyv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.2.3.tgz", - "integrity": "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz", + "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==", "dev": true, "license": "MIT", "dependencies": { - "@keyv/serialize": "^1.0.2" + "@keyv/serialize": "^1.0.3" } }, "node_modules/cachedir": { @@ -8127,14 +8685,14 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -8183,9 +8741,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001701", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001701.tgz", - "integrity": "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==", + "version": "1.0.30001707", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", + "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", "funding": [ { "type": "opencollective", @@ -9261,9 +9819,9 @@ "license": "MIT" }, "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -9652,9 +10210,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.109", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.109.tgz", - "integrity": "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==", + "version": "1.5.123", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz", + "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==", "license": "ISC" }, "node_modules/emittery": { @@ -9978,9 +10536,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -9991,31 +10549,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "@esbuild/aix-ppc64": "0.25.1", + "@esbuild/android-arm": "0.25.1", + "@esbuild/android-arm64": "0.25.1", + "@esbuild/android-x64": "0.25.1", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@esbuild/freebsd-arm64": "0.25.1", + "@esbuild/freebsd-x64": "0.25.1", + "@esbuild/linux-arm": "0.25.1", + "@esbuild/linux-arm64": "0.25.1", + "@esbuild/linux-ia32": "0.25.1", + "@esbuild/linux-loong64": "0.25.1", + "@esbuild/linux-mips64el": "0.25.1", + "@esbuild/linux-ppc64": "0.25.1", + "@esbuild/linux-riscv64": "0.25.1", + "@esbuild/linux-s390x": "0.25.1", + "@esbuild/linux-x64": "0.25.1", + "@esbuild/netbsd-arm64": "0.25.1", + "@esbuild/netbsd-x64": "0.25.1", + "@esbuild/openbsd-arm64": "0.25.1", + "@esbuild/openbsd-x64": "0.25.1", + "@esbuild/sunos-x64": "0.25.1", + "@esbuild/win32-arm64": "0.25.1", + "@esbuild/win32-ia32": "0.25.1", + "@esbuild/win32-x64": "0.25.1" } }, "node_modules/esbuild-register": { @@ -10194,9 +10752,9 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.3.tgz", - "integrity": "sha512-A0bu4Ks2QqDWNpeEgTQMPTngaMhuDu4yv6xpftBMAf+1ziXnpx+eSR1WRfoPTe2BAiAjHFZ7kSNx1fvr5g5pmQ==", + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.7.tgz", + "integrity": "sha512-U7k84gOzrfl09c33qrIbD3TkWTWu3nt3dK5sDajHSekfoLlYGusIwSdPlPzVeA6TFpi0Wpj+ZdBD8hX4hxPoww==", "dev": true, "license": "ISC", "dependencies": { @@ -10229,26 +10787,26 @@ } }, "node_modules/eslint-mdx": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.1.5.tgz", - "integrity": "sha512-ynztX0k7CQ3iDL7fDEIeg3g0O/d6QPv7IBI9fdYLhXp5fAp0fi8X22xF/D3+Pk0f90R27uwqa1clHpay6t0l8Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.2.0.tgz", + "integrity": "sha512-7A6/TDZeUh8ORwM2pe+n1FyUjwEYfGF1OZI+sn45L11NMHSzj/RTK+VqAGjIi+kvDrGc3yScUa20L3DKW0IRjg==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.11.3", + "acorn": "^8.14.1", "acorn-jsx": "^5.3.2", "espree": "^9.6.1", "estree-util-visit": "^2.0.0", - "remark-mdx": "^3.0.0", + "remark-mdx": "^3.1.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", - "synckit": "^0.9.0", - "tslib": "^2.6.2", - "unified": "^11.0.4", - "unified-engine": "^11.2.0", + "synckit": "^0.9.2", + "tslib": "^2.8.1", + "unified": "^11.0.5", + "unified-engine": "^11.2.2", "unist-util-visit": "^5.0.0", "uvu": "^0.5.6", - "vfile": "^6.0.1" + "vfile": "^6.0.3" }, "engines": { "node": ">=18.0.0" @@ -10856,9 +11414,9 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.3.tgz", - "integrity": "sha512-gDBnBZiyk4ZG7OMSJRaHBcuJ8TMCXgMIQ3HB/XvtN0SvSio2ZOIeYD3yGj39g/DbyCe/Bg02j/ip9tWlDEs82A==", + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.6.tgz", + "integrity": "sha512-3WodYD6Bs9ACqnB+TP2TuLh774c/nacAjxSKOP9bHJ2c8rf+nrhocxjjeAWNmO9IPkFIzTKlcl0vNXI2yYpVOw==", "dev": true, "license": "MIT", "dependencies": { @@ -10870,14 +11428,13 @@ "node": ">= 18" }, "peerDependencies": { - "eslint": ">=8", - "typescript": ">=4.8.4 <5.8.0" + "eslint": ">=8" } }, "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -12512,9 +13069,9 @@ } }, "node_modules/hast-util-to-estree": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.2.tgz", - "integrity": "sha512-94SDoKOfop5gP8RHyw4vV1aj+oChuD42g08BONGAaWFbbO6iaWUqxk7SWfGybgcVzhK16KifZr3zD2dqQgx3jQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -12530,7 +13087,7 @@ "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^1.0.0", + "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" }, @@ -12563,9 +13120,9 @@ } }, "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.5.tgz", - "integrity": "sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -12580,7 +13137,7 @@ "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^1.0.0", + "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" }, @@ -12648,9 +13205,9 @@ } }, "node_modules/hookified": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.7.1.tgz", - "integrity": "sha512-OXcdHsXeOiD7OJ5zvWj8Oy/6RCdLwntAX+wUrfemNcMGn6sux4xbEHi2QXwqePYhjQ/yvxxq2MvCRirdlHscBw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", + "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", "dev": true, "license": "MIT" }, @@ -13187,15 +13744,15 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.15", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.15.tgz", - "integrity": "sha512-LRyExsEsefQSBjU2p47oAheoKz+EOJxSLDdjOaEjdriajfHsMXOmV/EhMvYSg9bAgCUHasuAC+mcUBe/95PfIg==", + "version": "10.7.16", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.16.tgz", + "integrity": "sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.3", - "@formatjs/fast-memoize": "2.2.6", - "@formatjs/icu-messageformat-parser": "2.11.1", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.2", + "tslib": "^2.8.0" } }, "node_modules/is-alphabetical": { @@ -18661,9 +19218,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", @@ -18777,9 +19334,9 @@ } }, "node_modules/next-themes": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.4.tgz", - "integrity": "sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", "license": "MIT", "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", @@ -18976,9 +19533,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", - "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "version": "2.2.19", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.19.tgz", + "integrity": "sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==", "dev": true, "license": "MIT" }, @@ -19045,15 +19602,16 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -20666,9 +21224,9 @@ "license": "MIT" }, "node_modules/recast": { - "version": "0.23.10", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.10.tgz", - "integrity": "sha512-mbCmRMJUKCJ1h41V0cu2C26ULBURwuoZ34C9rChjcDaeJ/4Kv5al3O2HPwTs2m0wQ1vGhMY+tguhzU1aE8md1A==", + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", "dev": true, "license": "MIT", "dependencies": { @@ -22974,13 +23532,13 @@ } }, "node_modules/storybook": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.3.tgz", - "integrity": "sha512-Vbmd8/FXp6X0AOMak6arcg3WdkHj+2AYJTNHbCPVHsCEbnREyRZIG+Eq5/Ffmy6byiz+4OAX5HwsHGSMR6Xmow==", + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.8.tgz", + "integrity": "sha512-0Ze7QC0Hqx+ulms/FiQ7PNyaBgmaoxqxLOi8PQc5sOepO1+Ea8nssQGmOHS2QIX1ybb/GW56Fa5eyj+PJgsYDQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.6.3" + "@storybook/core": "8.6.8" }, "bin": { "getstorybook": "bin/index.cjs", @@ -23327,6 +23885,15 @@ "webpack": "^5.0.0" } }, + "node_modules/style-to-js": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", + "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.8" + } + }, "node_modules/style-to-object": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", @@ -23511,25 +24078,25 @@ "license": "MIT" }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.6.tgz", - "integrity": "sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.7.tgz", + "integrity": "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^6.1.6" + "flat-cache": "^6.1.7" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.6.tgz", - "integrity": "sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz", + "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==", "dev": true, "license": "MIT", "dependencies": { - "cacheable": "^1.8.8", - "flatted": "^3.3.2", - "hookified": "^1.7.0" + "cacheable": "^1.8.9", + "flatted": "^3.3.3", + "hookified": "^1.7.1" } }, "node_modules/stylelint/node_modules/global-modules": { @@ -23774,9 +24341,9 @@ } }, "node_modules/sval": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/sval/-/sval-0.6.1.tgz", - "integrity": "sha512-e4rndan/xKWMrzrqfZpBxt4IVEJofkaSQ+DFnCvcxGKEWumKHtKQDwcNQUUNt2grMAnksluv0tKnPyoE2SWxYw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/sval/-/sval-0.6.3.tgz", + "integrity": "sha512-QvR9JqSmsSE2nnFzAxWK/KRvgpQsBohMulGyIP0TtSG5kt1Eolw0Iyh+fydqkBh3Pyg2++26CW+5h8KVTatp5Q==", "license": "MIT", "dependencies": { "acorn": "^8.14.0" @@ -24013,9 +24580,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.12", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.12.tgz", - "integrity": "sha512-jDLYqo7oF8tJIttjXO6jBY5Hk8p3A8W4ttih7cCEq64fQFWmgJ4VqAQjKr7WwIDlmXKEc6QeoRb5ecjZ+2afcg==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -24386,9 +24953,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -24662,9 +25229,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -24676,15 +25243,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", - "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", + "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.25.0", - "@typescript-eslint/parser": "8.25.0", - "@typescript-eslint/utils": "8.25.0" + "@typescript-eslint/eslint-plugin": "8.26.1", + "@typescript-eslint/parser": "8.26.1", + "@typescript-eslint/utils": "8.26.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -24695,83 +25262,276 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", + "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/type-utils": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" }, "engines": { - "node": ">=0.8.0" + "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", + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", + "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "debug": "^4.3.4" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/undici-types": { - "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": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", + "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/unified-engine": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.2.2.tgz", - "integrity": "sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", + "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", "dev": true, "license": "MIT", "dependencies": { - "@types/concat-stream": "^2.0.0", - "@types/debug": "^4.0.0", + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", + "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "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.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", + "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "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": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", + "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", + "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "eslint-visitor-keys": "^4.2.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/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/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "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": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.2.2.tgz", + "integrity": "sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/concat-stream": "^2.0.0", + "@types/debug": "^4.0.0", "@types/is-empty": "^1.0.0", "@types/node": "^22.0.0", "@types/unist": "^3.0.0", @@ -25356,9 +26116,9 @@ } }, "node_modules/vfile-matter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-5.0.0.tgz", - "integrity": "sha512-jhPSqlj8hTSkTXOqyxbUeZAFFVq/iwu/jukcApEqc/7DOidaAth6rDc0Zgg0vWpzUnWkwFP7aK28l6nBmxMqdQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-5.0.1.tgz", + "integrity": "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==", "license": "MIT", "dependencies": { "vfile": "^6.0.0", @@ -25867,16 +26627,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -26185,21 +26946,21 @@ } }, "packages/i18n/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.1.tgz", - "integrity": "sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", + "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.19.1", - "@typescript-eslint/type-utils": "8.19.1", - "@typescript-eslint/utils": "8.19.1", - "@typescript-eslint/visitor-keys": "8.19.1", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/type-utils": "8.25.0", + "@typescript-eslint/utils": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -26215,16 +26976,16 @@ } }, "packages/i18n/node_modules/@typescript-eslint/parser": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.1.tgz", - "integrity": "sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", + "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.19.1", - "@typescript-eslint/types": "8.19.1", - "@typescript-eslint/typescript-estree": "8.19.1", - "@typescript-eslint/visitor-keys": "8.19.1", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", "debug": "^4.3.4" }, "engines": { @@ -26239,35 +27000,17 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "packages/i18n/node_modules/@typescript-eslint/scope-manager": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", - "integrity": "sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.19.1", - "@typescript-eslint/visitor-keys": "8.19.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "packages/i18n/node_modules/@typescript-eslint/type-utils": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.1.tgz", - "integrity": "sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", + "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.19.1", - "@typescript-eslint/utils": "8.19.1", + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/utils": "8.25.0", "debug": "^4.3.4", - "ts-api-utils": "^2.0.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -26281,35 +27024,21 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "packages/i18n/node_modules/@typescript-eslint/types": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.1.tgz", - "integrity": "sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "packages/i18n/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", - "integrity": "sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", + "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.1", - "@typescript-eslint/visitor-keys": "8.19.1", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.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": "^2.0.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -26323,16 +27052,16 @@ } }, "packages/i18n/node_modules/@typescript-eslint/utils": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.1.tgz", - "integrity": "sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", + "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.19.1", - "@typescript-eslint/types": "8.19.1", - "@typescript-eslint/typescript-estree": "8.19.1" + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -26346,83 +27075,30 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "packages/i18n/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", - "integrity": "sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.19.1", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "packages/i18n/node_modules/eslint-import-resolver-typescript": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz", - "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==", - "dev": true, - "license": "ISC", - "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.3.7", - "enhanced-resolve": "^5.15.0", - "fast-glob": "^3.3.2", - "get-tsconfig": "^4.7.5", - "is-bun-module": "^1.0.2", - "is-glob": "^4.0.3", - "stable-hash": "^0.0.4" - }, - "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 - } - } - }, - "packages/i18n/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==", + "packages/i18n/node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=14.17" } }, "packages/i18n/node_modules/typescript-eslint": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.1.tgz", - "integrity": "sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", + "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.19.1", - "@typescript-eslint/parser": "8.19.1", - "@typescript-eslint/utils": "8.19.1" + "@typescript-eslint/eslint-plugin": "8.25.0", + "@typescript-eslint/parser": "8.25.0", + "@typescript-eslint/utils": "8.25.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -26483,236 +27159,6 @@ "engines": { "node": ">=20" } - }, - "packages/ui-components/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.0.tgz", - "integrity": "sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/type-utils": "8.26.0", - "@typescript-eslint/utils": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - }, - "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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "packages/ui-components/node_modules/@typescript-eslint/parser": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.0.tgz", - "integrity": "sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/typescript-estree": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "packages/ui-components/node_modules/@typescript-eslint/scope-manager": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.0.tgz", - "integrity": "sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "packages/ui-components/node_modules/@typescript-eslint/type-utils": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.0.tgz", - "integrity": "sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.26.0", - "@typescript-eslint/utils": "8.26.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "packages/ui-components/node_modules/@typescript-eslint/types": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.0.tgz", - "integrity": "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "packages/ui-components/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.0.tgz", - "integrity": "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "packages/ui-components/node_modules/@typescript-eslint/utils": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.0.tgz", - "integrity": "sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/typescript-estree": "8.26.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "packages/ui-components/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.0.tgz", - "integrity": "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.26.0", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "packages/ui-components/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" - } - }, - "packages/ui-components/node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "packages/ui-components/node_modules/typescript-eslint": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.0.tgz", - "integrity": "sha512-PtVz9nAnuNJuAVeUFvwztjuUgSnJInODAUx47VDwWPXzd5vismPOtPtt83tzNXyOjVQbPRp786D6WFW/M2koIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.26.0", - "@typescript-eslint/parser": "8.26.0", - "@typescript-eslint/utils": "8.26.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", - "typescript": ">=4.8.4 <5.9.0" - } } } } From f772627fa05f00914d9150ff9962dc25d844be64 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 25 Mar 2025 08:14:31 -0400 Subject: [PATCH 0351/1385] fix: apply tailwind to `tsx` files in `ui-components` (#7571) --- apps/site/styles/index.css | 2 +- apps/site/styles/{locals.css => locales.css} | 0 apps/site/tailwind.config.ts | 6 +- packages/ui-components/styles/markdown.css | 172 ------------------- 4 files changed, 6 insertions(+), 174 deletions(-) rename apps/site/styles/{locals.css => locales.css} (100%) delete mode 100644 packages/ui-components/styles/markdown.css diff --git a/apps/site/styles/index.css b/apps/site/styles/index.css index 2c1c1b1a53051..456314f3cbeb7 100644 --- a/apps/site/styles/index.css +++ b/apps/site/styles/index.css @@ -10,4 +10,4 @@ @import './base.css'; @import './markdown.css'; @import './effects.css'; -@import './locals.css'; +@import './locales.css'; diff --git a/apps/site/styles/locals.css b/apps/site/styles/locales.css similarity index 100% rename from apps/site/styles/locals.css rename to apps/site/styles/locales.css diff --git a/apps/site/tailwind.config.ts b/apps/site/tailwind.config.ts index 30b7baf1d0bf9..d8835f0767c5c 100644 --- a/apps/site/tailwind.config.ts +++ b/apps/site/tailwind.config.ts @@ -1 +1,5 @@ -export { default } from '@node-core/ui-components/tailwind.config'; +import twConfig from '@node-core/ui-components/tailwind.config'; + +twConfig.content.push('../../packages/ui-components/**/*.tsx'); + +export default twConfig; diff --git a/packages/ui-components/styles/markdown.css b/packages/ui-components/styles/markdown.css deleted file mode 100644 index 3984a3ed9c03c..0000000000000 --- a/packages/ui-components/styles/markdown.css +++ /dev/null @@ -1,172 +0,0 @@ -main { - @apply flex - w-full - flex-col - gap-6; - - hr { - @apply w-full - border-t - border-t-neutral-200 - bg-white - dark:border-t-neutral-900 - dark:bg-neutral-950; - } - - h1 { - @apply text-3xl; - } - - h2 { - @apply text-2xl; - } - - h3 { - @apply text-xl; - } - - h4 { - @apply text-lg; - } - - h5, - h6 { - @apply text-base; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - &[id] a { - @apply text-neutral-900 - dark:text-white; - } - } - - h1, - h2, - h3, - h4, - h5, - h6, - strong { - @apply font-semibold - text-neutral-900 - dark:text-white; - } - - code { - @apply font-ibm-plex-mono - rounded - bg-neutral-100 - px-1 - text-base - font-semibold - text-neutral-900 - dark:bg-neutral-900 - dark:text-white; - } - - p { - @apply text-neutral-900 - dark:text-white; - } - - a, - .anchor { - @apply max-xs:font-semibold - text-green-600 - dark:text-green-400; - - &:hover { - @apply text-green-900 - dark:text-green-300; - } - - &[role='button'] { - @apply max-xs:font-regular; - } - - &:has(code) { - @apply max-xs:decoration-neutral-800 - dark:max-xs:decoration-neutral-200; - } - } - - ul { - @apply list-disc - pl-9 - pr-5 - leading-6 - text-neutral-900 - dark:text-white; - - li div:has(> pre) { - @apply !my-1; - } - } - - ol { - @apply list-decimal - px-5 - leading-6 - text-neutral-900 - dark:text-white; - - li div:has(> pre) { - @apply !my-1; - } - } - - table { - @apply mb-1 - w-full - border-separate - border-spacing-0 - rounded - border - border-neutral-200 - text-left - text-sm - dark:border-neutral-800; - - th, - td { - @apply max-xs:block - max-xs:border-l-0 - border - border-r-0 - border-t-0 - border-neutral-200 - px-4 - py-2 - text-neutral-900 - dark:border-neutral-800 - dark:text-white; - - > a { - @apply pr-2; - } - } - - th { - @apply font-semibold; - } - - tr:last-child td { - @apply sm:border-b-0; - - &:last-child { - @apply max-xs:border-b-0; - } - } - - td:first-child, - th:first-child { - @apply sm:border-l-0; - } - } -} From 82a8d1886c9e8d76017ae8b2cf26384a1254a855 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 25 Mar 2025 08:39:39 -0400 Subject: [PATCH 0352/1385] fix: apply correct styles to `sidebarItemToggler` (#7572) --- packages/ui-components/Containers/NavBar/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ui-components/Containers/NavBar/index.tsx b/packages/ui-components/Containers/NavBar/index.tsx index 4e6a6c890ef77..c4aed01904dbf 100644 --- a/packages/ui-components/Containers/NavBar/index.tsx +++ b/packages/ui-components/Containers/NavBar/index.tsx @@ -48,14 +48,14 @@ const NavBar: FC<PropsWithChildren<NavbarProps>> = ({ const [isMenuOpen, setIsMenuOpen] = useState(false); return ( - <nav className={`${style.container}`}> + <nav className={style.container}> <div className={style.nodeIconAndMobileItemsToggler}> <Component className={style.nodeIconWrapper} href="/" aria-label="Home"> <Logo /> </Component> <Label.Root - className={classNames(['peer', style.sidebarItemToggler])} + className={style.sidebarItemTogglerLabel} htmlFor="sidebarItemToggler" > {navInteractionIcons[isMenuOpen ? 'close' : 'show']} From ca80c9b3a4f3a34f9225a4f7a4bb892a30e42e2d Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 25 Mar 2025 13:57:47 -0400 Subject: [PATCH 0353/1385] fix: add more styles to ui-components (#7573) --- apps/site/styles/index.css | 1 - {apps/site => packages/ui-components}/styles/base.css | 0 packages/ui-components/styles/index.css | 1 + 3 files changed, 1 insertion(+), 1 deletion(-) rename {apps/site => packages/ui-components}/styles/base.css (100%) diff --git a/apps/site/styles/index.css b/apps/site/styles/index.css index 456314f3cbeb7..16329e91c8854 100644 --- a/apps/site/styles/index.css +++ b/apps/site/styles/index.css @@ -7,7 +7,6 @@ */ @import '@node-core/ui-components/styles/index.css'; -@import './base.css'; @import './markdown.css'; @import './effects.css'; @import './locales.css'; diff --git a/apps/site/styles/base.css b/packages/ui-components/styles/base.css similarity index 100% rename from apps/site/styles/base.css rename to packages/ui-components/styles/base.css diff --git a/packages/ui-components/styles/index.css b/packages/ui-components/styles/index.css index 824dbf9a86ce7..b5229b19a6b16 100644 --- a/packages/ui-components/styles/index.css +++ b/packages/ui-components/styles/index.css @@ -10,3 +10,4 @@ @import 'tailwindcss/components'; @import 'tailwindcss/utilities'; @import './effects.css'; +@import './base.css'; From 642c2c232041b06d5bfb9ee65c90b83e4c79bc47 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Wed, 26 Mar 2025 13:49:25 -0300 Subject: [PATCH 0354/1385] doc: add ryotak as one of reporter of CVE-2025-23084 (#7575) --- .../en/blog/vulnerability/january-2025-security-releases.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md index 47fa605d83fec..784febb3e5060 100644 --- a/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md +++ b/apps/site/pages/en/blog/vulnerability/january-2025-security-releases.md @@ -49,7 +49,7 @@ Impact: - This vulnerability affects all users in active release lines: 18.x, 20.x, 22.x, 23.x -Thank you, to taise for reporting this vulnerability and thank you tniessen for fixing it. +Thank you, to ryotak and taise for reporting this vulnerability and thank you tniessen for fixing it. ## GOAWAY HTTP/2 frames cause memory leak outside heap (CVE-2025-23085) - (medium) From 7754280f696d212c4e898340cd1b37b3596d886a Mon Sep 17 00:00:00 2001 From: John Gee <john@ruru.gen.nz> Date: Thu, 27 Mar 2025 11:45:46 +1300 Subject: [PATCH 0355/1385] Docs: add n as community download option (#7498) * Docs: add n as community download option * Chore: add new download methods to stories * Chore: remove inline comments per feedback --- apps/site/snippets/en/download/n.bash | 8 +++++ apps/site/types/release.ts | 3 +- apps/site/util/downloadUtils.tsx | 9 ++++++ packages/i18n/locales/en.json | 1 + .../Icons/InstallationMethod/N.tsx | 32 +++++++++++++++++++ .../Icons/InstallationMethod/index.ts | 3 +- .../__design__/platform-logos.stories.tsx | 4 ++- 7 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 apps/site/snippets/en/download/n.bash create mode 100644 packages/ui-components/Icons/InstallationMethod/N.tsx diff --git a/apps/site/snippets/en/download/n.bash b/apps/site/snippets/en/download/n.bash new file mode 100644 index 0000000000000..4ced5d55f7bcd --- /dev/null +++ b/apps/site/snippets/en/download/n.bash @@ -0,0 +1,8 @@ +# Download and install n and Node.js: +curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s ${props.release.major} + +# Node.js already installs during n-install, but you can also install it manually: +# n install ${props.release.major} + +# Verify the Node.js version: +node -v # Should print "${props.release.versionWithPrefix}". diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index c5d050b05dfe5..c06919cac9a8a 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -9,7 +9,8 @@ export type InstallationMethod = | 'BREW' | 'DEVBOX' | 'DOCKER' - | 'CHOCO'; + | 'CHOCO' + | 'N'; export type PackageManager = 'NPM' | 'YARN' | 'PNPM'; // Items with a pipe/default value mean that they are auto inferred diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index e61a0ff004dac..3b5fe5b3dee9c 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -34,6 +34,7 @@ export enum InstallationMethodLabel { CHOCO = 'Chocolatey', DEVBOX = 'Devbox', DOCKER = 'Docker', + N = 'n', VOLTA = 'Volta', } @@ -210,6 +211,14 @@ export const INSTALL_METHODS: Array< url: 'https://docs.docker.com/get-started/get-docker/', info: 'layouts.download.codeBox.platformInfo.docker', }, + { + label: InstallationMethodLabel.N, + value: 'N', + compatibility: { os: ['MAC', 'LINUX'] }, + iconImage: <InstallMethodIcons.N width={16} height={16} />, + url: 'https://github.com/tj/n', + info: 'layouts.download.codeBox.platformInfo.n', + }, { label: InstallationMethodLabel.VOLTA, value: 'VOLTA', diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index ef968567df4bc..43d3f91c69204 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -288,6 +288,7 @@ "choco": "Chocolatey is a package manager for Windows.", "devbox": "Devbox creates isolated, reproducible development environments.", "docker": "Docker is a containerization platform.", + "n": "\"n\" is a cross-platform Node.js version manager.", "volta": "\"Volta\" is a cross-platform Node.js version manager." } } diff --git a/packages/ui-components/Icons/InstallationMethod/N.tsx b/packages/ui-components/Icons/InstallationMethod/N.tsx new file mode 100644 index 0000000000000..fc55c4d3af46b --- /dev/null +++ b/packages/ui-components/Icons/InstallationMethod/N.tsx @@ -0,0 +1,32 @@ +import type { FC, SVGProps } from 'react'; + +const N: FC<SVGProps<SVGSVGElement>> = props => ( + <svg + width="32" + height="32" + viewBox="0 0 32 32" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <rect + x="0" + y="0" + width="32" + height="32" + fill="#1e1e1e" + stroke="#ffffff" + strokeWidth="2" + rx="5" + /> + <circle cx="5" cy="5" r="2" fill="#ff5f56" /> + <circle cx="10" cy="5" r="2" fill="#ffbd2e" /> + <circle cx="15" cy="5" r="2" fill="#27c93f" /> + // text with outline + <text x="6" y="24" fontFamily="monospace" fontSize="14" fill="#00ff00"> + $n + </text> + </svg> +); + +export default N; diff --git a/packages/ui-components/Icons/InstallationMethod/index.ts b/packages/ui-components/Icons/InstallationMethod/index.ts index a44debeb655f0..e85544bbaa928 100644 --- a/packages/ui-components/Icons/InstallationMethod/index.ts +++ b/packages/ui-components/Icons/InstallationMethod/index.ts @@ -3,7 +3,8 @@ import Devbox from '@node-core/ui-components/Icons/InstallationMethod/Devbox'; import Docker from '@node-core/ui-components/Icons/InstallationMethod/Docker'; import FNM from '@node-core/ui-components/Icons/InstallationMethod/FNM'; import Homebrew from '@node-core/ui-components/Icons/InstallationMethod/Homebrew'; +import N from '@node-core/ui-components/Icons/InstallationMethod/N'; import NVM from '@node-core/ui-components/Icons/InstallationMethod/NVM'; import Volta from '@node-core/ui-components/Icons/InstallationMethod/Volta'; -export { Choco, Devbox, Docker, FNM, Homebrew, NVM, Volta }; +export { Choco, Devbox, Docker, FNM, Homebrew, N, NVM, Volta }; diff --git a/packages/ui-components/__design__/platform-logos.stories.tsx b/packages/ui-components/__design__/platform-logos.stories.tsx index fa457bf7d6142..9b311dda28b7f 100644 --- a/packages/ui-components/__design__/platform-logos.stories.tsx +++ b/packages/ui-components/__design__/platform-logos.stories.tsx @@ -6,6 +6,8 @@ import { NVM, Devbox, Choco, + N, + Volta, } from '@node-core/ui-components/Icons/InstallationMethod'; import { Apple, @@ -15,7 +17,7 @@ import { } from '@node-core/ui-components/Icons/OperatingSystem'; const osIcons = [Apple, Linux, Microsoft, AIX]; -const installMethodIcons = [Docker, Homebrew, NVM, Devbox, Choco]; +const installMethodIcons = [Docker, Homebrew, NVM, Devbox, Choco, N, Volta]; export const PlatformLogos: StoryObj = { render: () => ( From 9006f87c64ce6a0625185363295f10bb05f6b875 Mon Sep 17 00:00:00 2001 From: Richard Lau <rlau@redhat.com> Date: Thu, 27 Mar 2025 13:33:15 +0000 Subject: [PATCH 0356/1385] Blog: v18.20.8 release post (#7576) * Blog: v18.20.8 release post Refs: https://github.com/nodejs/node/pull/57631 * fixup! Blog: v18.20.8 release post Signed-off-by: Richard Lau <rlau@redhat.com> --------- Signed-off-by: Richard Lau <rlau@redhat.com> --- apps/site/pages/en/blog/release/v18.20.8.md | 108 ++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v18.20.8.md diff --git a/apps/site/pages/en/blog/release/v18.20.8.md b/apps/site/pages/en/blog/release/v18.20.8.md new file mode 100644 index 0000000000000..93a39a248752c --- /dev/null +++ b/apps/site/pages/en/blog/release/v18.20.8.md @@ -0,0 +1,108 @@ +--- +date: '2025-03-27T13:13:25.848Z' +category: release +title: Node v18.20.8 (LTS) +layout: blog-post +author: Richard Lau +--- + +## 2025-03-27, Version 18.20.8 'Hydrogen' (LTS), @richardlau + +Please note that Node.js 18 is scheduled to reach End-of-Life on 30 April 2025. It is recommended to update to Node.js 20 or 22 as Node.js 18 will no longer receive security updates once it reaches End-of-Life. + +Extended support for Node.js 18 may be available through [third party commercial partners](https://nodejs.org/en/about/previous-releases#commercial-support). + +### Notable Changes + +This release updates OpenSSL to 3.0.16 and root certificates to NSS 3.108. + +### Commits + +- \[[`f737a79073`](https://github.com/nodejs/node/commit/f737a79073)] - **async_hooks,inspector**: implement inspector api without async_wrap (Gabriel Bota) [#51501](https://github.com/nodejs/node/pull/51501) +- \[[`fce923ba69`](https://github.com/nodejs/node/commit/fce923ba69)] - **build**: update gcovr to 7.2 and codecov config (Benjamin E. Coe) [#54019](https://github.com/nodejs/node/pull/54019) +- \[[`8b7ffd807c`](https://github.com/nodejs/node/commit/8b7ffd807c)] - **build**: fix compatibility with V8's `depot_tools` (Richard Lau) [#57330](https://github.com/nodejs/node/pull/57330) +- \[[`ee9a343413`](https://github.com/nodejs/node/commit/ee9a343413)] - **crypto**: update root certificates to NSS 3.108 (Node.js GitHub Bot) [#57381](https://github.com/nodejs/node/pull/57381) +- \[[`738bf8aea4`](https://github.com/nodejs/node/commit/738bf8aea4)] - **crypto**: update root certificates to NSS 3.104 (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681) +- \[[`69d661d591`](https://github.com/nodejs/node/commit/69d661d591)] - **deps**: update undici to v5.29.0 (Matteo Collina) [#57557](https://github.com/nodejs/node/pull/57557) +- \[[`59fcf43b0e`](https://github.com/nodejs/node/commit/59fcf43b0e)] - **deps**: update corepack to 0.32.0 (Node.js GitHub Bot) [#57265](https://github.com/nodejs/node/pull/57265) +- \[[`1b72869503`](https://github.com/nodejs/node/commit/1b72869503)] - **deps**: update archs files for openssl-3.0.16 (Node.js GitHub Bot) [#57335](https://github.com/nodejs/node/pull/57335) +- \[[`a566560235`](https://github.com/nodejs/node/commit/a566560235)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.16 (Node.js GitHub Bot) [#57335](https://github.com/nodejs/node/pull/57335) +- \[[`50c4e1da2f`](https://github.com/nodejs/node/commit/50c4e1da2f)] - **doc**: add missing `deprecated` badges in `fs.md` (Yukihiro Hasegawa) [#57384](https://github.com/nodejs/node/pull/57384) +- \[[`c3babb4671`](https://github.com/nodejs/node/commit/c3babb4671)] - **doc**: update Xcode version used for arm64 and pkg (Michaël Zasso) [#57104](https://github.com/nodejs/node/pull/57104) +- \[[`784da606a6`](https://github.com/nodejs/node/commit/784da606a6)] - **doc**: fix link and history of `SourceMap` sections (Antoine du Hamel) [#57098](https://github.com/nodejs/node/pull/57098) +- \[[`f5dbceccbe`](https://github.com/nodejs/node/commit/f5dbceccbe)] - **test**: update error code in tls-psk-circuit for for OpenSSL 3.4 (sebastianas) [#56420](https://github.com/nodejs/node/pull/56420) + +Windows 32-bit Installer: https://nodejs.org/dist/v18.20.8/node-v18.20.8-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v18.20.8/node-v18.20.8-x64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v18.20.8/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v18.20.8/win-x64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v18.20.8/node-v18.20.8.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v18.20.8/node-v18.20.8-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v18.20.8/node-v18.20.8-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v18.20.8/node-v18.20.8-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v18.20.8/node-v18.20.8-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v18.20.8/node-v18.20.8-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v18.20.8/node-v18.20.8-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v18.20.8/node-v18.20.8-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v18.20.8/node-v18.20.8-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v18.20.8/node-v18.20.8.tar.gz \ +Other release files: https://nodejs.org/dist/v18.20.8/ \ +Documentation: https://nodejs.org/docs/v18.20.8/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +5a962ef966f9548117dea4d57615012efc6386a7b55c9a12c16fd7e674af375b node-v18.20.8-aix-ppc64.tar.gz +bae4965d29d29bd32f96364eefbe3bca576a03e917ddbb70b9330d75f2cacd76 node-v18.20.8-darwin-arm64.tar.gz +6626fb7526fb2d84c8200ab915496934f44f0cfa7bd6c73318322e43ce21457a node-v18.20.8-darwin-arm64.tar.xz +ed2554677188f4afc0d050ecd8bd56effb2572d6518f8da6d40321ede6698509 node-v18.20.8-darwin-x64.tar.gz +8e15d82da8e0265eaff6207add4b5c5bc23d05f7afb78e5694d1e3d93ba05139 node-v18.20.8-darwin-x64.tar.xz +10ef9e563840b5be0f291a114afb726523178ee5f51d23bf532d28f22c23bce9 node-v18.20.8-headers.tar.gz +b188159acff29d512fc553b990e52d1f13f39045115472176f9e231ed974170d node-v18.20.8-headers.tar.xz +2e3dfc51154e6fea9fc86a90c4ea8f3ecb8b60acaf7367c4b76691da192571c1 node-v18.20.8-linux-arm64.tar.gz +224e569dbe7b0ea4628ce383d9d482494b57ee040566583f1c54072c86d1116b node-v18.20.8-linux-arm64.tar.xz +d09ea19ff5eb7b0ff47d80316c708092ac401c138254e018e21b89bb6ed9abd0 node-v18.20.8-linux-armv7l.tar.gz +33a35700b8d5ff73a1223fc11282f0790dabf7e7d087612d8afd59319743d828 node-v18.20.8-linux-armv7l.tar.xz +3c0c7e5f414c2123b185924e3afac3bc6fcc3edbe14ec2782e9d5210a76d8b8e node-v18.20.8-linux-ppc64le.tar.gz +57fde85b5f8e6b3c5d45e48a82dbd28f1d2dde816b0da2b5fc250c1a63ea49e6 node-v18.20.8-linux-ppc64le.tar.xz +6db3d48cabcb22f1f4af29633431b62d1040099a6e27182ad9f018c90f09d65b node-v18.20.8-linux-s390x.tar.gz +35c81e08d26e25598e47dc4d1755f6bc0be802457a2f5bf775ead2ffccb73e89 node-v18.20.8-linux-s390x.tar.xz +27a9f3f14d5e99ad05a07ed3524ba3ee92f8ff8b6db5ff80b00f9feb5ec8097a node-v18.20.8-linux-x64.tar.gz +5467ee62d6af1411d46b6a10e3fb5cacc92734dbcef465fea14e7b90993001c9 node-v18.20.8-linux-x64.tar.xz +d4cc1b92f87eade68a8a025ff186609958966639e64d0b993bf88691f3273118 node-v18.20.8.pkg +ec60a6d2344ef9e1f093991ca1bb6bbe92c61c29d1762c4b99e08f87dbb91e2f node-v18.20.8.tar.gz +36a7bf1a76d62ce4badd881ee5974a323c70e1d8d19165732684e145632460d9 node-v18.20.8.tar.xz +a3aec6ddc837df1d838978568378ce877d36f1b1ade497b65db5ce93d7254c4f node-v18.20.8-win-x64.7z +1a1e40260a6facba83636e4cd0ba01eb5bd1386896824b36645afba44857384a node-v18.20.8-win-x64.zip +fea3bf9abebf12d96d76fd879326050af7d4e207a6203c4efddef875e3118e0f node-v18.20.8-win-x86.7z +96327c25f8dab9a2403b95ac60ad0b715962aeac67d3cefdbe457e37f065aff2 node-v18.20.8-win-x86.zip +bd8b92343e12dbe9e573d2f5d5fec6953fcf12e00add58a29a6774391d02f342 node-v18.20.8-x64.msi +c7a04a1378cb66f5716f2b67c65921497972e883541bc48c0b19c92668f1713d node-v18.20.8-x86.msi +3bc28aab59b609a6f359f456641789d646081291fc6505d6df2335e6eac89ae3 win-x64/node.exe +64d93225aaece04e3cd45177d6dea2b22df49e127281fefa3ade43ac46a36cc6 win-x64/node.lib +66e1addcf18db62f22ca754dfbf54fd17c634d88341a65c25453b19bbfa3d0bd win-x64/node_pdb.7z +bb89d9899aea449680cb39942fab775a4a3355a94c32cca6941dbff4c6157f6c win-x64/node_pdb.zip +878db391e180fa2cd8e5ef22ea23a7ef75506dfc7c63126975afb4e99bb6c002 win-x86/node.exe +8d068c16a75ff561595f2af576191d09a4669a87374abaff8782f8ce4e7d715f win-x86/node.lib +e7c632600ffdf957c67aef16b06e824a97e5faaa27738494d8352b98126e6841 win-x86/node_pdb.7z +95616d5176f29174225fe774fe08ccef4092a757766478965dce8a48f2076d33 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEyC+jrhy+3Gvka5NgxDzsRcF6uTwFAmflTfAACgkQxDzsRcF6 +uTw3JQ//R5Yj7rqy3N0ZLJT5T2TgM4/NNOMHXpJ3lyG+KYPBcahHTky6MRkx5PUV +4zupyFQCYBQAJZGyE9wtuZ3IFlWZKjd6FUcD5rwv8AJ2PyrMmGssJKY2gVg9Zgrc +er+qro0cJMSA3vOFd1lL8BKFSx4vIYWBixBMAxnak3GDDzUbReozuDTi2RkP82dJ +Y1O7+rW7lTLaMGDPGRHHayD66L1AB5VEXu01Kj13sFvY9gu/+4LgaafKzY9QzdsO +xcmNOqxHQ6Aw3F95MQbmrkh9729i6fkh0F5mai5m6qVfTcsktVVvGgNmZBcGIDb7 +XkXZdpuJLL5iHBAsyIxZQmJLqx+wC7ZavnM9c+IWb2GgOuSpatxbjsz/BOOl1NbP +N5+4Oi+X3wgMaYLGK6GASFpgZFu+L4ybcvCNaY1XSOpjqvGV5c16SD54XzaK6Dx0 +tul8IKsli4xN7vMeVgplEV+OFuR2p+TFWe8tCWnm9u67+8UInj6K9ffPYHZ58R9r +rX3jm7qboKzoLLifoyr87xinlHNPdE6AnyyDvnFL+7ET7eT3O4ZokQLLM0sRBCT1 +l/PUF2UnrohvdORAEr5YUfB0lQ4xiN5M6KWJV0df/VVP3KCJSnximxVng9ciVLcU +P6iluYUI2Sh6fcgmaiQJMDeaco9YZkWba341FgHbD6FSXgTw5n0= +=gHz8 +-----END PGP SIGNATURE----- +``` From 9e89ab68f6a512d1c731895f377ca99be64bcc61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Jos=C3=A9=20Borba=20Fernandes?= <rodrigoj.borba@gmail.com> Date: Fri, 28 Mar 2025 03:40:31 -0300 Subject: [PATCH 0357/1385] chore: bump orama version (#7577) --- apps/site/package.json | 2 +- package-lock.json | 557 +++++++++++++++++++++++++++++------------ 2 files changed, 401 insertions(+), 158 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index a61227d1db300..8ec43dcee1088 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -27,7 +27,7 @@ "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", - "@orama/react-components": "^0.5.1", + "@orama/react-components": "^0.6.4", "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", diff --git a/package-lock.json b/package-lock.json index bb2d66ff27967..c5dc084195255 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", - "@orama/react-components": "^0.5.1", + "@orama/react-components": "^0.6.4", "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", @@ -108,6 +108,134 @@ "user-agent-data-types": "0.4.2" } }, + "apps/site/node_modules/@orama/react-components": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@orama/react-components/-/react-components-0.6.4.tgz", + "integrity": "sha512-NY0bN/9FAnqp/wgHUnYI0GdlosSDNLZzxeRPzSfsVJboPXnl2oBdFttjB0eecgDecD599AvJCmDsz167tSfNsg==", + "license": "Apache-2.0", + "dependencies": { + "@orama/wc-components": "0.6.4", + "@stencil/react-output-target": "^0.8.2" + }, + "peerDependencies": { + "react": ">=17.0.0 <20.0.0", + "react-dom": ">=17.0.0 <20.0.0" + } + }, + "apps/site/node_modules/@orama/wc-components": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@orama/wc-components/-/wc-components-0.6.4.tgz", + "integrity": "sha512-FgzIYVVYQV4OPzWwjME2JHNkwh3Sz0vBnUKcrGWHFs4kcGoltl0Ym/dyzArCNZiGQ56NE5E+0xo5ZFbaA8FxBA==", + "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.27.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" + } + }, + "apps/site/node_modules/@orama/wc-components/node_modules/shiki": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "apps/site/node_modules/@shikijs/core": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "apps/site/node_modules/@shikijs/engine-javascript": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } + }, + "apps/site/node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "apps/site/node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "apps/site/node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "apps/site/node_modules/@shikijs/types": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "apps/site/node_modules/@stencil/core": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.27.0.tgz", + "integrity": "sha512-GOA+pvSpwL734yijTB8+LHesqPq3o/K6IaCrNoZybNVpe6lgVfvciDwPeP1XOj6JZpA/Lp8Uh3U9znoS8qgwOA==", + "license": "MIT", + "bin": { + "stencil": "bin/stencil" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.10.0" + } + }, "apps/site/node_modules/@typescript-eslint/eslint-plugin": { "version": "8.25.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", @@ -238,6 +366,36 @@ "typescript": ">=4.8.4 <5.8.0" } }, + "apps/site/node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, + "apps/site/node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "apps/site/node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "license": "MIT", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, "apps/site/node_modules/typescript": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", @@ -3284,6 +3442,15 @@ "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", "license": "BSD-3-Clause" }, + "node_modules/@lit/react": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.7.tgz", + "integrity": "sha512-cencnwwLXQKiKxjfFzSgZRngcWJzUDZi/04E0fSaF86wZgchMdvTyu+lE36DrUfvuus3bH8+xLPrhM1cTjwpzw==", + "license": "BSD-3-Clause", + "peerDependencies": { + "@types/react": "17 || 18 || 19" + } + }, "node_modules/@lit/reactive-element": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", @@ -4120,19 +4287,6 @@ "node": ">= 16.0.0" } }, - "node_modules/@orama/react-components": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@orama/react-components/-/react-components-0.5.1.tgz", - "integrity": "sha512-R6lLg9dIOdCkTPXDqGSxoQh1DQb02iR+5REiD27UTqv175Gvp6nOYav0hqIn/UQk8wIQPfUOO9A3T2U3T/iyKg==", - "license": "Apache-2.0", - "dependencies": { - "@orama/wc-components": "0.5.1" - }, - "peerDependencies": { - "react": ">=17.0.0 <20.0.0", - "react-dom": ">=17.0.0 <20.0.0" - } - }, "node_modules/@orama/switch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.1.3.tgz", @@ -4143,137 +4297,6 @@ "@oramacloud/client": "^2.1.1" } }, - "node_modules/@orama/wc-components": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@orama/wc-components/-/wc-components-0.5.1.tgz", - "integrity": "sha512-tA8wvx6YGaktjqDD5dY9VvCowVdjmatGhYy+fHp/nor2ezPXWilFyjll4q9HGK/v2Os2l9D0laXVptd4jX3pBQ==", - "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/@shikijs/core": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", - "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", - "license": "MIT", - "dependencies": { - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "node_modules/@orama/wc-components/node_modules/@shikijs/engine-javascript": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", - "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "^2.2.0" - } - }, - "node_modules/@orama/wc-components/node_modules/@shikijs/engine-oniguruma": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", - "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1" - } - }, - "node_modules/@orama/wc-components/node_modules/@shikijs/langs": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", - "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@orama/wc-components/node_modules/@shikijs/themes": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", - "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@orama/wc-components/node_modules/@shikijs/types": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", - "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@orama/wc-components/node_modules/oniguruma-to-es": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", - "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", - "license": "MIT", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" - } - }, - "node_modules/@orama/wc-components/node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/@orama/wc-components/node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", - "license": "MIT", - "dependencies": { - "regex": "^5.1.1", - "regex-utilities": "^2.3.0" - } - }, - "node_modules/@orama/wc-components/node_modules/shiki": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", - "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "1.29.2", - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/langs": "1.29.2", - "@shikijs/themes": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, "node_modules/@oramacloud/client": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-2.1.4.tgz", @@ -5081,7 +5104,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { "version": "4.34.9", @@ -5094,7 +5118,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { "version": "4.34.9", @@ -5107,7 +5132,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { "version": "4.34.9", @@ -5120,7 +5146,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.34.9", @@ -5133,7 +5160,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { "version": "4.34.9", @@ -5146,7 +5174,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-arm64-msvc": { "version": "4.34.9", @@ -5159,7 +5188,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-x64-msvc": { "version": "4.34.9", @@ -5172,7 +5202,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@rtsao/scc": { "version": "1.1.0", @@ -5299,6 +5330,7 @@ "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.28.2.tgz", "integrity": "sha512-sHwBNionxzHfmjQ93ffaQOBNvd5HrSn8e5KSsiBBaODgC/g9squZoARYHHJ0VFfUpOXkEoZQ+ASixpUBafG9bA==", "license": "MIT", + "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -5317,6 +5349,34 @@ "@rollup/rollup-win32-x64-msvc": "4.34.9" } }, + "node_modules/@stencil/react-output-target": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@stencil/react-output-target/-/react-output-target-0.8.2.tgz", + "integrity": "sha512-O7zRCfRbiPmxaW3oaPBB3RFOMQOuy1dfkcUUg+6en6NckrRzC2YEAzzo6iIkppDrPW34TJJRy/mqJUdlBPLJ1g==", + "license": "MIT", + "dependencies": { + "@lit/react": "^1.0.4", + "html-react-parser": "^5.1.10", + "style-object-to-css-string": "^1.0.0", + "ts-morph": "^22.0.0" + }, + "peerDependencies": { + "@stencil/core": ">=3 || >= 4.0.0-beta.0 || >= 4.0.0", + "react": "^18 || ^19", + "react-dom": "^18 || ^19" + }, + "peerDependenciesMeta": { + "@stencil/core": { + "optional": false + }, + "react": { + "optional": false + }, + "react-dom": { + "optional": false + } + } + }, "node_modules/@stencil/store": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.1.2.tgz", @@ -6418,6 +6478,33 @@ "node": ">= 10" } }, + "node_modules/@ts-morph/common": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.23.0.tgz", + "integrity": "sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.3", + "mkdirp": "^3.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -6727,7 +6814,6 @@ "version": "19.0.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", - "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -9120,6 +9206,12 @@ "node": ">= 0.12.0" } }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "license": "MIT" + }, "node_modules/collapse-white-space": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", @@ -9695,7 +9787,6 @@ "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": { @@ -10114,7 +10205,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, "funding": [ { "type": "github", @@ -13231,6 +13321,102 @@ "dev": true, "license": "ISC" }, + "node_modules/html-dom-parser": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-5.0.13.tgz", + "integrity": "sha512-B7JonBuAfG32I7fDouUQEogBrz3jK9gAuN1r1AaXpED6dIhtg/JwiSRhjGL7aOJwRz3HU4efowCjQBaoXiREqg==", + "license": "MIT", + "dependencies": { + "domhandler": "5.0.3", + "htmlparser2": "10.0.0" + } + }, + "node_modules/html-dom-parser/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", @@ -13290,6 +13476,42 @@ "node": ">=12" } }, + "node_modules/html-react-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-5.2.2.tgz", + "integrity": "sha512-yA5012CJGSFWYZsgYzfr6HXJgDap38/AEP4ra8Cw+WHIi2ZRDXRX/QVYdumRf1P8zKyScKd6YOrWYvVEiPfGKg==", + "license": "MIT", + "dependencies": { + "domhandler": "5.0.3", + "html-dom-parser": "5.0.13", + "react-property": "2.0.2", + "style-to-js": "1.1.16" + }, + "peerDependencies": { + "@types/react": "0.14 || 15 || 16 || 17 || 18 || 19", + "react": "0.14 || 15 || 16 || 17 || 18 || 19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/html-react-parser/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -20030,7 +20252,6 @@ "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" }, "node_modules/path-exists": { @@ -21088,6 +21309,12 @@ "dev": true, "license": "MIT" }, + "node_modules/react-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.2.tgz", + "integrity": "sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==", + "license": "MIT" + }, "node_modules/react-remove-scroll": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", @@ -23885,6 +24112,12 @@ "webpack": "^5.0.0" } }, + "node_modules/style-object-to-css-string": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/style-object-to-css-string/-/style-object-to-css-string-1.1.3.tgz", + "integrity": "sha512-bISQoUsir/qGfo7vY8rw00ia9nnyE1jvYt3zZ2jhdkcXZ6dAEi74inMzQ6On57vFI+I4Fck6wOv5UI9BEwJDgw==", + "license": "MIT" + }, "node_modules/style-to-js": { "version": "1.1.16", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", @@ -24981,6 +25214,16 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "license": "Apache-2.0" }, + "node_modules/ts-morph": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-22.0.0.tgz", + "integrity": "sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.23.0", + "code-block-writer": "^13.0.1" + } + }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", From 0b50d59822e8f43749cf861a1a568dc95c0ccc35 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 28 Mar 2025 11:18:44 -0400 Subject: [PATCH 0358/1385] fix(storybook): move `markdown.css` to `ui-components` (#7581) --- apps/site/styles/index.css | 1 - packages/ui-components/styles/index.css | 1 + {apps/site => packages/ui-components}/styles/markdown.css | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename {apps/site => packages/ui-components}/styles/markdown.css (100%) diff --git a/apps/site/styles/index.css b/apps/site/styles/index.css index 16329e91c8854..90893c40acc2f 100644 --- a/apps/site/styles/index.css +++ b/apps/site/styles/index.css @@ -7,6 +7,5 @@ */ @import '@node-core/ui-components/styles/index.css'; -@import './markdown.css'; @import './effects.css'; @import './locales.css'; diff --git a/packages/ui-components/styles/index.css b/packages/ui-components/styles/index.css index b5229b19a6b16..bdf2863ce16b5 100644 --- a/packages/ui-components/styles/index.css +++ b/packages/ui-components/styles/index.css @@ -11,3 +11,4 @@ @import 'tailwindcss/utilities'; @import './effects.css'; @import './base.css'; +@import './markdown.css'; diff --git a/apps/site/styles/markdown.css b/packages/ui-components/styles/markdown.css similarity index 100% rename from apps/site/styles/markdown.css rename to packages/ui-components/styles/markdown.css From 1b2acc42b39b347f40e04147271524b39c2507b4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Mar 2025 11:51:33 -0400 Subject: [PATCH 0359/1385] [automated]: crowdin sync (#7580) * 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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- .../site/pages/fr/about/get-involved/index.md | 35 +++++++++++++++++++ .../site/pages/ja/about/get-involved/index.md | 20 +++++------ apps/site/snippets/fr/download/nvm.bash | 5 ++- apps/site/snippets/ja/download/n.bash | 8 +++++ packages/i18n/locales/ja.json | 4 ++- 5 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 apps/site/pages/fr/about/get-involved/index.md create mode 100644 apps/site/snippets/ja/download/n.bash diff --git a/apps/site/pages/fr/about/get-involved/index.md b/apps/site/pages/fr/about/get-involved/index.md new file mode 100644 index 0000000000000..587b5bf7cbe85 --- /dev/null +++ b/apps/site/pages/fr/about/get-involved/index.md @@ -0,0 +1,35 @@ +--- +title: Impliquez-vous +layout: about +--- + +# Impliquez-vous + +Si vous souhaitez vous impliquer dans la communauté Node.js, il existe de nombreuses façons de le faire. Le projet Node.js est une communauté vaste et diversifiée, et il existe de nombreuses façons de contribuer, au-delà de l'écriture de code. + +## Discussions de la communauté + +- Le [dépôt Github `nodejs/node`](https://github.com/nodejs/node/issues) est l'endroit où l'on discute des fonctionnalités principales de Node.js et où l'on rapporte les problèmes. +- Le dépôt [`nodejs/help`](https://github.com/nodejs/help/issues) est l'endroit où poser des questions sur Node.js. +- Le [serveur Discord officiel de Node.js](/discord) est un endroit pour discuter avec d'autres développeurs Node.js et obtenir des nouvelles officielles du projet Node.js. +- Le [calendrier du projet Node.js](https://nodejs.org/calendar) avec toutes les réunions publiques de l'équipe. + +## Matériel d'apprentissage + +Si vous souhaitez en savoir plus sur Node.js, de nombreuses ressources sont à votre disposition. + +- [Matériel d'apprentissage officiel](https://nodejs.org/en/learn/) de Node.js. +- La [documentation officielle de référence de l'API](https://nodejs.org/api/) de Node.js. +- [NodeSchool.io](https://nodeschool.io/) vous enseignera les concepts de Node.js par le biais de jeux interactifs en ligne de commande. +- [Tag StackOverflow Node.js](https://stackoverflow.com/questions/tagged/node.js) contient un grand nombre de fils de discussion avec des ressources utiles. +- [Le tag Node.js de la communauté DEV](https://dev.to/t/node) contient des articles et du contenu en rapport avec Node.js. + +## Espaces de discussion non officiels + +Il existe plusieurs espaces de discussion non officiels si vous cherchez un endroit plus informel pour discuter de Node.js. +Veuillez noter que le projet Node.js ne les soutient pas officiellement. +Veuillez suivre leurs codes de conduite/règles respectifs. + +- [Node Slackers](https://www.nodeslackers.com/) est une communauté Slack axée sur Node.js. +- [OpenJSF Slack](https://slack-invite.openjsf.org/) est un espace de travail Slack pour la Fondation OpenJS. Il y a plusieurs canaux liés à Node.js. (les canaux préfixés par `#nodejs-` sont liés au projet). +- `irc.libera.chat` dans le canal `#node.js` avec un [client IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ou connectez-vous dans votre navigateur web au canal en utilisant [un client web](https://kiwiirc.com/nextclient/). diff --git a/apps/site/pages/ja/about/get-involved/index.md b/apps/site/pages/ja/about/get-involved/index.md index 79bcf319dbe0e..e852b4d07ad09 100644 --- a/apps/site/pages/ja/about/get-involved/index.md +++ b/apps/site/pages/ja/about/get-involved/index.md @@ -5,30 +5,28 @@ layout: about # 活動への参加 -Node.jsのコミュニティーへの参加の仕方にはさまざまな方法があります。Node.jsプロジェクトは大規模で多様なコミュニティーとなっているため、コードを書くこと以外にも貢献する方法はたくさんあります。 +Node.jsのコミュニティへの参加の仕方にはさまざまな方法があります。Node.jsプロジェクトは大規模で多様なコミュニティとなっているため、コードを書くこと以外にも貢献する方法はたくさんあります。 ## コミュニティーでの議論 -- [Node.js公式Discordサーバー](/discord)ではNode.js開発者とチャットしたりNode.jsプロジェクトからのニュースを知ることができます。 -- [GitHub issues](https://github.com/nodejs/node/issues)はNode.jsの主機能について議論する場となっています。Node.jsについて疑問がある場合は[github discussions](https://github.com/orgs/nodejs/discussions)も利用できます。 -- [`nodejs/help`](https://github.com/nodejs/help/issues)リポジトリーでもNode.jsに関する質問を受け付けています。 -- Node.jsの公式Twitterアカウントは[nodejs](https://twitter.com/nodejs)です。 +- [`nodejs/node` GitHubリポジトリー](https://github.com/nodejs/node/issues)は、Node.jsのコア機能や問題の報告を行うための場所です。 +- [`nodejs/help` GitHubリポジトリー](https://github.com/nodejs/help/issues)でもNode.jsに関する質問を受け付けています。 +- Node.jsの[公式Discordサーバー](/discord)ではNode.js開発者とチャットしたりNode.jsプロジェクトからのニュースを知ることができます。 - [Node.jsプロジェクトカレンダー](https://nodejs.org/calendar)では公開されている全ての会議を確認できます。 ## 学習教材 Node.jsについてもっと学びたい場合は、多数のリソースが利用できます。 -- Node.jsのウェブサイトに[公式の学習セクション](https://nodejs.org/en/learn/)があります。 -- [公式のAPIリファレンス](https://nodejs.org/api/) +- Node.jsの[公式学習資料](https://nodejs.org/ja/learn/)。 +- Node.jsの[公式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関連のトピックについてディスカッションしたり、フィードバックを求めたりする場になっています。どんなスキルレベルの方でも参加できます。 +- [StackOverflowのNode.jsタグ](https://stackoverflow.com/questions/tagged/node.js)には有用なリソースを含んだスレッドがたくさんあります。 +- [The DEV CommunityのNode.jsタグ](https://dev.to/t/node)にはNode.jsに関連した記事やコンテンツがあります。 ## 非公式な議論の場 -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-` で始まるチャンネル)_ diff --git a/apps/site/snippets/fr/download/nvm.bash b/apps/site/snippets/fr/download/nvm.bash index 35db0529a00f6..ec3eae4aabad2 100644 --- a/apps/site/snippets/fr/download/nvm.bash +++ b/apps/site/snippets/fr/download/nvm.bash @@ -1,5 +1,8 @@ # Télécharger et installer nvm : -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash + +# au lieu de redémarrer le shell +\. "$HOME/.nvm/nvm.sh" # Télécharger et installer Node.js : nvm install ${props.release.major} diff --git a/apps/site/snippets/ja/download/n.bash b/apps/site/snippets/ja/download/n.bash new file mode 100644 index 0000000000000..36959cc3c4eac --- /dev/null +++ b/apps/site/snippets/ja/download/n.bash @@ -0,0 +1,8 @@ +# nとNode.jsをダウンロードしてインストールする: +curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s ${props.release.major} + +# nのインストールによってNode.jsはインストールされますが、手動でインストールもできます: +# n install ${props.release.major} + +# Node.jsのバージョンを確認する: +node -v # "${props.release.versionWithPrefix}"が表示される。 diff --git a/packages/i18n/locales/ja.json b/packages/i18n/locales/ja.json index f805f8a0a762f..93431ff7009a1 100644 --- a/packages/i18n/locales/ja.json +++ b/packages/i18n/locales/ja.json @@ -119,7 +119,8 @@ "testRunner": "テストランナー", "introduction": "Node.jsのテストランナーの紹介", "usingTestRunner": "Node.jsのテストランナーを使用する", - "mocking": "テストでのモックの使い方" + "mocking": "テストでのモックの使い方", + "collectingCodeCoverage": "Node.jsでコードカバレッジを収集する" } } }, @@ -287,6 +288,7 @@ "choco": "ChocolateyはWIndows用のパッケージマネージャーです。", "devbox": "Devboxは隔離された再現可能な開発環境を構築します。", "docker": "Dockerはコンテナー化に関するプラットフォームです。", + "n": "\"n\"はクロスプラットフォームに対応したNode.jsのバージョンマネージャーです。", "volta": "\"Volta\"はクロスプラットフォームに対応したNode.jsのバージョンマネージャーです。" } } From 2ba295b0faa77c98c6b4b33c6c75fcd3003078e4 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 29 Mar 2025 20:08:39 -0400 Subject: [PATCH 0360/1385] chore(next-intl): update to v4 (#7583) --- apps/site/app/[locale]/layout.tsx | 6 +- apps/site/components/__mocks__/next-intl.mjs | 6 -- apps/site/package.json | 2 +- .../__tests__/localeProvider.test.mjs | 24 ------ apps/site/providers/localeProvider.tsx | 13 --- package-lock.json | 85 +++++++++++-------- 6 files changed, 53 insertions(+), 83 deletions(-) delete mode 100644 apps/site/providers/__tests__/localeProvider.test.mjs delete mode 100644 apps/site/providers/localeProvider.tsx diff --git a/apps/site/app/[locale]/layout.tsx b/apps/site/app/[locale]/layout.tsx index b1887eea5c80e..4b28313a7599b 100644 --- a/apps/site/app/[locale]/layout.tsx +++ b/apps/site/app/[locale]/layout.tsx @@ -1,13 +1,13 @@ import { Analytics } from '@vercel/analytics/react'; import { SpeedInsights } from '@vercel/speed-insights/next'; import classNames from 'classnames'; +import { NextIntlClientProvider } from 'next-intl'; import type { FC, PropsWithChildren } from 'react'; import BaseLayout from '@/layouts/Base'; import { VERCEL_ENV } from '@/next.constants.mjs'; import { IBM_PLEX_MONO, OPEN_SANS } from '@/next.fonts'; import { availableLocalesMap, defaultLocale } from '@/next.locales.mjs'; -import { LocaleProvider } from '@/providers/localeProvider'; import { ThemeProvider } from '@/providers/themeProvider'; import '@/styles/index.css'; @@ -29,11 +29,11 @@ const RootLayout: FC<RotLayoutProps> = async ({ children, params }) => { suppressHydrationWarning > <body suppressHydrationWarning> - <LocaleProvider> + <NextIntlClientProvider> <ThemeProvider> <BaseLayout>{children}</BaseLayout> </ThemeProvider> - </LocaleProvider> + </NextIntlClientProvider> <a rel="me" diff --git a/apps/site/components/__mocks__/next-intl.mjs b/apps/site/components/__mocks__/next-intl.mjs index de3411a1c164c..0a5c0c5b055a5 100644 --- a/apps/site/components/__mocks__/next-intl.mjs +++ b/apps/site/components/__mocks__/next-intl.mjs @@ -1,11 +1,5 @@ 'use strict'; -export const useMessages = () => ({}); - -export const useNow = () => new Date(); - -export const useTimeZone = () => 'Etc/UTC'; - export const useTranslations = () => { const t = key => key; diff --git a/apps/site/package.json b/apps/site/package.json index 8ec43dcee1088..c85c36fae5a9d 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -44,7 +44,7 @@ "glob": "~11.0.1", "gray-matter": "~4.0.3", "next": "15.2.3", - "next-intl": "~3.26.5", + "next-intl": "~4.0.2", "next-themes": "~0.4.4", "postcss": "~8.5.3", "postcss-calc": "~10.1.1", diff --git a/apps/site/providers/__tests__/localeProvider.test.mjs b/apps/site/providers/__tests__/localeProvider.test.mjs deleted file mode 100644 index d661d70afe90f..0000000000000 --- a/apps/site/providers/__tests__/localeProvider.test.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { render } from '@testing-library/react'; - -import { LocaleProvider } from '@/providers/localeProvider'; - -jest.mock('next-intl', () => ({ - useMessages: jest.fn(() => ({ 'en-US': { greeting: 'Hello!' } })), - NextIntlClientProvider: ({ children }) => children, - useTimeZone: jest.fn(() => 'UTC'), -})); - -describe('LocaleProvider', () => { - it('renders children with messages and timeZone', () => { - const { getByText } = render( - <LocaleProvider> - <div>Child Component</div> - </LocaleProvider> - ); - - expect(getByText('Child Component')).toBeInTheDocument(); - - expect(require('next-intl').useMessages).toHaveBeenCalled(); - expect(require('next-intl').useTimeZone).toHaveBeenCalled(); - }); -}); diff --git a/apps/site/providers/localeProvider.tsx b/apps/site/providers/localeProvider.tsx deleted file mode 100644 index e523854e0e491..0000000000000 --- a/apps/site/providers/localeProvider.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { useMessages, NextIntlClientProvider, useTimeZone } from 'next-intl'; -import type { FC, PropsWithChildren } from 'react'; - -export const LocaleProvider: FC<PropsWithChildren> = ({ children }) => { - const messages = useMessages(); - const timezone = useTimeZone(); - - return ( - <NextIntlClientProvider messages={messages} timeZone={timezone}> - {children} - </NextIntlClientProvider> - ); -}; diff --git a/package-lock.json b/package-lock.json index c5dc084195255..bde1e7f0ce196 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,7 +58,7 @@ "glob": "~11.0.1", "gray-matter": "~4.0.3", "next": "15.2.3", - "next-intl": "~3.26.5", + "next-intl": "~4.0.2", "next-themes": "~0.4.4", "postcss": "~8.5.3", "postcss-calc": "~10.1.1", @@ -366,6 +366,47 @@ "typescript": ">=4.8.4 <5.8.0" } }, + "apps/site/node_modules/next-intl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-4.0.2.tgz", + "integrity": "sha512-3cKVflwdrqxCOvAL+DtGN68qR802i0PEj0dttkAD5IK5XxOjugQs4yU8aSakvPMbkOrhEJ+89z5lG2EAqi7Gkw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/amannn" + } + ], + "license": "MIT", + "dependencies": { + "@formatjs/intl-localematcher": "^0.5.4", + "negotiator": "^1.0.0", + "use-intl": "^4.0.2" + }, + "peerDependencies": { + "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "apps/site/node_modules/next-intl/node_modules/use-intl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-4.0.2.tgz", + "integrity": "sha512-6RAP/5KJMRzLMLS25/BVh2u09cRK8S6HRGc1RnZvqR547qAKZCpjYylOqMPU9eNIirAiKoGmsoUPa7JrlaA/yg==", + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "^2.2.0", + "@schummar/icu-type-parser": "1.21.5", + "intl-messageformat": "^10.5.14" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" + } + }, "apps/site/node_modules/oniguruma-to-es": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", @@ -400,7 +441,7 @@ "version": "5.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -5231,6 +5272,12 @@ "tailwindcss": "^3.0.1" } }, + "node_modules/@schummar/icu-type-parser": { + "version": "1.21.5", + "resolved": "https://registry.npmjs.org/@schummar/icu-type-parser/-/icu-type-parser-1.21.5.tgz", + "integrity": "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==", + "license": "MIT" + }, "node_modules/@shikijs/core": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.1.0.tgz", @@ -19534,27 +19581,6 @@ } } }, - "node_modules/next-intl": { - "version": "3.26.5", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.26.5.tgz", - "integrity": "sha512-EQlCIfY0jOhRldiFxwSXG+ImwkQtDEfQeSOEQp6ieAGSLWGlgjdb/Ck/O7wMfC430ZHGeUKVKax8KGusTPKCgg==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/amannn" - } - ], - "license": "MIT", - "dependencies": { - "@formatjs/intl-localematcher": "^0.5.4", - "negotiator": "^1.0.0", - "use-intl": "^3.26.5" - }, - "peerDependencies": { - "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" - } - }, "node_modules/next-themes": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", @@ -26185,19 +26211,6 @@ } } }, - "node_modules/use-intl": { - "version": "3.26.5", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.26.5.tgz", - "integrity": "sha512-OdsJnC/znPvHCHLQH/duvQNXnP1w0hPfS+tkSi3mAbfjYBGh4JnyfdwkQBfIVf7t8gs9eSX/CntxUMvtKdG2MQ==", - "license": "MIT", - "dependencies": { - "@formatjs/fast-memoize": "^2.2.0", - "intl-messageformat": "^10.5.14" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" - } - }, "node_modules/use-sidecar": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", From 37bdbaab6997fea23cbe2f383e27df5bc7b3cb06 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 30 Mar 2025 15:00:35 -0400 Subject: [PATCH 0361/1385] chore(actions): update chromaui (#7584) Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/lint-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 86995c912fe6b..c9cdcb982393c 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -202,7 +202,7 @@ jobs: startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 - uses: chromaui/action@30b6228aa809059d46219e0f556752e8672a7e26 + uses: chromaui/action@c93e0bc3a63aa176e14a75b61a31847cbfdd341c with: workingDir: packages/ui-components buildScriptName: storybook:build From 92a16a93d6ba678afcfcfd6e3192122a74d2650f Mon Sep 17 00:00:00 2001 From: Matteo Collina <hello@matteocollina.com> Date: Tue, 1 Apr 2025 05:24:05 +0200 Subject: [PATCH 0362/1385] Add March 2025 CI incident blog post (#7588) Signed-off-by: Matteo Collina <hello@matteocollina.com> --- .../vulnerability/march-2025-ci-incident.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md diff --git a/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md b/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md new file mode 100644 index 0000000000000..635daabd05051 --- /dev/null +++ b/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md @@ -0,0 +1,21 @@ +--- +date: '2025-03-31T16:30:00.617Z' +category: vulnerability +title: Node.js Test CI Security Incident +layout: blog-post +author: Node.js Technical Steering Committee +--- + +On March 21st, the Node.js project received a security report regarding our development infrastructure via [our bug bounty program](https://hackerone.com/nodejs). We immediately restricted access while implementing corrective actions. + +The reported issue did not impact the Node.js runtime and there is no risk to users of Node.js. No action by Node.js users is required. + +The development infrastructure is expected to be available to the community by April 15 or sooner. + +A full report of this incident will be available forthcoming. We appreciate the time investment from our amazing volunteers who assisted in this response. + +## Contact and future updates + +The current Node.js security policy can be found at [https://nodejs.org/security/](/security/). Please follow the process outlined in <https://github.com/nodejs/node/security/policy> if you wish to report a vulnerability in Node.js. + +Subscribe to the low-volume announcement-only nodejs-sec mailing list at <https://groups.google.com/forum/#!forum/nodejs-sec> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the nodejs GitHub organization. From c3411eb467de972bdb8d7d1c1f6a66a2a3a9433a Mon Sep 17 00:00:00 2001 From: shubham oulkar <91728992+ShubhamOulkar@users.noreply.github.com> Date: Tue, 1 Apr 2025 14:49:34 +0530 Subject: [PATCH 0363/1385] fix(header): set `tabIndex` to `-1` (#7586) fix header tabbing sequence --- packages/ui-components/Containers/NavBar/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/ui-components/Containers/NavBar/index.tsx b/packages/ui-components/Containers/NavBar/index.tsx index c4aed01904dbf..f267100d6a797 100644 --- a/packages/ui-components/Containers/NavBar/index.tsx +++ b/packages/ui-components/Containers/NavBar/index.tsx @@ -68,6 +68,7 @@ const NavBar: FC<PropsWithChildren<NavbarProps>> = ({ type="checkbox" onChange={e => setIsMenuOpen(() => e.target.checked)} aria-label={sidebarItemTogglerAriaLabel} + tabIndex={-1} /> <div className={`${style.main} peer-checked:flex`}> From 913bfff0f93c4774ed151f84148f4e2644408cc4 Mon Sep 17 00:00:00 2001 From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Date: Tue, 1 Apr 2025 13:10:46 +0200 Subject: [PATCH 0364/1385] feat(learn): organise TypeScript articles from simplest to advanced usage (#7465) * feat(learn): organise TypeScript articles from simplest to advanced usage * fixup! Co-authored-by: Steven <steven@ceriously.com> Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Aviv Keller <me@aviv.sh> Co-authored-by: Steven <steven@ceriously.com> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- apps/site/navigation.json | 12 ++++++------ apps/site/pages/en/learn/typescript/run-natively.md | 6 ++---- apps/site/pages/en/learn/typescript/run.md | 2 +- apps/site/pages/en/learn/typescript/transpile.md | 2 +- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/apps/site/navigation.json b/apps/site/navigation.json index 87faeab6e3cfa..a764220103b07 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -211,17 +211,17 @@ "link": "/learn/typescript/introduction", "label": "components.navigation.learn.typescript.links.introduction" }, - "transpile": { - "link": "/learn/typescript/transpile", - "label": "components.navigation.learn.typescript.links.transpile" + "runNatively": { + "link": "/learn/typescript/run-natively", + "label": "components.navigation.learn.typescript.links.runNatively" }, "run": { "link": "/learn/typescript/run", "label": "components.navigation.learn.typescript.links.run" }, - "runNatively": { - "link": "/learn/typescript/run-natively", - "label": "components.navigation.learn.typescript.links.runNatively" + "transpile": { + "link": "/learn/typescript/transpile", + "label": "components.navigation.learn.typescript.links.transpile" }, "publishingTSPackage": { "link": "/learn/typescript/publishing-a-ts-package", diff --git a/apps/site/pages/en/learn/typescript/run-natively.md b/apps/site/pages/en/learn/typescript/run-natively.md index 773f0201077d0..f1da8de175753 100644 --- a/apps/site/pages/en/learn/typescript/run-natively.md +++ b/apps/site/pages/en/learn/typescript/run-natively.md @@ -4,11 +4,9 @@ layout: learn authors: AugustinMauroy, khaosdoctor, jakebailey, robpalme --- -> **⚠️WARNING⚠️:** All content in this article uses Node.js experimental features. Please make sure you are using a version of Node.js that supports the features mentioned in this article. And remember that experimental features can change in future versions of Node.js. - # Running TypeScript Natively -In the previous articles, we learned how to run TypeScript code using transpilation and with a runner. In this article, we will learn how to run TypeScript code using Node.js itself. +Since v23.6.0, Node.js enables "type stripping" by default. If you are using v23.6.0 or later and your source code contains only [erasable typescript syntax](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8-beta/#the---erasablesyntaxonly-option), you do not need this article. ## Running TypeScript code with Node.js @@ -28,7 +26,7 @@ In V22.7.0 this experimental support was extended to transform TypeScript-only s node --experimental-transform-types another-example.ts ``` -From V23 onwards, the `--experimental-strip-types` flag is enabled by default (you can disable it via the [`--no-experimental-strip-types`](https://nodejs.org/docs/latest-v23.x/api/cli.html#--no-experimental-strip-types) flag), enabling you to run any supported syntax, so running files like the one below with `node file.ts` is supported: +From v23.6.0 onwards, type stripping is enabled by default (you can disable it via [`--no-experimental-strip-types`](https://nodejs.org/docs/latest-v23.x/api/cli.html#--no-experimental-strip-types)), enabling you to run any supported syntax, so running files like the one below with `node file.ts` is supported: ```ts function foo(bar: number): string { diff --git a/apps/site/pages/en/learn/typescript/run.md b/apps/site/pages/en/learn/typescript/run.md index 15e7869ae6ef2..bf74775fbae5e 100644 --- a/apps/site/pages/en/learn/typescript/run.md +++ b/apps/site/pages/en/learn/typescript/run.md @@ -6,7 +6,7 @@ authors: AugustinMauroy # Running TypeScript with a runner -In the previous article, we learned how to run TypeScript code using transpilation. In this article, we will learn how to run TypeScript code using a runner. +If you want more advanced processing of TypeScript than the built-in support (or you're using Node.js prior to v22.7.0), you have 2 options: use a runner (which handles much of the complexity for you), or handle it all yourself via [transpilation](./transpile.md). ## Running TypeScript code with `ts-node` diff --git a/apps/site/pages/en/learn/typescript/transpile.md b/apps/site/pages/en/learn/typescript/transpile.md index 4f39ac23412eb..0d97d01e0cad2 100644 --- a/apps/site/pages/en/learn/typescript/transpile.md +++ b/apps/site/pages/en/learn/typescript/transpile.md @@ -6,7 +6,7 @@ authors: AugustinMauroy # Running TypeScript code using transpilation -Transpilation is the process of converting source code from one language to another. In the case of TypeScript, it's the process of converting TypeScript code to JavaScript code. This is necessary because browsers and Node.js can't run TypeScript code directly. +Transpilation is the process of converting source code from one language to another. In the case of TypeScript, it's the process of converting TypeScript code to JavaScript code. This is necessary because browsers and Node.js don't run TypeScript code directly. ## Compiling TypeScript to JavaScript From 57b6819ec04458aac233b8af6122a2d88b4a82df Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 1 Apr 2025 08:22:52 -0400 Subject: [PATCH 0365/1385] chore: remove dead code (#7587) * chore: remove dead code * fixup! --- .github/dependabot.yml | 1 - apps/site/components/Common/ActiveLink.tsx | 14 - .../components/__mocks__/client-context.mjs | 11 - apps/site/components/__mocks__/next-image.mjs | 4 - apps/site/components/withRouterSelect.tsx | 31 -- apps/site/next.constants.mjs | 9 - apps/site/next.helpers.mjs | 16 - apps/site/package.json | 1 - apps/site/types/frontmatter.ts | 12 - apps/site/types/og.ts | 3 - package-lock.json | 280 +++++++++++++++--- 11 files changed, 236 insertions(+), 146 deletions(-) delete mode 100644 apps/site/components/Common/ActiveLink.tsx delete mode 100644 apps/site/components/__mocks__/client-context.mjs delete mode 100644 apps/site/components/__mocks__/next-image.mjs delete mode 100644 apps/site/components/withRouterSelect.tsx delete mode 100644 apps/site/types/og.ts diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4e544ad9176c2..66a76c9bbbd01 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -45,7 +45,6 @@ updates: next-js: patterns: - 'next' - - 'eslint-config-next' - '@next/eslint-plugin-next' - 'next-*' - '@vercel/*' diff --git a/apps/site/components/Common/ActiveLink.tsx b/apps/site/components/Common/ActiveLink.tsx deleted file mode 100644 index 63f6b2f2e16eb..0000000000000 --- a/apps/site/components/Common/ActiveLink.tsx +++ /dev/null @@ -1,14 +0,0 @@ -'use client'; - -import type { ActiveLocalizedLinkProps } from '@node-core/ui-components/Common/BaseActiveLink'; -import BaseActiveLink from '@node-core/ui-components/Common/BaseActiveLink'; -import type { FC } from 'react'; - -import Link from '@/components/Link'; -import { usePathname } from '@/navigation.mjs'; - -const ActiveLink: FC< - Omit<ActiveLocalizedLinkProps, 'pathname' | 'as'> -> = props => <BaseActiveLink pathname={usePathname()} as={Link} {...props} />; - -export default ActiveLink; diff --git a/apps/site/components/__mocks__/client-context.mjs b/apps/site/components/__mocks__/client-context.mjs deleted file mode 100644 index a656201f90ff0..0000000000000 --- a/apps/site/components/__mocks__/client-context.mjs +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -export const getClientContext = () => ({ - frontmatter: '', - pathname: '', - headings: [], - readingTime: {}, - filename: '', -}); - -export const setClientContext = () => void null; diff --git a/apps/site/components/__mocks__/next-image.mjs b/apps/site/components/__mocks__/next-image.mjs deleted file mode 100644 index 0d95c0b2b4f32..0000000000000 --- a/apps/site/components/__mocks__/next-image.mjs +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -// eslint-disable-next-line @next/next/no-img-element -export default props => <img {...props} />; diff --git a/apps/site/components/withRouterSelect.tsx b/apps/site/components/withRouterSelect.tsx deleted file mode 100644 index 7c526a8f4011c..0000000000000 --- a/apps/site/components/withRouterSelect.tsx +++ /dev/null @@ -1,31 +0,0 @@ -'use client'; - -import Select from '@node-core/ui-components/Common/Select'; -import type { ComponentProps, FC } from 'react'; - -import { useRouter } from '@/navigation.mjs'; - -type WithSidebarSelectProps = Pick< - ComponentProps<typeof Select>, - 'values' | 'defaultValue' | 'label' ->; - -const WithRouterSelect: FC<WithSidebarSelectProps> = ({ - values, - label, - defaultValue, -}) => { - const { push } = useRouter(); - - return ( - <Select - inline={true} - label={label} - values={values} - defaultValue={defaultValue} - onChange={value => push(value)} - /> - ); -}; - -export default WithRouterSelect; diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index cf310a9b3452a..52439c1454bee 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -100,15 +100,6 @@ export const NEXT_DATA_URL = process.env.NEXT_PUBLIC_DATA_URL ? `${BASE_URL}${BASE_PATH}/en/next-data/` : `http://localhost:${process.env.PORT ?? 3000}/en/next-data/`; -/** - * This ReGeX is used to remove the `index.md(x)` suffix of a name and to remove - * the `.md(x)` extensions of a filename. - * - * This RegEx is used to transform the file system pathnames into acceptable - * Route Segments for Next.js Dynamic Routes on `pages/[...path].tsx` - */ -export const MD_EXTENSION_REGEX = /((\/)?(index))?\.mdx?$/i; - /** * This is the default type of blog post type that we use for OG Meta Tags */ diff --git a/apps/site/next.helpers.mjs b/apps/site/next.helpers.mjs index e4cb68533d1e9..272424cf77152 100644 --- a/apps/site/next.helpers.mjs +++ b/apps/site/next.helpers.mjs @@ -13,22 +13,6 @@ import { glob } from 'glob'; * @type {Map<string, Promise<string>>} */ const globCacheByPath = new Map(); -export const getMatchingRoutes = (route = '', matches = []) => - matches.some(match => route === match); - -/** - * This method is responsible for reading all immediate subdirectories of a directory - * - * @param {string} root the root directory to search from - * @param {string} cwd the current working directory - * @returns {Promise<Array<string>>} a promise containing an array of directories - */ -export const getDirectories = async (root, cwd) => { - return glob('*', { root, cwd, withFileTypes: true }) - .then(d => d.filter(e => e.isDirectory())) - .then(d => d.map(e => e.name)); -}; - /** * This gets the relative path from `import.meta.url` * diff --git a/apps/site/package.json b/apps/site/package.json index c85c36fae5a9d..2efde6c5d47b3 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -26,7 +26,6 @@ "@node-core/ui-components": "*", "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", - "@opentelemetry/api": "1.9.0", "@orama/react-components": "^0.6.4", "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.1.2", diff --git a/apps/site/types/frontmatter.ts b/apps/site/types/frontmatter.ts index 05723506e6bb0..4c50ff0d778cd 100644 --- a/apps/site/types/frontmatter.ts +++ b/apps/site/types/frontmatter.ts @@ -8,15 +8,3 @@ export interface LegacyFrontMatter extends Record<string, any> { labels?: Record<string, string>; authors?: string; } - -// @TODO: Extra data from Frontmatter should not be a thing in the future -export interface LegacyBlogFrontMatter extends LegacyFrontMatter { - author: string; - date: string; -} - -// @TODO: Extra data from Frontmatter should not be a thing in the future -export interface LegacyDownloadsFrontMatter extends LegacyFrontMatter { - downloads: Record<string, string>; - additional: Record<string, string>; -} diff --git a/apps/site/types/og.ts b/apps/site/types/og.ts deleted file mode 100644 index bc92f7b233678..0000000000000 --- a/apps/site/types/og.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { SVGProps } from 'react'; - -export type TailwindSVG = SVGProps<SVGSVGElement> & { tw?: string }; diff --git a/package-lock.json b/package-lock.json index bde1e7f0ce196..e9e317edd61cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,6 @@ "@node-core/ui-components": "*", "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", - "@opentelemetry/api": "1.9.0", "@orama/react-components": "^0.6.4", "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.1.2", @@ -4128,6 +4127,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -6948,17 +6948,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.27.0.tgz", - "integrity": "sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz", + "integrity": "sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.27.0", - "@typescript-eslint/type-utils": "8.27.0", - "@typescript-eslint/utils": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/type-utils": "8.28.0", + "@typescript-eslint/utils": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -6978,14 +6978,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", - "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", + "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0" + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6996,9 +6996,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", - "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", + "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", "dev": true, "license": "MIT", "engines": { @@ -7009,14 +7009,65 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", + "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.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": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", + "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", - "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", + "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/types": "8.28.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -7041,16 +7092,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.27.0.tgz", - "integrity": "sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz", + "integrity": "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.27.0", - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/typescript-estree": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", "debug": "^4.3.4" }, "engines": { @@ -7066,14 +7117,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", - "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", + "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0" + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7084,27 +7135,54 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", - "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", + "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", + "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/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", + "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.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": "^2.0.1" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", - "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", + "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/types": "8.28.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -7147,15 +7225,75 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.27.0.tgz", - "integrity": "sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz", + "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/utils": "8.28.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", + "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.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/type-utils/node_modules/@typescript-eslint/types": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", + "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", + "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/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", + "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.27.0", - "@typescript-eslint/utils": "8.27.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.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": "^2.0.1" }, "engines": { @@ -7165,11 +7303,65 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", + "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.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", "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", + "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "eslint-visitor-keys": "^4.2.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/type-utils/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/@typescript-eslint/types": { "version": "8.25.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.25.0.tgz", From 523019763c69682bcbdb85c75c6c5237594212d4 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Tue, 1 Apr 2025 16:35:19 +0200 Subject: [PATCH 0366/1385] Blog: v23.11.0 release post (#7606) Refs: https://github.com/nodejs/node/pull/57694 --- apps/site/pages/en/blog/release/v23.11.0.md | 187 ++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.11.0.md diff --git a/apps/site/pages/en/blog/release/v23.11.0.md b/apps/site/pages/en/blog/release/v23.11.0.md new file mode 100644 index 0000000000000..459fd271684c0 --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.11.0.md @@ -0,0 +1,187 @@ +--- +date: '2025-04-01T14:27:44.156Z' +category: release +title: Node v23.11.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-04-01, Version 23.11.0 (Current), @aduh95 + +### Notable Changes + +- \[[`64b086740a`](https://github.com/nodejs/node/commit/64b086740a)] - **(SEMVER-MINOR)** **assert**: implement partial error comparison (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`053cef70e0`](https://github.com/nodejs/node/commit/053cef70e0)] - **(SEMVER-MINOR)** **crypto**: add optional callback to `crypto.diffieHellman` (Filip Skokan) [#57274](https://github.com/nodejs/node/pull/57274) +- \[[`f8aff90235`](https://github.com/nodejs/node/commit/f8aff90235)] - **(SEMVER-MINOR)** **process**: add `execve` (Paolo Insogna) [#56496](https://github.com/nodejs/node/pull/56496) +- \[[`4b04c92d7d`](https://github.com/nodejs/node/commit/4b04c92d7d)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype.columns()` (Colin Ihrig) [#57490](https://github.com/nodejs/node/pull/57490) +- \[[`1b8d1d3a3a`](https://github.com/nodejs/node/commit/1b8d1d3a3a)] - **(SEMVER-MINOR)** **util**: expose diff function used by the assertion errors (Giovanni Bucci) [#57462](https://github.com/nodejs/node/pull/57462) + +### Commits + +- \[[`7b72396c8b`](https://github.com/nodejs/node/commit/7b72396c8b)] - **assert**: improve partialDeepStrictEqual performance (Ruben Bridgewater) [#57509](https://github.com/nodejs/node/pull/57509) +- \[[`64b086740a`](https://github.com/nodejs/node/commit/64b086740a)] - **(SEMVER-MINOR)** **assert**: implement partial error comparison (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`f694d7de0e`](https://github.com/nodejs/node/commit/f694d7de0e)] - **(SEMVER-MINOR)** **assert**: improve partialDeepStrictEqual (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`80d9d5653f`](https://github.com/nodejs/node/commit/80d9d5653f)] - **(SEMVER-MINOR)** **assert,util**: improve performance (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`d52a71f832`](https://github.com/nodejs/node/commit/d52a71f832)] - **(SEMVER-MINOR)** **benchmark**: adjust assert runtimes (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`7592cf4cd7`](https://github.com/nodejs/node/commit/7592cf4cd7)] - **(SEMVER-MINOR)** **benchmark**: skip running some assert benchmarks by default (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`e4cc54a746`](https://github.com/nodejs/node/commit/e4cc54a746)] - **(SEMVER-MINOR)** **benchmark**: add assert partialDeepStrictEqual benchmark (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`de48407011`](https://github.com/nodejs/node/commit/de48407011)] - **build**: fix update-wpt workflow (Jonas) [#57468](https://github.com/nodejs/node/pull/57468) +- \[[`52cd0954f9`](https://github.com/nodejs/node/commit/52cd0954f9)] - **cli**: clarify --cpu-prof-name allowed values (Eugenio Ceschia) [#57433](https://github.com/nodejs/node/pull/57433) +- \[[`7611fc14de`](https://github.com/nodejs/node/commit/7611fc14de)] - **crypto**: fix output of privateDecrypt with zero-length data (Filip Skokan) [#57575](https://github.com/nodejs/node/pull/57575) +- \[[`cc42ee8fc7`](https://github.com/nodejs/node/commit/cc42ee8fc7)] - **crypto**: ensure expected JWK alg in SubtleCrypto.importKey RSA imports (Filip Skokan) [#57450](https://github.com/nodejs/node/pull/57450) +- \[[`053cef70e0`](https://github.com/nodejs/node/commit/053cef70e0)] - **(SEMVER-MINOR)** **crypto**: add optional callback to crypto.diffieHellman (Filip Skokan) [#57274](https://github.com/nodejs/node/pull/57274) +- \[[`1f08864fd7`](https://github.com/nodejs/node/commit/1f08864fd7)] - **debugger**: fix behavior of plain object exec in debugger repl (Dario Piotrowicz) [#57498](https://github.com/nodejs/node/pull/57498) +- \[[`162b2828eb`](https://github.com/nodejs/node/commit/162b2828eb)] - **deps**: update undici to 6.21.2 (Matteo Collina) [#57442](https://github.com/nodejs/node/pull/57442) +- \[[`43bea6bb80`](https://github.com/nodejs/node/commit/43bea6bb80)] - **deps**: V8: cherry-pick c172ffc5bf54 (Choongwoo Han) [#57437](https://github.com/nodejs/node/pull/57437) +- \[[`99f93afb9d`](https://github.com/nodejs/node/commit/99f93afb9d)] - **deps**: update ada to v3.2.1 (Yagiz Nizipli) [#57429](https://github.com/nodejs/node/pull/57429) +- \[[`30e5658f12`](https://github.com/nodejs/node/commit/30e5658f12)] - **deps**: update googletest to 0bdccf4 (Node.js GitHub Bot) [#57380](https://github.com/nodejs/node/pull/57380) +- \[[`573467c070`](https://github.com/nodejs/node/commit/573467c070)] - **deps**: update acorn to 8.14.1 (Node.js GitHub Bot) [#57382](https://github.com/nodejs/node/pull/57382) +- \[[`affeaac0c7`](https://github.com/nodejs/node/commit/affeaac0c7)] - **doc**: add gurgunday as triager (Gürgün Dayıoğlu) [#57594](https://github.com/nodejs/node/pull/57594) +- \[[`4ed1a098f5`](https://github.com/nodejs/node/commit/4ed1a098f5)] - **doc**: clarify behaviour of node-api adjust function (Michael Dawson) [#57463](https://github.com/nodejs/node/pull/57463) +- \[[`921041b284`](https://github.com/nodejs/node/commit/921041b284)] - **doc**: remove Corepack documentation (Antoine du Hamel) [#57635](https://github.com/nodejs/node/pull/57635) +- \[[`99dbd8b391`](https://github.com/nodejs/node/commit/99dbd8b391)] - **doc**: remove mention of `--require` not supporting ES modules (Huáng Jùnliàng) [#57620](https://github.com/nodejs/node/pull/57620) +- \[[`8c76b2949e`](https://github.com/nodejs/node/commit/8c76b2949e)] - **doc**: mention reports should align with Node.js CoC (Rafael Gonzaga) [#57607](https://github.com/nodejs/node/pull/57607) +- \[[`ee1c78a7a3`](https://github.com/nodejs/node/commit/ee1c78a7a3)] - **doc**: add section stating that very stale PRs should be closed (Dario Piotrowicz) [#57541](https://github.com/nodejs/node/pull/57541) +- \[[`595e9e5ad6`](https://github.com/nodejs/node/commit/595e9e5ad6)] - **doc**: add bjohansebas as triager (Sebastian Beltran) [#57564](https://github.com/nodejs/node/pull/57564) +- \[[`3742d2a198`](https://github.com/nodejs/node/commit/3742d2a198)] - **doc**: update support channels (Claudio W.) [#57538](https://github.com/nodejs/node/pull/57538) +- \[[`717c44dead`](https://github.com/nodejs/node/commit/717c44dead)] - **doc**: make stability labels more consistent (Antoine du Hamel) [#57516](https://github.com/nodejs/node/pull/57516) +- \[[`b4576a6f57`](https://github.com/nodejs/node/commit/b4576a6f57)] - **doc**: remove cryptoStream API reference (Jonas) [#57579](https://github.com/nodejs/node/pull/57579) +- \[[`2c4f894036`](https://github.com/nodejs/node/commit/2c4f894036)] - **doc**: module resolution pseudocode corrections (Marcel Laverdet) [#57080](https://github.com/nodejs/node/pull/57080) +- \[[`c45894f90c`](https://github.com/nodejs/node/commit/c45894f90c)] - **doc**: add history entry for DEP0190 in `child_process.md` (Antoine du Hamel) [#57544](https://github.com/nodejs/node/pull/57544) +- \[[`c21068b696`](https://github.com/nodejs/node/commit/c21068b696)] - **doc**: remove deprecated pattern in `child_process.md` (Antoine du Hamel) [#57568](https://github.com/nodejs/node/pull/57568) +- \[[`87e0dda352`](https://github.com/nodejs/node/commit/87e0dda352)] - **doc**: mark multiple experimental APIS as stable (James M Snell) [#57510](https://github.com/nodejs/node/pull/57510) +- \[[`d637763e4e`](https://github.com/nodejs/node/commit/d637763e4e)] - **doc**: remove mertcanaltin from Triagers (Mert Can Altin) [#57531](https://github.com/nodejs/node/pull/57531) +- \[[`ee6025495d`](https://github.com/nodejs/node/commit/ee6025495d)] - **doc**: recommend watching the collaborators repo in the onboarding doc (Darshan Sen) [#57527](https://github.com/nodejs/node/pull/57527) +- \[[`706b64638b`](https://github.com/nodejs/node/commit/706b64638b)] - **doc**: remove mention of visa fees from onboarding doc (Darshan Sen) [#57526](https://github.com/nodejs/node/pull/57526) +- \[[`176d951bd0`](https://github.com/nodejs/node/commit/176d951bd0)] - **doc**: deprecate passing `args` to `spawn` and `execFile` (Antoine du Hamel) [#57389](https://github.com/nodejs/node/pull/57389) +- \[[`5c05ba119b`](https://github.com/nodejs/node/commit/5c05ba119b)] - **doc**: remove some inconsistencies in `deprecations.md` (Antoine du Hamel) [#57512](https://github.com/nodejs/node/pull/57512) +- \[[`9d5be4bb8c`](https://github.com/nodejs/node/commit/9d5be4bb8c)] - **doc**: run license-builder (github-actions\[bot]) [#57511](https://github.com/nodejs/node/pull/57511) +- \[[`273607edb4`](https://github.com/nodejs/node/commit/273607edb4)] - **doc**: add new writing-docs contributing md (Dario Piotrowicz) [#57502](https://github.com/nodejs/node/pull/57502) +- \[[`e28c723f24`](https://github.com/nodejs/node/commit/e28c723f24)] - **doc**: add node.js streams references to Web Streams doc (Dario Piotrowicz) [#57393](https://github.com/nodejs/node/pull/57393) +- \[[`47296492ba`](https://github.com/nodejs/node/commit/47296492ba)] - **doc**: replace NOTEs that do not render properly (Colin Ihrig) [#57484](https://github.com/nodejs/node/pull/57484) +- \[[`db9c37f792`](https://github.com/nodejs/node/commit/db9c37f792)] - **doc**: prefer to sign commits under nodejs repository (Rafael Gonzaga) [#57311](https://github.com/nodejs/node/pull/57311) +- \[[`e5e3987ae7`](https://github.com/nodejs/node/commit/e5e3987ae7)] - **doc**: fixed the incorrect splitting of multiple words (letianpailove) [#57454](https://github.com/nodejs/node/pull/57454) +- \[[`91a824e43b`](https://github.com/nodejs/node/commit/91a824e43b)] - **doc**: add review guidelines for collaborator nominations (Antoine du Hamel) [#57449](https://github.com/nodejs/node/pull/57449) +- \[[`2a5fcb2172`](https://github.com/nodejs/node/commit/2a5fcb2172)] - **doc**: fix typo in `url.md` (Allon Murienik) [#57467](https://github.com/nodejs/node/pull/57467) +- \[[`17ccf9282f`](https://github.com/nodejs/node/commit/17ccf9282f)] - **doc**: add history info for --use-system-ca (Darshan Sen) [#57432](https://github.com/nodejs/node/pull/57432) +- \[[`9adaaeb965`](https://github.com/nodejs/node/commit/9adaaeb965)] - **doc**: remove typo YAML snippet from tls.getCACertificates doc (Darshan Sen) [#57459](https://github.com/nodejs/node/pull/57459) +- \[[`ee4e855f8e`](https://github.com/nodejs/node/commit/ee4e855f8e)] - **doc**: fix typo in sqlite.md (Tobias Nießen) [#57473](https://github.com/nodejs/node/pull/57473) +- \[[`8cb3441443`](https://github.com/nodejs/node/commit/8cb3441443)] - **doc**: explicit mention arbitrary code execution as a vuln (Rafael Gonzaga) [#57426](https://github.com/nodejs/node/pull/57426) +- \[[`27f183ad03`](https://github.com/nodejs/node/commit/27f183ad03)] - **doc**: update maintaining-openssl.md for openssl (Richard Lau) [#57413](https://github.com/nodejs/node/pull/57413) +- \[[`ca67145d60`](https://github.com/nodejs/node/commit/ca67145d60)] - **doc**: add missing `deprecated` badges in `fs.md` (Yukihiro Hasegawa) [#57384](https://github.com/nodejs/node/pull/57384) +- \[[`3687390510`](https://github.com/nodejs/node/commit/3687390510)] - **doc**: fix small typo in `process.md` (Felix Rieseberg) [#57333](https://github.com/nodejs/node/pull/57333) +- \[[`097d9926e3`](https://github.com/nodejs/node/commit/097d9926e3)] - **doc**: add note about sync nodejs-private branches (Rafael Gonzaga) [#57404](https://github.com/nodejs/node/pull/57404) +- \[[`5006627969`](https://github.com/nodejs/node/commit/5006627969)] - **fs**: apply exclude function to root path (Rich Trott) [#57420](https://github.com/nodejs/node/pull/57420) +- \[[`0583c3db92`](https://github.com/nodejs/node/commit/0583c3db92)] - **http**: coerce content-length to number (Marco Ippolito) [#57458](https://github.com/nodejs/node/pull/57458) +- \[[`2a580b9332`](https://github.com/nodejs/node/commit/2a580b9332)] - **lib**: add warning when binding inspector to public IP (Demian Parkhomenko) [#55736](https://github.com/nodejs/node/pull/55736) +- \[[`fda56b9837`](https://github.com/nodejs/node/commit/fda56b9837)] - **lib**: limit split function calls to prevent excessive array length (Gürgün Dayıoğlu) [#57501](https://github.com/nodejs/node/pull/57501) +- \[[`d5a26f6525`](https://github.com/nodejs/node/commit/d5a26f6525)] - **lib**: make getCallSites sourceMap option truly optional (James M Snell) [#57388](https://github.com/nodejs/node/pull/57388) +- \[[`00a5b18043`](https://github.com/nodejs/node/commit/00a5b18043)] - **meta**: add some clarification to the nomination process (James M Snell) [#57503](https://github.com/nodejs/node/pull/57503) +- \[[`d0c96c463c`](https://github.com/nodejs/node/commit/d0c96c463c)] - **meta**: remove collaborator self-nomination (Rich Trott) [#57537](https://github.com/nodejs/node/pull/57537) +- \[[`a9a93f31ee`](https://github.com/nodejs/node/commit/a9a93f31ee)] - **meta**: edit collaborator nomination process (Antoine du Hamel) [#57483](https://github.com/nodejs/node/pull/57483) +- \[[`0ca362f5f2`](https://github.com/nodejs/node/commit/0ca362f5f2)] - **meta**: move ovflowd to emeritus (Claudio W.) [#57443](https://github.com/nodejs/node/pull/57443) +- \[[`f8aff90235`](https://github.com/nodejs/node/commit/f8aff90235)] - **(SEMVER-MINOR)** **process**: add execve (Paolo Insogna) [#56496](https://github.com/nodejs/node/pull/56496) +- \[[`e8d4a31d4b`](https://github.com/nodejs/node/commit/e8d4a31d4b)] - **sqlite**: add support for unknown named parameters (Colin Ihrig) [#57552](https://github.com/nodejs/node/pull/57552) +- \[[`5652da642d`](https://github.com/nodejs/node/commit/5652da642d)] - **sqlite**: add DatabaseSync.prototype.isOpen (Colin Ihrig) [#57522](https://github.com/nodejs/node/pull/57522) +- \[[`5c976f16cd`](https://github.com/nodejs/node/commit/5c976f16cd)] - **sqlite**: add DatabaseSync.prototype\[Symbol.dispose]\() (Colin Ihrig) [#57506](https://github.com/nodejs/node/pull/57506) +- \[[`4b04c92d7d`](https://github.com/nodejs/node/commit/4b04c92d7d)] - **(SEMVER-MINOR)** **sqlite**: add StatementSync.prototype.columns() (Colin Ihrig) [#57490](https://github.com/nodejs/node/pull/57490) +- \[[`7f5e31645c`](https://github.com/nodejs/node/commit/7f5e31645c)] - **src**: ensure primordials are initialized exactly once (Chengzhong Wu) [#57519](https://github.com/nodejs/node/pull/57519) +- \[[`9611980f58`](https://github.com/nodejs/node/commit/9611980f58)] - **src**: improve error handling in multiple files (James M Snell) [#57507](https://github.com/nodejs/node/pull/57507) +- \[[`3ddc5cd875`](https://github.com/nodejs/node/commit/3ddc5cd875)] - **src**: cache urlpattern properties (JonasBa) [#57465](https://github.com/nodejs/node/pull/57465) +- \[[`b9d9ee4da2`](https://github.com/nodejs/node/commit/b9d9ee4da2)] - **src**: make minor cleanups in encoding_binding.cc (James M Snell) [#57448](https://github.com/nodejs/node/pull/57448) +- \[[`f8acf2dd2a`](https://github.com/nodejs/node/commit/f8acf2dd2a)] - **src**: make minor cleanups in compile_cache.cc (James M Snell) [#57448](https://github.com/nodejs/node/pull/57448) +- \[[`6ee15c6509`](https://github.com/nodejs/node/commit/6ee15c6509)] - **src**: define urlpattern components using a macro (JonasBa) [#57452](https://github.com/nodejs/node/pull/57452) +- \[[`4ab3c1690a`](https://github.com/nodejs/node/commit/4ab3c1690a)] - **src**: cleanup crypto more (James M Snell) [#57323](https://github.com/nodejs/node/pull/57323) +- \[[`5be80b1748`](https://github.com/nodejs/node/commit/5be80b1748)] - **src**: refine ncrypto more (James M Snell) [#57300](https://github.com/nodejs/node/pull/57300) +- \[[`6a13319a6e`](https://github.com/nodejs/node/commit/6a13319a6e)] - **src**: cleanup aliased_buffer.h (Mohammed Keyvanzadeh) [#57395](https://github.com/nodejs/node/pull/57395) +- \[[`3cff7f80bb`](https://github.com/nodejs/node/commit/3cff7f80bb)] - **src**: suggest --use-system-ca when a certificate error occurs (Aditi) [#57362](https://github.com/nodejs/node/pull/57362) +- \[[`3d372ad9f3`](https://github.com/nodejs/node/commit/3d372ad9f3)] - **test**: update WPT for urlpattern to 6ceca69d26 (Node.js GitHub Bot) [#57486](https://github.com/nodejs/node/pull/57486) +- \[[`481ea665af`](https://github.com/nodejs/node/commit/481ea665af)] - **test**: add more number cases for buffer.indexOf (Meghan Denny) [#57200](https://github.com/nodejs/node/pull/57200) +- \[[`27b01ed4e7`](https://github.com/nodejs/node/commit/27b01ed4e7)] - **test**: update parallel/test-tls-dhe for OpenSSL 3.5 (Richard Lau) [#57477](https://github.com/nodejs/node/pull/57477) +- \[[`8f7debcf41`](https://github.com/nodejs/node/commit/8f7debcf41)] - **timers**: optimize timer functions with improved argument handling (Gürgün Dayıoğlu) [#57072](https://github.com/nodejs/node/pull/57072) +- \[[`d4abd9d3fb`](https://github.com/nodejs/node/commit/d4abd9d3fb)] - **timers**: remove unnecessary allocation of \_onTimeout (Gürgün Dayıoğlu) [#57497](https://github.com/nodejs/node/pull/57497) +- \[[`f8f81c8ba2`](https://github.com/nodejs/node/commit/f8f81c8ba2)] - **timers**: remove unused parameter from insertGuarded (Gürgün Dayıoğlu) [#57251](https://github.com/nodejs/node/pull/57251) +- \[[`c4fdb27b51`](https://github.com/nodejs/node/commit/c4fdb27b51)] - **tls**: remove unnecessary type check on normalize (Yagiz Nizipli) [#57336](https://github.com/nodejs/node/pull/57336) +- \[[`ad5dcc5798`](https://github.com/nodejs/node/commit/ad5dcc5798)] - **tools**: fix WPT update cron string (Antoine du Hamel) [#57665](https://github.com/nodejs/node/pull/57665) +- \[[`7faa482588`](https://github.com/nodejs/node/commit/7faa482588)] - **tools**: remove stalled label on unstalled issues and PRs (Rich Trott) [#57630](https://github.com/nodejs/node/pull/57630) +- \[[`e3bb26da2b`](https://github.com/nodejs/node/commit/e3bb26da2b)] - **tools**: update sccache to support GH cache changes (Michaël Zasso) [#57573](https://github.com/nodejs/node/pull/57573) +- \[[`f0c9f505d9`](https://github.com/nodejs/node/commit/f0c9f505d9)] - **tools**: bump @babel/helpers from 7.26.9 to 7.26.10 in /tools/eslint (dependabot\[bot]) [#57444](https://github.com/nodejs/node/pull/57444) +- \[[`a40ff1f646`](https://github.com/nodejs/node/commit/a40ff1f646)] - **url**: fix constructor error message for URLPattern (jakecastelli) [#57482](https://github.com/nodejs/node/pull/57482) +- \[[`f36bee4b89`](https://github.com/nodejs/node/commit/f36bee4b89)] - **util**: avoid run debug when enabled is false (fengmk2) [#57494](https://github.com/nodejs/node/pull/57494) +- \[[`1b8d1d3a3a`](https://github.com/nodejs/node/commit/1b8d1d3a3a)] - **(SEMVER-MINOR)** **util**: expose diff function used by the assertion errors (Giovanni Bucci) [#57462](https://github.com/nodejs/node/pull/57462) +- \[[`1f7b08a317`](https://github.com/nodejs/node/commit/1f7b08a317)] - **win,test**: disable test case failing with ClangCL (Stefan Stojanovic) [#57397](https://github.com/nodejs/node/pull/57397) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.11.0/node-v23.11.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.11.0/node-v23.11.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.11.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.11.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.11.0/node-v23.11.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.11.0/node-v23.11.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.11.0/node-v23.11.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.11.0/node-v23.11.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.11.0/node-v23.11.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.11.0/node-v23.11.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.11.0/node-v23.11.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.11.0/node-v23.11.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.11.0/node-v23.11.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.11.0/node-v23.11.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.11.0/ \ +Documentation: https://nodejs.org/docs/v23.11.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +281c642514a14bc326b2b4953acef169dd20aac78d138607b778eabf5521a2b6 node-v23.11.0-aix-ppc64.tar.gz +33ac1b7ad8c619187c6436fbd4ff9766598b0c50d48fbc9a1a96eea9a214a59a node-v23.11.0-arm64.msi +635990b46610238e3c008cd01480c296e0c2bfe7ec59ea9a8cd789d5ac621bb0 node-v23.11.0-darwin-arm64.tar.gz +d020d7703959f65e289fc8fc51e216e87793dd297cd40f410f6e2fc18d321c11 node-v23.11.0-darwin-arm64.tar.xz +a5782655748d4602c1ee1ee62732e0a16d29d3e4faac844db395b0fbb1c9dab8 node-v23.11.0-darwin-x64.tar.gz +0a47bae567703255d3dddc5918a875a9cc4ce07f7c6feca480e9d564cadecafb node-v23.11.0-darwin-x64.tar.xz +48586eebb7ddcd51109c092b2bfc0218f9fbac504b3622293e404fd9274c19ff node-v23.11.0-headers.tar.gz +130707d6de3df0fd6de70f47b835511b0708ac3ffbe7e7c4ebf23b8bc2602ce7 node-v23.11.0-headers.tar.xz +12b29a87a7ccd7e1b97392d1e1533470d596578dad900430cff403e404fe72a7 node-v23.11.0-linux-arm64.tar.gz +85915f885fe7eab2be4a6e3de840cb83db4fc53749274d31383a0e1721a883c6 node-v23.11.0-linux-arm64.tar.xz +f20ced60e7f5b0136582ac7e3f5b2dafb4e320332dba81abb450e1f50ea64da4 node-v23.11.0-linux-armv7l.tar.gz +a0012b90af20ec5f219ead4ea9321249c0c4e74b077855e5d41634b157047089 node-v23.11.0-linux-armv7l.tar.xz +7fd70c5470d782dd03c31ca45505e563e6958e21790a8c7bf12a4c0fdd62b010 node-v23.11.0-linux-ppc64le.tar.gz +2e974a15d60583b26e82ef59c9bd507c897c7a6ee57c382f8f10d87aa27095db node-v23.11.0-linux-ppc64le.tar.xz +3535e5ca971b9163c5f1b0232ea1a3c827bfcbe2cc0627458d43087e337934b8 node-v23.11.0-linux-s390x.tar.gz +bfda95d724b78a85f56697671e516ce8664dceb579fd72ba0571e9744c92d853 node-v23.11.0-linux-s390x.tar.xz +66f768a7f2d89ecdda8fe1e33ee71ac04ed9180111cbf1c5fb944655fe7c90c7 node-v23.11.0-linux-x64.tar.gz +fa9ae28d8796a6cfb7057397e1eea30ca1c61002b42b8897f354563a254e7cf5 node-v23.11.0-linux-x64.tar.xz +3635315a6d8d2d51ef466ea7b9c6b32b2f9f00a04c3e70cf01e16a44e26396ca node-v23.11.0-win-arm64.7z +174936f8a36e955c4e16cf5252187a148f9148aa9c5b6d26366d7d9e1d0e49cc node-v23.11.0-win-arm64.zip +35f424f7eadbbbcd6e65a841f994b231e42f790e2ad2727b196f2d194f9ab993 node-v23.11.0-win-x64.7z +42749f1e4583907ab92bac4b4bdb031201a0b3f7b028ea6b6e0d5bb40e433ae9 node-v23.11.0-win-x64.zip +4d345be9222ffcc052921865a6ac498ac4d93c833ac5c37b84784bd6738c7dca node-v23.11.0-x64.msi +951ca83a4b4c70686019f88761b5ac6096519ae5e113add8cdffa45b839307d4 node-v23.11.0.pkg +0080beb9a481e2536543f70b59880093cb6c42470092efad8193563219efdc80 node-v23.11.0.tar.gz +f2c5db21fc5d3c3d78c7e8823bff770cef0da8078c3b5ac4fa6d17d5a41be99d node-v23.11.0.tar.xz +7ee966060ec29ad00a8853f7af86698e29e838780312bbaec47076d2f9a1e75b win-arm64/node.exe +b04fc2c4f04273feaae3a2bc372d507fa631d7d6fd5f11265219d5b10d083a3e win-arm64/node.lib +5eb8a4b6eb129c5938b39cf06d874699aa92ea9f7156f8b8748eccb5e3f75445 win-arm64/node_pdb.7z +a5404d2a165ae4044f1e379a2c5cb817e48b2a45b063605ad1b627d5977d20ba win-arm64/node_pdb.zip +806777a1aa8d511a3eaffb6f75200e85c5a67e78bb921bc4c340353fb343b33d win-x64/node.exe +7005ad268c2a3b55e741957609696fd707982d8d7727325c44e2cbf23f00f565 win-x64/node.lib +922615546546d6c66ab6cbf1fcd2366a7e942061fad50c88134c9fb54824749e win-x64/node_pdb.7z +c304a55e0228e6a767dedaa66d64421cb99f6c75acbed06adcf01958e9aa1a63 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmfr948ACgkQIdkA/9sj +N1bt8xAAmPC/y4YavKY4mfdxVNfNRbv6jJ1ChtFPysfyROCB/5vhsCACefCVOdLZ +ACjU0wuOkZ08/pEBQdzk+BFE2e1Vytj3Sfz2g27iDCK3VG/uZVzcgeAOc3MVrTQN +g/gLdL5t2HF3ane2VCGHOLqC3xAyNAlVIz5Kf4qYEuCXtsv4eIEQgEo9Gpph6NWo +uO3AE3CO235lMJambhAIV9eGtPsivcDnrAojOgHTwUAEA8eYNxZHYl2eqoaqgR6h +GLg0wC8mf+7uD7GrDDhxhJ/H9p5oGTA5mp8j/hDSlUcgISht24FCBMGLDDx1G7hA +znAgOqa7Aj0CAwak8gyor+Fm9yvcdQ+/5vdKms16ESYf9dcrqvuRcYjyky7/I0Ue +gNfoOec3UrbDquBPyEB5eSUlLxBFC+JTJOyTgywC0CQC8p5zNY+2qFzGG9ClwJq1 +u7QPA2PlDfb44HR1n/yv+R7tuf9ws7KOtbXWClPz4vz/jberzCBFvdWnAntFouMq +oyIQp7JcAkVfrlrlT2WbTzsHYhfafvPnX/STx9u/lL5DSRwlFfPP3JP5i2AkLh6B ++DqjDqQUQXVea0rj7C/c3E9tUydl6Uwlgj3BG6aDb4r7svyW8LfcUtkTe5AOdgBp +euLoL2KzfyEHo8Umg4lAw9ThfEhdYO9XcG1ExjSNTj5/iAPeItY= +=9mLp +-----END PGP SIGNATURE----- +``` From f57590767d8adfd370d22a6812c338ee362552f0 Mon Sep 17 00:00:00 2001 From: SaberLS <94221181+SaberLS@users.noreply.github.com> Date: Wed, 2 Apr 2025 17:03:51 +0200 Subject: [PATCH 0367/1385] fix(learn): fix typo in fetch learn (#7609) docs: fix typo in fetch.md Fixed typo in the "Streaming Responses with Undici" section. The word "chucks" has been replaced with "chunks." Signed-off-by: SaberLS <94221181+SaberLS@users.noreply.github.com> --- apps/site/pages/en/learn/getting-started/fetch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/getting-started/fetch.md b/apps/site/pages/en/learn/getting-started/fetch.md index 1f8e6de2a03da..9223dd1f919a5 100644 --- a/apps/site/pages/en/learn/getting-started/fetch.md +++ b/apps/site/pages/en/learn/getting-started/fetch.md @@ -128,7 +128,7 @@ try { ## Streaming Responses with Undici -[Streams](https://nodejs.org/docs/v22.14.0/api/stream.html#stream) is a feature in Node.js that allows you to read and write chucks of data. +[Streams](https://nodejs.org/docs/v22.14.0/api/stream.html#stream) is a feature in Node.js that allows you to read and write chunks of data. ```js import { stream } from 'undici'; From b7364b93fd1a0a9b22fd15b3992cd9bc5e38fe05 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz <dario@cloudflare.com> Date: Thu, 3 Apr 2025 09:42:25 +0100 Subject: [PATCH 0368/1385] chore: refactor the `generateBlogData` function (#7607) --- apps/site/next-data/generators/blogData.mjs | 84 ++++++++++----------- 1 file changed, 40 insertions(+), 44 deletions(-) diff --git a/apps/site/next-data/generators/blogData.mjs b/apps/site/next-data/generators/blogData.mjs index c03e23c62a48a..3d58593439b8e 100644 --- a/apps/site/next-data/generators/blogData.mjs +++ b/apps/site/next-data/generators/blogData.mjs @@ -63,50 +63,46 @@ const generateBlogData = async () => { '**/index.md', ]); - return new Promise(resolve => { - const posts = []; - const rawFrontmatter = []; - - filenames.forEach(filename => { - // We create a stream for reading a file instead of reading the files - const _stream = createReadStream(join(blogPath, filename)); - - // We create a readline interface to read the file line-by-line - const _readLine = readline.createInterface({ input: _stream }); - - // Creates an array of the metadata based on the filename - // This prevents concurrency issues since the for-loop is synchronous - // and these event listeners are not - rawFrontmatter[filename] = [0, '']; - - // We read line by line - _readLine.on('line', line => { - rawFrontmatter[filename][1] += `${line}\n`; - - // We observe the frontmatter separators - if (line === '---') { - rawFrontmatter[filename][0] += 1; - } - - // Once we have two separators we close the readLine and the stream - if (rawFrontmatter[filename][0] === 2) { - _readLine.close(); - _stream.close(); - } - }); - - // Then we parse gray-matter on the frontmatter - // This allows us to only read the frontmatter part of each file - // and optimise the read-process as we have thousands of markdown files - _readLine.on('close', () => { - posts.push(getFrontMatter(filename, rawFrontmatter[filename][1])); - - if (posts.length === filenames.length) { - resolve({ categories: [...blogCategories], posts }); - } - }); - }); - }); + const posts = await Promise.all( + filenames.map( + filename => + new Promise(resolve => { + // We create a stream for reading a file instead of reading the files + const _stream = createReadStream(join(blogPath, filename)); + + // We create a readline interface to read the file line-by-line + const _readLine = readline.createInterface({ input: _stream }); + + let rawFrontmatter = ''; + let frontmatterSeparatorsEncountered = 0; + + // We read line by line + _readLine.on('line', line => { + rawFrontmatter += `${line}\n`; + + // We observe the frontmatter separators + if (line === '---') { + frontmatterSeparatorsEncountered++; + } + + // Once we have two separators we close the readLine and the stream + if (frontmatterSeparatorsEncountered === 2) { + _readLine.close(); + _stream.close(); + } + }); + + // Then we parse gray-matter on the frontmatter + // This allows us to only read the frontmatter part of each file + // and optimise the read-process as we have thousands of markdown files + _readLine.on('close', () => { + resolve(getFrontMatter(filename, rawFrontmatter)); + }); + }) + ) + ); + + return { categories: [...blogCategories], posts }; }; export default generateBlogData; From 77c6c7e7de1fa5921492ada34b9352668c1c8b49 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran <bjohansebas@gmail.com> Date: Thu, 3 Apr 2025 04:09:32 -0500 Subject: [PATCH 0369/1385] feat(tailwind): migrate to v4 (#7507) * chore(tailwind): update to v4 * fix: dark theme * simplify postcss * fix: using good source * fix: lock-file * chore: cleaned package.json * fix some bugs and add missing comment * fix(ui-components): remove unnecessary aspect ratio utility from Preview styles * fix(ui-components): update shadow variables to use --alpha for transparency * fix(ui-components): adjust shadow variables to ensure proper fallback for color transparency * fix fonts? * fix(route): add TODO to use CSS variables instead of absolute values * fix(effects): update background image from turtle.png to smoke.gif * fix: storybook postcss implementation --------- Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Co-authored-by: Claudio Wunder <cwunder@gnome.org> --- COLLABORATOR_GUIDE.md | 11 +- apps/site/.postcssrc.json | 7 +- apps/site/.stylelintrc.mjs | 10 +- .../next-data/og/[category]/[title]/route.tsx | 8 +- .../Blog/BlogHeader/index.module.css | 2 + .../Blog/BlogPostCard/index.module.css | 2 + apps/site/components/Common/Search/utils.ts | 67 +- .../Downloads/DownloadButton/index.module.css | 2 + .../MDX/Calendar/Event/index.module.css | 2 + .../MDX/Calendar/calendar.module.css | 2 + apps/site/components/withBlogCategories.tsx | 2 +- apps/site/layouts/layouts.module.css | 20 +- apps/site/package.json | 38 +- apps/site/pages/en/about/branding.mdx | 6 +- apps/site/pages/fa/about/branding.mdx | 6 +- apps/site/pages/tr/about/branding.mdx | 6 +- apps/site/pages/zh-cn/about/branding.mdx | 6 +- apps/site/pages/zh-tw/about/branding.mdx | 6 +- apps/site/styles/effects.css | 41 +- apps/site/tailwind.config.ts | 5 - package-lock.json | 3517 +++++++---------- package.json | 20 +- packages/i18n/package.json | 4 +- packages/ui-components/.postcssrc.json | 7 +- packages/ui-components/.storybook/main.ts | 16 +- packages/ui-components/.stylelintrc.mjs | 11 +- .../Common/AlertBox/index.module.css | 6 +- .../AvatarGroup/Avatar/index.module.css | 2 + .../AvatarGroup/Overlay/index.module.css | 2 + .../Common/AvatarGroup/index.module.css | 2 + .../Common/Badge/index.module.css | 2 + .../Common/Banner/index.module.css | 2 + .../Common/BaseButton/index.module.css | 66 +- .../Common/BaseCodeBox/index.module.css | 8 +- .../Common/BaseCrossLink/index.module.css | 4 +- .../Common/BaseLinkTabs/index.module.css | 2 + .../BasePagination/Ellipsis/index.module.css | 2 + .../PaginationListItem/index.module.css | 4 +- .../Common/BasePagination/index.module.css | 2 + .../Common/Blockquote/index.module.css | 2 + .../BreadcrumbHomeLink/index.module.css | 2 + .../BreadcrumbItem/index.module.css | 2 + .../BreadcrumbLink/index.module.css | 2 + .../BreadcrumbRoot/index.module.css | 2 + .../Common/CodeTabs/index.module.css | 2 + .../Common/GlowingBackdrop/index.module.css | 27 +- .../Common/LanguageDropDown/index.module.css | 8 +- .../Common/NodejsLogo/index.module.css | 2 + .../Common/Notification/index.module.css | 4 +- .../Common/Preview/index.module.css | 46 +- .../ProgressionSidebarGroup/index.module.css | 62 +- .../ProgressionSidebarItem/index.module.css | 2 + .../ProgressionSidebar/index.module.css | 2 + .../Common/Select/index.module.css | 10 +- .../Common/Skeleton/index.module.css | 8 +- .../Common/Tabs/index.module.css | 2 + .../Common/ThemeToggle/index.module.css | 2 + .../Common/Tooltip/index.module.css | 2 + .../Containers/Footer/index.module.css | 2 + .../Containers/MetaBar/index.module.css | 2 + .../NavBar/NavItem/index.module.css | 4 +- .../Containers/NavBar/index.module.css | 5 +- .../ui-components/Containers/NavBar/index.tsx | 2 +- .../Sidebar/SidebarGroup/index.module.css | 2 + .../Sidebar/SidebarItem/index.module.css | 4 +- .../Containers/Sidebar/index.module.css | 2 + .../__design__/font-family.stories.tsx | 2 +- packages/ui-components/package.json | 26 +- packages/ui-components/styles/animations.css | 47 + packages/ui-components/styles/index.css | 30 +- packages/ui-components/styles/markdown.css | 10 +- packages/ui-components/styles/theme.css | 172 + packages/ui-components/tailwind.config.ts | 164 - 73 files changed, 2053 insertions(+), 2538 deletions(-) delete mode 100644 apps/site/tailwind.config.ts create mode 100644 packages/ui-components/styles/animations.css create mode 100644 packages/ui-components/styles/theme.css delete mode 100644 packages/ui-components/tailwind.config.ts diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 00316821f8541..200bbdc3ddeac 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -75,11 +75,6 @@ The Node.js Website is built upon [React][] and [Next.js][] respectively, the UI The Website also uses several other Open Source libraries (not limited to) listed below: - Styling is done with [PostCSS][] and CSS Modules - - We use a combination of PostCSS plugins to create a [Sass](https://sass-lang.com/) alike environment - - We recommend reading the documentation of our plugins in case of doubt - - [PostCSS Mixins](https://github.com/postcss/postcss-mixins) - - [PostCSS Import](https://github.com/postcss/postcss-import) - - [PostCSS Simple Vars](https://github.com/postcss/postcss-simple-vars) - [Tailwind][] is used as our CSS Framework and the Foundation of our Design System - [Hero Icons](https://heroicons.com/) is an SVG Icon Library used within our Codebase - [Radix UI][] is a collection of customizable UI components @@ -577,15 +572,11 @@ We currently use a set of PostCSS plugins that create a SCSS-a-like environment. #### What PostCSS Plugins we use? -- `postcss-mixins`: Allows us to use Sass-like Mixins -- `postcss-import`: Allows us to use Sass-like Imports -- `postcss-simple-vars`: Allows us to use Sass-like Variables -- `postcss-nested`: Allows us to use Sass-like Nesting - `postcss-calc`: Strips `calc` expressions and replaces them with the result +- `@tailwindcss/postcss`: Allows us to use Tailwind within PostCSS It is important to mention that even though we use SCSS-like syntax, we do not use SCSS, and some of these plugins are not 100% compatible with the SCSS syntax. -For example, `postcss-mixins` does not support `@include` and `@extend` directives (and it uses `@define-mixin` for defining Mixins and `@mixin` for including Mixins). #### Do we use a CSS Framework? diff --git a/apps/site/.postcssrc.json b/apps/site/.postcssrc.json index f48fb87dce6e0..d750bab9d9e52 100644 --- a/apps/site/.postcssrc.json +++ b/apps/site/.postcssrc.json @@ -1,11 +1,6 @@ { "plugins": { - "postcss-mixins": {}, - "postcss-simple-vars": {}, "postcss-calc": {}, - "postcss-import": {}, - "tailwindcss/nesting": {}, - "tailwindcss": {}, - "autoprefixer": {} + "@tailwindcss/postcss": {} } } diff --git a/apps/site/.stylelintrc.mjs b/apps/site/.stylelintrc.mjs index 17fc884a3c41b..1880b1ce2d8ae 100644 --- a/apps/site/.stylelintrc.mjs +++ b/apps/site/.stylelintrc.mjs @@ -4,12 +4,14 @@ const CUSTOM_AT_RULES = [ 'apply', 'layer', 'responsive', + 'reference', + 'utility', + 'theme', + 'custom-variant', 'screen', + 'source', 'tailwind', 'variants', - // PostCSS-specific at-rules - 'define-mixin', - 'mixin', ]; // Enforces certain selectors to be only in camelCase notation @@ -42,6 +44,6 @@ export default { // Adopts the import notation from `postcss-import` 'import-notation': 'string', // Allow the `@apply` at rule as its part of Tailwind - 'at-rule-no-deprecated': [true, { ignoreAtRules: ['apply'] }], + 'at-rule-no-deprecated': [true, { ignoreAtRules: CUSTOM_AT_RULES }], }, }; 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 effcd1719afc8..5f1b19cc8c643 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 @@ -4,13 +4,13 @@ import { ImageResponse } from 'next/og'; import { DEFAULT_CATEGORY_OG_TYPE } from '@/next.constants.mjs'; import { defaultLocale } from '@/next.locales.mjs'; -import tailwindConfig from '@/tailwind.config'; import { hexToRGBA } from '@/util/hexToRGBA'; +// TODO: use CSS variables instead of absolute values const CATEGORY_TO_THEME_COLOUR_MAP = { - announcement: tailwindConfig.theme.colors.green['700'], - release: tailwindConfig.theme.colors.info['600'], - vulnerability: tailwindConfig.theme.colors.warning['600'], + announcement: '#1a3f1d', + release: '#0c7bb3', + vulnerability: '#ae5f00', }; type Category = keyof typeof CATEGORY_TO_THEME_COLOUR_MAP; diff --git a/apps/site/components/Blog/BlogHeader/index.module.css b/apps/site/components/Blog/BlogHeader/index.module.css index b7a0764768f5f..c34522e25d42a 100644 --- a/apps/site/components/Blog/BlogHeader/index.module.css +++ b/apps/site/components/Blog/BlogHeader/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .blogHeader { h1 { @apply inline-flex diff --git a/apps/site/components/Blog/BlogPostCard/index.module.css b/apps/site/components/Blog/BlogPostCard/index.module.css index 178d193cda6e7..166f694e85505 100644 --- a/apps/site/components/Blog/BlogPostCard/index.module.css +++ b/apps/site/components/Blog/BlogPostCard/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .container { @apply max-w-full flex-1; diff --git a/apps/site/components/Common/Search/utils.ts b/apps/site/components/Common/Search/utils.ts index fdab2c893008f..b2bcc8d802725 100644 --- a/apps/site/components/Common/Search/utils.ts +++ b/apps/site/components/Common/Search/utils.ts @@ -1,46 +1,43 @@ -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], - '--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], + '--text-color-primary': 'var(--color-neutral-900)', + '--text-color-accent': 'var(--color-green-600)', + '--background-color-secondary': 'var(--color-neutral-100)', + '--background-color-tertiary': 'var(--color-neutral-300)', + '--border-color-accent': 'var(--color-green-600)', + '--border-color-primary': 'var(--color-neutral-200)', + '--border-color-tertiary': 'var(--color-green-700)', + '--button-background-color-primary': 'var(--color-green-600)', + '--button-background-color-secondary': 'var(--color-white)', + '--button-background-color-secondary-hover': 'var(--color-neutral-100)', + '--button-border-color-secondary': 'var(--color-neutral-300)', + '--button-text-color-secondary': 'var(--color-neutral-900)', + '--chat-button-border-color-gradientThree': 'var(--color-green-400)', + '--chat-button-border-color-gradientFour': 'var(--color-green-700)', + '--chat-button-background-color-gradientOne': 'var(--color-green-600)', + '--chat-button-background-color-gradientTwo': 'var(--color-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], + '--text-color-primary': 'var(--color-neutral-100)', + '--text-color-accent': 'var(--color-green-400)', + '--background-color-secondary': 'var(--color-neutral-950)', + '--background-color-tertiary': 'var(--color-neutral-900)', + '--border-color-accent': 'var(--color-green-400)', + '--border-color-primary': 'var(--color-neutral-900)', + '--border-color-tertiary': 'var(--color-green-300)', + '--button-background-color-primary': 'var(--color-green-400)', + '--button-background-color-secondary': 'var(--color-neutral-950)', + '--button-background-color-secondary-hover': 'var(--color-neutral-900)', + '--button-border-color-secondary': 'var(--color-neutral-900)', + '--button-text-color-secondary': 'var(--color-neutral-200)', + '--chat-button-border-color-gradientThree': 'var(--color-green-400)', + '--chat-button-border-color-gradientFour': 'var(--color-green-700)', + '--chat-button-background-color-gradientOne': 'var(--color-green-400)', + '--chat-button-background-color-gradientTwo': 'var(--color-green-800)', }, }, }; diff --git a/apps/site/components/Downloads/DownloadButton/index.module.css b/apps/site/components/Downloads/DownloadButton/index.module.css index 8cb70e57be6c6..7cc12d7f700e3 100644 --- a/apps/site/components/Downloads/DownloadButton/index.module.css +++ b/apps/site/components/Downloads/DownloadButton/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .downloadButton { @apply justify-center; diff --git a/apps/site/components/MDX/Calendar/Event/index.module.css b/apps/site/components/MDX/Calendar/Event/index.module.css index f36d7d8f92aba..f192532d77c24 100644 --- a/apps/site/components/MDX/Calendar/Event/index.module.css +++ b/apps/site/components/MDX/Calendar/Event/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../../styles/index.css"; + .event { @apply flex w-fit diff --git a/apps/site/components/MDX/Calendar/calendar.module.css b/apps/site/components/MDX/Calendar/calendar.module.css index 52af750828ddf..ef0999b2b9d58 100644 --- a/apps/site/components/MDX/Calendar/calendar.module.css +++ b/apps/site/components/MDX/Calendar/calendar.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .events { @apply flex flex-col diff --git a/apps/site/components/withBlogCategories.tsx b/apps/site/components/withBlogCategories.tsx index 3c4c4cbcb8d5b..9bb121d98feda 100644 --- a/apps/site/components/withBlogCategories.tsx +++ b/apps/site/components/withBlogCategories.tsx @@ -30,7 +30,7 @@ const WithBlogCategories: FC<WithBlogCategoriesProps> = ({ tabs={categories} activeTab={blogData.category} > - <div className="max-xs:grid-cols-[1fr] grid grid-cols-[repeat(auto-fill,minmax(theme(spacing.80),1fr))] [grid-gap:theme(spacing.12)_theme(spacing.8)]"> + <div className="max-xs:grid-cols-[1fr] grid grid-cols-[repeat(auto-fill,minmax(--spacing(80),1fr))] [grid-gap:--spacing(12)_--spacing(8)]"> {blogData.posts.map(post => ( <BlogPostCard key={post.slug} diff --git a/apps/site/layouts/layouts.module.css b/apps/site/layouts/layouts.module.css index ccfd3720bd5bf..e0b725b31da36 100644 --- a/apps/site/layouts/layouts.module.css +++ b/apps/site/layouts/layouts.module.css @@ -1,3 +1,5 @@ +@reference "../styles/index.css"; + .baseLayout { @apply grid h-max @@ -9,8 +11,6 @@ .articleLayout { @apply max-w-8xl - sm:grid-areas-[sidebar_main,sidebar_footer] - lg:grid-areas-[sidebar_main_metabar,sidebar_footer_metabar] mx-auto block w-full @@ -18,12 +18,14 @@ sm:grid-cols-[theme(spacing.52)_1fr] sm:grid-rows-[1fr] sm:overflow-visible + sm:[grid-template-areas:'sidebar_main''sidebar_footer'] md:grid-cols-[theme(spacing.64)_1fr] lg:grid-cols-[theme(spacing.52)_1fr_theme(spacing.52)] + lg:[grid-template-areas:'sidebar_main_metabar''sidebar_footer_metabar'] xl:grid-cols-[theme(spacing.80)_1fr_theme(spacing.80)]; > *:nth-child(1) { - @apply grid-in-[sidebar] + @apply [grid-area:sidebar] lg:sticky lg:top-0 lg:h-[100vh] @@ -35,20 +37,20 @@ sm:max-lg:block; > *:first-child { - @apply grid-in-[main] - sm:bg-gradient-subtle + @apply sm:bg-gradient-subtle sm:dark:bg-gradient-subtle-dark xl:px-18 p-4 + [grid-area:main] motion-safe:scroll-smooth sm:bg-fixed sm:p-12; } > *:last-child { - @apply grid-in-[metabar] - mt-8 + @apply mt-8 border-t + [grid-area:metabar] sm:mt-0 lg:sticky lg:top-0 @@ -59,8 +61,7 @@ } > *:nth-child(3) { - @apply grid-in-[footer] - sticky + @apply sticky bottom-0 flex w-full @@ -71,6 +72,7 @@ border-t-neutral-200 bg-white py-4 + [grid-area:footer] dark:border-t-neutral-900 dark:bg-neutral-950; } diff --git a/apps/site/package.json b/apps/site/package.json index 2efde6c5d47b3..f18e6bf7aacad 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -31,51 +31,49 @@ "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", + "@radix-ui/react-tooltip": "^1.1.8", + "@tailwindcss/postcss": "~4.0.17", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", - "@vercel/otel": "~1.10.1", + "@vercel/otel": "~1.10.4", "@vercel/speed-insights": "~1.2.0", - "autoprefixer": "~10.4.20", "classnames": "~2.5.1", "cross-env": "7.0.3", "feed": "~4.2.2", "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.2.3", + "next": "15.2.4", "next-intl": "~4.0.2", - "next-themes": "~0.4.4", + "next-themes": "~0.4.6", "postcss": "~8.5.3", "postcss-calc": "~10.1.1", - "postcss-import": "~16.1.0", "postcss-loader": "~8.1.1", - "postcss-mixins": "~11.0.3", - "postcss-simple-vars": "~7.0.1", - "react": "19.0.0", - "react-dom": "19.0.0", + "react": "19.1.0", + "react-dom": "19.1.0", "rehype-autolink-headings": "~7.1.0", "rehype-slug": "~6.0.0", "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.1", "semver": "~7.7.1", - "shiki": "~3.1.0", - "sval": "^0.6.1", - "tailwindcss": "~3.4.17", + "shiki": "~3.2.1", + "sval": "^0.6.3", + "tailwindcss": "~4.0.17", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", - "vfile-matter": "~5.0.0" + "vfile-matter": "~5.0.1" }, "devDependencies": { "@eslint/compat": "~1.2.7", - "@next/eslint-plugin-next": "15.2.0", + "@next/eslint-plugin-next": "15.2.4", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", "@types/jest": "29.5.14", - "@types/semver": "~7.5.8", - "eslint-config-next": "15.2.0", - "eslint-import-resolver-typescript": "~3.8.3", - "eslint-plugin-mdx": "~3.1.5", + "@types/semver": "~7.7.0", + "eslint-config-next": "15.2.4", + "eslint-import-resolver-typescript": "~4.3.1", + "eslint-plugin-mdx": "~3.3.1", "eslint-plugin-react": "~7.37.4", "eslint-plugin-react-hooks": "5.2.0", "handlebars": "4.7.8", @@ -84,12 +82,12 @@ "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "stylelint": "16.15.0", + "stylelint": "16.17.0", "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.7.2", - "typescript-eslint": "~8.25.0", + "typescript-eslint": "~8.28.0", "user-agent-data-types": "0.4.2" } } diff --git a/apps/site/pages/en/about/branding.mdx b/apps/site/pages/en/about/branding.mdx index a5dfab7dd4074..cb79c219d6795 100644 --- a/apps/site/pages/en/about/branding.mdx +++ b/apps/site/pages/en/about/branding.mdx @@ -66,7 +66,7 @@ Credit to [Angela Angelini](https://www.linkedin.com/in/angeliningl/) for design <img alt="Node.js Light Stacked Logo" src="/static/logos/nodejsStackedLight.svg" - className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" + className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> @@ -83,7 +83,7 @@ Credit to [Angela Angelini](https://www.linkedin.com/in/angeliningl/) for design <img alt="Node.js White Stacked Logo" src="/static/logos/nodejsStackedWhite.svg" - className="rounded bg-neutral-950 p-2 dark:bg-transparent" + className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> @@ -108,7 +108,7 @@ Credit to [Angela Angelini](https://www.linkedin.com/in/angeliningl/) for design <img alt="White JS Icons" src="/static/logos/jsIconWhite.svg" - className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" + className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> diff --git a/apps/site/pages/fa/about/branding.mdx b/apps/site/pages/fa/about/branding.mdx index f32e9d8e175f0..6106a9fc20a02 100644 --- a/apps/site/pages/fa/about/branding.mdx +++ b/apps/site/pages/fa/about/branding.mdx @@ -42,7 +42,7 @@ layout: about </td> <td> - <img alt="لوگو تراکم‌یافته روشن Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="لوگو تراکم‌یافته روشن Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -52,7 +52,7 @@ layout: about </td> <td> - <img alt="لوگو تراکم‌یافته سفید Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="لوگو تراکم‌یافته سفید Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> </table> @@ -66,7 +66,7 @@ layout: about </td> <td> - <img alt="آیکون‌های JS سفید" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="آیکون‌های JS سفید" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> </table> diff --git a/apps/site/pages/tr/about/branding.mdx b/apps/site/pages/tr/about/branding.mdx index e3646bdebd2d0..ce5b407ab0b4d 100644 --- a/apps/site/pages/tr/about/branding.mdx +++ b/apps/site/pages/tr/about/branding.mdx @@ -48,7 +48,7 @@ Roket Kaplumbağayı tasarlayıp katkıda bulunduğu için [X'de @Ang_ngl](https </td> <td> - <img alt="Node.js Aydınlık Dikey Logo" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="Node.js Aydınlık Dikey Logo" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -59,7 +59,7 @@ Roket Kaplumbağayı tasarlayıp katkıda bulunduğu için [X'de @Ang_ngl](https </td> <td> - <img alt="Node.js Beyaz Dikey Logo" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="Node.js Beyaz Dikey Logo" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> @@ -76,7 +76,7 @@ Roket Kaplumbağayı tasarlayıp katkıda bulunduğu için [X'de @Ang_ngl](https </td> <td> - <img alt="Beyaz JS Simgeleri" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="Beyaz JS Simgeleri" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> diff --git a/apps/site/pages/zh-cn/about/branding.mdx b/apps/site/pages/zh-cn/about/branding.mdx index c830dd83aceec..787e12da75b4a 100644 --- a/apps/site/pages/zh-cn/about/branding.mdx +++ b/apps/site/pages/zh-cn/about/branding.mdx @@ -42,7 +42,7 @@ Node.js 的品牌化 </td> <td> - <img alt="Node.js 亮色堆叠形式 Logo" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="Node.js 亮色堆叠形式 Logo" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -52,7 +52,7 @@ Node.js 的品牌化 </td> <td> - <img alt="Node.js 白色堆叠形式 Logo" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="Node.js 白色堆叠形式 Logo" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> </table> @@ -66,7 +66,7 @@ Node.js 的品牌化 </td> <td> - <img alt="白色 JS 图标" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="白色 JS 图标" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> </table> diff --git a/apps/site/pages/zh-tw/about/branding.mdx b/apps/site/pages/zh-tw/about/branding.mdx index 3f8ae48f8962c..11beabae534cb 100644 --- a/apps/site/pages/zh-tw/about/branding.mdx +++ b/apps/site/pages/zh-tw/about/branding.mdx @@ -42,7 +42,7 @@ Node.js 的品牌形象 </td> <td> - <img alt="Node.js® 亮色堆疊標誌" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="Node.js® 亮色堆疊標誌" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -52,7 +52,7 @@ Node.js 的品牌形象 </td> <td> - <img alt="Node.js® 白色堆疊標誌" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="Node.js® 白色堆疊標誌" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> </table> @@ -66,7 +66,7 @@ Node.js 的品牌形象 </td> <td> - <img alt="白色 JS 圖示" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="白色 JS 圖示" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> </table> diff --git a/apps/site/styles/effects.css b/apps/site/styles/effects.css index a4c4df007ded9..e7431bd0ca181 100644 --- a/apps/site/styles/effects.css +++ b/apps/site/styles/effects.css @@ -1,30 +1,27 @@ -.turtle { +@utility turtle { @apply animate-surf absolute z-10 translate-x-0 - translate-y-0; -} + translate-y-0 + after:absolute + after:-left-full + after:top-[20%] + after:-z-10 + after:block + after:h-36 + after:w-36 + after:-rotate-90 + after:select-none + after:bg-[url('/static/images/smoke.gif')] + after:opacity-[0.15] + after:content-[''] + after:md:-left-1/2 + after:md:top-1/2; -.turtle img { - @apply h-auto + & img { + @apply h-auto w-24 md:w-48; -} - -.turtle::after { - @apply absolute - -left-full - top-[20%] - -z-10 - block - h-36 - w-36 - -rotate-90 - select-none - bg-[url('/static/images/smoke.gif')] - opacity-[0.15] - content-[''] - md:-left-1/2 - md:top-1/2; + } } diff --git a/apps/site/tailwind.config.ts b/apps/site/tailwind.config.ts deleted file mode 100644 index d8835f0767c5c..0000000000000 --- a/apps/site/tailwind.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import twConfig from '@node-core/ui-components/tailwind.config'; - -twConfig.content.push('../../packages/ui-components/**/*.tsx'); - -export default twConfig; diff --git a/package-lock.json b/package-lock.json index e9e317edd61cf..58978d7806284 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,21 +11,21 @@ "packages/*" ], "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.14.1", "husky": "9.1.7", - "lint-staged": "15.4.3", + "lint-staged": "15.5.0", "turbo": "2.4.4" }, "devDependencies": { - "@eslint/js": "~9.21.0", - "@types/node": "22.13.8", - "@types/react": "^19.0.10", + "@eslint/js": "~9.23.0", + "@types/node": "22.13.14", + "@types/react": "^19.0.12", "@types/react-dom": "^19.0.4", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.21.0", - "eslint-plugin-import-x": "~4.6.1", + "eslint": "~9.23.0", + "eslint-plugin-import-x": "~4.9.4", "eslint-plugin-no-relative-import-paths": "~1.6.1", - "prettier": "3.5.2", + "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.11" }, "engines": { @@ -45,51 +45,49 @@ "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", + "@radix-ui/react-tooltip": "^1.1.8", + "@tailwindcss/postcss": "~4.0.17", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", - "@vercel/otel": "~1.10.1", + "@vercel/otel": "~1.10.4", "@vercel/speed-insights": "~1.2.0", - "autoprefixer": "~10.4.20", "classnames": "~2.5.1", "cross-env": "7.0.3", "feed": "~4.2.2", "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.2.3", + "next": "15.2.4", "next-intl": "~4.0.2", - "next-themes": "~0.4.4", + "next-themes": "~0.4.6", "postcss": "~8.5.3", "postcss-calc": "~10.1.1", - "postcss-import": "~16.1.0", "postcss-loader": "~8.1.1", - "postcss-mixins": "~11.0.3", - "postcss-simple-vars": "~7.0.1", - "react": "19.0.0", - "react-dom": "19.0.0", + "react": "19.1.0", + "react-dom": "19.1.0", "rehype-autolink-headings": "~7.1.0", "rehype-slug": "~6.0.0", "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.1", "semver": "~7.7.1", - "shiki": "~3.1.0", - "sval": "^0.6.1", - "tailwindcss": "~3.4.17", + "shiki": "~3.2.1", + "sval": "^0.6.3", + "tailwindcss": "~4.0.17", "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", - "vfile-matter": "~5.0.0" + "vfile-matter": "~5.0.1" }, "devDependencies": { "@eslint/compat": "~1.2.7", - "@next/eslint-plugin-next": "15.2.0", + "@next/eslint-plugin-next": "15.2.4", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", "@types/jest": "29.5.14", - "@types/semver": "~7.5.8", - "eslint-config-next": "15.2.0", - "eslint-import-resolver-typescript": "~3.8.3", - "eslint-plugin-mdx": "~3.1.5", + "@types/semver": "~7.7.0", + "eslint-config-next": "15.2.4", + "eslint-import-resolver-typescript": "~4.3.1", + "eslint-plugin-mdx": "~3.3.1", "eslint-plugin-react": "~7.37.4", "eslint-plugin-react-hooks": "5.2.0", "handlebars": "4.7.8", @@ -98,12 +96,12 @@ "jest-junit": "16.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", - "stylelint": "16.15.0", + "stylelint": "16.17.0", "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.7.2", - "typescript-eslint": "~8.25.0", + "typescript-eslint": "~8.28.0", "user-agent-data-types": "0.4.2" } }, @@ -235,134 +233,48 @@ "npm": ">=7.10.0" } }, - "apps/site/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", - "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/type-utils": "8.25.0", - "@typescript-eslint/utils": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - }, - "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", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "apps/site/node_modules/@typescript-eslint/parser": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", - "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/typescript-estree": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.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", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "apps/site/node_modules/@typescript-eslint/type-utils": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", - "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", + "apps/site/node_modules/eslint-import-resolver-typescript": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.1.tgz", + "integrity": "sha512-/dR9YMomeBlvfuvX5q0C3Y/2PHC9OCRdT2ijFwdfq/4Bq+4m5/lqstEp9k3P6ocha1pCbhoY9fkwVYLmOqR0VQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@typescript-eslint/typescript-estree": "8.25.0", - "@typescript-eslint/utils": "8.25.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.12", + "unrs-resolver": "^1.3.3" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^16.17.0 || >=18.6.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/eslint-import-resolver-typescript" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "apps/site/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", - "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, - "apps/site/node_modules/@typescript-eslint/utils": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", - "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", + "apps/site/node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/typescript-estree": "8.25.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", - "typescript": ">=4.8.4 <5.8.0" + "semver": "^7.7.1" } }, "apps/site/node_modules/next-intl": { @@ -436,6 +348,19 @@ "regex-utilities": "^2.3.0" } }, + "apps/site/node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "apps/site/node_modules/tailwindcss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", + "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", + "license": "MIT" + }, "apps/site/node_modules/typescript": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", @@ -450,29 +375,6 @@ "node": ">=14.17" } }, - "apps/site/node_modules/typescript-eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", - "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.25.0", - "@typescript-eslint/parser": "8.25.0", - "@typescript-eslint/utils": "8.25.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", - "typescript": ">=4.8.4 <5.8.0" - } - }, "node_modules/@adobe/css-tools": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", @@ -1245,6 +1147,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/@emnapi/core": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.0.tgz", + "integrity": "sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.1", + "tslib": "^2.4.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", @@ -1255,6 +1169,17 @@ "tslib": "^2.4.0" } }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", + "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", @@ -1766,6 +1691,16 @@ "node": "*" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", @@ -1852,9 +1787,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", - "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true, "license": "MIT", "engines": { @@ -3386,6 +3321,7 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -3400,6 +3336,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3409,6 +3346,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3429,12 +3367,14 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "devOptional": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3536,16 +3476,29 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.7.tgz", + "integrity": "sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.3.1", + "@emnapi/runtime": "^1.3.1", + "@tybys/wasm-util": "^0.9.0" + } + }, "node_modules/@next/env": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz", - "integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.4.tgz", + "integrity": "sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.0.tgz", - "integrity": "sha512-jHFUG2OwmAuOASqq253RAEG/5BYcPHn27p1NoWZDCf4OdvdK0yRYWX92YKkL+Mk2s+GyJrmd/GATlL5b2IySpw==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.4.tgz", + "integrity": "sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3583,9 +3536,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.3.tgz", - "integrity": "sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz", + "integrity": "sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==", "cpu": [ "arm64" ], @@ -3599,9 +3552,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.3.tgz", - "integrity": "sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz", + "integrity": "sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==", "cpu": [ "x64" ], @@ -3615,9 +3568,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.3.tgz", - "integrity": "sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz", + "integrity": "sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==", "cpu": [ "arm64" ], @@ -3631,9 +3584,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.3.tgz", - "integrity": "sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz", + "integrity": "sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==", "cpu": [ "arm64" ], @@ -3647,9 +3600,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.3.tgz", - "integrity": "sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz", + "integrity": "sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==", "cpu": [ "x64" ], @@ -3663,9 +3616,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.3.tgz", - "integrity": "sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz", + "integrity": "sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==", "cpu": [ "x64" ], @@ -3679,9 +3632,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.3.tgz", - "integrity": "sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz", + "integrity": "sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==", "cpu": [ "arm64" ], @@ -3695,9 +3648,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.3.tgz", - "integrity": "sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz", + "integrity": "sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==", "cpu": [ "x64" ], @@ -4362,6 +4315,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, "license": "MIT", "optional": true, "engines": { @@ -4369,9 +4323,9 @@ } }, "node_modules/@pkgr/core": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz", - "integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.0.tgz", + "integrity": "sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==", "dev": true, "license": "MIT", "engines": { @@ -5260,18 +5214,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@savvywombat/tailwindcss-grid-areas": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@savvywombat/tailwindcss-grid-areas/-/tailwindcss-grid-areas-4.0.0.tgz", - "integrity": "sha512-gjEGTltsGfy+AJQqhkuQKQGp/SB0XzXT3ZNmrOfuwPGF5DLg5GsN5XHiaYhudMvmBwRp+9k6wrZhHBM0lhEgJA==", - "license": "MIT", - "engines": { - "node": ">=16.20.2" - }, - "peerDependencies": { - "tailwindcss": "^3.0.1" - } - }, "node_modules/@schummar/icu-type-parser": { "version": "1.21.5", "resolved": "https://registry.npmjs.org/@schummar/icu-type-parser/-/icu-type-parser-1.21.5.tgz", @@ -5279,60 +5221,60 @@ "license": "MIT" }, "node_modules/@shikijs/core": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.1.0.tgz", - "integrity": "sha512-1ppAOyg3F18N8Ge9DmJjGqRVswihN33rOgPovR6gUHW17Hw1L4RlRhnmVQcsacSHh0A8IO1FIgNbtTxUFwodmg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.2.1.tgz", + "integrity": "sha512-FhsdxMWYu/C11sFisEp7FMGBtX/OSSbnXZDMBhGuUDBNTdsoZlMSgQv5f90rwvzWAdWIW6VobD+G3IrazxA6dQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.1.0", + "@shikijs/types": "3.2.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "node_modules/@shikijs/engine-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.1.0.tgz", - "integrity": "sha512-/LwkhW17jYi7uPcdaaSQQDNW+xgrHXarkrxYPoC6WPzH2xW5mFMw12doHXJBqxmYvtcTbaatcv2MkH9+3PU1FA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.2.1.tgz", + "integrity": "sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.1.0", + "@shikijs/types": "3.2.1", "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^3.1.1" + "oniguruma-to-es": "^4.1.0" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.1.0.tgz", - "integrity": "sha512-reRgy8VzDPdiDocuGDD60Rk/jLxgcgy+6H4n6jYLeN2Yw5ikasRjQQx8ERXtDM35yg2v/d6KolDBcK8hYYhcmw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.2.1.tgz", + "integrity": "sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.1.0", + "@shikijs/types": "3.2.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.1.0.tgz", - "integrity": "sha512-hAM//sExPXAXG3ZDWjrmV6Vlw4zlWFOcT1ZXNhFRBwPP27scZu/ZIdZ+TdTgy06zSvyF4KIjnF8j6+ScKGu6ww==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.2.1.tgz", + "integrity": "sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.1.0" + "@shikijs/types": "3.2.1" } }, "node_modules/@shikijs/themes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.1.0.tgz", - "integrity": "sha512-A4MJmy9+ydLNbNCtkmdTp8a+ON+MMXoUe1KTkELkyu0+pHGOcbouhNuobhZoK59cL4cOST6CCz1x+kUdkp9UZA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.2.1.tgz", + "integrity": "sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.1.0" + "@shikijs/types": "3.2.1" } }, "node_modules/@shikijs/types": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.1.0.tgz", - "integrity": "sha512-F8e7Fy4ihtcNpJG572BZZC1ErYrBrzJ5Cbc9Zi3REgWry43gIvjJ9lFAoUnuy7Bvy4IFz7grUSxL5edfrrjFEA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.2.1.tgz", + "integrity": "sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", @@ -5438,9 +5380,9 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.8.tgz", - "integrity": "sha512-rgV0EdxmqL7HWm8W8ractgcB7WjLktWPgruDJTcHMvdVbpPDP7y3+xNivZs1IqTFV4uA6GS2pPuhzBjwppwtKQ==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.11.tgz", + "integrity": "sha512-CpXu4HhiyRBikygMskmFhfgKtyz2/3BWTzpg6OrmaYuoEnxP+RMPeXZQxCW9pbH8ewGZlvX++VEt1Cletd95zQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5453,19 +5395,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.8" + "storybook": "^8.6.11" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.8.tgz", - "integrity": "sha512-tSSUmZFAJ3PcxEoysGxdLd8p6HnioYR5oLU55n2CNL5Wdj79sHDX8JoCegrkzQuvZy50z3D72mhvsI+RJB3LLg==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.11.tgz", + "integrity": "sha512-j9wUf8lQF922eC2HbWG4LdeflOu/togry80QB+Sqxs4+dg4iWhjxmN8gWav14/oa0vJBLN7Z2Tr4ifsJUEwRkg==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.8", - "@storybook/test": "8.6.8", + "@storybook/instrumenter": "8.6.11", + "@storybook/test": "8.6.11", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -5474,7 +5416,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.8" + "storybook": "^8.6.11" } }, "node_modules/@storybook/addon-styling-webpack": { @@ -5491,9 +5433,9 @@ } }, "node_modules/@storybook/addon-themes": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.8.tgz", - "integrity": "sha512-zc4Hr8bQPDMNV+7IbtpZhnbSIWxzV1Ragv0eRDHIuAJkmxYc5QS+J+FSHQa5UYTWjEO6UxUk91x0YV7wpQQSZA==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.11.tgz", + "integrity": "sha512-+Prr/az40J2bkEEEVafA2Yl1hS4a45mpJ3f/ob0takj7uV5j/l9LnsB3B5IKsZhOddbAhRiftxxgiSBULDuJ9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5504,13 +5446,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.8" + "storybook": "^8.6.11" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.8.tgz", - "integrity": "sha512-SWhuPBYkZi5ReMvXfE+qu+trydkXz83XqDwjC8cCa/yi2SjQFxcJC66paHjPM+3SNIShVZhw3gnB9mbzZ4Yohg==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.11.tgz", + "integrity": "sha512-EdzrkUyMvm0epYkUspBF5osU0rIHglD1+YK84C8ibJjx3JpnpLFaDpecwjFaFgxjQQVveHKatYcHpz09aEywqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5521,13 +5463,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.8" + "storybook": "^8.6.11" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-2.1.0.tgz", - "integrity": "sha512-mCzNtuqY8LJqj/2vW12o3S/UujRSBFstxRqhOUErrbbOBRyM6RgcPuvytDdRv1npFi8OaKOIz3SoJBT/EtAN3A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-3.0.0.tgz", + "integrity": "sha512-qkQwQEvHlxwPCHz/xakGfXJusEa1gKMw7enELh6QGopblfN3rMiV084boqiIqBReqWTasSwHOqvuElAu0NQ+8w==", "dev": true, "license": "MIT", "dependencies": { @@ -5539,13 +5481,13 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.8.tgz", - "integrity": "sha512-XRV+YWw0MByrB0KyZuLgBoEpebB8qcW0cXMLseO33G3FeT+Bf94H2/WQJA+sKjSPhf2LZPBV1Rg6xYyvumeUUw==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.11.tgz", + "integrity": "sha512-Vojm5YANhEv1dmX0IcI7Q4yu9ZSKIgOicETVhQlEMCGqVtZWr3HkSOcF6+3JRewY9EaPflxT/maKQ0kYaKt4Sg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.8", + "@storybook/core-webpack": "8.6.11", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", @@ -5575,7 +5517,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.8" + "storybook": "^8.6.11" }, "peerDependenciesMeta": { "typescript": { @@ -5584,9 +5526,9 @@ } }, "node_modules/@storybook/components": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.8.tgz", - "integrity": "sha512-zfJcNEDrhJYFMKw6fPeeOVYqDh9cUl7Og3p+mVtMFA31ShPIlz8JFXEmMOODGalT4yLakZgFHWcp9MZn9TFUXg==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.11.tgz", + "integrity": "sha512-+lHcwQsSO8usKTXIBBmgmRCAa0L+KQaLJ5ARqkRTm6OjzkVVS+EPnIgL4H1nqzbwiTVXxSSOwAk+rST83KICnA==", "dev": true, "license": "MIT", "funding": { @@ -5598,13 +5540,13 @@ } }, "node_modules/@storybook/core": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.8.tgz", - "integrity": "sha512-CZhLIAGNRJlmf9eQ70ATgNc/MNXKIS/nvN3jiGWkp5oN69OSiqzdLukxsuZdCPUtj7gtF0XTESQ7wkkZgkYXoQ==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.11.tgz", + "integrity": "sha512-fhzLQ9HpljbLpkHykafmcjIERHI5j6SZhylFCDwEWkETuZtRbyCs3mmULutcEOzKhxRgNtiIRoRmZPdQcPtHNg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/theming": "8.6.8", + "@storybook/theming": "8.6.11", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", @@ -5630,9 +5572,9 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.8.tgz", - "integrity": "sha512-QI5G5H4kOn3M0Y4E3RpuF08Mcm2X0yaywKbbj9g0S8RkrOIam3oXdJz6qHkru30l9nTsRyw/mng1YuzumGtPFw==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.11.tgz", + "integrity": "sha512-VbpcELiHBS+VtrXx+l/CK9fYfVzcUD8f1SaLV6JM7tNPX9EttnfSeGbOsi+5vYuqnhsWIbG3EjIwkiUeAP41XQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5643,7 +5585,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.8" + "storybook": "^8.6.11" } }, "node_modules/@storybook/csf": { @@ -5664,9 +5606,9 @@ "license": "MIT" }, "node_modules/@storybook/instrumenter": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.8.tgz", - "integrity": "sha512-FgfIINbA5svlIIBMc+q4hdIEdLRT+8i6R76BUeKj5btD8tYxWY4LywMeItZx8uyaFGFjYlFdMKnyXCmSnFXnaQ==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.11.tgz", + "integrity": "sha512-IOLvc4BOVKofWhyRScA2h/R36cACBK3DUCrZkQTLU+FUIXWg7Yjyco7lDEk/0W9mlH0Fe/eWEhluI2WTowkesQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5678,13 +5620,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.8" + "storybook": "^8.6.11" } }, "node_modules/@storybook/manager-api": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.8.tgz", - "integrity": "sha512-MTyMYRXSP0iRE5xaFCNdD8ZBrhtJXTDNhQTWsjZQBmYgA94mf6FHSzsgGgOQp/sqTPzONZpBCrw7Y0aY8zxHKw==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.11.tgz", + "integrity": "sha512-U3ijEFX7B7wNYzFctmTIXOiN0zLlt8/9EHbZQUUrQ1pf7bQzADJCy63Y3B+kir8i+n3LsBWB42X2aSiT0lLaKQ==", "dev": true, "license": "MIT", "funding": { @@ -5710,14 +5652,14 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.8.tgz", - "integrity": "sha512-fK7UI9OPUm4we291nvhlZ5ydonW6qhatisgAR3Ty6DUuSJtQTDiuBNRJY/nDZUwQs0+Gq+MmyZ2/R3s/SJIaLg==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.11.tgz", + "integrity": "sha512-Fn2Zyqbpad7VyWZDdPJoB0aQ1QyOwYzn1o6viB8mUvyCobj9w0DyMFOmhi8LXy1gZjZS3T7c2f/Wnb5UcWJveA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.8", - "@storybook/react": "8.6.8", + "@storybook/core-webpack": "8.6.11", + "@storybook/react": "8.6.11", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/semver": "^7.3.4", "find-up": "^5.0.0", @@ -5738,7 +5680,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.6.8" + "storybook": "^8.6.11" }, "peerDependenciesMeta": { "typescript": { @@ -5747,9 +5689,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.8.tgz", - "integrity": "sha512-c5Hc6Knmun+aBEesEjD+5LPuqFTQMCSLg+zS41JncH7B+agrUiihX3opma4OVZ4GibWIIq1YvIeXBLqj1MoIUw==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.11.tgz", + "integrity": "sha512-NpSVJFa9MkPq3u/h+bvx+iSnm6OG6mMUzMgmY67mA0dgIgOWcaoP2Y7254SZlBeho97HCValTDKJyqZMwiVlyQ==", "dev": true, "license": "MIT", "funding": { @@ -5761,18 +5703,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.8.tgz", - "integrity": "sha512-UVP+vuVrgC9CgUp2ZKQs3ch2JzImGAUbVUpmb+GMAOGD3DGAf9iP7qldIZc5rrNw/jNyTFTo4oX6XnXrWgOCVg==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.11.tgz", + "integrity": "sha512-ZaE2IS5alauWxEvWo8LNEi27QxiRfJrfffDpQJIIvY4WnR+jzgLdtMOAVo/cSM9mJSRLESEYW57b0l7JdQGm1g==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.6.8", + "@storybook/components": "8.6.11", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.8", - "@storybook/preview-api": "8.6.8", - "@storybook/react-dom-shim": "8.6.8", - "@storybook/theming": "8.6.8" + "@storybook/manager-api": "8.6.11", + "@storybook/preview-api": "8.6.11", + "@storybook/react-dom-shim": "8.6.11", + "@storybook/theming": "8.6.11" }, "engines": { "node": ">=18.0.0" @@ -5782,10 +5724,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.8", + "@storybook/test": "8.6.11", "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.6.8", + "storybook": "^8.6.11", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5818,9 +5760,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.8.tgz", - "integrity": "sha512-wp+3z5j8QJkFMVGqyE0FKcf61TL6LKLiIDxxQGxprSHKOE0RqNLGzQUTVZHWBbC3LfE018uFbGlLt02dVpUXKg==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.11.tgz", + "integrity": "sha512-giwqwx0PO70SyqoZ25CBM2tpAjJX5sjPm7uWKknYcFGl3H2PYDqqnvH7NfEXENQMq5DpAJisCZ0KkRvNHzLV2w==", "dev": true, "license": "MIT", "funding": { @@ -5830,19 +5772,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.6.8" + "storybook": "^8.6.11" } }, "node_modules/@storybook/react-webpack5": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.8.tgz", - "integrity": "sha512-RAFiqOXj4WJ6U5mSyl7NFYsoq5zF12KUqoOAFx2972IO+YbqHVGqENf+zLCFyn9Gd19x3dupvWFipn4wqPqK8w==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.11.tgz", + "integrity": "sha512-tEzIKmY9RbqAjBGYjWlbS/cW23Vp43FdNM0uEPHFxIinyFIU69kpnVyHOhD02vwQMb88RE84WhGS5NYuGiL0iw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.6.8", - "@storybook/preset-react-webpack": "8.6.8", - "@storybook/react": "8.6.8" + "@storybook/builder-webpack5": "8.6.11", + "@storybook/preset-react-webpack": "8.6.11", + "@storybook/react": "8.6.11" }, "engines": { "node": ">=18.0.0" @@ -5854,7 +5796,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.6.8", + "storybook": "^8.6.11", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5864,14 +5806,14 @@ } }, "node_modules/@storybook/test": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.8.tgz", - "integrity": "sha512-wMJkWWcfPK374uw3JPpgMBkPYkIhYPxqRVp/KAJR/h10YIhSAXg7yiH1LYmmNAwrmvI7Uc3KZZ9fX/Qvot5uRg==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.11.tgz", + "integrity": "sha512-bk8JCRmVRHjnyt+/YnzCMEd4Y/K2L3uM+sCNuH4pYw6XT2UkR3Dj5mScGnfMvm98lHfpZDcD/AbY2vorOQsq+g==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.8", + "@storybook/instrumenter": "8.6.11", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -5883,7 +5825,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.8" + "storybook": "^8.6.11" } }, "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { @@ -6002,9 +5944,9 @@ } }, "node_modules/@storybook/theming": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.8.tgz", - "integrity": "sha512-Lgtmjudkd8s5wTxCbMvZNIY7iWOwnsWI04zejpubxbuNLFvOIvJnICVzrEzxuMYPIDg9cvPVYT3AkuE2NucUVg==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.11.tgz", + "integrity": "sha512-G7IK5P9gzofUjfYhMo9Pdgbqcr22eoKFLD808Q8RxJopDoypdZKg4tes2iD+6YnrtnHS0nEoP/soMmfFYl9FIw==", "dev": true, "license": "MIT", "funding": { @@ -6267,63 +6209,289 @@ "@swc/counter": "^0.1.3" } }, - "node_modules/@tailwindcss/container-queries": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz", - "integrity": "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==", + "node_modules/@tailwindcss/node": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.17.tgz", + "integrity": "sha512-LIdNwcqyY7578VpofXyqjH6f+3fP4nrz7FBLki5HpzqjYfXdF2m/eW18ZfoKePtDGg90Bvvfpov9d2gy5XVCbg==", "license": "MIT", - "peerDependencies": { - "tailwindcss": ">=3.2.0" + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "tailwindcss": "4.0.17" } }, - "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", - "dev": true, + "node_modules/@tailwindcss/node/node_modules/tailwindcss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", + "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", + "license": "MIT" + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.17.tgz", + "integrity": "sha512-B4OaUIRD2uVrULpAD1Yksx2+wNarQr2rQh65nXqaqbLY1jCd8fO+3KLh/+TH4Hzh2NTHQvgxVbPdUDOtLk7vAw==", "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": ">= 10" }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.0.17", + "@tailwindcss/oxide-darwin-arm64": "4.0.17", + "@tailwindcss/oxide-darwin-x64": "4.0.17", + "@tailwindcss/oxide-freebsd-x64": "4.0.17", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.17", + "@tailwindcss/oxide-linux-arm64-gnu": "4.0.17", + "@tailwindcss/oxide-linux-arm64-musl": "4.0.17", + "@tailwindcss/oxide-linux-x64-gnu": "4.0.17", + "@tailwindcss/oxide-linux-x64-musl": "4.0.17", + "@tailwindcss/oxide-win32-arm64-msvc": "4.0.17", + "@tailwindcss/oxide-win32-x64-msvc": "4.0.17" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.17.tgz", + "integrity": "sha512-3RfO0ZK64WAhop+EbHeyxGThyDr/fYhxPzDbEQjD2+v7ZhKTb2svTWy+KK+J1PHATus2/CQGAGp7pHY/8M8ugg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "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, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.17.tgz", + "integrity": "sha512-e1uayxFQCCDuzTk9s8q7MC5jFN42IY7nzcr5n0Mw/AcUHwD6JaBkXnATkD924ZsHyPDvddnusIEvkgLd2CiREg==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 10" } }, - "node_modules/@testing-library/dom/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, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.17.tgz", + "integrity": "sha512-d6z7HSdOKfXQ0HPlVx1jduUf/YtBuCCtEDIEFeBCzgRRtDsUuRtofPqxIVaSCUTOk5+OfRLonje6n9dF6AH8wQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.17.tgz", + "integrity": "sha512-EjrVa6lx3wzXz3l5MsdOGtYIsRjgs5Mru6lDv4RuiXpguWeOb3UzGJ7vw7PEzcFadKNvNslEQqoAABeMezprxQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.17.tgz", + "integrity": "sha512-65zXfCOdi8wuaY0Ye6qMR5LAXokHYtrGvo9t/NmxvSZtCCitXV/gzJ/WP5ksXPhff1SV5rov0S+ZIZU+/4eyCQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.17.tgz", + "integrity": "sha512-+aaq6hJ8ioTdbJV5IA1WjWgLmun4T7eYLTvJIToiXLHy5JzUERRbIZjAcjgK9qXMwnvuu7rqpxzej+hGoEcG5g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.17.tgz", + "integrity": "sha512-/FhWgZCdUGAeYHYnZKekiOC0aXFiBIoNCA0bwzkICiMYS5Rtx2KxFfMUXQVnl4uZRblG5ypt5vpPhVaXgGk80w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.17.tgz", + "integrity": "sha512-gELJzOHK6GDoIpm/539Golvk+QWZjxQcbkKq9eB2kzNkOvrP0xc5UPgO9bIMNt1M48mO8ZeNenCMGt6tfkvVBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.17.tgz", + "integrity": "sha512-68NwxcJrZn94IOW4TysMIbYv5AlM6So1luTlbYUDIGnKma1yTFGBRNEJ+SacJ3PZE2rgcTBNRHX1TB4EQ/XEHw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.17.tgz", + "integrity": "sha512-AkBO8efP2/7wkEXkNlXzRD4f/7WerqKHlc6PWb5v0jGbbm22DFBLbIM19IJQ3b+tNewQZa+WnPOaGm0SmwMNjw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.17.tgz", + "integrity": "sha512-7/DTEvXcoWlqX0dAlcN0zlmcEu9xSermuo7VNGX9tJ3nYMdo735SHvbrHDln1+LYfF6NhJ3hjbpbjkMOAGmkDg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.0.17.tgz", + "integrity": "sha512-qeJbRTB5FMZXmuJF+eePd235EGY6IyJZF0Bh0YM6uMcCI4L9Z7dy+lPuLAhxOJzxnajsbjPoDAKOuAqZRtf1PQ==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.0.17", + "@tailwindcss/oxide": "4.0.17", + "lightningcss": "1.29.2", + "postcss": "^8.4.41", + "tailwindcss": "4.0.17" + } + }, + "node_modules/@tailwindcss/postcss/node_modules/tailwindcss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", + "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", + "license": "MIT" + }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/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" @@ -6552,6 +6720,17 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -6841,9 +7020,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.8.tgz", - "integrity": "sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==", + "version": "22.13.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", + "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", "devOptional": true, "license": "MIT", "dependencies": { @@ -6884,9 +7063,9 @@ "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", "dev": true, "license": "MIT" }, @@ -6977,7 +7156,74 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/parser": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz", + "integrity": "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", + "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.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/type-utils": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz", + "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/utils": "8.28.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", @@ -6995,7 +7241,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", @@ -7009,7 +7255,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", @@ -7036,7 +7282,7 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", @@ -7060,7 +7306,7 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", @@ -7078,7 +7324,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { + "node_modules/@typescript-eslint/type-utils/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==", @@ -7091,67 +7337,24 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/parser": { + "node_modules/@typescript-eslint/types": { "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz", - "integrity": "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", + "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/typescript-estree": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.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", - "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/typescript-estree": { "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", - "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.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/parser/node_modules/@typescript-eslint/types": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", - "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", - "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/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", - "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", + "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", "dev": true, "license": "MIT", "dependencies": { @@ -7175,139 +7378,7 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", - "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.28.0", - "eslint-visitor-keys": "^4.2.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/parser/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/@typescript-eslint/scope-manager": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz", - "integrity": "sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.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/type-utils": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz", - "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.28.0", - "@typescript-eslint/utils": "8.28.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", - "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.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/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", - "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", - "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/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", - "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "node_modules/@typescript-eslint/utils": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", @@ -7331,7 +7402,7 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/visitor-keys": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", @@ -7349,7 +7420,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "node_modules/@typescript-eslint/visitor-keys/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==", @@ -7362,215 +7433,224 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.25.0.tgz", - "integrity": "sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.3.3.tgz", + "integrity": "sha512-EpRILdWr3/xDa/7MoyfO7JuBIJqpBMphtu4+80BK1bRfFcniVT74h3Z7q1+WOc92FuIAYatB1vn9TJR67sORGw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.27.0.tgz", - "integrity": "sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.3.3.tgz", + "integrity": "sha512-ntj/g7lPyqwinMJWZ+DKHBse8HhVxswGTmNgFKJtdgGub3M3zp5BSZ3bvMP+kBT6dnYJLSVlDqdwOq1P8i0+/g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", - "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.3.3.tgz", + "integrity": "sha512-l6BT8f2CU821EW7U8hSUK8XPq4bmyTlt9Mn4ERrfjJNoCw0/JoHAh9amZZtV3cwC3bwwIat+GUnrcHTG9+qixw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", - "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.3.3.tgz", + "integrity": "sha512-8ScEc5a4y7oE2BonRvzJ+2GSkBaYWyh0/Ko4Q25e/ix6ANpJNhwEPZvCR6GVRmsQAYMIfQvYLdM6YEN+qRjnAQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.27.0", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/typescript-estree/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==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.3.3.tgz", + "integrity": "sha512-8qQ6l1VTzLNd3xb2IEXISOKwMGXDCzY/UNy/7SovFW2Sp0K3YbL7Ao7R18v6SQkLqQlhhqSBIFRk+u6+qu5R5A==", + "cpu": [ + "arm" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/utils": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.27.0.tgz", - "integrity": "sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.3.3.tgz", + "integrity": "sha512-v81R2wjqcWXJlQY23byqYHt9221h4anQ6wwN64oMD/WAE+FmxPHFZee5bhRkNVtzqO/q7wki33VFWlhiADwUeQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.27.0", - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/typescript-estree": "8.27.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", - "typescript": ">=4.8.4 <5.9.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", - "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.3.3.tgz", + "integrity": "sha512-cAOx/j0u5coMg4oct/BwMzvWJdVciVauUvsd+GQB/1FZYKQZmqPy0EjJzJGbVzFc6gbnfEcSqvQE6gvbGf2N8Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", - "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.3.3.tgz", + "integrity": "sha512-mq2blqwErgDJD4gtFDlTX/HZ7lNP8YCHYFij2gkXPtMzrXxPW1hOtxL6xg4NWxvnj4bppppb0W3s/buvM55yfg==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", - "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.3.3.tgz", + "integrity": "sha512-u0VRzfFYysarYHnztj2k2xr+eu9rmgoTUUgCCIT37Nr+j0A05Xk2c3RY8Mh5+DhCl2aYibihnaAEJHeR0UOFIQ==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.27.0", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/utils/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==", + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.3.3.tgz", + "integrity": "sha512-OrVo5ZsG29kBF0Ug95a2KidS16PqAMmQNozM6InbquOfW/udouk063e25JVLqIBhHLB2WyBnixOQ19tmeC/hIg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz", - "integrity": "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==", + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.3.3.tgz", + "integrity": "sha512-PYnmrwZ4HMp9SkrOhqPghY/aoL+Rtd4CQbr93GlrRTjK6kDzfMfgz3UH3jt6elrQAfupa1qyr1uXzeVmoEAxUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.3.3.tgz", + "integrity": "sha512-81AnQY6fShmktQw4hWDUIilsKSdvr/acdJ5azAreu2IWNlaJOKphJSsUVWE+yCk6kBMoQyG9ZHCb/krb5K0PEA==", + "cpu": [ + "wasm32" + ], "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@typescript-eslint/types": "8.25.0", - "eslint-visitor-keys": "^4.2.0" + "@napi-rs/wasm-runtime": "^0.2.7" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=14.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys/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==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.3.3.tgz", + "integrity": "sha512-X/42BMNw7cW6xrB9syuP5RusRnWGoq+IqvJO8IDpp/BZg64J1uuIW6qA/1Cl13Y4LyLXbJVYbYNSKwR/FiHEng==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.3.3.tgz", + "integrity": "sha512-EGNnNGQxMU5aTN7js3ETYvuw882zcO+dsVjs+DwO2j/fRVKth87C8e2GzxW1L3+iWAXMyJhvFBKRavk9Og1Z6A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.3.3.tgz", + "integrity": "sha512-GraLbYqOJcmW1qY3osB+2YIiD62nVf2/bVLHZmrb4t/YSUwE03l7TwcDJl08T/Tm3SVhepX8RQkpzWbag/Sb4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@vcarl/remark-headings": { "version": "0.1.0", @@ -8180,16 +8260,11 @@ "node": ">=4" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -8199,12 +8274,6 @@ "node": ">= 8" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "license": "MIT" - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -8458,60 +8527,23 @@ "license": "MIT", "engines": { "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "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": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, + } + }, + "node_modules/asynckit": { + "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": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 4.0.0" } }, "node_modules/available-typed-arrays": { @@ -8806,6 +8838,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8864,6 +8897,7 @@ "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "devOptional": true, "funding": [ { "type": "opencollective", @@ -9056,15 +9090,6 @@ "node": ">=6" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001707", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", @@ -9208,6 +9233,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -9232,6 +9258,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" @@ -10306,7 +10333,6 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=8" } @@ -10340,12 +10366,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "license": "Apache-2.0" - }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -10379,12 +10399,6 @@ "node": ">=8" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT" - }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -10542,6 +10556,7 @@ "version": "1.5.123", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz", "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==", + "devOptional": true, "license": "ISC" }, "node_modules/emittery": { @@ -10592,7 +10607,6 @@ "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "devOptional": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -10922,6 +10936,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -10971,18 +10986,19 @@ } }, "node_modules/eslint": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", - "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "9.21.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -10994,7 +11010,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -11031,13 +11047,13 @@ } }, "node_modules/eslint-config-next": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.0.tgz", - "integrity": "sha512-LkG0KKpinAoNPk2HXSx0fImFb/hQ6RnhSxTkpJFTkQ0SmnzsbRsjjN95WC/mDY34nKOenpptYEVvfkCR/h+VjA==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.4.tgz", + "integrity": "sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.2.0", + "@next/eslint-plugin-next": "15.2.4", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -11116,20 +11132,20 @@ } }, "node_modules/eslint-mdx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.2.0.tgz", - "integrity": "sha512-7A6/TDZeUh8ORwM2pe+n1FyUjwEYfGF1OZI+sn45L11NMHSzj/RTK+VqAGjIi+kvDrGc3yScUa20L3DKW0IRjg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.3.1.tgz", + "integrity": "sha512-3koPGGjGOKXxWBIY0ExcMhtEGWRpbM/xrqIp6c4XDxZOMs/nIUEZKnaKZf+sAMRtqdv5Z99Nq5izWyCLoTdcGg==", "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.14.1", "acorn-jsx": "^5.3.2", - "espree": "^9.6.1", + "espree": "^9.6.1 || ^10.3.0", "estree-util-visit": "^2.0.0", "remark-mdx": "^3.1.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", - "synckit": "^0.9.2", + "synckit": "^0.10.3", "tslib": "^2.8.1", "unified": "^11.0.5", "unified-engine": "^11.2.2", @@ -11145,25 +11161,13 @@ "url": "https://opencollective.com/unified" }, "peerDependencies": { - "eslint": ">=8.0.0" - } - }, - "node_modules/eslint-mdx/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "eslint": ">=8.0.0", + "remark-lint-file-extension": "*" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "remark-lint-file-extension": { + "optional": true + } } }, "node_modules/eslint-module-utils": { @@ -11229,25 +11233,24 @@ } }, "node_modules/eslint-plugin-import-x": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.6.1.tgz", - "integrity": "sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==", + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.9.4.tgz", + "integrity": "sha512-IPWbN0KBgBCpAiSlUcS17zc1eqMzRlYz15AzsFrw2Qfqt+e0IupxYbvYD96bGLKVlNdkNwa4ggv1skztpaZR/g==", "dev": true, "license": "MIT", "dependencies": { "@types/doctrine": "^0.0.9", - "@typescript-eslint/scope-manager": "^8.1.0", - "@typescript-eslint/utils": "^8.1.0", - "debug": "^4.3.4", + "@typescript-eslint/utils": "^8.28.0", + "debug": "^4.4.0", "doctrine": "^3.0.0", - "enhanced-resolve": "^5.17.1", "eslint-import-resolver-node": "^0.3.9", - "get-tsconfig": "^4.7.3", + "get-tsconfig": "^4.10.0", "is-glob": "^4.0.3", - "minimatch": "^9.0.3", - "semver": "^7.6.3", - "stable-hash": "^0.0.4", - "tslib": "^2.6.3" + "minimatch": "^10.0.1", + "semver": "^7.7.1", + "stable-hash": "^0.0.5", + "tslib": "^2.8.1", + "unrs-resolver": "^1.3.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11269,6 +11272,29 @@ "node": ">=6.0.0" } }, + "node_modules/eslint-plugin-import-x/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "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", @@ -11341,300 +11367,104 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "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": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-mdx": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz", - "integrity": "sha512-lUE7tP7IrIRHU3gTtASDe5u4YM2SvQveYVJfuo82yn3MLh/B/v05FNySURCK4aIxIYF1QYo3IRemQG/lyQzpAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-mdx": "^3.1.5", - "eslint-plugin-markdown": "^3.0.1", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "tslib": "^2.6.2", - "unified": "^11.0.4", - "vfile": "^6.0.1" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "eslint": ">=8.0.0" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-mdx/node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/eslint-plugin-markdown": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", - "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^0.8.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/eslint-plugin-mdx/node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/eslint-plugin-mdx/node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/eslint-plugin-mdx/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "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": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-mdx/node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "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, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-mdx/node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "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": "MIT", + "license": "ISC", "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "brace-expansion": "^1.1.7" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": "*" } }, - "node_modules/eslint-plugin-mdx/node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "node_modules/eslint-plugin-mdx": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.3.1.tgz", + "integrity": "sha512-YXm2YANiJ3Sl/6AdZUeR53deGG1JI6rG9crHITR2Mtb9k8SFWRspoHetnIvaYTEfgPsvUwAwVgT1JxRoZywpTA==", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^2.0.2" + "eslint-mdx": "^3.3.1", + "mdast-util-from-markdown": "^2.0.2", + "remark-mdx": "^3.1.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "synckit": "^0.10.3", + "tslib": "^2.8.1", + "unified": "^11.0.5", + "vfile": "^6.0.3" + }, + "engines": { + "node": ">=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=8.0.0" } }, "node_modules/eslint-plugin-no-relative-import-paths": { @@ -11743,9 +11573,9 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.6.tgz", - "integrity": "sha512-3WodYD6Bs9ACqnB+TP2TuLh774c/nacAjxSKOP9bHJ2c8rf+nrhocxjjeAWNmO9IPkFIzTKlcl0vNXI2yYpVOw==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.12.0.tgz", + "integrity": "sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==", "dev": true, "license": "MIT", "dependencies": { @@ -12754,19 +12584,6 @@ "node": ">=0.4.x" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -12801,6 +12618,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -13018,6 +12836,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -13192,7 +13011,6 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "devOptional": true, "license": "ISC" }, "node_modules/graphemer": { @@ -13670,9 +13488,9 @@ } }, "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.5.tgz", + "integrity": "sha512-24CG9o869vSa86BGCf7x65slrAztzFTU5VBQzEIwqjhKuB4zCC7xlH/7NCcZ1EN5MdmGx9lUqugfutuT6J+jKQ==", "dev": true, "funding": [ { @@ -14321,6 +14139,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -17130,9 +16949,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "dev": true, "license": "MIT", - "optional": true, "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -17377,7 +17194,235 @@ "type-check": "~0.4.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.2", + "lightningcss-darwin-x64": "1.29.2", + "lightningcss-freebsd-x64": "1.29.2", + "lightningcss-linux-arm-gnueabihf": "1.29.2", + "lightningcss-linux-arm64-gnu": "1.29.2", + "lightningcss-linux-arm64-musl": "1.29.2", + "lightningcss-linux-x64-gnu": "1.29.2", + "lightningcss-linux-x64-musl": "1.29.2", + "lightningcss-win32-arm64-msvc": "1.29.2", + "lightningcss-win32-x64-msvc": "1.29.2" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lilconfig": { @@ -17408,9 +17453,9 @@ } }, "node_modules/lint-staged": { - "version": "15.4.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", - "integrity": "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.0.tgz", + "integrity": "sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==", "license": "MIT", "dependencies": { "chalk": "^5.4.1", @@ -19667,17 +19712,6 @@ "dev": true, "license": "ISC" }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -19720,12 +19754,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/next/-/next-15.2.3.tgz", - "integrity": "sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.4.tgz", + "integrity": "sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==", "license": "MIT", "dependencies": { - "@next/env": "15.2.3", + "@next/env": "15.2.4", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -19740,14 +19774,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.2.3", - "@next/swc-darwin-x64": "15.2.3", - "@next/swc-linux-arm64-gnu": "15.2.3", - "@next/swc-linux-arm64-musl": "15.2.3", - "@next/swc-linux-x64-gnu": "15.2.3", - "@next/swc-linux-x64-musl": "15.2.3", - "@next/swc-win32-arm64-msvc": "15.2.3", - "@next/swc-win32-x64-msvc": "15.2.3", + "@next/swc-darwin-arm64": "15.2.4", + "@next/swc-darwin-x64": "15.2.4", + "@next/swc-linux-arm64-gnu": "15.2.4", + "@next/swc-linux-arm64-musl": "15.2.4", + "@next/swc-linux-x64-gnu": "15.2.4", + "@next/swc-linux-x64-musl": "15.2.4", + "@next/swc-win32-arm64-msvc": "15.2.4", + "@next/swc-win32-x64-msvc": "15.2.4", "sharp": "^0.33.5" }, "peerDependencies": { @@ -19840,6 +19874,7 @@ "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "devOptional": true, "license": "MIT" }, "node_modules/nopt": { @@ -19877,15 +19912,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -19983,20 +20010,12 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -20143,13 +20162,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/oniguruma-parser": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.5.4.tgz", + "integrity": "sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==", + "license": "MIT" + }, "node_modules/oniguruma-to-es": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", - "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.1.0.tgz", + "integrity": "sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==", "license": "MIT", "dependencies": { "emoji-regex-xs": "^1.0.0", + "oniguruma-parser": "^0.5.4", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } @@ -20582,19 +20608,11 @@ "node": ">=0.10" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -20784,77 +20802,6 @@ "postcss": "^8.4.38" } }, - "node_modules/postcss-import": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.1.0.tgz", - "integrity": "sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, "node_modules/postcss-loader": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", @@ -20895,34 +20842,6 @@ "jiti": "bin/jiti.js" } }, - "node_modules/postcss-mixins": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-11.0.3.tgz", - "integrity": "sha512-HZa6DHlN7uCkp7GTFNvhpyK/Gi9+vrVG7FPl2oQdj+sXUuYo4ri9OsWBseTnvnLfWxRWOq8/VwcHcixtZPrRRg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-js": "^4.0.1", - "postcss-simple-vars": "^7.0.1", - "sugarss": "^4.0.1", - "tinyglobby": "^0.2.7" - }, - "engines": { - "node": "^18.0 || ^ 20.0 || >= 22.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", @@ -20986,44 +20905,6 @@ "postcss": "^8.1.0" } }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", @@ -21071,22 +20952,6 @@ "node": ">=4" } }, - "node_modules/postcss-simple-vars": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-7.0.1.tgz", - "integrity": "sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==", - "license": "MIT", - "engines": { - "node": ">=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.1" - } - }, "node_modules/postcss-sorting": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", @@ -21114,9 +20979,9 @@ } }, "node_modules/prettier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", - "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, "license": "MIT", "bin": { @@ -21455,9 +21320,9 @@ } }, "node_modules/react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", - "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -21509,15 +21374,15 @@ } }, "node_modules/react-dom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", - "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", "dependencies": { - "scheduler": "^0.25.0" + "scheduler": "^0.26.0" }, "peerDependencies": { - "react": "^19.0.0" + "react": "^19.1.0" } }, "node_modules/react-is": { @@ -21602,15 +21467,6 @@ } } }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, "node_modules/read-package-json-fast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", @@ -21654,6 +21510,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -23473,9 +23330,9 @@ } }, "node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, "node_modules/schema-utils": { @@ -23677,17 +23534,17 @@ } }, "node_modules/shiki": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.1.0.tgz", - "integrity": "sha512-LdTNyWQlC5zdCaHdcp1zPA1OVA2ivb+KjGOOnGcy02tGaF5ja+dGibWFH7Ar8YlngUgK/scDqworK18Ys9cbYA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.2.1.tgz", + "integrity": "sha512-VML/2o1/KGYkEf/stJJ+s9Ypn7jUKQPomGLGYso4JJFMFxVDyPNsjsI3MB3KLjlMOeH44gyaPdXC6rik2WXvUQ==", "license": "MIT", "dependencies": { - "@shikijs/core": "3.1.0", - "@shikijs/engine-javascript": "3.1.0", - "@shikijs/engine-oniguruma": "3.1.0", - "@shikijs/langs": "3.1.0", - "@shikijs/themes": "3.1.0", - "@shikijs/types": "3.1.0", + "@shikijs/core": "3.2.1", + "@shikijs/engine-javascript": "3.2.1", + "@shikijs/engine-oniguruma": "3.2.1", + "@shikijs/langs": "3.2.1", + "@shikijs/themes": "3.2.1", + "@shikijs/types": "3.2.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } @@ -23977,13 +23834,13 @@ } }, "node_modules/storybook": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.8.tgz", - "integrity": "sha512-0Ze7QC0Hqx+ulms/FiQ7PNyaBgmaoxqxLOi8PQc5sOepO1+Ea8nssQGmOHS2QIX1ybb/GW56Fa5eyj+PJgsYDQ==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.11.tgz", + "integrity": "sha512-B2wxpmq1QYS4JV7RQu1mOHD7akfoGbuoUSkx2D2GZgv/zXAHZmDpSFcTvvBBm8FAtzChI9HhITSJ0YS0ePfnJQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.6.8" + "@storybook/core": "8.6.11" }, "bin": { "getstorybook": "bin/index.cjs", @@ -24378,9 +24235,9 @@ } }, "node_modules/stylelint": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.15.0.tgz", - "integrity": "sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw==", + "version": "16.17.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.17.0.tgz", + "integrity": "sha512-I9OwVIWRMqVm2Br5iTbrfSqGRPWQUlvm6oXO1xZuYYu0Gpduy67N8wXOZv15p6E/JdlZiAtQaIoLKZEWk5hrjw==", "dev": true, "funding": [ { @@ -24407,7 +24264,7 @@ "debug": "^4.3.7", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^10.0.6", + "file-entry-cache": "^10.0.7", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -24592,138 +24449,34 @@ "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==", - "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" - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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": { - "@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", + "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": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" + "isexe": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "bin": { + "which": "bin/which" } }, - "node_modules/sugarss": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", - "integrity": "sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==", - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "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==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, - "peerDependencies": { - "postcss": "^8.3.3" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/supports-color": { @@ -24828,14 +24581,14 @@ "license": "MIT" }, "node_modules/synckit": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.10.3.tgz", + "integrity": "sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==", "dev": true, "license": "MIT", "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.0", + "tslib": "^2.8.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -24925,87 +24678,10 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/tailwindcss": { - "version": "3.4.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", - "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.6", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/tailwindcss/node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -25215,27 +24891,6 @@ "node": "*" } }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -25254,6 +24909,7 @@ "version": "0.2.12", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", + "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.4.3", @@ -25270,6 +24926,7 @@ "version": "6.4.3", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "dev": true, "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -25284,6 +24941,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -25426,12 +25084,6 @@ "node": ">=6.10" } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" - }, "node_modules/ts-morph": { "version": "22.0.0", "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-22.0.0.tgz", @@ -25585,318 +25237,134 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "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/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "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", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", - "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.26.1", - "@typescript-eslint/parser": "8.26.1", - "@typescript-eslint/utils": "8.26.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", - "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/type-utils": "8.26.1", - "@typescript-eslint/utils": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - }, - "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", - "typescript": ">=4.8.4 <5.9.0" + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", - "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", + "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", - "dependencies": { - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/typescript-estree": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", - "debug": "^4.3.4" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12.20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", - "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 0.4" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", - "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.26.1", - "@typescript-eslint/utils": "8.26.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", - "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", - "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "node_modules/typed-array-length": { + "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": { - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", - "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": "^2.0.1" + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", - "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/typescript-estree": "8.26.1" + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "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", - "typescript": ">=4.8.4 <5.9.0" + "node": ">=14.17" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", - "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", + "node_modules/typescript-eslint": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.28.0.tgz", + "integrity": "sha512-jfZtxJoHm59bvoCMYCe2BM0/baMswRhMmYhy+w6VfcyHrjxZ0OJe0tGasydCpIpA+A/WIJhTyZfb3EtwNC/kHQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.1", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/eslint-plugin": "8.28.0", + "@typescript-eslint/parser": "8.28.0", + "@typescript-eslint/utils": "8.28.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25904,19 +25372,10 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/typescript-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": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/uc.micro": { @@ -26310,10 +25769,38 @@ "node": ">= 10.0.0" } }, + "node_modules/unrs-resolver": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.3.3.tgz", + "integrity": "sha512-PFLAGQzYlyjniXdbmQ3dnGMZJXX5yrl2YS4DLRfR3BhgUsE1zpRIrccp9XMOGRfIHpdFvCn/nr5N1KMVda4x3A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/JounQin" + }, + "optionalDependencies": { + "@unrs/resolver-binding-darwin-arm64": "1.3.3", + "@unrs/resolver-binding-darwin-x64": "1.3.3", + "@unrs/resolver-binding-freebsd-x64": "1.3.3", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.3.3", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.3.3", + "@unrs/resolver-binding-linux-arm64-gnu": "1.3.3", + "@unrs/resolver-binding-linux-arm64-musl": "1.3.3", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.3.3", + "@unrs/resolver-binding-linux-s390x-gnu": "1.3.3", + "@unrs/resolver-binding-linux-x64-gnu": "1.3.3", + "@unrs/resolver-binding-linux-x64-musl": "1.3.3", + "@unrs/resolver-binding-wasm32-wasi": "1.3.3", + "@unrs/resolver-binding-win32-arm64-msvc": "1.3.3", + "@unrs/resolver-binding-win32-ia32-msvc": "1.3.3", + "@unrs/resolver-binding-win32-x64-msvc": "1.3.3" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "devOptional": true, "funding": [ { "type": "opencollective", @@ -27388,140 +26875,61 @@ "packages/i18n": { "name": "@node-core/website-i18n", "devDependencies": { - "eslint-import-resolver-typescript": "~3.8.3", + "eslint-import-resolver-typescript": "~4.3.1", "typescript": "~5.7.2", - "typescript-eslint": "~8.25.0" - } - }, - "packages/i18n/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", - "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/type-utils": "8.25.0", - "@typescript-eslint/utils": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - }, - "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", - "typescript": ">=4.8.4 <5.8.0" + "typescript-eslint": "~8.28.0" } }, - "packages/i18n/node_modules/@typescript-eslint/parser": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", - "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", + "packages/i18n/node_modules/eslint-import-resolver-typescript": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.1.tgz", + "integrity": "sha512-/dR9YMomeBlvfuvX5q0C3Y/2PHC9OCRdT2ijFwdfq/4Bq+4m5/lqstEp9k3P6ocha1pCbhoY9fkwVYLmOqR0VQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/typescript-estree": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", - "debug": "^4.3.4" + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.12", + "unrs-resolver": "^1.3.3" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^16.17.0 || >=18.6.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/eslint-import-resolver-typescript" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "packages/i18n/node_modules/@typescript-eslint/type-utils": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", - "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.25.0", - "@typescript-eslint/utils": "8.25.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, - "packages/i18n/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", - "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", + "packages/i18n/node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "semver": "^7.7.1" } }, - "packages/i18n/node_modules/@typescript-eslint/utils": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", - "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", + "packages/i18n/node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/typescript-estree": "8.25.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", - "typescript": ">=4.8.4 <5.8.0" - } + "license": "MIT" }, "packages/i18n/node_modules/typescript": { "version": "5.7.3", @@ -27537,29 +26945,6 @@ "node": ">=14.17" } }, - "packages/i18n/node_modules/typescript-eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", - "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.25.0", - "@typescript-eslint/parser": "8.25.0", - "@typescript-eslint/utils": "8.25.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", - "typescript": ">=4.8.4 <5.8.0" - } - }, "packages/ui-components": { "name": "@node-core/ui-components", "dependencies": { @@ -27571,42 +26956,48 @@ "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", "@radix-ui/react-tooltip": "~1.1.8", - "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@tailwindcss/container-queries": "~0.1.1", + "@tailwindcss/postcss": "~4.0.17", "@vcarl/remark-headings": "~0.1.0", "classnames": "~2.5.1", - "tailwindcss": "~3.4.17" + "postcss-calc": "^10.1.1", + "tailwindcss": "~4.0.17" }, "devDependencies": { "@node-core/website-i18n": "*", - "@storybook/addon-controls": "^8.6.3", - "@storybook/addon-interactions": "^8.6.3", + "@storybook/addon-controls": "^8.6.11", + "@storybook/addon-interactions": "^8.6.11", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.3", - "@storybook/addon-viewport": "^8.6.3", - "@storybook/addon-webpack5-compiler-swc": "^2.1.0", - "@storybook/react-webpack5": "^8.6.3", + "@storybook/addon-themes": "^8.6.11", + "@storybook/addon-viewport": "^8.6.11", + "@storybook/addon-webpack5-compiler-swc": "^3.0.0", + "@storybook/react-webpack5": "^8.6.11", "@swc/jest": "^0.2.37", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", "eslint-plugin-react": "~7.37.4", - "eslint-plugin-storybook": "~0.11.3", + "eslint-plugin-storybook": "~0.12.0", "identity-obj-proxy": "^3.0.0", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-junit": "16.0.0", - "storybook": "^8.6.3", - "stylelint": "^16.15.0", + "storybook": "^8.6.11", + "stylelint": "^16.17.0", "stylelint-config-standard": "^37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.26.0" + "typescript-eslint": "~8.28.0" }, "engines": { "node": ">=20" } + }, + "packages/ui-components/node_modules/tailwindcss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", + "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", + "license": "MIT" } } } diff --git a/package.json b/package.json index 51c2e580cc9c0..3f7a4dd66cd76 100644 --- a/package.json +++ b/package.json @@ -36,25 +36,21 @@ "prepare": "husky" }, "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.14.1", "husky": "9.1.7", - "lint-staged": "15.4.3", + "lint-staged": "15.5.0", "turbo": "2.4.4" }, "devDependencies": { - "@eslint/js": "~9.21.0", - "@types/node": "22.13.8", - "@types/react": "^19.0.10", + "@eslint/js": "~9.23.0", + "@types/node": "22.13.14", + "@types/react": "^19.0.12", "@types/react-dom": "^19.0.4", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.21.0", - "eslint-plugin-import-x": "~4.6.1", + "eslint": "~9.23.0", + "eslint-plugin-import-x": "~4.9.4", "eslint-plugin-no-relative-import-paths": "~1.6.1", - "prettier": "3.5.2", + "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.11" - }, - "overrides": { - "@types/react": "$@types/react", - "@types/react-dom": "$@types/react-dom" } } diff --git a/packages/i18n/package.json b/packages/i18n/package.json index e2c37d42811f5..89152e24ff9a7 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -16,8 +16,8 @@ "lint:js": "eslint \"**/*.{js,mjs,ts}\"" }, "devDependencies": { - "eslint-import-resolver-typescript": "~3.8.3", + "eslint-import-resolver-typescript": "~4.3.1", "typescript": "~5.7.2", - "typescript-eslint": "~8.25.0" + "typescript-eslint": "~8.28.0" } } diff --git a/packages/ui-components/.postcssrc.json b/packages/ui-components/.postcssrc.json index f48fb87dce6e0..d750bab9d9e52 100644 --- a/packages/ui-components/.postcssrc.json +++ b/packages/ui-components/.postcssrc.json @@ -1,11 +1,6 @@ { "plugins": { - "postcss-mixins": {}, - "postcss-simple-vars": {}, "postcss-calc": {}, - "postcss-import": {}, - "tailwindcss/nesting": {}, - "tailwindcss": {}, - "autoprefixer": {} + "@tailwindcss/postcss": {} } } diff --git a/packages/ui-components/.storybook/main.ts b/packages/ui-components/.storybook/main.ts index a7642fb25a7e4..7910011320c8e 100644 --- a/packages/ui-components/.storybook/main.ts +++ b/packages/ui-components/.storybook/main.ts @@ -1,5 +1,9 @@ +import { createRequire } from 'node:module'; + import type { StorybookConfig } from '@storybook/react-webpack5'; +const require = createRequire(import.meta.url); + const config: StorybookConfig = { stories: ['../**/*.stories.tsx'], logLevel: 'error', @@ -17,12 +21,20 @@ const config: StorybookConfig = { name: '@storybook/addon-styling-webpack', options: { rules: [ + // Replaces existing CSS rules to support PostCSS { test: /\.css$/, use: [ 'style-loader', - { loader: 'css-loader', options: { url: false } }, - 'postcss-loader', + { + loader: 'css-loader', + options: { importLoaders: 1 }, + }, + { + // Gets options from `postcss.config.js` in your project root + loader: 'postcss-loader', + options: { implementation: require.resolve('postcss') }, + }, ], }, ], diff --git a/packages/ui-components/.stylelintrc.mjs b/packages/ui-components/.stylelintrc.mjs index 1858d79f3f0ed..1880b1ce2d8ae 100644 --- a/packages/ui-components/.stylelintrc.mjs +++ b/packages/ui-components/.stylelintrc.mjs @@ -4,12 +4,14 @@ const CUSTOM_AT_RULES = [ 'apply', 'layer', 'responsive', + 'reference', + 'utility', + 'theme', + 'custom-variant', 'screen', + 'source', 'tailwind', 'variants', - // PostCSS-specific at-rules - 'define-mixin', - 'mixin', ]; // Enforces certain selectors to be only in camelCase notation @@ -29,7 +31,6 @@ export default { 'selector-id-pattern': ONLY_ALLOW_CAMEL_CASE_SELECTORS, // Allow Tailwind-based CSS Rules 'at-rule-no-unknown': [true, { ignoreAtRules: CUSTOM_AT_RULES }], - 'at-rule-no-deprecated': [true, { ignoreAtRules: CUSTOM_AT_RULES }], // Allow the Global CSS Selector 'selector-pseudo-class-no-unknown': [ true, @@ -42,5 +43,7 @@ export default { 'media-feature-range-notation': 'prefix', // Adopts the import notation from `postcss-import` 'import-notation': 'string', + // Allow the `@apply` at rule as its part of Tailwind + 'at-rule-no-deprecated': [true, { ignoreAtRules: CUSTOM_AT_RULES }], }, }; diff --git a/packages/ui-components/Common/AlertBox/index.module.css b/packages/ui-components/Common/AlertBox/index.module.css index c3e31ae888704..3c6cddc2bf0ed 100644 --- a/packages/ui-components/Common/AlertBox/index.module.css +++ b/packages/ui-components/Common/AlertBox/index.module.css @@ -1,9 +1,11 @@ +@reference "../../styles/index.css"; + .alertBox { @apply flex flex-row items-center gap-2 - rounded + rounded-sm px-4 py-3 text-sm @@ -31,7 +33,7 @@ } .title { - @apply rounded-sm + @apply rounded-xs px-1.5; } diff --git a/packages/ui-components/Common/AvatarGroup/Avatar/index.module.css b/packages/ui-components/Common/AvatarGroup/Avatar/index.module.css index b96dded805343..652ac5a605e3b 100644 --- a/packages/ui-components/Common/AvatarGroup/Avatar/index.module.css +++ b/packages/ui-components/Common/AvatarGroup/Avatar/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .item { @apply xs:max-h-10 xs:max-w-10 diff --git a/packages/ui-components/Common/AvatarGroup/Overlay/index.module.css b/packages/ui-components/Common/AvatarGroup/Overlay/index.module.css index 7c8188658b62c..cad5dff7ece25 100644 --- a/packages/ui-components/Common/AvatarGroup/Overlay/index.module.css +++ b/packages/ui-components/Common/AvatarGroup/Overlay/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .overlay { @apply flex min-w-56 diff --git a/packages/ui-components/Common/AvatarGroup/index.module.css b/packages/ui-components/Common/AvatarGroup/index.module.css index 91766d2b7faed..9477a8ea5829d 100644 --- a/packages/ui-components/Common/AvatarGroup/index.module.css +++ b/packages/ui-components/Common/AvatarGroup/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .avatarGroup { @apply flex flex-wrap diff --git a/packages/ui-components/Common/Badge/index.module.css b/packages/ui-components/Common/Badge/index.module.css index 40c28b3285188..9420740a87cf1 100644 --- a/packages/ui-components/Common/Badge/index.module.css +++ b/packages/ui-components/Common/Badge/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .wrapper { @apply flex w-fit diff --git a/packages/ui-components/Common/Banner/index.module.css b/packages/ui-components/Common/Banner/index.module.css index f3c2b9c1ec77c..282a93668d2ad 100644 --- a/packages/ui-components/Common/Banner/index.module.css +++ b/packages/ui-components/Common/Banner/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .banner { @apply flex w-full diff --git a/packages/ui-components/Common/BaseButton/index.module.css b/packages/ui-components/Common/BaseButton/index.module.css index 6f2d69b8e9bef..d68c893c182c1 100644 --- a/packages/ui-components/Common/BaseButton/index.module.css +++ b/packages/ui-components/Common/BaseButton/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .button { @apply px-4.5 relative @@ -25,7 +27,7 @@ } &.neutral { - @apply rounded + @apply rounded-sm bg-neutral-900 text-white dark:text-neutral-200; @@ -45,12 +47,12 @@ } &.primary { - @apply rounded + @apply shadow-xs + rounded-sm border border-green-600 bg-green-600 - text-white - shadow-sm; + text-white; &:hover:not([aria-disabled='true']) { @apply border-green-700 @@ -95,41 +97,35 @@ } &.special { - @apply rounded-lg + @apply before:bg-gradient-glow-backdrop + shadow-xs + rounded-lg border border-green-600/30 bg-green-600/10 text-white - shadow-sm; - - &::before { - @apply bg-gradient-glow-backdrop - absolute - left-0 - right-0 - top-0 - -z-10 - mx-auto - h-full - w-full - opacity-30 - content-['']; - } - - &::after { - @apply absolute - -top-px - left-0 - right-0 - mx-auto - h-px - w-2/5 - bg-gradient-to-r - from-green-600/0 - via-green-600 - to-green-600/0 - content-['']; - } + before:absolute + before:left-0 + before:right-0 + before:top-0 + before:-z-10 + before:mx-auto + before:h-full + before:w-full + before:opacity-30 + before:content-[''] + after:absolute + after:-top-px + after:left-0 + after:right-0 + after:mx-auto + after:h-px + after:w-2/5 + after:bg-gradient-to-r + after:from-green-600/0 + after:via-green-600 + after:to-green-600/0 + after:content-['']; &[aria-disabled='true'] { @apply opacity-50; diff --git a/packages/ui-components/Common/BaseCodeBox/index.module.css b/packages/ui-components/Common/BaseCodeBox/index.module.css index 424d721f17e29..ab65233e66182 100644 --- a/packages/ui-components/Common/BaseCodeBox/index.module.css +++ b/packages/ui-components/Common/BaseCodeBox/index.module.css @@ -1,6 +1,8 @@ +@reference "../../styles/index.css"; + .root { @apply w-full - rounded + rounded-sm border border-neutral-900 bg-neutral-950; @@ -33,8 +35,8 @@ } &:not(:empty:last-child)::after { - @apply w-4.5 - font-ibm-plex-mono + @apply font-ibm-plex-mono + w-4.5 absolute left-0 top-0 diff --git a/packages/ui-components/Common/BaseCrossLink/index.module.css b/packages/ui-components/Common/BaseCrossLink/index.module.css index 0e2d8d959e1dd..9fd490e089275 100644 --- a/packages/ui-components/Common/BaseCrossLink/index.module.css +++ b/packages/ui-components/Common/BaseCrossLink/index.module.css @@ -1,10 +1,12 @@ +@reference "../../styles/index.css"; + .crossLink { @apply flex flex-col items-start gap-2 truncate - rounded + rounded-sm border border-solid border-neutral-300 diff --git a/packages/ui-components/Common/BaseLinkTabs/index.module.css b/packages/ui-components/Common/BaseLinkTabs/index.module.css index c8f766392b409..021f4749d248c 100644 --- a/packages/ui-components/Common/BaseLinkTabs/index.module.css +++ b/packages/ui-components/Common/BaseLinkTabs/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .tabsList { @apply font-open-sans max-xs:hidden diff --git a/packages/ui-components/Common/BasePagination/Ellipsis/index.module.css b/packages/ui-components/Common/BasePagination/Ellipsis/index.module.css index b4ce7ce86b786..64504f10285b2 100644 --- a/packages/ui-components/Common/BasePagination/Ellipsis/index.module.css +++ b/packages/ui-components/Common/BasePagination/Ellipsis/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .ellipsis { @apply w-10 px-3 diff --git a/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css b/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css index ca629ffce0a31..161b97c6dcdd9 100644 --- a/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .listItem, .listItem:link, .listItem:active { @@ -7,7 +9,7 @@ size-10 items-center justify-center - rounded + rounded-sm px-3 py-2.5 text-neutral-800 diff --git a/packages/ui-components/Common/BasePagination/index.module.css b/packages/ui-components/Common/BasePagination/index.module.css index 9a7b5936e7e98..9e8258ab0ee33 100644 --- a/packages/ui-components/Common/BasePagination/index.module.css +++ b/packages/ui-components/Common/BasePagination/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .pagination { @apply grid items-center diff --git a/packages/ui-components/Common/Blockquote/index.module.css b/packages/ui-components/Common/Blockquote/index.module.css index f13d733741d0a..e322d21dfe1e6 100644 --- a/packages/ui-components/Common/Blockquote/index.module.css +++ b/packages/ui-components/Common/Blockquote/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .wrapper { @apply flex max-w-2xl flex-col items-start gap-4 self-stretch border-l-2 border-green-600 py-2 pl-5 text-lg font-semibold text-neutral-900 dark:border-green-400 dark:text-white; diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css index bb1daa3ce8b60..9d9829ed8ea4f 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .icon { @apply size-4; } diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css index 35f6968d03714..1f15689d72574 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .item { @apply flex max-w-fit items-center gap-5 truncate text-sm font-medium; diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css index 14f71131540ec..26dd147b3ea65 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .link { @apply max-w-fit truncate; diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css index 4f13b9c6c1bd2..6110240f5c2a3 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .list { @apply xs:w-full flex w-screen gap-5 px-6; } diff --git a/packages/ui-components/Common/CodeTabs/index.module.css b/packages/ui-components/Common/CodeTabs/index.module.css index 5c79f7ecd4fd4..e6481552da808 100644 --- a/packages/ui-components/Common/CodeTabs/index.module.css +++ b/packages/ui-components/Common/CodeTabs/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .root { > [role='tabpanel'] > :first-child { @apply rounded-t-none; diff --git a/packages/ui-components/Common/GlowingBackdrop/index.module.css b/packages/ui-components/Common/GlowingBackdrop/index.module.css index a7f2d817c3091..af072146f6a9a 100644 --- a/packages/ui-components/Common/GlowingBackdrop/index.module.css +++ b/packages/ui-components/Common/GlowingBackdrop/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .glowingBackdrop { @apply absolute left-0 @@ -5,20 +7,17 @@ -z-10 size-full opacity-50 - md:opacity-100; - - &::after { - @apply absolute - inset-0 - m-auto - aspect-square - w-[300px] - rounded-full - bg-green-300 - blur-[120px] - content-[''] - dark:bg-green-700; - } + after:absolute + after:inset-0 + after:m-auto + after:aspect-square + after:w-[300px] + after:rounded-full + after:bg-green-300 + after:blur-[120px] + after:content-[''] + md:opacity-100 + dark:after:bg-green-700; svg { @apply absolute diff --git a/packages/ui-components/Common/LanguageDropDown/index.module.css b/packages/ui-components/Common/LanguageDropDown/index.module.css index 7f1a0d1052106..9c487aadd62d7 100644 --- a/packages/ui-components/Common/LanguageDropDown/index.module.css +++ b/packages/ui-components/Common/LanguageDropDown/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .languageDropdown { @apply h-9 w-9 @@ -17,7 +19,7 @@ @apply max-h-80 w-48 overflow-hidden - rounded + rounded-sm border border-neutral-200 bg-white @@ -32,13 +34,13 @@ } .dropDownItem { - @apply cursor-pointer + @apply outline-hidden + 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; diff --git a/packages/ui-components/Common/NodejsLogo/index.module.css b/packages/ui-components/Common/NodejsLogo/index.module.css index 2e74ac633f684..58cc72eec71a1 100644 --- a/packages/ui-components/Common/NodejsLogo/index.module.css +++ b/packages/ui-components/Common/NodejsLogo/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .nodejsLogo { @apply h-6 w-20; diff --git a/packages/ui-components/Common/Notification/index.module.css b/packages/ui-components/Common/Notification/index.module.css index 981e1b9d03cb8..23d6933699609 100644 --- a/packages/ui-components/Common/Notification/index.module.css +++ b/packages/ui-components/Common/Notification/index.module.css @@ -1,6 +1,8 @@ +@reference "../../styles/index.css"; + .root { @apply m-6 - rounded + rounded-sm border border-neutral-200 bg-white diff --git a/packages/ui-components/Common/Preview/index.module.css b/packages/ui-components/Common/Preview/index.module.css index d2a68ff0df3fb..9674a3c9580e0 100644 --- a/packages/ui-components/Common/Preview/index.module.css +++ b/packages/ui-components/Common/Preview/index.module.css @@ -1,37 +1,35 @@ +@reference "../../styles/index.css"; + .root { - @apply @container/preview + @apply after:bg-gradient-radial + @container/preview relative flex aspect-[1.90/1] items-center - rounded + rounded-sm border border-neutral-900 - bg-neutral-950; - - &::after { - @apply bg-gradient-radial - @md/preview:blur-3xl - absolute - inset-0 - m-auto - aspect-square - w-1/3 - rounded-full - blur-2xl - content-['']; + bg-neutral-950 + after:absolute + after:inset-0 + after:m-auto + after:aspect-square + after:w-1/3 + after:rounded-full + after:blur-2xl + after:content-['']; - &.announcements { - @apply from-green-700/90; - } + &.announcements { + @apply after:from-green-700/90; + } - &.release { - @apply from-info-600/90; - } + &.release { + @apply after:from-info-600/90; + } - &.vulnerability { - @apply from-warning-600/90; - } + &.vulnerability { + @apply after:from-warning-600/90; } .container { diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css index b9a9678173251..909d230df577a 100644 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css +++ b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .group { @apply flex flex-col @@ -12,42 +14,34 @@ -left-1 flex flex-col - gap-2; - - &::after { - @apply absolute - left-[0.45rem] - top-0 - z-10 - h-full - w-px - bg-neutral-200 - content-[''] - dark:bg-neutral-800; - } + gap-2 + after:absolute + after:left-[0.45rem] + after:top-0 + after:z-10 + after:h-full + after:w-px + after:bg-neutral-200 + after:content-[''] + dark:after:bg-neutral-800; a { - &:first-child::before { - @apply absolute - bottom-[calc(50%+0.25rem)] - left-0 - h-20 - w-4 - bg-white - content-[''] - dark:bg-neutral-950; - } - - &:last-child::after { - @apply absolute - left-0 - top-[calc(50%+0.25rem)] - h-20 - w-4 - bg-white - content-[''] - dark:bg-neutral-950; - } + @apply first:before:absolute + first:before:bottom-[calc(50%+0.25rem)] + first:before:left-0 + first:before:h-20 + first:before:w-4 + first:before:bg-white + first:before:content-[''] + last:after:absolute + last:after:left-0 + last:after:top-[calc(50%+0.25rem)] + last:after:h-20 + last:after:w-4 + last:after:bg-white + last:after:content-[''] + first:dark:before:bg-neutral-950 + last:dark:after:bg-neutral-950; } } } diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css index 1783a37464340..523ca8dd62e3f 100644 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css +++ b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + a.item { @apply font-regular relative diff --git a/packages/ui-components/Common/ProgressionSidebar/index.module.css b/packages/ui-components/Common/ProgressionSidebar/index.module.css index c986e4572678c..5be47ed42f100 100644 --- a/packages/ui-components/Common/ProgressionSidebar/index.module.css +++ b/packages/ui-components/Common/ProgressionSidebar/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .wrapper { @apply flex w-full diff --git a/packages/ui-components/Common/Select/index.module.css b/packages/ui-components/Common/Select/index.module.css index 1e13248039a83..55d76484b0989 100644 --- a/packages/ui-components/Common/Select/index.module.css +++ b/packages/ui-components/Common/Select/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .select { @apply inline-flex flex-col @@ -14,6 +16,7 @@ .trigger { @apply shadow-xs + outline-hidden inline-flex h-11 w-full @@ -21,7 +24,7 @@ items-center justify-between gap-2 - rounded + rounded-sm border border-neutral-300 bg-white @@ -31,7 +34,6 @@ text-base font-medium text-neutral-900 - outline-none focus:border-neutral-500 focus:ring-1 focus:ring-neutral-500 @@ -81,10 +83,10 @@ } .text { - @apply text-neutral-800 + @apply data-[highlighted]:outline-hidden + text-neutral-800 data-[highlighted]:bg-green-500 data-[highlighted]:text-white - data-[highlighted]:outline-none dark:text-neutral-200 dark:data-[highlighted]:bg-green-600 dark:data-[highlighted]:text-white; diff --git a/packages/ui-components/Common/Skeleton/index.module.css b/packages/ui-components/Common/Skeleton/index.module.css index 261615ad0156a..cd97ce9320c9c 100644 --- a/packages/ui-components/Common/Skeleton/index.module.css +++ b/packages/ui-components/Common/Skeleton/index.module.css @@ -1,5 +1,8 @@ +@reference "../../styles/index.css"; + .skeleton { - @apply pointer-events-none + @apply outline-hidden + pointer-events-none animate-pulse cursor-default select-none @@ -7,8 +10,7 @@ border-none bg-clip-border text-transparent - shadow-none - outline-none; + shadow-none; } .skeleton[data-inline-skeleton] { diff --git a/packages/ui-components/Common/Tabs/index.module.css b/packages/ui-components/Common/Tabs/index.module.css index 1703d143e6b3a..8a571f1d95cde 100644 --- a/packages/ui-components/Common/Tabs/index.module.css +++ b/packages/ui-components/Common/Tabs/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .tabsRoot { @apply max-w-full; diff --git a/packages/ui-components/Common/ThemeToggle/index.module.css b/packages/ui-components/Common/ThemeToggle/index.module.css index c2cd6bb230a91..e0ed8df47fddc 100644 --- a/packages/ui-components/Common/ThemeToggle/index.module.css +++ b/packages/ui-components/Common/ThemeToggle/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .themeToggle { @apply size-9 rounded-md diff --git a/packages/ui-components/Common/Tooltip/index.module.css b/packages/ui-components/Common/Tooltip/index.module.css index 475db244ae82b..20eedc3bffdce 100644 --- a/packages/ui-components/Common/Tooltip/index.module.css +++ b/packages/ui-components/Common/Tooltip/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .content { @apply rounded-md border diff --git a/packages/ui-components/Containers/Footer/index.module.css b/packages/ui-components/Containers/Footer/index.module.css index e388fa5341dba..d52a1027da39a 100644 --- a/packages/ui-components/Containers/Footer/index.module.css +++ b/packages/ui-components/Containers/Footer/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .footer { @apply flex flex-col diff --git a/packages/ui-components/Containers/MetaBar/index.module.css b/packages/ui-components/Containers/MetaBar/index.module.css index 8d867a2b2e0d1..6b404cd0185ec 100644 --- a/packages/ui-components/Containers/MetaBar/index.module.css +++ b/packages/ui-components/Containers/MetaBar/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .wrapper { @apply flex w-full diff --git a/packages/ui-components/Containers/NavBar/NavItem/index.module.css b/packages/ui-components/Containers/NavBar/NavItem/index.module.css index 17ccfee6aab58..6f848a0d95c4a 100644 --- a/packages/ui-components/Containers/NavBar/NavItem/index.module.css +++ b/packages/ui-components/Containers/NavBar/NavItem/index.module.css @@ -1,8 +1,10 @@ +@reference "../../../styles/index.css"; + .navItem { @apply inline-flex items-center gap-2 - rounded + rounded-sm px-3 py-2 motion-safe:transition-colors; diff --git a/packages/ui-components/Containers/NavBar/index.module.css b/packages/ui-components/Containers/NavBar/index.module.css index 77f318d069a88..331f63f46d83c 100644 --- a/packages/ui-components/Containers/NavBar/index.module.css +++ b/packages/ui-components/Containers/NavBar/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .container { @apply border-neutral-200 bg-white @@ -54,8 +56,7 @@ } .main { - @apply hidden - flex-1 + @apply flex-1 flex-col justify-between gap-4 diff --git a/packages/ui-components/Containers/NavBar/index.tsx b/packages/ui-components/Containers/NavBar/index.tsx index f267100d6a797..d50309aaa2a17 100644 --- a/packages/ui-components/Containers/NavBar/index.tsx +++ b/packages/ui-components/Containers/NavBar/index.tsx @@ -71,7 +71,7 @@ const NavBar: FC<PropsWithChildren<NavbarProps>> = ({ tabIndex={-1} /> - <div className={`${style.main} peer-checked:flex`}> + <div className={`${style.main} hidden peer-checked:flex`}> <div className={style.navItems}> {navItems.map(({ text, link, target }) => ( <NavItem diff --git a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css index 52f0d7507fadf..7dd889e6b98be 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css +++ b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .group { @apply flex w-full diff --git a/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css b/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css index 38c89b9fd6028..2a470766d0508 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css @@ -1,3 +1,5 @@ +@reference "../../../styles/index.css"; + .sideBarItem { @apply flex w-full @@ -26,7 +28,7 @@ } .active { - @apply rounded + @apply rounded-sm bg-green-600 text-white dark:text-white; diff --git a/packages/ui-components/Containers/Sidebar/index.module.css b/packages/ui-components/Containers/Sidebar/index.module.css index 7324ae7ba9f29..c022902781397 100644 --- a/packages/ui-components/Containers/Sidebar/index.module.css +++ b/packages/ui-components/Containers/Sidebar/index.module.css @@ -1,3 +1,5 @@ +@reference "../../styles/index.css"; + .wrapper { @apply flex w-full diff --git a/packages/ui-components/__design__/font-family.stories.tsx b/packages/ui-components/__design__/font-family.stories.tsx index 92c510fec522c..d1b333af8d3a8 100644 --- a/packages/ui-components/__design__/font-family.stories.tsx +++ b/packages/ui-components/__design__/font-family.stories.tsx @@ -2,7 +2,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; export const FontFamily: StoryObj = { render: () => ( - <div className="align-center ga-1 w-100 flex h-full flex-row flex-wrap justify-start"> + <div className="align-center ga-1 flex h-full flex-row flex-wrap justify-start"> <div> <p className="font-regular text-xs">Text XS/Regular</p> <p className="text-xs font-medium">Text XS/Medium</p> diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 21efbccc540bd..f481cd26f5afe 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -25,37 +25,37 @@ "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", "@radix-ui/react-tooltip": "~1.1.8", - "@savvywombat/tailwindcss-grid-areas": "~4.0.0", - "@tailwindcss/container-queries": "~0.1.1", + "@tailwindcss/postcss": "~4.0.17", "@vcarl/remark-headings": "~0.1.0", "classnames": "~2.5.1", - "tailwindcss": "~3.4.17" + "postcss-calc": "^10.1.1", + "tailwindcss": "~4.0.17" }, "devDependencies": { "@node-core/website-i18n": "*", - "@storybook/addon-controls": "^8.6.3", - "@storybook/addon-interactions": "^8.6.3", + "@storybook/addon-controls": "^8.6.11", + "@storybook/addon-interactions": "^8.6.11", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.3", - "@storybook/addon-viewport": "^8.6.3", - "@storybook/addon-webpack5-compiler-swc": "^2.1.0", - "@storybook/react-webpack5": "^8.6.3", + "@storybook/addon-themes": "^8.6.11", + "@storybook/addon-viewport": "^8.6.11", + "@storybook/addon-webpack5-compiler-swc": "^3.0.0", + "@storybook/react-webpack5": "^8.6.11", "@swc/jest": "^0.2.37", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", "eslint-plugin-react": "~7.37.4", - "eslint-plugin-storybook": "~0.11.3", + "eslint-plugin-storybook": "~0.12.0", "identity-obj-proxy": "^3.0.0", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-junit": "16.0.0", - "storybook": "^8.6.3", - "stylelint": "^16.15.0", + "storybook": "^8.6.11", + "stylelint": "^16.17.0", "stylelint-config-standard": "^37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.26.0" + "typescript-eslint": "~8.28.0" } } diff --git a/packages/ui-components/styles/animations.css b/packages/ui-components/styles/animations.css new file mode 100644 index 0000000000000..d0dc42003d2fe --- /dev/null +++ b/packages/ui-components/styles/animations.css @@ -0,0 +1,47 @@ +@theme { + --animate-surf: surf 1s infinite ease-in-out; + --animate-pulse: pulse 500ms infinite alternate-reverse; + --animate-pulse-dark: pulse-dark 500ms infinite alternate-reverse; + + @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); + } + } + + @keyframes pulse { + from { + background: var(--color-pulse-100); + } + + to { + background: var(--color-pulse-200); + } + } + + @keyframes pulse-dark { + from { + background: var(--color-pulse-300); + } + + to { + background: var(--color-pulse-400); + } + } +} diff --git a/packages/ui-components/styles/index.css b/packages/ui-components/styles/index.css index bdf2863ce16b5..4999c381e2b43 100644 --- a/packages/ui-components/styles/index.css +++ b/packages/ui-components/styles/index.css @@ -6,9 +6,29 @@ * @see https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint */ -@import 'tailwindcss/base'; -@import 'tailwindcss/components'; -@import 'tailwindcss/utilities'; +@import 'tailwindcss'; +@import './theme.css'; +@import './animations.css'; @import './effects.css'; -@import './base.css'; -@import './markdown.css'; +@import './base.css' layer(utilities); +@import './markdown.css' layer(utilities); + +/* + The default border color has changed to `currentColor` in Tailwind CSS v4, + so we've added these compatibility styles to make sure everything still + looks the same as it did with Tailwind CSS v3. + + If we ever want to remove these styles, we need to add an explicit border + color utility to any element that depends on these defaults. +*/ +@layer base { + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + border-color: var(--color-gray-200, currentColor); + } +} + +@custom-variant aria-current (&[aria-current="page"]); diff --git a/packages/ui-components/styles/markdown.css b/packages/ui-components/styles/markdown.css index 3984a3ed9c03c..d7296ca88c6f5 100644 --- a/packages/ui-components/styles/markdown.css +++ b/packages/ui-components/styles/markdown.css @@ -60,7 +60,7 @@ main { code { @apply font-ibm-plex-mono - rounded + rounded-xs bg-neutral-100 px-1 text-base @@ -105,7 +105,7 @@ main { dark:text-white; li div:has(> pre) { - @apply !my-1; + @apply my-1!; } } @@ -117,16 +117,16 @@ main { dark:text-white; li div:has(> pre) { - @apply !my-1; + @apply my-1!; } } table { - @apply mb-1 + @apply rounded-xs + mb-1 w-full border-separate border-spacing-0 - rounded border border-neutral-200 text-left diff --git a/packages/ui-components/styles/theme.css b/packages/ui-components/styles/theme.css new file mode 100644 index 0000000000000..8b6e42ee608ce --- /dev/null +++ b/packages/ui-components/styles/theme.css @@ -0,0 +1,172 @@ +@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *)); + +@source '../Common'; +@source '../Containers'; +@source '../Icons'; + +@theme { + --color-green-100: #edf2eb; + --color-green-200: #c5e5b4; + --color-green-300: #99cc7d; + --color-green-400: #84ba64; + --color-green-500: #5fa04e; + --color-green-600: #417e38; + --color-green-700: #2c682c; + --color-green-800: #2c682c; + --color-green-900: #1a3f1d; + --color-neutral-100: #f6f7f9; + --color-neutral-200: #e9edf0; + --color-neutral-300: #d9e1e4; + --color-neutral-400: #cbd4d9; + --color-neutral-500: #b1bcc2; + --color-neutral-600: #929fa5; + --color-neutral-700: #6e7b83; + --color-neutral-800: #556066; + --color-neutral-900: #2c3437; + --color-neutral-950: #0d121c; + --color-danger-100: #fbf1f0; + --color-danger-200: #fad3d4; + --color-danger-300: #fab6b7; + --color-danger-400: #fa8e8e; + --color-danger-500: #f65354; + --color-danger-600: #de1a1b; + --color-danger-700: #b80c0c; + --color-danger-800: #900e0e; + --color-danger-900: #661514; + --color-warning-100: #fdf3e7; + --color-warning-200: #fad9b0; + --color-warning-300: #f5bc75; + --color-warning-400: #e99c40; + --color-warning-500: #d07912; + --color-warning-600: #ae5f00; + --color-warning-700: #8b4d04; + --color-warning-800: #683d08; + --color-warning-900: #4d2f0b; + --color-info-100: #e9f4fa; + --color-info-200: #bce6fc; + --color-info-300: #8ed4f8; + --color-info-400: #52baed; + --color-info-500: #229ad6; + --color-info-600: #0c7bb3; + --color-info-700: #066291; + --color-info-800: #074d71; + --color-info-900: #0a3953; + --color-accent1-100: #f7f1fb; + --color-accent1-200: #ead9fb; + --color-accent1-300: #dbbdf9; + --color-accent1-400: #c79bf2; + --color-accent1-500: #af74e8; + --color-accent1-600: #9756d6; + --color-accent1-700: #7d3cbe; + --color-accent1-800: #642b9e; + --color-accent1-900: #361b52; + --color-accent2-100: #fbf0f4; + --color-accent2-200: #fbd4e6; + --color-accent2-300: #fbb4d2; + --color-accent2-400: #f68bb7; + --color-accent2-500: #ed5393; + --color-accent2-600: #d6246e; + --color-accent2-700: #b01356; + --color-accent2-800: #8b1245; + --color-accent2-900: #411526; + --color-pulse-100: #0000330f; + --color-pulse-200: #00002d17; + --color-pulse-300: #ddeaf814; + --color-pulse-400: #d3edf81d; + --color-white: #fff; + --color-transparent: 'transparent'; + --color-shadow: #101828; + --inherit: 'inherit'; + --shadow-xs: 0px 1px 2px 0px --alpha(var(--color-shadow, #101828) / 5%); + --shadow-lg: + 0px 4px 6px -2px --alpha(var(--color-shadow, #101828) / 3%), + 0px 12px 16px -4px --alpha(var(--color-shadow, #101828) / 8%); + + /* TODO(@avivkeller): The --font-xyz-xyz variable is assigned by Next.js in apps/site. + Ideally, this package shouldn't depend on the consuming application's + variables, it should remain self-contained. */ + --font-open-sans: var(--font-open-sans); + --font-ibm-plex-mono: var(--font-ibm-plex-mono); + --font-weight-regular: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + --font-xs: 0.75rem; + --font-xs-line-height: 1rem; + --font-sm: 0.87rem; + --font-sm-line-height: 1.25rem; + --font-base: 1rem; + --font-base-line-height: 1.5rem; + --font-lg: 1.125rem; + --font-lg-line-height: 1.75rem; + --font-xl: 1.25rem; + --font-xl-line-height: 1.875rem; + --font-2xl: 1.5rem; + --font-2xl-line-height: 2rem; + --font-3xl: 1.875rem; + --font-3xl-line-height: 2.25rem; + --font-4xl: 2.25rem; + --font-4xl-line-height: 2.5rem; + --font-5xl: 3rem; + --font-5xl-line-height: 3rem; + --font-6xl: 3.75rem; + --font-6xl-line-height: 3.75rem; + --font-7xl: 4.5rem; + --font-7xl-line-height: 4.5rem; + --breakpoint-xs: 670px; +} + +@utility scrollbar-thin { + scrollbar-width: thin; +} + +@utility max-w-8xl { + max-width: 95rem; +} + +@utility bg-gradient-subtle-dark { + background-image: linear-gradient( + 180deg, + --alpha(var(--color-neutral-900) / 50%) 0%, + --alpha(var(--color-neutral-900) / 0%) 48.32% + ); +} + +@utility bg-gradient-subtle { + background-image: linear-gradient( + 180deg, + --alpha(var(--color-neutral-100) / 50%) 0%, + --alpha(var(--color-neutral-100) / 0%) 48.32% + ); +} + +@utility bg-gradient-subtle-gray { + background-image: linear-gradient( + 180deg, + var(--color-neutral-900) 0%, + --alpha(var(--color-neutral-900) / 80%) 100% + ); +} + +@utility bg-gradient-subtle-white { + background-image: linear-gradient( + 180deg, + var(--color-white) 0%, + --alpha(var(--color-white) / 80%) 100% + ); +} + +@utility bg-gradient-glow-backdrop { + background-image: radial-gradient( + 8em circle at calc(50%) 10px, + var(--color-green-400), + transparent 30% + ); +} + +@utility bg-gradient-radial { + background-image: radial-gradient( + var(--tw-gradient-from), + var(--tw-gradient-to) + ); +} diff --git a/packages/ui-components/tailwind.config.ts b/packages/ui-components/tailwind.config.ts deleted file mode 100644 index b7e3e319d4fa7..0000000000000 --- a/packages/ui-components/tailwind.config.ts +++ /dev/null @@ -1,164 +0,0 @@ -import type { Config } from 'tailwindcss'; -import plugin from 'tailwindcss/plugin'; - -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', - }, - // TODO(@avivkeller): The --font-xyz-xyz variable is assigned by Next.js in apps/site. - // Ideally, this package shouldn't depend on the consuming application's - // variables, it should remain self-contained. - 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'), - plugin(function ({ addUtilities }) { - addUtilities({ - '.scrollbar-thin': { - 'scrollbar-width': 'thin', - }, - }); - }), - ], -} satisfies Config; From 9c6f6a2052ccb2eb0ab8bfdb355ca52cdd7d8779 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:22:32 +0200 Subject: [PATCH 0370/1385] meta: bump the storybook group across 1 directory with 6 updates (#7614) Bumps the storybook group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@storybook/addon-controls](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/controls) | `8.6.11` | `8.6.12` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.6.11` | `8.6.12` | | [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `8.6.11` | `8.6.12` | | [@storybook/addon-viewport](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/viewport) | `8.6.11` | `8.6.12` | | [@storybook/react-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-webpack5) | `8.6.11` | `8.6.12` | Updates `@storybook/addon-controls` from 8.6.11 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/addons/controls) Updates `@storybook/addon-interactions` from 8.6.11 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/addons/interactions) Updates `@storybook/addon-themes` from 8.6.11 to 8.6.12 - [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.6.12/code/addons/themes) Updates `@storybook/addon-viewport` from 8.6.11 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/addons/viewport) Updates `@storybook/react-webpack5` from 8.6.11 to 8.6.12 - [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.6.12/code/frameworks/react-webpack5) Updates `storybook` from 8.6.11 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/lib/cli) --- updated-dependencies: - dependency-name: "@storybook/addon-controls" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-interactions" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-themes" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-viewport" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/react-webpack5" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: storybook dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 682 ++++++++++++++-------------- packages/ui-components/package.json | 10 +- 2 files changed, 346 insertions(+), 346 deletions(-) diff --git a/package-lock.json b/package-lock.json index 58978d7806284..252f5814cf764 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1181,9 +1181,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", - "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", "cpu": [ "ppc64" ], @@ -1198,9 +1198,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", - "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", "cpu": [ "arm" ], @@ -1215,9 +1215,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", - "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", "cpu": [ "arm64" ], @@ -1232,9 +1232,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", - "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", "cpu": [ "x64" ], @@ -1249,9 +1249,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", - "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", "cpu": [ "arm64" ], @@ -1266,9 +1266,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", - "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", "cpu": [ "x64" ], @@ -1283,9 +1283,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", - "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", "cpu": [ "arm64" ], @@ -1300,9 +1300,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", - "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", "cpu": [ "x64" ], @@ -1317,9 +1317,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", - "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", "cpu": [ "arm" ], @@ -1334,9 +1334,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", - "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", "cpu": [ "arm64" ], @@ -1351,9 +1351,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", - "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", "cpu": [ "ia32" ], @@ -1368,9 +1368,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", - "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", "cpu": [ "loong64" ], @@ -1385,9 +1385,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", - "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", "cpu": [ "mips64el" ], @@ -1402,9 +1402,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", - "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", "cpu": [ "ppc64" ], @@ -1419,9 +1419,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", - "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", "cpu": [ "riscv64" ], @@ -1436,9 +1436,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", - "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", "cpu": [ "s390x" ], @@ -1453,9 +1453,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", - "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", "cpu": [ "x64" ], @@ -1470,9 +1470,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", - "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", "cpu": [ "arm64" ], @@ -1487,9 +1487,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", - "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", "cpu": [ "x64" ], @@ -1504,9 +1504,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", - "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", "cpu": [ "arm64" ], @@ -1521,9 +1521,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", - "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", "cpu": [ "x64" ], @@ -1538,9 +1538,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", - "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", "cpu": [ "x64" ], @@ -1555,9 +1555,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", - "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", "cpu": [ "arm64" ], @@ -1572,9 +1572,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", - "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", "cpu": [ "ia32" ], @@ -1589,9 +1589,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", - "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", "cpu": [ "x64" ], @@ -5380,9 +5380,9 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.11.tgz", - "integrity": "sha512-CpXu4HhiyRBikygMskmFhfgKtyz2/3BWTzpg6OrmaYuoEnxP+RMPeXZQxCW9pbH8ewGZlvX++VEt1Cletd95zQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.12.tgz", + "integrity": "sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5395,19 +5395,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.11" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.11.tgz", - "integrity": "sha512-j9wUf8lQF922eC2HbWG4LdeflOu/togry80QB+Sqxs4+dg4iWhjxmN8gWav14/oa0vJBLN7Z2Tr4ifsJUEwRkg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.12.tgz", + "integrity": "sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.11", - "@storybook/test": "8.6.11", + "@storybook/instrumenter": "8.6.12", + "@storybook/test": "8.6.12", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -5416,7 +5416,163 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.11" + "storybook": "^8.6.12" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/@storybook/instrumenter": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.12.tgz", + "integrity": "sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==", + "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.6.12" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/@storybook/test": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.12.tgz", + "integrity": "sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.6.12", + "@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.6.12" + } + }, + "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/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "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-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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/@storybook/addon-styling-webpack": { @@ -5433,9 +5589,9 @@ } }, "node_modules/@storybook/addon-themes": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.11.tgz", - "integrity": "sha512-+Prr/az40J2bkEEEVafA2Yl1hS4a45mpJ3f/ob0takj7uV5j/l9LnsB3B5IKsZhOddbAhRiftxxgiSBULDuJ9Q==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.12.tgz", + "integrity": "sha512-eqE40MUKTz9lLEOusXjRuDC7DwCSIwlgEnlbvhhEEme8IeKf2di6yvlhenY4nn5QfkUwY1POnZxfJ2OpXj0gqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5446,13 +5602,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.11" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.11.tgz", - "integrity": "sha512-EdzrkUyMvm0epYkUspBF5osU0rIHglD1+YK84C8ibJjx3JpnpLFaDpecwjFaFgxjQQVveHKatYcHpz09aEywqQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.12.tgz", + "integrity": "sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==", "dev": true, "license": "MIT", "dependencies": { @@ -5463,7 +5619,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.11" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { @@ -5481,13 +5637,13 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.11.tgz", - "integrity": "sha512-Vojm5YANhEv1dmX0IcI7Q4yu9ZSKIgOicETVhQlEMCGqVtZWr3HkSOcF6+3JRewY9EaPflxT/maKQ0kYaKt4Sg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.12.tgz", + "integrity": "sha512-Z7RsQ/1+HbxdbM69JrEFcTL+pnVKUTMmeURMn5/eOvYTGjBtM18vbQTj0LjCUDIjC+v9U+uX8ZJEUVxFbGcxBw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.11", + "@storybook/core-webpack": "8.6.12", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", @@ -5517,7 +5673,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.11" + "storybook": "^8.6.12" }, "peerDependenciesMeta": { "typescript": { @@ -5526,9 +5682,9 @@ } }, "node_modules/@storybook/components": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.11.tgz", - "integrity": "sha512-+lHcwQsSO8usKTXIBBmgmRCAa0L+KQaLJ5ARqkRTm6OjzkVVS+EPnIgL4H1nqzbwiTVXxSSOwAk+rST83KICnA==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.12.tgz", + "integrity": "sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==", "dev": true, "license": "MIT", "funding": { @@ -5540,13 +5696,13 @@ } }, "node_modules/@storybook/core": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.11.tgz", - "integrity": "sha512-fhzLQ9HpljbLpkHykafmcjIERHI5j6SZhylFCDwEWkETuZtRbyCs3mmULutcEOzKhxRgNtiIRoRmZPdQcPtHNg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.12.tgz", + "integrity": "sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/theming": "8.6.11", + "@storybook/theming": "8.6.12", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", @@ -5572,9 +5728,9 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.11.tgz", - "integrity": "sha512-VbpcELiHBS+VtrXx+l/CK9fYfVzcUD8f1SaLV6JM7tNPX9EttnfSeGbOsi+5vYuqnhsWIbG3EjIwkiUeAP41XQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.12.tgz", + "integrity": "sha512-TiE+KOm0hxb/p0JxeGHKxqTNX+xnTOFsBh6uloCSuvodutJ5pR/XpxKVxwo1gtSc0Uq3qpgbMhW6qYlYQetnKA==", "dev": true, "license": "MIT", "dependencies": { @@ -5585,7 +5741,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.11" + "storybook": "^8.6.12" } }, "node_modules/@storybook/csf": { @@ -5605,28 +5761,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@storybook/instrumenter": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.11.tgz", - "integrity": "sha512-IOLvc4BOVKofWhyRScA2h/R36cACBK3DUCrZkQTLU+FUIXWg7Yjyco7lDEk/0W9mlH0Fe/eWEhluI2WTowkesQ==", - "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.6.11" - } - }, "node_modules/@storybook/manager-api": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.11.tgz", - "integrity": "sha512-U3ijEFX7B7wNYzFctmTIXOiN0zLlt8/9EHbZQUUrQ1pf7bQzADJCy63Y3B+kir8i+n3LsBWB42X2aSiT0lLaKQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.12.tgz", + "integrity": "sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==", "dev": true, "license": "MIT", "funding": { @@ -5652,14 +5790,14 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.11.tgz", - "integrity": "sha512-Fn2Zyqbpad7VyWZDdPJoB0aQ1QyOwYzn1o6viB8mUvyCobj9w0DyMFOmhi8LXy1gZjZS3T7c2f/Wnb5UcWJveA==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.12.tgz", + "integrity": "sha512-aCCHjR/jsVPVThRH7nK70wS0Od44M6hqkkakg3xr7LETZZGj99heen6t4VHvz8gcQYT9l6R/oZwCl7f/PQ3ZBQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.11", - "@storybook/react": "8.6.11", + "@storybook/core-webpack": "8.6.12", + "@storybook/react": "8.6.12", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/semver": "^7.3.4", "find-up": "^5.0.0", @@ -5680,7 +5818,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.6.11" + "storybook": "^8.6.12" }, "peerDependenciesMeta": { "typescript": { @@ -5689,9 +5827,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.11.tgz", - "integrity": "sha512-NpSVJFa9MkPq3u/h+bvx+iSnm6OG6mMUzMgmY67mA0dgIgOWcaoP2Y7254SZlBeho97HCValTDKJyqZMwiVlyQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.12.tgz", + "integrity": "sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==", "dev": true, "license": "MIT", "funding": { @@ -5703,18 +5841,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.11.tgz", - "integrity": "sha512-ZaE2IS5alauWxEvWo8LNEi27QxiRfJrfffDpQJIIvY4WnR+jzgLdtMOAVo/cSM9mJSRLESEYW57b0l7JdQGm1g==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.12.tgz", + "integrity": "sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.6.11", + "@storybook/components": "8.6.12", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.11", - "@storybook/preview-api": "8.6.11", - "@storybook/react-dom-shim": "8.6.11", - "@storybook/theming": "8.6.11" + "@storybook/manager-api": "8.6.12", + "@storybook/preview-api": "8.6.12", + "@storybook/react-dom-shim": "8.6.12", + "@storybook/theming": "8.6.12" }, "engines": { "node": ">=18.0.0" @@ -5724,10 +5862,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.11", + "@storybook/test": "8.6.12", "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.6.11", + "storybook": "^8.6.12", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5760,9 +5898,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.11.tgz", - "integrity": "sha512-giwqwx0PO70SyqoZ25CBM2tpAjJX5sjPm7uWKknYcFGl3H2PYDqqnvH7NfEXENQMq5DpAJisCZ0KkRvNHzLV2w==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.12.tgz", + "integrity": "sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==", "dev": true, "license": "MIT", "funding": { @@ -5772,19 +5910,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.6.11" + "storybook": "^8.6.12" } }, "node_modules/@storybook/react-webpack5": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.11.tgz", - "integrity": "sha512-tEzIKmY9RbqAjBGYjWlbS/cW23Vp43FdNM0uEPHFxIinyFIU69kpnVyHOhD02vwQMb88RE84WhGS5NYuGiL0iw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.12.tgz", + "integrity": "sha512-wZOjPQ00gu85iQoKgwz5uvM3+bhXrQDVR0ppVAj7vVy6cvLEsJXmqNLHbXPCZuKPmvwzYr1QkslMLCIkF8OGdA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.6.11", - "@storybook/preset-react-webpack": "8.6.11", - "@storybook/react": "8.6.11" + "@storybook/builder-webpack5": "8.6.12", + "@storybook/preset-react-webpack": "8.6.12", + "@storybook/react": "8.6.12" }, "engines": { "node": ">=18.0.0" @@ -5796,7 +5934,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.6.11", + "storybook": "^8.6.12", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5805,148 +5943,10 @@ } } }, - "node_modules/@storybook/test": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.11.tgz", - "integrity": "sha512-bk8JCRmVRHjnyt+/YnzCMEd4Y/K2L3uM+sCNuH4pYw6XT2UkR3Dj5mScGnfMvm98lHfpZDcD/AbY2vorOQsq+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.11", - "@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.6.11" - } - }, - "node_modules/@storybook/test/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/test/node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "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", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "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.6.11", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.11.tgz", - "integrity": "sha512-G7IK5P9gzofUjfYhMo9Pdgbqcr22eoKFLD808Q8RxJopDoypdZKg4tes2iD+6YnrtnHS0nEoP/soMmfFYl9FIw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.12.tgz", + "integrity": "sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==", "dev": true, "license": "MIT", "funding": { @@ -10879,9 +10879,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", - "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -10892,31 +10892,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.1", - "@esbuild/android-arm": "0.25.1", - "@esbuild/android-arm64": "0.25.1", - "@esbuild/android-x64": "0.25.1", - "@esbuild/darwin-arm64": "0.25.1", - "@esbuild/darwin-x64": "0.25.1", - "@esbuild/freebsd-arm64": "0.25.1", - "@esbuild/freebsd-x64": "0.25.1", - "@esbuild/linux-arm": "0.25.1", - "@esbuild/linux-arm64": "0.25.1", - "@esbuild/linux-ia32": "0.25.1", - "@esbuild/linux-loong64": "0.25.1", - "@esbuild/linux-mips64el": "0.25.1", - "@esbuild/linux-ppc64": "0.25.1", - "@esbuild/linux-riscv64": "0.25.1", - "@esbuild/linux-s390x": "0.25.1", - "@esbuild/linux-x64": "0.25.1", - "@esbuild/netbsd-arm64": "0.25.1", - "@esbuild/netbsd-x64": "0.25.1", - "@esbuild/openbsd-arm64": "0.25.1", - "@esbuild/openbsd-x64": "0.25.1", - "@esbuild/sunos-x64": "0.25.1", - "@esbuild/win32-arm64": "0.25.1", - "@esbuild/win32-ia32": "0.25.1", - "@esbuild/win32-x64": "0.25.1" + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" } }, "node_modules/esbuild-register": { @@ -13488,9 +13488,9 @@ } }, "node_modules/html-entities": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.5.tgz", - "integrity": "sha512-24CG9o869vSa86BGCf7x65slrAztzFTU5VBQzEIwqjhKuB4zCC7xlH/7NCcZ1EN5MdmGx9lUqugfutuT6J+jKQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "dev": true, "funding": [ { @@ -23834,13 +23834,13 @@ } }, "node_modules/storybook": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.11.tgz", - "integrity": "sha512-B2wxpmq1QYS4JV7RQu1mOHD7akfoGbuoUSkx2D2GZgv/zXAHZmDpSFcTvvBBm8FAtzChI9HhITSJ0YS0ePfnJQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.12.tgz", + "integrity": "sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.6.11" + "@storybook/core": "8.6.12" }, "bin": { "getstorybook": "bin/index.cjs", @@ -26964,13 +26964,13 @@ }, "devDependencies": { "@node-core/website-i18n": "*", - "@storybook/addon-controls": "^8.6.11", - "@storybook/addon-interactions": "^8.6.11", + "@storybook/addon-controls": "^8.6.12", + "@storybook/addon-interactions": "^8.6.12", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.11", - "@storybook/addon-viewport": "^8.6.11", + "@storybook/addon-themes": "^8.6.12", + "@storybook/addon-viewport": "^8.6.12", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", - "@storybook/react-webpack5": "^8.6.11", + "@storybook/react-webpack5": "^8.6.12", "@swc/jest": "^0.2.37", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index f481cd26f5afe..3c215c63768dc 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -33,13 +33,13 @@ }, "devDependencies": { "@node-core/website-i18n": "*", - "@storybook/addon-controls": "^8.6.11", - "@storybook/addon-interactions": "^8.6.11", + "@storybook/addon-controls": "^8.6.12", + "@storybook/addon-interactions": "^8.6.12", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.11", - "@storybook/addon-viewport": "^8.6.11", + "@storybook/addon-themes": "^8.6.12", + "@storybook/addon-viewport": "^8.6.12", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", - "@storybook/react-webpack5": "^8.6.11", + "@storybook/react-webpack5": "^8.6.12", "@swc/jest": "^0.2.37", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", From 29943378a534011638ba3652f60d0914751b2bc4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:30:54 +0200 Subject: [PATCH 0371/1385] meta: bump @types/node from 22.13.8 to 22.13.17 (#7608) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.13.8 to 22.13.17. - [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-version: 22.13.17 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> 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 252f5814cf764..69ca5316df474 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@eslint/js": "~9.23.0", - "@types/node": "22.13.14", + "@types/node": "22.14.0", "@types/react": "^19.0.12", "@types/react-dom": "^19.0.4", "cz-conventional-changelog": "3.3.0", @@ -7020,13 +7020,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", - "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", "devOptional": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/parse-json": { @@ -25418,9 +25418,9 @@ } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "devOptional": true, "license": "MIT" }, diff --git a/package.json b/package.json index 3f7a4dd66cd76..fa0eea7724611 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ }, "devDependencies": { "@eslint/js": "~9.23.0", - "@types/node": "22.13.14", + "@types/node": "22.14.0", "@types/react": "^19.0.12", "@types/react-dom": "^19.0.4", "cz-conventional-changelog": "3.3.0", From dc74a741d629a33aa3966366ff4f0b4f082d689c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 09:38:59 +0000 Subject: [PATCH 0372/1385] meta: bump typescript from 5.7.3 to 5.8.2 (#7603) Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.7.3 to 5.8.2. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml) - [Commits](https://github.com/microsoft/TypeScript/compare/v5.7.3...v5.8.2) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package-lock.json | 32 ++------------------------------ packages/i18n/package.json | 2 +- 3 files changed, 4 insertions(+), 32 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index f18e6bf7aacad..1be93693fd51f 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -86,7 +86,7 @@ "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", - "typescript": "~5.7.2", + "typescript": "~5.8.2", "typescript-eslint": "~8.28.0", "user-agent-data-types": "0.4.2" } diff --git a/package-lock.json b/package-lock.json index 69ca5316df474..92c7385185841 100644 --- a/package-lock.json +++ b/package-lock.json @@ -100,7 +100,7 @@ "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", - "typescript": "~5.7.2", + "typescript": "~5.8.2", "typescript-eslint": "~8.28.0", "user-agent-data-types": "0.4.2" } @@ -361,20 +361,6 @@ "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", "license": "MIT" }, - "apps/site/node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/@adobe/css-tools": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", @@ -26876,7 +26862,7 @@ "name": "@node-core/website-i18n", "devDependencies": { "eslint-import-resolver-typescript": "~4.3.1", - "typescript": "~5.7.2", + "typescript": "~5.8.2", "typescript-eslint": "~8.28.0" } }, @@ -26931,20 +26917,6 @@ "dev": true, "license": "MIT" }, - "packages/i18n/node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "packages/ui-components": { "name": "@node-core/ui-components", "dependencies": { diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 89152e24ff9a7..d593d5a635d84 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "eslint-import-resolver-typescript": "~4.3.1", - "typescript": "~5.7.2", + "typescript": "~5.8.2", "typescript-eslint": "~8.28.0" } } From e98ab9781911fcebcc702ad7c1177dc78800b15c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 09:51:02 +0000 Subject: [PATCH 0373/1385] meta: bump the react group across 1 directory with 2 updates (#7612) Bumps the react group with 2 updates in the / directory: [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). Updates `@types/react` from 19.0.12 to 19.1.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Updates `@types/react-dom` from 19.0.4 to 19.1.1 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom) --- updated-dependencies: - dependency-name: "@types/react" dependency-version: 19.1.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: react - dependency-name: "@types/react-dom" dependency-version: 19.1.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: react ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 92c7385185841..341dfb1adf26b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,8 +19,8 @@ "devDependencies": { "@eslint/js": "~9.23.0", "@types/node": "22.14.0", - "@types/react": "^19.0.12", - "@types/react-dom": "^19.0.4", + "@types/react": "^19.1.0", + "@types/react-dom": "^19.1.1", "cz-conventional-changelog": "3.3.0", "eslint": "~9.23.0", "eslint-plugin-import-x": "~4.9.4", @@ -7023,18 +7023,18 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.0.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", - "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz", + "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==", "license": "MIT", "dependencies": { "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", - "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.1.tgz", + "integrity": "sha512-jFf/woGTVTjUJsl2O7hcopJ1r0upqoq/vIOoCj0yLh3RIXxWcljlpuZ+vEBRXsymD1jhfeJrlyTy/S1UW+4y1w==", "devOptional": true, "license": "MIT", "peerDependencies": { diff --git a/package.json b/package.json index fa0eea7724611..b5f5f7574c129 100644 --- a/package.json +++ b/package.json @@ -44,8 +44,8 @@ "devDependencies": { "@eslint/js": "~9.23.0", "@types/node": "22.14.0", - "@types/react": "^19.0.12", - "@types/react-dom": "^19.0.4", + "@types/react": "^19.1.0", + "@types/react-dom": "^19.1.1", "cz-conventional-changelog": "3.3.0", "eslint": "~9.23.0", "eslint-plugin-import-x": "~4.9.4", From 44f25bc5033f4d55155f142def9b1eae84b66b54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 10:19:43 +0000 Subject: [PATCH 0374/1385] meta: bump the lint group across 1 directory with 3 updates (#7613) Bumps the lint group with 3 updates in the / directory: [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x), [@eslint/compat](https://github.com/eslint/rewrite) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint). Updates `eslint-plugin-import-x` from 4.9.4 to 4.10.0 - [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.9.4...v4.10.0) Updates `@eslint/compat` from 1.2.7 to 1.2.8 - [Release notes](https://github.com/eslint/rewrite/releases) - [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json) - [Commits](https://github.com/eslint/rewrite/compare/compat-v1.2.7...compat-v1.2.8) Updates `typescript-eslint` from 8.28.0 to 8.29.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.29.0/packages/typescript-eslint) --- updated-dependencies: - dependency-name: eslint-plugin-import-x dependency-version: 4.10.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: "@eslint/compat" dependency-version: 1.2.8 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint - dependency-name: typescript-eslint dependency-version: 8.29.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 4 +- package-lock.json | 235 ++++++++-------------------- package.json | 2 +- packages/i18n/package.json | 2 +- packages/ui-components/package.json | 2 +- 5 files changed, 66 insertions(+), 179 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 1be93693fd51f..adf9abf2354cb 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -64,7 +64,7 @@ "vfile-matter": "~5.0.1" }, "devDependencies": { - "@eslint/compat": "~1.2.7", + "@eslint/compat": "~1.2.8", "@next/eslint-plugin-next": "15.2.4", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", @@ -87,7 +87,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.28.0", + "typescript-eslint": "~8.29.0", "user-agent-data-types": "0.4.2" } } diff --git a/package-lock.json b/package-lock.json index 341dfb1adf26b..22d537b09e185 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@types/react-dom": "^19.1.1", "cz-conventional-changelog": "3.3.0", "eslint": "~9.23.0", - "eslint-plugin-import-x": "~4.9.4", + "eslint-plugin-import-x": "~4.10.0", "eslint-plugin-no-relative-import-paths": "~1.6.1", "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.11" @@ -78,7 +78,7 @@ "vfile-matter": "~5.0.1" }, "devDependencies": { - "@eslint/compat": "~1.2.7", + "@eslint/compat": "~1.2.8", "@next/eslint-plugin-next": "15.2.4", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.2.0", @@ -101,7 +101,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.28.0", + "typescript-eslint": "~8.29.0", "user-agent-data-types": "0.4.2" } }, @@ -1621,9 +1621,9 @@ } }, "node_modules/@eslint/compat": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.7.tgz", - "integrity": "sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.8.tgz", + "integrity": "sha512-LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saowA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -7113,17 +7113,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz", - "integrity": "sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", + "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/type-utils": "8.28.0", - "@typescript-eslint/utils": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/type-utils": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -7143,16 +7143,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz", - "integrity": "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", + "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/typescript-estree": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "debug": "^4.3.4" }, "engines": { @@ -7168,14 +7168,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", - "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", + "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0" + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7186,14 +7186,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz", - "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", + "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.28.0", - "@typescript-eslint/utils": "8.28.0", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/utils": "8.29.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -7209,124 +7209,10 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", - "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.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/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", - "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", - "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/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", - "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", - "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/typescript-estree": "8.28.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", - "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.28.0", - "eslint-visitor-keys": "^4.2.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/type-utils/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/@typescript-eslint/types": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", - "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", + "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", "dev": true, "license": "MIT", "engines": { @@ -7338,14 +7224,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", - "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", + "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -7365,16 +7251,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", - "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", + "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/typescript-estree": "8.28.0" + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7389,13 +7275,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", - "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", + "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/types": "8.29.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -11219,12 +11105,13 @@ } }, "node_modules/eslint-plugin-import-x": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.9.4.tgz", - "integrity": "sha512-IPWbN0KBgBCpAiSlUcS17zc1eqMzRlYz15AzsFrw2Qfqt+e0IupxYbvYD96bGLKVlNdkNwa4ggv1skztpaZR/g==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.10.0.tgz", + "integrity": "sha512-5ej+0WILhX3D6wkcdsyYmPp10SUIK6fmuZ6KS8nf9MD8CJ6/S/3Dl7m21g+MLeaTMsvcEXo3JunNAbgHwXxs/g==", "dev": true, "license": "MIT", "dependencies": { + "@pkgr/core": "^0.2.0", "@types/doctrine": "^0.0.9", "@typescript-eslint/utils": "^8.28.0", "debug": "^4.4.0", @@ -11232,7 +11119,7 @@ "eslint-import-resolver-node": "^0.3.9", "get-tsconfig": "^4.10.0", "is-glob": "^4.0.3", - "minimatch": "^10.0.1", + "minimatch": "^9.0.3 || ^10.0.1", "semver": "^7.7.1", "stable-hash": "^0.0.5", "tslib": "^2.8.1", @@ -25342,15 +25229,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.28.0.tgz", - "integrity": "sha512-jfZtxJoHm59bvoCMYCe2BM0/baMswRhMmYhy+w6VfcyHrjxZ0OJe0tGasydCpIpA+A/WIJhTyZfb3EtwNC/kHQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.29.0.tgz", + "integrity": "sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.28.0", - "@typescript-eslint/parser": "8.28.0", - "@typescript-eslint/utils": "8.28.0" + "@typescript-eslint/eslint-plugin": "8.29.0", + "@typescript-eslint/parser": "8.29.0", + "@typescript-eslint/utils": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -26863,7 +26750,7 @@ "devDependencies": { "eslint-import-resolver-typescript": "~4.3.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.28.0" + "typescript-eslint": "~8.29.0" } }, "packages/i18n/node_modules/eslint-import-resolver-typescript": { @@ -26959,7 +26846,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.28.0" + "typescript-eslint": "~8.29.0" }, "engines": { "node": ">=20" diff --git a/package.json b/package.json index b5f5f7574c129..db9af1bf18077 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@types/react-dom": "^19.1.1", "cz-conventional-changelog": "3.3.0", "eslint": "~9.23.0", - "eslint-plugin-import-x": "~4.9.4", + "eslint-plugin-import-x": "~4.10.0", "eslint-plugin-no-relative-import-paths": "~1.6.1", "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.11" diff --git a/packages/i18n/package.json b/packages/i18n/package.json index d593d5a635d84..876273723b3f3 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -18,6 +18,6 @@ "devDependencies": { "eslint-import-resolver-typescript": "~4.3.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.28.0" + "typescript-eslint": "~8.29.0" } } diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 3c215c63768dc..4ec670df98f34 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -56,6 +56,6 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.28.0" + "typescript-eslint": "~8.29.0" } } From f1eca602a6b5a208072658664ee62417ee55264b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 06:22:52 -0500 Subject: [PATCH 0375/1385] meta: bump actions/setup-node from 4.2.0 to 4.3.0 (#7595) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.2.0 to 4.3.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a...cdca7365b2dadb8aad0a33bc7601856ffabcc48e) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-sync.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aa848b60e17a0..6810991fb0d1c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,7 +89,7 @@ jobs: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- - name: Set up Node.js - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index c9cdcb982393c..a3487f7993222 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -95,7 +95,7 @@ jobs: cache-lint- - name: Set up Node.js - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' @@ -173,7 +173,7 @@ jobs: fetch-depth: 0 - name: Set up Node.js - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 22ca200e7fe8e..52b13f6517088 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -94,7 +94,7 @@ jobs: cache-lint- - name: Set up Node.js - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' From 03ae0165280876be88b4f1e28fca1af97fc4945c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 06:24:27 -0500 Subject: [PATCH 0376/1385] meta: bump actions/dependency-review-action from 4.5.0 to 4.6.0 (#7591) Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.5.0 to 4.6.0. - [Release notes](https://github.com/actions/dependency-review-action/releases) - [Commits](https://github.com/actions/dependency-review-action/compare/3b139cfc5fae8b618d3eae3675e383bb1769c019...ce3cf9537a52e8119d91fd484ab5b8a807627bf8) --- updated-dependencies: - dependency-name: actions/dependency-review-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> 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 797d9dcce2430..c7ac1a9a8d2b8 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@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0 + uses: actions/dependency-review-action@ce3cf9537a52e8119d91fd484ab5b8a807627bf8 # v4.6.0 From 54cfd51b29c713b00302e262e3960cb36e7e88dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 06:27:55 -0500 Subject: [PATCH 0377/1385] meta: bump actions/cache from 4.2.2 to 4.2.3 (#7594) Bumps [actions/cache](https://github.com/actions/cache) from 4.2.2 to 4.2.3. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/d4323d4df104b026a6aa633fdb11d772146be0bf...5a3ec84eff668545956fd18022155c47e93e2684) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-sync.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6810991fb0d1c..eda00b259bc50 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: # regardless of having code changes or not fetch-depth: 1 - - uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 + - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: # See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node path: | diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index a3487f7993222..34d8b0613216a 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -76,7 +76,7 @@ jobs: ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }} - name: Restore Lint Cache - uses: actions/cache/restore@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 + uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | .turbo/cache @@ -129,7 +129,7 @@ jobs: (github.event_name == 'pull_request_target' && startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') - uses: actions/cache/save@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 + uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | .turbo/cache diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 52b13f6517088..6ccdc1c0f91f3 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -78,7 +78,7 @@ jobs: ref: refs/pull/${{ needs.synchronize-with-crowdin.outputs.pull_request_number }}/head - name: Restore Lint Cache - uses: actions/cache/restore@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 + uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | apps/site/.eslintmdcache @@ -123,7 +123,7 @@ jobs: branch: 'chore/crowdin' - name: Save Lint Cache - uses: actions/cache/save@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 + uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | apps/site/.eslintmdcache From 49e47df9efa2f148c11b7c7a5c14131ce98f6c41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:28:58 +0000 Subject: [PATCH 0378/1385] meta: bump actions/upload-artifact from 4.6.1 to 4.6.2 (#7593) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.1 to 4.6.2. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1...ea165f8d65b6e75b540449e92b4886f43607fa02) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 8c6ab800fba0f..e97f3d87a6206 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -51,7 +51,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: Upload Artifacts - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: SARIF file path: results.sarif From 781f1ea61ea560144d93f4f7dbdde2be2bbd6de1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 06:30:27 -0500 Subject: [PATCH 0379/1385] meta: bump crowdin/github-action from 2.5.2 to 2.7.0 (#7592) Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.5.2 to 2.7.0. - [Release notes](https://github.com/crowdin/github-action/releases) - [Commits](https://github.com/crowdin/github-action/compare/b811e495831e49ff516e7c801f7c5546879b9ee7...b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2) --- updated-dependencies: - dependency-name: crowdin/github-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/translations-sync.yml | 2 +- .github/workflows/translations-upload.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 6ccdc1c0f91f3..f2c43b6da1351 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -37,7 +37,7 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: Crowdin PR - uses: crowdin/github-action@b811e495831e49ff516e7c801f7c5546879b9ee7 # v2.5.2 + uses: crowdin/github-action@b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2 # v2.7.0 id: crowdin_pr with: # do not upload anything - this is a one-way operation download diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml index bb25007f20e65..a3e2cf532f222 100644 --- a/.github/workflows/translations-upload.yml +++ b/.github/workflows/translations-upload.yml @@ -27,7 +27,7 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: crowdin action - uses: crowdin/github-action@b811e495831e49ff516e7c801f7c5546879b9ee7 # v2.5.2 + uses: crowdin/github-action@b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2 # v2.7.0 with: # only upload sources, ensuring this is a one-way operation upload_sources: true From f568ce49325808617e81d4936d81aeb804e1e546 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 07:02:33 -0500 Subject: [PATCH 0380/1385] meta: bump github/codeql-action from 3.28.10 to 3.28.13 (#7590) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.10 to 3.28.13. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d...1b549b9259bda1cb5ddde3b41741a82a2d15a841) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f2b41eb055dcc..b828969508f17 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/autobuild@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e97f3d87a6206..b5cb997b5708d 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: sarif_file: results.sarif From 672525ebda00fb0672b30812beddb67be9ca6c63 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz <dario.piotrowicz@gmail.com> Date: Thu, 3 Apr 2025 21:43:33 +0100 Subject: [PATCH 0381/1385] Revert "chore: refactor the `generateBlogData` function (#7607)" (#7617) This reverts commit b7364b93fd1a0a9b22fd15b3992cd9bc5e38fe05. --- apps/site/next-data/generators/blogData.mjs | 84 +++++++++++---------- 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/apps/site/next-data/generators/blogData.mjs b/apps/site/next-data/generators/blogData.mjs index 3d58593439b8e..c03e23c62a48a 100644 --- a/apps/site/next-data/generators/blogData.mjs +++ b/apps/site/next-data/generators/blogData.mjs @@ -63,46 +63,50 @@ const generateBlogData = async () => { '**/index.md', ]); - const posts = await Promise.all( - filenames.map( - filename => - new Promise(resolve => { - // We create a stream for reading a file instead of reading the files - const _stream = createReadStream(join(blogPath, filename)); - - // We create a readline interface to read the file line-by-line - const _readLine = readline.createInterface({ input: _stream }); - - let rawFrontmatter = ''; - let frontmatterSeparatorsEncountered = 0; - - // We read line by line - _readLine.on('line', line => { - rawFrontmatter += `${line}\n`; - - // We observe the frontmatter separators - if (line === '---') { - frontmatterSeparatorsEncountered++; - } - - // Once we have two separators we close the readLine and the stream - if (frontmatterSeparatorsEncountered === 2) { - _readLine.close(); - _stream.close(); - } - }); - - // Then we parse gray-matter on the frontmatter - // This allows us to only read the frontmatter part of each file - // and optimise the read-process as we have thousands of markdown files - _readLine.on('close', () => { - resolve(getFrontMatter(filename, rawFrontmatter)); - }); - }) - ) - ); - - return { categories: [...blogCategories], posts }; + return new Promise(resolve => { + const posts = []; + const rawFrontmatter = []; + + filenames.forEach(filename => { + // We create a stream for reading a file instead of reading the files + const _stream = createReadStream(join(blogPath, filename)); + + // We create a readline interface to read the file line-by-line + const _readLine = readline.createInterface({ input: _stream }); + + // Creates an array of the metadata based on the filename + // This prevents concurrency issues since the for-loop is synchronous + // and these event listeners are not + rawFrontmatter[filename] = [0, '']; + + // We read line by line + _readLine.on('line', line => { + rawFrontmatter[filename][1] += `${line}\n`; + + // We observe the frontmatter separators + if (line === '---') { + rawFrontmatter[filename][0] += 1; + } + + // Once we have two separators we close the readLine and the stream + if (rawFrontmatter[filename][0] === 2) { + _readLine.close(); + _stream.close(); + } + }); + + // Then we parse gray-matter on the frontmatter + // This allows us to only read the frontmatter part of each file + // and optimise the read-process as we have thousands of markdown files + _readLine.on('close', () => { + posts.push(getFrontMatter(filename, rawFrontmatter[filename][1])); + + if (posts.length === filenames.length) { + resolve({ categories: [...blogCategories], posts }); + } + }); + }); + }); }; export default generateBlogData; From 7f228be1db552ed8d3f0f478c467ce44a0879094 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Fri, 4 Apr 2025 22:00:23 -0500 Subject: [PATCH 0382/1385] remove remaining cz files and dependencies (#7615) --- .cz.json | 4 - package-lock.json | 1234 ++------------------------------------------- package.json | 1 - 3 files changed, 35 insertions(+), 1204 deletions(-) delete mode 100644 .cz.json diff --git a/.cz.json b/.cz.json deleted file mode 100644 index 3cadd75a82b80..0000000000000 --- a/.cz.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "path": "./node_modules/cz-conventional-changelog", - "disableSubjectLowerCase": true -} diff --git a/package-lock.json b/package-lock.json index 22d537b09e185..de044925e8a88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,6 @@ "@types/node": "22.14.0", "@types/react": "^19.1.0", "@types/react-dom": "^19.1.1", - "cz-conventional-changelog": "3.3.0", "eslint": "~9.23.0", "eslint-plugin-import-x": "~4.10.0", "eslint-plugin-no-relative-import-paths": "~1.6.1", @@ -921,117 +920,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@commitlint/config-validator": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.0.tgz", - "integrity": "sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@commitlint/types": "^19.8.0", - "ajv": "^8.11.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/execute-rule": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.0.tgz", - "integrity": "sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/load": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.0.tgz", - "integrity": "sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@commitlint/config-validator": "^19.8.0", - "@commitlint/execute-rule": "^19.8.0", - "@commitlint/resolve-extends": "^19.8.0", - "@commitlint/types": "^19.8.0", - "chalk": "^5.3.0", - "cosmiconfig": "^9.0.0", - "cosmiconfig-typescript-loader": "^6.1.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@commitlint/resolve-extends": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.0.tgz", - "integrity": "sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@commitlint/config-validator": "^19.8.0", - "@commitlint/types": "^19.8.0", - "global-directory": "^4.0.1", - "import-meta-resolve": "^4.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/types": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.0.tgz", - "integrity": "sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/conventional-commits-parser": "^5.0.0", - "chalk": "^5.3.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@csstools/css-parser-algorithms": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", @@ -6788,17 +6676,6 @@ "@types/node": "*" } }, - "node_modules/@types/conventional-commits-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", - "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -8119,19 +7996,6 @@ "node": ">=8" } }, - "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/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -8408,16 +8272,6 @@ "dev": true, "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -8719,18 +8573,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -8808,31 +8650,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", @@ -8872,16 +8689,6 @@ "@keyv/serialize": "^1.0.3" } }, - "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -9019,21 +8826,6 @@ "node": ">=12" } }, - "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/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -9084,13 +8876,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, - "license": "MIT" - }, "node_modules/check-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", @@ -9200,32 +8985,6 @@ "node": ">=0.10.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-truncate": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", @@ -9292,16 +9051,6 @@ "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", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 10" - } - }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -9323,16 +9072,6 @@ "node": ">=12" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -9381,22 +9120,12 @@ "node": ">=12.5.0" } }, - "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" + "license": "MIT", + "optional": true }, "node_modules/color-string": { "version": "1.9.1", @@ -9475,90 +9204,6 @@ "node": ">= 12" } }, - "node_modules/commitizen": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.3.1.tgz", - "integrity": "sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cachedir": "2.3.0", - "cz-conventional-changelog": "3.3.0", - "dedent": "0.7.0", - "detect-indent": "6.1.0", - "find-node-modules": "^2.1.2", - "find-root": "1.1.0", - "fs-extra": "9.1.0", - "glob": "7.2.3", - "inquirer": "8.2.5", - "is-utf8": "^0.2.1", - "lodash": "4.17.21", - "minimist": "1.2.7", - "strip-bom": "4.0.0", - "strip-json-comments": "3.1.1" - }, - "bin": { - "commitizen": "bin/commitizen", - "cz": "bin/git-cz", - "git-cz": "bin/git-cz" - }, - "engines": { - "node": ">= 12" - } - }, - "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", @@ -9596,13 +9241,6 @@ "dev": true, "license": "MIT" }, - "node_modules/conventional-commit-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", - "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", - "dev": true, - "license": "ISC" - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -9636,25 +9274,6 @@ } } }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", - "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "jiti": "^2.4.1" - }, - "engines": { - "node": ">=v18" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=9", - "typescript": ">=5" - } - }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -9927,31 +9546,10 @@ "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/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true, "license": "BSD-2-Clause" }, @@ -10102,19 +9700,6 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -10180,26 +9765,6 @@ "node": ">=6" } }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -10814,16 +10379,6 @@ "node": ">=6" } }, - "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/escodegen": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", @@ -11892,19 +11447,6 @@ "node": ">= 0.8.0" } }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", @@ -11940,21 +11482,6 @@ "node": ">=0.10.0" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -12083,22 +11610,6 @@ "node": ">=0.4.0" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -12156,24 +11667,6 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/find-node-modules": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", - "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "findup-sync": "^4.0.0", - "merge": "^2.1.1" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true, - "license": "MIT" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -12191,22 +11684,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/findup-sync": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", - "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -12457,22 +11934,6 @@ "node": ">=0.4.x" } }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fs-monkey": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", @@ -12740,75 +12201,6 @@ "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", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ini": "4.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/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/global-prefix/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/global-prefix/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/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -12982,16 +12374,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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", - "engines": { - "node": ">=4" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -13211,19 +12593,6 @@ "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", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hookified": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", @@ -13582,19 +12951,6 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -13760,126 +13116,12 @@ "dev": true, "license": "ISC" }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/inline-style-parser": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", "license": "MIT" }, - "node_modules/inquirer": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "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" - } - }, - "node_modules/inquirer/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/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", @@ -14265,16 +13507,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -14455,26 +13687,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true, - "license": "MIT" - }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -14521,16 +13733,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -17629,183 +16831,59 @@ "dev": true, "license": "MIT", "dependencies": { - "@npmcli/config": "^8.0.0", - "import-meta-resolve": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" + "@npmcli/config": "^8.0.0", + "import-meta-resolve": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { + "node_modules/loader-runner": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "devOptional": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6.11.5" } }, - "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==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "p-locate": "^5.0.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" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "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/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/log-update": { "version": "6.1.0", @@ -17997,16 +17075,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/longest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", - "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -18682,13 +17750,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", - "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -19578,13 +18639,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true, - "license": "ISC" - }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -20089,116 +19143,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "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", - "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/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -20331,16 +19275,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/parse5": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", @@ -22890,20 +21824,6 @@ "node": ">=8" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -22934,27 +21854,6 @@ "node": ">=10" } }, - "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/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/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -23044,16 +21943,6 @@ "node": "*" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -23077,16 +21966,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -24352,19 +23231,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/supports-hyperlinks": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", @@ -24764,13 +23630,6 @@ "node": "*" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" - }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -24843,19 +23702,6 @@ "node": ">=14.0.0" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -26113,16 +24959,6 @@ "node": ">=10.13.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/package.json b/package.json index db9af1bf18077..632ba3df9b43e 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "@types/node": "22.14.0", "@types/react": "^19.1.0", "@types/react-dom": "^19.1.1", - "cz-conventional-changelog": "3.3.0", "eslint": "~9.23.0", "eslint-plugin-import-x": "~4.10.0", "eslint-plugin-no-relative-import-paths": "~1.6.1", From 9884c3e09a2b302921a0dd5a9b6d43b241e96639 Mon Sep 17 00:00:00 2001 From: flakey5 <73616808+flakey5@users.noreply.github.com> Date: Sat, 5 Apr 2025 12:12:20 -0700 Subject: [PATCH 0383/1385] blog: r2 migration blog post (#7545) * blog: r2 migration blog post Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> * cleanup Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> * update stats Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Aviv Keller <me@aviv.sh> Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> * update release time Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> * it's not 2026 Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> * bump release date Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> --------- Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> Co-authored-by: Aviv Keller <me@aviv.sh> Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --- apps/site/authors.json | 5 + .../making-nodejs-downloads-reliable.md | 216 ++++++++++++++++++ .../announcements/old-release-asset-infra.png | Bin 0 -> 51299 bytes 3 files changed, 221 insertions(+) create mode 100644 apps/site/pages/en/blog/announcements/making-nodejs-downloads-reliable.md create mode 100755 apps/site/public/static/images/blog/announcements/old-release-asset-infra.png diff --git a/apps/site/authors.json b/apps/site/authors.json index 85019ae535ef8..f22fcb8ccbaa0 100644 --- a/apps/site/authors.json +++ b/apps/site/authors.json @@ -78,6 +78,11 @@ "name": "Evan Lucas", "website": "https://github.com/evanlucas" }, + "flakey5": { + "id": "flakey5", + "name": "flakey5", + "website": "https://github.com/flakey5" + }, "Gibson Fahnestock": { "id": "gibfahn", "name": "Gibson Fahnestock", diff --git a/apps/site/pages/en/blog/announcements/making-nodejs-downloads-reliable.md b/apps/site/pages/en/blog/announcements/making-nodejs-downloads-reliable.md new file mode 100644 index 0000000000000..e46fd70f16367 --- /dev/null +++ b/apps/site/pages/en/blog/announcements/making-nodejs-downloads-reliable.md @@ -0,0 +1,216 @@ +--- +date: '2025-04-05T12:00:00.000Z' +category: announcements +title: Making Node.js Downloads Reliable +layout: blog-post +author: flakey5 +--- + +Last year, we shared [the details behind Node.js's brand new website](https://nodejs.org/en/blog/announcements/diving-into-the-nodejs-website-redesign). +Today we're back, talking about the new infrastructure serving Node.js' release assets. + +This blog post goes into what Node.js' web infrastructure looks like, its history, and where it stands today. +We're also going to be covering what exactly we had in mind and were prioritizing with this infrastructure overhaul. + +## Some Brief History + +At the start of the project in 2009, Node.js release assets (binaries and documentation) were stored on a publicly accessible S3 bucket. +This was later changed around May of 2010 to a VPS, which also hosted the Node.js website. + +When the io.js fork happened in 2014, they also had used a VPS to host the website and release assets. +After the Node.js and io.js merge in 2015, io.js' VPS (which will be referred to as the origin server from hereon) was repurposed to host both io.js and Node.js releases, along with the Node.js website. + +A backup server was also created, which acted almost like an exact copy of the origin server. +It served two main purposes: + +1. Serve any traffic that the origin server couldn't handle. +2. Serve as a backup for the binaries and documentation in case if something went wrong with the origin server. + +The entire architecture looked like this: + +![A diagram of the old infrastructure. Cloudflare is used as a cache and load balancer. If the origin server is healthy, traffic is sent to it. Otherwise, the backup server receives it.](/static/images/blog/announcements/old-release-asset-infra.png) + +### How Node.js Releases are Released + +When a mainline release is ready to be released, the releaser triggers a release CI job. +These jobs build the Node.js binaries for all supported platforms and generate the documentation files. + +Upon a release CI job completing successfully, its assets are uploaded to the origin server in a staging directory. +When all of the release CI jobs finish, the releaser then manually "promotes" the assets to the production directory, making the release publicly accessible. + +For nightly or test releases, the promotion happens automatically. + +_Refs: [Release Overview](https://github.com/nodejs/build/blob/main/doc/release-overview.md), [Node.js release process](https://github.com/nodejs/node/blob/main/doc/contributing/releases.md)_. + +## Growing Pains + +Nowadays, the nodejs.org domain sees over 2.4 billion requests and 3+ petabytes of traffic per month, with a majority of that going towards release assets. + +This averages to about 925 requests per second and an average bandwidth of 1.2 gb per second. + +<details> + <summary>Math</summary> +2,400,000,000 requests per month / 30 days per month / 24 hours per day / 60 minutes per hour / 60 seconds per minute = ~925 requests/second. +3,000,000,000 mb per month / 30 days per month / 24 hours per day / 60 minutes per hour / 60 seconds per minute = ~1157 mb/second. +</details> + +The origin server does not have enough resources for this, and it struggled to keep up with the demand. +The nodejs.org website was moved off of the origin server as part of the redesign which did help, but it still wasn't enough. + +Caching was being used rather inefficiently as well. +Node.js makes heavy use of symlinks with its release assets. +Some of these symlinks include directories like `https://nodejs.org/dist/latest/`, which changes with each release. +When a release is promoted, it needs to clear the cache in order to update these symlinks so users actually get the latest version. +However, there wasn't a great way to clear only what we needed to clear from the cache. +This resulted in us needing to purge the _entire_ cache with each release. +Node.js has nightly releases, meaning this was happening once every 24 hours _at a minimum_. +So, everyday at roughly midnight UTC, the origin server got effectively DDoS'ed from the amount of uncached traffic being sent to it. + +There were also a handful of other issues with the origin server pertaining to its maintenance: + +- Documentation of things running on the server was spotty; some things were well documented and others not at all. +- Changes performed in the [nodejs/build](https://github.com/nodejs/build) repository needed to be deployed manually by a Build WG member with access. There was also no guarantee that what's in the build repository is what's actually on the server. +- There's no staging environment other than a backup instance. +- Rollbacks could only be done via disk images through the VPS providers' web portal. + +## Attempts Were Made + +All of these issues combined created for scenarios where the origin server wasn't touched unless necessary, including a period in which it had over _3 years of uptime_. +These factors also contributed to incidents such as the one that occurred from [March 15th, 2023 to March 17th, 2023](/en/blog/announcements/node-js-march-17-incident), where the Node.js release assets were unavailable for 2 days due to the origin server being overloaded and improper caching rules. +Between incidents like this and the daily outages that were occuring, users were being effected and were painfully aware of the unreliability of the infrastructure. + +This needed to be fixed. + +However, attempts made to remediate these issues in this infrastructure could only go so far. +The NGINX configuration was changed to modify its resource consumption and add in missing documentation. +Cloudflare WAF was integrated to block spammy requests from repositories such as Artifactory. +Load balancing changes were made to try to help lessen the load. +But, these ultimately weren't as effective as they needed to be. + +## The Rewrite + +In August of 2023, [Claudio Wunder](https://github.com/ovflowd) and [I (flakey5)](https://github.com/flakey5) started working on a proof-of-concept for a new way to serve Node.js release assets. + +The idea was "simple": create a new service that solved all of the issues we had with the previous infrastructure and showed no noticeable difference from the old infrastructure to users. +In order to meet these requirements, we prioritized three main goals with this new service: + +1. Reliabiliy: The service needs to be as close to 100% uptime as possible. +2. Maintainability: Maintainers should not have to worry about things toppling over because they changed something. The service needs to be well-documented and as clean and simple as possible. +3. Efficiency: Whatever platform was used, the service would need to make full use of it to provide the best performance and experience as possible. + +In order to meet these requirements, we ended up using [Cloudflare Workers](https://developers.cloudflare.com/workers) and [R2](https://developers.cloudflare.com/r2) for a handful of reasons: + +1. Workers and R2 are, and historically have been, reliable and fast. +2. Workers takes care of the infrastructure for us, so we just need to maintain the service itself. This heavily lessens the cost of maintenance, especially for a team of volunteers. +3. Node.js had already had previous usage of Cloudflare services; it makes sense to look into expanding it. +4. Pricing. Cloudflare was gracious enough to provide Node.js with free access to Workers and R2 under [Project Alexandria](https://www.cloudflare.com/lp/project-alexandria). + +In September of 2023, the proof-of-concept was ready to be reviewed, and an issue was made in the nodejs/build repository ([#3461](https://github.com/nodejs/build/issues/3461)) seeking approval from the Build WG. + +After the Build WG discussed the change, it was approved and we started working on getting the service, which is now referred to as the Release Worker, deployed to production. + +## The Journey to Production + +With developing the Release Worker came a lot of trial and error and learning over numerous iterations of the service. +It needed to have all of the same features and similar, if not the exact same, behaviors as its predecessor, NGINX. + +### What It Needed To Do + +For starters, it needed to be able to provide the latest releases of Node.js as soon as soon as they're released. + +Secondly, it needed to handle routing correctly. +Most assets don't have 1:1 mappings of their URL to where they are located in the file system. +Where a URL maps to can even change depending on the Node.js version that's being requested. +For instance, + +| URL | File Path | +| --------------------------------- | -------------------------------------- | +| `/dist/index.json` | `nodejs/release/index.json` | +| `/dist/latest-iron/...` | `nodejs/release/v20.x.x/...` | +| `/docs/v0.1.20/...` | `nodejs/docs/v0.1.20/...` | +| `/docs/v22.0.0/...` | `nodejs/release/v22.0.0/docs/api/...` | +| `/dist/v0.4.9/node-v0.4.9.tar.gz` | `nodejs/release/node-v0.4.9.tar.gz` | +| `/dist/v0.4.9/SHASUMS256.txt` | `nodejs/release/v0.4.9/SHASUMS256.txt` | + +This behavior was created from multiple different changes throughout the release cycle and the way release assets were distributed, and was achieved through symlinks. +However, R2 doesn't support symlinks, meaning we needed to come up with a solution on our own. + +Finally, we needed to meet the reliability goal. +To do this, we implemented four things: + +1. Any request to R2 that fails is retried 3 times (in additon to the retries that Workers already performs). +2. A "fallback" system. Any request to R2 that fails all retries is rewritten to the old infrastructure. +3. When an error does happen, it's recorded in [Sentry](https://sentry.io/welcome) and we're notified so we can take appropriate action. +4. Slack alerts are in place for Sentry and for any critical point of failure in the Release Worker (ex/ deployment failure). + +### The Iterations + +We first started off with an incredibly simple worker. +Given a path in the URL, it checked if the file requested existed in the R2 bucket. +If it did, it returned it. +Otherwise, it rewrote the request back to the origin server. +For requests that resulted in a directory listing, the worker just forwarded those over to the origin server. +This iteration obviously didn't cover nearly any of the requirements, so it was back to the drawing board. + +The second iteration was based off the popular R2 directory listing library [render2](https://www.npmjs.com/package/render2), developed by [Kotx](https://github.com/Kotx). +The library worked well for the more generic use cases we needed to cover, however, it fell short in the more unique use cases that we had. +So we forked it, adding what we needed for it to work for us. +However, it became rather messy and thus fell short of our maintainability goal. + +This led us to our third iteration, which was a complete rewrite while still keeping some aspects of render2. +It worked for the most part, but this too was also a mess and didn't meet our maintainability goal. +It was also designed in the exact way that we needed the service to behave as well. +If we needed to change that behavior in any way, we would need to refactor significant portions of the codebase. +We knew we could do better than this. + +This led us to the fourth and current iteration of the Release Worker, which was yet again another rewrite. +This time however, it was designed to be a lot more modular and with a middleware-centric design. +This allowed for code that was a lot easier to keep track of and maintain, and, as of November 2024, is what is currently deployed to production. + +### Release Process Changes + +The goal with integrating R2 into the release process was to change as little as possible. +To accomplish this, a similar workflow to what was already in place was made. + +Release CI jobs now upload their assets to a `dist-staging` bucket in addition to the staging directory on the origin server. +Then, when a release is promoted, the assets in `dist-staging` are copied over to a `dist-prod` bucket, which is what the Release Worker reads from. + +## Maintainability + +As said in our previous blog post on the website redesign, an open source project is only as good as its documentation. +In order for the Release Worker to be maintainable, it needed to well documented. + +This was achieved not only through thorough comments in the codebase but also documents such as, + +- [README](https://github.com/nodejs/release-cloudflare-worker/tree/main/README.md) +- [Collaborator Guide](https://github.com/nodejs/release-cloudflare-worker/tree/main/COLLABORATOR_GUIDE.md) +- [Contributing Guide](https://github.com/nodejs/release-cloudflare-worker/tree/main/CONTRIBUTING.md) +- [General Documentation](https://github.com/nodejs/release-cloudflare-worker/blob/main/docs) on things +- [Standard Operating Procedures](https://github.com/nodejs/release-cloudflare-worker/blob/main/docs/sops) for things such as incident flows. + +## What's next? + +The work isn't done _just_ yet. +We still want to, + +- Look into any performance improvements that could be made. + - This includes looking into integrating [Cloudflare KV](https://developers.cloudflare.com/kv/) for directory listings. +- Have better tests and a better development environment ([PR!](https://github.com/nodejs/release-cloudflare-worker/pull/252)). +- Metrics to give us more visibility into how the Release Worker is behaving and if there's anything that we can improve. + +## Thanks + +Many people and organizations have contributed to this effort in many different ways. +We'd like to thank: + +- All of the [contributors and collaborators](https://github.com/nodejs/release-cloudflare-worker/graphs/contributors) that make this project possible. +- [Cloudflare](https://cloudflare.com) for providing the infrastructure that serves Node.js' Website and the Release Worker. Also specifically to the R2 team for the technical support they have given us. +- [Sentry](https://sentry.io/welcome/) for providing an open source license for their error reporting, monitoring, and diagnostic tools. +- [OpenJS Foundation](https://openjsf.org) for their support and guidance. + +> Here is your weekly reminder that the Node.js project is driven by volunteers. Therefore every feature that lands is because someone spent time (or money) to make it happen. This is called Open Governance. +> <cite>[Matteo Collina, via social media](https://x.com/matteocollina/status/1770496526424351205?s=46&t=22eoAstJVk5l46KQXYEk5Q)</cite> + +Want to get involved? [Check out the project on GitHub](https://github.com/nodejs/release-cloudflare-worker). + +> Fun fact! Did you know that Node.js has [a status page](https://status.nodejs.org)? No? You're not alone! We've been rather bad at using it to communicate these issues to users, but we're working on improving that. diff --git a/apps/site/public/static/images/blog/announcements/old-release-asset-infra.png b/apps/site/public/static/images/blog/announcements/old-release-asset-infra.png new file mode 100755 index 0000000000000000000000000000000000000000..03c3d869c790520a42a9ce8910990b0f4b20345e GIT binary patch literal 51299 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 literal 0 HcmV?d00001 From 28a3dab7ad008ab7af9826a31e944cc1ca9edd30 Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Mon, 7 Apr 2025 01:42:01 +0200 Subject: [PATCH 0384/1385] chore: updated docs for releases (#7616) * chore: updated docs for releases * Update previous-releases.mdx Signed-off-by: Claudio W. <cwunder@gnome.org> --------- Signed-off-by: Claudio W. <cwunder@gnome.org> --- .../site/pages/en/about/previous-releases.mdx | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/apps/site/pages/en/about/previous-releases.mdx b/apps/site/pages/en/about/previous-releases.mdx index 0ad5938f64e67..752b97a10744e 100644 --- a/apps/site/pages/en/about/previous-releases.mdx +++ b/apps/site/pages/en/about/previous-releases.mdx @@ -24,17 +24,29 @@ Commercial support for versions past the Maintenance phase is available through <DownloadReleasesTable /> -## Official versus Community +## Official vs. Community Installation Methods -The Node.js website offers numerous installation methods that allow Node.js to be installed in a non-interactive manner, -for example, via CLIs, OS package managers (such as `apt`), or Node.js version managers (such as `nvm`). +The Node.js website provides several non-interactive installation methods, including command-line interfaces (CLIs), operating system (OS) package managers (e.g., `brew`), and Node.js version managers (e.g., `nvm`). -The Node.js project, in an attempt to popularize and advertise community efforts, has introduced a new Downloads page that lists both Official and Community installation methods, providing more versatility and options for users. -With this change, we introduced the concept of "Official" and "Community" installation methods. In order to be considered "Official", the installation method must meet the following requirements: +To highlight and promote community contributions, the Node.js project introduced a revised Downloads page categorizing installation methods as either “Official” or “Community.” This provides users with increased flexibility and choice. To ensure clarity, we’ve defined criteria for each category. -| Requirements | -| ---------------------------------------------------------------------------------------------------------------------------------- | -| New Node.js releases must be available simultaneously upon the official release | -| Project maintainers have a close relationship with Node.js, including direct communication | -| Installation method downloads the official binaries bundled by the Node.js project | -| Installation method does **not** build from source when binaries are available, or alter the official binaries provided by Node.js | +### Official Installation Methods + +Installation methods designated as “Official” must meet the following requirements: + +| Requirements (Official Installation Methods) | +| :------------------------------------------------------------------------------------------------------------------------------- | +| New Node.js releases must be available simultaneously with the official release. | +| Project maintainers must have a close relationship with the Node.js project, including direct communication channels. | +| Installation method must download official binaries bundled by the Node.js project. | +| Installation method must not build from source when pre-built binaries are available, nor should it alter the official binaries. | + +### Community Installation Methods + +Community installation methods included on the self-service download page (/download) must also adhere to a minimum set of criteria: + +- **Version Support:** Must support all currently supported, non-End-of-Life (EOL) Node.js versions. +- **OS Compatibility:** Must function on at least one officially supported Operating System (OS). +- **Broad OS Support:** Cannot be limited to a subset of OS distributions or versions. + - For example, an installation method claiming compatibility with “Windows” must function on “Windows 10”, “Windows 11”, and all their editions (including server versions). + - Similarly, an installation method claiming compatibility with “Linux” must be installable on all major Linux distributions, not just a specific subset. It cannot rely on distribution-specific package managers like `apt` or `dnf`. From bfae1a90d7fcfbc7942cb05e36e7113eb05b4bef Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Mon, 7 Apr 2025 05:23:53 -0400 Subject: [PATCH 0385/1385] chore(actions): remove `base` job (#7624) * chore(actions): remove `base` job Signed-off-by: Aviv Keller <me@aviv.sh> * code review 1 Co-authored-by: Matt Cowley <me@mattcowley.co.uk> Signed-off-by: Aviv Keller <me@aviv.sh> * use TURBO_FORCE --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Matt Cowley <me@mattcowley.co.uk> --- .github/workflows/lint-and-tests.yml | 31 ++++++---------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 34d8b0613216a..adeadd7fc6f88 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -28,26 +28,11 @@ permissions: # This permission is required by `MishaKav/jest-coverage-comment` pull-requests: write -jobs: - base: - name: Base Tasks - runs-on: ubuntu-latest - outputs: - turbo_args: ${{ steps.turborepo_arguments.outputs.turbo_args }} - - steps: - - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 - with: - egress-policy: audit - - - name: Provide Turborepo Arguments - # This step is responsible for providing a reusable string that can be used within other steps and jobs - # that use the `turbo` cli command as a way of easily providing shared arguments to the `turbo` command - id: turborepo_arguments - # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force - run: echo "turbo_args=--force=true" >> "$GITHUB_OUTPUT" +env: + # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force + TURBO_FORCE: true +jobs: lint: # This Job should run either on `merge_groups` or `push` events # or `pull_request_target` event with a `labeled` action with a label named `github_actions:pull-request` @@ -61,7 +46,6 @@ jobs: name: Quality checks runs-on: ubuntu-latest - needs: [base] steps: - name: Harden Runner @@ -115,8 +99,7 @@ jobs: (github.event_name == 'pull_request_target' && github.event.pull_request.head.ref != 'chore/crowdin') # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user - # the `${{ needs.base.outputs.turbo_args }}` is a string substitution happening from the base job - run: npx --package=turbo@latest -- turbo lint check-types prettier ${{ needs.base.outputs.turbo_args }} + run: npx --package=turbo@latest -- turbo lint check-types prettier - name: Save Lint Cache # We only want to save caches on `push` events or `pull_request_target` events @@ -151,7 +134,6 @@ jobs: name: Tests runs-on: ubuntu-latest - needs: [base] environment: name: Storybook @@ -188,8 +170,7 @@ jobs: # We want to run Unit Tests in every circumstance, including Crowdin PRs and Dependabot PRs to ensure # that changes to dependencies or translations don't break the Unit Tests # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user - # the `${{ needs.base.outputs.turbo_args }}` is a string substitution happening from the base job - run: npx --package=turbo@latest -- turbo test:unit ${{ needs.base.outputs.turbo_args }} -- --ci --coverage + run: npx --package=turbo@latest -- turbo test:unit -- --ci --coverage - name: Start Visual Regression Tests (Chromatic) # This assigns the Environment Deployment for Storybook From db3984fde870583e94ab69e7408dc39c93547006 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz <dario.piotrowicz@gmail.com> Date: Mon, 7 Apr 2025 10:25:40 +0100 Subject: [PATCH 0386/1385] chore: fix `getBreadrumbs` typo (#7627) --- apps/site/components/withBreadcrumbs.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/components/withBreadcrumbs.tsx b/apps/site/components/withBreadcrumbs.tsx index 2a740173061ae..fce1d3b85b7b6 100644 --- a/apps/site/components/withBreadcrumbs.tsx +++ b/apps/site/components/withBreadcrumbs.tsx @@ -22,7 +22,7 @@ const WithBreadcrumbs: FC<WithBreadcrumbsProps> = ({ navKeys = [] }) => { const maxLength = isMobileScreen ? 2 : 4; - const getBreadrumbs = () => { + const getBreadcrumbs = () => { const navigationTree = getSideNavigation(navKeys); const pathList = pathname @@ -62,7 +62,7 @@ const WithBreadcrumbs: FC<WithBreadcrumbsProps> = ({ navKeys = [] }) => { return ( <Breadcrumbs - links={getBreadrumbs()} + links={getBreadcrumbs()} maxLength={maxLength} as={Link} homeLinkAriaLabel={t('components.common.breadcrumbs.navigateToHome')} From d291793afcfafc04b96cb6e2da164925b68075c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 11:33:12 +0200 Subject: [PATCH 0387/1385] [automated]: crowdin sync (#7622) * 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 <support+bot@crowdin.com> Co-authored-by: bmuenzenmeyer <298435+bmuenzenmeyer@users.noreply.github.com> --- apps/site/pages/ja/about/branding.mdx | 6 ++-- apps/site/pages/uk/about/branding.mdx | 6 ++-- .../pages/zh-tw/about/get-involved/index.md | 33 +++++++++++++++++++ apps/site/snippets/fr/download/n.bash | 8 +++++ apps/site/snippets/uk/download/n.bash | 8 +++++ packages/i18n/locales/fr.json | 18 +++++++--- packages/i18n/locales/zh-tw.json | 4 ++- 7 files changed, 72 insertions(+), 11 deletions(-) create mode 100644 apps/site/pages/zh-tw/about/get-involved/index.md create mode 100644 apps/site/snippets/fr/download/n.bash create mode 100644 apps/site/snippets/uk/download/n.bash diff --git a/apps/site/pages/ja/about/branding.mdx b/apps/site/pages/ja/about/branding.mdx index b0a6de5ff36af..1ce31fd8b9635 100644 --- a/apps/site/pages/ja/about/branding.mdx +++ b/apps/site/pages/ja/about/branding.mdx @@ -48,7 +48,7 @@ Node.jsのロゴやシンボルマークの許可されている利用方法に </td> <td> - <img alt="Node.jsライトスタック型ロゴ" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="Node.jsライトスタック型ロゴ" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -58,7 +58,7 @@ Node.jsのロゴやシンボルマークの許可されている利用方法に </td> <td> - <img alt="Node.jsホワイトスタック型ロゴ" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="Node.jsホワイトスタック型ロゴ" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> @@ -75,7 +75,7 @@ Node.jsのロゴやシンボルマークの許可されている利用方法に </td> <td> - <img alt="JSアイコンホワイト" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="JSアイコンホワイト" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> diff --git a/apps/site/pages/uk/about/branding.mdx b/apps/site/pages/uk/about/branding.mdx index 0b768febe4c27..686d9ee937b87 100644 --- a/apps/site/pages/uk/about/branding.mdx +++ b/apps/site/pages/uk/about/branding.mdx @@ -48,7 +48,7 @@ layout: about </td> <td> - <img alt="Світлий складений логотип Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="Світлий складений логотип Node.js®" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -58,7 +58,7 @@ layout: about </td> <td> - <img alt="Білий складений логотип Node.js®" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="Білий складений логотип Node.js®" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> @@ -75,7 +75,7 @@ layout: about </td> <td> - <img alt="Білий значок JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="Білий значок JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> diff --git a/apps/site/pages/zh-tw/about/get-involved/index.md b/apps/site/pages/zh-tw/about/get-involved/index.md new file mode 100644 index 0000000000000..2140e0fb763c9 --- /dev/null +++ b/apps/site/pages/zh-tw/about/get-involved/index.md @@ -0,0 +1,33 @@ +--- +title: 加入我們 +layout: about +--- + +# 加入我們 + +若您對於參與 Node.js 社群感興趣,有許多管道可以利用。Node.js 專案是一個龐大且多元的社群,除了撰寫程式碼以外,還有許多貢獻方式。 + +## 社群討論 + +- [`nodejs/node` GitHub 儲存庫](https://github.com/nodejs/node/issues) 是討論 Node.js 核心功能及回報問題的地方。 +- [`nodejs/help` GitHub 儲存庫](https://github.com/nodejs/help/issues) 是專為討論 Node.js 問題的官方地點。 +- Node.js 的 [官方 Discord 伺服器](/discord) 是個可以與其他 Node.js 開發者交流並取得關於 Node.js 專案最新官方資訊的地方。 +- Node.js 的[專案行事曆](https://nodejs.org/calendar)包含所有公開的團隊會議。 + +## 學習資源 + +如果您想要瞭解更多與 Node.js 有關的事,以下有許多可供利用的資源。 + +- Node.js 的[官方學習教材](https://nodejs.org/en/learn/)。 +- Node.js 的 [官方 API 參考文件](https://nodejs.org/api/)。 +- [NodeSchool.io](https://nodeschool.io/) 透過命令列遊戲教授 Node.js 的概念。 +- [StackOverflow 上的 Node.js 標籤](https://stackoverflow.com/questions/tagged/node.js)含有大量的討論串及有用的資源。 +- [DEV Community 上的 Node.js 標籤](https://dev.to/t/node) 含有與 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-` 開始的頻道皆與本專案相關)。 +- 使用 [IRC 客戶端](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients)連線至 `#node.js` 頻道中的 `irc.libera.chat`,或使用[網頁客戶端](https://kiwiirc.com/nextclient/)透過瀏覽器連線至該頻道。 diff --git a/apps/site/snippets/fr/download/n.bash b/apps/site/snippets/fr/download/n.bash new file mode 100644 index 0000000000000..39859ee4e3b4a --- /dev/null +++ b/apps/site/snippets/fr/download/n.bash @@ -0,0 +1,8 @@ +# Télécharger et installer Node.js : +curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s ${props.release.major} + +# Node.js s'installe déjà pendant n-install, mais vous pouvez aussi l'installer manuellement : +# n install ${props.release.major} + +# Vérifier la version de Node.js : +node -v # Doit afficher "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/uk/download/n.bash b/apps/site/snippets/uk/download/n.bash new file mode 100644 index 0000000000000..6315e5462fe5f --- /dev/null +++ b/apps/site/snippets/uk/download/n.bash @@ -0,0 +1,8 @@ +# Завантажує й установлює n і Node.js: +curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s ${props.release.major} + +# Node.js уже встановлюється під час установки n, але її можна встановити вручну: +# n install ${props.release.major} + +# Перевіряє версію Node.js: +node -v # Повинно вивести «${props.release.versionWithPrefix}». diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index 5679db7ae689b..e759646488d47 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -11,6 +11,9 @@ } }, "navBar": { + "controls": { + "toggle": "Afficher/Fermer le menu de navigation" + }, "links": { "about": "À propos", "download": "Téléchargement", @@ -39,6 +42,8 @@ "nodejsWithWebassembly": "Node.js avec WebAssembly", "debugging": "Débogage de Node.js", "profiling": "Profilage des applications Node.js", + "fetch": "Récupérer des données avec Node.js", + "websocket": "Client WebSocket avec Node.js", "securityBestPractices": "Meilleures pratiques de sécurité" } }, @@ -48,7 +53,8 @@ "introduction": "Introduction à TypeScript", "transpile": "Exécution du code TypeScript à l'aide de la transpilation", "run": "Exécuter TypeScript avec un runner", - "runNatively": "Exécuter TypeScript en mode natif" + "runNatively": "Exécuter TypeScript en mode natif", + "publishingTSPackage": "Publier un package TypeScript" } }, "asynchronousWork": { @@ -113,7 +119,8 @@ "testRunner": "Exécuteur de test", "introduction": "Découverte de l'exécuteur de tests de Node.js", "usingTestRunner": "Utilisation de l'exécuteur de tests de Node.js", - "mocking": "Mocking dans les tests" + "mocking": "Mocking dans les tests", + "collectingCodeCoverage": "Collecter la couverture du code dans Node.js" } } }, @@ -280,9 +287,12 @@ "brew": "Homebrew est un gestionnaire de paquets pour macOS et Linux.", "choco": "Chocolatey est un gestionnaire de paquets pour Windows.", "devbox": "Devbox crée des environnements de développement isolés et reproductibles.", - "docker": "Docker est une plateforme de conteneurisation." + "docker": "Docker est une plateforme de conteneurisation.", + "n": "\"n\" est un gestionnaire de versions Node.js multiplateforme.", + "volta": "\"Volta\" est un gestionnaire de versions Node.js multiplateforme." } } - } + }, + "logo": "Logo Node.js" } } diff --git a/packages/i18n/locales/zh-tw.json b/packages/i18n/locales/zh-tw.json index b4dea03530208..32400f7c9c2fc 100644 --- a/packages/i18n/locales/zh-tw.json +++ b/packages/i18n/locales/zh-tw.json @@ -119,7 +119,8 @@ "testRunner": "測試執行器", "introduction": "探索 Node.js 中的測試執行器", "usingTestRunner": "使用 Node.js 中的測試執行器", - "mocking": "在測試中模擬物件" + "mocking": "在測試中模擬物件", + "collectingCodeCoverage": "在 Node.js 中搜集程式碼覆蓋率" } } }, @@ -287,6 +288,7 @@ "choco": "Chocolatey 是 Windows 的套件管理程式。", "devbox": "Devbox 會建立隔離且可重現的開發環境。", "docker": "Docker 是一款容器化平台。", + "n": "「n」是跨平台的 Node.js 版本管理程式。", "volta": "「Volta」是跨平台的 Node.js 版本管理程式。" } } From 52491f940d03023c2bb1b219fdfda47362fb9fef Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:45:24 +0200 Subject: [PATCH 0388/1385] chore(blog): add and normalize authors (#7619) * chore(blog): add and normalize authors * chore(blog): bis * fix: missing author bis fix: missing author bis * fix: test * use tsc repo as `website` Co-authored-by: Rafael Gonzaga <rafael.nunu@hotmail.com> Signed-off-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> * fix: test bis --------- Signed-off-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Co-authored-by: Rafael Gonzaga <rafael.nunu@hotmail.com> --- apps/site/authors.json | 44 +++++++++++++++++-- apps/site/pages/en/blog/release/v0.4.10.md | 2 +- apps/site/pages/en/blog/release/v0.4.11.md | 2 +- apps/site/pages/en/blog/release/v0.4.12.md | 2 +- apps/site/pages/en/blog/release/v0.4.3.md | 2 +- apps/site/pages/en/blog/release/v0.4.4.md | 2 +- apps/site/pages/en/blog/release/v0.4.5.md | 2 +- apps/site/pages/en/blog/release/v0.4.6.md | 2 +- apps/site/pages/en/blog/release/v0.4.7.md | 2 +- apps/site/pages/en/blog/release/v0.4.8.md | 2 +- apps/site/pages/en/blog/release/v0.4.9.md | 2 +- apps/site/pages/en/blog/release/v0.5.0.md | 2 +- apps/site/pages/en/blog/release/v0.5.1.md | 2 +- apps/site/pages/en/blog/release/v0.5.10.md | 2 +- apps/site/pages/en/blog/release/v0.5.2.md | 2 +- apps/site/pages/en/blog/release/v0.5.3.md | 2 +- apps/site/pages/en/blog/release/v0.5.4.md | 2 +- apps/site/pages/en/blog/release/v0.5.5.md | 2 +- apps/site/pages/en/blog/release/v0.5.7.md | 2 +- apps/site/pages/en/blog/release/v0.5.8.md | 2 +- apps/site/pages/en/blog/release/v0.5.9.md | 2 +- apps/site/pages/en/blog/release/v0.6.0.md | 2 +- apps/site/pages/en/blog/release/v0.6.1.md | 2 +- apps/site/pages/en/blog/release/v0.6.2.md | 2 +- apps/site/pages/en/blog/release/v0.6.4.md | 2 +- apps/site/pages/en/blog/release/v0.6.5.md | 2 +- apps/site/pages/en/blog/release/v0.7.0.md | 2 +- ...-way-to-build-scalable-network-programs.md | 2 +- .../uncategorized/development-environment.md | 2 +- .../pages/en/blog/uncategorized/growing-up.md | 2 +- .../en/blog/uncategorized/jobs-nodejs-org.md | 2 +- .../blog/uncategorized/libuv-status-report.md | 2 +- .../node-meetup-this-thursday.md | 2 +- .../node-office-hours-cut-short.md | 2 +- .../en/blog/uncategorized/office-hours.md | 2 +- ...ng-node-to-windows-with-microsofts-help.md | 2 +- .../uncategorized/some-new-node-projects.md | 2 +- .../the-videos-from-node-meetup.md | 2 +- .../pages/en/blog/uncategorized/trademark.md | 2 +- .../en/blog/uncategorized/version-0-6.md | 2 +- .../en/blog/video/welcome-to-the-node-blog.md | 2 +- apps/site/util/__tests__/authorUtils.test.mjs | 6 +-- 42 files changed, 83 insertions(+), 47 deletions(-) diff --git a/apps/site/authors.json b/apps/site/authors.json index f22fcb8ccbaa0..0591fb9e4fd6f 100644 --- a/apps/site/authors.json +++ b/apps/site/authors.json @@ -15,7 +15,7 @@ "website": "https://github.com/AugustinMauroy" }, "Ben Noordhuis": { - "id": "bennoordhuis", + "id": "bnoordhuis", "name": "Ben Noordhuis", "website": "https://github.com/bnoordhuis" }, @@ -59,6 +59,11 @@ "name": "Danielle Adams", "website": "https://github.com/danielleadams" }, + "Daniel Bevenius": { + "id": "danbev", + "name": "Daniel Bevenius", + "webiste": "https://github.com/danbev" + }, "Dave Pacheco": { "id": "dave-pacheco", "name": "Dave Pacheco" @@ -138,6 +143,16 @@ "name": "Julián Duque", "website": "https://github.com/julianduque" }, + "Node.js Technical Steering Committee": { + "id": "nodejs", + "name": "Node.js Technical Steering Committee", + "website": "https://github.com/nodejs/tsc" + }, + "Matteo Collina": { + "id": "mcollina", + "name": "Matteo Collina", + "webiste": "https://github.com/mcollina" + }, "Marco Ippolito": { "id": "marco-ippolito", "name": "Marco Ippolito", @@ -177,9 +192,15 @@ "name": "Myles Borins", "website": "https://github.com/mylesborins" }, - "Node.js Advisory Board": { - "id": "advisory-board", - "name": "Node.js Advisory Board" + "piscisaureus": { + "id": "piscisaureus", + "name": "Bert Belder", + "website": "https://github.com/piscisaureus" + }, + "Rafael Gonzaga": { + "id": "rafaelgss", + "name": "Rafael Gonzaga", + "website": "https://github.com/RafaelGSS" }, "Richard Lau": { "id": "richardlau", @@ -206,6 +227,11 @@ "name": "Ryan Dahl", "website": "https://github.com/ry" }, + "Sam Roberts": { + "id": "sam-github", + "name": "Sam Roberts", + "webiste": "https://github.com/sam-github" + }, "Scott Hammond": { "id": "scott-hammond", "name": "Scott Hammond" @@ -230,6 +256,11 @@ "name": "The Node.js Project", "website": "https://github.com/nodejs" }, + "Tierney Cyren": { + "id": "bnb", + "name": "Tierney Cyren", + "website": "https://github.com/bnb" + }, "Timothy J Fontaine": { "id": "tjfontaine", "name": "Timothy J Fontaine", @@ -244,6 +275,11 @@ "name": "Ulises Gascón", "website": "https://github.com/UlisesGascon" }, + "Vladimir de Turckheim": { + "id": "vdeturckheim", + "name": "Vladimir de Turckheim", + "webiste": "https://github.com/vdeturckheim" + }, "Yosuke Furukawa": { "id": "yosuke-furukawa", "name": "Yosuke Furukawa", diff --git a/apps/site/pages/en/blog/release/v0.4.10.md b/apps/site/pages/en/blog/release/v0.4.10.md index 29d918cec4b31..0bf8125ae816f 100644 --- a/apps/site/pages/en/blog/release/v0.4.10.md +++ b/apps/site/pages/en/blog/release/v0.4.10.md @@ -3,7 +3,7 @@ date: '2011-07-20T14:36:38.000Z' category: release title: Node v0.4.10 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.07.19, Version 0.4.10 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.11.md b/apps/site/pages/en/blog/release/v0.4.11.md index d4722f188ea91..fd3bb7675a407 100644 --- a/apps/site/pages/en/blog/release/v0.4.11.md +++ b/apps/site/pages/en/blog/release/v0.4.11.md @@ -3,7 +3,7 @@ date: '2011-08-18T08:44:42.000Z' category: release title: Node v0.4.11 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.08.17, Version 0.4.11 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.12.md b/apps/site/pages/en/blog/release/v0.4.12.md index bd8823f791b98..5fc8ede6bd824 100644 --- a/apps/site/pages/en/blog/release/v0.4.12.md +++ b/apps/site/pages/en/blog/release/v0.4.12.md @@ -3,7 +3,7 @@ date: '2011-09-16T00:32:07.000Z' category: release title: Node v0.4.12 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.09.15, Version 0.4.12 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.3.md b/apps/site/pages/en/blog/release/v0.4.3.md index 51b58e0373320..70612cd14decc 100644 --- a/apps/site/pages/en/blog/release/v0.4.3.md +++ b/apps/site/pages/en/blog/release/v0.4.3.md @@ -3,7 +3,7 @@ date: '2011-03-19T05:17:59.000Z' category: release title: Node v0.4.3 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.03.18, Version 0.4.3 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.4.md b/apps/site/pages/en/blog/release/v0.4.4.md index 65ac513ce90b7..dfaf3c7ff2e59 100644 --- a/apps/site/pages/en/blog/release/v0.4.4.md +++ b/apps/site/pages/en/blog/release/v0.4.4.md @@ -3,7 +3,7 @@ date: '2011-03-26T15:58:45.000Z' category: release title: Node v0.4.4 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.03.26, Version 0.4.4 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.5.md b/apps/site/pages/en/blog/release/v0.4.5.md index 91deb183a8383..596d1835a3066 100644 --- a/apps/site/pages/en/blog/release/v0.4.5.md +++ b/apps/site/pages/en/blog/release/v0.4.5.md @@ -3,7 +3,7 @@ date: '2011-04-02T09:04:58.000Z' category: release title: node v0.4.5 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.04.01, Version 0.4.5 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.6.md b/apps/site/pages/en/blog/release/v0.4.6.md index d56a1301e2fcf..c94846f15f9f7 100644 --- a/apps/site/pages/en/blog/release/v0.4.6.md +++ b/apps/site/pages/en/blog/release/v0.4.6.md @@ -3,7 +3,7 @@ date: '2011-04-14T12:00:30.000Z' category: release title: Node v0.4.6 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.04.13, Version 0.4.6 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.7.md b/apps/site/pages/en/blog/release/v0.4.7.md index 0d85455a3e707..b703e9c015e44 100644 --- a/apps/site/pages/en/blog/release/v0.4.7.md +++ b/apps/site/pages/en/blog/release/v0.4.7.md @@ -3,7 +3,7 @@ date: '2011-04-23T07:47:55.000Z' category: release title: Node v0.4.7 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.04.22, Version 0.4.7 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.8.md b/apps/site/pages/en/blog/release/v0.4.8.md index b3dfb2e37252a..07d114fbdb32d 100644 --- a/apps/site/pages/en/blog/release/v0.4.8.md +++ b/apps/site/pages/en/blog/release/v0.4.8.md @@ -3,7 +3,7 @@ date: '2011-05-21T14:06:00.000Z' category: release title: Node v0.4.8 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.05.20, Version 0.4.8 (stable) diff --git a/apps/site/pages/en/blog/release/v0.4.9.md b/apps/site/pages/en/blog/release/v0.4.9.md index 09c7542cb52bb..85cf9bbc6b4ee 100644 --- a/apps/site/pages/en/blog/release/v0.4.9.md +++ b/apps/site/pages/en/blog/release/v0.4.9.md @@ -3,7 +3,7 @@ date: '2011-06-29T18:41:05.000Z' category: release title: Node v0.4.9 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.06.29, Version 0.4.9 (stable) diff --git a/apps/site/pages/en/blog/release/v0.5.0.md b/apps/site/pages/en/blog/release/v0.5.0.md index 1b5054f686d8b..600b49327ab3c 100644 --- a/apps/site/pages/en/blog/release/v0.5.0.md +++ b/apps/site/pages/en/blog/release/v0.5.0.md @@ -3,7 +3,7 @@ date: '2011-07-06T09:23:17.000Z' category: release title: Node v0.5.0 (Unstable) layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.07.05, Version 0.5.0 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.1.md b/apps/site/pages/en/blog/release/v0.5.1.md index 633f68766f675..e0665c1ef43fb 100644 --- a/apps/site/pages/en/blog/release/v0.5.1.md +++ b/apps/site/pages/en/blog/release/v0.5.1.md @@ -3,7 +3,7 @@ date: '2011-07-15T06:48:08.000Z' category: release title: Node v0.5.1 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.07.14, Version 0.5.1 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.10.md b/apps/site/pages/en/blog/release/v0.5.10.md index 48dfb1f090b3d..a0805261fb950 100644 --- a/apps/site/pages/en/blog/release/v0.5.10.md +++ b/apps/site/pages/en/blog/release/v0.5.10.md @@ -3,7 +3,7 @@ date: '2011-10-22T02:12:31.000Z' category: release title: Node v0.5.10 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.10.21, Version 0.5.10 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.2.md b/apps/site/pages/en/blog/release/v0.5.2.md index 646955420adde..82c3f77bccd6a 100644 --- a/apps/site/pages/en/blog/release/v0.5.2.md +++ b/apps/site/pages/en/blog/release/v0.5.2.md @@ -3,7 +3,7 @@ date: '2011-07-22T18:40:22.000Z' category: release title: Node v0.5.2 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.07.22, Version 0.5.2 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.3.md b/apps/site/pages/en/blog/release/v0.5.3.md index 00730865f1cfa..f036aa8c67fd7 100644 --- a/apps/site/pages/en/blog/release/v0.5.3.md +++ b/apps/site/pages/en/blog/release/v0.5.3.md @@ -3,7 +3,7 @@ date: '2011-08-02T15:03:06.000Z' category: release title: Node v0.5.3 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.08.01, Version 0.5.3 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.4.md b/apps/site/pages/en/blog/release/v0.5.4.md index 21a06670fab48..af0e72e5dea39 100644 --- a/apps/site/pages/en/blog/release/v0.5.4.md +++ b/apps/site/pages/en/blog/release/v0.5.4.md @@ -3,7 +3,7 @@ date: '2011-08-12T15:38:26.000Z' category: release title: Node v0.5.4 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.08.12, Version 0.5.4 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.5.md b/apps/site/pages/en/blog/release/v0.5.5.md index ff7a361a30b79..92051649d72d3 100644 --- a/apps/site/pages/en/blog/release/v0.5.5.md +++ b/apps/site/pages/en/blog/release/v0.5.5.md @@ -3,7 +3,7 @@ date: '2011-08-27T06:20:10.000Z' category: release title: Node v0.5.5 layout: blog-post -author: bennoordhuis +author: Ben Noordhuis --- 2011.08.26, Version 0.5.5 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.7.md b/apps/site/pages/en/blog/release/v0.5.7.md index 55f3b344582f5..f1437227e7fed 100644 --- a/apps/site/pages/en/blog/release/v0.5.7.md +++ b/apps/site/pages/en/blog/release/v0.5.7.md @@ -3,7 +3,7 @@ date: '2011-09-17T01:57:03.000Z' category: release title: Node v0.5.7 (unstable) layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.09.16, Version 0.5.7 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.8.md b/apps/site/pages/en/blog/release/v0.5.8.md index 2d98cc7e1471f..0bc39b109fd01 100644 --- a/apps/site/pages/en/blog/release/v0.5.8.md +++ b/apps/site/pages/en/blog/release/v0.5.8.md @@ -3,7 +3,7 @@ date: '2011-09-30T23:47:11.000Z' category: release title: Node v0.5.8 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.09.30, Version 0.5.8 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.5.9.md b/apps/site/pages/en/blog/release/v0.5.9.md index d2c6f942ec96a..2b528f515dfbb 100644 --- a/apps/site/pages/en/blog/release/v0.5.9.md +++ b/apps/site/pages/en/blog/release/v0.5.9.md @@ -3,7 +3,7 @@ date: '2011-10-11T02:06:21.000Z' category: release title: Node v0.5.9 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.10.10, Version 0.5.9 (unstable) diff --git a/apps/site/pages/en/blog/release/v0.6.0.md b/apps/site/pages/en/blog/release/v0.6.0.md index 35a7df3feb478..6c01deb25f464 100644 --- a/apps/site/pages/en/blog/release/v0.6.0.md +++ b/apps/site/pages/en/blog/release/v0.6.0.md @@ -3,7 +3,7 @@ date: '2011-11-05T09:07:10.000Z' category: release title: Node v0.6.0 layout: blog-post -author: ryandahl +author: Ryan Dahl --- We are happy to announce the third stable branch of Node v0.6. We will be freezing JavaScript, C++, and binary interfaces for all v0.6 releases. diff --git a/apps/site/pages/en/blog/release/v0.6.1.md b/apps/site/pages/en/blog/release/v0.6.1.md index 908afc3bd2d93..7b69286c536c3 100644 --- a/apps/site/pages/en/blog/release/v0.6.1.md +++ b/apps/site/pages/en/blog/release/v0.6.1.md @@ -3,7 +3,7 @@ date: '2011-11-11T23:34:15.000Z' category: release title: Node v0.6.1 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.11.11, Version 0.6.1 (stable) diff --git a/apps/site/pages/en/blog/release/v0.6.2.md b/apps/site/pages/en/blog/release/v0.6.2.md index 33352f31dc4eb..3e9721700346a 100644 --- a/apps/site/pages/en/blog/release/v0.6.2.md +++ b/apps/site/pages/en/blog/release/v0.6.2.md @@ -3,7 +3,7 @@ date: '2011-11-18T23:35:32.000Z' category: release title: Node v0.6.2 layout: blog-post -author: bennoordhuis +author: Ben Noordhuis --- 2011.11.18, Version 0.6.2 (stable) diff --git a/apps/site/pages/en/blog/release/v0.6.4.md b/apps/site/pages/en/blog/release/v0.6.4.md index e3d7160f85481..d13dab68b4abd 100644 --- a/apps/site/pages/en/blog/release/v0.6.4.md +++ b/apps/site/pages/en/blog/release/v0.6.4.md @@ -3,7 +3,7 @@ date: '2011-12-02T02:20:14.000Z' category: release title: Node v0.6.4 layout: blog-post -author: bennoordhuis +author: Ben Noordhuis --- 2011.12.02, Version 0.6.4 (stable) diff --git a/apps/site/pages/en/blog/release/v0.6.5.md b/apps/site/pages/en/blog/release/v0.6.5.md index 06e303f7c4e7e..2232330bd351d 100644 --- a/apps/site/pages/en/blog/release/v0.6.5.md +++ b/apps/site/pages/en/blog/release/v0.6.5.md @@ -3,7 +3,7 @@ date: '2011-12-04T08:59:57.000Z' category: release title: Node v0.6.5 layout: blog-post -author: ryandahl +author: Ryan Dahl --- 2011.12.04, Version 0.6.5 (stable) diff --git a/apps/site/pages/en/blog/release/v0.7.0.md b/apps/site/pages/en/blog/release/v0.7.0.md index 8d3f847aea8af..a7359e842b592 100644 --- a/apps/site/pages/en/blog/release/v0.7.0.md +++ b/apps/site/pages/en/blog/release/v0.7.0.md @@ -3,7 +3,7 @@ date: '2012-01-17T03:58:28.000Z' category: release title: Node v0.7.0 (Unstable) layout: blog-post -author: ryandahl +author: Ryan Dahl --- **This is the first release in the unstable v0.7 series. Almost all users will want to remain using the stable v0.6 releases.** diff --git a/apps/site/pages/en/blog/uncategorized/an-easy-way-to-build-scalable-network-programs.md b/apps/site/pages/en/blog/uncategorized/an-easy-way-to-build-scalable-network-programs.md index 3de5e385d019d..9ed966537177c 100644 --- a/apps/site/pages/en/blog/uncategorized/an-easy-way-to-build-scalable-network-programs.md +++ b/apps/site/pages/en/blog/uncategorized/an-easy-way-to-build-scalable-network-programs.md @@ -3,7 +3,7 @@ date: '2011-10-04T22:39:56.000Z' category: uncategorized title: An Easy Way to Build Scalable Network Programs layout: blog-post -author: ryandahl +author: Ryan Dahl --- Suppose you're writing a web server which does video encoding on each file upload. Video encoding is very much compute bound. Some recent blog posts suggest that Node.js would fail miserably at this. diff --git a/apps/site/pages/en/blog/uncategorized/development-environment.md b/apps/site/pages/en/blog/uncategorized/development-environment.md index 57ad424e0d200..9fca267c3d7fd 100644 --- a/apps/site/pages/en/blog/uncategorized/development-environment.md +++ b/apps/site/pages/en/blog/uncategorized/development-environment.md @@ -3,7 +3,7 @@ date: '2011-04-05T03:16:27.000Z' category: uncategorized title: Development Environment layout: blog-post -author: ryandahl +author: Ryan Dahl --- If you're compiling a software package because you need a particular version (e.g. the latest), then it requires a little bit more maintenance than using a package manager like `dpkg`. Software that you compile yourself should _not_ go into `/usr`, it should go into your home directory. This is part of being a software developer. diff --git a/apps/site/pages/en/blog/uncategorized/growing-up.md b/apps/site/pages/en/blog/uncategorized/growing-up.md index 175322e78c938..7cce229b0aa6e 100644 --- a/apps/site/pages/en/blog/uncategorized/growing-up.md +++ b/apps/site/pages/en/blog/uncategorized/growing-up.md @@ -3,7 +3,7 @@ date: '2011-12-15T19:59:15.000Z' category: uncategorized title: Growing up layout: blog-post -author: ryandahl +author: Ryan Dahl --- This week Microsoft announced [support for Node in Windows Azure](https://www.windowsazure.com/en-us/develop/nodejs/), their cloud computing platform. For the Node core team and the community, this is an important milestone. We've worked hard over the past six months reworking Node's machinery to support IO completion ports and Visual Studio to provide a good native port to Windows. The overarching goal of the port was to expand our user base to the largest number of developers. Happily, this has paid off in the form of being a first class citizen on Azure. Many users who would have never used Node as a pure Unix tool are now up and running on the Windows platform. More users translates into a deeper and better ecosystem of modules, which makes for a better experience for everyone. diff --git a/apps/site/pages/en/blog/uncategorized/jobs-nodejs-org.md b/apps/site/pages/en/blog/uncategorized/jobs-nodejs-org.md index 4d518f8ac7119..a9e51cc0f7cd6 100644 --- a/apps/site/pages/en/blog/uncategorized/jobs-nodejs-org.md +++ b/apps/site/pages/en/blog/uncategorized/jobs-nodejs-org.md @@ -3,7 +3,7 @@ date: '2011-03-25T06:05:22.000Z' category: uncategorized title: jobs.nodejs.org layout: blog-post -author: ryandahl +author: Ryan Dahl --- We are starting an official jobs board for Node. There are two goals for this diff --git a/apps/site/pages/en/blog/uncategorized/libuv-status-report.md b/apps/site/pages/en/blog/uncategorized/libuv-status-report.md index 52f4731e145f9..533307ab1ce2b 100644 --- a/apps/site/pages/en/blog/uncategorized/libuv-status-report.md +++ b/apps/site/pages/en/blog/uncategorized/libuv-status-report.md @@ -3,7 +3,7 @@ date: '2011-09-23T19:45:50.000Z' category: uncategorized title: libuv status report layout: blog-post -author: ryandahl +author: Ryan Dahl --- We [announced](http://blog.nodejs.org/2011/06/23/porting-node-to-windows-with-microsoft%E2%80%99s-help/) back in July that with Microsoft's support Joyent would be porting Node to Windows. This effort is ongoing but I thought it would be nice to make a status report post about the new platform library [`libuv`](https://github.com/libuv/libuv) which has resulted from porting Node to Windows. diff --git a/apps/site/pages/en/blog/uncategorized/node-meetup-this-thursday.md b/apps/site/pages/en/blog/uncategorized/node-meetup-this-thursday.md index 35ed0e4e6817d..ac0ed382e1c76 100644 --- a/apps/site/pages/en/blog/uncategorized/node-meetup-this-thursday.md +++ b/apps/site/pages/en/blog/uncategorized/node-meetup-this-thursday.md @@ -3,7 +3,7 @@ date: '2011-08-03T04:37:02.000Z' category: uncategorized title: Node Meetup this Thursday layout: blog-post -author: ryandahl +author: Ryan Dahl --- [https://nodejs.org/meetup/](https://nodejs.org/meetup/) diff --git a/apps/site/pages/en/blog/uncategorized/node-office-hours-cut-short.md b/apps/site/pages/en/blog/uncategorized/node-office-hours-cut-short.md index 4615fe22836f7..c2a4668ddd0d4 100644 --- a/apps/site/pages/en/blog/uncategorized/node-office-hours-cut-short.md +++ b/apps/site/pages/en/blog/uncategorized/node-office-hours-cut-short.md @@ -3,7 +3,7 @@ date: '2011-04-28T16:04:35.000Z' category: uncategorized title: Node Office Hours Cut Short layout: blog-post -author: ryandahl +author: Ryan Dahl --- This week office hours are only from 4pm to 6pm. Isaac will be in the Joyent office in SF - everyone else is out of town. Sign up at http://nodeworkup.eventbrite.com/ if you would like to come. diff --git a/apps/site/pages/en/blog/uncategorized/office-hours.md b/apps/site/pages/en/blog/uncategorized/office-hours.md index 10d3ccb20b4ff..67135a67110b0 100644 --- a/apps/site/pages/en/blog/uncategorized/office-hours.md +++ b/apps/site/pages/en/blog/uncategorized/office-hours.md @@ -3,7 +3,7 @@ date: '2011-03-24T04:42:47.000Z' category: uncategorized title: Office Hours layout: blog-post -author: ryandahl +author: Ryan Dahl --- Starting next Thursday Isaac, Tom, and I will be holding weekly office hours at [Joyent HQ](http://maps.google.com/maps?q=345+California+St,+San+Francisco,+CA+94104&layer=c&sll=37.793040,-122.400491&cbp=13,178.31,,0,-60.77&cbll=37.793131,-122.400484&hl=en&sspn=0.006295,0.006295&ie=UTF8&hq=&hnear=345+California+St,+San+Francisco,+California+94104&ll=37.793131,-122.400484&spn=0.001295,0.003428&z=19&panoid=h0dlz3VG-hMKlzOu0LxMIg) in San Francisco. Office hours are meant to be subdued working time - there are no talks and no alcohol. Bring your bugs or just come and hack with us. diff --git a/apps/site/pages/en/blog/uncategorized/porting-node-to-windows-with-microsofts-help.md b/apps/site/pages/en/blog/uncategorized/porting-node-to-windows-with-microsofts-help.md index ba9e31562bac2..759aaceb01dbf 100644 --- a/apps/site/pages/en/blog/uncategorized/porting-node-to-windows-with-microsofts-help.md +++ b/apps/site/pages/en/blog/uncategorized/porting-node-to-windows-with-microsofts-help.md @@ -3,7 +3,7 @@ date: '2011-06-23T22:22:58.000Z' category: uncategorized title: 'Porting Node to Windows With Microsoft’s Help' layout: blog-post -author: ryandahl +author: Ryan Dahl --- I'm pleased to announce that Microsoft is partnering with Joyent in formally contributing resources towards porting Node to Windows. As you may have heard in [a talk](/static/documents/nodeconf.pdf) we gave earlier this year, we have started the undertaking of a native port to Windows - targeting the high-performance IOCP API. diff --git a/apps/site/pages/en/blog/uncategorized/some-new-node-projects.md b/apps/site/pages/en/blog/uncategorized/some-new-node-projects.md index 3472ab4d60d4f..bb9343a192f91 100644 --- a/apps/site/pages/en/blog/uncategorized/some-new-node-projects.md +++ b/apps/site/pages/en/blog/uncategorized/some-new-node-projects.md @@ -3,7 +3,7 @@ date: '2011-08-29T15:30:41.000Z' category: uncategorized title: Some New Node Projects layout: blog-post -author: ryandahl +author: Ryan Dahl --- - Superfeedr released [a Node XMPP Server](http://blog.superfeedr.com/node-xmpp-server/). "_Since [astro](http://spaceboyz.net/~astro/) had been doing an **amazing work** with his [node-xmpp](https://github.com/astro/node-xmpp) library to build \_Client_, _Components_ and even _Server to server_ modules, the logical next step was to try to build a _Client to Server_ module so that we could have a full blown server. That’s what we worked on the past couple days, and [it’s now on GitHub](https://github.com/superfeedr/node-xmpp)!\_ diff --git a/apps/site/pages/en/blog/uncategorized/the-videos-from-node-meetup.md b/apps/site/pages/en/blog/uncategorized/the-videos-from-node-meetup.md index 9906a0e37aa53..9a5522e843635 100644 --- a/apps/site/pages/en/blog/uncategorized/the-videos-from-node-meetup.md +++ b/apps/site/pages/en/blog/uncategorized/the-videos-from-node-meetup.md @@ -3,7 +3,7 @@ date: '2011-08-12T07:14:34.000Z' category: uncategorized title: The Videos from the Meetup layout: blog-post -author: ryandahl +author: Ryan Dahl --- Uber, Voxer, and Joyent described how they use Node in production diff --git a/apps/site/pages/en/blog/uncategorized/trademark.md b/apps/site/pages/en/blog/uncategorized/trademark.md index a78ad51d4c4e9..b23a9a347f2b2 100644 --- a/apps/site/pages/en/blog/uncategorized/trademark.md +++ b/apps/site/pages/en/blog/uncategorized/trademark.md @@ -3,7 +3,7 @@ date: '2011-04-29T08:54:18.000Z' category: uncategorized title: Trademark layout: blog-post -author: ryandahl +author: Ryan Dahl --- One of the things Joyent accepted when we took on the Node project was to provide resources to help the community grow. The Node project is amazing because of the expertise, dedication and hard work of the community. However in all communities there is the possibility of people acting inappropriately. We decided to introduce trademarks on the “Node.js” and the “Node logo” in order to ensure that people or organizations who are not investing in the Node community misrepresent, or create confusion about the role of themselves or their products with Node. diff --git a/apps/site/pages/en/blog/uncategorized/version-0-6.md b/apps/site/pages/en/blog/uncategorized/version-0-6.md index f9ca5a36145bb..c3ca14c673be2 100644 --- a/apps/site/pages/en/blog/uncategorized/version-0-6.md +++ b/apps/site/pages/en/blog/uncategorized/version-0-6.md @@ -3,7 +3,7 @@ date: '2011-10-25T22:26:23.000Z' category: uncategorized title: Version 0.6 Coming Soon layout: blog-post -author: ryandahl +author: Ryan Dahl --- Version 0.6.0 will be released next week. Please spend some time this week upgrading your code to v0.5.10. Report any API differences at <https://github.com/joyent/node/wiki/API-changes-between-v0.4-and-v0.6> or report a bug to us at <http://github.com/joyent/node/issues> if you hit problems. diff --git a/apps/site/pages/en/blog/video/welcome-to-the-node-blog.md b/apps/site/pages/en/blog/video/welcome-to-the-node-blog.md index 24d76a85b44d2..0fd8a24f41774 100644 --- a/apps/site/pages/en/blog/video/welcome-to-the-node-blog.md +++ b/apps/site/pages/en/blog/video/welcome-to-the-node-blog.md @@ -3,7 +3,7 @@ date: '2011-03-18T03:17:12.000Z' category: video title: Welcome to the Node blog layout: blog-post -author: ryandahl +author: Ryan Dahl --- Since Livejournal is disintegrating into Russian spam, I'm moving my technical blog to <http://blog.nodejs.org/>. I hope to do frequent small posts about what's going on in Node development and include posts from other core Node developers. Please subscribe to the RSS feed. diff --git a/apps/site/util/__tests__/authorUtils.test.mjs b/apps/site/util/__tests__/authorUtils.test.mjs index 868c2f2de40c8..b17d613f260c1 100644 --- a/apps/site/util/__tests__/authorUtils.test.mjs +++ b/apps/site/util/__tests__/authorUtils.test.mjs @@ -61,10 +61,10 @@ describe('getAuthorWithId', () => { expect(result).toEqual([ { - name: 'The Node.js Project', + name: 'Node.js Technical Steering Committee', nickname: 'nodejs', - fallback: 'TNJP', - url: 'https://github.com/nodejs', + fallback: 'NJTSC', + url: 'https://github.com/nodejs/tsc', image: 'https://avatars.githubusercontent.com/nodejs', }, ]); From ca4c7a3a76b3194f041bf7421f87ec9fd3a6481c Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Tue, 8 Apr 2025 16:29:19 +0200 Subject: [PATCH 0389/1385] fix(ui): hover active item (#7620) --- .../Common/BasePagination/PaginationListItem/index.module.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css b/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css index 161b97c6dcdd9..0c6f09479add1 100644 --- a/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/index.module.css @@ -5,8 +5,10 @@ .listItem:active { @apply aria-current:bg-green-600 aria-current:text-white + aria-current:cursor-default flex size-10 + cursor-pointer items-center justify-center rounded-sm @@ -16,7 +18,7 @@ motion-safe:transition-colors dark:text-neutral-200; - &:hover { + &:hover:not([aria-current='page']) { @apply bg-neutral-100 text-neutral-800 dark:bg-neutral-900 From 0a04f296ed46b83118c5d90689009e948f4a0508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= <arauujogui@gmail.com> Date: Tue, 8 Apr 2025 12:22:03 -0300 Subject: [PATCH 0390/1385] refactor: remove useless promise.all (#7629) --- .../site/next-data/generators/releaseData.mjs | 54 +++++++++---------- 1 file changed, 25 insertions(+), 29 deletions(-) diff --git a/apps/site/next-data/generators/releaseData.mjs b/apps/site/next-data/generators/releaseData.mjs index 2beea90861c1e..d04ced8340e8a 100644 --- a/apps/site/next-data/generators/releaseData.mjs +++ b/apps/site/next-data/generators/releaseData.mjs @@ -33,35 +33,33 @@ const generateReleaseData = () => { // Basically those not in schedule.json const majors = Object.values(nodevuOutput).filter(major => !!major.support); - const nodeReleases = Promise.all( - majors.map(async major => { - const [latestVersion] = Object.values(major.releases); + const nodeReleases = majors.map(major => { + const [latestVersion] = Object.values(major.releases); - const support = { - currentStart: major.support.phases.dates.start, - ltsStart: major.support.phases.dates.lts, - maintenanceStart: major.support.phases.dates.maintenance, - endOfLife: major.support.phases.dates.end, - }; + const support = { + currentStart: major.support.phases.dates.start, + ltsStart: major.support.phases.dates.lts, + maintenanceStart: major.support.phases.dates.maintenance, + endOfLife: major.support.phases.dates.end, + }; - // Get the major release status based on our Release Schedule - const status = getNodeReleaseStatus(new Date(), support); + // Get the major release status based on our Release Schedule + const status = getNodeReleaseStatus(new Date(), support); - return { - ...support, - status, - major: latestVersion.semver.major, - version: latestVersion.semver.raw, - versionWithPrefix: `v${latestVersion.semver.raw}`, - codename: major.support.codename || '', - isLts: status === 'LTS', - npm: latestVersion.dependencies.npm || '', - v8: latestVersion.dependencies.v8 || '', - releaseDate: latestVersion.releaseDate || '', - modules: latestVersion.modules.version || '', - }; - }) - ); + return { + ...support, + status, + major: latestVersion.semver.major, + version: latestVersion.semver.raw, + versionWithPrefix: `v${latestVersion.semver.raw}`, + codename: major.support.codename || '', + isLts: status === 'LTS', + npm: latestVersion.dependencies.npm || '', + v8: latestVersion.dependencies.v8 || '', + releaseDate: latestVersion.releaseDate || '', + modules: latestVersion.modules.version || '', + }; + }); // nodevu returns duplicated v0.x versions (v0.12, v0.10, ...). // This behavior seems intentional as the case is hardcoded in nodevu, @@ -69,9 +67,7 @@ const generateReleaseData = () => { // This line ignores those duplicated versions and takes the latest // v0.x version (v0.12.18). It is also consistent with the legacy // nodejs.org implementation. - return nodeReleases.then(releases => - releases.filter(r => r.major !== 0 || r.version === '0.12.18') - ); + return nodeReleases.filter(r => r.major !== 0 || r.version === '0.12.18'); }); }; From cad9e009c930beb365f2e02834c476dac9f0f7f0 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Wed, 9 Apr 2025 08:50:03 -0400 Subject: [PATCH 0391/1385] fix(shiki): downgrade to 3.1.0 (#7632) --- apps/site/package.json | 2 +- package-lock.json | 221 ++++++++++++++++++++--------------------- 2 files changed, 108 insertions(+), 115 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index adf9abf2354cb..2bbfd7ed9538d 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -56,7 +56,7 @@ "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.1", "semver": "~7.7.1", - "shiki": "~3.2.1", + "shiki": "~3.1.0", "sval": "^0.6.3", "tailwindcss": "~4.0.17", "unist-util-visit": "~5.0.0", diff --git a/package-lock.json b/package-lock.json index de044925e8a88..524a25824a7f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,7 +69,7 @@ "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.1", "semver": "~7.7.1", - "shiki": "~3.2.1", + "shiki": "~3.1.0", "sval": "^0.6.3", "tailwindcss": "~4.0.17", "unist-util-visit": "~5.0.0", @@ -347,6 +347,112 @@ "regex-utilities": "^2.3.0" } }, + "apps/site/node_modules/shiki": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.1.0.tgz", + "integrity": "sha512-LdTNyWQlC5zdCaHdcp1zPA1OVA2ivb+KjGOOnGcy02tGaF5ja+dGibWFH7Ar8YlngUgK/scDqworK18Ys9cbYA==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.1.0", + "@shikijs/engine-javascript": "3.1.0", + "@shikijs/engine-oniguruma": "3.1.0", + "@shikijs/langs": "3.1.0", + "@shikijs/themes": "3.1.0", + "@shikijs/types": "3.1.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "apps/site/node_modules/shiki/node_modules/@shikijs/core": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.1.0.tgz", + "integrity": "sha512-1ppAOyg3F18N8Ge9DmJjGqRVswihN33rOgPovR6gUHW17Hw1L4RlRhnmVQcsacSHh0A8IO1FIgNbtTxUFwodmg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.1.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "apps/site/node_modules/shiki/node_modules/@shikijs/engine-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.1.0.tgz", + "integrity": "sha512-/LwkhW17jYi7uPcdaaSQQDNW+xgrHXarkrxYPoC6WPzH2xW5mFMw12doHXJBqxmYvtcTbaatcv2MkH9+3PU1FA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.1.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.1" + } + }, + "apps/site/node_modules/shiki/node_modules/@shikijs/engine-oniguruma": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.1.0.tgz", + "integrity": "sha512-reRgy8VzDPdiDocuGDD60Rk/jLxgcgy+6H4n6jYLeN2Yw5ikasRjQQx8ERXtDM35yg2v/d6KolDBcK8hYYhcmw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.1.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "apps/site/node_modules/shiki/node_modules/@shikijs/langs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.1.0.tgz", + "integrity": "sha512-hAM//sExPXAXG3ZDWjrmV6Vlw4zlWFOcT1ZXNhFRBwPP27scZu/ZIdZ+TdTgy06zSvyF4KIjnF8j6+ScKGu6ww==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.1.0" + } + }, + "apps/site/node_modules/shiki/node_modules/@shikijs/themes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.1.0.tgz", + "integrity": "sha512-A4MJmy9+ydLNbNCtkmdTp8a+ON+MMXoUe1KTkELkyu0+pHGOcbouhNuobhZoK59cL4cOST6CCz1x+kUdkp9UZA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.1.0" + } + }, + "apps/site/node_modules/shiki/node_modules/@shikijs/types": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.1.0.tgz", + "integrity": "sha512-F8e7Fy4ihtcNpJG572BZZC1ErYrBrzJ5Cbc9Zi3REgWry43gIvjJ9lFAoUnuy7Bvy4IFz7grUSxL5edfrrjFEA==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "apps/site/node_modules/shiki/node_modules/oniguruma-to-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "apps/site/node_modules/shiki/node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "apps/site/node_modules/shiki/node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, "apps/site/node_modules/stable-hash": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", @@ -5094,67 +5200,6 @@ "integrity": "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==", "license": "MIT" }, - "node_modules/@shikijs/core": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.2.1.tgz", - "integrity": "sha512-FhsdxMWYu/C11sFisEp7FMGBtX/OSSbnXZDMBhGuUDBNTdsoZlMSgQv5f90rwvzWAdWIW6VobD+G3IrazxA6dQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.2.1", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.2.1.tgz", - "integrity": "sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.2.1", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.1.0" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.2.1.tgz", - "integrity": "sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.2.1", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/@shikijs/langs": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.2.1.tgz", - "integrity": "sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.2.1" - } - }, - "node_modules/@shikijs/themes": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.2.1.tgz", - "integrity": "sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.2.1" - } - }, - "node_modules/@shikijs/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.2.1.tgz", - "integrity": "sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, "node_modules/@shikijs/vscode-textmate": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", @@ -19089,24 +19134,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/oniguruma-parser": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.5.4.tgz", - "integrity": "sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==", - "license": "MIT" - }, - "node_modules/oniguruma-to-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.1.0.tgz", - "integrity": "sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==", - "license": "MIT", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "oniguruma-parser": "^0.5.4", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, "node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -20480,24 +20507,6 @@ "dev": true, "license": "MIT" }, - "node_modules/regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", - "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", - "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, "node_modules/regex-utilities": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", @@ -22285,22 +22294,6 @@ "node": ">=8" } }, - "node_modules/shiki": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.2.1.tgz", - "integrity": "sha512-VML/2o1/KGYkEf/stJJ+s9Ypn7jUKQPomGLGYso4JJFMFxVDyPNsjsI3MB3KLjlMOeH44gyaPdXC6rik2WXvUQ==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "3.2.1", - "@shikijs/engine-javascript": "3.2.1", - "@shikijs/engine-oniguruma": "3.2.1", - "@shikijs/langs": "3.2.1", - "@shikijs/themes": "3.2.1", - "@shikijs/types": "3.2.1", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", From 52f32bb02dda13f7ae973dec9dde19abff04df8e Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Thu, 10 Apr 2025 15:30:15 +0200 Subject: [PATCH 0392/1385] meta: bump next.js (#7635) * meta: bump next.js * don't use turbopack * chore: turbopack fixes --------- Co-authored-by: Claudio Wunder <cwunder@gnome.org> --- .github/workflows/build.yml | 2 +- apps/site/app/robots.ts | 7 +- apps/site/app/sitemap.ts | 7 +- apps/site/package.json | 8 +- package-lock.json | 902 +++++++----------------------------- 5 files changed, 183 insertions(+), 743 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eda00b259bc50..42d63f4b1096e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,7 +42,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [ubuntu-latest, windows-latest] steps: - name: Harden Runner diff --git a/apps/site/app/robots.ts b/apps/site/app/robots.ts index b6c1640ada9a8..10944eee34726 100644 --- a/apps/site/app/robots.ts +++ b/apps/site/app/robots.ts @@ -16,4 +16,9 @@ export default robots; // Enforces that this route is used as static rendering // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic -export const dynamic = 'error'; +export const dynamic = 'force-static'; + +// Ensures that this endpoint is invalidated and re-executed every X minutes +// so that when new deployments happen, the data is refreshed +// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate +export const revalidate = false; diff --git a/apps/site/app/sitemap.ts b/apps/site/app/sitemap.ts index 5724851ac6460..19a33e05dffec 100644 --- a/apps/site/app/sitemap.ts +++ b/apps/site/app/sitemap.ts @@ -65,4 +65,9 @@ export default sitemap; // Enforces that this route is used as static rendering // @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic -export const dynamic = 'error'; +export const dynamic = 'force-static'; + +// Ensures that this endpoint is invalidated and re-executed every X minutes +// so that when new deployments happen, the data is refreshed +// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate +export const revalidate = false; diff --git a/apps/site/package.json b/apps/site/package.json index 2bbfd7ed9538d..57651eb5e1e1c 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -3,11 +3,11 @@ "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", + "dev": "cross-env NODE_NO_WARNINGS=1 next dev", "serve": "npm run dev", - "build": "cross-env NODE_NO_WARNINGS=1 next build", + "build": "cross-env NODE_NO_WARNINGS=1 next build --turbopack", "start": "cross-env NODE_NO_WARNINGS=1 next start", - "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true npm run build", + "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true NODE_NO_WARNINGS=1 next build", "check-types": "tsc --noEmit", "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", "lint:snippets": "node ./scripts/lint-snippets/index.mjs", @@ -43,7 +43,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.2.4", + "next": "15.3.0", "next-intl": "~4.0.2", "next-themes": "~0.4.6", "postcss": "~8.5.3", diff --git a/package-lock.json b/package-lock.json index 524a25824a7f0..ab5c226a30373 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,7 +56,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.2.4", + "next": "15.3.0", "next-intl": "~4.0.2", "next-themes": "~0.4.6", "postcss": "~8.5.3", @@ -1140,9 +1140,9 @@ } }, "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==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.0.tgz", + "integrity": "sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==", "license": "MIT", "optional": true, "dependencies": { @@ -1974,9 +1974,9 @@ } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", + "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", "cpu": [ "arm64" ], @@ -1992,13 +1992,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" + "@img/sharp-libvips-darwin-arm64": "1.1.0" } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", + "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", "cpu": [ "x64" ], @@ -2014,13 +2014,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" + "@img/sharp-libvips-darwin-x64": "1.1.0" } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", "cpu": [ "arm64" ], @@ -2034,9 +2034,9 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", "cpu": [ "x64" ], @@ -2050,9 +2050,9 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", "cpu": [ "arm" ], @@ -2066,9 +2066,9 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", "cpu": [ "arm64" ], @@ -2081,10 +2081,26 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", "cpu": [ "s390x" ], @@ -2098,9 +2114,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", "cpu": [ "x64" ], @@ -2114,9 +2130,9 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", "cpu": [ "arm64" ], @@ -2130,9 +2146,9 @@ } }, "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", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", "cpu": [ "x64" ], @@ -2146,9 +2162,9 @@ } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", + "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", "cpu": [ "arm" ], @@ -2164,13 +2180,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" + "@img/sharp-libvips-linux-arm": "1.1.0" } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", + "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", "cpu": [ "arm64" ], @@ -2186,13 +2202,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" + "@img/sharp-libvips-linux-arm64": "1.1.0" } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", + "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", "cpu": [ "s390x" ], @@ -2208,13 +2224,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" + "@img/sharp-libvips-linux-s390x": "1.1.0" } }, "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", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", + "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", "cpu": [ "x64" ], @@ -2230,13 +2246,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" + "@img/sharp-libvips-linux-x64": "1.1.0" } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", + "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", "cpu": [ "arm64" ], @@ -2252,13 +2268,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" } }, "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", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", + "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", "cpu": [ "x64" ], @@ -2274,20 +2290,20 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", + "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", "cpu": [ "wasm32" ], "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.2.0" + "@emnapi/runtime": "^1.4.0" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -2297,9 +2313,9 @@ } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", + "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", "cpu": [ "ia32" ], @@ -2316,9 +2332,9 @@ } }, "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==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", + "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", "cpu": [ "x64" ], @@ -2582,26 +2598,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", @@ -2706,26 +2702,6 @@ "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", @@ -2962,26 +2938,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3160,26 +3116,6 @@ "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", @@ -3254,26 +3190,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", @@ -3470,9 +3386,9 @@ } }, "node_modules/@next/env": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.4.tgz", - "integrity": "sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.0.tgz", + "integrity": "sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -3516,9 +3432,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz", - "integrity": "sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.0.tgz", + "integrity": "sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==", "cpu": [ "arm64" ], @@ -3532,9 +3448,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz", - "integrity": "sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.0.tgz", + "integrity": "sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==", "cpu": [ "x64" ], @@ -3548,9 +3464,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz", - "integrity": "sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.0.tgz", + "integrity": "sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==", "cpu": [ "arm64" ], @@ -3564,9 +3480,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz", - "integrity": "sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.0.tgz", + "integrity": "sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==", "cpu": [ "arm64" ], @@ -3580,9 +3496,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz", - "integrity": "sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.0.tgz", + "integrity": "sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==", "cpu": [ "x64" ], @@ -3596,9 +3512,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz", - "integrity": "sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.0.tgz", + "integrity": "sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==", "cpu": [ "x64" ], @@ -3612,9 +3528,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz", - "integrity": "sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.0.tgz", + "integrity": "sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==", "cpu": [ "arm64" ], @@ -3628,9 +3544,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz", - "integrity": "sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", + "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", "cpu": [ "x64" ], @@ -5444,26 +5360,6 @@ "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, - "license": "MIT", - "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, - "license": "MIT" - }, "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", @@ -6416,26 +6312,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", @@ -6510,26 +6386,6 @@ "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", @@ -8408,26 +8264,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", @@ -9165,30 +9001,11 @@ "node": ">=12.5.0" } }, - "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==", - "license": "MIT", - "optional": true - }, - "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": { + "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" }, @@ -9196,12 +9013,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", @@ -9374,26 +9201,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", @@ -11154,26 +10961,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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", @@ -11856,26 +11643,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", @@ -14064,26 +13831,6 @@ "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/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -14209,26 +13956,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", @@ -14338,29 +14065,9 @@ "engines": { "node": ">=10" }, - "funding": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", @@ -14504,26 +14211,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", @@ -14645,26 +14332,6 @@ "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", @@ -14919,26 +14586,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", @@ -15051,26 +14698,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", @@ -15240,26 +14867,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", @@ -15349,26 +14956,6 @@ "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", @@ -15470,26 +15057,6 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "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/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -15613,26 +15180,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", @@ -15742,26 +15289,6 @@ "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", @@ -15849,26 +15376,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", @@ -15980,26 +15487,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", @@ -18726,12 +18213,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/next/-/next-15.2.4.tgz", - "integrity": "sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.0.tgz", + "integrity": "sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==", "license": "MIT", "dependencies": { - "@next/env": "15.2.4", + "@next/env": "15.3.0", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -18746,15 +18233,15 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.2.4", - "@next/swc-darwin-x64": "15.2.4", - "@next/swc-linux-arm64-gnu": "15.2.4", - "@next/swc-linux-arm64-musl": "15.2.4", - "@next/swc-linux-x64-gnu": "15.2.4", - "@next/swc-linux-x64-musl": "15.2.4", - "@next/swc-win32-arm64-msvc": "15.2.4", - "@next/swc-win32-x64-msvc": "15.2.4", - "sharp": "^0.33.5" + "@next/swc-darwin-arm64": "15.3.0", + "@next/swc-darwin-x64": "15.3.0", + "@next/swc-linux-arm64-gnu": "15.3.0", + "@next/swc-linux-arm64-musl": "15.3.0", + "@next/swc-linux-x64-gnu": "15.3.0", + "@next/swc-linux-x64-musl": "15.3.0", + "@next/swc-win32-arm64-msvc": "15.3.0", + "@next/swc-win32-x64-msvc": "15.3.0", + "sharp": "^0.34.1" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -22234,16 +21721,16 @@ } }, "node_modules/sharp": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", - "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", + "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", "hasInstallScript": true, "license": "Apache-2.0", "optional": true, "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", - "semver": "^7.6.3" + "semver": "^7.7.1" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -22252,25 +21739,26 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.5", - "@img/sharp-darwin-x64": "0.33.5", - "@img/sharp-libvips-darwin-arm64": "1.0.4", - "@img/sharp-libvips-darwin-x64": "1.0.4", - "@img/sharp-libvips-linux-arm": "1.0.5", - "@img/sharp-libvips-linux-arm64": "1.0.4", - "@img/sharp-libvips-linux-s390x": "1.0.4", - "@img/sharp-libvips-linux-x64": "1.0.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", - "@img/sharp-libvips-linuxmusl-x64": "1.0.4", - "@img/sharp-linux-arm": "0.33.5", - "@img/sharp-linux-arm64": "0.33.5", - "@img/sharp-linux-s390x": "0.33.5", - "@img/sharp-linux-x64": "0.33.5", - "@img/sharp-linuxmusl-arm64": "0.33.5", - "@img/sharp-linuxmusl-x64": "0.33.5", - "@img/sharp-wasm32": "0.33.5", - "@img/sharp-win32-ia32": "0.33.5", - "@img/sharp-win32-x64": "0.33.5" + "@img/sharp-darwin-arm64": "0.34.1", + "@img/sharp-darwin-x64": "0.34.1", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.1", + "@img/sharp-linux-arm64": "0.34.1", + "@img/sharp-linux-s390x": "0.34.1", + "@img/sharp-linux-x64": "0.34.1", + "@img/sharp-linuxmusl-arm64": "0.34.1", + "@img/sharp-linuxmusl-x64": "0.34.1", + "@img/sharp-wasm32": "0.34.1", + "@img/sharp-win32-ia32": "0.34.1", + "@img/sharp-win32-x64": "0.34.1" } }, "node_modules/shebang-command": { @@ -23362,26 +22850,6 @@ "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", @@ -25353,24 +24821,6 @@ "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", @@ -25387,26 +24837,6 @@ "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", From 4fcc18f23d7d02c79b0bdd0f2de9764ed59b40c7 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 10 Apr 2025 19:54:16 -0400 Subject: [PATCH 0393/1385] feat(about): list official resources (#7562) * feat(about): list official resources Signed-off-by: Aviv Keller <me@aviv.sh> * List amaro and undici * Add new Node.js team packages list. * For now, only list the accounts. * code review * resolve reviews * resolve reviews (x2) --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- apps/site/pages/en/about/index.mdx | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/apps/site/pages/en/about/index.mdx b/apps/site/pages/en/about/index.mdx index a20f08cf3f97e..9a8688f2a1824 100644 --- a/apps/site/pages/en/about/index.mdx +++ b/apps/site/pages/en/about/index.mdx @@ -77,3 +77,46 @@ by using our [`child_process.fork()`](https://nodejs.org/api/child_process.html) communicate with. Built upon that same interface is the [`cluster`](https://nodejs.org/api/cluster.html) module, which allows you to share sockets between processes to enable load balancing over your cores. + +## Official Node.js Resources + +To ensure authenticity and security when working with Node.js, always use official sources. Avoid trusting emails, +binaries, or downloads from unofficial sources. + +### Official Node.js Domains + +For downloading Node.js binaries and accessing official documentation, use only these domains: + +- [nodejs.org](https://nodejs.org) +- [nodejs.dev](https://nodejs.dev) _(Redirects to https://nodejs.org)_ +- [iojs.org](https://iojs.org) _(Redirects to https://nodejs.org)_ + +### Official npm Packages + +The Node.js team maintains the following official npm package scopes: + +- [`@node-core`](https://npmjs.com/~node-core) +- [`@pkgjs`](https://npmjs.com/~pkgjs) + +Additionally, the Node.js team maintains packages published by the [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation) npm account, +though other Node.js-related packages (like [`undici`](https://www.npmjs.com/package/undici)) may also be maintained by contributors closely +tied to the project. + +Using packages from the Node.js team guarantees that you are working with officially supported Node.js components. + +### Official GitHub Organizations + +Node.js and related projects are maintained under these official GitHub organizations: + +- [nodejs](https://github.com/nodejs) +- [pkgjs](https://github.com/pkgjs) + +### Official Communication Channels + +Node.js and the OpenJS Foundation communicate through various official and community-supported channels. You can find details on +how to get involved on the [Get Involved](https://nodejs.org/en/about/get-involved) page. + +### Reporting Website Issues & Downtime + +If you encounter issues with the Node.js website, report them at the [Node.js website repository](https://github.com/nodejs/nodejs.org/issues). +For real-time updates on outages, visit the [Node.js Status Page](https://status.nodejs.org). From b4102440418ed45fcab74d5679220143ec524253 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 11 Apr 2025 03:29:28 -0400 Subject: [PATCH 0394/1385] fix(COLLABORATOR_GUIDE): remove `next-sitemap` (#7641) --- COLLABORATOR_GUIDE.md | 1 - 1 file changed, 1 deletion(-) diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 200bbdc3ddeac..524c3dfa30220 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -84,7 +84,6 @@ The Website also uses several other Open Source libraries (not limited to) liste - [`next-intl`][] is the i18n Library adopted within the Website - It provides an excellent integration with Next.js, But it also supports standalone support for i18n if it eventually migrates from Next.js to something else. - Supports React Server Components and Next.js Middlewares -- [`next-sitemap`](https://www.npmjs.com/package/next-sitemap) is used for Sitemap and `robots.txt` Generation - We use [Rehype](https://github.com/rehypejs/rehype) and [Remark](https://github.com/remarkjs/remark) to extend MDX functionality - We use [Storybook](https://storybook.js.org/) for Manual Testing and Visual Regression Tests of our React Components - Storybook also provides a sandboxed environment, which is very useful whilst for crafting React Components From 3ad42c6be1488fa9ed1d1d9696bda80281c88b10 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 11 Apr 2025 15:22:57 -0400 Subject: [PATCH 0395/1385] feat(learn): add article on tuning memory (#7639) * feat(learn): add article on tuning memory * add self to authors.json * code review * 512 -> 64 * code review from mcollina * add specific examples, fix quotes, optimize code * Fix title --- apps/site/authors.json | 5 + .../en/learn/diagnostics/memory/index.md | 3 + .../memory/understanding-and-tuning-memory.md | 150 ++++++++++++++++++ .../en/learn/diagnostics/user-journey.md | 7 +- .../test-runner/collecting-code-coverage.md | 2 +- packages/i18n/locales/en.json | 1 + 6 files changed, 164 insertions(+), 4 deletions(-) create mode 100644 apps/site/pages/en/learn/diagnostics/memory/understanding-and-tuning-memory.md diff --git a/apps/site/authors.json b/apps/site/authors.json index 0591fb9e4fd6f..f3dcd7fa4e86f 100644 --- a/apps/site/authors.json +++ b/apps/site/authors.json @@ -14,6 +14,11 @@ "name": "Augustin Mauroy", "website": "https://github.com/AugustinMauroy" }, + "Aviv Keller": { + "id": "avivkeller", + "name": "Aviv Keller", + "website": "https://github.com/avivkeller" + }, "Ben Noordhuis": { "id": "bnoordhuis", "name": "Ben Noordhuis", diff --git a/apps/site/pages/en/learn/diagnostics/memory/index.md b/apps/site/pages/en/learn/diagnostics/memory/index.md index 082f60f0b1f9c..558d272e1c1c7 100644 --- a/apps/site/pages/en/learn/diagnostics/memory/index.md +++ b/apps/site/pages/en/learn/diagnostics/memory/index.md @@ -14,6 +14,9 @@ leaks is possible through retainers. As Node.js applications are usually multi-tenant, business critical, and long-running, providing an accessible and efficient way of finding a memory leak is essential. +You can also fine-tune memory to get specific results. Check out +[Understanding and Tuning Memory](/learn/diagnostics/memory/understanding-and-tuning-memory) for more details. + ### Symptoms The user observes continuously increasing memory usage _(can be fast or slow, diff --git a/apps/site/pages/en/learn/diagnostics/memory/understanding-and-tuning-memory.md b/apps/site/pages/en/learn/diagnostics/memory/understanding-and-tuning-memory.md new file mode 100644 index 0000000000000..ae39c74851ef9 --- /dev/null +++ b/apps/site/pages/en/learn/diagnostics/memory/understanding-and-tuning-memory.md @@ -0,0 +1,150 @@ +--- +title: Understanding and Tuning Memory +layout: learn +authors: avivkeller +--- + +# Understanding and Tuning Memory + +Node.js, built on Google's V8 JavaScript engine, offers a powerful runtime for running JavaScript on the server side. However, as your applications grow, managing memory becomes a critical task for maintaining optimal performance and managing problems like memory leaks or crashes. In this article, we'll explore how to monitor, manage, and optimize memory usage within Node.js. We'll also cover important V8 concepts like the heap and garbage collection and discuss how to use command-line flags to fine-tune memory behavior. + +## How V8 Manages Memory + +At its core, V8 divides memory into several parts, with two primary areas being the **heap** and the **stack**. Understanding these spaces, especially how the heap is managed, is key to improving memory usage in your app. + +### The Heap + +V8's memory management is based on the generational hypothesis, the idea that most objects die young. Therefore, it separates the heap into generations to optimize garbage collection: + +1. **New Space**: This is where new, short-lived objects are allocated. Objects here are expected to "die young", so garbage collection occurs frequently, allowing memory to be reclaimed quickly. + + For example, let's say you have an API that receives 1,000 requests per second. Each request generates a temporary object like `{ name: 'John', age: 30 }`, which is discarded once the request is processed. If you leave the New Space size at the default, V8 will frequently perform minor garbage collections to clear these small objects, ensuring that memory usage remains manageable. + +2. **Old Space**: Objects that survive multiple garbage collection cycles in the New Space are promoted to the Old Space. These are usually long-lived objects, such as user sessions, cache data, or persistent state. Because these objects tend to last longer, garbage collection in this space occurs less often but is more resource-intensive. + + Let's say you are running an application that tracks user sessions. Each session might store data like `{ userId: 'abc123', timestamp: '2025-04-10T12:00:00', sessionData: {...} }`, which needs to persist in memory as long as the user is active. As the number of concurrent users grows, the Old Space could fill up, causing out-of-memory errors or slower response times due to inefficient garbage collection cycles. + +In V8, memory for JavaScript objects, arrays, and functions is allocated in the **heap**. The size of the heap is not fixed, and exceeding the available memory can result in an "out-of-memory" error, causing your application to crash. + +To check the current heap size limit, you can use the `v8` module. + +```cjs +const v8 = require('node:v8'); +const { heap_size_limit } = v8.getHeapStatistics(); +const heapSizeInGB = heap_size_limit / (1024 * 1024 * 1024); + +console.log(`${heapSizeInGB} GB`); +``` + +This will output the maximum heap size in gigabytes, which is based on your system's available memory. + +### The Stack + +In addition to the heap, V8 also uses the **stack** for memory management. The stack is a region of memory used to store local variables and function call information. Unlike the heap, which is managed by V8's garbage collector, the stack operates on a Last In, First Out (LIFO) principle. + +Whenever a function is called, a new frame is pushed onto the stack. When the function returns, its frame is popped off. The stack is much smaller in size compared to the heap, but it is faster for memory allocation and deallocation. However, the stack has a limited size, and excessive use of memory (such as with deep recursion) can result in a **stack overflow**. + +## Monitoring Memory Usage + +Before tuning memory usage, it's important to understand how much memory your application is consuming. Node.js and V8 provide several tools for monitoring memory usage. + +### Using `process.memoryUsage()` + +The `process.memoryUsage()` method provides insights into how much memory your Node.js process is using. It returns an object with details like: + +- **`rss`** (Resident Set Size): The total memory allocated to your process, including heap and other areas. +- **`heapTotal`**: The total memory allocated for the heap. +- **`heapUsed`**: The memory currently in use within the heap. +- **`external`**: Memory used by external resources like bindings to C++ libraries. +- **`arrayBuffers`**: Memory allocated to various Buffer-like objects. + +Here's how to use `process.memoryUsage()` to monitor memory usage in your application: + +```javascript +console.log(process.memoryUsage()); +``` + +The output will show how much memory is being used in each area: + +```json +{ + "rss": 25837568, + "heapTotal": 5238784, + "heapUsed": 3666120, + "external": 1274076, + "arrayBuffers": 10515 +} +``` + +By monitoring these values over time, you can identify if memory usage is increasing unexpectedly. For instance, if `heapUsed` steadily grows without being released, it could indicate a memory leak in your application. + +## Command-Line Flags for Memory Tuning + +Node.js offers several command-line flags to fine-tune memory-related settings, allowing you to optimize memory usage in your application. + +### `--max-old-space-size` + +This flag sets a limit on the size of the **Old Space** in the V8 heap, where long-lived objects are stored. If your application uses a significant amount of memory, you might need to adjust this limit. + +For example, lets say your application handles a steady stream of incoming requests, each of which generates a large object. Over time, if these objects are not cleared, the Old Space could become overloaded, causing crashes or slower response times. + +You can increase the Old Space size by setting the `--max-old-space-size` flag: + +```bash +node --max-old-space-size=4096 app.js +``` + +This sets the Old Space size to 4096 MB (4 GB), which is particularly useful if your application is handling a large amount of persistent data, like caching or user session information. + +### `--max-semi-space-size` + +This flag controls the size of the **New Space** in the V8 heap. New Space is where newly created objects are allocated and garbage collected frequently. Increasing this size can reduce the frequency of minor garbage collection cycles. + +For example, if you have an API that receives a large number of requests, each creating small objects like `{ name: 'Alice', action: 'login' }`, you may notice performance degradation due to frequent garbage collection. By increasing the New Space size, you can reduce the frequency of these collections and improve overall performance. + +```bash +node --max-semi-space-size=64 app.js +``` + +This increases the New Space to 64 MB, allowing for more objects to reside in memory before triggering garbage collection. This is particularly useful in high-throughput environments where object creation and destruction are frequent. + +### `--gc-interval` + +This flag adjusts how frequently garbage collection cycles occur. By default, V8 determines the best interval, but you can override this setting in some scenarios where you need more control over memory cleanup. + +For example, in a real-time application like a stock trading platform, you may want to minimize the impact of garbage collection by reducing the frequency of collections, ensuring the application can process data without significant pauses. + +```bash +node --gc-interval=100 app.js +``` + +This setting forces V8 to attempt garbage collection every 100 ms. You may need to adjust this interval for specific use cases, but be cautious: setting the interval too low can cause performance degradation due to excessive garbage collection cycles. + +### `--expose-gc` + +With the `--expose-gc` flag, you can manually trigger garbage collection from within your application code. This can be helpful in specific scenarios, like after processing a large batch of data, where you want to reclaim memory before continuing with further operations. + +To expose `gc`, start your app with: + +```bash +node --expose-gc app.js +``` + +Then, within your application code, you can call `global.gc()` to manually trigger garbage collection: + +```javascript +global.gc(); +``` + +Keep in mind that manually triggering garbage collection **does not disable** the normal GC algorithm. V8 will still perform automatic garbage collection as needed. Manual calls are supplemental and should be used with caution, as overuse can negatively impact performance. + +## Additional Resources + +To dive deeper into how V8 handles memory, check out these posts by the V8 team: + +- [Trash talk: the Orinoco garbage collector](https://v8.dev/blog/trash-talk) +- [Orinoco: young generation garbage collection](https://v8.dev/blog/orinoco-parallel-scavenger) + +## Putting It All Together + +By adjusting settings for the Old Space and New Space sizes, selectively triggering garbage collection, and configuring heap limits, you can optimize your application’s memory usage and improve its overall performance. These tools give you the power to better manage memory in high-demand scenarios and maintain stability as your applications scale. diff --git a/apps/site/pages/en/learn/diagnostics/user-journey.md b/apps/site/pages/en/learn/diagnostics/user-journey.md index 0df7dcc01dc3c..d75244dc77a8f 100644 --- a/apps/site/pages/en/learn/diagnostics/user-journey.md +++ b/apps/site/pages/en/learn/diagnostics/user-journey.md @@ -5,12 +5,13 @@ layout: learn # User Journey -These diagnostics guides were created by the [Diagnostics Working Group][] with the -objective of providing guidance when diagnosing an issue in a user's -application. +These diagnostics guides were created by the [Diagnostics Working Group][] +and the [Node.js Website Team][] with the objective of providing guidance +when diagnosing an issue in a user's application. The documentation project is organized based on user journey. Those journeys are a coherent set of step-by-step procedures that a user can follow to root-cause their issues. [Diagnostics Working Group]: https://github.com/nodejs/diagnostics +[Node.js Website Team]: https://github.com/nodejs/nodejs.org diff --git a/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md b/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md index c6fc6d55340a0..03d5e99c9afcf 100644 --- a/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md +++ b/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md @@ -1,7 +1,7 @@ --- title: Collecting code coverage in Node.js layout: learn -authors: RedYetiDev +authors: avivkeller --- # Collecting code coverage in Node.js diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 43d3f91c69204..ab38e13762342 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -108,6 +108,7 @@ "links": { "diagnostics": "Diagnostics", "userJourney": "User Journey", + "understandingAndTuningMemory": "Understanding and Tuning Memory", "memory": "Memory", "liveDebugging": "Live Debugging", "poorPerformance": "Poor Performance", From 9fab28f9ed6753f133d5bf4fac70b197e36ca916 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Fri, 11 Apr 2025 21:27:13 +0200 Subject: [PATCH 0396/1385] fix(heading): improve heading style (#7628) * fix(ui): missing style * fix: theme * fix typo in comment Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> * revert theme change --------- Signed-off-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- packages/ui-components/.stylelintrc.mjs | 2 ++ .../ui-components/__design__/text.stories.tsx | 33 +++++++++++++++++++ packages/ui-components/styles/markdown.css | 7 +++- packages/ui-components/styles/theme.css | 5 ++- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/packages/ui-components/.stylelintrc.mjs b/packages/ui-components/.stylelintrc.mjs index 1880b1ce2d8ae..a45a17b041527 100644 --- a/packages/ui-components/.stylelintrc.mjs +++ b/packages/ui-components/.stylelintrc.mjs @@ -45,5 +45,7 @@ export default { 'import-notation': 'string', // Allow the `@apply` at rule as its part of Tailwind 'at-rule-no-deprecated': [true, { ignoreAtRules: CUSTOM_AT_RULES }], + // We need complex `:not()` for headings with anchor + 'selector-not-notation': null, }, }; diff --git a/packages/ui-components/__design__/text.stories.tsx b/packages/ui-components/__design__/text.stories.tsx index 9ed6ca21834d8..6b49a6757148a 100644 --- a/packages/ui-components/__design__/text.stories.tsx +++ b/packages/ui-components/__design__/text.stories.tsx @@ -27,6 +27,12 @@ export const InlineCode: StoryObj = { <p> This is an example of <code>inline code block</code> </p> + <p> + This is an example of{' '} + <a href="https://nodejs.org/"> + <code>inline code block inside link</code> + </a> + </p> </main> ), }; @@ -44,4 +50,31 @@ export const Headings: StoryObj = { ), }; +// Create the behavior of the headings with links +// on nodejs.org, this is happening due to `rehype-autolink-headings` +export const HeadingsWithLinks: StoryObj = { + render: () => ( + <main> + <h1 id="heading-1"> + <a href="#heading-1">HTML Section Heading 1</a> + </h1> + <h2 id="heading-2"> + <a href="#heading-2">HTML Section Heading 2</a> + </h2> + <h3 id="heading-3"> + <a href="#heading-3">HTML Section Heading 3</a> + </h3> + <h4 id="heading-4"> + <a href="#heading-4">HTML Section Heading 4</a> + </h4> + <h5 id="heading-5"> + <a href="#heading-5">HTML Section Heading 5</a> + </h5> + <h6 id="heading-6"> + <a href="#heading-6">HTML Section Heading 6</a> + </h6> + </main> + ), +}; + export default { title: 'Design System' } as MetaObj; diff --git a/packages/ui-components/styles/markdown.css b/packages/ui-components/styles/markdown.css index d7296ca88c6f5..f1c91f056fc84 100644 --- a/packages/ui-components/styles/markdown.css +++ b/packages/ui-components/styles/markdown.css @@ -75,7 +75,8 @@ main { dark:text-white; } - a, + /* link that isn't inside a heading */ + a:not(h1 > a):not(h2 > a):not(h3 > a):not(h4 > a):not(h5 > a):not(h6 > a), .anchor { @apply max-xs:font-semibold text-green-600 @@ -93,6 +94,10 @@ main { &:has(code) { @apply max-xs:decoration-neutral-800 dark:max-xs:decoration-neutral-200; + + code { + @apply text-inherit; + } } } diff --git a/packages/ui-components/styles/theme.css b/packages/ui-components/styles/theme.css index 8b6e42ee608ce..8a5e56530a0d7 100644 --- a/packages/ui-components/styles/theme.css +++ b/packages/ui-components/styles/theme.css @@ -76,7 +76,6 @@ --color-white: #fff; --color-transparent: 'transparent'; --color-shadow: #101828; - --inherit: 'inherit'; --shadow-xs: 0px 1px 2px 0px --alpha(var(--color-shadow, #101828) / 5%); --shadow-lg: 0px 4px 6px -2px --alpha(var(--color-shadow, #101828) / 3%), @@ -170,3 +169,7 @@ var(--tw-gradient-to) ); } + +@utility text-inherit { + color: inherit; +} From 781fdae54d308274c16a63293454eb246d7e47ce Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Fri, 11 Apr 2025 21:31:05 +0200 Subject: [PATCH 0397/1385] feat(modal): re-introduce (#7638) * feat(modal): re-introduce * fix typo in story Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> * use right name * fix: open modal by default Signed-off-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> * Update packages/ui-components/Common/Modal/index.module.css Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Claudio W. <cwunder@gnome.org> --------- Signed-off-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Signed-off-by: Claudio W. <cwunder@gnome.org> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Claudio W. <cwunder@gnome.org> Co-authored-by: Caner Akdas <canerakdas@gmail.com> --- package-lock.json | 313 ++++++++++++++++++ .../Common/Modal/index.module.css | 79 +++++ .../Common/Modal/index.stories.tsx | 32 ++ packages/ui-components/Common/Modal/index.tsx | 46 +++ packages/ui-components/package.json | 1 + 5 files changed, 471 insertions(+) create mode 100644 packages/ui-components/Common/Modal/index.module.css create mode 100644 packages/ui-components/Common/Modal/index.stories.tsx create mode 100644 packages/ui-components/Common/Modal/index.tsx diff --git a/package-lock.json b/package-lock.json index ab5c226a30373..7b0a40f21c144 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4322,6 +4322,318 @@ } } }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.7.tgz", + "integrity": "sha512-EIdma8C0C/I6kL6sO02avaCRqi3fmWJpxH6mqbVScorW6nNktzKJT/le7VPho3o/7wCsyRg3z0+Q+Obr0Gy/VQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.6", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.3", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.5", + "@radix-ui/react-presence": "1.1.3", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-use-controllable-state": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "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-dialog/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "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-dialog/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "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-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.6.tgz", + "integrity": "sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "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-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "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-dialog/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.3.tgz", + "integrity": "sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "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-dialog/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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-dialog/node_modules/@radix-ui/react-portal": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.5.tgz", + "integrity": "sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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-dialog/node_modules/@radix-ui/react-presence": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.3.tgz", + "integrity": "sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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-dialog/node_modules/@radix-ui/react-primitive": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.3.tgz", + "integrity": "sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.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-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "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-dialog/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "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-dialog/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.1.tgz", + "integrity": "sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "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-dialog/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "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-dialog/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "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-direction": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", @@ -25067,6 +25379,7 @@ "name": "@node-core/ui-components", "dependencies": { "@heroicons/react": "^2.2.0", + "@radix-ui/react-dialog": "^1.1.7", "@radix-ui/react-dropdown-menu": "~2.1.6", "@radix-ui/react-label": "~2.1.2", "@radix-ui/react-scroll-area": "~1.2.3", diff --git a/packages/ui-components/Common/Modal/index.module.css b/packages/ui-components/Common/Modal/index.module.css new file mode 100644 index 0000000000000..1495d7e71bf46 --- /dev/null +++ b/packages/ui-components/Common/Modal/index.module.css @@ -0,0 +1,79 @@ +@reference "../../styles/index.css"; + +.overlay { + @apply fixed + inset-0 + flex + justify-center + bg-white/40 + backdrop-blur-[2px] + dark:bg-neutral-950/40; + + .content { + @apply xs:p-6 + relative + m-4 + inline-flex + w-full + flex-col + overflow-y-auto + rounded + border + border-neutral-200 + bg-white + p-8 + focus:outline-none + sm:my-20 + lg:max-w-[900px] + xl:p-12 + dark:bg-neutral-950; + } + + .close { + @apply absolute + right-3 + top-3 + block + size-7 + cursor-pointer + rounded-sm + p-1 + hover:bg-neutral-100 + focus:outline-none + focus:ring-2 + focus:ring-neutral-200 + dark:hover:bg-neutral-900 + dark:focus:ring-neutral-900; + } + + .title { + @apply mb-2 + text-3xl + font-semibold + text-neutral-900 + dark:text-white; + } + + .description { + @apply font-regular + mb-4 + text-lg + text-neutral-800 + dark:text-neutral-200; + } + + .wrapper { + @apply flex + flex-col + gap-4; + + pre { + @apply overflow-auto; + } + + code, + a { + @apply break-words; + } + } +} diff --git a/packages/ui-components/Common/Modal/index.stories.tsx b/packages/ui-components/Common/Modal/index.stories.tsx new file mode 100644 index 0000000000000..8b650418a2383 --- /dev/null +++ b/packages/ui-components/Common/Modal/index.stories.tsx @@ -0,0 +1,32 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import Modal from '@node-core/ui-components/Common/Modal'; + +type Story = StoryObj<typeof Modal>; +type Meta = MetaObj<typeof Modal>; + +export const Default: Story = { + args: { + open: true, + heading: 'Node.js Versions Information', + subheading: 'Get all information about Node.js versions and their changes.', + children: ( + <> + <p> + Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto + atque sint doloremque, sapiente recusandae debitis libero nostrum + repudiandae explicabo suscipit ipsam eos dolorem, necessitatibus odit + quos delectus natus sunt sit! + </p> + <p> + Lorem ipsum dolor sit amet consectetur, adipisicing elit. Earum + asperiores corporis tempore neque, officiis fuga est facere deserunt + amet minus sit architecto blanditiis hic sed odit cumque numquam + dignissimos delectus. + </p> + </> + ), + }, +}; + +export default { component: Modal } as Meta; diff --git a/packages/ui-components/Common/Modal/index.tsx b/packages/ui-components/Common/Modal/index.tsx new file mode 100644 index 0000000000000..635ab82a54cfa --- /dev/null +++ b/packages/ui-components/Common/Modal/index.tsx @@ -0,0 +1,46 @@ +'use client'; + +import { XMarkIcon } from '@heroicons/react/24/outline'; +import * as Dialog from '@radix-ui/react-dialog'; +import type { FC, PropsWithChildren } from 'react'; + +import styles from './index.module.css'; + +type ModalProps = PropsWithChildren<{ + heading: string; + subheading: string; + open?: boolean; + onOpenChange?: (open: boolean) => void; +}>; + +const Modal: FC<ModalProps> = ({ + heading, + subheading, + children, + open = false, + onOpenChange = () => {}, +}) => ( + <Dialog.Root open={open} onOpenChange={onOpenChange}> + <Dialog.Portal> + <Dialog.Overlay className={styles.overlay}> + <Dialog.Content className={styles.content}> + <Dialog.Trigger className={styles.close}> + <XMarkIcon /> + </Dialog.Trigger> + + <Dialog.Title className={styles.title}>{heading}</Dialog.Title> + + <Dialog.Description className={styles.description}> + {subheading} + </Dialog.Description> + + <main className={styles.wrapper}>{children}</main> + + <Dialog.Close /> + </Dialog.Content> + </Dialog.Overlay> + </Dialog.Portal> + </Dialog.Root> +); + +export default Modal; diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 4ec670df98f34..6032e9b19ad96 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "@heroicons/react": "^2.2.0", + "@radix-ui/react-dialog": "^1.1.7", "@radix-ui/react-dropdown-menu": "~2.1.6", "@radix-ui/react-label": "~2.1.2", "@radix-ui/react-scroll-area": "~1.2.3", From 9d0b590199bd40ac96e64095f1e0efb03637aad7 Mon Sep 17 00:00:00 2001 From: Matt Cowley <me@mattcowley.co.uk> Date: Fri, 11 Apr 2025 20:33:56 +0100 Subject: [PATCH 0398/1385] docs: require community installation methods are non-commercial FOSS (#7631) * docs: require community installation methods are non-commercial FOSS * Tweak wording to exclude for-profit entities Signed-off-by: Matt Cowley <me@mattcowley.co.uk> * Revert: Tweak wording to exclude for-profit entities Signed-off-by: Matt Cowley <me@mattcowley.co.uk> --------- Signed-off-by: Matt Cowley <me@mattcowley.co.uk> --- apps/site/pages/en/about/previous-releases.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/site/pages/en/about/previous-releases.mdx b/apps/site/pages/en/about/previous-releases.mdx index 752b97a10744e..c18e7f3d7087c 100644 --- a/apps/site/pages/en/about/previous-releases.mdx +++ b/apps/site/pages/en/about/previous-releases.mdx @@ -50,3 +50,4 @@ Community installation methods included on the self-service download page (/down - **Broad OS Support:** Cannot be limited to a subset of OS distributions or versions. - For example, an installation method claiming compatibility with “Windows” must function on “Windows 10”, “Windows 11”, and all their editions (including server versions). - Similarly, an installation method claiming compatibility with “Linux” must be installable on all major Linux distributions, not just a specific subset. It cannot rely on distribution-specific package managers like `apt` or `dnf`. +- **Free and Open Source:** Must be free to use and open source, must not be sold as a commercial product, and must not be a paid service. From 65ae2f19861f4cac26e45fefc7ef04d470403463 Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Sun, 13 Apr 2025 17:11:59 +0300 Subject: [PATCH 0399/1385] feat: introduce stylelint plugin (#7644) * feat: introduce stylelint plugin * Update packages/ui-components/stylelint.plugin.mjs Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Caner Akdas <canerakdas@gmail.com> * refactor: review suggestions * chore(docs): align Tailwind usage with official documentation in docs and Stylelint config --------- Signed-off-by: Caner Akdas <canerakdas@gmail.com> Co-authored-by: Aviv Keller <me@aviv.sh> --- COLLABORATOR_GUIDE.md | 6 +- apps/site/.stylelintrc.mjs | 7 +- apps/site/layouts/layouts.module.css | 22 +++--- apps/site/styles/effects.css | 4 +- packages/ui-components/.stylelintrc.mjs | 7 +- .../Common/Blockquote/index.module.css | 20 ++++- .../BreadcrumbItem/index.module.css | 22 +++++- .../BreadcrumbLink/index.module.css | 15 +++- .../BreadcrumbRoot/index.module.css | 6 +- .../Common/LanguageDropDown/index.module.css | 6 +- .../Common/Tabs/index.module.css | 2 +- .../stylelint/__tests__/index.test.mjs | 75 +++++++++++++++++++ .../stylelint/one-utility-class-per-line.mjs | 64 ++++++++++++++++ packages/ui-components/stylelint/utils.mjs | 53 +++++++++++++ 14 files changed, 278 insertions(+), 31 deletions(-) create mode 100644 packages/ui-components/stylelint/__tests__/index.test.mjs create mode 100644 packages/ui-components/stylelint/one-utility-class-per-line.mjs create mode 100644 packages/ui-components/stylelint/utils.mjs diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 524c3dfa30220..3e38c73cbd652 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -187,14 +187,14 @@ Finally, if you're unfamiliar with how to use Tailwind or how to use Tailwind wi #### Guidelines when writing CSS - We use camelCase for defining CSS classes -- We use Tailwind's `@apply` selector to apply Tailwind Tokens +- We use Tailwind's `@apply` selector to apply Tailwind utility classes - We discourage the usage of any plain CSS styles and tokens, when in doubt ask for help - - We require that you define one Tailwind Token per line, just as shown on the example above, since this improves readability + - We require that you define one Tailwind utility class per line, just as shown on the example above, since this improves readability - Only write CSS within CSS Modules, avoid writing CSS within JavaScript files > \[!NOTE]\ > Tailwind is already configured for this repository. You don't need to import any Tailwind module within your CSS module.\ -> You can apply Tailwind Tokens with Tailwind's `@apply` CSS rule. [Read more about applying Tailwind classes with `@apply`](https://tailwindcss.com/docs/functions-and-directives#apply). +> You can apply Tailwind utility classes with Tailwind's `@apply` CSS rule. [Read more about applying Tailwind utility classes with `@apply`](https://tailwindcss.com/docs/functions-and-directives#apply). > \[!IMPORTANT]\ > When using IDEs such as Visual Studio Code, we recommend installing the official [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) diff --git a/apps/site/.stylelintrc.mjs b/apps/site/.stylelintrc.mjs index 1880b1ce2d8ae..c618c7b3dca9e 100644 --- a/apps/site/.stylelintrc.mjs +++ b/apps/site/.stylelintrc.mjs @@ -23,7 +23,11 @@ const ONLY_ALLOW_CAMEL_CASE_SELECTORS = [ export default { extends: ['stylelint-config-standard'], - plugins: ['stylelint-order', 'stylelint-selector-bem-pattern'], + plugins: [ + 'stylelint-order', + 'stylelint-selector-bem-pattern', + '@node-core/ui-components/stylelint/one-utility-class-per-line.mjs', + ], rules: { // Enforces Element Class Names to be camelCase 'selector-class-pattern': ONLY_ALLOW_CAMEL_CASE_SELECTORS, @@ -45,5 +49,6 @@ export default { 'import-notation': 'string', // Allow the `@apply` at rule as its part of Tailwind 'at-rule-no-deprecated': [true, { ignoreAtRules: CUSTOM_AT_RULES }], + 'nodejs/one-utility-class-per-line': true, }, }; diff --git a/apps/site/layouts/layouts.module.css b/apps/site/layouts/layouts.module.css index e0b725b31da36..f974a59063a40 100644 --- a/apps/site/layouts/layouts.module.css +++ b/apps/site/layouts/layouts.module.css @@ -137,14 +137,14 @@ &:nth-of-type(2) { @apply flex - min-w-0 - max-w-full - flex-[1_1] - flex-col - items-center - gap-4 - md:max-w-2xl - lg:max-w-3xl; + min-w-0 + max-w-full + flex-[1_1] + flex-col + items-center + gap-4 + md:max-w-2xl + lg:max-w-3xl; > div { @apply w-full @@ -154,9 +154,9 @@ > p { @apply text-center - text-sm - text-neutral-800 - dark:text-neutral-200; + text-sm + text-neutral-800 + dark:text-neutral-200; } } } diff --git a/apps/site/styles/effects.css b/apps/site/styles/effects.css index e7431bd0ca181..fec5d46b78ddf 100644 --- a/apps/site/styles/effects.css +++ b/apps/site/styles/effects.css @@ -21,7 +21,7 @@ & img { @apply h-auto - w-24 - md:w-48; + w-24 + md:w-48; } } diff --git a/packages/ui-components/.stylelintrc.mjs b/packages/ui-components/.stylelintrc.mjs index a45a17b041527..994212d478bf3 100644 --- a/packages/ui-components/.stylelintrc.mjs +++ b/packages/ui-components/.stylelintrc.mjs @@ -23,7 +23,11 @@ const ONLY_ALLOW_CAMEL_CASE_SELECTORS = [ export default { extends: ['stylelint-config-standard'], - plugins: ['stylelint-order', 'stylelint-selector-bem-pattern'], + plugins: [ + 'stylelint-order', + 'stylelint-selector-bem-pattern', + './stylelint/one-utility-class-per-line.mjs', + ], rules: { // Enforces Element Class Names to be camelCase 'selector-class-pattern': ONLY_ALLOW_CAMEL_CASE_SELECTORS, @@ -45,6 +49,7 @@ export default { 'import-notation': 'string', // Allow the `@apply` at rule as its part of Tailwind 'at-rule-no-deprecated': [true, { ignoreAtRules: CUSTOM_AT_RULES }], + 'nodejs/one-utility-class-per-line': true, // We need complex `:not()` for headings with anchor 'selector-not-notation': null, }, diff --git a/packages/ui-components/Common/Blockquote/index.module.css b/packages/ui-components/Common/Blockquote/index.module.css index e322d21dfe1e6..cdb4642e9f40e 100644 --- a/packages/ui-components/Common/Blockquote/index.module.css +++ b/packages/ui-components/Common/Blockquote/index.module.css @@ -1,10 +1,26 @@ @reference "../../styles/index.css"; .wrapper { - @apply flex max-w-2xl flex-col items-start gap-4 self-stretch border-l-2 border-green-600 py-2 pl-5 text-lg font-semibold text-neutral-900 dark:border-green-400 dark:text-white; + @apply flex + max-w-2xl + flex-col + items-start + gap-4 + self-stretch + border-l-2 + border-green-600 + py-2 + pl-5 + text-lg + font-semibold + text-neutral-900 + dark:border-green-400 + dark:text-white; & cite { - @apply font-regular text-base not-italic; + @apply font-regular + text-base + not-italic; &::before { @apply content-['—_']; diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css index 1f15689d72574..ced85e8b5b8bd 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbItem/index.module.css @@ -1,20 +1,29 @@ @reference "../../../styles/index.css"; .item { - @apply flex max-w-fit items-center gap-5 truncate text-sm font-medium; + @apply flex + max-w-fit + items-center + gap-5 + truncate + text-sm + font-medium; &:last-child { @apply w-full; } a { - @apply shrink grow; + @apply shrink + grow; } &, > a, > a:hover { - @apply text-neutral-800 motion-safe:transition-colors dark:text-neutral-200; + @apply text-neutral-800 + motion-safe:transition-colors + dark:text-neutral-200; } &.visuallyHidden { @@ -22,6 +31,11 @@ } .separator { - @apply size-4 max-w-fit shrink-0 grow text-neutral-600 dark:text-neutral-400; + @apply size-4 + max-w-fit + shrink-0 + grow + text-neutral-600 + dark:text-neutral-400; } } diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css index 26dd147b3ea65..35f34f9f9d99a 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.module.css @@ -1,13 +1,22 @@ @reference "../../../styles/index.css"; .link { - @apply max-w-fit truncate; + @apply max-w-fit + truncate; &.active { - @apply rounded bg-green-600 px-2 py-1 font-semibold text-white motion-safe:transition-colors dark:text-white; + @apply rounded + bg-green-600 + px-2 + py-1 + font-semibold + text-white + motion-safe:transition-colors + dark:text-white; &:hover { - @apply bg-green-700 text-white; + @apply bg-green-700 + text-white; } } } diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css b/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css index 6110240f5c2a3..cc665fa4772c9 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbRoot/index.module.css @@ -1,5 +1,9 @@ @reference "../../../styles/index.css"; .list { - @apply xs:w-full flex w-screen gap-5 px-6; + @apply xs:w-full + flex + w-screen + gap-5 + px-6; } diff --git a/packages/ui-components/Common/LanguageDropDown/index.module.css b/packages/ui-components/Common/LanguageDropDown/index.module.css index 9c487aadd62d7..1d96a9417b943 100644 --- a/packages/ui-components/Common/LanguageDropDown/index.module.css +++ b/packages/ui-components/Common/LanguageDropDown/index.module.css @@ -29,7 +29,8 @@ > div { @apply max-h-80 - w-48 overflow-y-auto; + w-48 + overflow-y-auto; } } @@ -47,5 +48,6 @@ } .currentDropDown { - @apply bg-green-600 text-white; + @apply bg-green-600 + text-white; } diff --git a/packages/ui-components/Common/Tabs/index.module.css b/packages/ui-components/Common/Tabs/index.module.css index 8a571f1d95cde..e4604bc25d20c 100644 --- a/packages/ui-components/Common/Tabs/index.module.css +++ b/packages/ui-components/Common/Tabs/index.module.css @@ -35,7 +35,7 @@ .tabSecondaryLabel { @apply text-green-800 - dark:text-green-600; + dark:text-green-600; } } } diff --git a/packages/ui-components/stylelint/__tests__/index.test.mjs b/packages/ui-components/stylelint/__tests__/index.test.mjs new file mode 100644 index 0000000000000..2deb5a6e1719a --- /dev/null +++ b/packages/ui-components/stylelint/__tests__/index.test.mjs @@ -0,0 +1,75 @@ +import { + indentClassNames, + cleanClassNames, + applyIndentation, +} from '../utils.mjs'; + +describe('cleanClassNames', () => { + it('removes newlines and extra spaces', () => { + const input = ' text-xl \r font-bold \n\n text-center '; + const expected = 'text-xl font-bold text-center'; + + expect(cleanClassNames(input)).toBe(expected); + }); + + it('trims leading and trailing spaces', () => { + const input = ' mt-4 '; + const expected = 'mt-4'; + + expect(cleanClassNames(input)).toBe(expected); + }); + + it('returns empty string when input is empty', () => { + expect(cleanClassNames('')).toBe(''); + }); +}); + +describe('applyIndentation', () => { + it('adds indentation to each class name', () => { + const input = 'text-xl font-bold text-center'; + const indent = ' '; + const expected = ['text-xl', ' font-bold', ' text-center'].join('\n'); + + expect(applyIndentation(input, indent)).toBe(expected); + }); +}); + +describe('indentClassNames', () => { + it('returns null if rule is missing required properties', () => { + expect(indentClassNames(null)).toBeNull(); + expect(indentClassNames({})).toBeNull(); + expect(indentClassNames({ params: 'foo' })).toBeNull(); + expect(indentClassNames({ params: 'foo', raws: {} })).toBeNull(); + }); + + it('cleans and indents class names correctly', () => { + const rule = { + params: ' text-xl \n font-bold \n text-center ', + raws: { + before: ' ', + }, + }; + + const result = indentClassNames({ ...rule }); + const expectedParams = ['text-xl', ' font-bold', ' text-center'].join( + '\n' + ); + + expect(result).toEqual({ + ...rule, + params: expectedParams, + }); + }); + + it('returns the same rule object with modified params', () => { + const rule = { + params: 'p-4 mb-2', + raws: { before: ' \n' }, + }; + + const result = indentClassNames(rule); + + expect(result).toBe(rule); + expect(result.params).toBe('p-4\n mb-2'); + }); +}); diff --git a/packages/ui-components/stylelint/one-utility-class-per-line.mjs b/packages/ui-components/stylelint/one-utility-class-per-line.mjs new file mode 100644 index 0000000000000..27135c986aeb2 --- /dev/null +++ b/packages/ui-components/stylelint/one-utility-class-per-line.mjs @@ -0,0 +1,64 @@ +import stylelint from 'stylelint'; + +import { indentClassNames } from './utils.mjs'; + +const { + createPlugin, + utils: { report, ruleMessages }, +} = stylelint; + +const name = 'nodejs/one-utility-class-per-line'; + +const messages = ruleMessages(name, { + className: classNames => + `Each line should contain only one Tailwind utility class; "${classNames}"`, + spacing: classNames => + `Each utility class used with @apply should be indented by 2 spaces on a new line; ${classNames}`, +}); + +const meta = { + url: 'https://github.com/nodejs/nodejs.org/blob/main/COLLABORATOR_GUIDE.md#styling-a-component', + fixable: true, +}; + +/** @type {import('stylelint').Rule} */ +const rule = () => (root, result) => { + root.walkAtRules('apply', rule => { + if (!rule.params.includes(' ')) { + // If there are no spaces in the params, we don't need to check anything + return; + } + + // Since we use 2 spaces for indentation, each line in the apply rule + // should be indented with two extra whitespaces. + const classes = rule.params.split(`${rule.raws.before} `); + const classNames = classes.join(''); + + // Check if the params contain any spaces + if (classNames.includes(' ')) { + if (classNames.includes('\n')) { + return report({ + ruleName: name, + result: result, + message: messages.spacing(JSON.stringify(rule.params)), + node: rule, + fix: indentClassNames(rule), + }); + } + + return report({ + ruleName: name, + result, + message: messages.className(rule.params), + node: rule, + fix: indentClassNames(rule), + }); + } + }); +}; + +rule.ruleName = name; +rule.messages = messages; +rule.meta = meta; + +export default createPlugin(name, rule); diff --git a/packages/ui-components/stylelint/utils.mjs b/packages/ui-components/stylelint/utils.mjs new file mode 100644 index 0000000000000..d2c23e0457bfe --- /dev/null +++ b/packages/ui-components/stylelint/utils.mjs @@ -0,0 +1,53 @@ +/** + * Adjusts the class names in the rule by cleaning and adding proper indentation. + * + * @param {Object} rule - The rule object containing the class names to be processed. + * @param {string} rule.params - The class names as a string to be formatted. + * @param {Object} rule.raws - The raw data of the rule. + * @param {string} rule.raws.before - The raw string before to the @apply rule. + * @returns {Object|null} The modified rule with properly formatted class names, or null if the rule is invalid. + */ +export const indentClassNames = rule => { + // Ensure that the rule contains necessary properties + if (!rule || !rule.params || !rule.raws || !rule.raws.before) { + return null; + } + + const indent = ' '.repeat(rule.raws.before.length + 1); + + // Clean and split the class names + const cleanedClasses = cleanClassNames(rule.params); + + // Apply the indentation and join the class names back together + rule.params = applyIndentation(cleanedClasses, indent); + + return rule; +}; + +/** + * Cleans the input string by removing unnecessary whitespace and newlines. + * + * @param {string} params - The class names string to be cleaned. + * @returns {string} The cleaned class names string. + */ +export const cleanClassNames = params => { + return params + .replace(/[\n\r]+/g, '') // Remove new lines + .replace(/\s+/g, ' ') // Replace multiple spaces with a single space + .trim(); // Trim leading/trailing spaces +}; + +/** + * Applies the correct indentation to each class name in the string. + * + * @param {string} classes - The cleaned class names as a string. + * @param {string} indent - The string used for indentation. + * @returns {string} The class names string with applied indentation. + */ +export const applyIndentation = (classes, indent) => { + return classes + .split(' ') // Split into an array of class names + .map(className => indent + className) // Add indentation to each class + .join('\n') // Join with new lines + .trim(); // Remove extra space at the end +}; From fb733850682609fd564dbe43640bf1a9385d945b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 09:35:30 -0400 Subject: [PATCH 0400/1385] [automated]: crowdin sync (#7642) * 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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- .../site/pages/ja/about/previous-releases.mdx | 32 ++-- .../site/pages/uk/about/get-involved/index.md | 20 ++- packages/i18n/locales/uk.json | 4 +- packages/i18n/locales/zh-cn.json | 142 +++++++----------- 4 files changed, 91 insertions(+), 107 deletions(-) diff --git a/apps/site/pages/ja/about/previous-releases.mdx b/apps/site/pages/ja/about/previous-releases.mdx index 399118202e683..c851aa3797241 100644 --- a/apps/site/pages/ja/about/previous-releases.mdx +++ b/apps/site/pages/ja/about/previous-releases.mdx @@ -21,15 +21,29 @@ Node.jsのリリーススケジュールに関する詳しい情報は[GitHub](h <DownloadReleasesTable /> -## 公式とコミュニティー +## 公式版とコミュニティ版のインストール方法 -Node.jsのウェブサイトはNode.jsを非対話的な方法でインストールできるように数多くのインストール方法を提供しています。例えば、CLIやOSのパッケージマネージャー(`apt`など)、Node.jsのバージョンマネージャー(`nvm`など)を通してインストールすることができます。 +Node.jsのウェブサイトではコマンドラインインターフェイス(CLI)、オペレーティングシステム(OS)、パッケージマネージャー(`brew`など)、Node.jsのバージョンマネージャー(`nvm`など)などの非対話的なインストール方法をいくつか提供しています。 -Node.jsプロジェクトはコミュニティーの取り組みを普及させ、宣伝する試みとして、公式とコミュニティーの両方のインストール方法をリストする新しいダウンロードページを導入しました。この変更に伴い、「公式」と「コミュニティー」のインストール方法の概念を導入しました。「公式」とみなされるためにはインストール方法が以下の条件を満たしている必要があります: +コミュニティへの貢献を促進するためにNode.jsプロジェクトではインストール方法を「公式版」か「コミュニティ版」のどちらかに分類したダウンロードページを提供しています。これによりユーザーはより柔軟にインストール方法を選択できるようになりました。この内容を明確にするために各カテゴリーの基準を次のように定義しています。 -| 必要条件 | -| --------------------------------------------------------------------------------------------------------------------------------- | -| Node.jsの新しいリリースは公式リリースと同時に利用可能できなければならない | -| プロジェクトメンテナーはNode.jsと直接的なコミュニケーションも含めた密接な関係でなければらなない | -| Node.jsプロジェクトによって同梱されている公式バイナリーをダウンロードさせるインストール方法になっていなければならない | -| バイナリーが利用可能な場合にソースからビルドしたりNode.jsが提供する公式バイナリーを改変しないインストール方法にしなければいけない | +### 公式版インストール方法 + +「公式版」に指定されたインストール方法は次の要件を満たさなければなりません: + +| 要件(公式版インストール方法) | +| :---------------------------------------------------------------------------------------------------------------------- | +| Node.jsの新しいリリースは公式リリースと同時に利用可能できなければならない。 | +| プロジェクトメンテナーはNode.jsと直接的なコミュニケーションも含めた密接な関係でなければらなない。 | +| Node.jsプロジェクトによって同梱されている公式バイナリーをダウンロードさせるインストール方法になっていなければならない。 | +| ビルド済みのバイナリーが利用可能な場合はソースからビルドしてはならず、公式のバイナリーを変更してはならない。 | + +### コミュニティ版インストール方法 + +セルフサービスのダウンロードページ(/download)に含まれるコミュニティ版のインストール方法も次の最低限の基準に従わなければなりません: + +- **バージョンサポート:** 現在サポートされているEOL(End-of-Life)以外の Node.jsのバージョンをすべてサポートする必要がある。 +- **OSの互換性:** 少なくとも1つの公式にサポートされているオペレーティングシステム(OS)上で機能しなければならない。 +- **幅広いOSサポート:** OSのディストリビューションやバージョンのサブセットに制限されることがないこと。 + - 例えば「Windows」との互換性を謳うインストール方法は「Windows 10」、「Windows 11」、およびそれらのすべてのエディション(サーバー版を含む)で機能しなければならない。 + - 同様に「Linux」との互換性を謳うインストー ル方法は特定のサブセットだけでなく、すべての主要なLinuxディストリビュー ションにインストールできなければない。`apt`や`dnf`のようなディストリビューション固有のパッケージマネージャに依存することはできない。 diff --git a/apps/site/pages/uk/about/get-involved/index.md b/apps/site/pages/uk/about/get-involved/index.md index 77bd3479f706d..02d6f8350a887 100644 --- a/apps/site/pages/uk/about/get-involved/index.md +++ b/apps/site/pages/uk/about/get-involved/index.md @@ -9,27 +9,25 @@ layout: about ## Обговорення спільноти +- [Репозиторій GitHub `nodejs/node`](https://github.com/nodejs/node/issues) — це місце для обговорення основного функціонала Node.js та повідомлення про проблеми. +- Репозиторій GitHub [`nodejs/help`](https://github.com/nodejs/help/issues) — це офіційне місце, де можна запитувати про Node.js. - [Офіційний Discord-сервер Node.js](/discord) — це місце для спілкування з іншими розробниками Node.js та отримання офіційних новин проєкту Node.js. -- [Список issue'ів на 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. -- Офіційний Twitter Node.js: [nodejs](https://twitter.com/nodejs). -- [Календар проєкту Node.js](https://nodejs.org/calendar) з усіма публічними командними зустрічами. +- [Календар проєкту](https://nodejs.org/calendar) Node.js з усіма публічними командними зустрічами. ## Навчальні матеріали Якщо ви хочете дізнатися більше про Node.js, використовуйте наступні ресурси: -- [Офіційний розділ навчання](https://nodejs.org/en/learn/) вебсайту Node.js. -- [Офіційна документація з API](https://nodejs.org/api/). +- [Офіційні навчальні матеріали](https://nodejs.org/en/learn/) Node.js. +- [Офіційна документація з API](https://nodejs.org/api/) Node.js. - [NodeSchool.io](https://nodeschool.io/) навчить вас концепцій Node.js за допомогою інтерактивних ігор у командному рядку. -- [Тег Node.js у Stack Overflow](https://stackoverflow.com/questions/tagged/node.js) щодня збирає нову інформацію. -- [Тег Node.js на DEV Community](https://dev.to/t/node) — це місце, де можна ділитися проєктами, статтями та посібниками з Node.js, а також почати обговорення та просити відгуки до тем, пов'язаних із Node.js. До участі запрошуються розробники всіх рівнів. -- [Спільнота Node.js у Reddit](https://www.reddit.com/r/node) — це місце, де можна ділитися проєктами, статтями та посібниками, а також починати обговорення та просити відгуки на тему Node.js. Запрошуються розробники всіх рівнів. +- [Тег Node.js у Stack Overflow](https://stackoverflow.com/questions/tagged/node.js) містить велику кількість гілок із корисними ресурсами. +- [Тег Node.js у DEV Community](https://dev.to/t/node) містить статті та вміст, які стосуються Node.js. ## Неофіційні платформи -Якщо вас цікавлять менш формальні місця для обговорення Node.js, ви можете відвідати наступні платформи. -Пам'ятайте: вони не є офіційно схваленими проєктом Node.js. Також дотримуйтеся їхніх правил та кодексів поведінки. +Якщо ви шукаєте вільніші місця для обговорень Node.js, то тут можна знайти кілька неофіційних місць. +Зазначте, що проєкт Node.js не схвалює їх офіційно. Дотримуйтеся їхніх правил та кодексів поведінки. - [Node Slackers](https://www.nodeslackers.com/) — це спільнота Slack із фокусом на Node.js. - [OpenJSF Slack](https://slack-invite.openjsf.org/) — це робочий простір Slack для OpenJS Foundation. Там є кілька каналів, які стосуються Node.js. _(канали з префіксом `#nodejs-` стосуються проєкту)_ diff --git a/packages/i18n/locales/uk.json b/packages/i18n/locales/uk.json index 5315e3fd9059c..c6e1d1ce2b21a 100644 --- a/packages/i18n/locales/uk.json +++ b/packages/i18n/locales/uk.json @@ -119,7 +119,8 @@ "testRunner": "Виконавець тестів", "introduction": "Що таке виконавець тестів у Node.js?", "usingTestRunner": "Використання виконавця тестів у Node.js", - "mocking": "Мокінг у тестах" + "mocking": "Мокінг у тестах", + "collectingCodeCoverage": "Отримання покриття коду в Node.js" } } }, @@ -287,6 +288,7 @@ "choco": "Chocolatey — це менеджер пакетів для Windows.", "devbox": "Devbox створює ізольовані та відтворювані середовища розробки.", "docker": "Docker — це платформа контейнеризації.", + "n": "«n» — це кросплатформний менеджер версій Node.js.", "volta": "«Volta» — це кросплатформний менеджер версій Node.js." } } diff --git a/packages/i18n/locales/zh-cn.json b/packages/i18n/locales/zh-cn.json index a2d6a2e890ddf..663e85e86e480 100644 --- a/packages/i18n/locales/zh-cn.json +++ b/packages/i18n/locales/zh-cn.json @@ -5,11 +5,15 @@ "links": { "trademarkPolicy": "商标政策", "privacyPolicy": "隐私政策", + "versionSupport": "版本支持", "codeOfConduct": "行为准则", "security": "安全政策" } }, "navBar": { + "controls": { + "toggle": "切换导航菜单" + }, "links": { "about": "关于", "download": "下载", @@ -18,7 +22,8 @@ "learn": "学习", "security": "安全", "certification": "认证", - "blog": "博客" + "blog": "博客", + "contribute": "贡献" } } }, @@ -37,6 +42,8 @@ "nodejsWithWebassembly": "使用WebAssembly的Node.js", "debugging": "调试 Node.js", "profiling": "分析 Node.js 应用程序", + "fetch": "使用 Node.js 获取数据", + "websocket": "使用 Node.js 的 WebSocket 客户端", "securityBestPractices": "安全最佳实践" } }, @@ -46,7 +53,8 @@ "introduction": "TypeScript 简介", "transpile": "使用转译技术运行 TypeScript 代码", "run": "使用运行程序运行 TypeScript", - "runNatively": "以原生方式运行 TypeScript" + "runNatively": "以原生方式运行 TypeScript", + "publishingTSPackage": "发布一个 TypeScript 包" } }, "asynchronousWork": { @@ -88,9 +96,11 @@ "modules": { "links": { "modules": "模块", + "publishingAPackage": "发布包", "publishingNodeApiModules": "如何发布一个 Node-API 包", "anatomyOfAnHttpTransaction": "HTTP 事务剖析", "abiStability": "ABI 稳定性", + "howToUseStreams": "如何使用流", "backpressuringInStreams": "流处理中的反压机制" } }, @@ -109,7 +119,8 @@ "testRunner": "测试运行程序", "introduction": "了解 Node.js 测试运行程序", "usingTestRunner": "使用 Node.js 测试运行程序", - "mocking": "在测试中进行模拟" + "mocking": "在测试中进行模拟", + "collectingCodeCoverage": "在 Node.js 中收集代码覆盖率" } } }, @@ -133,32 +144,28 @@ } } }, - "downloadList": { - "links": { - "previousReleases": "Node.js 版本", - "packageManager": "使用包管理器安装 Node.js", - "shaSums": { - "title": "发布文件的签名SHASUMS", - "howToVerify": " (如何验证) " - }, - "allDownloads": "所有下载选项", - "nightlyReleases": "每日构建", - "unofficialBuilds": "非官方构建", - "buildingFromSource": "在支持的平台上从源代码构建 Node.js", - "installingOnLinux": "通过二进制文件安装 Node.js", - "installingOnWsl": "在适用于 Linux 的 Windows 子系统(WSL)上安装 Node. js" - } - }, "downloadReleasesTable": { - "changelog": "更新日志", - "releases": "发行版", - "docs": "文档" + "version": "Node.js", + "nApiVersion": "N-API", + "npmVersion": "npm", + "codename": "代号", + "releaseDate": "发布日期", + "actions": { + "changelog": "更新日志", + "releases": "发行版", + "docs": "文档" + } }, "pagination": { "next": "下一页", "previous": "上一页" }, "common": { + "alertBox": { + "info": "提示", + "warning": "警告", + "danger": "危险" + }, "breadcrumbs": { "navigateToHome": "导航到首页" }, @@ -188,11 +195,6 @@ "label": "切换深色模式" } }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "暂无即将开始的活动" - } - }, "metabar": { "lastUpdated": "最后更新", "readingTime": "阅读时间", @@ -204,32 +206,9 @@ "viewAs": "查看为", "tableOfContents": "目录" }, - "downloads": { - "changelogModal": { - "startContributing": "开始贡献" - } - }, "search": { "searchBox": { "placeholder": "请开始输入..." - }, - "seeAll": { - "text": "查看所有 {count} 个结果" - }, - "searchError": { - "text": "分享时出现错误。请稍后重试。" - }, - "poweredBy": { - "text": "Powered by" - }, - "noResults": { - "text": "未找到关于 \"{query}\" 的结果。" - }, - "emptyState": { - "text": "在此处搜索..." - }, - "searchPage": { - "title": "正在搜索: {query}" } }, "blog": { @@ -280,49 +259,40 @@ "backToHome": "回到首页" }, "download": { - "selectCategory": "分类", - "categories": { - "prebuilt-installer": "预构建安装程序", - "prebuilt-binaries": "预构建二进制文件", - "package-manager": "包管理器", - "source-code": "源代码" - }, "buttons": { - "prebuilt": "下载 Node.js {version}", - "source": "下载 Node.js {version} 源代码" + "installer": "{os} 安装程序(.{extension})", + "binary": "独立文件(.{extension})" }, "dropdown": { - "bitness": "位", + "platform": "平台", "os": "操作系统", "version": "版本", - "platform": "平台" + "installMethod": "选择安装方法", + "packageManager": "包管理器", + "unknown": "未知", + "platformGroups": { + "official": "推荐(官方)", + "unofficial": "社区(非官方)" + } }, "codeBox": { - "fnmEnvSetup": "配置 fnm 环境", - "systemManagerWarning": "不是一个 Node.js 包管理器。请确保您已安装好 {packageManager}。", - "communityWarning": "包管理器与它们的安装脚本不由 Node.js 项目维护。", - "communityWarningReport": "如果您遇到问题,请联系包管理器的维护者。", - "installsNvm": "安装 nvm (Node 版本管理器)", - "downloadAndInstallNodejsRestartTerminal": "下载并安装 Node.js(可能需要重启终端)", - "verifiesRightNodejsVersion": "验证环境中是否存在正确的 Node.js 版本", - "verifiesRightNpmVersion": "验证环境中是否存在正确的 npm 版本", - "shouldPrint": "应该打印 `{version}`", - "installsFnm": "安装 fnm (快速 Node 管理器)", - "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" + "unsupportedVersionWarning": "该版本已停止维护。请使用当前支持的版本。<link>了解 EOL.</link>", + "communityPlatformInfo": "涉及社区软件的安装方法由维护该软件的团队提供支持。", + "externalSupportInfo": "如果遇到任何问题,请访问 <link>{platform}的网站</link>", + "noScriptDetected": "本页面需要 JavaScript。您可以直接访问<link>发布页面</link>在无需 JavaScript 的条件下下载 Node.js。", + "platformInfo": { + "default": "Node.js 项目不维护 {platform} 及其安装脚本。", + "nvm": "\"nvm\" 是一个跨平台的 Node.js 版本管理器。", + "fnm": "\"fnm\" 是一个跨平台的 Node.js 版本管理器。", + "brew": "Homebrew 是一款适用于 macOS 和 Linux 的软件包管理器。", + "choco": "Chocolatey 是一款 Windows 软件包管理器。", + "devbox": "Devbox 可创建隔离、可重现的开发环境。", + "docker": "Docker 是一个容器化平台。", + "n": "\"n\" 是一个跨平台的 Node.js 版本管理器。", + "volta": "\"Volta\" 是一个跨平台的 Node.js 版本管理器。" + } } - } + }, + "logo": "Node.js 徽标" } } From 47d583b69909244fb0f33c9ef60feaf0dc191c0d Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 15 Apr 2025 16:20:38 -0400 Subject: [PATCH 0401/1385] fix(download): Devbox is not supported on Windows (#7650) Signed-off-by: Aviv Keller <me@aviv.sh> --- apps/site/util/downloadUtils.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index 3b5fe5b3dee9c..f95e2a626e210 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -189,7 +189,7 @@ export const INSTALL_METHODS: Array< { label: InstallationMethodLabel.DEVBOX, value: 'DEVBOX', - compatibility: { os: ['WIN', 'MAC', 'LINUX'] }, + compatibility: { os: ['MAC', 'LINUX'] }, iconImage: <InstallMethodIcons.Devbox width={16} height={16} />, url: 'https://jetify.com/devbox/', info: 'layouts.download.codeBox.platformInfo.devbox', From d9c0508b7ab23d47c380f08ce8282a1010bd8991 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 15 Apr 2025 20:31:18 -0400 Subject: [PATCH 0402/1385] fix(rss): add timestamp to guid (#7648) * fix(rss): add timestamp to guid * 1744662623000 * correct timestamp --- .../__tests__/websiteFeeds.test.mjs | 6 ++-- .../next-data/generators/websiteFeeds.mjs | 28 ++++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs b/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs index c3d5e1feaadc9..c118808f12bb5 100644 --- a/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs +++ b/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs @@ -26,7 +26,7 @@ describe('generateWebsiteFeeds', () => { slug: '/post-1', title: 'Post 1', author: 'Author 1', - date: '2024-02-18', + date: '2025-04-18', categories: ['all'], }, ], @@ -36,6 +36,7 @@ describe('generateWebsiteFeeds', () => { expect(result.size).toBe(3); const blogFeed = result.get('blog.xml'); + const expectedDate = new Date('2025-04-18'); expect(blogFeed.options.id).toBe('blog.xml'); expect(blogFeed.options.title).toBe('Node.js Blog'); @@ -45,9 +46,10 @@ describe('generateWebsiteFeeds', () => { expect(blogFeed.items.length).toBe(1); const feedItem = blogFeed.items[0]; expect(feedItem.id).toBe('/post-1'); + expect(feedItem.guid).toBe(`/post-1?${expectedDate.getTime()}`); expect(feedItem.title).toBe('Post 1'); expect(feedItem.author).toBe('Author 1'); - expect(feedItem.date).toEqual(new Date('2024-02-18')); + expect(feedItem.date).toEqual(expectedDate); expect(feedItem.link).toBe('https://nodejs.org/en/post-1'); }); }); diff --git a/apps/site/next-data/generators/websiteFeeds.mjs b/apps/site/next-data/generators/websiteFeeds.mjs index af4ab72bc3afa..961a2911ec237 100644 --- a/apps/site/next-data/generators/websiteFeeds.mjs +++ b/apps/site/next-data/generators/websiteFeeds.mjs @@ -9,6 +9,11 @@ import { siteConfig } from '../../next.json.mjs'; // with English locale (which is where the website feeds run) const canonicalUrl = `${BASE_URL}${BASE_PATH}/en`; +// This is April 16th, 2025, which is around the time that https://github.com/nodejs/nodejs.org/pull/7648 +// was merged. This ensures that future article edits are properly timestamped, while also preventing the +// currently-published article GUIDs from changing +const guidTimestampStartDate = 1744761600000; + /** * This method generates RSS website feeds based on the current website configuration * and the current blog data that is available @@ -33,13 +38,22 @@ const generateWebsiteFeeds = ({ posts }) => { const blogFeedEntries = posts .filter(post => post.categories.includes(category)) - .map(post => ({ - id: post.slug, - title: post.title, - author: post.author, - date: new Date(post.date), - link: `${canonicalUrl}${post.slug}`, - })); + .map(post => { + const date = new Date(post.date); + const time = date.getTime(); + + return { + id: post.slug, + title: post.title, + author: post.author, + date, + link: `${canonicalUrl}${post.slug}`, + guid: + time > guidTimestampStartDate + ? `${post.slug}?${date.getTime()}` + : post.slug, + }; + }); blogFeedEntries.forEach(entry => feed.addItem(entry)); From 162cd2668497c5b245241bd9edddc98d4e3f1f03 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 17 Apr 2025 13:52:23 -0400 Subject: [PATCH 0403/1385] chore(test): migrate from Jest to `node:test` (#7623) * chore(test): migrate from Jest to `node:test` * add missing `,` * document custom loader * [tmp, verify storybook] * Revert "[tmp, verify storybook]" This reverts commit ea2b8b14326ad4f984d1f5b92370d401b3ea0e9b. * Apply suggestions from code review Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Aviv Keller <me@aviv.sh> * Apply suggestions from code review --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Caner Akdas <canerakdas@gmail.com> --- .github/dependabot.yml | 7 +- .github/workflows/chromatic.yml | 89 + .github/workflows/lint-and-tests.yml | 113 +- .gitignore | 5 +- .prettierignore | 5 +- COLLABORATOR_GUIDE.md | 6 +- CONTRIBUTING.md | 2 +- DEPENDENCY_PINNING.md | 4 +- apps/site/.stylelintignore | 5 +- .../{index.test.mjs => index.test.jsx} | 11 +- .../{index.test.mjs => index.test.jsx} | 34 +- .../components/__mocks__/github-slugger.mjs | 9 - apps/site/components/__mocks__/next-intl.mjs | 31 - ...ext.test.mjs => useClientContext.test.jsx} | 5 +- .../__tests__/useCopyToClipboard.test.jsx | 43 + .../__tests__/useCopyToClipboard.test.mjs | 64 - .../__tests__/useDetectOS.test.mjs | 11 +- .../__tests__/useMediaQuery.test.mjs | 27 +- ...tion.test.mjs => useNotification.test.jsx} | 7 +- apps/site/jest.config.mjs | 22 - apps/site/jest.setup.mjs | 3 - .../generators/__tests__/releaseData.test.mjs | 96 +- .../__tests__/websiteFeeds.test.mjs | 62 +- apps/site/package.json | 13 +- ...vider.test.mjs => matterProvider.test.jsx} | 9 +- ...t.mjs => navigationStateProvider.test.jsx} | 7 +- ...test.mjs => notificationProvider.test.jsx} | 14 +- ...ider.test.mjs => releaseProvider.test.jsx} | 7 +- .../__tests__/themeProvider.test.jsx | 40 + .../__tests__/themeProvider.test.mjs | 30 - .../__tests__/releaseReducer.test.mjs | 63 +- .../lighthouse/__tests__/index.test.mjs | 41 +- apps/site/tests/loader.mjs | 37 + apps/site/tests/mocks/next-intl.jsx | 16 + .../__mocks__ => tests/mocks}/next-router.mjs | 0 apps/site/tests/setup.mjs | 5 + apps/site/turbo.json | 3 +- .../__tests__/assignClientContext.test.mjs | 25 +- apps/site/util/__tests__/authorUtils.test.mjs | 94 +- apps/site/util/__tests__/blogUtils.test.mjs | 13 +- apps/site/util/__tests__/dateUtils.test.mjs | 20 +- apps/site/util/__tests__/debounce.test.mjs | 35 +- apps/site/util/__tests__/deepMerge.test.mjs | 7 +- apps/site/util/__tests__/detectOS.test.mjs | 24 +- .../util/__tests__/downloadUtils.test.mjs | 21 +- .../__tests__/getHighEntropyValues.test.mjs | 22 +- .../__tests__/getLanguageDisplayName.test.mjs | 33 +- .../util/__tests__/getNodeApiLink.test.mjs | 15 +- .../__tests__/getNodeDownloadUrl.test.mjs | 15 +- .../util/__tests__/getUserPlatform.test.mjs | 9 +- apps/site/util/__tests__/gitHubUtils.test.mjs | 33 +- apps/site/util/__tests__/hexToRGBA.test.mjs | 11 +- apps/site/util/__tests__/imageUtils.test.mjs | 10 +- apps/site/util/__tests__/stringUtils.test.mjs | 47 +- eslint.config.js | 2 +- package-lock.json | 18927 ++++++---------- package.json | 3 + .../{index.test.mjs => index.test.jsx} | 7 +- .../BaseActiveLink/__tests__/index.test.jsx | 52 + .../BaseActiveLink/__tests__/index.test.mjs | 41 - .../{index.test.mjs => index.test.jsx} | 15 +- .../{index.test.mjs => index.test.jsx} | 126 +- .../{index.test.mjs => index.test.jsx} | 28 +- .../{index.test.mjs => index.test.jsx} | 11 +- .../{index.test.mjs => index.test.jsx} | 7 +- .../{index.test.mjs => index.test.jsx} | 9 +- packages/ui-components/__mocks__/styleMock.js | 1 - packages/ui-components/jest.config.mjs | 30 - packages/ui-components/package.json | 13 +- .../stylelint/__tests__/index.test.mjs | 27 +- packages/ui-components/turbo.json | 3 +- tests/loader.mjs | 46 + tests/mocks/css.mjs | 1 + tests/setup.mjs | 10 + tests/utilities.mjs | 20 + 75 files changed, 8501 insertions(+), 12258 deletions(-) create mode 100644 .github/workflows/chromatic.yml rename apps/site/components/Blog/BlogHeader/__tests__/{index.test.mjs => index.test.jsx} (69%) rename apps/site/components/Blog/BlogPostCard/__tests__/{index.test.mjs => index.test.jsx} (74%) delete mode 100644 apps/site/components/__mocks__/github-slugger.mjs delete mode 100644 apps/site/components/__mocks__/next-intl.mjs rename apps/site/hooks/react-client/__tests__/{useClientContext.test.mjs => useClientContext.test.jsx} (83%) create mode 100644 apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.jsx delete mode 100644 apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.mjs rename apps/site/hooks/react-client/__tests__/{useNotification.test.mjs => useNotification.test.jsx} (89%) delete mode 100644 apps/site/jest.config.mjs delete mode 100644 apps/site/jest.setup.mjs rename apps/site/providers/__tests__/{matterProvider.test.mjs => matterProvider.test.jsx} (71%) rename apps/site/providers/__tests__/{navigationStateProvider.test.mjs => navigationStateProvider.test.jsx} (78%) rename apps/site/providers/__tests__/{notificationProvider.test.mjs => notificationProvider.test.jsx} (77%) rename apps/site/providers/__tests__/{releaseProvider.test.mjs => releaseProvider.test.jsx} (87%) create mode 100644 apps/site/providers/__tests__/themeProvider.test.jsx delete mode 100644 apps/site/providers/__tests__/themeProvider.test.mjs create mode 100644 apps/site/tests/loader.mjs create mode 100644 apps/site/tests/mocks/next-intl.jsx rename apps/site/{components/__mocks__ => tests/mocks}/next-router.mjs (100%) create mode 100644 apps/site/tests/setup.mjs rename packages/ui-components/Common/AvatarGroup/__tests__/{index.test.mjs => index.test.jsx} (86%) create mode 100644 packages/ui-components/Common/BaseActiveLink/__tests__/index.test.jsx delete mode 100644 packages/ui-components/Common/BaseActiveLink/__tests__/index.test.mjs rename packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/{index.test.mjs => index.test.jsx} (68%) rename packages/ui-components/Common/BasePagination/__tests__/{index.test.mjs => index.test.jsx} (61%) rename packages/ui-components/Common/Select/__tests__/{index.test.mjs => index.test.jsx} (76%) rename packages/ui-components/Common/Tabs/__tests__/{index.test.mjs => index.test.jsx} (77%) rename packages/ui-components/Common/ThemeToggle/__tests__/{index.test.mjs => index.test.jsx} (79%) rename packages/ui-components/Containers/MetaBar/__tests__/{index.test.mjs => index.test.jsx} (87%) delete mode 100644 packages/ui-components/__mocks__/styleMock.js delete mode 100644 packages/ui-components/jest.config.mjs create mode 100644 tests/loader.mjs create mode 100644 tests/mocks/css.mjs create mode 100644 tests/setup.mjs create mode 100644 tests/utilities.mjs diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 66a76c9bbbd01..85740a089f7da 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -39,9 +39,10 @@ updates: patterns: - '@testing-library/*' - '@types/testing-library*' - - '@types/jest' - - 'jest' - - 'jest-*' + - 'tsx' + - '@reporters/github' + - 'jsdom' + - 'global-jsdom' next-js: patterns: - 'next' diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml new file mode 100644 index 0000000000000..8ae41c5fdbb4b --- /dev/null +++ b/.github/workflows/chromatic.yml @@ -0,0 +1,89 @@ +# Security Notes +# Only selected Actions are allowed within this repository. Please refer to (https://github.com/nodejs/nodejs.org/settings/actions) +# for the full list of available actions. If you want to add a new one, please reach out a maintainer with Admin permissions. +# REVIEWERS, please always double-check security practices before merging a PR that contains Workflow changes!! +# AUTHORS, please only use actions with explicit SHA references, and avoid using `@master` or `@main` references or `@version` tags. + +name: Chromatic + +on: + push: + branches: + - main + pull_request_target: + branches: + - main + types: + - labeled + merge_group: + +defaults: + run: + # This ensures that the working directory is the root of the repository + working-directory: ./ + +permissions: + contents: read + actions: read + +env: + # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force + TURBO_FORCE: true + +jobs: + chromatic: + # We only need to run Storybook Builds and Storybook Visual Regression Tests within Pull Requests that actually + # introduce changes to the Storybook. Hence, we skip running these on Crowdin PRs and Dependabot PRs + # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 + if: | + github.event_name == 'push' || + ( + github.event_name == 'pull_request_target' && + startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && + github.event.pull_request.head.ref != 'chore/crowdin' + ) + + name: Tests + runs-on: ubuntu-latest + + environment: + name: Storybook + url: ${{ steps.chromatic-deploy.outputs.storybookUrl }} + + steps: + - name: Harden Runner + uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + 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 }} + # The Chromatic (@chromaui/action) Action requires a full history of the current branch in order to be able to compare + # previous changes and previous commits and determine which Storybooks should be tested against and what should be built + fetch-depth: 0 + + - name: Set up Node.js + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.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 --userconfig=/dev/null + + - name: Start Visual Regression Tests (Chromatic) + # This assigns the Environment Deployment for Storybook + id: chromatic-deploy + uses: chromaui/action@c93e0bc3a63aa176e14a75b61a31847cbfdd341c + with: + workingDir: packages/ui-components + buildScriptName: storybook:build + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + exitOnceUploaded: true + onlyChanged: true diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index adeadd7fc6f88..c724857929c94 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -1,32 +1,36 @@ # Security Notes # Only selected Actions are allowed within this repository. Please refer to (https://github.com/nodejs/nodejs.org/settings/actions) # for the full list of available actions. If you want to add a new one, please reach out a maintainer with Admin permissions. -# REVIEWERS, please always double-check security practices before merging a PR that contains Workflow changes!! +# REVIEWERS, please always double-check security practices before merging a PR that contains workflow changes!! # AUTHORS, please only use actions with explicit SHA references, and avoid using `@master` or `@main` references or `@version` tags. name: Linting and Tests +# This workflow should run either on `merge_group`, `pull_request`, or `push` events +# since we want to run lint checks against any changes on pull requests, or the final patch on merge groups +# or if direct pushes happen to main (or when changes in general land on the `main` (default) branch) +# Note that the reason why we run this on pushes against `main` is that on rare cases, maintainers might do direct pushes against `main` + on: push: branches: - main - pull_request_target: + pull_request: branches: - main - types: - - labeled merge_group: -defaults: - run: - # This ensures that the working directory is the root of the repository - working-directory: ./ - +# The permissions specified below apply to workflows triggered by `merge_group`, `push`, and `pull_request` events that originate from the same repository (non-fork). +# However, workflows triggered by `pull_request` events from forked repositories are treated differently for security reasons: +# - These workflows **do not** have access to any secrets configured in the repository. +# - They are also **not granted any permissions** to perform actions on the base repository. +# +# This is a deliberate security restriction designed to prevent potential abuse through malicious pull requests from forks. +# For a deeper explanation and best practices for securing your GitHub Actions workflows, particularly against so-called "pwn requests", +# refer to https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/ permissions: contents: read actions: read - # This permission is required by `MishaKav/jest-coverage-comment` - pull-requests: write env: # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force @@ -34,16 +38,6 @@ env: jobs: lint: - # This Job should run either on `merge_groups` or `push` events - # or `pull_request_target` event with a `labeled` action with a label named `github_actions:pull-request` - # since we want to run lint checks against any changes on pull requests, or the final patch on merge groups - # or if direct pushes happen to main (or when changes in general land on the `main` (default) branch) - # Note that the reason why we run this on pushes against `main` is that on rare cases, maintainers might do direct pushes against `main` - if: | - (github.event_name == 'push' || github.event_name == 'merge_group') || - (github.event_name == 'pull_request_target' && - github.event.label.name == 'github_actions:pull-request') - name: Quality checks runs-on: ubuntu-latest @@ -55,9 +49,6 @@ jobs: - 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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 @@ -96,10 +87,8 @@ jobs: # Note: Linting and Prettifying of files on Crowdin PRs is handled by the `translations-pr.yml` Workflow if: | (github.event_name == 'push' || github.event_name == 'merge_group') || - (github.event_name == 'pull_request_target' && - github.event.pull_request.head.ref != 'chore/crowdin') - # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user - run: npx --package=turbo@latest -- turbo lint check-types prettier + (github.event_name == 'pull_request' && github.event.pull_request.head.ref != 'chore/crowdin') + run: npx turbo lint check-types prettier - name: Save Lint Cache # We only want to save caches on `push` events or `pull_request_target` events @@ -109,7 +98,7 @@ jobs: # other Pull Requests and PRs coming from forks if: | github.event_name == 'push' || - (github.event_name == 'pull_request_target' && + (github.event_name == 'pull_request' && startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin') uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 @@ -123,22 +112,9 @@ jobs: key: cache-lint-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.turbo/cache/**') }} tests: - # This Job should run either on `merge_groups` or `push` events - # or `pull_request_target` event with a `labeled` action with a label named `github_actions:pull-request` - # since we want to run lint checks against any changes on pull requests and on final patches against a pull request. - # We don't need to execute the tests again on pushes against (`main`) as the merge group should already handle that - if: | - (github.event_name == 'push' || github.event_name == 'merge_group') || - (github.event_name == 'pull_request_target' && - github.event.label.name == 'github_actions:pull-request') - name: Tests runs-on: ubuntu-latest - environment: - name: Storybook - url: ${{ steps.chromatic-deploy.outputs.storybookUrl }} - steps: - name: Harden Runner uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 @@ -147,12 +123,6 @@ jobs: - 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 }} - # The Chromatic (@chromaui/action) Action requires a full history of the current branch in order to be able to compare - # previous changes and previous commits and determine which Storybooks should be tested against and what should be built - fetch-depth: 0 - name: Set up Node.js uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 @@ -169,41 +139,16 @@ jobs: - name: Run Unit Tests # We want to run Unit Tests in every circumstance, including Crowdin PRs and Dependabot PRs to ensure # that changes to dependencies or translations don't break the Unit Tests - # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user - run: npx --package=turbo@latest -- turbo test:unit -- --ci --coverage - - - name: Start Visual Regression Tests (Chromatic) - # This assigns the Environment Deployment for Storybook - id: chromatic-deploy - # We only need to run Storybook Builds and Storybook Visual Regression Tests within Pull Requests that actually - # introduce changes to the Storybook. Hence, we skip running these on Crowdin PRs and Dependabot PRs - if: | - github.event_name == 'push' || - (github.event_name == 'pull_request_target' && - startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && - github.event.pull_request.head.ref != 'chore/crowdin') - # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 - uses: chromaui/action@c93e0bc3a63aa176e14a75b61a31847cbfdd341c + run: npm run test:ci + + - name: Upload test coverage to Codecov + if: ${{ !cancelled() }} + uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0 with: - workingDir: packages/ui-components - buildScriptName: storybook:build - projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} - exitOnceUploaded: true - onlyChanged: true - - - name: Jest Coverage Comment - # We don't need to post the Jest Coverage comment on Crowdin PRs and Dependabot PRs - # as in general they introduce no changes to the Unit Tests and the Codebase - # We reuse the checks from the Chromatic Deploy step as they're the same conditions - if: steps.chromatic-deploy.outcome == 'success' - # This comments the current Jest Coverage Report containing JUnit XML reports - # and a Code Coverage Summary - uses: MishaKav/jest-coverage-comment@d74238813c33e6ea20530ff91b5ea37953d11c91 # v1.0.27 + files: ./apps/site/lcov.info,./packages/ui-components/lcov.info + + - name: Upload test results to Codecov + if: ${{ !cancelled() }} + uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0 with: - title: 'Unit Test Coverage Report' - multiple-junitxml-files: | - @node-core/ui-components, ./packages/ui-components/junit.xml - @nodejs/website, ./apps/site/junit.xml - multiple-files: | - @node-core/ui-components, ./packages/ui-components/coverage/coverage-summary.json - @nodejs/website, ./apps/site/coverage/coverage-summary.json + files: ./apps/site/junit.xml,./packages/ui-components/junit.xml diff --git a/.gitignore b/.gitignore index 313580c9bb716..d7b5579a265c4 100644 --- a/.gitignore +++ b/.gitignore @@ -8,10 +8,9 @@ npm-debug.log .next build -# Jest -coverage -.swc +# Test Runner junit.xml +lcov.info # Storybook storybook-static diff --git a/.prettierignore b/.prettierignore index 401abea059a92..73cf04bb7758b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,10 +10,9 @@ build # Next.js Generated Files public/static/documents -# Jest -coverage -.swc +# Test Runner junit.xml +lcov.info # Storybook storybook-static diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 3e38c73cbd652..f20fc67d7b4dd 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -418,7 +418,7 @@ You can add a PACKAGE_MANAGER the same way as adding an INSTALLATION_METHOD (fro ## Unit Tests and Storybooks Each new feature or bug fix should be accompanied by a unit test (when deemed valuable). -We use [Jest][] as our test runner and [React Testing Library][] for our React unit tests. +We use [`node:test`][] as our test runner and [React Testing Library][] for our React unit tests. We also use [Storybook][] to document our components. Components within `packages/ui-components` should have a storybook story that documents the component's usage. @@ -434,8 +434,6 @@ Unit Tests are fundamental to ensure that code changes do not disrupt the functi - Unit Tests should ensure that a given change's functionality is working as expected. - When creating unit tests for React components, we recommend that the tests cover all the possible states of the component. - We also recommend mocking external dependencies, if unsure about how to mock a particular dependency, raise the question on your Pull Request. - - We recommend using [Jest's Mock Functions](https://jestjs.io/docs/en/mock-functions) for mocking dependencies. - - We recommend using [Jest's Mock Modules](https://jestjs.io/docs/en/manual-mocks) for mocking dependencies unavailable on the Node.js runtime. - Common Providers and Contexts from the lifecycle of our App, such as [`next-intl`][] should not be mocked but given an empty or fake context whenever possible. - We recommend reading previous unit tests from the codebase for inspiration and code guidelines. @@ -643,7 +641,7 @@ A lot of the current structure is due to retro-compatibility, keeping a simple a If you're unfamiliar or curious about something, we recommend opening a Discussion on this GitHub Repository. -[Jest]: https://jestjs.io/ +[`node:test`]: https://nodejs.org/api/test.html [React Testing Library]: https://testing-library.com/docs/react-testing-library/intro/ [Storybook]: https://storybook.js.org/ [`next-intl`]: https://next-intl-docs.vercel.app diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e1f9a00d89e7b..aa326e21a3f4b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -160,7 +160,7 @@ This repository contains several scripts and commands for performing numerous ta - `npx turbo storybook` starts Storybook's local server - `npx turbo storybook:build` builds Storybook as a static web application for publishing - `npm run test` runs all tests locally - - `npx turbo test:unit` runs jest (unit-tests) locally + - `npx turbo test:unit` runs unit-tests locally </details> diff --git a/DEPENDENCY_PINNING.md b/DEPENDENCY_PINNING.md index cde3f59b9041b..256f4278056f2 100644 --- a/DEPENDENCY_PINNING.md +++ b/DEPENDENCY_PINNING.md @@ -12,14 +12,14 @@ The following recommendations are in order when adding a new dependency: - Some non-code dependencies are required for the bootstrap of the repository. They are either used on basic build scripts or Git Hooks. Examples include `husky`, `lint-staged` and others. - A dependency should be a `devDependencies` if it is not invoked anywhere within the codebase. - This applies to runtimes, tooling, utility/dev-only commands, type packages and others -- Sometimes, a dependency should be a `devDependency` even if invoked within the codebase, but only used within a development environment or during a test runner. Examples include `jest`, `storybook` and others. +- Sometimes, a dependency should be a `devDependency` even if invoked within the codebase, but only used within a development environment or during a test runner. Examples include `storybook` and others. - A dependency should be a `peerDependencies` if it is a runtime dependency of the Website, but the Website itself does not install it. Examples include `react`, `react-dom` and others. ### When pinning dependencies When adding dependencies, you should consider if that dependency should be saved as an exact dependency (`--save-exact`) or use either a `^` or `~` version range operator. The following guidelines are in order: -- A dependency, in general, should be pinned to its exact dependency if it's either a tooling or a CLI dependency. Examples include `husky`, `prettier`, `jest` and others. +- A dependency, in general, should be pinned to its exact dependency if it's either a tooling or a CLI dependency. Examples include `husky`, `prettier`, and others. - A dependency should generally use `~` if we're interested in patch updates (such as hot-fixes and bug-fixes) and the package is part of the Development or Testing Environment. (Such as `storybook`, for example) - A dependency should generally use `^` if they're part of the Website Application itself, such as `react`, `next-intl` etc. This is done because we intentionally want to get these dependencies' latest features and bug-fixes. - If we're not interested in getting the latest features and bug fixes, we should consider using `~` instead. diff --git a/apps/site/.stylelintignore b/apps/site/.stylelintignore index a8600c22f4b77..23f68c634514e 100644 --- a/apps/site/.stylelintignore +++ b/apps/site/.stylelintignore @@ -7,8 +7,9 @@ build # Public Folder public -# Jest -coverage +# Test Runner +junit.xml +lcov.info # Old Styles styles/old diff --git a/apps/site/components/Blog/BlogHeader/__tests__/index.test.mjs b/apps/site/components/Blog/BlogHeader/__tests__/index.test.jsx similarity index 69% rename from apps/site/components/Blog/BlogHeader/__tests__/index.test.mjs rename to apps/site/components/Blog/BlogHeader/__tests__/index.test.jsx index ec47f6c1f043b..c895ea729ee81 100644 --- a/apps/site/components/Blog/BlogHeader/__tests__/index.test.mjs +++ b/apps/site/components/Blog/BlogHeader/__tests__/index.test.jsx @@ -1,3 +1,6 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render, screen } from '@testing-library/react'; import BlogHeader from '@/components/Blog/BlogHeader'; @@ -6,24 +9,24 @@ describe('BlogHeader', () => { it('should have correct href when category is all', () => { render(<BlogHeader category="all" />); const link = screen.getByRole('link'); - expect(link).toHaveAttribute('href', '/feed/blog.xml'); + assert.equal(link.getAttribute('href'), '/feed/blog.xml'); }); it('should have correct href when category is release', () => { render(<BlogHeader category="release" />); const link = screen.getByRole('link'); - expect(link).toHaveAttribute('href', '/feed/releases.xml'); + assert.equal(link.getAttribute('href'), '/feed/releases.xml'); }); it('should have correct href when category is vulnerability', () => { render(<BlogHeader category="vulnerability" />); const link = screen.getByRole('link'); - expect(link).toHaveAttribute('href', '/feed/vulnerability.xml'); + assert.equal(link.getAttribute('href'), '/feed/vulnerability.xml'); }); it('should have correct href when category is random', () => { render(<BlogHeader category="random" />); const link = screen.getByRole('link'); - expect(link).toHaveAttribute('href', '/feed/blog.xml'); + assert.equal(link.getAttribute('href'), '/feed/blog.xml'); }); }); diff --git a/apps/site/components/Blog/BlogPostCard/__tests__/index.test.mjs b/apps/site/components/Blog/BlogPostCard/__tests__/index.test.jsx similarity index 74% rename from apps/site/components/Blog/BlogPostCard/__tests__/index.test.mjs rename to apps/site/components/Blog/BlogPostCard/__tests__/index.test.jsx index 3094ba35e9c03..8e0a19f5e650c 100644 --- a/apps/site/components/Blog/BlogPostCard/__tests__/index.test.mjs +++ b/apps/site/components/Blog/BlogPostCard/__tests__/index.test.jsx @@ -1,5 +1,10 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render, screen } from '@testing-library/react'; +import { isVisible } from '../../../../../../tests/utilities.mjs'; + import BlogPostCard from '@/components/Blog/BlogPostCard'; function renderBlogPostCard({ @@ -29,18 +34,18 @@ describe('BlogPostCard', () => { it('Wraps the entire card within an article', () => { renderBlogPostCard({}); - expect(screen.getByRole('article')).toBeVisible(); + assert.ok(isVisible(screen.getByRole('article'))); }); it('Renders the title prop correctly', () => { const { title } = renderBlogPostCard({}); - expect(screen.getAllByText(title).length).toBe(2); + assert.equal(screen.getAllByText(title).length, 2); // title from preview should be ignored as the one from Links // and blog card/post are what matter - expect(screen.getAllByText(title)[0]).toHaveAttribute( - 'aria-hidden', + assert.equal( + screen.getAllByText(title)[0].getAttribute('aria-hidden'), 'true' ); }); @@ -48,21 +53,20 @@ describe('BlogPostCard', () => { it('Renders the description prop correctly', () => { const { description } = renderBlogPostCard({}); - expect(screen.getByText(description)).toBeVisible(); + assert.ok(isVisible(screen.getByText(description))); }); - it.each([ + [ { label: 'layouts.blog.categories.vulnerability', type: 'vulnerability' }, { label: 'layouts.blog.categories.announcements', type: 'announcements' }, { label: 'layouts.blog.categories.release', type: 'release' }, - ])( - 'Renders "%label" text when passing it the type "%type"', - ({ label, type }) => { + ].forEach(({ label, type }) => { + it(`Renders "${label} text when passing it the type "${type}`, () => { renderBlogPostCard({ type }); - expect(screen.getByText(label)).toBeVisible(); - } - ); + assert.ok(isVisible(screen.getByText(label))); + }); + }); it('Renders all passed authors fullName(s), comma-separated', () => { const authors = ['Jane Doe', 'John Doe']; @@ -77,7 +81,7 @@ describe('BlogPostCard', () => { return `${prev}, ${curr}`; }, ''); - expect(screen.getByText(fullNames)).toBeVisible(); + assert.ok(isVisible(screen.getByText(fullNames))); }); it('Renders all passed authors fullName(s), comma-separated', () => { @@ -93,7 +97,7 @@ describe('BlogPostCard', () => { return `${prev}, ${curr}`; }, ''); - expect(screen.getByText(fullNames)).toBeVisible(); + assert.ok(isVisible(screen.getByText(fullNames))); }); it('Renders date prop in short format', () => { @@ -107,7 +111,7 @@ describe('BlogPostCard', () => { year: 'numeric', }); - expect(screen.getByText(dateTimeFormat.format(date))).toBeVisible(); + assert.ok(isVisible(screen.getByText(dateTimeFormat.format(date)))); }); }); }); diff --git a/apps/site/components/__mocks__/github-slugger.mjs b/apps/site/components/__mocks__/github-slugger.mjs deleted file mode 100644 index aefab248aea3b..0000000000000 --- a/apps/site/components/__mocks__/github-slugger.mjs +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -class GitHubSlugger { - slug() { - return 'mock-slug'; - } -} - -export default GitHubSlugger; diff --git a/apps/site/components/__mocks__/next-intl.mjs b/apps/site/components/__mocks__/next-intl.mjs deleted file mode 100644 index 0a5c0c5b055a5..0000000000000 --- a/apps/site/components/__mocks__/next-intl.mjs +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -export const useTranslations = () => { - const t = key => key; - - t.rich = key => key; - t.markup = key => key; - - return t; -}; - -export const useFormatter = () => { - const formatter = format => new Intl.DateTimeFormat('en-US', format); - - return { - date: (date, format) => formatter(format).format(date), - dateTime: (date, format) => formatter(format).format(date), - }; -}; - -export const NextIntlClientProvider = ({ children }) => children; - -export const createNavigation = () => ({ - Link: props => <a {...props} onClick={e => e.preventDefault()} />, - redirect: () => void null, - usePathname: () => '', - useRouter: () => ({ push: () => void null, replace: () => void null }), -}); - -// eslint-disable-next-line react-hooks/rules-of-hooks -export const getTranslations = () => Promise.resolve(useTranslations()); diff --git a/apps/site/hooks/react-client/__tests__/useClientContext.test.mjs b/apps/site/hooks/react-client/__tests__/useClientContext.test.jsx similarity index 83% rename from apps/site/hooks/react-client/__tests__/useClientContext.test.mjs rename to apps/site/hooks/react-client/__tests__/useClientContext.test.jsx index d51d016d67cb2..8f3eb918996e9 100644 --- a/apps/site/hooks/react-client/__tests__/useClientContext.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useClientContext.test.jsx @@ -1,5 +1,8 @@ import { renderHook } from '@testing-library/react'; +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import useClientContext from '@/hooks/react-client/useClientContext'; import { MatterContext } from '@/providers/matterProvider'; @@ -21,6 +24,6 @@ describe('useClientContext', () => { const { result } = renderHook(() => useClientContext(), { wrapper }); - expect(result.current).toEqual(mockContextValue); + assert.partialDeepStrictEqual(result.current, mockContextValue); }); }); diff --git a/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.jsx b/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.jsx new file mode 100644 index 0000000000000..1a9610c0fded1 --- /dev/null +++ b/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.jsx @@ -0,0 +1,43 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; +import { setTimeout } from 'node:timers/promises'; + +import { render, fireEvent, screen } from '@testing-library/react'; + +import useCopyToClipboard from '@/hooks/react-client/useCopyToClipboard'; + +navigator.clipboard = { writeText: () => {} }; + +await describe('useCopyToClipboard', async () => { + await it('should call clipboard API with `test` once', async t => { + t.mock.method(navigator.clipboard, 'writeText', () => Promise.resolve()); + + const TestComponent = ({ textToCopy }) => { + const [copied, copyText] = useCopyToClipboard(); + + return ( + <button onClick={() => copyText(textToCopy)} type="button"> + {copied ? 'copied' : 'copy'} + </button> + ); + }; + + render(<TestComponent textToCopy="test" />); + + const button = screen.getByRole('button'); + + fireEvent.click(button); + + assert.ok((await screen.findByText(/copied/i)).ownerDocument); + + // TODO(@avivkeller): Once https://github.com/testing-library/react-testing-library/issues/1393 is resolved, we should move to mocking + await setTimeout(3000); + + assert.ok((await screen.findByText(/copy/i)).ownerDocument); + + assert.ok(navigator.clipboard.writeText.mock.callCount(), 1); + assert.deepEqual(navigator.clipboard.writeText.mock.calls[0].arguments, [ + 'test', + ]); + }); +}); diff --git a/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.mjs b/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.mjs deleted file mode 100644 index 9b7b7f62b877f..0000000000000 --- a/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.mjs +++ /dev/null @@ -1,64 +0,0 @@ -import { render, fireEvent, screen, act } from '@testing-library/react'; - -import useCopyToClipboard from '@/hooks/react-client/useCopyToClipboard'; - -const mockWriteText = jest.fn(); -const originalNavigator = { ...window.navigator }; - -describe('useCopyToClipboard', () => { - beforeEach(() => { - jest.useFakeTimers(); - - Object.defineProperty(window, 'navigator', { - value: { - clipboard: { - writeText: mockWriteText, - }, - }, - }); - }); - - afterEach(() => { - Object.defineProperty(window, 'navigator', { - value: originalNavigator, - }); - }); - - it('should call clipboard API with `test` once', async () => { - const navigatorClipboardWriteTextSpy = jest - .fn() - .mockImplementation(() => Promise.resolve()); - - Object.defineProperty(window.navigator, 'clipboard', { - writable: true, - value: { - writeText: navigatorClipboardWriteTextSpy, - }, - }); - - const TestComponent = ({ textToCopy }) => { - const [copied, copyText] = useCopyToClipboard(); - - return ( - <button onClick={() => copyText(textToCopy)} type="button"> - {copied ? 'copied' : 'copy'} - </button> - ); - }; - - render(<TestComponent textToCopy="test" />); - - const button = screen.getByRole('button'); - - await fireEvent.click(button); - - expect(await screen.findByText(/copied/i)).toBeInTheDocument(); - - act(() => jest.advanceTimersByTime(3000)); - - expect(await screen.findByText(/copy/i)).toBeInTheDocument(); - - expect(navigatorClipboardWriteTextSpy).toHaveBeenCalledTimes(1); - expect(navigatorClipboardWriteTextSpy).toHaveBeenCalledWith('test'); - }); -}); diff --git a/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs b/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs index 41e683a44647e..c410bba50d133 100644 --- a/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it, afterEach } from 'node:test'; + import { renderHook, waitFor } from '@testing-library/react'; import useDetectOS from '@/hooks/react-client/useDetectOS'; @@ -23,7 +26,7 @@ describe('useDetectOS', () => { value: { userAgent: windowsUserAgent, userAgentData: { - getHighEntropyValues: jest.fn().mockResolvedValue({ bitness: '64' }), + getHighEntropyValues: () => ({ bitness: '64' }), }, }, writable: true, @@ -32,7 +35,7 @@ describe('useDetectOS', () => { const { result } = renderHook(() => useDetectOS()); await waitFor(() => { - expect(result.current).toStrictEqual({ + assert.deepEqual(result.current, { os: 'WIN', bitness: '64', architecture: 'x86', @@ -49,7 +52,7 @@ describe('useDetectOS', () => { const { result } = renderHook(() => useDetectOS()); await waitFor(() => { - expect(result.current).toStrictEqual({ + assert.deepEqual(result.current, { os: 'WIN', bitness: '64', architecture: 'x86', @@ -66,7 +69,7 @@ describe('useDetectOS', () => { const { result } = renderHook(() => useDetectOS()); await waitFor(() => { - expect(result.current).toStrictEqual({ + assert.deepEqual(result.current, { os: 'MAC', bitness: '32', architecture: 'x86', diff --git a/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs b/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs index afe88261f4bcb..c7b0cf0aca981 100644 --- a/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs @@ -1,11 +1,16 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { renderHook } from '@testing-library/react'; import useMediaQuery from '@/hooks/react-client/useMediaQuery'; +const noop = () => {}; + describe('useMediaQuery', () => { it('should return undefined initially', () => { const { result } = renderHook(() => useMediaQuery('media-query-mock')); - expect(result.current).toBe(false); + assert.equal(result.current, false); }); it('should return true for matched query', () => { @@ -14,13 +19,13 @@ describe('useMediaQuery', () => { value: query => ({ matches: true, media: query, - addEventListener: jest.fn(), - removeEventListener: jest.fn(), + addEventListener: noop, + removeEventListener: noop, }), }); const { result } = renderHook(() => useMediaQuery('media-query-mock')); - expect(result.current).toBe(true); + assert.equal(result.current, true); }); it('should return false for not-matched query', () => { @@ -29,17 +34,17 @@ describe('useMediaQuery', () => { value: query => ({ matches: false, media: query, - addEventListener: jest.fn(), - removeEventListener: jest.fn(), + addEventListener: noop, + removeEventListener: noop, }), }); const { result } = renderHook(() => useMediaQuery('media-query-mock')); - expect(result.current).toBe(false); + assert.equal(result.current, false); }); - it('should subscribe for media changes', () => { - const listenerMock = jest.fn().mockImplementation((_, handler) => { + it('should subscribe for media changes', t => { + const listenerMock = t.mock.fn(noop, (_, handler) => { handler({ matches: false }); }); @@ -49,11 +54,11 @@ describe('useMediaQuery', () => { matches: false, media: query, addEventListener: listenerMock, - removeEventListener: jest.fn(), + removeEventListener: noop, }), }); renderHook(() => useMediaQuery('media-query-mock')); - expect(listenerMock).toHaveBeenCalledTimes(1); + assert.equal(listenerMock.mock.callCount(), 1); }); }); diff --git a/apps/site/hooks/react-client/__tests__/useNotification.test.mjs b/apps/site/hooks/react-client/__tests__/useNotification.test.jsx similarity index 89% rename from apps/site/hooks/react-client/__tests__/useNotification.test.mjs rename to apps/site/hooks/react-client/__tests__/useNotification.test.jsx index 92a26bf03bc0f..3748584eff189 100644 --- a/apps/site/hooks/react-client/__tests__/useNotification.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useNotification.test.jsx @@ -1,5 +1,8 @@ import { render } from '@testing-library/react'; +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import useNotification from '@/hooks/react-client/useNotification'; import { NotificationProvider } from '@/providers/notificationProvider'; @@ -24,7 +27,7 @@ describe('useNotification', () => { // Assert const result = getByText('Dispatch available'); - expect(result).toBeInTheDocument(); + assert.ok(result.ownerDocument); }); it('should return null outside NotificationProvider', () => { @@ -46,6 +49,6 @@ describe('useNotification', () => { return element.textContent === 'Dispatch unavailable'; }); - expect(result).toBeNull(); + assert.equal(result, null); }); }); diff --git a/apps/site/jest.config.mjs b/apps/site/jest.config.mjs deleted file mode 100644 index 68b9b84b76716..0000000000000 --- a/apps/site/jest.config.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import nextJest from 'next/jest.js'; - -const createJestConfig = nextJest({ dir: './' }); - -/** @type {import('jest').Config} */ -const customJestConfig = { - setupFilesAfterEnv: ['<rootDir>/jest.setup.mjs'], - moduleDirectories: ['node_modules', '<rootDir>/'], - testEnvironment: 'jest-environment-jsdom', - testMatch: ['**/__tests__/*.test.mjs'], - coverageReporters: ['json', 'json-summary'], - reporters: ['default', 'jest-junit'], - moduleNameMapper: { - 'next/router': '<rootDir>/components/__mocks__/next-router.mjs', - 'next-intl': '<rootDir>/components/__mocks__/next-intl.mjs', - 'next-intl/server': '<rootDir>/components/__mocks__/next-intl.mjs', - 'github-slugger': '<rootDir>/components/__mocks__/github-slugger.mjs', - '^@/(.*)$': '<rootDir>/$1', - }, -}; - -export default createJestConfig(customJestConfig); diff --git a/apps/site/jest.setup.mjs b/apps/site/jest.setup.mjs deleted file mode 100644 index c9c4273c460e5..0000000000000 --- a/apps/site/jest.setup.mjs +++ /dev/null @@ -1,3 +0,0 @@ -globalThis.IS_REACT_ACT_ENVIRONMENT = true; - -import '@testing-library/jest-dom'; diff --git a/apps/site/next-data/generators/__tests__/releaseData.test.mjs b/apps/site/next-data/generators/__tests__/releaseData.test.mjs index 5c92881e5c7a1..2201969e1f962 100644 --- a/apps/site/next-data/generators/__tests__/releaseData.test.mjs +++ b/apps/site/next-data/generators/__tests__/releaseData.test.mjs @@ -1,62 +1,54 @@ -/** - * Force jest to run this test in a Node.js environment - * 'cause we will have "ReferenceError: TextEncoder is not defined" - * @jest-environment node - */ -import nodevu from '@nodevu/core'; - -import generateReleaseData from '@/next-data/generators/releaseData.mjs'; - -jest.mock('@nodevu/core'); +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; describe('generateReleaseData', () => { - beforeAll(() => { - jest.useFakeTimers(); - jest.setSystemTime(new Date('2024-10-18')); - }); - - afterAll(() => { - jest.useRealTimers(); - }); + it('generates release data with correct status', async t => { + t.mock.timers.enable({ now: new Date('2024-10-18') }); - test('generates release data with correct status', async () => { - const mockNodevuOutput = { - 14: { - releases: { - '14.0.0': { - semver: { major: 14, raw: '14.0.0' }, - dependencies: { npm: '6.14.10', v8: '8.0.276.20' }, - releaseDate: '2021-04-20', - modules: { version: '83' }, - }, - }, - support: { - phases: { - dates: { - start: '2021-10-26', - lts: '2022-10-18', - maintenance: '2023-10-18', - end: '2024-10-18', + t.mock.module('@nodevu/core', { + defaultExport: () => + Promise.resolve({ + 14: { + releases: { + '14.0.0': { + semver: { major: 14, raw: '14.0.0' }, + dependencies: { npm: '6.14.10', v8: '8.0.276.20' }, + releaseDate: '2021-04-20', + modules: { version: '83' }, + }, + }, + support: { + phases: { + dates: { + start: '2021-10-26', + lts: '2022-10-18', + maintenance: '2023-10-18', + end: '2024-10-18', + }, + }, }, }, - }, - }, - }; - nodevu.mockResolvedValue(mockNodevuOutput); + }), + }); + + const { default: generateReleaseData } = await import( + '@/next-data/generators/releaseData.mjs' + ); const result = await generateReleaseData(); - expect(result).toHaveLength(1); - const release = result[0]; - expect(release.major).toBe(14); - expect(release.version).toBe('14.0.0'); - expect(release.versionWithPrefix).toBe('v14.0.0'); - expect(release.codename).toBe(''); - expect(release.isLts).toBe(false); - expect(release.npm).toBe('6.14.10'); - expect(release.v8).toBe('8.0.276.20'); - expect(release.releaseDate).toBe('2021-04-20'); - expect(release.modules).toBe('83'); - expect(release.status).toBe('End-of-life'); + assert.equal(result.length, 1); + assert.partialDeepStrictEqual(result[0], { + major: 14, + version: '14.0.0', + versionWithPrefix: 'v14.0.0', + codename: '', + isLts: false, + npm: '6.14.10', + v8: '8.0.276.20', + releaseDate: '2021-04-20', + modules: '83', + status: 'End-of-life', + }); }); }); diff --git a/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs b/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs index c118808f12bb5..4e7f53413a9c1 100644 --- a/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs +++ b/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs @@ -1,24 +1,14 @@ -import generateWebsiteFeeds from '@/next-data/generators/websiteFeeds'; +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; -describe('generateWebsiteFeeds', () => { - jest.mock('feed'); - jest.mock('../../../next.constants.mjs', () => ({ - BASE_URL: 'https://example.com', - BASE_PATH: '/example', - })); - jest.mock('../../../next.json.mjs', () => ({ - siteConfig: { - rssFeeds: [ - { - category: 'all', - title: 'Node.js Blog', - description: 'Node.js Blog Feed', - file: 'blog.xml', - }, - ], - }, - })); +import generateWebsiteFeeds from '@/next-data/generators/websiteFeeds.mjs'; +import { BASE_URL, BASE_PATH } from '../../../next.constants.mjs'; +import { siteConfig } from '../../../next.json.mjs'; + +const base = `${BASE_URL}${BASE_PATH}/en`; + +describe('generateWebsiteFeeds', () => { it('generates website feeds with correct data', () => { const blogData = { posts: [ @@ -33,23 +23,27 @@ describe('generateWebsiteFeeds', () => { }; const result = generateWebsiteFeeds(blogData); - expect(result.size).toBe(3); + assert.equal(result.size, 3); const blogFeed = result.get('blog.xml'); - const expectedDate = new Date('2025-04-18'); - - expect(blogFeed.options.id).toBe('blog.xml'); - expect(blogFeed.options.title).toBe('Node.js Blog'); - expect(blogFeed.options.language).toBe('en'); - expect(blogFeed.options.link).toBe('https://nodejs.org/en/feed/blog.xml'); + assert.deepEqual(blogFeed.options, { + id: siteConfig.rssFeeds[0].file, + title: siteConfig.rssFeeds[0].title, + language: 'en', + link: `${base}/feed/${siteConfig.rssFeeds[0].file}`, + description: siteConfig.rssFeeds[0].description, + }); - expect(blogFeed.items.length).toBe(1); - const feedItem = blogFeed.items[0]; - expect(feedItem.id).toBe('/post-1'); - expect(feedItem.guid).toBe(`/post-1?${expectedDate.getTime()}`); - expect(feedItem.title).toBe('Post 1'); - expect(feedItem.author).toBe('Author 1'); - expect(feedItem.date).toEqual(expectedDate); - expect(feedItem.link).toBe('https://nodejs.org/en/post-1'); + const date = new Date(blogData.posts[0].date); + assert.deepEqual(blogFeed.items, [ + { + author: blogData.posts[0].author, + id: blogData.posts[0].slug, + title: blogData.posts[0].title, + guid: `${blogData.posts[0].slug}?${date.getTime()}`, + date, + link: `${base}${blogData.posts[0].slug}`, + }, + ]); }); }); diff --git a/apps/site/package.json b/apps/site/package.json index 57651eb5e1e1c..7e2faf5782987 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -16,8 +16,8 @@ "lint": "turbo run lint:md lint:snippets 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", - "test:unit": "cross-env NODE_NO_WARNINGS=1 jest", - "test:unit:watch": "npm run test:unit -- --watch", + "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --experimental-test-module-mocks --enable-source-maps --import=global-jsdom/register --import=tsx --import=tests/setup.mjs --test **/*.test.*", + "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" npm run test:unit", "test": "turbo test:unit" }, "dependencies": { @@ -66,26 +66,23 @@ "devDependencies": { "@eslint/compat": "~1.2.8", "@next/eslint-plugin-next": "15.2.4", - "@testing-library/jest-dom": "~6.6.3", - "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", - "@types/jest": "29.5.14", "@types/semver": "~7.7.0", "eslint-config-next": "15.2.4", "eslint-import-resolver-typescript": "~4.3.1", "eslint-plugin-mdx": "~3.3.1", "eslint-plugin-react": "~7.37.4", "eslint-plugin-react-hooks": "5.2.0", + "global-jsdom": "^26.0.0", "handlebars": "4.7.8", - "jest": "29.7.0", - "jest-environment-jsdom": "29.7.0", - "jest-junit": "16.0.0", + "jsdom": "^26.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", "stylelint": "16.17.0", "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", + "tsx": "^4.19.3", "typescript": "~5.8.2", "typescript-eslint": "~8.29.0", "user-agent-data-types": "0.4.2" diff --git a/apps/site/providers/__tests__/matterProvider.test.mjs b/apps/site/providers/__tests__/matterProvider.test.jsx similarity index 71% rename from apps/site/providers/__tests__/matterProvider.test.mjs rename to apps/site/providers/__tests__/matterProvider.test.jsx index 427a15bfe98b5..a9248f3535231 100644 --- a/apps/site/providers/__tests__/matterProvider.test.mjs +++ b/apps/site/providers/__tests__/matterProvider.test.jsx @@ -1,3 +1,6 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { act, render } from '@testing-library/react'; import { MatterProvider, MatterContext } from '@/providers/matterProvider'; @@ -9,8 +12,6 @@ const mockContext = { readingTime: { text: '', minutes: 0, time: 0, words: 0 }, filename: '', os: 'LOADING', - architecture: expect.any(String), - bitness: expect.any(String), }; describe('MatterProvider', () => { @@ -20,7 +21,9 @@ describe('MatterProvider', () => { <MatterProvider os="LOADING"> <MatterContext.Consumer> {value => { - expect(value).toEqual(mockContext); + assert.partialDeepStrictEqual(value, mockContext); + assert.equal(typeof value.architecture, 'string'); + assert.equal(typeof value.bitness, 'string'); return null; }} </MatterContext.Consumer> diff --git a/apps/site/providers/__tests__/navigationStateProvider.test.mjs b/apps/site/providers/__tests__/navigationStateProvider.test.jsx similarity index 78% rename from apps/site/providers/__tests__/navigationStateProvider.test.mjs rename to apps/site/providers/__tests__/navigationStateProvider.test.jsx index 0d1bcfedecbc9..b91e0615735d4 100644 --- a/apps/site/providers/__tests__/navigationStateProvider.test.mjs +++ b/apps/site/providers/__tests__/navigationStateProvider.test.jsx @@ -1,3 +1,6 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render } from '@testing-library/react'; import { NavigationStateProvider } from '@/providers/navigationStateProvider'; @@ -10,7 +13,7 @@ describe('NavigationStateProvider', () => { </NavigationStateProvider> ); - expect(container).toBeDefined(); + assert.ok(container); }); it('should provide navigation state context', () => { @@ -20,6 +23,6 @@ describe('NavigationStateProvider', () => { </NavigationStateProvider> ); - expect(getByText('Navigation State')).toBeDefined(); + assert.ok(getByText('Navigation State')); }); }); diff --git a/apps/site/providers/__tests__/notificationProvider.test.mjs b/apps/site/providers/__tests__/notificationProvider.test.jsx similarity index 77% rename from apps/site/providers/__tests__/notificationProvider.test.mjs rename to apps/site/providers/__tests__/notificationProvider.test.jsx index db103ac000bb0..98b6bb8a80708 100644 --- a/apps/site/providers/__tests__/notificationProvider.test.mjs +++ b/apps/site/providers/__tests__/notificationProvider.test.jsx @@ -1,3 +1,6 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render, act, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; @@ -6,10 +9,9 @@ import { NotificationDispatch, } from '@/providers/notificationProvider'; -jest.useFakeTimers(); - describe('NotificationProvider', () => { - it('renders children and shows notification with the provided message', async () => { + it('renders children and shows notification with the provided message', async t => { + t.mock.timers.enable(); const testMessage = 'Test Notification'; const testDuration = 3000; @@ -31,9 +33,11 @@ describe('NotificationProvider', () => { act(() => { userEvent.click(getByText('Show Notification')); - jest.advanceTimersByTime(testDuration); + t.mock.timers.tick(3000); }); - await waitFor(() => expect(getByText(testMessage)).toBeInTheDocument()); + t.mock.timers.reset(); + + await waitFor(() => assert.ok(getByText(testMessage).ownerDocument)); }); }); diff --git a/apps/site/providers/__tests__/releaseProvider.test.mjs b/apps/site/providers/__tests__/releaseProvider.test.jsx similarity index 87% rename from apps/site/providers/__tests__/releaseProvider.test.mjs rename to apps/site/providers/__tests__/releaseProvider.test.jsx index 96db4199e8b6c..ed3031bf24f7e 100644 --- a/apps/site/providers/__tests__/releaseProvider.test.mjs +++ b/apps/site/providers/__tests__/releaseProvider.test.jsx @@ -1,3 +1,6 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render } from '@testing-library/react'; import { ReleaseProvider, ReleasesProvider } from '@/providers/releaseProvider'; @@ -16,7 +19,7 @@ describe('ReleaseProvider', () => { </ReleasesProvider> ); - expect(container).toBeDefined(); + assert.ok(container); }); it('should set version from parent provider', () => { @@ -34,6 +37,6 @@ describe('ReleaseProvider', () => { </ReleasesProvider> ); - expect(getByText('Child Provider')).toBeDefined(); + assert.ok(getByText('Child Provider')); }); }); diff --git a/apps/site/providers/__tests__/themeProvider.test.jsx b/apps/site/providers/__tests__/themeProvider.test.jsx new file mode 100644 index 0000000000000..de0b4960ea5cd --- /dev/null +++ b/apps/site/providers/__tests__/themeProvider.test.jsx @@ -0,0 +1,40 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + +import { render } from '@testing-library/react'; + +describe('ThemeProvider', () => { + it('renders NextThemeProvider with the correct props', async t => { + const mockFn = t.mock.fn( + () => {}, + ({ children }) => children + ); + + t.mock.module('next-themes', { + namedExports: { + ThemeProvider: mockFn, + }, + }); + + const { ThemeProvider } = await import('@/providers/themeProvider'); + + const { container } = render( + <ThemeProvider> + <div>Mock Component</div> + </ThemeProvider> + ); + + assert.deepEqual(mockFn.mock.calls[0].arguments, [ + { + attribute: 'data-theme', + defaultTheme: 'system', + enableSystem: true, + storageKey: 'theme', + children: <div>Mock Component</div>, + }, + undefined, + ]); + + assert.ok(container.firstChild.textContent.includes('Mock Component')); + }); +}); diff --git a/apps/site/providers/__tests__/themeProvider.test.mjs b/apps/site/providers/__tests__/themeProvider.test.mjs deleted file mode 100644 index 0f28673ddf978..0000000000000 --- a/apps/site/providers/__tests__/themeProvider.test.mjs +++ /dev/null @@ -1,30 +0,0 @@ -import { render } from '@testing-library/react'; -import { ThemeProvider as NextThemeProvider } from 'next-themes'; - -import { ThemeProvider } from '@/providers/themeProvider'; - -jest.mock('next-themes', () => ({ - ThemeProvider: jest.fn(({ children }) => children), -})); - -describe('ThemeProvider', () => { - it('renders NextThemeProvider with the correct props', () => { - const { container } = render( - <ThemeProvider> - <div>Mock Component</div> - </ThemeProvider> - ); - - expect(NextThemeProvider).toHaveBeenCalledWith( - { - attribute: 'data-theme', - defaultTheme: 'system', - enableSystem: true, - storageKey: 'theme', - children: <div>Mock Component</div>, - }, - undefined - ); - expect(container.firstChild).toHaveTextContent('Mock Component'); - }); -}); diff --git a/apps/site/reducers/__tests__/releaseReducer.test.mjs b/apps/site/reducers/__tests__/releaseReducer.test.mjs index d8688bc9ee874..5b3b78190bba1 100644 --- a/apps/site/reducers/__tests__/releaseReducer.test.mjs +++ b/apps/site/reducers/__tests__/releaseReducer.test.mjs @@ -1,78 +1,91 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import reducer, { releaseState, getActions } from '@/reducers/releaseReducer'; describe('releaseReducer', () => { it('should return the initial state', () => { const initialState = releaseState; const action = { type: 'UNKNOWN_ACTION' }; - expect(reducer(initialState, action)).toEqual(initialState); + assert.deepEqual(reducer(initialState, action), initialState); }); it('should handle SET_VERSION action', () => { const initialState = releaseState; const action = { type: 'SET_VERSION', payload: 'v14.17.0' }; const expectedState = { ...initialState, version: 'v14.17.0' }; - expect(reducer(initialState, action)).toEqual(expectedState); + assert.deepEqual(reducer(initialState, action), expectedState); }); it('should handle SET_OS action', () => { const initialState = releaseState; const action = { type: 'SET_OS', payload: 'Linux' }; const expectedState = { ...initialState, os: 'Linux' }; - expect(reducer(initialState, action)).toEqual(expectedState); + assert.deepEqual(reducer(initialState, action), expectedState); }); it('should handle SET_PLATFORM action', () => { const initialState = releaseState; const action = { type: 'SET_PLATFORM', payload: 'arm64' }; const expectedState = { ...initialState, platform: 'arm64' }; - expect(reducer(initialState, action)).toEqual(expectedState); + assert.deepEqual(reducer(initialState, action), expectedState); }); it('should handle SET_INSTALL_METHOD action', () => { const initialState = releaseState; const action = { type: 'SET_INSTALL_METHOD', payload: 'binary' }; const expectedState = { ...initialState, installMethod: 'binary' }; - expect(reducer(initialState, action)).toEqual(expectedState); + assert.deepEqual(reducer(initialState, action), expectedState); }); it('should handle SET_MANAGER action', () => { const initialState = releaseState; const action = { type: 'SET_MANAGER', payload: 'Yarn' }; const expectedState = { ...initialState, packageManager: 'Yarn' }; - expect(reducer(initialState, action)).toEqual(expectedState); + assert.deepEqual(reducer(initialState, action), expectedState); }); }); describe('getActions', () => { - it('should create actions correctly', () => { - const dispatch = jest.fn(); + it('should create actions correctly', t => { + const dispatch = t.mock.fn(); const actions = getActions(dispatch); actions.setVersion('v14.17.0'); - expect(dispatch).toHaveBeenCalledWith({ - type: 'SET_VERSION', - payload: 'v14.17.0', - }); + assert.deepEqual(dispatch.mock.calls.at(-1).arguments, [ + { + type: 'SET_VERSION', + payload: 'v14.17.0', + }, + ]); actions.setOS('Linux'); - expect(dispatch).toHaveBeenCalledWith({ type: 'SET_OS', payload: 'Linux' }); + assert.deepEqual(dispatch.mock.calls.at(-1).arguments, [ + { type: 'SET_OS', payload: 'Linux' }, + ]); actions.setPlatform('arm64'); - expect(dispatch).toHaveBeenCalledWith({ - type: 'SET_PLATFORM', - payload: 'arm64', - }); + assert.deepEqual(dispatch.mock.calls.at(-1).arguments, [ + { + type: 'SET_PLATFORM', + payload: 'arm64', + }, + ]); actions.setInstallMethod('binary'); - expect(dispatch).toHaveBeenCalledWith({ - type: 'SET_INSTALL_METHOD', - payload: 'binary', - }); + assert.deepEqual(dispatch.mock.calls.at(-1).arguments, [ + { + type: 'SET_INSTALL_METHOD', + payload: 'binary', + }, + ]); actions.setPackageManager('Yarn'); - expect(dispatch).toHaveBeenCalledWith({ - type: 'SET_MANAGER', - payload: 'Yarn', - }); + assert.deepEqual(dispatch.mock.calls.at(-1).arguments, [ + { + type: 'SET_MANAGER', + payload: 'Yarn', + }, + ]); }); }); diff --git a/apps/site/scripts/lighthouse/__tests__/index.test.mjs b/apps/site/scripts/lighthouse/__tests__/index.test.mjs index d472be30490ba..886203871f945 100644 --- a/apps/site/scripts/lighthouse/__tests__/index.test.mjs +++ b/apps/site/scripts/lighthouse/__tests__/index.test.mjs @@ -1,4 +1,15 @@ -import { formatLighthouseResults } from '..'; +import assert from 'node:assert/strict'; +import { describe, it, beforeEach, afterEach } from 'node:test'; + +import { formatLighthouseResults } from '../index.mjs'; + +function checkExpectations({ calls }, expectations) { + expectations.forEach(expectation => { + const args = calls[0].arguments; + assert.equal(args[0], 'comment'); + assert.ok(args[1].includes(expectation)); + }); +} describe('formatLighthouseResults', () => { const MOCK_VERCEL_PREVIEW_URL = `https://some.vercel.preview.url`; @@ -23,8 +34,8 @@ describe('formatLighthouseResults', () => { let mockCore, originalEnv; - beforeEach(() => { - mockCore = { setOutput: jest.fn() }; + beforeEach(t => { + mockCore = { setOutput: t.mock.fn() }; originalEnv = process.env; process.env = { ...process.env, @@ -41,29 +52,15 @@ describe('formatLighthouseResults', () => { it('formats preview urls correctly', () => { formatLighthouseResults({ core: mockCore }); - const expectations = [ - expect.stringContaining(`[/en](${MOCK_VERCEL_PREVIEW_URL}/en)`), - expect.stringContaining( - `[/en/download](${MOCK_VERCEL_PREVIEW_URL}/en/download)` - ), - ]; - - expectations.forEach(expectation => { - expect(mockCore.setOutput).toBeCalledWith('comment', expectation); - }); + checkExpectations(mockCore.setOutput.mock, [ + `[/en](${MOCK_VERCEL_PREVIEW_URL}/en)`, + `[/en/download](${MOCK_VERCEL_PREVIEW_URL}/en/download)`, + ]); }); it('formats stoplight colors correctly', () => { formatLighthouseResults({ core: mockCore }); - const expectations = [ - expect.stringContaining(`🟢 90`), - expect.stringContaining(`🟠 75`), - expect.stringContaining(`🔴 49`), - ]; - - expectations.forEach(expectation => { - expect(mockCore.setOutput).toBeCalledWith('comment', expectation); - }); + checkExpectations(mockCore.setOutput.mock, [`🟢 90`, `🟠 75`, `🔴 49`]); }); }); diff --git a/apps/site/tests/loader.mjs b/apps/site/tests/loader.mjs new file mode 100644 index 0000000000000..ff823c379e7d7 --- /dev/null +++ b/apps/site/tests/loader.mjs @@ -0,0 +1,37 @@ +// Map of module specifier prefixes to their corresponding mock files +const mockEntries = [ + ['next-intl', new URL('mocks/next-intl.jsx', import.meta.url).href], + ['next-router', new URL('mocks/next-intl.jsx', import.meta.url).href], +]; + +/** + * Returns the corresponding mock file for a given module specifier, if matched. + * + * @param {string} specifier - Module name or path being imported. + * @returns {string|null} - File name of the mock module or null if no match. + */ +function getMockFile(specifier) { + const entry = mockEntries.find( + ([prefix]) => specifier === prefix || specifier.startsWith(prefix + '/') + ); + return entry?.[1] ?? null; +} + +/** + * Node.js custom module resolution hook to inject mock modules. + * + * @type {import('node:module').ResolveHook} + */ +export async function resolve(specifier, ctx, nextResolve) { + const mockFile = getMockFile(specifier); + + if (mockFile) { + return { + format: 'module', + url: mockFile, + shortCircuit: true, + }; + } + + return nextResolve(specifier); +} diff --git a/apps/site/tests/mocks/next-intl.jsx b/apps/site/tests/mocks/next-intl.jsx new file mode 100644 index 0000000000000..116c56347ea9c --- /dev/null +++ b/apps/site/tests/mocks/next-intl.jsx @@ -0,0 +1,16 @@ +'use strict'; + +export const useTranslations = () => key => key; + +export const useFormatter = () => { + const formatter = format => new Intl.DateTimeFormat('en-US', format); + + return { + date: (date, format) => formatter(format).format(date), + dateTime: (date, format) => formatter(format).format(date), + }; +}; + +export const createNavigation = () => ({ + Link: props => <a {...props} onClick={e => e.preventDefault()} />, +}); diff --git a/apps/site/components/__mocks__/next-router.mjs b/apps/site/tests/mocks/next-router.mjs similarity index 100% rename from apps/site/components/__mocks__/next-router.mjs rename to apps/site/tests/mocks/next-router.mjs diff --git a/apps/site/tests/setup.mjs b/apps/site/tests/setup.mjs new file mode 100644 index 0000000000000..e95b95c76855b --- /dev/null +++ b/apps/site/tests/setup.mjs @@ -0,0 +1,5 @@ +import { register } from 'node:module'; + +import '../../../tests/setup.mjs'; + +register('./loader.mjs', import.meta.url); diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 4ebfd0d562679..98a1fb32f3bcc 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -129,8 +129,7 @@ "{next-data,scripts,i18n}/**/*.{mjs,json}", "{app,pages}/**/*.{mdx,md}", "*.{md,mdx,json,ts,tsx,mjs,yml}" - ], - "outputs": ["coverage/**", "junit.xml"] + ] } } } diff --git a/apps/site/util/__tests__/assignClientContext.test.mjs b/apps/site/util/__tests__/assignClientContext.test.mjs index 48ba4094f8643..2712f5856381d 100644 --- a/apps/site/util/__tests__/assignClientContext.test.mjs +++ b/apps/site/util/__tests__/assignClientContext.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { assignClientContext } from '@/util/assignClientContext'; const mockContext = { @@ -20,27 +23,27 @@ describe('assignClientContext', () => { it('should assign properties to the client context', () => { const result = assignClientContext(mockContext); - expect(result.frontmatter).toEqual(mockContext.frontmatter); - expect(result.pathname).toEqual(mockContext.pathname); - expect(result.headings).toEqual(mockContext.headings); - expect(result.readingTime).toEqual(mockContext.readingTime); - expect(result.filename).toEqual(mockContext.filename); + assert.deepEqual(result.frontmatter, mockContext.frontmatter); + assert.equal(result.pathname, mockContext.pathname); + assert.deepEqual(result.headings, mockContext.headings); + assert.deepEqual(result.readingTime, mockContext.readingTime); + assert.equal(result.filename, mockContext.filename); - expect(result).toEqual(mockContext); + assert.deepEqual(result, mockContext); }); it('should use default values for missing properties', () => { const result = assignClientContext({}); - expect(result.frontmatter).toEqual({}); - expect(result.pathname).toEqual(''); - expect(result.headings).toEqual([]); - expect(result.readingTime).toEqual({ + assert.deepEqual(result.frontmatter, {}); + assert.equal(result.pathname, ''); + assert.deepEqual(result.headings, []); + assert.deepEqual(result.readingTime, { text: '', minutes: 0, time: 0, words: 0, }); - expect(result.filename).toEqual(''); + assert.equal(result.filename, ''); }); }); diff --git a/apps/site/util/__tests__/authorUtils.test.mjs b/apps/site/util/__tests__/authorUtils.test.mjs index b17d613f260c1..402a3033d6110 100644 --- a/apps/site/util/__tests__/authorUtils.test.mjs +++ b/apps/site/util/__tests__/authorUtils.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { mapAuthorToCardAuthors, getAuthorWithId, @@ -8,49 +11,41 @@ import { describe('mapAuthorToCardAuthors', () => { it('maps authors to card authors with default avatar source', () => { const author = 'John Doe'; - const result = mapAuthorToCardAuthors(author); - - expect(result).toEqual(['John Doe']); + assert.deepEqual(result, ['John Doe']); }); it('handles multiple authors separated by various delimiters', () => { const author = 'Alice, Bob, Charlie, David'; - const result = mapAuthorToCardAuthors(author); - expect(result).toEqual(['Alice', 'Bob', 'Charlie', 'David']); + assert.deepEqual(result, ['Alice', 'Bob', 'Charlie', 'David']); }); describe('when has more than one author', () => { - it.each([ - ['Timothy J Fontaine, John Doe'], - ['Timothy J Fontaine and John Doe'], - ['Timothy J Fontaine;John Doe'], - ['Timothy J Fontaine & John Doe'], - ['Timothy J Fontaine by John Doe'], - ['Timothy J Fontaine prepared by John Doe'], - ['Timothy J Fontaine (@TimothyJFontaine) & John Doe (@JohnDoe)'], - ['Timothy J Fontaine (TimothyJFontaine) & John Doe (JohnDoe)'], - ])('returns the correct card authors', author => { - const result = mapAuthorToCardAuthors(author); - - expect(result).toStrictEqual(['Timothy J Fontaine', 'John Doe']); + [ + 'Timothy J Fontaine, John Doe', + 'Timothy J Fontaine and John Doe', + 'Timothy J Fontaine;John Doe', + 'Timothy J Fontaine & John Doe', + 'Timothy J Fontaine by John Doe', + 'Timothy J Fontaine prepared by John Doe', + 'Timothy J Fontaine (@TimothyJFontaine) & John Doe (@JohnDoe)', + 'Timothy J Fontaine (TimothyJFontaine) & John Doe (JohnDoe)', + ].forEach(authorInput => { + it(`correctly parses: "${authorInput}"`, () => { + const result = mapAuthorToCardAuthors(authorInput); + assert.deepEqual(result, ['Timothy J Fontaine', 'John Doe']); + }); }); - }); - describe('when the author name does not have GitHub username', () => { - it('returns the correct card authors', () => { + it('returns the correct card authors without GitHub usernames', () => { const result = mapAuthorToCardAuthors('John Doe, Jane Doe'); - - expect(result).toStrictEqual(['John Doe', 'Jane Doe']); + assert.deepEqual(result, ['John Doe', 'Jane Doe']); }); - }); - describe('when the author name has GitHub username', () => { - it('returns the correct card authors', () => { + it('returns the correct card authors with GitHub usernames', () => { const result = mapAuthorToCardAuthors('Timothy J Fontaine'); - - expect(result).toStrictEqual(['Timothy J Fontaine']); + assert.deepEqual(result, ['Timothy J Fontaine']); }); }); }); @@ -58,8 +53,7 @@ describe('mapAuthorToCardAuthors', () => { describe('getAuthorWithId', () => { it('should return author details when author is found', () => { const result = getAuthorWithId(['nodejs'], true); - - expect(result).toEqual([ + assert.deepEqual(result, [ { name: 'Node.js Technical Steering Committee', nickname: 'nodejs', @@ -69,13 +63,17 @@ describe('getAuthorWithId', () => { }, ]); }); + + it('returns objects with GitHub avatars', () => { + const result = getAuthorWithId(['someUser'], false); + assert.ok(result[0].image.includes('github')); + }); }); describe('getAuthorWithName', () => { it('should return author details when author is found', () => { const result = getAuthorWithName(['The Node.js Project'], true); - - expect(result).toEqual([ + assert.deepEqual(result, [ { name: 'The Node.js Project', nickname: 'nodejs', @@ -88,34 +86,30 @@ describe('getAuthorWithName', () => { it('should return fallback details when author is not found', () => { const result = getAuthorWithName(['Caner Akdas'], true); - - expect(result).toEqual([ + assert.deepEqual(result, [ { nickname: 'Caner Akdas', fallback: 'CA', }, ]); }); -}); -describe('authorUtils', () => { - test('mapAuthorToCardAuthors splits authors by common separators', () => { - const result = mapAuthorToCardAuthors('Node, React & prepared by Vue'); - expect(result).toEqual(['Node', 'React', 'Vue']); - }); - - test('getAuthorWithId returns objects with GitHub avatars', () => { - const result = getAuthorWithId(['someUser'], false); - expect(result[0].image).toContain('github'); - }); - - test('getAuthorWithName returns known author details or fallback to acronym', () => { + it('returns known author details or fallback to acronym', () => { const result = getAuthorWithName(['unknownAuthor'], true); - expect(result[0].fallback).toBe('U'); + assert.equal(result[0].fallback, 'U'); }); +}); - test('getAuthors uses getAuthorWithId if usernames array is provided', () => { +describe('getAuthors', () => { + it('uses getAuthorWithId if usernames array is provided', () => { const result = getAuthors({ usernames: ['testUser'] }); - expect(result[0].nickname).toBe('testUser'); + assert.equal(result[0].nickname, 'testUser'); + }); +}); + +describe('Extra parsing checks', () => { + it('mapAuthorToCardAuthors splits authors by common separators', () => { + const result = mapAuthorToCardAuthors('Node, React & prepared by Vue'); + assert.deepEqual(result, ['Node', 'React', 'Vue']); }); }); diff --git a/apps/site/util/__tests__/blogUtils.test.mjs b/apps/site/util/__tests__/blogUtils.test.mjs index 5f573ab1e1127..404d9622442fc 100644 --- a/apps/site/util/__tests__/blogUtils.test.mjs +++ b/apps/site/util/__tests__/blogUtils.test.mjs @@ -1,12 +1,15 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { mapBlogCategoryToPreviewType } from '@/util/blogUtils'; describe('mapBlogCategoryToPreviewType', () => { - test('returns the correct preview type for recognized categories', () => { - expect(mapBlogCategoryToPreviewType('release')).toBe('release'); - expect(mapBlogCategoryToPreviewType('events')).toBe('announcements'); + it('returns the correct preview type for recognized categories', () => { + assert.equal(mapBlogCategoryToPreviewType('release'), 'release'); + assert.equal(mapBlogCategoryToPreviewType('events'), 'announcements'); }); - test('defaults to announcements for unknown categories', () => { - expect(mapBlogCategoryToPreviewType('random')).toBe('announcements'); + it('defaults to announcements for unknown categories', () => { + assert.equal(mapBlogCategoryToPreviewType('random'), 'announcements'); }); }); diff --git a/apps/site/util/__tests__/dateUtils.test.mjs b/apps/site/util/__tests__/dateUtils.test.mjs index 7b20dec68f750..754dfe3829ddc 100644 --- a/apps/site/util/__tests__/dateUtils.test.mjs +++ b/apps/site/util/__tests__/dateUtils.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { dateIsBetween } from '@/util/dateUtils'; describe('dateIsBetween', () => { @@ -5,36 +8,33 @@ describe('dateIsBetween', () => { const startDate = '2022-01-01T00:00:00.000Z'; const endDate = '2069-01-01T00:00:00.000Z'; - const result = dateIsBetween(startDate, endDate); - - expect(result).toBe(true); + assert.ok(dateIsBetween(startDate, endDate)); }); it('should return false when the current date is not between start and end dates', () => { const startDate = '2010-01-01T00:00:00.000Z'; const endDate = '2020-01-01T00:00:00.000Z'; - const result = dateIsBetween(startDate, endDate); - - expect(result).toBe(false); + assert.ok(!dateIsBetween(startDate, endDate)); }); it('should throw an error when either start or end date is invalid', () => { const invalidStartDate = 'Invalid Start Date'; const validEndDate = '2024-01-01T00:00:00.000Z'; - expect(() => dateIsBetween(invalidStartDate, validEndDate)).toThrow( - 'dateIsBetween got called with invalid dates' + assert.throws( + () => dateIsBetween(invalidStartDate, validEndDate), + /dateIsBetween got called with invalid dates/ ); }); it('should return true if now is between startDate and endDate', () => { const start = new Date(Date.now() - 1000).toISOString(); const end = new Date(Date.now() + 1000).toISOString(); - expect(dateIsBetween(start, end)).toBe(true); + assert.ok(dateIsBetween(start, end)); }); it('should throw an error if dates are invalid', () => { - expect(() => dateIsBetween('invalid', 'invalid')).toThrow(); + assert.throws(() => dateIsBetween('invalid', 'invalid')); }); }); diff --git a/apps/site/util/__tests__/debounce.test.mjs b/apps/site/util/__tests__/debounce.test.mjs index 17188ab8f00a1..b140d38332cd6 100644 --- a/apps/site/util/__tests__/debounce.test.mjs +++ b/apps/site/util/__tests__/debounce.test.mjs @@ -1,42 +1,47 @@ -import { debounce } from '@/util/debounce'; +import assert from 'node:assert/strict'; +import { describe, it, beforeEach } from 'node:test'; -jest.useFakeTimers(); +import { debounce } from '@/util/debounce'; describe('debounce', () => { - it('should call the function only once', () => { - const fn = jest.fn(); + beforeEach(t => { + t.mock.timers.enable(); + }); + + it('should call the function only once', t => { + const fn = t.mock.fn(); const debouncedFn = debounce(fn, 1000); debouncedFn(); debouncedFn(); debouncedFn(); - jest.runAllTimers(); + t.mock.timers.runAll(); - expect(fn).toHaveBeenCalledTimes(1); + assert.equal(fn.mock.callCount(), 1); }); - it('should call the function with the last arguments', () => { - const fn = jest.fn(); + it('should call the function with the last arguments', t => { + const fn = t.mock.fn(); const debouncedFn = debounce(fn, 1000); debouncedFn(1); debouncedFn(2); debouncedFn(3); - jest.runAllTimers(); + t.mock.timers.runAll(); - expect(fn).toHaveBeenCalledWith(3); + assert.deepEqual(fn.mock.calls[0].arguments, [3]); }); - it('should call the function after the delay', () => { - const mockFn = jest.fn(); + it('should call the function after the delay', t => { + const mockFn = t.mock.fn(); const debouncedFn = debounce(mockFn, 500); debouncedFn(); - expect(mockFn).not.toBeCalled(); + assert.equal(mockFn.mock.callCount(), 0); - jest.advanceTimersByTime(500); - expect(mockFn).toBeCalled(); + t.mock.timers.runAll(); + assert.equal(mockFn.mock.callCount(), 1); }); }); diff --git a/apps/site/util/__tests__/deepMerge.test.mjs b/apps/site/util/__tests__/deepMerge.test.mjs index 8e895740b3fc7..48c680e5c1ad5 100644 --- a/apps/site/util/__tests__/deepMerge.test.mjs +++ b/apps/site/util/__tests__/deepMerge.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import deepMerge from '@/util/deepMerge'; describe('deepMerge', () => { @@ -5,13 +8,13 @@ describe('deepMerge', () => { const obj1 = { a: { b: 1 }, c: 2 }; const obj2 = { a: { d: 3 }, e: 4 }; const result = deepMerge(obj1, obj2); - expect(result).toEqual({ a: { b: 1, d: 3 }, c: 2, e: 4 }); + assert.deepEqual(result, { a: { b: 1, d: 3 }, c: 2, e: 4 }); }); it('should overwrite primitive properties', () => { const obj1 = { a: 1 }; const obj2 = { a: 2 }; const result = deepMerge(obj1, obj2); - expect(result).toEqual({ a: 2 }); + assert.deepEqual(result, { a: 2 }); }); }); diff --git a/apps/site/util/__tests__/detectOS.test.mjs b/apps/site/util/__tests__/detectOS.test.mjs index dd3ccd94da954..b4b5c61054c76 100644 --- a/apps/site/util/__tests__/detectOS.test.mjs +++ b/apps/site/util/__tests__/detectOS.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { detectOsInUserAgent, detectOS } from '@/util/detectOS'; const userAgentTestCases = [ @@ -27,26 +30,25 @@ const userAgentTestCases = [ ]; describe('detectOsInUserAgent', () => { - it.each(userAgentTestCases)( - 'should return %s for userAgent %s', - (userAgent, expected) => { - expect(detectOsInUserAgent(userAgent)).toBe(expected); - } - ); + for (const [userAgent, expected] of userAgentTestCases) { + it(`should return ${expected} for userAgent ${userAgent}`, () => { + assert.equal(detectOsInUserAgent(userAgent), expected); + }); + } it('should return OTHER if no match is found', () => { const result = detectOsInUserAgent('no-match'); - expect(result).toBe('OTHER'); + assert.equal(result, 'OTHER'); }); it('should detect Windows', () => { const result = detectOsInUserAgent('Mozilla Win something'); - expect(result).toBe('WIN'); + assert.equal(result, 'WIN'); }); it('should detect Linux', () => { const result = detectOsInUserAgent('Mozilla/5.0 (X11; Linux x86_64)'); - expect(result).toBe('LINUX'); + assert.equal(result, 'LINUX'); }); }); @@ -56,7 +58,7 @@ describe('detectOS', () => { value: { userAgent: 'Mac' }, configurable: true, }); - expect(detectOS()).toBe('MAC'); + assert.equal(detectOS(), 'MAC'); }); it('should return OTHER if navigator is undefined', () => { @@ -64,6 +66,6 @@ describe('detectOS', () => { value: undefined, configurable: true, }); - expect(detectOS()).toBe('OTHER'); + assert.equal(detectOS(), 'OTHER'); }); }); diff --git a/apps/site/util/__tests__/downloadUtils.test.mjs b/apps/site/util/__tests__/downloadUtils.test.mjs index 78f7dd3ab5333..bbf2c839cdcd6 100644 --- a/apps/site/util/__tests__/downloadUtils.test.mjs +++ b/apps/site/util/__tests__/downloadUtils.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { parseCompat, nextItem, @@ -20,7 +23,7 @@ describe('parseCompat', () => { release: { status: 'LTS' }, }; const result = parseCompat([os, pm, method], releaseContext); - expect(Array.isArray(result)).toBe(true); + assert.ok(Array.isArray(result)); }); }); }); @@ -38,7 +41,7 @@ describe('parseCompat', () => { release: { status: 'LTS' }, }; const result = parseCompat([platform], releaseContext); - expect(result.length).toBe(1); + assert.equal(result.length, 1); }); }); }); @@ -58,7 +61,7 @@ describe('parseCompat', () => { version: 'v16.0.0', release: { status: 'LTS' }, }); - expect(result[0].disabled).toBe(true); + assert.ok(result[0].disabled); }); it('should disable items if installMethod is not supported', () => { @@ -75,7 +78,7 @@ describe('parseCompat', () => { version: 'v16.0.0', release: { status: 'Current' }, }); - expect(result[0].disabled).toBe(true); + assert.ok(result[0].disabled); }); it('should disable items if platform is not supported', () => { @@ -92,7 +95,7 @@ describe('parseCompat', () => { version: 'v16.0.0', release: { status: 'LTS' }, }); - expect(result[0].disabled).toBe(true); + assert.ok(result[0].disabled); }); it('should disable items if semver constraint is not satisfied', () => { @@ -109,7 +112,7 @@ describe('parseCompat', () => { version: 'v16.0.0', release: { status: 'LTS' }, }); - expect(result[0].disabled).toBe(true); + assert.ok(result[0].disabled); }); it('should disable items if release status is not supported', () => { @@ -126,7 +129,7 @@ describe('parseCompat', () => { version: 'v18.0.0', release: { status: 'LTS' }, }); - expect(result[0].disabled).toBe(true); + assert.ok(result[0].disabled); }); }); }); @@ -137,7 +140,7 @@ describe('nextItem', () => { { value: 'invalid', disabled: true }, { value: 'valid', disabled: false }, ]; - expect(nextItem('invalid', items)).toBe('valid'); - expect(nextItem('valid', items)).toBe('valid'); + assert.equal(nextItem('invalid', items), 'valid'); + assert.equal(nextItem('valid', items), 'valid'); }); }); diff --git a/apps/site/util/__tests__/getHighEntropyValues.test.mjs b/apps/site/util/__tests__/getHighEntropyValues.test.mjs index c1f3345d04dd8..dab3e3b9288a2 100644 --- a/apps/site/util/__tests__/getHighEntropyValues.test.mjs +++ b/apps/site/util/__tests__/getHighEntropyValues.test.mjs @@ -1,13 +1,16 @@ +import assert from 'node:assert/strict'; +import { describe, it, beforeEach } from 'node:test'; + import { getHighEntropyValues } from '@/util/getHighEntropyValues'; +const mock = () => Promise.resolve({ platform: 'Win32', architecture: 'x86' }); + describe('getHighEntropyValues', () => { beforeEach(() => { Object.defineProperty(global, 'navigator', { value: { userAgentData: { - getHighEntropyValues: jest - .fn() - .mockResolvedValue({ platform: 'Win32', architecture: 'x86' }), + getHighEntropyValues: mock, }, }, configurable: true, @@ -17,26 +20,27 @@ describe('getHighEntropyValues', () => { it('should resolve and return hint values', async () => { const hints = ['platform']; const result = await getHighEntropyValues(hints); - expect(result.platform).toBe('Win32'); + assert.equal(result.platform, 'Win32'); }); it('should return an empty object on rejection', async () => { - navigator.userAgentData.getHighEntropyValues.mockRejectedValue(null); + navigator.userAgentData.getHighEntropyValues = () => Promise.resolve({}); const hints = ['platform']; const result = await getHighEntropyValues(hints); - expect(result.platform).toBeUndefined(); + assert.equal(result.platform, undefined); + navigator.userAgentData.getHighEntropyValues = mock; }); it('should return multiple hint values', async () => { const hints = ['platform', 'architecture']; const result = await getHighEntropyValues(hints); - expect(result.platform).toBe('Win32'); - expect(result.architecture).toBe('x86'); + assert.equal(result.platform, 'Win32'); + assert.equal(result.architecture, 'x86'); }); it('should return undefined for unsupported hints', async () => { const hints = ['unsupportedHint']; const result = await getHighEntropyValues(hints); - expect(result.unsupportedHint).toBeUndefined(); + assert.equal(result.unsupportedHint, undefined); }); }); diff --git a/apps/site/util/__tests__/getLanguageDisplayName.test.mjs b/apps/site/util/__tests__/getLanguageDisplayName.test.mjs index 4af7fe416a71b..f89094b75ab36 100644 --- a/apps/site/util/__tests__/getLanguageDisplayName.test.mjs +++ b/apps/site/util/__tests__/getLanguageDisplayName.test.mjs @@ -1,24 +1,31 @@ -import { getLanguageDisplayName } from '@/util/getLanguageDisplayName'; +import assert from 'node:assert/strict'; +import { it, describe, mock } from 'node:test'; -jest.mock('@/shiki.config.mjs', () => ({ - LANGUAGES: [ - { name: 'javascript', aliases: ['js'], displayName: 'JavaScript' }, - { name: 'typescript', aliases: ['ts'], displayName: 'TypeScript' }, - ], -})); +describe('getLanguageDisplayName', async () => { + mock.module('@/shiki.config.mjs', { + namedExports: { + LANGUAGES: [ + { name: 'javascript', aliases: ['js'], displayName: 'JavaScript' }, + { name: 'typescript', aliases: ['ts'], displayName: 'TypeScript' }, + ], + }, + }); + + const { getLanguageDisplayName } = await import( + '@/util/getLanguageDisplayName' + ); -describe('getLanguageDisplayName', () => { it('should return the display name for a known language', () => { - expect(getLanguageDisplayName('javascript')).toBe('JavaScript'); - expect(getLanguageDisplayName('js')).toBe('JavaScript'); + assert.equal(getLanguageDisplayName('javascript'), 'JavaScript'); + assert.equal(getLanguageDisplayName('js'), 'JavaScript'); }); it('should return the display name for another known language', () => { - expect(getLanguageDisplayName('typescript')).toBe('TypeScript'); - expect(getLanguageDisplayName('ts')).toBe('TypeScript'); + assert.equal(getLanguageDisplayName('typescript'), 'TypeScript'); + assert.equal(getLanguageDisplayName('ts'), 'TypeScript'); }); it('should return the input language if it is not known', () => { - expect(getLanguageDisplayName('unknown')).toBe('unknown'); + assert.equal(getLanguageDisplayName('unknown'), 'unknown'); }); }); diff --git a/apps/site/util/__tests__/getNodeApiLink.test.mjs b/apps/site/util/__tests__/getNodeApiLink.test.mjs index 2a23f9b90eb0e..d9001247f47e4 100644 --- a/apps/site/util/__tests__/getNodeApiLink.test.mjs +++ b/apps/site/util/__tests__/getNodeApiLink.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { getNodeApiLink } from '@/util/getNodeApiLink'; describe('getNodeApiLink', () => { @@ -7,12 +10,12 @@ describe('getNodeApiLink', () => { const result = getNodeApiLink(version); - expect(result).toBe(expectedLink); + assert.equal(result, expectedLink); }); it('should return the correct URL for versions >=0.3.1 and <0.5.1', () => { const url = getNodeApiLink('v0.4.10'); - expect(url).toContain('/api/'); + assert.ok(url.includes('/api/')); }); it('should return the correct API link for versions >=0.1.14 and <0.3.1', () => { @@ -21,7 +24,7 @@ describe('getNodeApiLink', () => { const result = getNodeApiLink(version); - expect(result).toBe(expectedLink); + assert.equal(result, expectedLink); }); it('should return the correct API link for versions >=1.0.0 and <4.0.0', () => { @@ -30,12 +33,12 @@ describe('getNodeApiLink', () => { const result = getNodeApiLink(version); - expect(result).toBe(expectedLink); + assert.equal(result, expectedLink); }); it('should form the correct URL for versions >=1.0.0 and <4.0.0', () => { const url = getNodeApiLink('v1.2.3'); - expect(url).toContain('iojs.org/dist/v1.2.3/docs/api/'); + assert.ok(url.includes('iojs.org/dist/v1.2.3/docs/api/')); }); it('should return the correct API link for other versions', () => { @@ -44,6 +47,6 @@ describe('getNodeApiLink', () => { const result = getNodeApiLink(version); - expect(result).toBe(expectedLink); + assert.equal(result, expectedLink); }); }); diff --git a/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs b/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs index da1c00f317b0f..3f6828bcb74a2 100644 --- a/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs +++ b/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; const version = 'v18.16.0'; @@ -8,7 +11,7 @@ describe('getNodeDownloadUrl', () => { const bitness = 86; const expectedUrl = 'https://nodejs.org/dist/v18.16.0/node-v18.16.0.pkg'; - expect(getNodeDownloadUrl(version, os, bitness)).toBe(expectedUrl); + assert.equal(getNodeDownloadUrl(version, os, bitness), expectedUrl); }); it('should return the correct download URL for Windows (32-bit)', () => { @@ -17,7 +20,7 @@ describe('getNodeDownloadUrl', () => { const expectedUrl = 'https://nodejs.org/dist/v18.16.0/node-v18.16.0-x86.msi'; - expect(getNodeDownloadUrl(version, os, bitness)).toBe(expectedUrl); + assert.equal(getNodeDownloadUrl(version, os, bitness), expectedUrl); }); it('should return the correct download URL for Windows (64-bit)', () => { @@ -26,7 +29,7 @@ describe('getNodeDownloadUrl', () => { const expectedUrl = 'https://nodejs.org/dist/v18.16.0/node-v18.16.0-x64.msi'; - expect(getNodeDownloadUrl(version, os, bitness)).toBe(expectedUrl); + assert.equal(getNodeDownloadUrl(version, os, bitness), expectedUrl); }); it('should return the default download URL for other operating systems', () => { @@ -34,20 +37,20 @@ describe('getNodeDownloadUrl', () => { const bitness = 86; const expectedUrl = 'https://nodejs.org/dist/v18.16.0/node-v18.16.0.tar.gz'; - expect(getNodeDownloadUrl(version, os, bitness)).toBe(expectedUrl); + assert.equal(getNodeDownloadUrl(version, os, bitness), expectedUrl); }); describe('MAC', () => { it('should return .pkg link for installer', () => { const url = getNodeDownloadUrl('v18.0.0', 'MAC', 'x64', 'installer'); - expect(url).toContain('.pkg'); + assert.ok(url.includes('.pkg')); }); }); describe('WIN', () => { it('should return an MSI link for installer', () => { const url = getNodeDownloadUrl('v18.0.0', 'WIN', 'x64', 'installer'); - expect(url).toContain('.msi'); + assert.ok(url.includes('.msi')); }); }); }); diff --git a/apps/site/util/__tests__/getUserPlatform.test.mjs b/apps/site/util/__tests__/getUserPlatform.test.mjs index 5584ea836f717..9d867ad551b15 100644 --- a/apps/site/util/__tests__/getUserPlatform.test.mjs +++ b/apps/site/util/__tests__/getUserPlatform.test.mjs @@ -1,15 +1,18 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { getUserPlatform } from '@/util/getUserPlatform'; describe('getUserPlatform', () => { it('should return arm64 for arm + 64', () => { - expect(getUserPlatform('arm', '64')).toBe('arm64'); + assert.equal(getUserPlatform('arm', '64'), 'arm64'); }); it('should return x64 for non-arm + 64', () => { - expect(getUserPlatform('amd64', '64')).toBe('x64'); + assert.equal(getUserPlatform('amd64', '64'), 'x64'); }); it('should return x86 otherwise', () => { - expect(getUserPlatform('amd64', '32')).toBe('x86'); + assert.equal(getUserPlatform('amd64', '32'), 'x86'); }); }); diff --git a/apps/site/util/__tests__/gitHubUtils.test.mjs b/apps/site/util/__tests__/gitHubUtils.test.mjs index 6fc326df82570..1bf9bddc87d78 100644 --- a/apps/site/util/__tests__/gitHubUtils.test.mjs +++ b/apps/site/util/__tests__/gitHubUtils.test.mjs @@ -1,39 +1,47 @@ -import { +import assert from 'node:assert/strict'; +import { describe, it, mock } from 'node:test'; + +mock.module('github-slugger', { + defaultExport: class {}, +}); + +const { getGitHubAvatarUrl, createGitHubSlugger, getGitHubBlobUrl, getGitHubApiDocsUrl, -} from '@/util/gitHubUtils'; +} = await import('@/util/gitHubUtils'); describe('gitHubUtils', () => { it('getGitHubAvatarUrl returns the correct URL', () => { - expect(getGitHubAvatarUrl('octocat')).toBe( + assert.equal( + getGitHubAvatarUrl('octocat'), 'https://avatars.githubusercontent.com/octocat' ); }); it('createGitHubSlugger returns a slugger', () => { - const slugger = createGitHubSlugger(); - expect(slugger).toBeDefined(); + assert.notEqual(createGitHubSlugger(), undefined); }); it('getGitHubBlobUrl returns the correct URL', () => { const result = getGitHubBlobUrl('learn/getting-started/introduction.md'); const expected = 'https://github.com/nodejs/nodejs.org/blob/main/apps/site/pages/en/learn/getting-started/introduction.md'; - expect(result).toBe(expected); + assert.equal(result, expected); }); it('getGitHubApiDocsUrl returns the correct URL', () => { const result = getGitHubApiDocsUrl('assert'); const expected = 'https://api.github.com/repos/nodejs/node/contents/doc/api?ref=assert'; - expect(result).toBe(expected); + assert.equal(result, expected); }); describe('getGitHubAvatarUrl', () => { it('should return a valid GitHub avatar URL', () => { - expect(getGitHubAvatarUrl('octocat')).toBe( + assert.equal( + getGitHubAvatarUrl('octocat'), 'https://avatars.githubusercontent.com/octocat' ); }); @@ -41,15 +49,18 @@ describe('gitHubUtils', () => { describe('getGitHubBlobUrl', () => { it('should return the correct blob URL', () => { - expect(getGitHubBlobUrl('testfile.md')).toContain( - 'blob/main/apps/site/pages/en/testfile.md' + assert.ok( + getGitHubBlobUrl('testfile.md').includes( + 'blob/main/apps/site/pages/en/testfile.md' + ) ); }); }); describe('getGitHubApiDocsUrl', () => { it('should return the correct API docs URL', () => { - expect(getGitHubApiDocsUrl('v18.x')).toBe( + assert.equal( + getGitHubApiDocsUrl('v18.x'), 'https://api.github.com/repos/nodejs/node/contents/doc/api?ref=v18.x' ); }); diff --git a/apps/site/util/__tests__/hexToRGBA.test.mjs b/apps/site/util/__tests__/hexToRGBA.test.mjs index b477784d388b7..f14cba50e53b4 100644 --- a/apps/site/util/__tests__/hexToRGBA.test.mjs +++ b/apps/site/util/__tests__/hexToRGBA.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { hexToRGBA } from '@/util/hexToRGBA'; describe('hexToRGBA', () => { @@ -5,21 +8,21 @@ describe('hexToRGBA', () => { const hexColor = '#000000'; const rgbaColor = hexToRGBA(hexColor, 0.5); - expect(rgbaColor).toBe('rgba(0, 0, 0, 0.5)'); + assert.equal(rgbaColor, 'rgba(0, 0, 0, 0.5)'); }); it('should convert a hex color to an rgba color', () => { const hexColor = '#ffffff'; const rgbaColor = hexToRGBA(hexColor, 0.5); - expect(rgbaColor).toBe('rgba(255, 255, 255, 0.5)'); + assert.equal(rgbaColor, 'rgba(255, 255, 255, 0.5)'); }); it('should convert hex to RGBA correctly', () => { - expect(hexToRGBA('#FFFFFF')).toBe('rgba(255, 255, 255, 0.9)'); + assert.equal(hexToRGBA('#FFFFFF'), 'rgba(255, 255, 255, 0.9)'); }); it('should handle custom alpha value', () => { - expect(hexToRGBA('#000000', 0.5)).toBe('rgba(0, 0, 0, 0.5)'); + assert.equal(hexToRGBA('#000000', 0.5), 'rgba(0, 0, 0, 0.5)'); }); }); diff --git a/apps/site/util/__tests__/imageUtils.test.mjs b/apps/site/util/__tests__/imageUtils.test.mjs index f52a7fb9bfb4e..e4153e98cb498 100644 --- a/apps/site/util/__tests__/imageUtils.test.mjs +++ b/apps/site/util/__tests__/imageUtils.test.mjs @@ -1,5 +1,7 @@ -import { isSvgImage } from '@/util/imageUtils'; +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; +import { isSvgImage } from '@/util/imageUtils'; describe('isSvgImage', () => { const testCases = [ { @@ -37,7 +39,7 @@ describe('isSvgImage', () => { testCases.forEach(({ description, input, expected }) => { it(description, () => { - expect(isSvgImage(input)).toBe(expected); + assert.equal(isSvgImage(input), expected); }); }); }); @@ -45,10 +47,10 @@ describe('isSvgImage', () => { describe('imageUtils', () => { describe('isSvgImage', () => { it('should detect .svg extension properly', () => { - expect(isSvgImage('icon.svg')).toBe(true); + assert.equal(isSvgImage('icon.svg'), true); }); it('should return false for non-svg source', () => { - expect(isSvgImage('logo.png')).toBe(false); + assert.equal(isSvgImage('logo.png'), false); }); }); }); diff --git a/apps/site/util/__tests__/stringUtils.test.mjs b/apps/site/util/__tests__/stringUtils.test.mjs index ad2f3ef59aaea..8ffb7ec6b54ab 100644 --- a/apps/site/util/__tests__/stringUtils.test.mjs +++ b/apps/site/util/__tests__/stringUtils.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { getAcronymFromString, parseRichTextIntoPlainText, @@ -6,108 +9,108 @@ import { describe('String utils', () => { it('getAcronymFromString returns the correct acronym', () => { - expect(getAcronymFromString('John Doe')).toBe('JD'); + assert.equal(getAcronymFromString('John Doe'), 'JD'); }); it('getAcronymFromString returns the correct acronym for a single word', () => { - expect(getAcronymFromString('John')).toBe('J'); + assert.equal(getAcronymFromString('John'), 'J'); }); it('getAcronymFromString if the string is empty, it returns NA', () => { - expect(getAcronymFromString('')).toBe(''); + assert.equal(getAcronymFromString(''), ''); }); it('parseRichTextIntoPlainText returns plain text without HTML and JSX tags', () => { const richText = '<p>This is <strong>bold</strong> and <em>italic</em></p>'; const result = parseRichTextIntoPlainText(richText); - expect(result).toBe('This is bold and italic'); + assert.equal(result, 'This is bold and italic'); }); it('parseRichTextIntoPlainText replaces Markdown links with their text content', () => { const richText = 'Check out [Node.js](https://nodejs.org/en/) for more information.'; const result = parseRichTextIntoPlainText(richText); - expect(result).toBe('Check out Node.js for more information.'); + assert.equal(result, 'Check out Node.js for more information.'); }); it('parseRichTextIntoPlainText replaces Markdown lists with their content', () => { const richText = '- Item 1\n- Item 2\n- Item 3'; const result = parseRichTextIntoPlainText(richText); - expect(result).toBe('Item 1\nItem 2\nItem 3'); + assert.equal(result, 'Item 1\nItem 2\nItem 3'); }); it('parseRichTextIntoPlainText replaces Markdown underscore, bold, and italic with their content', () => { const richText = 'This is _underscore_, **bold**, and *italic*.'; const result = parseRichTextIntoPlainText(richText); - expect(result).toBe('This is underscore, bold, and italic.'); + assert.equal(result, 'This is underscore, bold, and italic.'); }); it('parseRichTextIntoPlainText replaces Markdown multiline code blocks with an empty string', () => { const richText = 'Some text\n```\nconst x = 42;\nconsole.log(x);\n```\nMore text'; const result = parseRichTextIntoPlainText(richText); - expect(result).toBe('Some text\nMore text'); + assert.equal(result, 'Some text\nMore text'); }); it('parseRichTextIntoPlainText removes empty lines or lines with just spaces', () => { const richText = 'Line 1\n \nLine 3'; const result = parseRichTextIntoPlainText(richText); - expect(result).toBe('Line 1\nLine 3'); + assert.equal(result, 'Line 1\nLine 3'); }); it('parseRichTextIntoPlainText removes leading and trailing spaces from each line', () => { const richText = ' Line 1 \n Line 2 \n Line 3 '; const result = parseRichTextIntoPlainText(richText); - expect(result).toBe('Line 1\nLine 2\nLine 3'); + assert.equal(result, 'Line 1\nLine 2\nLine 3'); }); it('dashToCamelCase returns correct camelCase', () => { - expect(dashToCamelCase('foo-bar-baz')).toBe('fooBarBaz'); + assert.equal(dashToCamelCase('foo-bar-baz'), 'fooBarBaz'); }); it('dashToCamelCase returns correct camelCase with capital first letter', () => { - expect(dashToCamelCase('Foo-bar')).toBe('fooBar'); + assert.equal(dashToCamelCase('Foo-bar'), 'fooBar'); }); it('dashToCamelCase returns correct camelCase with numbers', () => { - expect(dashToCamelCase('foo-123-bar')).toBe('foo123Bar'); + assert.equal(dashToCamelCase('foo-123-bar'), 'foo123Bar'); }); - test('getAcronymFromString returns an acronym for a simple string', () => { + it('getAcronymFromString returns an acronym for a simple string', () => { const result = getAcronymFromString('Node JS'); - expect(result).toBe('NJ'); + assert.equal(result, 'NJ'); }); - test('parseRichTextIntoPlainText removes markdown syntax', () => { + it('parseRichTextIntoPlainText removes markdown syntax', () => { const result = parseRichTextIntoPlainText( 'Hello **world**!\n*italic text*' ); - expect(result).toBe('Hello world!\nitalic text'); + assert.equal(result, 'Hello world!\nitalic text'); }); - test('dashToCamelCase converts dashed strings to camelCase', () => { + it('dashToCamelCase converts dashed strings to camelCase', () => { const result = dashToCamelCase('es-2015'); - expect(result).toBe('es2015'); + assert.equal(result, 'es2015'); }); describe('stringUtils', () => { describe('getAcronymFromString', () => { it('should return correct acronym', () => { const result = getAcronymFromString('Hello World'); - expect(result).toBe('HW'); + assert.equal(result, 'HW'); }); }); describe('parseRichTextIntoPlainText', () => { it('should remove markdown and HTML', () => { const result = parseRichTextIntoPlainText('<h1>Hello</h1> *world*'); - expect(result).toBe('Hello world'); + assert.equal(result, 'Hello world'); }); }); describe('dashToCamelCase', () => { it('should convert dash-case to camelCase', () => { - expect(dashToCamelCase('es-2015-config')).toBe('es2015Config'); + assert.equal(dashToCamelCase('es-2015-config'), 'es2015Config'); }); }); }); diff --git a/eslint.config.js b/eslint.config.js index 04fd1eda5a466..8519c135ff692 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -11,7 +11,7 @@ export default [ '.turbo', '.next', 'build', - 'coverage', + 'lcov.info', 'global.d.ts', 'junit.xml', 'storybook-static/**', diff --git a/package-lock.json b/package-lock.json index 7b0a40f21c144..f91b24ed5ea71 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,8 @@ }, "devDependencies": { "@eslint/js": "~9.23.0", + "@reporters/github": "^1.7.2", + "@testing-library/react": "~16.3.0", "@types/node": "22.14.0", "@types/react": "^19.1.0", "@types/react-dom": "^19.1.1", @@ -79,26 +81,23 @@ "devDependencies": { "@eslint/compat": "~1.2.8", "@next/eslint-plugin-next": "15.2.4", - "@testing-library/jest-dom": "~6.6.3", - "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", - "@types/jest": "29.5.14", "@types/semver": "~7.7.0", "eslint-config-next": "15.2.4", "eslint-import-resolver-typescript": "~4.3.1", "eslint-plugin-mdx": "~3.3.1", "eslint-plugin-react": "~7.37.4", "eslint-plugin-react-hooks": "5.2.0", + "global-jsdom": "^26.0.0", "handlebars": "4.7.8", - "jest": "29.7.0", - "jest-environment-jsdom": "29.7.0", - "jest-junit": "16.0.0", + "jsdom": "^26.0.0", "remark-frontmatter": "5.0.0", "remark-preset-lint-node": "5.1.2", "stylelint": "16.17.0", "stylelint-config-standard": "37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", + "tsx": "^4.19.3", "typescript": "~5.8.2", "typescript-eslint": "~8.29.0", "user-agent-data-types": "0.4.2" @@ -232,6 +231,44 @@ "npm": ">=7.10.0" } }, + "apps/site/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "apps/site/node_modules/cssstyle": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", + "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.1.1", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, + "apps/site/node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, "apps/site/node_modules/eslint-import-resolver-typescript": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.1.tgz", @@ -266,6 +303,60 @@ } } }, + "apps/site/node_modules/global-jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/global-jsdom/-/global-jsdom-26.0.0.tgz", + "integrity": "sha512-BqXpTNZFjP40N+s4k8Bk9HS8GFVPJB/+TKtwcShM84wLv6C5dH9o1dydI3pL6potanhfDiIAVDbaaGj/uSdRSA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "jsdom": ">=26 <27" + } + }, + "apps/site/node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "apps/site/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "apps/site/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "apps/site/node_modules/is-bun-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", @@ -276,6 +367,47 @@ "semver": "^7.7.1" } }, + "apps/site/node_modules/jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "apps/site/node_modules/next-intl": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-4.0.2.tgz", @@ -466,6 +598,131 @@ "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", "license": "MIT" }, + "apps/site/node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "apps/site/node_modules/tr46": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "apps/site/node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "apps/site/node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "apps/site/node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "apps/site/node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "apps/site/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@actions/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@adobe/css-tools": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", @@ -499,6 +756,27 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", + "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.2", + "@csstools/css-color-parser": "^3.0.8", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/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" + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -640,16 +918,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", @@ -709,323 +977,149 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@babel/runtime": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "node_modules/@babel/template": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@babel/traverse": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10", + "debug": "^4.3.1", + "globals": "^11.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "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", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "node_modules/@babel/types": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@csstools/css-calc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", + "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "node_modules/@csstools/css-color-parser": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", + "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", - "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", - "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "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.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", - "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, "node_modules/@csstools/css-parser-algorithms": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", @@ -1800,6 +1894,16 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/@floating-ui/core": { "version": "1.6.9", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", @@ -2440,1816 +2544,1768 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "devOptional": true, + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "devOptional": true, "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@keyv/serialize": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "buffer": "^6.0.3" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@keyv/serialize/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "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": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/react": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.7.tgz", + "integrity": "sha512-cencnwwLXQKiKxjfFzSgZRngcWJzUDZi/04E0fSaF86wZgchMdvTyu+lE36DrUfvuus3bH8+xLPrhM1cTjwpzw==", + "license": "BSD-3-Clause", + "peerDependencies": { + "@types/react": "17 || 18 || 19" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "license": "MIT", + "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": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@lit-labs/ssr-dom-shim": "^1.2.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, + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.7.tgz", + "integrity": "sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@emnapi/core": "^1.3.1", + "@emnapi/runtime": "^1.3.1", + "@tybys/wasm-util": "^0.9.0" } }, - "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/@next/env": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.0.tgz", + "integrity": "sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==", + "license": "MIT" }, - "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==", + "node_modules/@next/eslint-plugin-next": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.4.tgz", + "integrity": "sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "fast-glob": "3.3.1" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "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": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=8.6.0" } }, - "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==", + "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": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 6" } }, - "node_modules/@jest/core/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, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.0.tgz", + "integrity": "sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 10" } }, - "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, + "node_modules/@next/swc-darwin-x64": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.0.tgz", + "integrity": "sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.0.tgz", + "integrity": "sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "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==", - "dev": true, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.0.tgz", + "integrity": "sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@jest/create-cache-key-function": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", - "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", - "dev": true, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.0.tgz", + "integrity": "sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.0.tgz", + "integrity": "sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.0.tgz", + "integrity": "sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", + "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, + "node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, + "node_modules/@node-core/ui-components": { + "resolved": "packages/ui-components", + "link": true + }, + "node_modules/@node-core/website": { + "resolved": "apps/site", + "link": true + }, + "node_modules/@node-core/website-i18n": { + "resolved": "packages/i18n", + "link": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "engines": { + "node": ">= 8" } }, - "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==", - "dev": true, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 8" } }, - "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, + "node_modules/@nodevu/core": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@nodevu/core/-/core-0.3.0.tgz", + "integrity": "sha512-kVJh6kQViCE8Qf1j7pc7yhUke2kKb1eZM+rqln+EytHqyOq+eZUEtfWbDk1vfWhgiknnAcFOhdVA5apT8rTejQ==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@nodevu/parsefiles": "^0.0.3", + "luxon": "^3.5.0", + "semver": "^7.6.3" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@nodevu/parsefiles": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nodevu/parsefiles/-/parsefiles-0.0.3.tgz", + "integrity": "sha512-IjwkVqA2SlH8XweoAw7EJkeyPGk7gW9imlvhpywrKiPCLP1H0meG/blNAF5X38pirsmvhxPe/BCyywT7Exwuow==", + "license": "MIT" + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", "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": ">=12.4.0" } }, - "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", + "node_modules/@npmcli/config": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.3.4.tgz", + "integrity": "sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==", "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" + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^16.14.0 || >=18.0.0" } }, - "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/@npmcli/config/node_modules/ci-info": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", "engines": { "node": ">=8" } }, - "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==", + "node_modules/@npmcli/config/node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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/@npmcli/git": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", + "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@npmcli/git/node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "license": "ISC", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, + "license": "ISC", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@npmcli/git/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": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "ISC" }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", + "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.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==", + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=8" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "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/@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": "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/@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": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "has-flag": "^4.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@npmcli/package-json": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.14.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==", + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=8" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "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==", + "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", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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==", + "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": "MIT", + "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": { - "has-flag": "^4.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "devOptional": true, - "license": "MIT", + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dev": true, + "license": "ISC", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "which": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, - "license": "MIT", + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6.0.0" + "node": ">=16" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "devOptional": true, - "license": "MIT", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, "engines": { - "node": ">=6.0.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "devOptional": true, - "license": "MIT", + "node_modules/@opentelemetry/api-logs": { + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", + "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@keyv/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "buffer": "^6.0.3" + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@keyv/serialize/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "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", + "node_modules/@opentelemetry/instrumentation": { + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz", + "integrity": "sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", - "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@lit/react": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.7.tgz", - "integrity": "sha512-cencnwwLXQKiKxjfFzSgZRngcWJzUDZi/04E0fSaF86wZgchMdvTyu+lE36DrUfvuus3bH8+xLPrhM1cTjwpzw==", - "license": "BSD-3-Clause", + "@opentelemetry/api-logs": "0.200.0", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "shimmer": "^1.2.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, "peerDependencies": { - "@types/react": "17 || 18 || 19" + "@opentelemetry/api": "^1.3.0" } }, - "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", + "node_modules/@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.2.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@mdx-js/mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", - "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz", + "integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdx": "^2.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-util-scope": "^1.0.0", - "estree-walker": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "markdown-extensions": "^2.0.0", - "recma-build-jsx": "^1.0.0", - "recma-jsx": "^1.0.0", - "recma-stringify": "^1.0.0", - "rehype-recma": "^1.0.0", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "source-map": "^0.7.0", - "unified": "^11.0.0", - "unist-util-position-from-estree": "^2.0.0", - "unist-util-stringify-position": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.7.tgz", - "integrity": "sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", + "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@emnapi/core": "^1.3.1", - "@emnapi/runtime": "^1.3.1", - "@tybys/wasm-util": "^0.9.0" + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@next/env": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.0.tgz", - "integrity": "sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==", - "license": "MIT" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.4.tgz", - "integrity": "sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", + "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "fast-glob": "3.3.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "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" - }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.30.0.tgz", + "integrity": "sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw==", + "license": "Apache-2.0", + "peer": true, "engines": { - "node": ">=8.6.0" + "node": ">=14" } }, - "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", + "node_modules/@opentelemetry/sdk-metrics": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "is-glob": "^4.0.1" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" }, "engines": { - "node": ">= 6" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@next/swc-darwin-arm64": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.0.tgz", - "integrity": "sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, "engines": { - "node": ">= 10" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.0.tgz", - "integrity": "sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "peer": true, "engines": { - "node": ">= 10" + "node": ">=14" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.0.tgz", - "integrity": "sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==", - "cpu": [ - "arm64" - ], + "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", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@noble/hashes": "^1.1.5" } }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.0.tgz", - "integrity": "sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "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": "3.1.3", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.3.tgz", + "integrity": "sha512-UdtAMLe2RxtqvmfNDJSMpYoQYUpXgs+9qXVVFCO0BqHF86gp+uz8N6ftkaLe1p55OQXmliciw7BH34GFozKLnQ==", + "license": "Apache-2.0", "engines": { - "node": ">= 10" + "node": ">= 16.0.0" } }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.0.tgz", - "integrity": "sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@orama/switch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.1.3.tgz", + "integrity": "sha512-Gtah1T5jhF4hv+Bpl1k8ogAg3klTUwWzpI9sUG2XuaLHKPiob0PrVxD7YxJ06BERkFY0KdcDEK6k5fgIYcDPxA==", + "license": "Apache-2.0", + "peerDependencies": { + "@orama/orama": "3.1.3", + "@oramacloud/client": "^2.1.1" } }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.0.tgz", - "integrity": "sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "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/@next/swc-win32-arm64-msvc": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.0.tgz", - "integrity": "sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==", - "cpu": [ - "arm64" - ], + "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", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "lit": "^3" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", - "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", - "cpu": [ - "x64" - ], + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": ">=14" } }, - "node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@pkgr/core": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.0.tgz", + "integrity": "sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==", + "dev": true, "license": "MIT", "engines": { - "node": "^14.21.3 || >=16" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/unts" } }, - "node_modules/@node-core/ui-components": { - "resolved": "packages/ui-components", - "link": true - }, - "node_modules/@node-core/website": { - "resolved": "apps/site", - "link": true + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" }, - "node_modules/@node-core/website-i18n": { - "resolved": "packages/i18n", - "link": true + "node_modules/@radix-ui/primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", + "license": "MIT" }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", + "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@radix-ui/react-primitive": "2.0.2" }, - "engines": { - "node": ">= 8" + "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/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@radix-ui/react-collection": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz", + "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", "license": "MIT", - "engines": { - "node": ">= 8" + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2" + }, + "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/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">= 8" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@nodevu/core": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@nodevu/core/-/core-0.3.0.tgz", - "integrity": "sha512-kVJh6kQViCE8Qf1j7pc7yhUke2kKb1eZM+rqln+EytHqyOq+eZUEtfWbDk1vfWhgiknnAcFOhdVA5apT8rTejQ==", + "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-dialog": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.7.tgz", + "integrity": "sha512-EIdma8C0C/I6kL6sO02avaCRqi3fmWJpxH6mqbVScorW6nNktzKJT/le7VPho3o/7wCsyRg3z0+Q+Obr0Gy/VQ==", "license": "MIT", "dependencies": { - "@nodevu/parsefiles": "^0.0.3", - "luxon": "^3.5.0", - "semver": "^7.6.3" + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.6", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.3", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.5", + "@radix-ui/react-presence": "1.1.3", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-use-controllable-state": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "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/@nodevu/parsefiles": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@nodevu/parsefiles/-/parsefiles-0.0.3.tgz", - "integrity": "sha512-IjwkVqA2SlH8XweoAw7EJkeyPGk7gW9imlvhpywrKiPCLP1H0meG/blNAF5X38pirsmvhxPe/BCyywT7Exwuow==", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", "license": "MIT" }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", "license": "MIT", - "engines": { - "node": ">=12.4.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@npmcli/config": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.3.4.tgz", - "integrity": "sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/package-json": "^5.1.1", - "ci-info": "^4.0.0", - "ini": "^4.1.2", - "nopt": "^7.2.1", - "proc-log": "^4.2.0", - "semver": "^7.3.5", - "walk-up-path": "^3.0.1" + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@npmcli/config/node_modules/ci-info": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", - "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.6.tgz", + "integrity": "sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "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/@npmcli/config/node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "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/@npmcli/git": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", - "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", - "dev": true, - "license": "ISC", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.3.tgz", + "integrity": "sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==", + "license": "MIT", "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "ini": "^4.1.3", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-callback-ref": "1.1.1" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" + "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/@npmcli/git/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" - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "license": "ISC", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" + "@radix-ui/react-use-layout-effect": "1.1.1" }, - "bin": { - "node-which": "bin/which.js" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": "^16.13.0 || >=18.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@npmcli/map-workspaces": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", - "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", - "dev": true, - "license": "ISC", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.5.tgz", + "integrity": "sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==", + "license": "MIT", "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-layout-effect": "1.1.1" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.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/@npmcli/map-workspaces/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.3.tgz", + "integrity": "sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "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" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "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", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.3.tgz", + "integrity": "sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@radix-ui/react-slot": "1.2.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "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" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "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" - }, - "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", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "@radix-ui/react-compose-refs": "1.1.2" }, - "engines": { - "node": ">=16 || 14 >=14.18" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", - "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "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/@npmcli/package-json": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", - "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", - "dev": true, - "license": "ISC", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.1.tgz", + "integrity": "sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==", + "license": "MIT", "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" + "@radix-ui/react-use-callback-ref": "1.1.1" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "@radix-ui/react-use-callback-ref": "1.1.1" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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" + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "dev": true, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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" - }, - "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", + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", + "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" }, - "engines": { - "node": ">=16 || 14 >=14.18" + "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" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", - "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", - "dev": true, - "license": "ISC", + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.6.tgz", + "integrity": "sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==", + "license": "MIT", "dependencies": { - "which": "^4.0.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.6", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-controllable-state": "1.1.0" }, - "engines": { - "node": "^16.14.0 || >=18.0.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/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "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/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "license": "ISC", + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", + "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0" }, - "bin": { - "node-which": "bin/which.js" + "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" }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=8.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.200.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", - "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", "dependencies": { - "@opentelemetry/api": "^1.3.0" + "@radix-ui/react-use-layout-effect": "1.1.0" }, - "engines": { - "node": ">=8.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@opentelemetry/core": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", - "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@radix-ui/react-label": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.2.tgz", + "integrity": "sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==", + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" + "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@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/@opentelemetry/instrumentation": { - "version": "0.200.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz", - "integrity": "sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/api-logs": "0.200.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "shimmer": "^1.2.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", - "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.6.tgz", + "integrity": "sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@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/@opentelemetry/sdk-logs": { - "version": "0.200.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz", - "integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", + "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.200.0", - "@opentelemetry/core": "2.0.0", - "@opentelemetry/resources": "2.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" + "@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/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", - "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", + "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@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/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", - "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.0.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.30.0.tgz", - "integrity": "sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=14" + "@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/@opentelemetry/sdk-metrics": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", - "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1" - }, - "engines": { - "node": ">=14" + "@radix-ui/react-slot": "1.1.2" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@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/@opentelemetry/sdk-trace-base": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", - "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz", + "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=14" + "@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/@orama/cuid2": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@orama/cuid2/-/cuid2-2.2.3.tgz", - "integrity": "sha512-Lcak3chblMejdlSHgYU2lS2cdOhDpU6vkfIJH4m+YKvqQyLqs1bB8+w6NT1MG5bO12NUK2GFc34Mn2xshMIQ1g==", + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.3.tgz", + "integrity": "sha512-l7+NNBfBYYJa9tNqVcP2AGvxdE3lmE6kFTBXdvHgUaZuy+4wGCL1Cl2AfaR7RKyimj7lZURGLwFO59k4eBnDJQ==", "license": "MIT", "dependencies": { - "@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": "3.1.3", - "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.3.tgz", - "integrity": "sha512-UdtAMLe2RxtqvmfNDJSMpYoQYUpXgs+9qXVVFCO0BqHF86gp+uz8N6ftkaLe1p55OQXmliciw7BH34GFozKLnQ==", - "license": "Apache-2.0", - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/@orama/switch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.1.3.tgz", - "integrity": "sha512-Gtah1T5jhF4hv+Bpl1k8ogAg3klTUwWzpI9sUG2XuaLHKPiob0PrVxD7YxJ06BERkFY0KdcDEK6k5fgIYcDPxA==", - "license": "Apache-2.0", - "peerDependencies": { - "@orama/orama": "3.1.3", - "@oramacloud/client": "^2.1.1" - } - }, - "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/@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", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.0.tgz", - "integrity": "sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", - "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", - "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", - "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.2" + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4266,16 +4322,33 @@ } } }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz", - "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", + "node_modules/@radix-ui/react-select": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.6.tgz", + "integrity": "sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==", "license": "MIT", "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-slot": "1.1.2" + "@radix-ui/react-slot": "1.1.2", + "@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-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", @@ -4292,11 +4365,14 @@ } } }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", - "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -4307,41 +4383,54 @@ } } }, - "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==", + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.3.tgz", + "integrity": "sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==", "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@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-dialog": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.7.tgz", - "integrity": "sha512-EIdma8C0C/I6kL6sO02avaCRqi3fmWJpxH6mqbVScorW6nNktzKJT/le7VPho3o/7wCsyRg3z0+Q+Obr0Gy/VQ==", + "node_modules/@radix-ui/react-toast": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.6.tgz", + "integrity": "sha512-gN4dpuIVKEgpLn1z5FhzT9mYRUitbfZq9XqN/7kkBMUgFTzTG8x/KszWJugJXHcwxckY8xcKDZPz7kG3o6DsUA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.6", - "@radix-ui/react-focus-guards": "1.1.2", - "@radix-ui/react-focus-scope": "1.1.3", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-portal": "1.1.5", - "@radix-ui/react-presence": "1.1.3", - "@radix-ui/react-primitive": "2.0.3", - "@radix-ui/react-slot": "1.2.0", - "@radix-ui/react-use-controllable-state": "1.1.1", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@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.2" }, "peerDependencies": { "@types/react": "*", @@ -4358,31 +4447,44 @@ } } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", - "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.8.tgz", + "integrity": "sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==", "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.2" + }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@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-dialog/node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -4394,38 +4496,32 @@ } } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.6.tgz", - "integrity": "sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==", + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.0.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-escape-keydown": "1.1.1" + "@radix-ui/react-use-callback-ref": "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" + "react": "^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-dialog/node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", - "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -4436,39 +4532,26 @@ } } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.3.tgz", - "integrity": "sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==", + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.0.3", - "@radix-ui/react-use-callback-ref": "1.1.1" - }, "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" + "react": "^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-dialog/node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -4479,61 +4562,49 @@ } } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.5.tgz", - "integrity": "sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==", + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.3", - "@radix-ui/react-use-layout-effect": "1.1.1" + "@radix-ui/rect": "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" + "react": "^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-dialog/node_modules/@radix-ui/react-presence": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.3.tgz", - "integrity": "sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA==", + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" + "@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" + "react": "^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-dialog/node_modules/@radix-ui/react-primitive": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.3.tgz", - "integrity": "sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==", + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.2.tgz", + "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.2.0" + "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { "@types/react": "*", @@ -4550,7565 +4621,3899 @@ } } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", - "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@reporters/github": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@reporters/github/-/github-1.7.2.tgz", + "integrity": "sha512-8mvTyKUxxDXkNIWfzv3FsHVwjr8JCwVtwidQws2neV6YgrsJW6OwTOBBhd01RKrDMXPxgpMQuFEfN9hRuUZGuA==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@actions/core": "^1.10.0", + "stack-utils": "^2.0.6" } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", + "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "cpu": [ + "arm64" + ], "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "optional": true, + "os": [ + "darwin" + ], + "peer": true }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.1.tgz", - "integrity": "sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", + "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "optional": true, + "os": [ + "darwin" + ], + "peer": true }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", - "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", + "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", + "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "cpu": [ + "arm64" + ], "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", - "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", + "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "cpu": [ + "x64" + ], "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", - "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", + "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", + "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", + "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", + "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@schummar/icu-type-parser": { + "version": "1.21.5", + "resolved": "https://registry.npmjs.org/@schummar/icu-type-parser/-/icu-type-parser-1.21.5.tgz", + "integrity": "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==", + "license": "MIT" + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@stencil/core": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.28.2.tgz", + "integrity": "sha512-sHwBNionxzHfmjQ93ffaQOBNvd5HrSn8e5KSsiBBaODgC/g9squZoARYHHJ0VFfUpOXkEoZQ+ASixpUBafG9bA==", + "license": "MIT", + "peer": true, + "bin": { + "stencil": "bin/stencil" }, - "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" + "engines": { + "node": ">=16.0.0", + "npm": ">=7.10.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "optionalDependencies": { + "@rollup/rollup-darwin-arm64": "4.34.9", + "@rollup/rollup-darwin-x64": "4.34.9", + "@rollup/rollup-linux-arm64-gnu": "4.34.9", + "@rollup/rollup-linux-arm64-musl": "4.34.9", + "@rollup/rollup-linux-x64-gnu": "4.34.9", + "@rollup/rollup-linux-x64-musl": "4.34.9", + "@rollup/rollup-win32-arm64-msvc": "4.34.9", + "@rollup/rollup-win32-x64-msvc": "4.34.9" } }, - "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.6.tgz", - "integrity": "sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==", + "node_modules/@stencil/react-output-target": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@stencil/react-output-target/-/react-output-target-0.8.2.tgz", + "integrity": "sha512-O7zRCfRbiPmxaW3oaPBB3RFOMQOuy1dfkcUUg+6en6NckrRzC2YEAzzo6iIkppDrPW34TJJRy/mqJUdlBPLJ1g==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.6", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@lit/react": "^1.0.4", + "html-react-parser": "^5.1.10", + "style-object-to-css-string": "^1.0.0", + "ts-morph": "^22.0.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" + "@stencil/core": ">=3 || >= 4.0.0-beta.0 || >= 4.0.0", + "react": "^18 || ^19", + "react-dom": "^18 || ^19" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true + "@stencil/core": { + "optional": false }, - "@types/react-dom": { - "optional": true + "react": { + "optional": false + }, + "react-dom": { + "optional": false } } }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", - "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "node_modules/@stencil/store": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.1.2.tgz", + "integrity": "sha512-wtf9oKps4zBmdLoy1oSZDDc56ux17DZrFNIqqTbdvFXEcPYRzWGD9mRhSC/YxKvC3AdsFXaEsHn7Ph+5fhWcGA==", "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">=18.0.0", + "npm": ">=6.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "@stencil/core": ">=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0" } }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", - "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", + "node_modules/@storybook/addon-controls": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.12.tgz", + "integrity": "sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "1.1.0" + "@storybook/global": "^5.0.0", + "dequal": "^2.0.2", + "ts-dedent": "^2.0.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" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "storybook": "^8.6.12" } }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "node_modules/@storybook/addon-interactions": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.12.tgz", + "integrity": "sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.6.12", + "@storybook/test": "8.6.12", + "polished": "^4.2.2", + "ts-dedent": "^2.2.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "storybook": "^8.6.12" } }, - "node_modules/@radix-ui/react-label": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.2.tgz", - "integrity": "sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==", + "node_modules/@storybook/addon-interactions/node_modules/@storybook/instrumenter": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.12.tgz", + "integrity": "sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.2" + "@storybook/global": "^5.0.0", + "@vitest/utils": "^2.1.1" }, - "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" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "storybook": "^8.6.12" } }, - "node_modules/@radix-ui/react-menu": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.6.tgz", - "integrity": "sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg==", + "node_modules/@storybook/addon-interactions/node_modules/@storybook/test": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.12.tgz", + "integrity": "sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.5", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.2", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.2", - "@radix-ui/react-portal": "1.1.4", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-roving-focus": "1.1.2", - "@radix-ui/react-slot": "1.1.2", - "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.6.12", + "@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" }, - "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" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "storybook": "^8.6.12" } }, - "node_modules/@radix-ui/react-popper": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", - "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", + "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": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-rect": "1.1.0", - "@radix-ui/react-use-size": "1.1.0", - "@radix-ui/rect": "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" + "@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" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", - "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", + "node_modules/@storybook/addon-interactions/node_modules/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-layout-effect": "1.1.0" + "engines": { + "node": ">=12", + "npm": ">=6" }, "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 - } + "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", - "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "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, "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.0" + "color-convert": "^2.0.1" }, - "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" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", - "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "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": { - "@radix-ui/react-slot": "1.1.2" - }, - "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" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz", - "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", + "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-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, + "license": "MIT", + "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, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "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" + "has-flag": "^4.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.3.tgz", - "integrity": "sha512-l7+NNBfBYYJa9tNqVcP2AGvxdE3lmE6kFTBXdvHgUaZuy+4wGCL1Cl2AfaR7RKyimj7lZURGLwFO59k4eBnDJQ==", + "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", + "integrity": "sha512-5n+SXPfMTc4m7sWaJWPWjoHYWc6/B111M2Ia55toQ3GV4ON4vVlTgH9FX+EgCkDticElj99HLTMDJkHRj2yvkg==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@storybook/node-logger": "^8.0.0-alpha.10" }, "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 - } + "webpack": "^5.0.0" } }, - "node_modules/@radix-ui/react-select": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.6.tgz", - "integrity": "sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==", + "node_modules/@storybook/addon-themes": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.12.tgz", + "integrity": "sha512-eqE40MUKTz9lLEOusXjRuDC7DwCSIwlgEnlbvhhEEme8IeKf2di6yvlhenY4nn5QfkUwY1POnZxfJ2OpXj0gqQ==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.5", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.2", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.2", - "@radix-ui/react-portal": "1.1.4", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-slot": "1.1.2", - "@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-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" + "ts-dedent": "^2.0.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" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "storybook": "^8.6.12" } }, - "node_modules/@radix-ui/react-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", - "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "node_modules/@storybook/addon-viewport": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.12.tgz", + "integrity": "sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1" + "memoizerific": "^1.11.3" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "storybook": "^8.6.12" } }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.3.tgz", - "integrity": "sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==", + "node_modules/@storybook/addon-webpack5-compiler-swc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-3.0.0.tgz", + "integrity": "sha512-qkQwQEvHlxwPCHz/xakGfXJusEa1gKMw7enELh6QGopblfN3rMiV084boqiIqBReqWTasSwHOqvuElAu0NQ+8w==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-roving-focus": "1.1.2", - "@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" + "@swc/core": "^1.10.8", + "swc-loader": "^0.2.6" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=18" } }, - "node_modules/@radix-ui/react-toast": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.6.tgz", - "integrity": "sha512-gN4dpuIVKEgpLn1z5FhzT9mYRUitbfZq9XqN/7kkBMUgFTzTG8x/KszWJugJXHcwxckY8xcKDZPz7kG3o6DsUA==", + "node_modules/@storybook/builder-webpack5": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.12.tgz", + "integrity": "sha512-Z7RsQ/1+HbxdbM69JrEFcTL+pnVKUTMmeURMn5/eOvYTGjBtM18vbQTj0LjCUDIjC+v9U+uX8ZJEUVxFbGcxBw==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.5", - "@radix-ui/react-portal": "1.1.4", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@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.2" + "@storybook/core-webpack": "8.6.12", + "@types/semver": "^7.3.4", + "browser-assert": "^1.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "cjs-module-lexer": "^1.2.3", + "constants-browserify": "^1.0.0", + "css-loader": "^6.7.1", + "es-module-lexer": "^1.5.0", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "html-webpack-plugin": "^5.5.0", + "magic-string": "^0.30.5", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "semver": "^7.3.7", + "style-loader": "^3.3.1", + "terser-webpack-plugin": "^5.3.1", + "ts-dedent": "^2.0.0", + "url": "^0.11.0", + "util": "^0.12.4", + "util-deprecate": "^1.0.2", + "webpack": "5", + "webpack-dev-middleware": "^6.1.2", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "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" + "storybook": "^8.6.12" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "typescript": { "optional": true } } }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.8.tgz", - "integrity": "sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==", + "node_modules/@storybook/components": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.12.tgz", + "integrity": "sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.5", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.2", - "@radix-ui/react-portal": "1.1.4", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-slot": "1.1.2", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "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 - } + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "node_modules/@storybook/core": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.12.tgz", + "integrity": "sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@storybook/theming": "8.6.12", + "better-opn": "^3.0.2", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", + "esbuild-register": "^3.5.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "process": "^0.11.10", + "recast": "^0.23.5", + "semver": "^7.6.2", + "util": "^0.12.5", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "prettier": "^2 || ^3" }, "peerDependenciesMeta": { - "@types/react": { + "prettier": { "optional": true } } }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "node_modules/@storybook/core-webpack": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.12.tgz", + "integrity": "sha512-TiE+KOm0hxb/p0JxeGHKxqTNX+xnTOFsBh6uloCSuvodutJ5pR/XpxKVxwo1gtSc0Uq3qpgbMhW6qYlYQetnKA==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" + "ts-dedent": "^2.0.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "storybook": "^8.6.12" } }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "node_modules/@storybook/csf": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.13.tgz", + "integrity": "sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/manager-api": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.12.tgz", + "integrity": "sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/node-logger": { + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.6.8.tgz", + "integrity": "sha512-uzUxS6AdQGDh+SpEFZQ7alqv4HUTZojntPtKWgx5aiDK61AU9JGa/MAny18ZVitLgY4FloO46E802gUaWdnYCA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "node_modules/@storybook/preset-react-webpack": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.12.tgz", + "integrity": "sha512-aCCHjR/jsVPVThRH7nK70wS0Od44M6hqkkakg3xr7LETZZGj99heen6t4VHvz8gcQYT9l6R/oZwCl7f/PQ3ZBQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@storybook/core-webpack": "8.6.12", + "@storybook/react": "8.6.12", + "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", + "@types/semver": "^7.3.4", + "find-up": "^5.0.0", + "magic-string": "^0.30.5", + "react-docgen": "^7.0.0", + "resolve": "^1.22.8", + "semver": "^7.3.7", + "tsconfig-paths": "^4.2.0", + "webpack": "5" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "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.6.12" }, "peerDependenciesMeta": { - "@types/react": { + "typescript": { "optional": true } } }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", - "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "node_modules/@storybook/preview-api": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.12.tgz", + "integrity": "sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==", + "dev": true, "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/react": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.12.tgz", + "integrity": "sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/components": "8.6.12", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "8.6.12", + "@storybook/preview-api": "8.6.12", + "@storybook/react-dom-shim": "8.6.12", + "@storybook/theming": "8.6.12" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@storybook/test": "8.6.12", + "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.6.12", + "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { - "@types/react": { + "@storybook/test": { + "optional": true + }, + "typescript": { "optional": true } } }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", - "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "node_modules/@storybook/react-docgen-typescript-plugin": { + "version": "1.0.6--canary.9.0c3f3b7.0", + "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": { - "@radix-ui/rect": "1.1.0" + "debug": "^4.1.1", + "endent": "^2.0.1", + "find-cache-dir": "^3.3.1", + "flat-cache": "^3.0.4", + "micromatch": "^4.0.2", + "react-docgen-typescript": "^2.2.2", + "tslib": "^2.0.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "typescript": ">= 4.x", + "webpack": ">= 4" + } + }, + "node_modules/@storybook/react-dom-shim": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.12.tgz", + "integrity": "sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "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.6.12" } }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", - "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "node_modules/@storybook/react-webpack5": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.12.tgz", + "integrity": "sha512-wZOjPQ00gu85iQoKgwz5uvM3+bhXrQDVR0ppVAj7vVy6cvLEsJXmqNLHbXPCZuKPmvwzYr1QkslMLCIkF8OGdA==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" + "@storybook/builder-webpack5": "8.6.12", + "@storybook/preset-react-webpack": "8.6.12", + "@storybook/react": "8.6.12" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "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.6.12", + "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { - "@types/react": { + "typescript": { "optional": true } } }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.2.tgz", - "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", + "node_modules/@storybook/theming": { + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.12.tgz", + "integrity": "sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==", + "dev": true, "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@swc/core": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.11.tgz", + "integrity": "sha512-pCVY2Wn6dV/labNvssk9b3Owi4WOYsapcbWm90XkIj4xH/56Z6gzja9fsU+4MdPuEfC2Smw835nZHcdCFGyX6A==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@radix-ui/react-primitive": "2.0.2" + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.19" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.11.11", + "@swc/core-darwin-x64": "1.11.11", + "@swc/core-linux-arm-gnueabihf": "1.11.11", + "@swc/core-linux-arm64-gnu": "1.11.11", + "@swc/core-linux-arm64-musl": "1.11.11", + "@swc/core-linux-x64-gnu": "1.11.11", + "@swc/core-linux-x64-musl": "1.11.11", + "@swc/core-win32-arm64-msvc": "1.11.11", + "@swc/core-win32-ia32-msvc": "1.11.11", + "@swc/core-win32-x64-msvc": "1.11.11" }, "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" + "@swc/helpers": "*" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "@swc/helpers": { "optional": true } } }, - "node_modules/@radix-ui/rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", - "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", - "license": "MIT" - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "node_modules/@swc/core-darwin-arm64": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.11.tgz", + "integrity": "sha512-vJcjGVDB8cZH7zyOkC0AfpFYI/7GHKG0NSsH3tpuKrmoAXJyCYspKPGid7FT53EAlWreN7+Pew+bukYf5j+Fmg==", "cpu": [ "arm64" ], - "license": "MIT", + "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" ], - "peer": true + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "node_modules/@swc/core-darwin-x64": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.11.tgz", + "integrity": "sha512-/N4dGdqEYvD48mCF3QBSycAbbQd3yoZ2YHSzYesQf8usNc2YpIhYqEH3sql02UsxTjEFOJSf1bxZABDdhbSl6A==", "cpu": [ "x64" ], - "license": "MIT", + "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" ], - "peer": true + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.11.tgz", + "integrity": "sha512-hsBhKK+wVXdN3x9MrL5GW0yT8o9GxteE5zHAI2HJjRQel3HtW7m5Nvwaq+q8rwMf4YQRd8ydbvwl4iUOZx7i2Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.11.tgz", + "integrity": "sha512-YOCdxsqbnn/HMPCNM6nrXUpSndLXMUssGTtzT7ffXqr7WuzRg2e170FVDVQFIkb08E7Ku5uOnnUVAChAJQbMOQ==", "cpu": [ "arm64" ], - "license": "MIT", + "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" ], - "peer": true + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.11.tgz", + "integrity": "sha512-nR2tfdQRRzwqR2XYw9NnBk9Fdvff/b8IiJzDL28gRR2QiJWLaE8LsRovtWrzCOYq6o5Uu9cJ3WbabWthLo4jLw==", "cpu": [ "arm64" ], - "license": "MIT", + "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" ], - "peer": true + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.11.tgz", + "integrity": "sha512-b4gBp5HA9xNWNC5gsYbdzGBJWx4vKSGybGMGOVWWuF+ynx10+0sA/o4XJGuNHm8TEDuNh9YLKf6QkIO8+GPJ1g==", "cpu": [ "x64" ], - "license": "MIT", + "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" ], - "peer": true + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.11.tgz", + "integrity": "sha512-dEvqmQVswjNvMBwXNb8q5uSvhWrJLdttBSef3s6UC5oDSwOr00t3RQPzyS3n5qmGJ8UMTdPRmsopxmqaODISdg==", "cpu": [ "x64" ], - "license": "MIT", + "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" ], - "peer": true + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.11.tgz", + "integrity": "sha512-aZNZznem9WRnw2FbTqVpnclvl8Q2apOBW2B316gZK+qxbe+ktjOUnYaMhdCG3+BYggyIBDOnaJeQrXbKIMmNdw==", "cpu": [ "arm64" ], - "license": "MIT", + "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" ], - "peer": true + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.11.tgz", + "integrity": "sha512-DjeJn/IfjgOddmJ8IBbWuDK53Fqw7UvOz7kyI/728CSdDYC3LXigzj3ZYs4VvyeOt+ZcQZUB2HA27edOifomGw==", "cpu": [ - "x64" + "ia32" ], - "license": "MIT", + "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" ], - "peer": true - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" + "engines": { + "node": ">=10" + } }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", - "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.11.tgz", + "integrity": "sha512-Gp/SLoeMtsU4n0uRoKDOlGrRC6wCfifq7bqLwSlAG8u8MyJYJCcwjg7ggm0rhLdC2vbiZ+lLVl3kkETp+JUvKg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" - }, - "node_modules/@schummar/icu-type-parser": { - "version": "1.21.5", - "resolved": "https://registry.npmjs.org/@schummar/icu-type-parser/-/icu-type-parser-1.21.5.tgz", - "integrity": "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==", - "license": "MIT" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "license": "MIT" + "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/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "node_modules/@swc/types": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.19.tgz", + "integrity": "sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", "dependencies": { - "type-detect": "4.0.8" + "@swc/counter": "^0.1.3" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@tailwindcss/node": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.17.tgz", + "integrity": "sha512-LIdNwcqyY7578VpofXyqjH6f+3fP4nrz7FBLki5HpzqjYfXdF2m/eW18ZfoKePtDGg90Bvvfpov9d2gy5XVCbg==", + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "tailwindcss": "4.0.17" } }, - "node_modules/@stencil/core": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.28.2.tgz", - "integrity": "sha512-sHwBNionxzHfmjQ93ffaQOBNvd5HrSn8e5KSsiBBaODgC/g9squZoARYHHJ0VFfUpOXkEoZQ+ASixpUBafG9bA==", + "node_modules/@tailwindcss/node/node_modules/tailwindcss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", + "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", + "license": "MIT" + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.17.tgz", + "integrity": "sha512-B4OaUIRD2uVrULpAD1Yksx2+wNarQr2rQh65nXqaqbLY1jCd8fO+3KLh/+TH4Hzh2NTHQvgxVbPdUDOtLk7vAw==", "license": "MIT", - "peer": true, - "bin": { - "stencil": "bin/stencil" - }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.10.0" + "node": ">= 10" }, "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@tailwindcss/oxide-android-arm64": "4.0.17", + "@tailwindcss/oxide-darwin-arm64": "4.0.17", + "@tailwindcss/oxide-darwin-x64": "4.0.17", + "@tailwindcss/oxide-freebsd-x64": "4.0.17", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.17", + "@tailwindcss/oxide-linux-arm64-gnu": "4.0.17", + "@tailwindcss/oxide-linux-arm64-musl": "4.0.17", + "@tailwindcss/oxide-linux-x64-gnu": "4.0.17", + "@tailwindcss/oxide-linux-x64-musl": "4.0.17", + "@tailwindcss/oxide-win32-arm64-msvc": "4.0.17", + "@tailwindcss/oxide-win32-x64-msvc": "4.0.17" } }, - "node_modules/@stencil/react-output-target": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@stencil/react-output-target/-/react-output-target-0.8.2.tgz", - "integrity": "sha512-O7zRCfRbiPmxaW3oaPBB3RFOMQOuy1dfkcUUg+6en6NckrRzC2YEAzzo6iIkppDrPW34TJJRy/mqJUdlBPLJ1g==", - "license": "MIT", - "dependencies": { - "@lit/react": "^1.0.4", - "html-react-parser": "^5.1.10", - "style-object-to-css-string": "^1.0.0", - "ts-morph": "^22.0.0" - }, - "peerDependencies": { - "@stencil/core": ">=3 || >= 4.0.0-beta.0 || >= 4.0.0", - "react": "^18 || ^19", - "react-dom": "^18 || ^19" - }, - "peerDependenciesMeta": { - "@stencil/core": { - "optional": false - }, - "react": { - "optional": false - }, - "react-dom": { - "optional": false - } + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.17.tgz", + "integrity": "sha512-3RfO0ZK64WAhop+EbHeyxGThyDr/fYhxPzDbEQjD2+v7ZhKTb2svTWy+KK+J1PHATus2/CQGAGp7pHY/8M8ugg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@stencil/store": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.1.2.tgz", - "integrity": "sha512-wtf9oKps4zBmdLoy1oSZDDc56ux17DZrFNIqqTbdvFXEcPYRzWGD9mRhSC/YxKvC3AdsFXaEsHn7Ph+5fhWcGA==", + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.17.tgz", + "integrity": "sha512-e1uayxFQCCDuzTk9s8q7MC5jFN42IY7nzcr5n0Mw/AcUHwD6JaBkXnATkD924ZsHyPDvddnusIEvkgLd2CiREg==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18.0.0", - "npm": ">=6.0.0" - }, - "peerDependencies": { - "@stencil/core": ">=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0" + "node": ">= 10" } }, - "node_modules/@storybook/addon-controls": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.12.tgz", - "integrity": "sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==", - "dev": true, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.17.tgz", + "integrity": "sha512-d6z7HSdOKfXQ0HPlVx1jduUf/YtBuCCtEDIEFeBCzgRRtDsUuRtofPqxIVaSCUTOk5+OfRLonje6n9dF6AH8wQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "dequal": "^2.0.2", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@storybook/addon-interactions": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.12.tgz", - "integrity": "sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==", - "dev": true, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.17.tgz", + "integrity": "sha512-EjrVa6lx3wzXz3l5MsdOGtYIsRjgs5Mru6lDv4RuiXpguWeOb3UzGJ7vw7PEzcFadKNvNslEQqoAABeMezprxQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.12", - "@storybook/test": "8.6.12", - "polished": "^4.2.2", - "ts-dedent": "^2.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/instrumenter": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.12.tgz", - "integrity": "sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==", - "dev": true, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.17.tgz", + "integrity": "sha512-65zXfCOdi8wuaY0Ye6qMR5LAXokHYtrGvo9t/NmxvSZtCCitXV/gzJ/WP5ksXPhff1SV5rov0S+ZIZU+/4eyCQ==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@vitest/utils": "^2.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/test": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.12.tgz", - "integrity": "sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==", - "dev": true, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.17.tgz", + "integrity": "sha512-+aaq6hJ8ioTdbJV5IA1WjWgLmun4T7eYLTvJIToiXLHy5JzUERRbIZjAcjgK9qXMwnvuu7rqpxzej+hGoEcG5g==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.12", - "@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.6.12" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "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, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.17.tgz", + "integrity": "sha512-/FhWgZCdUGAeYHYnZKekiOC0aXFiBIoNCA0bwzkICiMYS5Rtx2KxFfMUXQVnl4uZRblG5ypt5vpPhVaXgGk80w==", + "cpu": [ + "arm64" + ], "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" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" + "node": ">= 10" } }, - "node_modules/@storybook/addon-interactions/node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", - "dev": true, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.17.tgz", + "integrity": "sha512-gELJzOHK6GDoIpm/539Golvk+QWZjxQcbkKq9eB2kzNkOvrP0xc5UPgO9bIMNt1M48mO8ZeNenCMGt6tfkvVBg==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" + "node": ">= 10" } }, - "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, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.17.tgz", + "integrity": "sha512-68NwxcJrZn94IOW4TysMIbYv5AlM6So1luTlbYUDIGnKma1yTFGBRNEJ+SacJ3PZE2rgcTBNRHX1TB4EQ/XEHw==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 10" } }, - "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, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.17.tgz", + "integrity": "sha512-AkBO8efP2/7wkEXkNlXzRD4f/7WerqKHlc6PWb5v0jGbbm22DFBLbIM19IJQ3b+tNewQZa+WnPOaGm0SmwMNjw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "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-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, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.17.tgz", + "integrity": "sha512-7/DTEvXcoWlqX0dAlcN0zlmcEu9xSermuo7VNGX9tJ3nYMdo735SHvbrHDln1+LYfF6NhJ3hjbpbjkMOAGmkDg==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "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, + "node_modules/@tailwindcss/postcss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.0.17.tgz", + "integrity": "sha512-qeJbRTB5FMZXmuJF+eePd235EGY6IyJZF0Bh0YM6uMcCI4L9Z7dy+lPuLAhxOJzxnajsbjPoDAKOuAqZRtf1PQ==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.0.17", + "@tailwindcss/oxide": "4.0.17", + "lightningcss": "1.29.2", + "postcss": "^8.4.41", + "tailwindcss": "4.0.17" } }, - "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", - "integrity": "sha512-5n+SXPfMTc4m7sWaJWPWjoHYWc6/B111M2Ia55toQ3GV4ON4vVlTgH9FX+EgCkDticElj99HLTMDJkHRj2yvkg==", + "node_modules/@tailwindcss/postcss/node_modules/tailwindcss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", + "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", + "license": "MIT" + }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/node-logger": "^8.0.0-alpha.10" + "@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" }, - "peerDependencies": { - "webpack": "^5.0.0" + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/addon-themes": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.12.tgz", - "integrity": "sha512-eqE40MUKTz9lLEOusXjRuDC7DwCSIwlgEnlbvhhEEme8IeKf2di6yvlhenY4nn5QfkUwY1POnZxfJ2OpXj0gqQ==", + "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": { - "ts-dedent": "^2.0.0" + "color-convert": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" }, - "peerDependencies": { - "storybook": "^8.6.12" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/addon-viewport": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.12.tgz", - "integrity": "sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==", + "node_modules/@testing-library/dom/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": { - "memoizerific": "^1.11.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "storybook": "^8.6.12" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/addon-webpack5-compiler-swc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-3.0.0.tgz", - "integrity": "sha512-qkQwQEvHlxwPCHz/xakGfXJusEa1gKMw7enELh6QGopblfN3rMiV084boqiIqBReqWTasSwHOqvuElAu0NQ+8w==", + "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", - "dependencies": { - "@swc/core": "^1.10.8", - "swc-loader": "^0.2.6" - }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack5": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.12.tgz", - "integrity": "sha512-Z7RsQ/1+HbxdbM69JrEFcTL+pnVKUTMmeURMn5/eOvYTGjBtM18vbQTj0LjCUDIjC+v9U+uX8ZJEUVxFbGcxBw==", + "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": { - "@storybook/core-webpack": "8.6.12", - "@types/semver": "^7.3.4", - "browser-assert": "^1.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "cjs-module-lexer": "^1.2.3", - "constants-browserify": "^1.0.0", - "css-loader": "^6.7.1", - "es-module-lexer": "^1.5.0", - "fork-ts-checker-webpack-plugin": "^8.0.0", - "html-webpack-plugin": "^5.5.0", - "magic-string": "^0.30.5", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "semver": "^7.3.7", - "style-loader": "^3.3.1", - "terser-webpack-plugin": "^5.3.1", - "ts-dedent": "^2.0.0", - "url": "^0.11.0", - "util": "^0.12.4", - "util-deprecate": "^1.0.2", - "webpack": "5", - "webpack-dev-middleware": "^6.1.2", - "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@storybook/components": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.12.tgz", - "integrity": "sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/core": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.12.tgz", - "integrity": "sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==", + "node_modules/@testing-library/react": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/theming": "8.6.12", - "better-opn": "^3.0.2", - "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", - "esbuild-register": "^3.5.0", - "jsdoc-type-pratt-parser": "^4.0.0", - "process": "^0.11.10", - "recast": "^0.23.5", - "semver": "^7.6.2", - "util": "^0.12.5", - "ws": "^8.2.3" + "@babel/runtime": "^7.12.5" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=18" }, "peerDependencies": { - "prettier": "^2 || ^3" + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { - "prettier": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { "optional": true } } }, - "node_modules/@storybook/core-webpack": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.12.tgz", - "integrity": "sha512-TiE+KOm0hxb/p0JxeGHKxqTNX+xnTOFsBh6uloCSuvodutJ5pR/XpxKVxwo1gtSc0Uq3qpgbMhW6qYlYQetnKA==", + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "dev": true, "license": "MIT", - "dependencies": { - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=12", + "npm": ">=6" }, "peerDependencies": { - "storybook": "^8.6.12" + "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@storybook/csf": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.13.tgz", - "integrity": "sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==", - "dev": true, + "node_modules/@ts-morph/common": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.23.0.tgz", + "integrity": "sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==", "license": "MIT", "dependencies": { - "type-fest": "^2.19.0" + "fast-glob": "^3.3.2", + "minimatch": "^9.0.3", + "mkdirp": "^3.0.1", + "path-browserify": "^1.0.1" } }, - "node_modules/@storybook/global": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/manager-api": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.12.tgz", - "integrity": "sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==", - "dev": true, + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "bin": { + "mkdirp": "dist/cjs/src/bin.js" }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/node-logger": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.6.8.tgz", - "integrity": "sha512-uzUxS6AdQGDh+SpEFZQ7alqv4HUTZojntPtKWgx5aiDK61AU9JGa/MAny18ZVitLgY4FloO46E802gUaWdnYCA==", + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@storybook/preset-react-webpack": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.12.tgz", - "integrity": "sha512-aCCHjR/jsVPVThRH7nK70wS0Od44M6hqkkakg3xr7LETZZGj99heen6t4VHvz8gcQYT9l6R/oZwCl7f/PQ3ZBQ==", - "dev": true, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.12", - "@storybook/react": "8.6.12", - "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@types/semver": "^7.3.4", - "find-up": "^5.0.0", - "magic-string": "^0.30.5", - "react-docgen": "^7.0.0", - "resolve": "^1.22.8", - "semver": "^7.3.7", - "tsconfig-paths": "^4.2.0", - "webpack": "5" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "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.6.12" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@types/estree": "*" } }, - "node_modules/@storybook/preview-api": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.12.tgz", - "integrity": "sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==", + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@storybook/react": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.12.tgz", - "integrity": "sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==", + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.6.12", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.12", - "@storybook/preview-api": "8.6.12", - "@storybook/react-dom-shim": "8.6.12", - "@storybook/theming": "8.6.12" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "@storybook/test": "8.6.12", - "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.6.12", - "typescript": ">= 4.2.x" - }, - "peerDependenciesMeta": { - "@storybook/test": { - "optional": true - }, - "typescript": { - "optional": true - } + "@babel/types": "^7.0.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin": { - "version": "1.0.6--canary.9.0c3f3b7.0", - "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==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "endent": "^2.0.1", - "find-cache-dir": "^3.3.1", - "flat-cache": "^3.0.4", - "micromatch": "^4.0.2", - "react-docgen-typescript": "^2.2.2", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "typescript": ">= 4.x", - "webpack": ">= 4" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@storybook/react-dom-shim": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.12.tgz", - "integrity": "sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==", + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "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.6.12" + "dependencies": { + "@babel/types": "^7.20.7" } }, - "node_modules/@storybook/react-webpack5": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.12.tgz", - "integrity": "sha512-wZOjPQ00gu85iQoKgwz5uvM3+bhXrQDVR0ppVAj7vVy6cvLEsJXmqNLHbXPCZuKPmvwzYr1QkslMLCIkF8OGdA==", + "node_modules/@types/concat-stream": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", + "integrity": "sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.6.12", - "@storybook/preset-react-webpack": "8.6.12", - "@storybook/react": "8.6.12" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "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.6.12", - "typescript": ">= 4.2.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@types/node": "*" } }, - "node_modules/@storybook/theming": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.12.tgz", - "integrity": "sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==", - "dev": true, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "dependencies": { + "@types/ms": "*" } }, - "node_modules/@swc/core": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.11.tgz", - "integrity": "sha512-pCVY2Wn6dV/labNvssk9b3Owi4WOYsapcbWm90XkIj4xH/56Z6gzja9fsU+4MdPuEfC2Smw835nZHcdCFGyX6A==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.19" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.11.11", - "@swc/core-darwin-x64": "1.11.11", - "@swc/core-linux-arm-gnueabihf": "1.11.11", - "@swc/core-linux-arm64-gnu": "1.11.11", - "@swc/core-linux-arm64-musl": "1.11.11", - "@swc/core-linux-x64-gnu": "1.11.11", - "@swc/core-linux-x64-musl": "1.11.11", - "@swc/core-win32-arm64-msvc": "1.11.11", - "@swc/core-win32-ia32-msvc": "1.11.11", - "@swc/core-win32-x64-msvc": "1.11.11" - }, - "peerDependencies": { - "@swc/helpers": "*" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.11.tgz", - "integrity": "sha512-vJcjGVDB8cZH7zyOkC0AfpFYI/7GHKG0NSsH3tpuKrmoAXJyCYspKPGid7FT53EAlWreN7+Pew+bukYf5j+Fmg==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.11.tgz", - "integrity": "sha512-/N4dGdqEYvD48mCF3QBSycAbbQd3yoZ2YHSzYesQf8usNc2YpIhYqEH3sql02UsxTjEFOJSf1bxZABDdhbSl6A==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.11.tgz", - "integrity": "sha512-hsBhKK+wVXdN3x9MrL5GW0yT8o9GxteE5zHAI2HJjRQel3HtW7m5Nvwaq+q8rwMf4YQRd8ydbvwl4iUOZx7i2Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.11.tgz", - "integrity": "sha512-YOCdxsqbnn/HMPCNM6nrXUpSndLXMUssGTtzT7ffXqr7WuzRg2e170FVDVQFIkb08E7Ku5uOnnUVAChAJQbMOQ==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.11.tgz", - "integrity": "sha512-nR2tfdQRRzwqR2XYw9NnBk9Fdvff/b8IiJzDL28gRR2QiJWLaE8LsRovtWrzCOYq6o5Uu9cJ3WbabWthLo4jLw==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.11.tgz", - "integrity": "sha512-b4gBp5HA9xNWNC5gsYbdzGBJWx4vKSGybGMGOVWWuF+ynx10+0sA/o4XJGuNHm8TEDuNh9YLKf6QkIO8+GPJ1g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.11.tgz", - "integrity": "sha512-dEvqmQVswjNvMBwXNb8q5uSvhWrJLdttBSef3s6UC5oDSwOr00t3RQPzyS3n5qmGJ8UMTdPRmsopxmqaODISdg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.11.tgz", - "integrity": "sha512-aZNZznem9WRnw2FbTqVpnclvl8Q2apOBW2B316gZK+qxbe+ktjOUnYaMhdCG3+BYggyIBDOnaJeQrXbKIMmNdw==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.11.tgz", - "integrity": "sha512-DjeJn/IfjgOddmJ8IBbWuDK53Fqw7UvOz7kyI/728CSdDYC3LXigzj3ZYs4VvyeOt+ZcQZUB2HA27edOifomGw==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.11.tgz", - "integrity": "sha512-Gp/SLoeMtsU4n0uRoKDOlGrRC6wCfifq7bqLwSlAG8u8MyJYJCcwjg7ggm0rhLdC2vbiZ+lLVl3kkETp+JUvKg==", - "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.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@swc/jest": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.37.tgz", - "integrity": "sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/create-cache-key-function": "^29.7.0", - "@swc/counter": "^0.1.3", - "jsonc-parser": "^3.2.0" - }, - "engines": { - "npm": ">= 7.0.0" - }, - "peerDependencies": { - "@swc/core": "*" - } - }, - "node_modules/@swc/types": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.19.tgz", - "integrity": "sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.17.tgz", - "integrity": "sha512-LIdNwcqyY7578VpofXyqjH6f+3fP4nrz7FBLki5HpzqjYfXdF2m/eW18ZfoKePtDGg90Bvvfpov9d2gy5XVCbg==", - "license": "MIT", - "dependencies": { - "enhanced-resolve": "^5.18.1", - "jiti": "^2.4.2", - "tailwindcss": "4.0.17" - } - }, - "node_modules/@tailwindcss/node/node_modules/tailwindcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", - "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", - "license": "MIT" - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.17.tgz", - "integrity": "sha512-B4OaUIRD2uVrULpAD1Yksx2+wNarQr2rQh65nXqaqbLY1jCd8fO+3KLh/+TH4Hzh2NTHQvgxVbPdUDOtLk7vAw==", - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.0.17", - "@tailwindcss/oxide-darwin-arm64": "4.0.17", - "@tailwindcss/oxide-darwin-x64": "4.0.17", - "@tailwindcss/oxide-freebsd-x64": "4.0.17", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.17", - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.17", - "@tailwindcss/oxide-linux-arm64-musl": "4.0.17", - "@tailwindcss/oxide-linux-x64-gnu": "4.0.17", - "@tailwindcss/oxide-linux-x64-musl": "4.0.17", - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.17", - "@tailwindcss/oxide-win32-x64-msvc": "4.0.17" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.17.tgz", - "integrity": "sha512-3RfO0ZK64WAhop+EbHeyxGThyDr/fYhxPzDbEQjD2+v7ZhKTb2svTWy+KK+J1PHATus2/CQGAGp7pHY/8M8ugg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.17.tgz", - "integrity": "sha512-e1uayxFQCCDuzTk9s8q7MC5jFN42IY7nzcr5n0Mw/AcUHwD6JaBkXnATkD924ZsHyPDvddnusIEvkgLd2CiREg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.17.tgz", - "integrity": "sha512-d6z7HSdOKfXQ0HPlVx1jduUf/YtBuCCtEDIEFeBCzgRRtDsUuRtofPqxIVaSCUTOk5+OfRLonje6n9dF6AH8wQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.17.tgz", - "integrity": "sha512-EjrVa6lx3wzXz3l5MsdOGtYIsRjgs5Mru6lDv4RuiXpguWeOb3UzGJ7vw7PEzcFadKNvNslEQqoAABeMezprxQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.17.tgz", - "integrity": "sha512-65zXfCOdi8wuaY0Ye6qMR5LAXokHYtrGvo9t/NmxvSZtCCitXV/gzJ/WP5ksXPhff1SV5rov0S+ZIZU+/4eyCQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.17.tgz", - "integrity": "sha512-+aaq6hJ8ioTdbJV5IA1WjWgLmun4T7eYLTvJIToiXLHy5JzUERRbIZjAcjgK9qXMwnvuu7rqpxzej+hGoEcG5g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.17.tgz", - "integrity": "sha512-/FhWgZCdUGAeYHYnZKekiOC0aXFiBIoNCA0bwzkICiMYS5Rtx2KxFfMUXQVnl4uZRblG5ypt5vpPhVaXgGk80w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.17.tgz", - "integrity": "sha512-gELJzOHK6GDoIpm/539Golvk+QWZjxQcbkKq9eB2kzNkOvrP0xc5UPgO9bIMNt1M48mO8ZeNenCMGt6tfkvVBg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.17.tgz", - "integrity": "sha512-68NwxcJrZn94IOW4TysMIbYv5AlM6So1luTlbYUDIGnKma1yTFGBRNEJ+SacJ3PZE2rgcTBNRHX1TB4EQ/XEHw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.17.tgz", - "integrity": "sha512-AkBO8efP2/7wkEXkNlXzRD4f/7WerqKHlc6PWb5v0jGbbm22DFBLbIM19IJQ3b+tNewQZa+WnPOaGm0SmwMNjw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.17.tgz", - "integrity": "sha512-7/DTEvXcoWlqX0dAlcN0zlmcEu9xSermuo7VNGX9tJ3nYMdo735SHvbrHDln1+LYfF6NhJ3hjbpbjkMOAGmkDg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.0.17.tgz", - "integrity": "sha512-qeJbRTB5FMZXmuJF+eePd235EGY6IyJZF0Bh0YM6uMcCI4L9Z7dy+lPuLAhxOJzxnajsbjPoDAKOuAqZRtf1PQ==", - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.0.17", - "@tailwindcss/oxide": "4.0.17", - "lightningcss": "1.29.2", - "postcss": "^8.4.41", - "tailwindcss": "4.0.17" - } - }, - "node_modules/@tailwindcss/postcss/node_modules/tailwindcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", - "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", - "license": "MIT" - }, - "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/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/@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", - "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", - "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/@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/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/@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.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.2.0.tgz", - "integrity": "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@testing-library/dom": "^10.0.0", - "@types/react": "^18.0.0 || ^19.0.0", - "@types/react-dom": "^18.0.0 || ^19.0.0", - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@testing-library/user-event": { - "version": "14.6.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", - "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@ts-morph/common": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.23.0.tgz", - "integrity": "sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==", - "license": "MIT", - "dependencies": { - "fast-glob": "^3.3.2", - "minimatch": "^9.0.3", - "mkdirp": "^3.0.1", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@ts-morph/common/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/concat-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", - "integrity": "sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/doctrine": { - "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" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "license": "MIT" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "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" - }, - "node_modules/@types/is-empty": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", - "integrity": "sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jest/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/@types/jest/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdx": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", - "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/parse-json": { - "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" - }, - "node_modules/@types/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz", - "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==", - "license": "MIT", - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.1.tgz", - "integrity": "sha512-jFf/woGTVTjUJsl2O7hcopJ1r0upqoq/vIOoCj0yLh3RIXxWcljlpuZ+vEBRXsymD1jhfeJrlyTy/S1UW+4y1w==", - "devOptional": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.0.0" - } - }, - "node_modules/@types/resolve": { - "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" - }, - "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/shimmer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", - "license": "MIT", - "peer": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/supports-color": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", - "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "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", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", - "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/type-utils": "8.29.0", - "@typescript-eslint/utils": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - }, - "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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", - "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", - "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.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/type-utils": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", - "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.29.0", - "@typescript-eslint/utils": "8.29.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", - "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", - "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/typescript-estree": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", - "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", - "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", - "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.29.0", - "eslint-visitor-keys": "^4.2.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/visitor-keys/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/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.3.3.tgz", - "integrity": "sha512-EpRILdWr3/xDa/7MoyfO7JuBIJqpBMphtu4+80BK1bRfFcniVT74h3Z7q1+WOc92FuIAYatB1vn9TJR67sORGw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.3.3.tgz", - "integrity": "sha512-ntj/g7lPyqwinMJWZ+DKHBse8HhVxswGTmNgFKJtdgGub3M3zp5BSZ3bvMP+kBT6dnYJLSVlDqdwOq1P8i0+/g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.3.3.tgz", - "integrity": "sha512-l6BT8f2CU821EW7U8hSUK8XPq4bmyTlt9Mn4ERrfjJNoCw0/JoHAh9amZZtV3cwC3bwwIat+GUnrcHTG9+qixw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.3.3.tgz", - "integrity": "sha512-8ScEc5a4y7oE2BonRvzJ+2GSkBaYWyh0/Ko4Q25e/ix6ANpJNhwEPZvCR6GVRmsQAYMIfQvYLdM6YEN+qRjnAQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.3.3.tgz", - "integrity": "sha512-8qQ6l1VTzLNd3xb2IEXISOKwMGXDCzY/UNy/7SovFW2Sp0K3YbL7Ao7R18v6SQkLqQlhhqSBIFRk+u6+qu5R5A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.3.3.tgz", - "integrity": "sha512-v81R2wjqcWXJlQY23byqYHt9221h4anQ6wwN64oMD/WAE+FmxPHFZee5bhRkNVtzqO/q7wki33VFWlhiADwUeQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.3.3.tgz", - "integrity": "sha512-cAOx/j0u5coMg4oct/BwMzvWJdVciVauUvsd+GQB/1FZYKQZmqPy0EjJzJGbVzFc6gbnfEcSqvQE6gvbGf2N8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.3.3.tgz", - "integrity": "sha512-mq2blqwErgDJD4gtFDlTX/HZ7lNP8YCHYFij2gkXPtMzrXxPW1hOtxL6xg4NWxvnj4bppppb0W3s/buvM55yfg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.3.3.tgz", - "integrity": "sha512-u0VRzfFYysarYHnztj2k2xr+eu9rmgoTUUgCCIT37Nr+j0A05Xk2c3RY8Mh5+DhCl2aYibihnaAEJHeR0UOFIQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.3.3.tgz", - "integrity": "sha512-OrVo5ZsG29kBF0Ug95a2KidS16PqAMmQNozM6InbquOfW/udouk063e25JVLqIBhHLB2WyBnixOQ19tmeC/hIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.3.3.tgz", - "integrity": "sha512-PYnmrwZ4HMp9SkrOhqPghY/aoL+Rtd4CQbr93GlrRTjK6kDzfMfgz3UH3jt6elrQAfupa1qyr1uXzeVmoEAxUA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.3.3.tgz", - "integrity": "sha512-81AnQY6fShmktQw4hWDUIilsKSdvr/acdJ5azAreu2IWNlaJOKphJSsUVWE+yCk6kBMoQyG9ZHCb/krb5K0PEA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.3.3.tgz", - "integrity": "sha512-X/42BMNw7cW6xrB9syuP5RusRnWGoq+IqvJO8IDpp/BZg64J1uuIW6qA/1Cl13Y4LyLXbJVYbYNSKwR/FiHEng==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.3.3.tgz", - "integrity": "sha512-EGNnNGQxMU5aTN7js3ETYvuw882zcO+dsVjs+DwO2j/fRVKth87C8e2GzxW1L3+iWAXMyJhvFBKRavk9Og1Z6A==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.3.3.tgz", - "integrity": "sha512-GraLbYqOJcmW1qY3osB+2YIiD62nVf2/bVLHZmrb4t/YSUwE03l7TwcDJl08T/Tm3SVhepX8RQkpzWbag/Sb4w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vcarl/remark-headings": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@vcarl/remark-headings/-/remark-headings-0.1.0.tgz", - "integrity": "sha512-ffQxJUcapJ9Bk+fiGN49YJ9RaYMibrSTSezB1Fcrtu+0YSZxA3bsaLlIv1u/4sjPIeW/BKrs4xtMT3l3P9Ba5Q==", - "license": "MIT", - "dependencies": { - "mdast-util-to-string": "^3.1.0", - "unist-util-visit": "^4.0.0" - } - }, - "node_modules/@vcarl/remark-headings/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@vercel/analytics": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.5.0.tgz", - "integrity": "sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==", - "license": "MPL-2.0", - "peerDependencies": { - "@remix-run/react": "^2", - "@sveltejs/kit": "^1 || ^2", - "next": ">= 13", - "react": "^18 || ^19 || ^19.0.0-rc", - "svelte": ">= 4", - "vue": "^3", - "vue-router": "^4" - }, - "peerDependenciesMeta": { - "@remix-run/react": { - "optional": true - }, - "@sveltejs/kit": { - "optional": true - }, - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "svelte": { - "optional": true - }, - "vue": { - "optional": true - }, - "vue-router": { - "optional": true - } - } - }, - "node_modules/@vercel/otel": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@vercel/otel/-/otel-1.10.4.tgz", - "integrity": "sha512-X01cOLU2Aiku4y1Vn9HQ8VmkQEdIQiWhjHa7DEUspcNGNg0Xm7GYAU7ErZ0pH/5spsrvb2wpIIHSBFgs0M5p4g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.7.0", - "@opentelemetry/api-logs": ">=0.46.0 && <1.0.0", - "@opentelemetry/instrumentation": ">=0.46.0 && <1.0.0", - "@opentelemetry/resources": "^1.19.0", - "@opentelemetry/sdk-logs": ">=0.46.0 && <1.0.0", - "@opentelemetry/sdk-metrics": "^1.19.0", - "@opentelemetry/sdk-trace-base": "^1.19.0" - } - }, - "node_modules/@vercel/speed-insights": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.2.0.tgz", - "integrity": "sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw==", - "hasInstallScript": true, - "license": "Apache-2.0", - "peerDependencies": { - "@sveltejs/kit": "^1 || ^2", - "next": ">= 13", - "react": "^18 || ^19 || ^19.0.0-rc", - "svelte": ">= 4", - "vue": "^3", - "vue-router": "^4" - }, - "peerDependenciesMeta": { - "@sveltejs/kit": { - "optional": true - }, - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "svelte": { - "optional": true - }, - "vue": { - "optional": true - }, - "vue-router": { - "optional": true - } - } - }, - "node_modules/@vitest/expect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", - "chai": "^5.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/@vitest/utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.0.5", - "estree-walker": "^3.0.3", - "loupe": "^3.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", - "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", - "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.1.9", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "devOptional": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "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", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/ast-types": { - "version": "0.16.1", - "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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "license": "MIT", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "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/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@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", - "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/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", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "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" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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" - }, - "node_modules/better-opn": { - "version": "3.0.2", - "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" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boolbase": { - "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" - }, - "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/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-assert": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", - "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "devOptional": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/cacheable": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", - "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "hookified": "^1.7.1", - "keyv": "^5.3.1" - } - }, - "node_modules/cacheable/node_modules/keyv": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz", - "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@keyv/serialize": "^1.0.3" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "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" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001707", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", - "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "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" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/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/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "license": "MIT" - }, - "node_modules/classnames": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", - "license": "MIT" - }, - "node_modules/clean-css": { - "version": "5.3.3", - "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" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "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" - } - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "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", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "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/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/code-block-writer": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", - "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", - "license": "MIT" - }, - "node_modules/collapse-white-space": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "license": "MIT", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "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/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, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "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" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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/commondir": { - "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" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "node_modules/@types/doctrine": { + "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" }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "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, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "devOptional": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/create-jest/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, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "devOptional": 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/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" + "@types/eslint": "*", + "@types/estree": "*" } }, - "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/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "@types/estree": "*" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "@types/unist": "*" } }, - "node_modules/css-functions-list": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", - "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", + "node_modules/@types/html-minifier-terser": { + "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", - "engines": { - "node": ">=12 || >=16" - } + "license": "MIT" }, - "node_modules/css-loader": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", - "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "node_modules/@types/is-empty": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", + "integrity": "sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==", "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } + "license": "MIT" }, - "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/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "devOptional": true, + "license": "MIT" }, - "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "license": "MIT", "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "@types/unist": "*" } }, - "node_modules/css-what": { - "version": "6.1.0", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "license": "MIT" }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/@types/node": { + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", + "devOptional": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" + "dependencies": { + "undici-types": "~6.21.0" } }, - "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/@types/parse-json": { + "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" }, - "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, + "node_modules/@types/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz", + "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==", "license": "MIT", "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" + "csstype": "^3.0.2" } }, - "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/@types/react-dom": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.1.tgz", + "integrity": "sha512-jFf/woGTVTjUJsl2O7hcopJ1r0upqoq/vIOoCj0yLh3RIXxWcljlpuZ+vEBRXsymD1jhfeJrlyTy/S1UW+4y1w==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "node_modules/@types/resolve": { + "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" }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "node_modules/@types/semver": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT" }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, + "node_modules/@types/shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } + "peer": true }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "node_modules/@types/supports-color": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", + "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "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", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", + "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/type-utils": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/inspect-js" + "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", + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "node_modules/@typescript-eslint/parser": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", + "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", + "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", - "license": "MIT" - }, - "node_modules/decode-named-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", - "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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 - } - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", + "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@typescript-eslint/types": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", + "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", + "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.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": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/@typescript-eslint/utils": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", + "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", "dev": true, "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0" + }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" + "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", + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", + "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", "dependencies": { - "dequal": "^2.0.0" + "@typescript-eslint/types": "8.29.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "node_modules/@typescript-eslint/visitor-keys/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": "BSD-3-Clause", + "license": "Apache-2.0", "engines": { - "node": ">=0.3.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.3.3.tgz", + "integrity": "sha512-EpRILdWr3/xDa/7MoyfO7JuBIJqpBMphtu4+80BK1bRfFcniVT74h3Z7q1+WOc92FuIAYatB1vn9TJR67sORGw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.3.3.tgz", + "integrity": "sha512-ntj/g7lPyqwinMJWZ+DKHBse8HhVxswGTmNgFKJtdgGub3M3zp5BSZ3bvMP+kBT6dnYJLSVlDqdwOq1P8i0+/g==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.3.3.tgz", + "integrity": "sha512-l6BT8f2CU821EW7U8hSUK8XPq4bmyTlt9Mn4ERrfjJNoCw0/JoHAh9amZZtV3cwC3bwwIat+GUnrcHTG9+qixw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.3.3.tgz", + "integrity": "sha512-8ScEc5a4y7oE2BonRvzJ+2GSkBaYWyh0/Ko4Q25e/ix6ANpJNhwEPZvCR6GVRmsQAYMIfQvYLdM6YEN+qRjnAQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "utila": "~0.4" - } + "optional": true, + "os": [ + "linux" + ] }, - "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/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.3.3.tgz", + "integrity": "sha512-8qQ6l1VTzLNd3xb2IEXISOKwMGXDCzY/UNy/7SovFW2Sp0K3YbL7Ao7R18v6SQkLqQlhhqSBIFRk+u6+qu5R5A==", + "cpu": [ + "arm" + ], "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" - } + "optional": true, + "os": [ + "linux" + ] }, - "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==", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.3.3.tgz", + "integrity": "sha512-v81R2wjqcWXJlQY23byqYHt9221h4anQ6wwN64oMD/WAE+FmxPHFZee5bhRkNVtzqO/q7wki33VFWlhiADwUeQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.3.3.tgz", + "integrity": "sha512-cAOx/j0u5coMg4oct/BwMzvWJdVciVauUvsd+GQB/1FZYKQZmqPy0EjJzJGbVzFc6gbnfEcSqvQE6gvbGf2N8Q==", + "cpu": [ + "arm64" ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", "dev": true, "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.3.3.tgz", + "integrity": "sha512-mq2blqwErgDJD4gtFDlTX/HZ7lNP8YCHYFij2gkXPtMzrXxPW1hOtxL6xg4NWxvnj4bppppb0W3s/buvM55yfg==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/dompurify": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", - "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.3.3.tgz", + "integrity": "sha512-u0VRzfFYysarYHnztj2k2xr+eu9rmgoTUUgCCIT37Nr+j0A05Xk2c3RY8Mh5+DhCl2aYibihnaAEJHeR0UOFIQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.3.3.tgz", + "integrity": "sha512-OrVo5ZsG29kBF0Ug95a2KidS16PqAMmQNozM6InbquOfW/udouk063e25JVLqIBhHLB2WyBnixOQ19tmeC/hIg==", + "cpu": [ + "x64" + ], "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" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.3.3.tgz", + "integrity": "sha512-PYnmrwZ4HMp9SkrOhqPghY/aoL+Rtd4CQbr93GlrRTjK6kDzfMfgz3UH3jt6elrQAfupa1qyr1uXzeVmoEAxUA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.3.3.tgz", + "integrity": "sha512-81AnQY6fShmktQw4hWDUIilsKSdvr/acdJ5azAreu2IWNlaJOKphJSsUVWE+yCk6kBMoQyG9ZHCb/krb5K0PEA==", + "cpu": [ + "wasm32" + ], "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "@napi-rs/wasm-runtime": "^0.2.7" }, "engines": { - "node": ">= 0.4" + "node": ">=14.0.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.123", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz", - "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==", - "devOptional": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.3.3.tgz", + "integrity": "sha512-X/42BMNw7cW6xrB9syuP5RusRnWGoq+IqvJO8IDpp/BZg64J1uuIW6qA/1Cl13Y4LyLXbJVYbYNSKwR/FiHEng==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "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/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", - "license": "MIT" + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/endent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", - "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.3.3.tgz", + "integrity": "sha512-EGNnNGQxMU5aTN7js3ETYvuw882zcO+dsVjs+DwO2j/fRVKth87C8e2GzxW1L3+iWAXMyJhvFBKRavk9Og1Z6A==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "dedent": "^0.7.0", - "fast-json-parse": "^1.0.3", - "objectorarray": "^1.0.5" - } + "optional": true, + "os": [ + "win32" + ] }, - "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==", + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.3.3.tgz", + "integrity": "sha512-GraLbYqOJcmW1qY3osB+2YIiD62nVf2/bVLHZmrb4t/YSUwE03l7TwcDJl08T/Tm3SVhepX8RQkpzWbag/Sb4w==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" - }, - "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/@vcarl/remark-headings": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@vcarl/remark-headings/-/remark-headings-0.1.0.tgz", + "integrity": "sha512-ffQxJUcapJ9Bk+fiGN49YJ9RaYMibrSTSezB1Fcrtu+0YSZxA3bsaLlIv1u/4sjPIeW/BKrs4xtMT3l3P9Ba5Q==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "mdast-util-to-string": "^3.1.0", + "unist-util-visit": "^4.0.0" } }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "node_modules/@vcarl/remark-headings/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/@vcarl/remark-headings/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@types/unist": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "dev": true, + "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" - }, - "engines": { - "node": ">= 0.4" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "node_modules/@vercel/analytics": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.5.0.tgz", + "integrity": "sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==", + "license": "MPL-2.0", + "peerDependencies": { + "@remix-run/react": "^2", + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" + }, + "peerDependenciesMeta": { + "@remix-run/react": { + "optional": true + }, + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, + "node_modules/@vercel/otel": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@vercel/otel/-/otel-1.10.4.tgz", + "integrity": "sha512-X01cOLU2Aiku4y1Vn9HQ8VmkQEdIQiWhjHa7DEUspcNGNg0Xm7GYAU7ErZ0pH/5spsrvb2wpIIHSBFgs0M5p4g==", "license": "MIT", "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" + "node": ">=18" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/api-logs": ">=0.46.0 && <1.0.0", + "@opentelemetry/instrumentation": ">=0.46.0 && <1.0.0", + "@opentelemetry/resources": "^1.19.0", + "@opentelemetry/sdk-logs": ">=0.46.0 && <1.0.0", + "@opentelemetry/sdk-metrics": "^1.19.0", + "@opentelemetry/sdk-trace-base": "^1.19.0" } }, - "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" + "node_modules/@vercel/speed-insights": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.2.0.tgz", + "integrity": "sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "peerDependencies": { + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" }, - "engines": { - "node": ">= 0.4" + "peerDependenciesMeta": { + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "node_modules/@vitest/expect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", + "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "@vitest/spy": "2.0.5", + "@vitest/utils": "2.0.5", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", + "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "tinyrainbow": "^1.2.0" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "node_modules/@vitest/expect/node_modules/@vitest/utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", + "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" + "@vitest/pretty-format": "2.0.5", + "estree-walker": "^3.0.3", + "loupe": "^3.1.1", + "tinyrainbow": "^1.2.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/vitest" } }, - "node_modules/esast-util-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", - "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "node_modules/@vitest/pretty-format": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0" + "tinyrainbow": "^1.2.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/vitest" } }, - "node_modules/esast-util-from-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", - "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "node_modules/@vitest/spy": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", + "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "acorn": "^8.0.0", - "esast-util-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" + "tinyspy": "^3.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/esbuild": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", - "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.2", - "@esbuild/android-arm": "0.25.2", - "@esbuild/android-arm64": "0.25.2", - "@esbuild/android-x64": "0.25.2", - "@esbuild/darwin-arm64": "0.25.2", - "@esbuild/darwin-x64": "0.25.2", - "@esbuild/freebsd-arm64": "0.25.2", - "@esbuild/freebsd-x64": "0.25.2", - "@esbuild/linux-arm": "0.25.2", - "@esbuild/linux-arm64": "0.25.2", - "@esbuild/linux-ia32": "0.25.2", - "@esbuild/linux-loong64": "0.25.2", - "@esbuild/linux-mips64el": "0.25.2", - "@esbuild/linux-ppc64": "0.25.2", - "@esbuild/linux-riscv64": "0.25.2", - "@esbuild/linux-s390x": "0.25.2", - "@esbuild/linux-x64": "0.25.2", - "@esbuild/netbsd-arm64": "0.25.2", - "@esbuild/netbsd-x64": "0.25.2", - "@esbuild/openbsd-arm64": "0.25.2", - "@esbuild/openbsd-x64": "0.25.2", - "@esbuild/sunos-x64": "0.25.2", - "@esbuild/win32-arm64": "0.25.2", - "@esbuild/win32-ia32": "0.25.2", - "@esbuild/win32-x64": "0.25.2" + "url": "https://opencollective.com/vitest" } }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "node_modules/@vitest/utils": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" + "@vitest/pretty-format": "2.1.9", + "loupe": "^3.1.2", + "tinyrainbow": "^1.2.0" }, - "peerDependencies": { - "esbuild": ">=0.12 <1" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "devOptional": true, "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "devOptional": true, + "license": "MIT" }, - "node_modules/eslint": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", - "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", - "@eslint/config-helpers": "^0.2.0", - "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.23.0", - "@eslint/plugin-kit": "^0.2.7", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" } }, - "node_modules/eslint-config-next": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.4.tgz", - "integrity": "sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==", - "dev": true, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.2.4", - "@rushstack/eslint-patch": "^1.10.3", - "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^5.0.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "devOptional": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.7.tgz", - "integrity": "sha512-U7k84gOzrfl09c33qrIbD3TkWTWu3nt3dK5sDajHSekfoLlYGusIwSdPlPzVeA6TFpi0Wpj+ZdBD8hX4hxPoww==", - "dev": true, - "license": "ISC", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.3.7", - "enhanced-resolve": "^5.15.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^1.0.2", - "stable-hash": "^0.0.4", - "tinyglobby": "^0.2.12" - }, - "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 - } + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/eslint-mdx": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.3.1.tgz", - "integrity": "sha512-3koPGGjGOKXxWBIY0ExcMhtEGWRpbM/xrqIp6c4XDxZOMs/nIUEZKnaKZf+sAMRtqdv5Z99Nq5izWyCLoTdcGg==", - "dev": true, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "devOptional": true, "license": "MIT", "dependencies": { - "acorn": "^8.14.1", - "acorn-jsx": "^5.3.2", - "espree": "^9.6.1 || ^10.3.0", - "estree-util-visit": "^2.0.0", - "remark-mdx": "^3.1.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "synckit": "^0.10.3", - "tslib": "^2.8.1", - "unified": "^11.0.5", - "unified-engine": "^11.2.2", - "unist-util-visit": "^5.0.0", - "uvu": "^0.5.6", - "vfile": "^6.0.3" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "eslint": ">=8.0.0", - "remark-lint-file-extension": "*" - }, - "peerDependenciesMeta": { - "remark-lint-file-extension": { - "optional": true - } + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, + "peer": true, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "acorn": "^8" } }, - "node_modules/eslint-plugin-import-x": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.10.0.tgz", - "integrity": "sha512-5ej+0WILhX3D6wkcdsyYmPp10SUIK6fmuZ6KS8nf9MD8CJ6/S/3Dl7m21g+MLeaTMsvcEXo3JunNAbgHwXxs/g==", - "dev": true, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.0", - "@types/doctrine": "^0.0.9", - "@typescript-eslint/utils": "^8.28.0", - "debug": "^4.4.0", - "doctrine": "^3.0.0", - "eslint-import-resolver-node": "^0.3.9", - "get-tsconfig": "^4.10.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.3 || ^10.0.1", - "semver": "^7.7.1", - "stable-hash": "^0.0.5", - "tslib": "^2.8.1", - "unrs-resolver": "^1.3.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "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": "Apache-2.0", + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "devOptional": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint-plugin-import-x/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", - "dev": true, - "license": "ISC", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "devOptional": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "ajv": "^8.0.0" }, - "engines": { - "node": "20 || >=22" + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/eslint-plugin-import-x/node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "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, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "devOptional": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" } }, - "node_modules/eslint-plugin-import/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": "*" + "node": ">= 8" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "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" - } + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, - "node_modules/eslint-plugin-import/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "dequal": "^2.0.3" } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-mdx": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.3.1.tgz", - "integrity": "sha512-YXm2YANiJ3Sl/6AdZUeR53deGG1JI6rG9crHITR2Mtb9k8SFWRspoHetnIvaYTEfgPsvUwAwVgT1JxRoZywpTA==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", "dependencies": { - "eslint-mdx": "^3.3.1", - "mdast-util-from-markdown": "^2.0.2", - "remark-mdx": "^3.1.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "synckit": "^0.10.3", - "tslib": "^2.8.1", - "unified": "^11.0.5", - "vfile": "^6.0.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "eslint": ">=8.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-no-relative-import-paths": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-relative-import-paths/-/eslint-plugin-no-relative-import-paths-1.6.1.tgz", - "integrity": "sha512-YZNeOnsOrJcwhFw0X29MXjIzu2P/f5X2BZDPWw1R3VUYBRFxNIh77lyoL/XrMU9ewZNQPcEvAgL/cBOT1P330A==", - "dev": true, - "license": "ISC" - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", - "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=4" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "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==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "tslib": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", "bin": { - "semver": "bin/semver.js" + "astring": "bin/astring" } }, - "node_modules/eslint-plugin-storybook": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.12.0.tgz", - "integrity": "sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, "license": "MIT", - "dependencies": { - "@storybook/csf": "^0.1.11", - "@typescript-eslint/utils": "^8.8.1", - "ts-dedent": "^2.2.0" - }, "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "eslint": ">=8" + "node": ">= 0.4" } }, - "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "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/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", "dev": true, - "license": "Apache-2.0", + "license": "MPL-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=4" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "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" + "url": "https://github.com/sponsors/wooorm" } }, - "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/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/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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" + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "open": "^8.0.4" }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/boolbase": { + "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" + }, + "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", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, - "node_modules/eslint/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, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "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==", - "dev": true, + "node_modules/browser-assert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "bin": { + "browserslist": "cli.js" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "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==", - "dev": true, - "license": "MIT", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10.16.0" } }, - "node_modules/eslint/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==", + "node_modules/cacheable": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", + "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "hookified": "^1.7.1", + "keyv": "^5.3.1" + } }, - "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==", + "node_modules/cacheable/node_modules/keyv": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz", + "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@keyv/serialize": "^1.0.3" } }, - "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/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 0.4" } }, - "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==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "devOptional": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } + "node_modules/caniuse-lite": { + "version": "1.0.30001707", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", + "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "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.0" + "node": ">=4" } }, - "node_modules/estree-util-attach-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", - "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/estree-util-build-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", - "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-walker": "^3.0.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, + "engines": { + "node": ">=12" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/estree-util-scope": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", - "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0" - }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/estree-util-to-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", - "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" - }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/estree-util-value-to-estree": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", - "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, "license": "MIT", - "dependencies": { - "is-plain-obj": "^3.0.0" - }, "engines": { - "node": ">=12.0.0" + "node": ">= 16" } }, - "node_modules/estree-util-visit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^3.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/chokidar/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": "BSD-2-Clause", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "devOptional": true, "license": "MIT", "engines": { - "node": ">=0.8.x" + "node": ">=6.0" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "license": "MIT" + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "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": { - "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" + "source-map": "~0.6.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">= 10.0" } }, - "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", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "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.8.0" + "node": ">=0.10.0" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "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", - "dependencies": { - "is-extendable": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true, + "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", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "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.8" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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", + "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": { - "is-glob": "^4.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/fast-json-parse": { - "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" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", "license": "MIT" }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "devOptional": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fault": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", - "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "format": "^0.2.0" - }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/feed": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", - "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "license": "MIT", + "optional": true, "dependencies": { - "xml-js": "^1.6.11" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" }, "engines": { - "node": ">=0.4.0" + "node": ">=12.5.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==", - "dev": true, + "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==", + "devOptional": true, "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=16.0.0" + "node": ">=7.0.0" } }, - "node_modules/file-entry-cache/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, + "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==", + "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": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "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": { - "to-regex-range": "^5.0.1" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "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", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 12" } }, - "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==", + "node_modules/commondir": { + "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" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, + "engines": [ + "node >= 6.0" + ], "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "node_modules/constants-browserify": { + "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": "ISC" + "license": "MIT" }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "license": "MIT", "dependencies": { - "is-callable": "^1.2.7" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "cross-spawn": "^7.0.1" }, - "engines": { - "node": ">=14" + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "8.0.0", - "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, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" + "node": ">= 8" + } + }, + "node_modules/css-functions-list": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12 || >=16" } }, - "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/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=8" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "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==", + "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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "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/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=10" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "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" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "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", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", "dev": true, + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "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/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" } }, - "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==", + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "dev": true, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "license": "MIT" }, - "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "dev": true, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" + "character-entities": "^2.0.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.4.x" + "node": ">=6" } }, - "node_modules/fs-monkey": { - "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" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=0.10.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "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" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -12117,278 +8522,374 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=8" } }, - "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "dequal": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", + "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": ">=6" + "node": ">=0.10.0" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8.0.0" + "dependencies": { + "utila": "~0.4" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "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": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "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", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "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": ">= 0.4" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", + "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", + "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", + "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/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==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", + "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "gopd": "^1.2.0" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "node_modules/electron-to-chromium": { + "version": "1.5.123", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz", + "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==", + "devOptional": true, "license": "ISC" }, - "node_modules/glob": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", - "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" - } + "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/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "license": "MIT" + }, + "node_modules/endent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", + "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" + "dedent": "^0.7.0", + "fast-json-parse": "^1.0.3", + "objectorarray": "^1.0.5" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "devOptional": true, - "license": "BSD-2-Clause" + "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/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", + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10.13.0" } }, - "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", + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { - "node": ">=18" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true, "license": "MIT" }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, "engines": { "node": ">= 0.4" }, @@ -12396,129 +8897,113 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "license": "MIT" - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" } }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" + "engines": { + "node": ">= 0.4" } }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" + "es-errors": "^1.3.0" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "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" + "node": ">= 0.4" } }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "dev": true, - "license": "(Apache-2.0 OR MPL-1.1)" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "hasown": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.4" } }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.0" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -12527,1282 +9012,1317 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 0.4" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" } }, - "node_modules/hast-util-heading-rank": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", - "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" + "debug": "^4.3.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "esbuild": ">=0.12 <1" } }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "devOptional": true, "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=6" } }, - "node_modules/hast-util-to-estree": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", - "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "node_modules/eslint": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-attach-comments": "^3.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "zwitch": "^2.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "node_modules/eslint-config-next": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.4.tgz", + "integrity": "sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" + "@next/eslint-plugin-next": "15.2.4", + "@rushstack/eslint-patch": "^1.10.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^5.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", - "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/hast-util-to-string": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", - "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "ms": "^2.1.1" } }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.7.tgz", + "integrity": "sha512-U7k84gOzrfl09c33qrIbD3TkWTWu3nt3dK5sDajHSekfoLlYGusIwSdPlPzVeA6TFpi0Wpj+ZdBD8hX4hxPoww==", + "dev": true, + "license": "ISC", "dependencies": { - "@types/hast": "^3.0.0" + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.7", + "enhanced-resolve": "^5.15.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^1.0.2", + "stable-hash": "^0.0.4", + "tinyglobby": "^0.2.12" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "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/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "node_modules/eslint-mdx": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.3.1.tgz", + "integrity": "sha512-3koPGGjGOKXxWBIY0ExcMhtEGWRpbM/xrqIp6c4XDxZOMs/nIUEZKnaKZf+sAMRtqdv5Z99Nq5izWyCLoTdcGg==", "dev": true, "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/highlight.js": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", - "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", - "license": "BSD-3-Clause", + "dependencies": { + "acorn": "^8.14.1", + "acorn-jsx": "^5.3.2", + "espree": "^9.6.1 || ^10.3.0", + "estree-util-visit": "^2.0.0", + "remark-mdx": "^3.1.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "synckit": "^0.10.3", + "tslib": "^2.8.1", + "unified": "^11.0.5", + "unified-engine": "^11.2.2", + "unist-util-visit": "^5.0.0", + "uvu": "^0.5.6", + "vfile": "^6.0.3" + }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=8.0.0", + "remark-lint-file-extension": "*" + }, + "peerDependenciesMeta": { + "remark-lint-file-extension": { + "optional": true + } } }, - "node_modules/hookified": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", - "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", - "dev": true, - "license": "MIT" - }, - "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^10.0.1" + "debug": "^3.2.7" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/hosted-git-info/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==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "ISC" - }, - "node_modules/html-dom-parser": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-5.0.13.tgz", - "integrity": "sha512-B7JonBuAfG32I7fDouUQEogBrz3jK9gAuN1r1AaXpED6dIhtg/JwiSRhjGL7aOJwRz3HU4efowCjQBaoXiREqg==", "license": "MIT", "dependencies": { - "domhandler": "5.0.3", - "htmlparser2": "10.0.0" + "ms": "^2.1.1" } }, - "node_modules/html-dom-parser/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/html-dom-parser/node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" + "node": ">=4" }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/html-dom-parser/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", + "node_modules/eslint-plugin-import-x": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.10.0.tgz", + "integrity": "sha512-5ej+0WILhX3D6wkcdsyYmPp10SUIK6fmuZ6KS8nf9MD8CJ6/S/3Dl7m21g+MLeaTMsvcEXo3JunNAbgHwXxs/g==", + "dev": true, + "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0" + "@pkgr/core": "^0.2.0", + "@types/doctrine": "^0.0.9", + "@typescript-eslint/utils": "^8.28.0", + "debug": "^4.4.0", + "doctrine": "^3.0.0", + "eslint-import-resolver-node": "^0.3.9", + "get-tsconfig": "^4.10.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.3 || ^10.0.1", + "semver": "^7.7.1", + "stable-hash": "^0.0.5", + "tslib": "^2.8.1", + "unrs-resolver": "^1.3.3" }, "engines": { - "node": ">= 4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/html-dom-parser/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", + "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": "Apache-2.0", "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "esutils": "^2.0.2" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/html-dom-parser/node_modules/entities": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", - "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", - "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/html-dom-parser/node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" + "node": ">=6.0.0" } }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/eslint-plugin-import-x/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "whatwg-encoding": "^2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "node_modules/eslint-plugin-import-x/node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], "license": "MIT" }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "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" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" + "ms": "^2.1.1" } - }, - "node_modules/html-react-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-5.2.2.tgz", - "integrity": "sha512-yA5012CJGSFWYZsgYzfr6HXJgDap38/AEP4ra8Cw+WHIi2ZRDXRX/QVYdumRf1P8zKyScKd6YOrWYvVEiPfGKg==", + }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, "license": "MIT", "dependencies": { - "domhandler": "5.0.3", - "html-dom-parser": "5.0.13", - "react-property": "2.0.2", - "style-to-js": "1.1.16" - }, - "peerDependencies": { - "@types/react": "0.14 || 15 || 16 || 17 || 18 || 19", - "react": "0.14 || 15 || 16 || 17 || 18 || 19" + "minimist": "^1.2.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/html-react-parser/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", + "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": { - "domelementtype": "^2.3.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": "*" } }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "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" + } + }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "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": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/html-webpack-plugin": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", - "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" + "node": ">=4.0" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "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, - "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" + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, - "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==", + "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": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.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", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "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": "MIT", + "license": "ISC", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 6" + "node": "*" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/eslint-plugin-mdx": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.3.1.tgz", + "integrity": "sha512-YXm2YANiJ3Sl/6AdZUeR53deGG1JI6rG9crHITR2Mtb9k8SFWRspoHetnIvaYTEfgPsvUwAwVgT1JxRoZywpTA==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "eslint-mdx": "^3.3.1", + "mdast-util-from-markdown": "^2.0.2", + "remark-mdx": "^3.1.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "synckit": "^0.10.3", + "tslib": "^2.8.1", + "unified": "^11.0.5", + "vfile": "^6.0.3" }, "engines": { - "node": ">= 6" + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=8.0.0" } }, - "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==", + "node_modules/eslint-plugin-no-relative-import-paths": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-relative-import-paths/-/eslint-plugin-no-relative-import-paths-1.6.1.tgz", + "integrity": "sha512-YZNeOnsOrJcwhFw0X29MXjIzu2P/f5X2BZDPWw1R3VUYBRFxNIh77lyoL/XrMU9ewZNQPcEvAgL/cBOT1P330A==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } + "license": "ISC" }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "dev": true, "license": "MIT", - "bin": { - "husky": "bin.js" + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/typicode" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=10" }, "peerDependencies": { - "postcss": "^8.1.0" + "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/identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "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": { - "harmony-reflect": "^1.4.6" - }, - "engines": { - "node": ">=4" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "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": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 4" + "node": "*" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=6" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "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" } }, - "node_modules/import-in-the-middle": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.1.tgz", - "integrity": "sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==", - "license": "Apache-2.0", - "peer": true, + "node_modules/eslint-plugin-storybook": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.12.0.tgz", + "integrity": "sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==", + "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^8.14.0", - "acorn-import-attributes": "^1.9.5", - "cjs-module-lexer": "^1.2.2", - "module-details-from-path": "^1.0.3" + "@storybook/csf": "^0.1.11", + "@typescript-eslint/utils": "^8.8.1", + "ts-dedent": "^2.2.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "eslint": ">=8" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "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": "MIT", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://opencollective.com/eslint" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/eslint/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", - "engines": { - "node": ">=0.8.19" + "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/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "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==", "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/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "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": "ISC", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", - "license": "MIT" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "node_modules/eslint/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": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/intl-messageformat": { - "version": "10.7.16", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.16.tgz", - "integrity": "sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==", - "license": "BSD-3-Clause", - "dependencies": { - "@formatjs/ecma402-abstract": "2.3.4", - "@formatjs/fast-memoize": "2.2.7", - "@formatjs/icu-messageformat-parser": "2.11.2", - "tslib": "^2.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "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==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" + "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": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "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==", "dev": true, "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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" + }, + "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": "ISC", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "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": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "devOptional": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4.0" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "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", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "devOptional": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/is-bun-module": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz", - "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==", - "dev": true, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", "license": "MIT", "dependencies": { - "semver": "^7.6.3" + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, + "node_modules/estree-util-value-to-estree": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", + "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "is-plain-obj": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12.0.0" } }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/estree": "^1.0.0" } }, - "node_modules/is-empty": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", - "integrity": "sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "MIT" - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.8.x" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" + "is-extendable": "^0.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "devOptional": true, + "license": "MIT" }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.6.0" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", + "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-extglob": "^2.1.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/fast-json-parse": { + "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" }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">= 4.9.1" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "reusify": "^1.0.4" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "format": "^0.2.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "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", "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=16.0.0" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/file-entry-cache/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", - "engines": { - "node": ">= 0.4" + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=16" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "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==", + "node_modules/find-cache-dir": { + "version": "3.3.2", + "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", + "pkg-dir": "^4.1.0" + }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "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": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.16" + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -13811,121 +10331,128 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "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": { - "call-bound": "^1.0.3" + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12.13.0", + "yarn": ">=1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "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": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "node_modules/fork-ts-checker-webpack-plugin/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": "BSD-3-Clause", + "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/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "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", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { "node": ">=10" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { + "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==", @@ -13935,23 +10462,20 @@ "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", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "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": "MIT", + "license": "ISC", "dependencies": { - "semver": "^7.5.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { + "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==", @@ -13964,1705 +10488,1528 @@ "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", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.4.x" } }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "node_modules/fs-monkey": { + "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" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "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==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.4" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jackspeak": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", - "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "dev": true, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "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==", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "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==", + "node_modules/get-tsconfig": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "resolve-pkg-maps": "^1.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "license": "MIT", + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "license": "ISC", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" + "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": { - "jest": "bin/jest.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": "20 || >=22" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10.13.0" } }, - "node_modules/jest-cli/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", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "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": ">=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" + "node": ">=18" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "license": "MIT" }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", "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" + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6.0" } }, - "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==", - "dev": true, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "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": "ISC", + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": "*" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.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==", + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "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==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "dunder-proto": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-symbols": "^1.0.3" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "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" + "url": "https://github.com/sponsors/ljharb" } }, - "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", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "function-bind": "^1.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "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, + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "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, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/hast": "^3.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-each/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, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "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" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@types/hast": "^3.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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==", + "node_modules/he": { + "version": "1.2.0", + "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" + } + }, + "node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "license": "BSD-3-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12.0.0" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/hookified": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", + "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", "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==", + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "node_modules/hosted-git-info/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" + }, + "node_modules/html-dom-parser": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-5.0.13.tgz", + "integrity": "sha512-B7JonBuAfG32I7fDouUQEogBrz3jK9gAuN1r1AaXpED6dIhtg/JwiSRhjGL7aOJwRz3HU4efowCjQBaoXiREqg==", "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "domhandler": "5.0.3", + "htmlparser2": "10.0.0" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, + "node_modules/html-dom-parser/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, + "node_modules/html-dom-parser/node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.12" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/jest-junit": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-16.0.0.tgz", - "integrity": "sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==", - "dev": true, - "license": "Apache-2.0", + "node_modules/html-dom-parser/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { - "mkdirp": "^1.0.4", - "strip-ansi": "^6.0.1", - "uuid": "^8.3.2", - "xml": "^1.0.1" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=10.12.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "license": "MIT", + "node_modules/html-dom-parser/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/jest-leak-detector/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", + "node_modules/html-dom-parser/node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + "node_modules/html-dom-parser/node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" } }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], "license": "MIT" }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "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, + "node_modules/html-react-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-5.2.2.tgz", + "integrity": "sha512-yA5012CJGSFWYZsgYzfr6HXJgDap38/AEP4ra8Cw+WHIi2ZRDXRX/QVYdumRf1P8zKyScKd6YOrWYvVEiPfGKg==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "domhandler": "5.0.3", + "html-dom-parser": "5.0.13", + "react-property": "2.0.2", + "style-to-js": "1.1.16" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "0.14 || 15 || 16 || 17 || 18 || 19", + "react": "0.14 || 15 || 16 || 17 || 18 || 19" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/jest-matcher-utils/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", + "node_modules/html-react-parser/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=10" + "node": ">= 4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "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==", + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "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", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", "license": "MIT", - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "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==", + "node_modules/html-webpack-plugin": { + "version": "5.6.3", + "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": { - "has-flag": "^4.0.0" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "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": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.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==", + "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": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, + "license": "BSD-2-Clause", "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/fb55/entities?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", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bin": { + "husky": "bin.js" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "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" + "url": "https://github.com/sponsors/typicode" } }, - "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", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.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==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=10" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "license": "MIT" + "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": "BSD-3-Clause" }, - "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==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "license": "MIT", + "node_modules/import-in-the-middle": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.1.tgz", + "integrity": "sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "acorn": "^8.14.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" } }, - "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==", + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "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": ">=0.8.19" } }, - "node_modules/jest-resolve/node_modules/has-flag": { + "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "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==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "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==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "license": "ISC" }, - "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==", + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.4" } }, - "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, + "node_modules/intl-messageformat": { + "version": "10.7.16", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.16.tgz", + "integrity": "sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.2", + "tslib": "^2.8.0" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", "license": "MIT", - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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==", - "dev": true, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, - "license": "ISC", + "license": "MIT", "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" + "has-bigints": "^1.0.2" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, "engines": { "node": ">=8" } }, - "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==", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "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": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "node_modules/is-bun-module": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz", + "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "semver": "^7.6.3" } }, - "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==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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==", + "node_modules/is-docker": { + "version": "2.2.1", + "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" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==", "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, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.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==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-util/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, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.12.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==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "license": "MIT", "engines": { "node": ">=10" @@ -15671,197 +12018,225 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "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": ">=0.10.0" } }, - "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==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "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", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "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==", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "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==", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "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", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", + "node_modules/jackspeak": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", + "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", + "license": "BlueOak-1.0.0", "dependencies": { - "has-flag": "^4.0.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jiti": { @@ -15901,52 +12276,6 @@ "node": ">=12.0.0" } }, - "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -16000,13 +12329,6 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -16055,16 +12377,6 @@ "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/known-css-properties": { "version": "0.35.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", @@ -16092,16 +12404,6 @@ "node": ">=0.10" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -17024,16 +13326,6 @@ "semver": "bin/semver.js" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, "node_modules/map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", @@ -18381,16 +14673,6 @@ "node": ">= 0.6" } }, - "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/mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", @@ -18447,19 +14729,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", @@ -18634,13 +14903,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", @@ -18744,19 +15006,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "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/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -18917,22 +15166,6 @@ "wrappy": "1" } }, - "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/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -19241,16 +15474,6 @@ "node": ">=0.10" } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -19786,20 +16009,6 @@ "node": ">=10" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -19829,19 +16038,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -19861,23 +16057,6 @@ "node": ">=6" } }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -19894,13 +16073,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -21557,16 +17729,6 @@ "strip-ansi": "^6.0.1" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -21592,13 +17754,6 @@ "node": ">=8.6.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" - }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -21609,27 +17764,14 @@ "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, + "bin": { + "resolve": "bin/resolve" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-from": { @@ -21652,16 +17794,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -21751,6 +17883,13 @@ "node": "*" } }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -22206,13 +18345,6 @@ "license": "MIT", "optional": true }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -22269,27 +18401,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "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" - } - }, "node_modules/space-separated-tokens": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", @@ -22432,20 +18543,6 @@ "node": ">=0.6.19" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -22657,16 +18754,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -22676,16 +18763,6 @@ "node": ">=0.10.0" } }, - "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/strip-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", @@ -23342,67 +19419,6 @@ "source-map": "^0.6.0" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "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/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -23475,62 +19491,36 @@ "node": ">=14.0.0" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "node_modules/tldts": { + "version": "6.1.85", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", + "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "license": "MIT", "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts-core": "^6.1.85" }, - "engines": { - "node": ">=6" + "bin": { + "tldts": "bin/cli.js" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "node_modules/tldts-core": { + "version": "6.1.85", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", + "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } + "license": "MIT" }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=8.0" } }, "node_modules/trim-lines": { @@ -23617,6 +19607,36 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tsx": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, "node_modules/turbo": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.4.4.tgz", @@ -23725,16 +19745,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -23909,6 +19919,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -24343,17 +20366,6 @@ "node": ">= 0.4" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -24438,16 +20450,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", @@ -24477,21 +20479,6 @@ "node": ">=6" } }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -24688,19 +20675,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/walk-up-path": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", @@ -24708,16 +20682,6 @@ "dev": true, "license": "ISC" }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", @@ -24901,64 +20865,14 @@ "@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" - }, - "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", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">=12" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/which": { @@ -25082,24 +20996,6 @@ "dev": true, "license": "MIT" }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", @@ -25133,11 +21029,29 @@ "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==", - "dev": true, + "extraneous": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -25149,31 +21063,30 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "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==", - "dev": true, - "license": "ISC", + "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==", + "extraneous": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "color-name": "~1.1.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=7.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==", + "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==", + "extraneous": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, @@ -25199,13 +21112,6 @@ } } }, - "node_modules/xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", - "dev": true, - "license": "MIT" - }, "node_modules/xml-js": { "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", @@ -25218,16 +21124,6 @@ "xml-js": "bin/cli.js" } }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -25235,16 +21131,6 @@ "dev": true, "license": "MIT" }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -25264,35 +21150,6 @@ "node": ">= 14" } }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -25402,21 +21259,16 @@ "@storybook/addon-viewport": "^8.6.12", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", "@storybook/react-webpack5": "^8.6.12", - "@swc/jest": "^0.2.37", - "@testing-library/jest-dom": "~6.6.3", - "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", "eslint-plugin-react": "~7.37.4", "eslint-plugin-storybook": "~0.12.0", - "identity-obj-proxy": "^3.0.0", - "jest": "29.7.0", - "jest-environment-jsdom": "29.7.0", - "jest-junit": "16.0.0", + "global-jsdom": "^26.0.0", "storybook": "^8.6.11", "stylelint": "^16.17.0", "stylelint-config-standard": "^37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", + "tsx": "^4.19.3", "typescript": "~5.8.2", "typescript-eslint": "~8.29.0" }, @@ -25424,11 +21276,244 @@ "node": ">=20" } }, + "packages/ui-components/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 14" + } + }, + "packages/ui-components/node_modules/cssstyle": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", + "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@asamuzakjp/css-color": "^3.1.1", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, + "packages/ui-components/node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "packages/ui-components/node_modules/global-jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/global-jsdom/-/global-jsdom-26.0.0.tgz", + "integrity": "sha512-BqXpTNZFjP40N+s4k8Bk9HS8GFVPJB/+TKtwcShM84wLv6C5dH9o1dydI3pL6potanhfDiIAVDbaaGj/uSdRSA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "jsdom": ">=26 <27" + } + }, + "packages/ui-components/node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "packages/ui-components/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "packages/ui-components/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "packages/ui-components/node_modules/jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "packages/ui-components/node_modules/tailwindcss": { "version": "4.0.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", "license": "MIT" + }, + "packages/ui-components/node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "packages/ui-components/node_modules/tr46": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "packages/ui-components/node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "packages/ui-components/node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "packages/ui-components/node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "packages/ui-components/node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "packages/ui-components/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18" + } } } } diff --git a/package.json b/package.json index 632ba3df9b43e..4f4570a276f63 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "prettier:fix": "npm run prettier -- --write", "format": "npm run lint:fix && npm run prettier:fix", "test": "turbo test:unit", + "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout --test-reporter=spec --test-reporter-destination=stdout\" turbo test:unit", "prepare": "husky" }, "dependencies": { @@ -43,6 +44,8 @@ }, "devDependencies": { "@eslint/js": "~9.23.0", + "@reporters/github": "^1.7.2", + "@testing-library/react": "~16.3.0", "@types/node": "22.14.0", "@types/react": "^19.1.0", "@types/react-dom": "^19.1.1", diff --git a/packages/ui-components/Common/AvatarGroup/__tests__/index.test.mjs b/packages/ui-components/Common/AvatarGroup/__tests__/index.test.jsx similarity index 86% rename from packages/ui-components/Common/AvatarGroup/__tests__/index.test.mjs rename to packages/ui-components/Common/AvatarGroup/__tests__/index.test.jsx index 61ae2f643b5bc..c314e1c39e33b 100644 --- a/packages/ui-components/Common/AvatarGroup/__tests__/index.test.mjs +++ b/packages/ui-components/Common/AvatarGroup/__tests__/index.test.jsx @@ -1,3 +1,6 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render, fireEvent } from '@testing-library/react'; import AvatarGroup from '../index'; @@ -35,7 +38,7 @@ describe('AvatarGroup', () => { ); const showMoreButton = getByText(`+${remaining}`); - expect(showMoreButton).toBeInTheDocument(); + assert.ok(showMoreButton.ownerDocument); }); it('displays the rest of the avatars when "show more" button is clicked', () => { @@ -47,6 +50,6 @@ describe('AvatarGroup', () => { fireEvent.click(showMoreButton); const hideMoreButton = getByText(`-${remaining}`); - expect(hideMoreButton).toBeInTheDocument(); + assert.ok(hideMoreButton.ownerDocument); }); }); diff --git a/packages/ui-components/Common/BaseActiveLink/__tests__/index.test.jsx b/packages/ui-components/Common/BaseActiveLink/__tests__/index.test.jsx new file mode 100644 index 0000000000000..435e3a1c9c0b4 --- /dev/null +++ b/packages/ui-components/Common/BaseActiveLink/__tests__/index.test.jsx @@ -0,0 +1,52 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + +import { render, screen } from '@testing-library/react'; + +import ActiveLink from '..'; + +describe('ActiveLink', () => { + it('renders as localized link', async () => { + render( + <ActiveLink className="link" activeClassName="active" href="/link"> + Link + </ActiveLink> + ); + + assert.equal( + (await screen.findByText('Link')).getAttribute('href'), + '/link' + ); + }); + + it('ignores active class when href not matches location.href', async () => { + render( + <ActiveLink className="link" activeClassName="active" href="/not-link"> + Link + </ActiveLink> + ); + + assert.equal( + (await screen.findByText('Link')).getAttribute('class'), + 'link' + ); + }); + + it('sets active class when href matches location.href', async () => { + render( + <ActiveLink + className="link" + activeClassName="active" + href="/link" + pathname="/link" + > + Link + </ActiveLink> + ); + + assert.equal( + (await screen.findByText('Link')).getAttribute('class'), + 'link active' + ); + }); +}); diff --git a/packages/ui-components/Common/BaseActiveLink/__tests__/index.test.mjs b/packages/ui-components/Common/BaseActiveLink/__tests__/index.test.mjs deleted file mode 100644 index 2ce5778f60b63..0000000000000 --- a/packages/ui-components/Common/BaseActiveLink/__tests__/index.test.mjs +++ /dev/null @@ -1,41 +0,0 @@ -import { render, screen } from '@testing-library/react'; - -import ActiveLink from '..'; - -describe('ActiveLink', () => { - it('renders as localized link', () => { - render( - <ActiveLink className="link" activeClassName="active" href="/link"> - Link - </ActiveLink> - ); - - expect(screen.findByText('Link')).resolves.toHaveAttribute( - 'href', - '/en/link' - ); - }); - - it('ignores active class when href not matches location.href', () => { - render( - <ActiveLink className="link" activeClassName="active" href="/not-link"> - Link - </ActiveLink> - ); - - expect(screen.findByText('Link')).resolves.toHaveAttribute('class', 'link'); - }); - - it('sets active class when href matches location.href', () => { - render( - <ActiveLink className="link" activeClassName="active" href="/link"> - Link - </ActiveLink> - ); - - expect(screen.findByText('Link')).resolves.toHaveAttribute( - 'class', - 'link active' - ); - }); -}); diff --git a/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.mjs b/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx similarity index 68% rename from packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.mjs rename to packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx index eff421e52fa06..880454f3c6fbc 100644 --- a/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.mjs +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx @@ -1,5 +1,10 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render, screen } from '@testing-library/react'; +import { isVisible } from '../../../../../../tests/utilities.mjs'; + import PaginationListItem from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; function renderPaginationListItem({ @@ -33,11 +38,11 @@ describe('PaginationListItem', () => { const listItem = screen.getByRole('listitem'); - expect(listItem).toBeVisible(); - expect(listItem).toHaveAttribute('aria-posinset', String(pageNumber)); - expect(listItem).toHaveAttribute('aria-setsize', String(totalPages)); + assert.ok(isVisible()); + assert.equal(listItem.getAttribute('aria-posinset'), String(pageNumber)); + assert.equal(listItem.getAttribute('aria-setsize'), String(totalPages)); - expect(screen.getByRole('link')).toHaveAttribute('href', url); + assert.equal(screen.getByRole('link').getAttribute('href'), url); }); it('Assigns aria-current="page" attribute to the link when the current page is equal to the page number', () => { @@ -48,6 +53,6 @@ describe('PaginationListItem', () => { totalPages: 10, }); - expect(screen.getByRole('link')).toHaveAttribute('aria-current', 'page'); + assert.equal(screen.getByRole('link').getAttribute('aria-current'), 'page'); }); }); diff --git a/packages/ui-components/Common/BasePagination/__tests__/index.test.mjs b/packages/ui-components/Common/BasePagination/__tests__/index.test.jsx similarity index 61% rename from packages/ui-components/Common/BasePagination/__tests__/index.test.mjs rename to packages/ui-components/Common/BasePagination/__tests__/index.test.jsx index 8e4f5b710db0e..b1721557806d2 100644 --- a/packages/ui-components/Common/BasePagination/__tests__/index.test.mjs +++ b/packages/ui-components/Common/BasePagination/__tests__/index.test.jsx @@ -1,5 +1,10 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render, screen } from '@testing-library/react'; +import { isVisible } from '../../../../../tests/utilities.mjs'; + import BasePagination from '@node-core/ui-components/Common/BasePagination'; const getPageLabel = number => number.toString(); @@ -41,19 +46,21 @@ describe('Pagination', () => { it('Renders the navigation buttons even if no pages are passed to it', () => { renderPagination({ currentPage: 0, pages: 0 }); - expect(screen.getByRole('navigation')).toBeVisible(); - - expect( - screen.getByRole('button', { - name: labels.prevAria, - }) - ).toBeVisible(); - - expect( - screen.getByRole('button', { - name: labels.nextAria, - }) - ).toBeVisible(); + assert.ok(isVisible(screen.getByRole('navigation'))); + assert.ok( + isVisible( + screen.getByRole('button', { + name: labels.prevAria, + }) + ) + ); + assert.ok( + isVisible( + screen.getByRole('button', { + name: labels.nextAria, + }) + ) + ); }); it('Renders the passed pages and current page', () => { @@ -63,14 +70,14 @@ describe('Pagination', () => { const pageElements = screen.getAllByRole('link'); - expect(pageElements).toHaveLength(parsedPages.length); + assert.equal(pageElements.length, parsedPages.length); pageElements.forEach((page, index) => { if (index + 1 === currentPage) { - expect(page).toHaveAttribute('aria-current', 'page'); + assert.strictEqual(page.getAttribute('aria-current'), 'page'); } - expect(page).toBeVisible(); + assert.ok(isVisible(page)); }); }); }); @@ -81,20 +88,14 @@ describe('Pagination', () => { pages: 6, }); - expect(screen.queryByText('...')).not.toBeInTheDocument(); + assert.ok(!screen.queryByText('...')?.ownerDocument); const pageElements = screen.getAllByRole('link'); - expect(pageElements).toHaveLength(6); - - expect(pageElements.map(element => element.textContent)).toEqual([ - '1', - '2', - '3', - '4', - '5', - '6', - ]); + assert.deepEqual( + pageElements.map(element => element.textContent), + ['1', '2', '3', '4', '5', '6'] + ); }); it('Shows left ellipsis when the left sibling of the current page is at least two pages away from the first page', () => { @@ -103,20 +104,14 @@ describe('Pagination', () => { pages: 8, }); - expect(screen.getByText('...')).toBeVisible(); + assert.ok(isVisible(screen.getByText('...'))); const pageElements = screen.getAllByRole('link'); - expect(pageElements).toHaveLength(6); - - expect(pageElements.map(element => element.textContent)).toEqual([ - '1', - '4', - '5', - '6', - '7', - '8', - ]); + assert.deepEqual( + pageElements.map(element => element.textContent), + ['1', '4', '5', '6', '7', '8'] + ); }); it('Shows right ellipsis when the right sibling of the current page is at least two pages away from the last page', () => { @@ -125,20 +120,14 @@ describe('Pagination', () => { pages: 8, }); - expect(screen.getByText('...')).toBeVisible(); + assert.ok(isVisible(screen.getByText('...'))); const pageElements = screen.getAllByRole('link'); - expect(pageElements).toHaveLength(6); - - expect(pageElements.map(element => element.textContent)).toEqual([ - '1', - '2', - '3', - '4', - '5', - '8', - ]); + assert.deepEqual( + pageElements.map(element => element.textContent), + ['1', '2', '3', '4', '5', '8'] + ); }); it('Shows right and left ellipses when the current page siblings are both at least two pages away from the first and last pages', () => { @@ -147,19 +136,14 @@ describe('Pagination', () => { pages: 10, }); - expect(screen.getAllByText('...')).toHaveLength(2); + assert.equal(screen.getAllByText('...').length, 2); const pageElements = screen.getAllByRole('link'); - expect(pageElements).toHaveLength(5); - - expect(pageElements.map(element => element.textContent)).toEqual([ - '1', - '4', - '5', - '6', - '10', - ]); + assert.deepEqual( + pageElements.map(element => element.textContent), + ['1', '4', '5', '6', '10'] + ); }); }); @@ -169,11 +153,13 @@ describe('Pagination', () => { pages: 2, }); - expect( - screen.getByRole('button', { - name: labels.prevAria, - }) - ).toHaveAttribute('aria-disabled'); + assert.ok( + screen + .getByRole('button', { + name: labels.prevAria, + }) + .getAttribute('aria-disabled') + ); }); it('Disables "Next" button when the currentPage is equal to the last page', () => { @@ -182,11 +168,13 @@ describe('Pagination', () => { pages: 2, }); - expect( - screen.getByRole('button', { - name: labels.nextAria, - }) - ).toHaveAttribute('aria-disabled'); + assert.ok( + screen + .getByRole('button', { + name: labels.nextAria, + }) + .getAttribute('aria-disabled') + ); }); }); }); diff --git a/packages/ui-components/Common/Select/__tests__/index.test.mjs b/packages/ui-components/Common/Select/__tests__/index.test.jsx similarity index 76% rename from packages/ui-components/Common/Select/__tests__/index.test.mjs rename to packages/ui-components/Common/Select/__tests__/index.test.jsx index 463bd67334338..10368ec877867 100644 --- a/packages/ui-components/Common/Select/__tests__/index.test.mjs +++ b/packages/ui-components/Common/Select/__tests__/index.test.jsx @@ -1,20 +1,22 @@ import { render } from '@testing-library/react'; - +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; import Select from '..'; +const noop = () => {}; + describe('Select', () => { const values = ['Option 1', 'Option 2', 'Option 3']; const defaultValue = 'Option 1'; const placeholder = 'Select an option'; const dropdownLabel = 'Dropdown label'; const label = 'Option label'; - const onChange = jest.fn(); - global.ResizeObserver = jest.fn().mockImplementation(() => ({ - observe: jest.fn(), - unobserve: jest.fn(), - disconnect: jest.fn(), - })); + global.ResizeObserver = class { + observe = noop; + unobserve = noop; + disconnect = noop; + }; it('renders the label when provided', () => { const { getByLabelText } = render( @@ -24,12 +26,12 @@ describe('Select', () => { placeholder={placeholder} dropdownLabel={dropdownLabel} label={label} - onChange={onChange} + onChange={noop} /> ); const element = getByLabelText(label); - expect(element).toBeInTheDocument(); + assert.ok(element.ownerDocument); }); it('renders the default value when provided', () => { @@ -40,12 +42,12 @@ describe('Select', () => { placeholder={placeholder} dropdownLabel={dropdownLabel} label={label} - onChange={onChange} + onChange={noop} /> ); const element = getByText(defaultValue); - expect(element).toBeInTheDocument(); + assert.ok(element.ownerDocument); }); it('renders the placeholder when default value is not provided', () => { @@ -55,11 +57,11 @@ describe('Select', () => { placeholder={placeholder} dropdownLabel={dropdownLabel} label={label} - onChange={onChange} + onChange={noop} /> ); const element = getByText(placeholder); - expect(element).toBeInTheDocument(); + assert.ok(element.ownerDocument); }); }); diff --git a/packages/ui-components/Common/Tabs/__tests__/index.test.mjs b/packages/ui-components/Common/Tabs/__tests__/index.test.jsx similarity index 77% rename from packages/ui-components/Common/Tabs/__tests__/index.test.mjs rename to packages/ui-components/Common/Tabs/__tests__/index.test.jsx index 0d319164bd5bd..fe594118f2ffa 100644 --- a/packages/ui-components/Common/Tabs/__tests__/index.test.mjs +++ b/packages/ui-components/Common/Tabs/__tests__/index.test.jsx @@ -1,3 +1,6 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import * as TabsPrimitive from '@radix-ui/react-tabs'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; @@ -28,22 +31,22 @@ describe('Tabs', () => { it('should render the correct number of tabs', async () => { render(<Sut />); - expect(screen.getAllByRole('tab')).toHaveLength(3); + assert.strictEqual(screen.getAllByRole('tab').length, 3); }); it('should render the correct tab content when clicked', async () => { render(<Sut />); - expect(screen.getByRole('tabpanel')).toHaveTextContent('Package Manager'); + assert.equal(screen.getByRole('tabpanel').textContent, 'Package Manager'); await userEvent.click(screen.getByRole('tab', { name: 'Source Code' })); - expect(screen.getByRole('tabpanel')).toHaveTextContent('Source Code'); + assert.equal(screen.getByRole('tabpanel').textContent, 'Source Code'); }); it('should render the given addons', async () => { render(<Sut addons={<a href="/">addon</a>} />); - expect(screen.getByRole('link', { name: 'addon' })).toBeInTheDocument(); + assert.ok(screen.getByRole('link', { name: 'addon' }).ownerDocument); }); }); diff --git a/packages/ui-components/Common/ThemeToggle/__tests__/index.test.mjs b/packages/ui-components/Common/ThemeToggle/__tests__/index.test.jsx similarity index 79% rename from packages/ui-components/Common/ThemeToggle/__tests__/index.test.mjs rename to packages/ui-components/Common/ThemeToggle/__tests__/index.test.jsx index a719c4705add4..fefa39f4044d1 100644 --- a/packages/ui-components/Common/ThemeToggle/__tests__/index.test.mjs +++ b/packages/ui-components/Common/ThemeToggle/__tests__/index.test.jsx @@ -1,3 +1,6 @@ +import { describe, it, beforeEach } from 'node:test'; +import assert from 'node:assert/strict'; + import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; @@ -22,11 +25,11 @@ describe('ThemeToggle', () => { it('switches dark theme to light theme', async () => { mockCurrentTheme = 'dark'; await userEvent.click(toggle); - expect(mockCurrentTheme).toBe('light'); + assert.equal(mockCurrentTheme, 'light'); }); it('switches light theme to dark theme', async () => { await userEvent.click(toggle); - expect(mockCurrentTheme).toBe('dark'); + assert.equal(mockCurrentTheme, 'dark'); }); }); diff --git a/packages/ui-components/Containers/MetaBar/__tests__/index.test.mjs b/packages/ui-components/Containers/MetaBar/__tests__/index.test.jsx similarity index 87% rename from packages/ui-components/Containers/MetaBar/__tests__/index.test.mjs rename to packages/ui-components/Containers/MetaBar/__tests__/index.test.jsx index ae7bb85bf8dc9..6460c2fdf125d 100644 --- a/packages/ui-components/Containers/MetaBar/__tests__/index.test.mjs +++ b/packages/ui-components/Containers/MetaBar/__tests__/index.test.jsx @@ -1,3 +1,6 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + import { render } from '@testing-library/react'; import MetaBar from '..'; @@ -45,16 +48,16 @@ describe('MetaBar', () => { ); const h1Element = queryByText('Heading Level 1'); - expect(h1Element).not.toBeInTheDocument(); + assert.ok(!h1Element?.ownerDocument); getByText('Heading Level 2'); getByText('Heading Level 3'); getByText('Heading Level 4'); const h5Element = queryByText('Heading Level 5'); - expect(h5Element).not.toBeInTheDocument(); + assert.ok(!h5Element?.ownerDocument); const h6Element = queryByText('Heading Level 6'); - expect(h6Element).not.toBeInTheDocument(); + assert.ok(!h6Element?.ownerDocument); }); }); diff --git a/packages/ui-components/__mocks__/styleMock.js b/packages/ui-components/__mocks__/styleMock.js deleted file mode 100644 index f053ebf7976e3..0000000000000 --- a/packages/ui-components/__mocks__/styleMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/packages/ui-components/jest.config.mjs b/packages/ui-components/jest.config.mjs deleted file mode 100644 index 6e656274fd70f..0000000000000 --- a/packages/ui-components/jest.config.mjs +++ /dev/null @@ -1,30 +0,0 @@ -export default { - setupFilesAfterEnv: ['@testing-library/jest-dom'], - moduleDirectories: ['node_modules', '<rootDir>/'], - testEnvironment: 'jest-environment-jsdom', - testMatch: ['**/__tests__/*.test.mjs'], - coverageReporters: ['json', 'json-summary'], - reporters: ['default', 'jest-junit'], - moduleNameMapper: { - '^.+\\.module\\.(css|sass|scss)$': 'identity-obj-proxy', - '^.+\\.(css|sass|scss)$': '<rootDir>/__mocks__/styleMock.js', - }, - transform: { - '^.+\\.(js|jsx|ts|tsx|mjs)$': [ - '@swc/jest', - { - jsc: { - transform: { - react: { - runtime: 'automatic', - }, - }, - parser: { - syntax: 'typescript', - tsx: true, - }, - }, - }, - ], - }, -}; diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 6032e9b19ad96..c8631c59943e3 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -9,8 +9,8 @@ "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", - "test:unit": "cross-env NODE_NO_WARNINGS=1 jest", - "test:unit:watch": "npm run test:unit -- --watch", + "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --enable-source-maps --import=global-jsdom/register --import=tsx --import=../../tests/setup.mjs --test **/*.test.*", + "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" npm run test:unit", "test": "turbo test:unit" }, "engines": { @@ -41,21 +41,16 @@ "@storybook/addon-viewport": "^8.6.12", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", "@storybook/react-webpack5": "^8.6.12", - "@swc/jest": "^0.2.37", - "@testing-library/jest-dom": "~6.6.3", - "@testing-library/react": "~16.2.0", "@testing-library/user-event": "~14.6.1", "eslint-plugin-react": "~7.37.4", "eslint-plugin-storybook": "~0.12.0", - "identity-obj-proxy": "^3.0.0", - "jest": "29.7.0", - "jest-environment-jsdom": "29.7.0", - "jest-junit": "16.0.0", + "global-jsdom": "^26.0.0", "storybook": "^8.6.11", "stylelint": "^16.17.0", "stylelint-config-standard": "^37.0.0", "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", + "tsx": "^4.19.3", "typescript": "~5.8.2", "typescript-eslint": "~8.29.0" } diff --git a/packages/ui-components/stylelint/__tests__/index.test.mjs b/packages/ui-components/stylelint/__tests__/index.test.mjs index 2deb5a6e1719a..fc9bc67e60a01 100644 --- a/packages/ui-components/stylelint/__tests__/index.test.mjs +++ b/packages/ui-components/stylelint/__tests__/index.test.mjs @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; + import { indentClassNames, cleanClassNames, @@ -9,18 +12,18 @@ describe('cleanClassNames', () => { const input = ' text-xl \r font-bold \n\n text-center '; const expected = 'text-xl font-bold text-center'; - expect(cleanClassNames(input)).toBe(expected); + assert.equal(cleanClassNames(input), expected); }); it('trims leading and trailing spaces', () => { const input = ' mt-4 '; const expected = 'mt-4'; - expect(cleanClassNames(input)).toBe(expected); + assert.equal(cleanClassNames(input), expected); }); it('returns empty string when input is empty', () => { - expect(cleanClassNames('')).toBe(''); + assert.equal(cleanClassNames(''), ''); }); }); @@ -30,16 +33,16 @@ describe('applyIndentation', () => { const indent = ' '; const expected = ['text-xl', ' font-bold', ' text-center'].join('\n'); - expect(applyIndentation(input, indent)).toBe(expected); + assert.equal(applyIndentation(input, indent), expected); }); }); describe('indentClassNames', () => { it('returns null if rule is missing required properties', () => { - expect(indentClassNames(null)).toBeNull(); - expect(indentClassNames({})).toBeNull(); - expect(indentClassNames({ params: 'foo' })).toBeNull(); - expect(indentClassNames({ params: 'foo', raws: {} })).toBeNull(); + assert.equal(indentClassNames(null), null); + assert.equal(indentClassNames({}), null); + assert.equal(indentClassNames({ params: 'foo' }), null); + assert.equal(indentClassNames({ params: 'foo', raws: {} }), null); }); it('cleans and indents class names correctly', () => { @@ -55,7 +58,7 @@ describe('indentClassNames', () => { '\n' ); - expect(result).toEqual({ + assert.deepEqual(result, { ...rule, params: expectedParams, }); @@ -69,7 +72,9 @@ describe('indentClassNames', () => { const result = indentClassNames(rule); - expect(result).toBe(rule); - expect(result.params).toBe('p-4\n mb-2'); + assert.deepEqual(result, { + ...result, + params: 'p-4\n mb-2', + }); }); }); diff --git a/packages/ui-components/turbo.json b/packages/ui-components/turbo.json index aa32f3355f61f..4259720a66ae5 100644 --- a/packages/ui-components/turbo.json +++ b/packages/ui-components/turbo.json @@ -23,8 +23,7 @@ "outputs": ["storybook-static/**"] }, "test:unit": { - "inputs": ["**/*.{ts,tsx,mjs}"], - "outputs": ["coverage/**", "junit.xml"] + "inputs": ["**/*.{ts,tsx,mjs}"] } } } diff --git a/tests/loader.mjs b/tests/loader.mjs new file mode 100644 index 0000000000000..6b2ec8a4aa91f --- /dev/null +++ b/tests/loader.mjs @@ -0,0 +1,46 @@ +import { extname } from 'path'; + +const requiredCode = `import * as React from 'react';`; +const css = new URL('mocks/css.mjs', import.meta.url).href; + +/** + * + * This hook intercepts module resolution, allowing us to handle + * CSS/SCSS files in a custom way. Instead of actually loading the CSS, + * we short-circuit the resolution and return a mock module. + * + * @type {import('node:module').ResolveHook} + */ +export async function resolve(specifier, ctx, nextResolve) { + const ext = extname(specifier); + if (ext === '.css' || ext === '.scss') { + // For CSS/SCSS, return the mock CSS module and skip default resolution. + return { + format: 'module', + url: css, + shortCircuit: true, + }; + } + + return nextResolve(specifier); +} + +/** + * + * This hook is used to modify the source of JSX/TSX files on the fly. + * We prepend the necessary React import to ensure React is available, + * which is required for JSX to work without explicitly importing React. + * + * @type {import('node:module').LoadHook} + */ +export async function load(url, ctx, nextLoad) { + const ext = extname(url); + const result = await nextLoad(url, ctx); + + if (ext === '.jsx' || ext === '.tsx') { + // Ensure React is in scope for JSX transforms. + result.source = requiredCode + result.source; + } + + return result; +} diff --git a/tests/mocks/css.mjs b/tests/mocks/css.mjs new file mode 100644 index 0000000000000..ff8b4c56321a3 --- /dev/null +++ b/tests/mocks/css.mjs @@ -0,0 +1 @@ +export default {}; diff --git a/tests/setup.mjs b/tests/setup.mjs new file mode 100644 index 0000000000000..3215ec2594239 --- /dev/null +++ b/tests/setup.mjs @@ -0,0 +1,10 @@ +import { register } from 'node:module'; +import { afterEach } from 'node:test'; +import { cleanup } from '@testing-library/react'; + +register('./loader.mjs', import.meta.url); + +afterEach(cleanup); + +global.Event = window.Event; +global.CustomEvent = window.CustomEvent; diff --git a/tests/utilities.mjs b/tests/utilities.mjs new file mode 100644 index 0000000000000..26251f459b7d6 --- /dev/null +++ b/tests/utilities.mjs @@ -0,0 +1,20 @@ +// This helper checks if a given element is visible. +// Asserting the output of this is the equal of running +// expect(element).toBeVisible() +export function isVisible(element) { + while (element) { + const style = element.ownerDocument.defaultView.getComputedStyle(element); + if ( + style.display === 'none' || + style.visibility === 'hidden' || + style.visibility === 'collapse' || + style.opacity === '0' || + style.opacity === 0 || + element.hasAttribute('hidden') + ) { + return false; + } + element = element.parentElement; + } + return true; +} From 03595d11099122f8882860dbd9117bdcb8529a7f Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 17 Apr 2025 14:43:08 -0400 Subject: [PATCH 0404/1385] fix(ci): label check (#7659) * fix(ci): label check Signed-off-by: Aviv Keller <me@aviv.sh> * Remove unused `merge_group` configuration --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/chromatic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 8ae41c5fdbb4b..c3739d56d8a1b 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -15,7 +15,6 @@ on: - main types: - labeled - merge_group: defaults: run: @@ -39,6 +38,7 @@ jobs: github.event_name == 'push' || ( github.event_name == 'pull_request_target' && + github.event.label.name == 'github_actions:pull-request' && startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin' ) From e2cf169c01e43f8b5c328caa67d014d04823a704 Mon Sep 17 00:00:00 2001 From: Matt Cowley <me@mattcowley.co.uk> Date: Thu, 17 Apr 2025 20:04:16 +0100 Subject: [PATCH 0405/1385] feat(download): include link to releases about page from downloads (#7652) * Include link to releases about page from downloads * Mirror content change to current download page * Tweak changelog/blog pst link wording Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Matt Cowley <me@mattcowley.co.uk> --------- Signed-off-by: Matt Cowley <me@mattcowley.co.uk> Co-authored-by: Aviv Keller <me@aviv.sh> --- apps/site/pages/en/download/current.mdx | 4 ++-- apps/site/pages/en/download/index.mdx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/site/pages/en/download/current.mdx b/apps/site/pages/en/download/current.mdx index 471b38d940478..16e78d6a8e1d7 100644 --- a/apps/site/pages/en/download/current.mdx +++ b/apps/site/pages/en/download/current.mdx @@ -21,9 +21,9 @@ Or get a prebuilt Node.js® for <Release.OperatingSystemDropdown /> running a <R <section> -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> or <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. +Learn more about [Node.js releases](/about/previous-releases), including the release schedule and LTS status. Learn how to <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verify</LinkWithArrow> signed SHASUMS. diff --git a/apps/site/pages/en/download/index.mdx b/apps/site/pages/en/download/index.mdx index 471b38d940478..16e78d6a8e1d7 100644 --- a/apps/site/pages/en/download/index.mdx +++ b/apps/site/pages/en/download/index.mdx @@ -21,9 +21,9 @@ Or get a prebuilt Node.js® for <Release.OperatingSystemDropdown /> running a <R <section> -Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> for this version. +Read the <Release.ChangelogLink>changelog</Release.ChangelogLink> or <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. -Read the <Release.BlogPostLink>blog post</Release.BlogPostLink> for this version. +Learn more about [Node.js releases](/about/previous-releases), including the release schedule and LTS status. Learn how to <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">verify</LinkWithArrow> signed SHASUMS. From c0d6b17c7b8ac517b4e95a79ff9515248a59cfee Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 17 Apr 2025 15:25:43 -0400 Subject: [PATCH 0406/1385] chore(test): use `t.mock.module` for mocking (#7660) chore(test): use `t.module.mock` for mocking --- apps/site/package.json | 2 +- apps/site/tests/loader.mjs | 37 --------------------------- apps/site/tests/mocks/next-intl.jsx | 16 ------------ apps/site/tests/mocks/next-router.mjs | 6 ----- apps/site/tests/setup.jsx | 28 ++++++++++++++++++++ apps/site/tests/setup.mjs | 5 ---- 6 files changed, 29 insertions(+), 65 deletions(-) delete mode 100644 apps/site/tests/loader.mjs delete mode 100644 apps/site/tests/mocks/next-intl.jsx delete mode 100644 apps/site/tests/mocks/next-router.mjs create mode 100644 apps/site/tests/setup.jsx delete mode 100644 apps/site/tests/setup.mjs diff --git a/apps/site/package.json b/apps/site/package.json index 7e2faf5782987..7e34d4fb855c1 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -16,7 +16,7 @@ "lint": "turbo run lint:md lint:snippets 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", - "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --experimental-test-module-mocks --enable-source-maps --import=global-jsdom/register --import=tsx --import=tests/setup.mjs --test **/*.test.*", + "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --experimental-test-module-mocks --enable-source-maps --import=global-jsdom/register --import=tsx --import=tests/setup.jsx --test **/*.test.*", "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" npm run test:unit", "test": "turbo test:unit" }, diff --git a/apps/site/tests/loader.mjs b/apps/site/tests/loader.mjs deleted file mode 100644 index ff823c379e7d7..0000000000000 --- a/apps/site/tests/loader.mjs +++ /dev/null @@ -1,37 +0,0 @@ -// Map of module specifier prefixes to their corresponding mock files -const mockEntries = [ - ['next-intl', new URL('mocks/next-intl.jsx', import.meta.url).href], - ['next-router', new URL('mocks/next-intl.jsx', import.meta.url).href], -]; - -/** - * Returns the corresponding mock file for a given module specifier, if matched. - * - * @param {string} specifier - Module name or path being imported. - * @returns {string|null} - File name of the mock module or null if no match. - */ -function getMockFile(specifier) { - const entry = mockEntries.find( - ([prefix]) => specifier === prefix || specifier.startsWith(prefix + '/') - ); - return entry?.[1] ?? null; -} - -/** - * Node.js custom module resolution hook to inject mock modules. - * - * @type {import('node:module').ResolveHook} - */ -export async function resolve(specifier, ctx, nextResolve) { - const mockFile = getMockFile(specifier); - - if (mockFile) { - return { - format: 'module', - url: mockFile, - shortCircuit: true, - }; - } - - return nextResolve(specifier); -} diff --git a/apps/site/tests/mocks/next-intl.jsx b/apps/site/tests/mocks/next-intl.jsx deleted file mode 100644 index 116c56347ea9c..0000000000000 --- a/apps/site/tests/mocks/next-intl.jsx +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -export const useTranslations = () => key => key; - -export const useFormatter = () => { - const formatter = format => new Intl.DateTimeFormat('en-US', format); - - return { - date: (date, format) => formatter(format).format(date), - dateTime: (date, format) => formatter(format).format(date), - }; -}; - -export const createNavigation = () => ({ - Link: props => <a {...props} onClick={e => e.preventDefault()} />, -}); diff --git a/apps/site/tests/mocks/next-router.mjs b/apps/site/tests/mocks/next-router.mjs deleted file mode 100644 index 51e1c773089e7..0000000000000 --- a/apps/site/tests/mocks/next-router.mjs +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -export const useRouter = () => ({ - isReady: true, - asPath: '/', -}); diff --git a/apps/site/tests/setup.jsx b/apps/site/tests/setup.jsx new file mode 100644 index 0000000000000..da7511bbf0495 --- /dev/null +++ b/apps/site/tests/setup.jsx @@ -0,0 +1,28 @@ +// We import this file before the root setup.mjs, so React is not automatically imported +import * as React from 'react'; + +import { mock } from 'node:test'; + +import '../../../tests/setup.mjs'; + +mock.module('next-intl', { + namedExports: { + useTranslations: () => key => key, + + useFormatter: () => { + const formatWith = format => new Intl.DateTimeFormat('en-US', format); + return { + date: (date, format) => formatWith(format).format(date), + dateTime: (date, format) => formatWith(format).format(date), + }; + }, + }, +}); + +mock.module('next-intl/navigation', { + namedExports: { + createNavigation: () => ({ + Link: props => <a {...props} onClick={e => e.preventDefault()} />, + }), + }, +}); diff --git a/apps/site/tests/setup.mjs b/apps/site/tests/setup.mjs deleted file mode 100644 index e95b95c76855b..0000000000000 --- a/apps/site/tests/setup.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { register } from 'node:module'; - -import '../../../tests/setup.mjs'; - -register('./loader.mjs', import.meta.url); From de28b0f4a9191ae1e970ef03d36aed8d253bf0ff Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 17 Apr 2025 15:54:44 -0400 Subject: [PATCH 0407/1385] fix(dep-review): incorrect trigger (#7655) Signed-off-by: Aviv Keller <me@aviv.sh> --- .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 c7ac1a9a8d2b8..9eb2a2db0ed8e 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -9,7 +9,7 @@ name: Review Dependencies on: - pull_request_target: + pull_request: branches: - main From 294a102da315e37e6777ab995fff17d93c64f0c0 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 17 Apr 2025 17:02:46 -0400 Subject: [PATCH 0408/1385] fix(codecov): don't upload from merge queue (#7661) --- .github/workflows/lint-and-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index c724857929c94..f76856f817279 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -142,13 +142,13 @@ jobs: run: npm run test:ci - name: Upload test coverage to Codecov - if: ${{ !cancelled() }} + if: ${{ !cancelled() && github.event_name != 'merge_group' }} uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0 with: files: ./apps/site/lcov.info,./packages/ui-components/lcov.info - name: Upload test results to Codecov - if: ${{ !cancelled() }} + if: ${{ !cancelled() && github.event_name != 'merge_group' }} uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0 with: files: ./apps/site/junit.xml,./packages/ui-components/junit.xml From 1655b9d81d694ece60f5611606643c4130c4a6f3 Mon Sep 17 00:00:00 2001 From: Lorenzo Zabot <lorenzozabot@gmail.com> Date: Fri, 18 Apr 2025 13:49:02 +0200 Subject: [PATCH 0409/1385] chore: correct sentence in TypeScript introduction (#7664) --- apps/site/pages/en/learn/typescript/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/typescript/introduction.md b/apps/site/pages/en/learn/typescript/introduction.md index 45f208d7694d0..5ba39d8f04c3b 100644 --- a/apps/site/pages/en/learn/typescript/introduction.md +++ b/apps/site/pages/en/learn/typescript/introduction.md @@ -40,7 +40,7 @@ const justine = { const isJustineAnAdult = isAdult(justine); ``` -The first part (with the `type` keyword) is responsible for declaring our custom object type representing users. Later we utilize this newly created type to create function `isAdult` that accepts one argument of type `User` and returns `boolean`. After this, we create `justine`, our example data that can be used for calling the previously defined function. Finally, we create a new variable with information on whether `justine` is an adult. +The first part (with the `type` keyword) is responsible for declaring our custom object type representing users. Later we utilize this newly created type to create the function `isAdult` that accepts one argument of type `User` and returns a `boolean`. After this, we create `justine`, our example data that can be used for calling the previously defined function. Finally, we create a new variable with information on whether `justine` is an adult. There are additional things about this example that you should know. Firstly, if we do not comply with the declared types, TypeScript will inform us that something is wrong and prevent misuse. Secondly, not everything must be typed explicitly—TypeScript infers types for us. For example, the variable `isJustineAnAdult` is of type `boolean` even if we didn't type it explicitly, and `justine` would be a valid argument for our function even though we didn't declare this variable as of `User` type. From b3d7077479bd014e88e7a0e40425d1ce442e21b0 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 18 Apr 2025 07:50:16 -0400 Subject: [PATCH 0410/1385] fix(fetch): remove incomplete sentence (#7654) --- apps/site/pages/en/learn/getting-started/fetch.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/getting-started/fetch.md b/apps/site/pages/en/learn/getting-started/fetch.md index 9223dd1f919a5..3664e4fd34f9f 100644 --- a/apps/site/pages/en/learn/getting-started/fetch.md +++ b/apps/site/pages/en/learn/getting-started/fetch.md @@ -10,6 +10,8 @@ authors: benhalverson, LankyMoose [Undici](https://undici.nodejs.org) is an HTTP client library that powers the fetch API in Node.js. It was written from scratch and does not rely on the built-in HTTP client in Node.js. It includes a number of features that make it a good choice for high-performance applications. +For information on Undici's specification compliance, see the [Undici documentation](https://undici.nodejs.org/#/?id=specification-compliance-1). + ## Basic GET Usage ```js @@ -65,7 +67,7 @@ main().catch(console.error); Undici allows you to customize the Fetch API by providing options to the `fetch` function. For example, you can set custom headers, set the request method, and set the request body. Here is an example of how you can customize the Fetch API with Undici: -The [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) function takes two arguments: the URL to fetch and an options object. The options object is the [Request](https://undici.nodejs.org/#/docs/api/Dispatcher?id=parameter-requestoptions) object that you can use to customize the request. The function returns a [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises) that resolves to a [Response](https://undici.nodejs.org/#/docs/api/Dispatcher?id=parameter-responsedata) object. One difference between the Fetch API in the browser and the Fetch API in Node.js is that the Node.js version does not support +The [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) function takes two arguments: the URL to fetch and an options object. The options object is the [Request](https://undici.nodejs.org/#/docs/api/Dispatcher?id=parameter-requestoptions) object that you can use to customize the request. The function returns a [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises) that resolves to a [Response](https://undici.nodejs.org/#/docs/api/Dispatcher?id=parameter-responsedata) object. In the following example, we are sending a POST request to the Ollama API with a JSON payload. Ollama is a cli tool that allows you to run LLM's (Large Language Models) on your local machine. You can download it [here](https://ollama.com/download) From 1b0c5cbf4379586a72e03d344af30d362a7b3d69 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 18 Apr 2025 07:52:11 -0400 Subject: [PATCH 0411/1385] feat(learn): add article on promises (#7645) * feat(learn): add article on promises * code review * code review * code review * add withResolvers * reference other article * fix headings --- apps/site/navigation.json | 4 + .../discover-promises-in-nodejs.md | 388 ++++++++++++++++++ packages/i18n/locales/en.json | 1 + 3 files changed, 393 insertions(+) create mode 100644 apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index a764220103b07..f18d7fb9a25af 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -244,6 +244,10 @@ "link": "/learn/asynchronous-work/javascript-asynchronous-programming-and-callbacks", "label": "components.navigation.learn.asynchronousWork.links.javascriptAsynchronousProgrammingAndCallbacks" }, + "discoverPromisesInNodejs": { + "link": "/learn/asynchronous-work/discover-promises-in-nodejs", + "label": "components.navigation.learn.asynchronousWork.links.discoverPromisesInNodejs" + }, "discoverJavascriptTimers": { "link": "/learn/asynchronous-work/discover-javascript-timers", "label": "components.navigation.learn.asynchronousWork.links.discoverJavascriptTimers" diff --git a/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md b/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md new file mode 100644 index 0000000000000..363a9fc1e935d --- /dev/null +++ b/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md @@ -0,0 +1,388 @@ +--- +title: Discover Promises in Node.js +layout: learn +authors: avivkeller +--- + +# Discover Promises in Node.js + +A **Promise** is a special object in JavaScript that represents the eventual completion (or failure) of an asynchronous operation and its resulting value. Essentially, a Promise is a placeholder for a value that is not yet available but will be in the future. + +Think of a Promise like ordering a pizza: you don't get it right away, but the delivery person promises to bring it to you later. You don't know _exactly_ when, but you know the outcome will either be "pizza delivered" or "something went wrong." + +## Promise States + +A Promise can be in one of three states: + +- **Pending**: The initial state, where the asynchronous operation is still running. +- **Fulfilled**: The operation completed successfully, and the Promise is now resolved with a value. +- **Rejected**: The operation failed, and the Promise is settled with a reason (usually an error). + +When you order the pizza, You're in the pending state, hungry and hopeful. If the pizza arrives hot and cheesy, you've entered the fulfilled state. But if the restaurant calls to say they've dropped your pizza on floor, you're in the rejected state. + +Regardless of whether your dinner ends in joy or disappointment, once there's a final outcome, the Promise is considered **settled**. + +## Basic Syntax of a Promise + +One of the most common ways to create a Promise is using the `new Promise()` constructor. The constructor takes a function with two parameters: `resolve` and `reject`. These functions are used to transition the Promise from the **pending** state to either **fulfilled** or **rejected**. + +If an error is thrown inside the executor function, the Promise will be rejected with that error. +The return value of the executor function is ignored: only `resolve` or `reject` should be used to settle the Promise. + +```js +const myPromise = new Promise((resolve, reject) => { + let success = true; + + if (success) { + resolve('Operation was successful!'); + } else { + reject('Something went wrong.'); + } +}); +``` + +In the above example: + +- If the `success` condition is `true`, the Promise is fulfilled and the value `'Operation was successful!'` is passed to the `resolve` function. +- If the `success` condition is `false`, the Promise is rejected and the error `'Something went wrong.'` is passed to the `reject` function. + +## Handling Promises with `.then()`, `.catch()`, and `.finally()` + +Once a Promise is created, you can handle the outcome by using the `.then()`, `.catch()`, and `.finally()` methods. + +- `.then()` is used to handle a fulfilled Promise and access its result. +- `.catch()` is used to handle a rejected Promise and catch any errors that may occur. +- `.finally()` is used to handle a settled Promise, regardless of whether the Promise resolved or rejected. + +```js +const myPromise = new Promise((resolve, reject) => { + let success = true; + + if (success) { + resolve('Operation was successful!'); + } else { + reject('Something went wrong.'); + } +}); + +myPromise + .then(result => { + console.log(result); // This will run if the Promise is fulfilled + }) + .catch(error => { + console.error(error); // This will run if the Promise is rejected + }) + .finally(() => { + console.log('The promise has completed'); // This will run when the Promise is settled + }); +``` + +## Chaining Promises + +One of the great features of Promises is that they allow you to chain multiple asynchronous operations together. When you chain Promises, each `.then()` block waits for the previous one to complete before it runs. + +```js +const { setTimeout: delay } = require('node:timers/promises'); + +const promise = delay(1000).then(() => 'First task completed'); + +promise + .then(result => { + console.log(result); // 'First task completed' + return delay(1000).then(() => 'Second task completed'); // Return a second Promise + }) + .then(result => { + console.log(result); // 'Second task completed' + }) + .catch(error => { + console.error(error); // If any Promise is rejected, catch the error + }); +``` + +## Using Async/Await with Promises + +One of the best ways to work with Promises in modern JavaScript is using **async/await**. This allows you to write asynchronous code that looks synchronous, making it much easier to read and maintain. + +- `async` is used to define a function that returns a Promise. +- `await` is used inside an `async` function to pause execution until a Promise settles. + +```js +async function performTasks() { + try { + const result1 = await promise1; + console.log(result1); // 'First task completed' + + const result2 = await promise2; + console.log(result2); // 'Second task completed' + } catch (error) { + console.error(error); // Catches any rejection or error + } +} + +performTasks(); +``` + +In the `performTasks` function, the `await` keyword ensures that each Promise is settled before moving on to the next statement. This leads to a more linear and readable flow of asynchronous code. + +Essentially, the code above will execute the same as if the user wrote: + +```js +promise1 + .then(function (result1) { + console.log(result1); + return promise2; + }) + .then(function (result2) { + console.log(result2); + }) + .catch(function (error) { + console.log(error); + }); +``` + +### Top-Level Await + +When using [ECMAScript Modules](https://nodejs.org/api/esm.html), the module itself is treated as a top-level scope that supports asynchronous operations natively. This means that you can use [`await` at the top level](https://nodejs.org/api/esm.html#top-level-await) without needing an `async` function. + +```mjs +import { setTimeout as delay } from 'node:timers/promises'; + +await delay(1000); +``` + +Async/await can be much more intricate than the simple examples provided. James Snell, a member of the Node.js Technical Steering Committee, has an [in-depth presentation](https://www.youtube.com/watch?v=XV-u_Ow47s0) that explores the complexities of Promises and async/await. + +## Promise-based Node.js APIs + +Node.js provides **Promise-based versions** of many of its core APIs, especially in cases where asynchronous operations were traditionally handled with callbacks. This makes it easier to work with Node.js APIs and Promises, and reduces the risk of "callback hell." + +For example, the `fs` (file system) module has a Promise-based API under `fs.promises`: + +```js +const fs = require('node:fs').promises; +// Or, you can import the promisified version directly: +// const fs = require('node:fs/promises'); + +async function readFile() { + try { + const data = await fs.readFile('example.txt', 'utf8'); + console.log(data); + } catch (err) { + console.error('Error reading file:', err); + } +} + +readFile(); +``` + +In this example, `fs.promises.readFile()` returns a Promise, which we handle using `async/await` syntax to read the contents of a file asynchronously. + +## Advanced Promise Methods + +JavaScript's `Promise` global provides several powerful methods that help manage multiple asynchronous tasks more effectively: + +### `Promise.all()` + +This method accepts an array of Promises and returns a new Promise that resolves once all the Promises are fulfilled. If any Promise is rejected, `Promise.all()` will immediately reject. However, even if rejection occurs, the Promises continue to execute. When handling a large number of Promises, especially in batch processing, using this function can strain the system's memory. + +```js +const { setTimeout: delay } = require('node:timers/promises'); + +const fetchData1 = delay(1000).then(() => 'Data from API 1'); +const fetchData2 = delay(2000).then(() => 'Data from API 2'); + +Promise.all([fetchData1, fetchData2]) + .then(results => { + console.log(results); // ['Data from API 1', 'Data from API 2'] + }) + .catch(error => { + console.error('Error:', error); + }); +``` + +### `Promise.allSettled()` + +This method waits for all promises to either resolve or reject and returns an array of objects that describe the outcome of each Promise. + +```js +const promise1 = Promise.resolve('Success'); +const promise2 = Promise.reject('Failed'); + +Promise.allSettled([promise1, promise2]).then(results => { + console.log(results); + // [ { status: 'fulfilled', value: 'Success' }, { status: 'rejected', reason: 'Failed' } ] +}); +``` + +Unlike `Promise.all()`, `Promise.allSettled()` does not short-circuit on failure. It waits for all promises to settle, even if some reject. This provides better error handling for batch operations, where you may want to know the status of all tasks, regardless of failure. + +### `Promise.race()` + +This method resolves or rejects as soon as the first Promise settles, whether it resolves or rejects. Regardless of which promise settles first, all promises are fully executed. + +```js +const { setTimeout: delay } = require('node:timers/promises'); + +const task1 = delay(2000).then(() => 'Task 1 done'); +const task2 = delay(1000).then(() => 'Task 2 done'); + +Promise.race([task1, task2]).then(result => { + console.log(result); // 'Task 2 done' (since task2 finishes first) +}); +``` + +### `Promise.any()` + +This method resolves as soon as one of the Promises resolves. If all promises are rejected, it will reject with an `AggregateError`. + +```js +const { setTimeout: delay } = require('node:timers/promises'); + +const api1 = delay(2000).then(() => 'API 1 success'); +const api2 = delay(1000).then(() => 'API 2 success'); +const api3 = delay(1500).then(() => 'API 3 success'); + +Promise.any([api1, api2, api3]) + .then(result => { + console.log(result); // 'API 2 success' (since it resolves first) + }) + .catch(error => { + console.error('All promises rejected:', error); + }); +``` + +### `Promise.reject()` and `Promise.resolve()` + +These methods create a rejected or resolved Promise directly. + +```js +Promise.resolve('Resolved immediately').then(result => { + console.log(result); // 'Resolved immediately' +}); +``` + +### `Promise.try()` + +`Promise.try()` is a method that executes a given function, whether it's synchronous or asynchronous, and wraps the result in a promise. If the function throws an error or returns a rejected promise, `Promise.try()` will return a rejected promise. If the function completes successfully, the returned promise will be fulfilled with its value. + +This can be particularly useful for starting promise chains in a consistent way, especially when working with code that might throw errors synchronously. + +```js +function mightThrow() { + if (Math.random() > 0.5) { + throw new Error('Oops, something went wrong!'); + } + return 'Success!'; +} + +Promise.try(mightThrow) + .then(result => { + console.log('Result:', result); + }) + .catch(err => { + console.error('Caught error:', err.message); + }); +``` + +In this example, `Promise.try()` ensures that if `mightThrow()` throws an error, it will be caught in the `.catch()` block, making it easier to handle both sync and async errors in one place. + +### `Promise.withResolvers()` + +This method creates a new promise along with its associated resolve and reject functions, and returns them in a convenient object. This is used, for example, when you need to create a promise but resolve or reject it later from outside the executor function. + +```js +const { promise, resolve, reject } = Promise.withResolvers(); + +setTimeout(() => { + resolve('Resolved successfully!'); +}, 1000); + +promise.then(value => { + console.log('Success:', value); +}); +``` + +In this example, `Promise.withResolvers()` gives you full control over when and how the promise is resolved or rejected, without needing to define the executor function inline. This pattern is commonly used in event-driven programming, timeouts, or when integrating with non-promise-based APIs. + +## Error Handling with Promises + +Handling errors in Promises ensures your application behaves correctly in case of unexpected situations. + +- You can use `.catch()` to handle any errors or rejections that occur during the execution of Promises. + +```js +myPromise + .then(result => console.log(result)) + .catch(error => console.error(error)) // Handles the rejection + .finally(error => console.log('Promise completed')); // Runs regardless of promise resolution +``` + +- Alternatively, when using `async/await`, you can use a `try/catch` block to catch and handle errors. + +```js +async function performTask() { + try { + const result = await myPromise; + console.log(result); + } catch (error) { + console.error(error); // Handles any errors + } finally { + // This code is executed regardless of failure + console.log('performTask() completed'); + } +} + +performTask(); +``` + +## Scheduling Tasks in the Event Loop + +In addition to Promises, Node.js provides several other mechanisms for scheduling tasks in the event loop. + +### `queueMicrotask()` + +`queueMicrotask()` is used to schedule a microtask, which is a lightweight task that runs after the currently executing script but before any other I/O events or timers. Microtasks include tasks like Promise resolutions and other asynchronous operations that are prioritized over regular tasks. + +```js +queueMicrotask(() => { + console.log('Microtask is executed'); +}); + +console.log('Synchronous task is executed'); +``` + +In the above example, "Microtask is executed" will be logged after "Synchronous task is executed," but before any I/O operations like timers. + +### `process.nextTick()` + +`process.nextTick()` is used to schedule a callback to be executed immediately after the current operation completes. This is useful for situations where you want to ensure that a callback is executed as soon as possible, but still after the current execution context. + +```js +process.nextTick(() => { + console.log('Next tick callback'); +}); + +console.log('Synchronous task executed'); +``` + +### `setImmediate()` + +`setImmediate()` is used to execute a callback after the current event loop cycle finishes and all I/O events have been processed. This means that `setImmediate()` callbacks run after any I/O callbacks, but before timers. + +```js +setImmediate(() => { + console.log('Immediate callback'); +}); + +console.log('Synchronous task executed'); +``` + +### When to Use Each + +- Use `queueMicrotask()` for tasks that need to run immediately after the current script and before any I/O or timer callbacks, typically for Promise resolutions. +- Use `process.nextTick()` for tasks that should execute before any I/O events, often useful for deferring operations or handling errors synchronously. +- Use `setImmediate()` for tasks that should run after I/O events but before timers. + +Because these tasks execute outside of the current synchronous flow, uncaught exceptions inside these callbacks won't be caught by surrounding `try/catch` blocks and may crash the application if not properly managed (e.g., by attaching `.catch()` to Promises or using global error handlers like `process.on('uncaughtException')`). + +For more information on the Event Loop, and the execution order of various phases, please see the related article, [The Node.js Event Loop](/learn/asynchronous-work/event-loop-timers-and-nexttick). diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index ab38e13762342..df9cefb8719c4 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -61,6 +61,7 @@ "links": { "asynchronousWork": "Asynchronous Work", "asynchronousFlowControl": "Asynchronous flow control", + "discoverPromisesInNodejs": "Discover Promises in Node.js", "overviewOfBlockingVsNonBlocking": "Overview of Blocking vs Non-Blocking", "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript Asynchronous Programming and Callbacks", "discoverJavascriptTimers": "Discover JavaScript Timers", From af1a888e31d46794e5c2654b3b70b48b8ab5e150 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 18 Apr 2025 09:50:42 -0400 Subject: [PATCH 0412/1385] fix(chromatic): better job name (#7666) Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/chromatic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index c3739d56d8a1b..5004417c277a4 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -43,7 +43,7 @@ jobs: github.event.pull_request.head.ref != 'chore/crowdin' ) - name: Tests + name: Chromatic runs-on: ubuntu-latest environment: From e5f7611addd842dc1af0e7e9f118fb5596dc746d Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 18 Apr 2025 17:43:14 -0400 Subject: [PATCH 0413/1385] fix(chromatic): run on merge (#7667) Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/chromatic.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 5004417c277a4..6a08406e8fae8 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -7,6 +7,7 @@ name: Chromatic on: + merge_group: push: branches: - main @@ -35,7 +36,7 @@ jobs: # introduce changes to the Storybook. Hence, we skip running these on Crowdin PRs and Dependabot PRs # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 if: | - github.event_name == 'push' || + github.event_name == 'push' || github.event_name == 'merge_group' || ( github.event_name == 'pull_request_target' && github.event.label.name == 'github_actions:pull-request' && From c32c5887a46ce43ac9c6f485a62a1fe9b312b4fa Mon Sep 17 00:00:00 2001 From: Lorenzo Zabot <lorenzozabot@gmail.com> Date: Sat, 19 Apr 2025 04:08:57 +0200 Subject: [PATCH 0414/1385] fix(content): broken link in TypeScript runner (#7665) --- apps/site/pages/en/learn/typescript/run.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/typescript/run.md b/apps/site/pages/en/learn/typescript/run.md index bf74775fbae5e..373325e51d61b 100644 --- a/apps/site/pages/en/learn/typescript/run.md +++ b/apps/site/pages/en/learn/typescript/run.md @@ -6,7 +6,7 @@ authors: AugustinMauroy # Running TypeScript with a runner -If you want more advanced processing of TypeScript than the built-in support (or you're using Node.js prior to v22.7.0), you have 2 options: use a runner (which handles much of the complexity for you), or handle it all yourself via [transpilation](./transpile.md). +If you want more advanced processing of TypeScript than the built-in support (or you're using Node.js prior to v22.7.0), you have 2 options: use a runner (which handles much of the complexity for you), or handle it all yourself via [transpilation](./transpile). ## Running TypeScript code with `ts-node` From c6b69284b87fe94e27a821ee726b13afb29fa971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulises=20Gasc=C3=B3n?= <ulisesgascongonzalez@gmail.com> Date: Tue, 22 Apr 2025 13:40:05 +0200 Subject: [PATCH 0415/1385] Blog: v20.19.1 release post (#7670) Refs: https://github.com/nodejs/node/pull/57896 --- apps/site/pages/en/blog/release/v20.19.1.md | 108 ++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v20.19.1.md diff --git a/apps/site/pages/en/blog/release/v20.19.1.md b/apps/site/pages/en/blog/release/v20.19.1.md new file mode 100644 index 0000000000000..abe981680dfd2 --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.19.1.md @@ -0,0 +1,108 @@ +--- +date: '2025-04-22T10:52:03.953Z' +category: release +title: Node v20.19.1 (LTS) +layout: blog-post +author: Ulises Gascón +--- + +## 2025-04-22, Version 20.19.1 'Iron' (LTS), @UlisesGascon prepared by @RafaelGSS + +### Notable Changes + +- \[[`d5e73ce0f8`](https://github.com/nodejs/node/commit/d5e73ce0f8)] - **deps**: update undici to 6.21.2 (Matteo Collina) [#57442](https://github.com/nodejs/node/pull/57442) +- \[[`e4a6323ab2`](https://github.com/nodejs/node/commit/e4a6323ab2)] - **deps**: update c-ares to v1.34.5 (Node.js GitHub Bot) [#57792](https://github.com/nodejs/node/pull/57792) + +### Commits + +- \[[`d5e73ce0f8`](https://github.com/nodejs/node/commit/d5e73ce0f8)] - **deps**: update undici to 6.21.2 (Matteo Collina) [#57442](https://github.com/nodejs/node/pull/57442) +- \[[`e4a6323ab2`](https://github.com/nodejs/node/commit/e4a6323ab2)] - **deps**: update c-ares to v1.34.5 (Node.js GitHub Bot) [#57792](https://github.com/nodejs/node/pull/57792) +- \[[`b2b9eb36af`](https://github.com/nodejs/node/commit/b2b9eb36af)] - **dns**: restore dns query cache ttl (Ethan Arrowood) [#57640](https://github.com/nodejs/node/pull/57640) +- \[[`07a99a5c0b`](https://github.com/nodejs/node/commit/07a99a5c0b)] - **doc**: correct status of require(esm) warning in v20 changelog (Joyee Cheung) [#57529](https://github.com/nodejs/node/pull/57529) +- \[[`d45517ccbf`](https://github.com/nodejs/node/commit/d45517ccbf)] - **meta**: bump Mozilla-Actions/sccache-action from 0.0.8 to 0.0.9 (dependabot\[bot]) [#57720](https://github.com/nodejs/node/pull/57720) +- \[[`fa93bb2633`](https://github.com/nodejs/node/commit/fa93bb2633)] - **test**: update parallel/test-tls-dhe for OpenSSL 3.5 (Richard Lau) [#57477](https://github.com/nodejs/node/pull/57477) +- \[[`29c032403c`](https://github.com/nodejs/node/commit/29c032403c)] - **tools**: update sccache to support GH cache changes (Michaël Zasso) [#57573](https://github.com/nodejs/node/pull/57573) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.19.1/node-v20.19.1-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.19.1/node-v20.19.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.19.1/node-v20.19.1-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.19.1/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.19.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.19.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.19.1/node-v20.19.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.19.1/node-v20.19.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.19.1/node-v20.19.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.19.1/node-v20.19.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.19.1/node-v20.19.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.19.1/node-v20.19.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.19.1/node-v20.19.1-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.19.1/node-v20.19.1-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.19.1/node-v20.19.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.19.1/node-v20.19.1.tar.gz \ +Other release files: https://nodejs.org/dist/v20.19.1/ \ +Documentation: https://nodejs.org/docs/v20.19.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +0a303961d5910a3c35258e7f984ba1dd49fe95450134feccd6b28b274eb9656b node-v20.19.1-aix-ppc64.tar.gz +0dd69783a3adc6003312354b6450be3aa3a5043e648b3b25f1c40db7d88d771f node-v20.19.1-arm64.msi +d3746fee0e00e3a7fedf50633f8e04adb6873b1fe9b5b50c37dff16f64a4f2c7 node-v20.19.1-darwin-arm64.tar.gz +15f6afc9465cbd63dd2ff2d7b40cc1c8ffed1ec105c79e34e2fd0e4145f8f335 node-v20.19.1-darwin-arm64.tar.xz +f4963877f026cca411b537029cee01d1fde6d3293cfb88d77096794cb89c866b node-v20.19.1-darwin-x64.tar.gz +6b889d521c1d2a8e4aea51ba5ece21f48e0f74449c80e3b69707173fb4989ccf node-v20.19.1-darwin-x64.tar.xz +54771863587c3f03f2c0612379962b06e556735130205f992ccb1aa878b2159b node-v20.19.1-headers.tar.gz +28e804aecbfb09e2a29782dad9b3bb3228a2648d0300928522ded8d92b421a90 node-v20.19.1-headers.tar.xz +f8fac0cc6cb06b4e443febda59178d5a6c6a5379e0194e6d156d3d3116e75b5f node-v20.19.1-linux-arm64.tar.gz +0f6a0aaca9181de98c0a11d97b8873aa5ddd87e0f48385fc89697e25c3675a18 node-v20.19.1-linux-arm64.tar.xz +8bcb0c923f0c6ebd0e4e635fb8765bf1a02b64a5f9a679a4fa94cd9f53e5ee74 node-v20.19.1-linux-armv7l.tar.gz +e600c0f3eb7756dafcfc0faa16a6a8f99f60efe8a8bcd3080c7f1f0a92497943 node-v20.19.1-linux-armv7l.tar.xz +e9f603f6494a453164dcd9ede175d14ea13e61838881dc0944cf230ff5d68c69 node-v20.19.1-linux-ppc64le.tar.gz +38bec57528cf98749c7c1348d1bf788837eedef232f61860012bf4bca956d6af node-v20.19.1-linux-ppc64le.tar.xz +062c526695ed64cacab20d266b0a993ce264ee3e1fe5da007a51ba98357c7321 node-v20.19.1-linux-s390x.tar.gz +369887ddc84ace855c3416107e9570e5d2ce0569cdbf7076a7e340ce991f6ba2 node-v20.19.1-linux-s390x.tar.xz +086ab500a98900a4c05127559b2cec4d659b3aa674453be5028d416de4eb1532 node-v20.19.1-linux-x64.tar.gz +b6c4cedfc81fc544b9993bc8a3628b5c0aa7a169fbaa293460abc0418d0fabb6 node-v20.19.1-linux-x64.tar.xz +dc156f0207b93c68c3d880d74f70ea4466aeff4c59c63792d2dfb57edde4a310 node-v20.19.1.pkg +691011ddb85c9ab86afb7ead2b6db2ddd45592f1c8fd26687d152dcadc182229 node-v20.19.1.tar.gz +5587b23e907d0c7af2ea8a8deb33ec50010453b46dbb3df5987c5678eee5ed51 node-v20.19.1.tar.xz +855a6881acd11b0387c9d2574c298607478a2af936da6637a1dcfbc2e527ba21 node-v20.19.1-win-arm64.7z +f9c88d4b414c87775d10fbb56deea4a531bfb313bb65fb448788d07dbf7af4ef node-v20.19.1-win-arm64.zip +581b2f30b9bd80f3c7fb6f06dcfbd7e0a5a0e36fd62c23385e437cf8052aff0e node-v20.19.1-win-x64.7z +ce04b36022aacc2cf50a8cd0ea2070156710f12f5ea070ccd48705ab090389d2 node-v20.19.1-win-x64.zip +aac13fdbf41e9faf1598fb675d0fc07315f381c08e252f7a82d35a7a211d14b8 node-v20.19.1-win-x86.7z +4184c25df3f11d7c8f121d6dd43d184f0a9e3cd685bc27f069682f3f81f002ec node-v20.19.1-win-x86.zip +772eb3443df376d2159220de18d75465717c952a2babf57dfc6ca52d1a8b4748 node-v20.19.1-x64.msi +2248b8dcef4d37b71e74f1ee6cb6473026ddbe2868cd2ffb2b89ef82551f57ee node-v20.19.1-x86.msi +f15fea26f62bf29e16c63e60e75b79070fe1408fecfb116a1a3215447b8c5bdb win-arm64/node.exe +4a11371c2e93e729f91ef2160f4b36821e2d000a12668c4488801531ece5e8f7 win-arm64/node.lib +ddcc1ee37cd1e7a7f17d505a23784ffdb7f77d34f34c57769757ea5de479ce5b win-arm64/node_pdb.7z +93de565ce24e7ba21882b4b2239ef17925e060d38e6f75de2dc75cb88dfb007b win-arm64/node_pdb.zip +9bb47f21f83de492b85a8f19faca925441923828295a46f17902672a39a60863 win-x64/node.exe +72f7ca3b33f0991e93e25521f7e78c8adf187df7d5223bf0efcb5e005420f327 win-x64/node.lib +03f73d8c96072a314dad6dfa005000e519cbca5cb367bf8df405786b92154c28 win-x64/node_pdb.7z +14bc676989a52d7bb2d6eb6fc17f97832200d1ebca5c8052bdfc24af1413f669 win-x64/node_pdb.zip +e6a13efea2b010b510778c8cdef2571c5a9c2c8ffb3bd7ea832bce90ffccd800 win-x86/node.exe +1e70659d1bb7706899c116a5fec9ae0f5e75b691d8c5b9ed55cef9cd05760988 win-x86/node.lib +8400eaf0cf0eab70527f613f35dc2c2e422949cff92c42194a3ac396f387d0b8 win-x86/node_pdb.7z +c043f6bd90fcf58626bdd3a5f1dbfee6fc649a270c953e777eec5e21fa8816af win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEpgI1MPxTRh/skfmcBM0/L94HlXgFAmgHb9UACgkQBM0/L94H +lXh0eg//cNyyA6wkIIQJwv86R+8anziEIbt/leVNTt7kMWpylDZwxcrjkPY7un0f +veWya5b04+3ZOW0LtGA59jyJ1hZ2GIhkGtDIrDepNoyHyesmYZSVFCM4llCrNIGI +ev96MDQWyC3MkZ8w+OLpSnkLX2Vv5n3lNFdraWHnOXUJzc60EFLliUoX4TyEN7FP +Lij02BTkNzmtXDPJJdZg3NJJ1e9Gb09vA/wG5rZQsCOTi8s0/fYE4bGi0eFhTr9N +MHY8bcGsniLwb5ExtqI5okLrhl/plZwKBkSEGKHfeohnh/YXZjMsZVHAbh2eJBWF +I4B+0Zh+Y4NyBev3jFUMVVRlKsrn3jPGdJ85JkbM/OUGjr8UnzKh1abGi/fld5Z2 +K4bfLoFR1Fyg9NJxivHVHYbzo9Iq5S6GigI+WN1O5sBfEc69yR9Wdd8jLp7b//8v +7ojBrTKPLRArgFLCb1LQBEqal4jjTbrv+i7prWZ4xSYYTjxSHa86Bh5sfazmYz9J +6AbIWbP5au0x6qprkH25Qi2be0K17EjJUlWci2NWoXWXslue2B/HssSfxKPQvtPu +G2LVMmf9E63FDHdCbqGXz9aXUlNieJIen4tUX6JdTHV9uVNBqNqkf3en1iUESrkC +rDd2oDrwN4euCsX4/YG9c8NTrSTyb7sDvYVFyP555xKrWm4p7cs= +=LGnD +-----END PGP SIGNATURE----- +``` From 139b31677e5ebba2451616e957f628757c83c030 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 22 Apr 2025 11:43:08 -0400 Subject: [PATCH 0416/1385] fix(ci): use Github Bot for Crowdin (#7671) * fix(ci): use Github Bot for Crowdin Signed-off-by: Aviv Keller <me@aviv.sh> * `CROWDIN_GITHUB_BOT_TOKEN` Signed-off-by: Aviv Keller <me@aviv.sh> * checkout w/ token Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/translations-sync.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index f2c43b6da1351..e703fb8e41ffe 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -16,9 +16,7 @@ concurrency: cancel-in-progress: true permissions: - # These permissions required by `crowdin/github-action` - contents: write - pull-requests: write + contents: read jobs: synchronize-with-crowdin: @@ -34,6 +32,8 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + token: ${{ secrets.CROWDIN_GITHUB_BOT_TOKEN }} # see all the options at https://github.com/crowdin/github-action - name: Crowdin PR @@ -51,7 +51,7 @@ jobs: pull_request_body: 'New Crowdin translations from the [Node.js Crowdin project](https://crowdin.com/project/nodejs-web)' commit_message: 'chore: synced translations from crowdin' env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.CROWDIN_GITHUB_BOT_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 @@ -76,6 +76,7 @@ jobs: with: # Use the number from the output of crowdin/github-action ref: refs/pull/${{ needs.synchronize-with-crowdin.outputs.pull_request_number }}/head + token: ${{ secrets.CROWDIN_GITHUB_BOT_TOKEN }} - name: Restore Lint Cache uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 From d5ecfaa1b7a4debf9df4f8bc6a4a99ff1b3454ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulises=20Gasc=C3=B3n?= <ulisesgascongonzalez@gmail.com> Date: Wed, 23 Apr 2025 09:40:40 +0200 Subject: [PATCH 0417/1385] Blog: v22.15.0 release post (#7675) Refs: https://github.com/nodejs/node/pull/57840 --- apps/site/pages/en/blog/release/v22.15.0.md | 458 ++++++++++++++++++++ 1 file changed, 458 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v22.15.0.md diff --git a/apps/site/pages/en/blog/release/v22.15.0.md b/apps/site/pages/en/blog/release/v22.15.0.md new file mode 100644 index 0000000000000..20f9b8a0fecc0 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.15.0.md @@ -0,0 +1,458 @@ +--- +date: '2025-04-23T07:27:50.679Z' +category: release +title: Node v22.15.0 (LTS) +layout: blog-post +author: Ulises Gascón +--- + +## 2025-04-23, Version 22.15.0 'Jod' (LTS), @UlisesGascon prepared by @RafaelGSS + +### Notable Changes + +- \[[`3c88f3938b`](https://github.com/nodejs/node/commit/3c88f3938b)] - **(SEMVER-MINOR)** **assert**: implement partial error comparison (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`db19a3f9fc`](https://github.com/nodejs/node/commit/db19a3f9fc)] - **(SEMVER-MINOR)** **assert**: improve partialDeepStrictEqual (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`1ee5f840b4`](https://github.com/nodejs/node/commit/1ee5f840b4)] - **(SEMVER-MINOR)** **cli**: allow --cpu-prof\* in NODE_OPTIONS (Carlos Espa) [#57018](https://github.com/nodejs/node/pull/57018) +- \[[`872ee0f2ac`](https://github.com/nodejs/node/commit/872ee0f2ac)] - **crypto**: update root certificates to NSS 3.108 (Node.js GitHub Bot) [#57381](https://github.com/nodejs/node/pull/57381) +- \[[`03a0f3a56b`](https://github.com/nodejs/node/commit/03a0f3a56b)] - **(SEMVER-MINOR)** **crypto**: support --use-system-ca on Windows (Joyee Cheung) [#56833](https://github.com/nodejs/node/pull/56833) +- \[[`94647bbdb2`](https://github.com/nodejs/node/commit/94647bbdb2)] - **(SEMVER-MINOR)** **crypto**: added support for reading certificates from macOS system store (Tim Jacomb) [#56599](https://github.com/nodejs/node/pull/56599) +- \[[`8f7b86a6e7`](https://github.com/nodejs/node/commit/8f7b86a6e7)] - **deps**: update timezone to 2025a (Node.js GitHub Bot) [#56876](https://github.com/nodejs/node/pull/56876) +- \[[`f9f611fb58`](https://github.com/nodejs/node/commit/f9f611fb58)] - **(SEMVER-MINOR)** **deps,tools**: add zstd 1.5.6 (Jan Martin) [#52100](https://github.com/nodejs/node/pull/52100) +- \[[`07a6d5f8cf`](https://github.com/nodejs/node/commit/07a6d5f8cf)] - **(SEMVER-MINOR)** **dns**: add TLSA record query and parsing (Rithvik Vibhu) [#52983](https://github.com/nodejs/node/pull/52983) +- \[[`d8a83ef2f3`](https://github.com/nodejs/node/commit/d8a83ef2f3)] - **doc**: add @geeksilva97 to collaborators (Edy Silva) [#57241](https://github.com/nodejs/node/pull/57241) +- \[[`6b93ba723b`](https://github.com/nodejs/node/commit/6b93ba723b)] - **(SEMVER-MINOR)** **module**: use synchronous hooks for preparsing in import(cjs) (Joyee Cheung) [#55698](https://github.com/nodejs/node/pull/55698) +- \[[`b2e44a8079`](https://github.com/nodejs/node/commit/b2e44a8079)] - **(SEMVER-MINOR)** **module**: implement module.registerHooks() (Joyee Cheung) [#55698](https://github.com/nodejs/node/pull/55698) +- \[[`dc91ae7471`](https://github.com/nodejs/node/commit/dc91ae7471)] - **(SEMVER-MINOR)** **process**: add execve (Paolo Insogna) [#56496](https://github.com/nodejs/node/pull/56496) +- \[[`bc672fcfdd`](https://github.com/nodejs/node/commit/bc672fcfdd)] - **(SEMVER-MINOR)** **sqlite**: allow returning `ArrayBufferView`s from user-defined functions (René) [#56790](https://github.com/nodejs/node/pull/56790) +- \[[`5edee197ab`](https://github.com/nodejs/node/commit/5edee197ab)] - **(SEMVER-MINOR)** **tls**: implement tls.getCACertificates() (Joyee Cheung) [#57107](https://github.com/nodejs/node/pull/57107) +- \[[`f9fe0e09ee`](https://github.com/nodejs/node/commit/f9fe0e09ee)] - **(SEMVER-MINOR)** **util**: expose diff function used by the assertion errors (Giovanni Bucci) [#57462](https://github.com/nodejs/node/pull/57462) +- \[[`673a424180`](https://github.com/nodejs/node/commit/673a424180)] - **(SEMVER-MINOR)** **v8**: add v8.getCppHeapStatistics() method (Aditi) [#57146](https://github.com/nodejs/node/pull/57146) +- \[[`4991e5d826`](https://github.com/nodejs/node/commit/4991e5d826)] - **(SEMVER-MINOR)** **zlib**: add zstd support (Jan Martin) [#52100](https://github.com/nodejs/node/pull/52100) + +### Commits + +- \[[`ea70a379c3`](https://github.com/nodejs/node/commit/ea70a379c3)] - **assert**: improve partialDeepStrictEqual performance (Ruben Bridgewater) [#57509](https://github.com/nodejs/node/pull/57509) +- \[[`2b419d7e79`](https://github.com/nodejs/node/commit/2b419d7e79)] - **(SEMVER-MINOR)** **assert**: implement partial error comparison (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`d817c17fd7`](https://github.com/nodejs/node/commit/d817c17fd7)] - **(SEMVER-MINOR)** **assert**: improve partialDeepStrictEqual (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`7af0440073`](https://github.com/nodejs/node/commit/7af0440073)] - **assert**: improve myers diff performance (Giovanni Bucci) [#57279](https://github.com/nodejs/node/pull/57279) +- \[[`01cf5fb871`](https://github.com/nodejs/node/commit/01cf5fb871)] - **(SEMVER-MINOR)** **assert,util**: improve performance (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`a58842cee4`](https://github.com/nodejs/node/commit/a58842cee4)] - **(SEMVER-MINOR)** **benchmark**: adjust assert runtimes (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`b20b3697aa`](https://github.com/nodejs/node/commit/b20b3697aa)] - **(SEMVER-MINOR)** **benchmark**: skip running some assert benchmarks by default (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`ec5570fd1e`](https://github.com/nodejs/node/commit/ec5570fd1e)] - **(SEMVER-MINOR)** **benchmark**: add assert partialDeepStrictEqual benchmark (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`b991bf4ca6`](https://github.com/nodejs/node/commit/b991bf4ca6)] - **benchmark**: add a warmup on bench-openSync (Elves Vieira) [#57051](https://github.com/nodejs/node/pull/57051) +- \[[`4a455bc806`](https://github.com/nodejs/node/commit/4a455bc806)] - **build**: fix update-wpt workflow (Jonas) [#57468](https://github.com/nodejs/node/pull/57468) +- \[[`6ec397e61c`](https://github.com/nodejs/node/commit/6ec397e61c)] - **build**: fix compatibility with V8's `depot_tools` (Richard Lau) [#57330](https://github.com/nodejs/node/pull/57330) +- \[[`475aaca336`](https://github.com/nodejs/node/commit/475aaca336)] - **build**: print 'Formatting Markdown...' for long task markdown formatting (1ilsang) [#57108](https://github.com/nodejs/node/pull/57108) +- \[[`73fced7a97`](https://github.com/nodejs/node/commit/73fced7a97)] - **build**: fix GN build failure (Cheng) [#57013](https://github.com/nodejs/node/pull/57013) +- \[[`af05f91425`](https://github.com/nodejs/node/commit/af05f91425)] - **build**: fix GN build of uv (Cheng) [#56955](https://github.com/nodejs/node/pull/56955) +- \[[`fd3053e947`](https://github.com/nodejs/node/commit/fd3053e947)] - **build**: gyp exclude libm linking on macOS (deepak1556) [#56901](https://github.com/nodejs/node/pull/56901) +- \[[`5ec6b9a50f`](https://github.com/nodejs/node/commit/5ec6b9a50f)] - **build**: remove explicit linker call to libm on macOS (deepak1556) [#56901](https://github.com/nodejs/node/pull/56901) +- \[[`a893da9be7`](https://github.com/nodejs/node/commit/a893da9be7)] - **build**: link with Security.framework in GN build (Cheng) [#56895](https://github.com/nodejs/node/pull/56895) +- \[[`02cd8e0a50`](https://github.com/nodejs/node/commit/02cd8e0a50)] - **build**: do not put commands in sources variables (Cheng) [#56885](https://github.com/nodejs/node/pull/56885) +- \[[`73dc8c2140`](https://github.com/nodejs/node/commit/73dc8c2140)] - **build**: add double quotes around <(python) (Luigi Pinca) [#56826](https://github.com/nodejs/node/pull/56826) +- \[[`65a3b5f73c`](https://github.com/nodejs/node/commit/65a3b5f73c)] - **build**: add build option suppress_all_error_on_warn (Michael Dawson) [#56647](https://github.com/nodejs/node/pull/56647) +- \[[`424aacc942`](https://github.com/nodejs/node/commit/424aacc942)] - **build,win**: disable node pch with ccache (Stefan Stojanovic) [#57224](https://github.com/nodejs/node/pull/57224) +- \[[`901685c723`](https://github.com/nodejs/node/commit/901685c723)] - **build,win**: enable ccache (Stefan Stojanovic) [#56847](https://github.com/nodejs/node/pull/56847) +- \[[`79987676c1`](https://github.com/nodejs/node/commit/79987676c1)] - **cli**: clarify --cpu-prof-name allowed values (Eugenio Ceschia) [#57433](https://github.com/nodejs/node/pull/57433) +- \[[`503d4237aa`](https://github.com/nodejs/node/commit/503d4237aa)] - **(SEMVER-MINOR)** **cli**: allow --cpu-prof\* in NODE_OPTIONS (Carlos Espa) [#57018](https://github.com/nodejs/node/pull/57018) +- \[[`ada572b733`](https://github.com/nodejs/node/commit/ada572b733)] - **crypto**: ensure expected JWK alg in SubtleCrypto.importKey RSA imports (Filip Skokan) [#57450](https://github.com/nodejs/node/pull/57450) +- \[[`7e5aabde55`](https://github.com/nodejs/node/commit/7e5aabde55)] - **crypto**: update root certificates to NSS 3.108 (Node.js GitHub Bot) [#57381](https://github.com/nodejs/node/pull/57381) +- \[[`7ea6ac1e09`](https://github.com/nodejs/node/commit/7ea6ac1e09)] - **crypto**: add support for intermediate certs in --use-system-ca (Tim Jacomb) [#57164](https://github.com/nodejs/node/pull/57164) +- \[[`44b19ec534`](https://github.com/nodejs/node/commit/44b19ec534)] - **crypto**: support --use-system-ca on non-Windows and non-macOS (Joyee Cheung) [#57009](https://github.com/nodejs/node/pull/57009) +- \[[`e21d126438`](https://github.com/nodejs/node/commit/e21d126438)] - **crypto**: fix missing OPENSSL_NO_ENGINE guard (Shelley Vohr) [#57012](https://github.com/nodejs/node/pull/57012) +- \[[`2fdf82b357`](https://github.com/nodejs/node/commit/2fdf82b357)] - **crypto**: cleanup root certificates and skip PEM deserialization (Joyee Cheung) [#56999](https://github.com/nodejs/node/pull/56999) +- \[[`03a0f3a56b`](https://github.com/nodejs/node/commit/03a0f3a56b)] - **(SEMVER-MINOR)** **crypto**: support --use-system-ca on Windows (Joyee Cheung) [#56833](https://github.com/nodejs/node/pull/56833) +- \[[`bbdb10bc2c`](https://github.com/nodejs/node/commit/bbdb10bc2c)] - **crypto**: fix X509\* leak in --use-system-ca (Joyee Cheung) [#56832](https://github.com/nodejs/node/pull/56832) +- \[[`5470cab6d3`](https://github.com/nodejs/node/commit/5470cab6d3)] - **crypto**: add api to get openssl security level (Michael Dawson) [#56601](https://github.com/nodejs/node/pull/56601) +- \[[`94647bbdb2`](https://github.com/nodejs/node/commit/94647bbdb2)] - **(SEMVER-MINOR)** **crypto**: added support for reading certificates from macOS system store (Tim Jacomb) [#56599](https://github.com/nodejs/node/pull/56599) +- \[[`caf81ca549`](https://github.com/nodejs/node/commit/caf81ca549)] - **debugger**: fix behavior of plain object exec in debugger repl (Dario Piotrowicz) [#57498](https://github.com/nodejs/node/pull/57498) +- \[[`1d703fe220`](https://github.com/nodejs/node/commit/1d703fe220)] - **deps**: update c-ares to v1.34.5 (Node.js GitHub Bot) [#57792](https://github.com/nodejs/node/pull/57792) +- \[[`98457dfea3`](https://github.com/nodejs/node/commit/98457dfea3)] - **deps**: update undici to 6.21.2 (Matteo Collina) [#57442](https://github.com/nodejs/node/pull/57442) +- \[[`4a852ba11b`](https://github.com/nodejs/node/commit/4a852ba11b)] - **deps**: V8: cherry-pick c172ffc5bf54 (Choongwoo Han) [#57437](https://github.com/nodejs/node/pull/57437) +- \[[`54a12e0bcc`](https://github.com/nodejs/node/commit/54a12e0bcc)] - **deps**: update googletest to 0bdccf4 (Node.js GitHub Bot) [#57380](https://github.com/nodejs/node/pull/57380) +- \[[`2e350963e5`](https://github.com/nodejs/node/commit/2e350963e5)] - **deps**: update acorn to 8.14.1 (Node.js GitHub Bot) [#57382](https://github.com/nodejs/node/pull/57382) +- \[[`95e5d01c25`](https://github.com/nodejs/node/commit/95e5d01c25)] - **deps**: update amaro to 0.4.1 (marco-ippolito) [#57121](https://github.com/nodejs/node/pull/57121) +- \[[`ef216deb05`](https://github.com/nodejs/node/commit/ef216deb05)] - **deps**: update amaro to 0.3.2 (marco-ippolito) [#56916](https://github.com/nodejs/node/pull/56916) +- \[[`4ef4d6ecf6`](https://github.com/nodejs/node/commit/4ef4d6ecf6)] - **deps**: update amaro to 0.3.1 (Node.js GitHub Bot) [#56785](https://github.com/nodejs/node/pull/56785) +- \[[`a8bf5ef4a7`](https://github.com/nodejs/node/commit/a8bf5ef4a7)] - **deps**: update simdjson to 3.12.2 (Node.js GitHub Bot) [#57084](https://github.com/nodejs/node/pull/57084) +- \[[`0bd612bb32`](https://github.com/nodejs/node/commit/0bd612bb32)] - **deps**: update archs files for openssl-3.0.16 (Node.js GitHub Bot) [#57335](https://github.com/nodejs/node/pull/57335) +- \[[`7d65f79306`](https://github.com/nodejs/node/commit/7d65f79306)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.16 (Node.js GitHub Bot) [#57335](https://github.com/nodejs/node/pull/57335) +- \[[`5c88c52491`](https://github.com/nodejs/node/commit/5c88c52491)] - **deps**: update corepack to 0.32.0 (Node.js GitHub Bot) [#57265](https://github.com/nodejs/node/pull/57265) +- \[[`fa04bf4999`](https://github.com/nodejs/node/commit/fa04bf4999)] - **deps**: update gyp file for ngtcp2 1.11.0 (Richard Lau) [#57225](https://github.com/nodejs/node/pull/57225) +- \[[`ca6b07258d`](https://github.com/nodejs/node/commit/ca6b07258d)] - **deps**: update cjs-module-lexer to 2.1.0 (Node.js GitHub Bot) [#57180](https://github.com/nodejs/node/pull/57180) +- \[[`0a72b16fe1`](https://github.com/nodejs/node/commit/0a72b16fe1)] - **deps**: update ngtcp2 to 1.11.0 (Node.js GitHub Bot) [#57179](https://github.com/nodejs/node/pull/57179) +- \[[`600fb41f54`](https://github.com/nodejs/node/commit/600fb41f54)] - **deps**: update sqlite to 3.49.1 (Node.js GitHub Bot) [#57178](https://github.com/nodejs/node/pull/57178) +- \[[`7eb3b44010`](https://github.com/nodejs/node/commit/7eb3b44010)] - **deps**: update zlib to 1.3.0.1-motley-788cb3c (Node.js GitHub Bot) [#56655](https://github.com/nodejs/node/pull/56655) +- \[[`257d22e181`](https://github.com/nodejs/node/commit/257d22e181)] - **deps**: update sqlite to 3.49.0 (Node.js GitHub Bot) [#56654](https://github.com/nodejs/node/pull/56654) +- \[[`53a7bfce01`](https://github.com/nodejs/node/commit/53a7bfce01)] - **deps**: V8: cherry-pick 9ab40592f697 (Levi Zim) [#56781](https://github.com/nodejs/node/pull/56781) +- \[[`636f65cb1a`](https://github.com/nodejs/node/commit/636f65cb1a)] - **deps**: update cjs-module-lexer to 2.0.0 (Michael Dawson) [#56855](https://github.com/nodejs/node/pull/56855) +- \[[`8f7b86a6e7`](https://github.com/nodejs/node/commit/8f7b86a6e7)] - **deps**: update timezone to 2025a (Node.js GitHub Bot) [#56876](https://github.com/nodejs/node/pull/56876) +- \[[`db31276bfa`](https://github.com/nodejs/node/commit/db31276bfa)] - **deps**: update simdjson to 3.12.0 (Node.js GitHub Bot) [#56874](https://github.com/nodejs/node/pull/56874) +- \[[`d1d58d6198`](https://github.com/nodejs/node/commit/d1d58d6198)] - **deps**: update googletest to e235eb3 (Node.js GitHub Bot) [#56873](https://github.com/nodejs/node/pull/56873) +- \[[`05b3dff275`](https://github.com/nodejs/node/commit/05b3dff275)] - **deps**: update simdjson to 3.11.6 (Node.js GitHub Bot) [#56250](https://github.com/nodejs/node/pull/56250) +- \[[`f9f611fb58`](https://github.com/nodejs/node/commit/f9f611fb58)] - **(SEMVER-MINOR)** **deps,tools**: add zstd 1.5.6 (Jan Martin) [#52100](https://github.com/nodejs/node/pull/52100) +- \[[`ef212a41a7`](https://github.com/nodejs/node/commit/ef212a41a7)] - **dns**: restore dns query cache ttl (Ethan Arrowood) [#57640](https://github.com/nodejs/node/pull/57640) +- \[[`7a10b01e97`](https://github.com/nodejs/node/commit/7a10b01e97)] - **dns**: remove redundant code using common variable (Deokjin Kim) [#57386](https://github.com/nodejs/node/pull/57386) +- \[[`bc2603f086`](https://github.com/nodejs/node/commit/bc2603f086)] - **(SEMVER-MINOR)** **dns**: add TLSA record query and parsing (Rithvik Vibhu) [#52983](https://github.com/nodejs/node/pull/52983) +- \[[`38a2e5d60b`](https://github.com/nodejs/node/commit/38a2e5d60b)] - **doc**: add gurgunday as triager (Gürgün Dayıoğlu) [#57594](https://github.com/nodejs/node/pull/57594) +- \[[`b7ac0bd129`](https://github.com/nodejs/node/commit/b7ac0bd129)] - **doc**: clarify behaviour of node-api adjust function (Michael Dawson) [#57463](https://github.com/nodejs/node/pull/57463) +- \[[`fa834896c8`](https://github.com/nodejs/node/commit/fa834896c8)] - **doc**: remove Corepack documentation (Antoine du Hamel) [#57635](https://github.com/nodejs/node/pull/57635) +- \[[`8988173286`](https://github.com/nodejs/node/commit/8988173286)] - **doc**: remove mention of `--require` not supporting ES modules (Huáng Jùnliàng) [#57620](https://github.com/nodejs/node/pull/57620) +- \[[`3a7d179dbd`](https://github.com/nodejs/node/commit/3a7d179dbd)] - **doc**: mention reports should align with Node.js CoC (Rafael Gonzaga) [#57607](https://github.com/nodejs/node/pull/57607) +- \[[`983c5087f6`](https://github.com/nodejs/node/commit/983c5087f6)] - **doc**: add section stating that very stale PRs should be closed (Dario Piotrowicz) [#57541](https://github.com/nodejs/node/pull/57541) +- \[[`f4e1f702d4`](https://github.com/nodejs/node/commit/f4e1f702d4)] - **doc**: add bjohansebas as triager (Sebastian Beltran) [#57564](https://github.com/nodejs/node/pull/57564) +- \[[`9b7fd6b076`](https://github.com/nodejs/node/commit/9b7fd6b076)] - **doc**: update support channels (Claudio W.) [#57538](https://github.com/nodejs/node/pull/57538) +- \[[`ef624aff55`](https://github.com/nodejs/node/commit/ef624aff55)] - **doc**: remove cryptoStream API reference (Jonas) [#57579](https://github.com/nodejs/node/pull/57579) +- \[[`4a2afc255a`](https://github.com/nodejs/node/commit/4a2afc255a)] - **doc**: module resolution pseudocode corrections (Marcel Laverdet) [#57080](https://github.com/nodejs/node/pull/57080) +- \[[`ee5059426d`](https://github.com/nodejs/node/commit/ee5059426d)] - **doc**: add history entry for DEP0190 in `child_process.md` (Antoine du Hamel) [#57544](https://github.com/nodejs/node/pull/57544) +- \[[`4deebb4fca`](https://github.com/nodejs/node/commit/4deebb4fca)] - **doc**: remove deprecated pattern in `child_process.md` (Antoine du Hamel) [#57568](https://github.com/nodejs/node/pull/57568) +- \[[`6cd7b37d9c`](https://github.com/nodejs/node/commit/6cd7b37d9c)] - **doc**: mark multiple experimental APIS as stable (James M Snell) [#57510](https://github.com/nodejs/node/pull/57510) +- \[[`c2f1fa0928`](https://github.com/nodejs/node/commit/c2f1fa0928)] - **doc**: remove mertcanaltin from Triagers (Mert Can Altin) [#57531](https://github.com/nodejs/node/pull/57531) +- \[[`9b6047e520`](https://github.com/nodejs/node/commit/9b6047e520)] - **doc**: recommend watching the collaborators repo in the onboarding doc (Darshan Sen) [#57527](https://github.com/nodejs/node/pull/57527) +- \[[`bf1e297079`](https://github.com/nodejs/node/commit/bf1e297079)] - **doc**: remove mention of visa fees from onboarding doc (Darshan Sen) [#57526](https://github.com/nodejs/node/pull/57526) +- \[[`1041331094`](https://github.com/nodejs/node/commit/1041331094)] - **doc**: deprecate passing `args` to `spawn` and `execFile` (Antoine du Hamel) [#57389](https://github.com/nodejs/node/pull/57389) +- \[[`06994d5a75`](https://github.com/nodejs/node/commit/06994d5a75)] - **doc**: remove some inconsistencies in `deprecations.md` (Antoine du Hamel) [#57512](https://github.com/nodejs/node/pull/57512) +- \[[`707f851ba3`](https://github.com/nodejs/node/commit/707f851ba3)] - **doc**: run license-builder (github-actions\[bot]) [#57511](https://github.com/nodejs/node/pull/57511) +- \[[`a7793195d6`](https://github.com/nodejs/node/commit/a7793195d6)] - **doc**: add new writing-docs contributing md (Dario Piotrowicz) [#57502](https://github.com/nodejs/node/pull/57502) +- \[[`30d4a43b3d`](https://github.com/nodejs/node/commit/30d4a43b3d)] - **doc**: add node.js streams references to Web Streams doc (Dario Piotrowicz) [#57393](https://github.com/nodejs/node/pull/57393) +- \[[`e08365980b`](https://github.com/nodejs/node/commit/e08365980b)] - **doc**: prefer to sign commits under nodejs repository (Rafael Gonzaga) [#57311](https://github.com/nodejs/node/pull/57311) +- \[[`c35e1f9048`](https://github.com/nodejs/node/commit/c35e1f9048)] - **doc**: fixed the incorrect splitting of multiple words (letianpailove) [#57454](https://github.com/nodejs/node/pull/57454) +- \[[`3e1f3bc2bb`](https://github.com/nodejs/node/commit/3e1f3bc2bb)] - **doc**: add review guidelines for collaborator nominations (Antoine du Hamel) [#57449](https://github.com/nodejs/node/pull/57449) +- \[[`fef3f82a41`](https://github.com/nodejs/node/commit/fef3f82a41)] - **doc**: add history info for --use-system-ca (Darshan Sen) [#57432](https://github.com/nodejs/node/pull/57432) +- \[[`96afdf949d`](https://github.com/nodejs/node/commit/96afdf949d)] - **doc**: remove typo YAML snippet from tls.getCACertificates doc (Darshan Sen) [#57459](https://github.com/nodejs/node/pull/57459) +- \[[`800d61d47e`](https://github.com/nodejs/node/commit/800d61d47e)] - **doc**: fix typo in sqlite.md (Tobias Nießen) [#57473](https://github.com/nodejs/node/pull/57473) +- \[[`4876aee775`](https://github.com/nodejs/node/commit/4876aee775)] - **doc**: explicit mention arbitrary code execution as a vuln (Rafael Gonzaga) [#57426](https://github.com/nodejs/node/pull/57426) +- \[[`2dd72c658f`](https://github.com/nodejs/node/commit/2dd72c658f)] - **doc**: update maintaining-openssl.md for openssl (Richard Lau) [#57413](https://github.com/nodejs/node/pull/57413) +- \[[`a49fd31f04`](https://github.com/nodejs/node/commit/a49fd31f04)] - **doc**: add missing `deprecated` badges in `fs.md` (Yukihiro Hasegawa) [#57384](https://github.com/nodejs/node/pull/57384) +- \[[`3a4ed77674`](https://github.com/nodejs/node/commit/3a4ed77674)] - **doc**: add note about sync nodejs-private branches (Rafael Gonzaga) [#57404](https://github.com/nodejs/node/pull/57404) +- \[[`1025e6dc7c`](https://github.com/nodejs/node/commit/1025e6dc7c)] - **doc**: update Xcode version used for arm64 and pkg (Michaël Zasso) [#57104](https://github.com/nodejs/node/pull/57104) +- \[[`77b9e04a70`](https://github.com/nodejs/node/commit/77b9e04a70)] - **doc**: improve type stripping documentation (Marco Ippolito) [#56916](https://github.com/nodejs/node/pull/56916) +- \[[`3a75e8410d`](https://github.com/nodejs/node/commit/3a75e8410d)] - **doc**: specificy support for erasable ts syntax (Marco Ippolito) [#56916](https://github.com/nodejs/node/pull/56916) +- \[[`69f12f9686`](https://github.com/nodejs/node/commit/69f12f9686)] - **doc**: make first parameter optional in `util.getCallSites` (Deokjin Kim) [#57387](https://github.com/nodejs/node/pull/57387) +- \[[`2b4e737ffb`](https://github.com/nodejs/node/commit/2b4e737ffb)] - **doc**: fix usage of module.registerSync in comment (Timo Kössler) [#57328](https://github.com/nodejs/node/pull/57328) +- \[[`f320593958`](https://github.com/nodejs/node/commit/f320593958)] - **doc**: add Darshan back as voting TSC member (Michael Dawson) [#57402](https://github.com/nodejs/node/pull/57402) +- \[[`2b7765469a`](https://github.com/nodejs/node/commit/2b7765469a)] - **doc**: revise webcrypto.md types, interfaces, and added versions (Filip Skokan) [#57376](https://github.com/nodejs/node/pull/57376) +- \[[`649828c74a`](https://github.com/nodejs/node/commit/649828c74a)] - **doc**: add info on how project manages social media (Michael Dawson) [#57318](https://github.com/nodejs/node/pull/57318) +- \[[`2a2e1cfd71`](https://github.com/nodejs/node/commit/2a2e1cfd71)] - **doc**: revise `tsconfig.json` note (Steven) [#57353](https://github.com/nodejs/node/pull/57353) +- \[[`17883b1d46`](https://github.com/nodejs/node/commit/17883b1d46)] - **doc**: use more clear name in getSystemErrorMessage's example (ikuma-t) [#57310](https://github.com/nodejs/node/pull/57310) +- \[[`7feed9989b`](https://github.com/nodejs/node/commit/7feed9989b)] - **doc**: recommend setting `noEmit: true` in `tsconfig.json` (Steven) [#57320](https://github.com/nodejs/node/pull/57320) +- \[[`fe707ab162`](https://github.com/nodejs/node/commit/fe707ab162)] - **doc**: ping nodejs/tsc for each security pull request (Rafael Gonzaga) [#57309](https://github.com/nodejs/node/pull/57309) +- \[[`f3c58ab693`](https://github.com/nodejs/node/commit/f3c58ab693)] - **doc**: fix Windows ccache section position (Stefan Stojanovic) [#57326](https://github.com/nodejs/node/pull/57326) +- \[[`e69170bacd`](https://github.com/nodejs/node/commit/e69170bacd)] - **doc**: update node-api version matrix (Chengzhong Wu) [#57287](https://github.com/nodejs/node/pull/57287) +- \[[`0bc1fd2245`](https://github.com/nodejs/node/commit/0bc1fd2245)] - **doc**: recommend `erasableSyntaxOnly` in ts docs (Rob Palmer) [#57271](https://github.com/nodejs/node/pull/57271) +- \[[`068013744e`](https://github.com/nodejs/node/commit/068013744e)] - **doc**: clarify `path.isAbsolute` is not path traversal mitigation (Eric Fortis) [#57073](https://github.com/nodejs/node/pull/57073) +- \[[`238b0e856e`](https://github.com/nodejs/node/commit/238b0e856e)] - **doc**: fix rendering of DEP0174 description (David Sanders) [#56835](https://github.com/nodejs/node/pull/56835) +- \[[`db0bcefd14`](https://github.com/nodejs/node/commit/db0bcefd14)] - **doc**: add 1ilsang to triage team (1ilsang) [#57183](https://github.com/nodejs/node/pull/57183) +- \[[`52a593feab`](https://github.com/nodejs/node/commit/52a593feab)] - **doc**: add @geeksilva97 to collaborators (Edy Silva) [#57241](https://github.com/nodejs/node/pull/57241) +- \[[`89f4475e32`](https://github.com/nodejs/node/commit/89f4475e32)] - **doc**: add missing assert return types (Colin Ihrig) [#57219](https://github.com/nodejs/node/pull/57219) +- \[[`62b6d94c03`](https://github.com/nodejs/node/commit/62b6d94c03)] - **doc**: add streamResetBurst and streamResetRate (Sujal Raj) [#57195](https://github.com/nodejs/node/pull/57195) +- \[[`f150017e70`](https://github.com/nodejs/node/commit/f150017e70)] - **doc**: add esm examples to node:util (Alfredo González) [#56793](https://github.com/nodejs/node/pull/56793) +- \[[`99465ffa9c`](https://github.com/nodejs/node/commit/99465ffa9c)] - **doc**: update options to filehandle.appendFile() (Hasegawa-Yukihiro) [#56972](https://github.com/nodejs/node/pull/56972) +- \[[`6242520a90`](https://github.com/nodejs/node/commit/6242520a90)] - **doc**: add additional caveat for fs.watch (Michael Dawson) [#57150](https://github.com/nodejs/node/pull/57150) +- \[[`19cda4791a`](https://github.com/nodejs/node/commit/19cda4791a)] - **doc**: fix typo in Windows building instructions (Tim Jacomb) [#57158](https://github.com/nodejs/node/pull/57158) +- \[[`ef206add59`](https://github.com/nodejs/node/commit/ef206add59)] - **doc**: fix web.libera.chat link in pull-requests.md (Samuel Bronson) [#57076](https://github.com/nodejs/node/pull/57076) +- \[[`7243c1713d`](https://github.com/nodejs/node/commit/7243c1713d)] - **doc**: remove buffered flag from performance hooks examples (Pavel Romanov) [#52607](https://github.com/nodejs/node/pull/52607) +- \[[`617fe71f67`](https://github.com/nodejs/node/commit/617fe71f67)] - **doc**: fix 'introduced_in' version in typescript module (1ilsang) [#57109](https://github.com/nodejs/node/pull/57109) +- \[[`6cc15b8dc9`](https://github.com/nodejs/node/commit/6cc15b8dc9)] - **doc**: fix link and history of `SourceMap` sections (Antoine du Hamel) [#57098](https://github.com/nodejs/node/pull/57098) +- \[[`6be8189041`](https://github.com/nodejs/node/commit/6be8189041)] - **doc**: add `module namespace object` links (Dario Piotrowicz) [#57093](https://github.com/nodejs/node/pull/57093) +- \[[`8611c4a3ea`](https://github.com/nodejs/node/commit/8611c4a3ea)] - **doc**: disambiguate pseudo-code statement (Dario Piotrowicz) [#57092](https://github.com/nodejs/node/pull/57092) +- \[[`79da145a55`](https://github.com/nodejs/node/commit/79da145a55)] - **doc**: update clang-cl on Windows building guide (Joyee Cheung) [#57087](https://github.com/nodejs/node/pull/57087) +- \[[`845eaf91be`](https://github.com/nodejs/node/commit/845eaf91be)] - **doc**: fix wrong articles used to address modules (Dario Piotrowicz) [#57090](https://github.com/nodejs/node/pull/57090) +- \[[`42c5e23eb1`](https://github.com/nodejs/node/commit/42c5e23eb1)] - **doc**: `modules.md`: fix `distance` definition (Alexander “weej” Jones) [#57046](https://github.com/nodejs/node/pull/57046) +- \[[`bda851aaa3`](https://github.com/nodejs/node/commit/bda851aaa3)] - **doc**: fix wrong verb form (Dario Piotrowicz) [#57091](https://github.com/nodejs/node/pull/57091) +- \[[`64e13fd36e`](https://github.com/nodejs/node/commit/64e13fd36e)] - **doc**: fix transpiler loader hooks documentation (Joyee Cheung) [#57037](https://github.com/nodejs/node/pull/57037) +- \[[`51494d8b78`](https://github.com/nodejs/node/commit/51494d8b78)] - **doc**: add a note about `require('../common')` in testing documentation (Aditi) [#56953](https://github.com/nodejs/node/pull/56953) +- \[[`053b128e9c`](https://github.com/nodejs/node/commit/053b128e9c)] - **doc**: recommend writing tests in new files and including comments (Joyee Cheung) [#57028](https://github.com/nodejs/node/pull/57028) +- \[[`a20c62a00c`](https://github.com/nodejs/node/commit/a20c62a00c)] - **doc**: improve documentation on argument validation (Aditi) [#56954](https://github.com/nodejs/node/pull/56954) +- \[[`2921658813`](https://github.com/nodejs/node/commit/2921658813)] - **doc**: buffer: fix typo on `Buffer.copyBytesFrom(` `offset` option (tpoisseau) [#57015](https://github.com/nodejs/node/pull/57015) +- \[[`6f4ab1c9b2`](https://github.com/nodejs/node/commit/6f4ab1c9b2)] - **doc**: update cleanup to trust on vuln db automation (Rafael Gonzaga) [#57004](https://github.com/nodejs/node/pull/57004) +- \[[`5285facb3e`](https://github.com/nodejs/node/commit/5285facb3e)] - **doc**: move stability index after history section for consistency (Antoine du Hamel) [#56997](https://github.com/nodejs/node/pull/56997) +- \[[`a7646e17ff`](https://github.com/nodejs/node/commit/a7646e17ff)] - **doc**: add `signal` to `filehandle.writeFile()` options (Yukihiro Hasegawa) [#56804](https://github.com/nodejs/node/pull/56804) +- \[[`ba031089e6`](https://github.com/nodejs/node/commit/ba031089e6)] - **doc**: run license-builder (github-actions\[bot]) [#56985](https://github.com/nodejs/node/pull/56985) +- \[[`afa6f93a32`](https://github.com/nodejs/node/commit/afa6f93a32)] - **doc**: update history of stream.Readable.toWeb() (Jimmy Leung) [#56928](https://github.com/nodejs/node/pull/56928) +- \[[`cc644de126`](https://github.com/nodejs/node/commit/cc644de126)] - **doc**: make MDN links to global classes more consistent (Antoine du Hamel) [#56924](https://github.com/nodejs/node/pull/56924) +- \[[`93bba4eee1`](https://github.com/nodejs/node/commit/93bba4eee1)] - **doc**: make MDN links to global classes more consistent in `assert.md` (Antoine du Hamel) [#56920](https://github.com/nodejs/node/pull/56920) +- \[[`ad03c85f98`](https://github.com/nodejs/node/commit/ad03c85f98)] - **doc**: make MDN links to global classes more consistent (Antoine du Hamel) [#56923](https://github.com/nodejs/node/pull/56923) +- \[[`96c2a90dee`](https://github.com/nodejs/node/commit/96c2a90dee)] - **doc**: make MDN links to global classes more consistent in `util.md` (Antoine du Hamel) [#56922](https://github.com/nodejs/node/pull/56922) +- \[[`6bb73c0745`](https://github.com/nodejs/node/commit/6bb73c0745)] - **doc**: make MDN links to global classes more consistent in `buffer.md` (Antoine du Hamel) [#56921](https://github.com/nodejs/node/pull/56921) +- \[[`824cf35475`](https://github.com/nodejs/node/commit/824cf35475)] - **doc**: update post sec release process (Rafael Gonzaga) [#56907](https://github.com/nodejs/node/pull/56907) +- \[[`027749eb17`](https://github.com/nodejs/node/commit/027749eb17)] - **doc**: update websocket link to avoid linking to self (Chengzhong Wu) [#56897](https://github.com/nodejs/node/pull/56897) +- \[[`5dcb9d632b`](https://github.com/nodejs/node/commit/5dcb9d632b)] - **doc**: mark `--env-file-if-exists` flag as experimental (Juan José) [#56893](https://github.com/nodejs/node/pull/56893) +- \[[`4f6d751bf5`](https://github.com/nodejs/node/commit/4f6d751bf5)] - **doc**: fix typo in cjs example of `util.styleText` (Deokjin Kim) [#56769](https://github.com/nodejs/node/pull/56769) +- \[[`313d9db7a5`](https://github.com/nodejs/node/commit/313d9db7a5)] - **doc**: clarify sqlite user-defined function behaviour (René) [#56786](https://github.com/nodejs/node/pull/56786) +- \[[`eff42956c4`](https://github.com/nodejs/node/commit/eff42956c4)] - **doc**: correct customization hook types & clarify descriptions (Jacob Smith) [#56454](https://github.com/nodejs/node/pull/56454) +- \[[`64180421c2`](https://github.com/nodejs/node/commit/64180421c2)] - **events**: getMaxListeners detects 0 listeners (Matthew Aitken) [#56807](https://github.com/nodejs/node/pull/56807) +- \[[`2de27787b4`](https://github.com/nodejs/node/commit/2de27787b4)] - **fs**: apply exclude function to root path (Rich Trott) [#57420](https://github.com/nodejs/node/pull/57420) +- \[[`b6df9e350a`](https://github.com/nodejs/node/commit/b6df9e350a)] - **fs**: handle UV_ENOTDIR in `fs.statSync` with `throwIfNoEntry` provided (Juan José Arboleda) [#56996](https://github.com/nodejs/node/pull/56996) +- \[[`14b2d496a0`](https://github.com/nodejs/node/commit/14b2d496a0)] - **fs**: make `FileHandle.readableWebStream` always create byte streams (Ian Kerins) [#55461](https://github.com/nodejs/node/pull/55461) +- \[[`10d2f1d898`](https://github.com/nodejs/node/commit/10d2f1d898)] - **http**: coerce content-length to number (Marco Ippolito) [#57458](https://github.com/nodejs/node/pull/57458) +- \[[`9192b7fa25`](https://github.com/nodejs/node/commit/9192b7fa25)] - **http**: be more generational GC friendly (ywave620) [#56767](https://github.com/nodejs/node/pull/56767) +- \[[`1cf98a8788`](https://github.com/nodejs/node/commit/1cf98a8788)] - **inspector**: convert event params to protocol without json (Chengzhong Wu) [#57027](https://github.com/nodejs/node/pull/57027) +- \[[`6dcad868bb`](https://github.com/nodejs/node/commit/6dcad868bb)] - **inspector**: skip promise hook in the inspector async hook (Joyee Cheung) [#57148](https://github.com/nodejs/node/pull/57148) +- \[[`787e93f75a`](https://github.com/nodejs/node/commit/787e93f75a)] - **inspector**: add Network.Initiator in inspector protocol (Chengzhong Wu) [#56805](https://github.com/nodejs/node/pull/56805) +- \[[`c7c04d0dc8`](https://github.com/nodejs/node/commit/c7c04d0dc8)] - **inspector**: fix GN build (Cheng) [#56798](https://github.com/nodejs/node/pull/56798) +- \[[`177da9c3c3`](https://github.com/nodejs/node/commit/177da9c3c3)] - **inspector**: fix StringUtil::CharacterCount for unicodes (Chengzhong Wu) [#56788](https://github.com/nodejs/node/pull/56788) +- \[[`1b5418eeea`](https://github.com/nodejs/node/commit/1b5418eeea)] - **lib**: add warning when binding inspector to public IP (Demian Parkhomenko) [#55736](https://github.com/nodejs/node/pull/55736) +- \[[`cc4d33842b`](https://github.com/nodejs/node/commit/cc4d33842b)] - **lib**: limit split function calls to prevent excessive array length (Gürgün Dayıoğlu) [#57501](https://github.com/nodejs/node/pull/57501) +- \[[`0546612d1d`](https://github.com/nodejs/node/commit/0546612d1d)] - **lib**: make getCallSites sourceMap option truly optional (James M Snell) [#57388](https://github.com/nodejs/node/pull/57388) +- \[[`d7d54e6bf3`](https://github.com/nodejs/node/commit/d7d54e6bf3)] - **lib**: optimize priority queue (Gürgün Dayıoğlu) [#57100](https://github.com/nodejs/node/pull/57100) +- \[[`62761c73a1`](https://github.com/nodejs/node/commit/62761c73a1)] - **lib**: fixup incorrect argument order in assertEncoding (James M Snell) [#57177](https://github.com/nodejs/node/pull/57177) +- \[[`5dce55c376`](https://github.com/nodejs/node/commit/5dce55c376)] - **meta**: add some clarification to the nomination process (James M Snell) [#57503](https://github.com/nodejs/node/pull/57503) +- \[[`a2a4cf1d95`](https://github.com/nodejs/node/commit/a2a4cf1d95)] - **meta**: remove collaborator self-nomination (Rich Trott) [#57537](https://github.com/nodejs/node/pull/57537) +- \[[`244f74b844`](https://github.com/nodejs/node/commit/244f74b844)] - **meta**: edit collaborator nomination process (Antoine du Hamel) [#57483](https://github.com/nodejs/node/pull/57483) +- \[[`dec204bb3f`](https://github.com/nodejs/node/commit/dec204bb3f)] - **meta**: move ovflowd to emeritus (Claudio W.) [#57443](https://github.com/nodejs/node/pull/57443) +- \[[`c0b8b84384`](https://github.com/nodejs/node/commit/c0b8b84384)] - **meta**: bump codecov/codecov-action from 5.3.1 to 5.4.0 (dependabot\[bot]) [#57257](https://github.com/nodejs/node/pull/57257) +- \[[`14cbe292da`](https://github.com/nodejs/node/commit/14cbe292da)] - **meta**: bump github/codeql-action from 3.28.8 to 3.28.10 (dependabot\[bot]) [#57254](https://github.com/nodejs/node/pull/57254) +- \[[`69d2dd69e2`](https://github.com/nodejs/node/commit/69d2dd69e2)] - **meta**: bump ossf/scorecard-action from 2.4.0 to 2.4.1 (dependabot\[bot]) [#57253](https://github.com/nodejs/node/pull/57253) +- \[[`5f3428ded6`](https://github.com/nodejs/node/commit/5f3428ded6)] - **meta**: move RaisinTen back to collaborators, triagers and SEA champion (Darshan Sen) [#57292](https://github.com/nodejs/node/pull/57292) +- \[[`3eea8c72fc`](https://github.com/nodejs/node/commit/3eea8c72fc)] - **meta**: bump actions/download-artifact from 4.1.8 to 4.1.9 (dependabot\[bot]) [#57260](https://github.com/nodejs/node/pull/57260) +- \[[`2508893edb`](https://github.com/nodejs/node/commit/2508893edb)] - **meta**: bump peter-evans/create-pull-request from 7.0.6 to 7.0.7 (dependabot\[bot]) [#57259](https://github.com/nodejs/node/pull/57259) +- \[[`fc09523f44`](https://github.com/nodejs/node/commit/fc09523f44)] - **meta**: bump step-security/harden-runner from 2.10.4 to 2.11.0 (dependabot\[bot]) [#57258](https://github.com/nodejs/node/pull/57258) +- \[[`b162402440`](https://github.com/nodejs/node/commit/b162402440)] - **meta**: bump actions/cache from 4.2.0 to 4.2.2 (dependabot\[bot]) [#57256](https://github.com/nodejs/node/pull/57256) +- \[[`f781be1332`](https://github.com/nodejs/node/commit/f781be1332)] - **meta**: bump actions/upload-artifact from 4.6.0 to 4.6.1 (dependabot\[bot]) [#57255](https://github.com/nodejs/node/pull/57255) +- \[[`7934ad9fc0`](https://github.com/nodejs/node/commit/7934ad9fc0)] - **meta**: bump `actions/setup-python` from 5.3.0 to 5.4.0 (dependabot\[bot]) [#56867](https://github.com/nodejs/node/pull/56867) +- \[[`eb4fb9ce90`](https://github.com/nodejs/node/commit/eb4fb9ce90)] - **meta**: bump `peter-evans/create-pull-request` from 7.0.5 to 7.0.6 (dependabot\[bot]) [#56866](https://github.com/nodejs/node/pull/56866) +- \[[`a14e7f1cc4`](https://github.com/nodejs/node/commit/a14e7f1cc4)] - **meta**: bump `mozilla-actions/sccache-action` from 0.0.6 to 0.0.7 (dependabot\[bot]) [#56865](https://github.com/nodejs/node/pull/56865) +- \[[`6c8a9e3d0d`](https://github.com/nodejs/node/commit/6c8a9e3d0d)] - **meta**: bump `codecov/codecov-action` from 5.0.7 to 5.3.1 (dependabot\[bot]) [#56864](https://github.com/nodejs/node/pull/56864) +- \[[`f438c27cbf`](https://github.com/nodejs/node/commit/f438c27cbf)] - **meta**: bump `step-security/harden-runner` from 2.10.2 to 2.10.4 (dependabot\[bot]) [#56863](https://github.com/nodejs/node/pull/56863) +- \[[`24b7fcb153`](https://github.com/nodejs/node/commit/24b7fcb153)] - **meta**: bump `actions/cache` from 4.1.2 to 4.2.0 (dependabot\[bot]) [#56862](https://github.com/nodejs/node/pull/56862) +- \[[`a0afc47988`](https://github.com/nodejs/node/commit/a0afc47988)] - **meta**: bump `actions/stale` from 9.0.0 to 9.1.0 (dependabot\[bot]) [#56860](https://github.com/nodejs/node/pull/56860) +- \[[`8abf4e5d7d`](https://github.com/nodejs/node/commit/8abf4e5d7d)] - **meta**: bump `github/codeql-action` from 3.27.5 to 3.28.8 (dependabot\[bot]) [#56859](https://github.com/nodejs/node/pull/56859) +- \[[`c5bff736e9`](https://github.com/nodejs/node/commit/c5bff736e9)] - **meta**: add CODEOWNERS for SQLite (Colin Ihrig) [#57147](https://github.com/nodejs/node/pull/57147) +- \[[`fd2abaa088`](https://github.com/nodejs/node/commit/fd2abaa088)] - **meta**: update last name for jkrems (Jan Martin) [#57006](https://github.com/nodejs/node/pull/57006) +- \[[`2383f00aae`](https://github.com/nodejs/node/commit/2383f00aae)] - **meta**: bump `actions/upload-artifact` from 4.4.3 to 4.6.0 (dependabot\[bot]) [#56861](https://github.com/nodejs/node/pull/56861) +- \[[`35b3140d03`](https://github.com/nodejs/node/commit/35b3140d03)] - **meta**: bump `actions/setup-node` from 4.1.0 to 4.2.0 (dependabot\[bot]) [#56868](https://github.com/nodejs/node/pull/56868) +- \[[`815fcef73d`](https://github.com/nodejs/node/commit/815fcef73d)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#56889](https://github.com/nodejs/node/pull/56889) +- \[[`08001127a2`](https://github.com/nodejs/node/commit/08001127a2)] - **meta**: add @nodejs/url as codeowner (Chengzhong Wu) [#56783](https://github.com/nodejs/node/pull/56783) +- \[[`3ceda2a035`](https://github.com/nodejs/node/commit/3ceda2a035)] - **module**: handle cached linked async jobs in require(esm) (Joyee Cheung) [#57187](https://github.com/nodejs/node/pull/57187) +- \[[`4c29cc7e6b`](https://github.com/nodejs/node/commit/4c29cc7e6b)] - **module**: add dynamic file-specific ESM warnings (Mert Can Altin) [#56628](https://github.com/nodejs/node/pull/56628) +- \[[`d1845edd21`](https://github.com/nodejs/node/commit/d1845edd21)] - **module**: improve error message from asynchronicity in require(esm) (Joyee Cheung) [#57126](https://github.com/nodejs/node/pull/57126) +- \[[`41fa7d3c21`](https://github.com/nodejs/node/commit/41fa7d3c21)] - **module**: allow omitting context in synchronous next hooks (Joyee Cheung) [#57056](https://github.com/nodejs/node/pull/57056) +- \[[`deddecce3a`](https://github.com/nodejs/node/commit/deddecce3a)] - **module**: fix require.resolve() crash on non-string paths (Aditi) [#56942](https://github.com/nodejs/node/pull/56942) +- \[[`926b887534`](https://github.com/nodejs/node/commit/926b887534)] - **module**: fixing url change in load sync hook chain (Vitalii Akimov) [#56402](https://github.com/nodejs/node/pull/56402) +- \[[`6b93ba723b`](https://github.com/nodejs/node/commit/6b93ba723b)] - **(SEMVER-MINOR)** **module**: use synchronous hooks for preparsing in import(cjs) (Joyee Cheung) [#55698](https://github.com/nodejs/node/pull/55698) +- \[[`b2e44a8079`](https://github.com/nodejs/node/commit/b2e44a8079)] - **(SEMVER-MINOR)** **module**: implement module.registerHooks() (Joyee Cheung) [#55698](https://github.com/nodejs/node/pull/55698) +- \[[`e79e67f6dc`](https://github.com/nodejs/node/commit/e79e67f6dc)] - **net**: validate non-string host for socket.connect (Daeyeon Jeong) [#57198](https://github.com/nodejs/node/pull/57198) +- \[[`e23056212e`](https://github.com/nodejs/node/commit/e23056212e)] - **net**: replace brand checks with identity checks (Yagiz Nizipli) [#57341](https://github.com/nodejs/node/pull/57341) +- \[[`9c0d5e140b`](https://github.com/nodejs/node/commit/9c0d5e140b)] - **net**: emit an error when custom lookup resolves to a non-string address (Edy Silva) [#57192](https://github.com/nodejs/node/pull/57192) +- \[[`2ce79787de`](https://github.com/nodejs/node/commit/2ce79787de)] - **(SEMVER-MINOR)** **process**: add execve (Paolo Insogna) [#56496](https://github.com/nodejs/node/pull/56496) +- \[[`712db2232c`](https://github.com/nodejs/node/commit/712db2232c)] - **readline**: add support for `Symbol.dispose` (Antoine du Hamel) [#57276](https://github.com/nodejs/node/pull/57276) +- \[[`55fb81c0f1`](https://github.com/nodejs/node/commit/55fb81c0f1)] - **readline**: fix unresolved promise on abortion (Daniel Venable) [#54030](https://github.com/nodejs/node/pull/54030) +- \[[`dfcd9b1ac2`](https://github.com/nodejs/node/commit/dfcd9b1ac2)] - **sea**: suppress builtin warning with disableExperimentalSEAWarning option (koooge) [#57086](https://github.com/nodejs/node/pull/57086) +- \[[`bd5c90654a`](https://github.com/nodejs/node/commit/bd5c90654a)] - **sqlite**: add support for unknown named parameters (Colin Ihrig) [#57552](https://github.com/nodejs/node/pull/57552) +- \[[`ec571382a4`](https://github.com/nodejs/node/commit/ec571382a4)] - **sqlite**: add DatabaseSync.prototype.isOpen (Colin Ihrig) [#57522](https://github.com/nodejs/node/pull/57522) +- \[[`bb3bbed126`](https://github.com/nodejs/node/commit/bb3bbed126)] - **sqlite**: add DatabaseSync.prototype\[Symbol.dispose]\() (Colin Ihrig) [#57506](https://github.com/nodejs/node/pull/57506) +- \[[`6067bea027`](https://github.com/nodejs/node/commit/6067bea027)] - **sqlite**: restore changes from #55373 (Colin Ihrig) [#56908](https://github.com/nodejs/node/pull/56908) +- \[[`bc672fcfdd`](https://github.com/nodejs/node/commit/bc672fcfdd)] - **(SEMVER-MINOR)** **sqlite**: allow returning `ArrayBufferView`s from user-defined functions (René) [#56790](https://github.com/nodejs/node/pull/56790) +- \[[`227603dc30`](https://github.com/nodejs/node/commit/227603dc30)] - **sqlite,test,doc**: allow Buffer and URL as database location (Edy Silva) [#56991](https://github.com/nodejs/node/pull/56991) +- \[[`9dd324467a`](https://github.com/nodejs/node/commit/9dd324467a)] - **src**: cleanup aliased_buffer.h (Mohammed Keyvanzadeh) [#57395](https://github.com/nodejs/node/pull/57395) +- \[[`45a2b8532b`](https://github.com/nodejs/node/commit/45a2b8532b)] - **src**: do not pass nullptr to std::string ctor (Charles Kerr) [#57354](https://github.com/nodejs/node/pull/57354) +- \[[`854370a06c`](https://github.com/nodejs/node/commit/854370a06c)] - **src**: fix process exit listeners not receiving unsettled tla codes (Dario Piotrowicz) [#56872](https://github.com/nodejs/node/pull/56872) +- \[[`f7fb259193`](https://github.com/nodejs/node/commit/f7fb259193)] - **src**: refactor SubtleCrypto algorithm and length validations (Filip Skokan) [#57319](https://github.com/nodejs/node/pull/57319) +- \[[`c7bcc2d6c8`](https://github.com/nodejs/node/commit/c7bcc2d6c8)] - **src**: allow embedder customization of OOMErrorHandler (Shelley Vohr) [#57325](https://github.com/nodejs/node/pull/57325) +- \[[`fbd8862156`](https://github.com/nodejs/node/commit/fbd8862156)] - **src**: use Maybe\<void> in ProcessEmitWarningSync (Daeyeon Jeong) [#57250](https://github.com/nodejs/node/pull/57250) +- \[[`04de550289`](https://github.com/nodejs/node/commit/04de550289)] - **src**: make even more improvements to error handling (James M Snell) [#57264](https://github.com/nodejs/node/pull/57264) +- \[[`f1c5e46f89`](https://github.com/nodejs/node/commit/f1c5e46f89)] - **src**: use cached `emit` v8::String (Daeyeon Jeong) [#57249](https://github.com/nodejs/node/pull/57249) +- \[[`65b8e12689`](https://github.com/nodejs/node/commit/65b8e12689)] - **src**: refactor SubtleCrypto algorithm and length validations (Filip Skokan) [#57273](https://github.com/nodejs/node/pull/57273) +- \[[`b6091a8b21`](https://github.com/nodejs/node/commit/b6091a8b21)] - **src**: make more error handling improvements (James M Snell) [#57262](https://github.com/nodejs/node/pull/57262) +- \[[`3bd8a6c76e`](https://github.com/nodejs/node/commit/3bd8a6c76e)] - **src**: fix typo in comment (Antoine du Hamel) [#57291](https://github.com/nodejs/node/pull/57291) +- \[[`f7e39385ae`](https://github.com/nodejs/node/commit/f7e39385ae)] - **src**: improve error handling in `node_messaging.cc` (James M Snell) [#57211](https://github.com/nodejs/node/pull/57211) +- \[[`1bb561bede`](https://github.com/nodejs/node/commit/1bb561bede)] - **src**: improve error handling in `tty_wrap.cc` (James M Snell) [#57211](https://github.com/nodejs/node/pull/57211) +- \[[`567d321a40`](https://github.com/nodejs/node/commit/567d321a40)] - **src**: improve error handling in `tcp_wrap.cc` (James M Snell) [#57211](https://github.com/nodejs/node/pull/57211) +- \[[`f8bee871f7`](https://github.com/nodejs/node/commit/f8bee871f7)] - **src**: fix ThrowInvalidURL call in PathToFileURL (Daniel M Brasil) [#57141](https://github.com/nodejs/node/pull/57141) +- \[[`817f7d0e2e`](https://github.com/nodejs/node/commit/817f7d0e2e)] - **src**: improve error handling in buffer and dotenv (James M Snell) [#57189](https://github.com/nodejs/node/pull/57189) +- \[[`11ef7f9d9c`](https://github.com/nodejs/node/commit/11ef7f9d9c)] - **src**: improve error handling in module_wrap (James M Snell) [#57188](https://github.com/nodejs/node/pull/57188) +- \[[`3b08d718b1`](https://github.com/nodejs/node/commit/3b08d718b1)] - **src**: improve error handling in spawn_sync (James M Snell) [#57185](https://github.com/nodejs/node/pull/57185) +- \[[`9221c2ad87`](https://github.com/nodejs/node/commit/9221c2ad87)] - **src**: detect whether the string is one byte representation or not (theweipeng) [#56147](https://github.com/nodejs/node/pull/56147) +- \[[`e323694772`](https://github.com/nodejs/node/commit/e323694772)] - **src**: fix crash when lazy getter is invoked in a vm context (Chengzhong Wu) [#57168](https://github.com/nodejs/node/pull/57168) +- \[[`9363b05a91`](https://github.com/nodejs/node/commit/9363b05a91)] - **src**: do not format single string argument for THROW_ERR\_\* (Joyee Cheung) [#57126](https://github.com/nodejs/node/pull/57126) +- \[[`5d6a1bc35b`](https://github.com/nodejs/node/commit/5d6a1bc35b)] - **src**: move instead of copy shared pointer in node_blob (Michaël Zasso) [#57120](https://github.com/nodejs/node/pull/57120) +- \[[`5dab48fd9f`](https://github.com/nodejs/node/commit/5dab48fd9f)] - **src**: replace NewFromUtf8 with OneByteString where appropriate (James M Snell) [#57096](https://github.com/nodejs/node/pull/57096) +- \[[`0fe60b478d`](https://github.com/nodejs/node/commit/0fe60b478d)] - **src**: port `defineLazyProperties` to native code (Antoine du Hamel) [#57081](https://github.com/nodejs/node/pull/57081) +- \[[`792959db1d`](https://github.com/nodejs/node/commit/792959db1d)] - **src**: improve error handling in node_blob (James M Snell) [#57078](https://github.com/nodejs/node/pull/57078) +- \[[`e05e2cfb1e`](https://github.com/nodejs/node/commit/e05e2cfb1e)] - **src**: fix accessing empty string (Cheng) [#57014](https://github.com/nodejs/node/pull/57014) +- \[[`619e52ce8d`](https://github.com/nodejs/node/commit/619e52ce8d)] - **src**: lock the isolate properly in IsolateData destructor (Joyee Cheung) [#57031](https://github.com/nodejs/node/pull/57031) +- \[[`844a4a884d`](https://github.com/nodejs/node/commit/844a4a884d)] - **src**: add self-assigment memcpy checks (Burkov Egor) [#56986](https://github.com/nodejs/node/pull/56986) +- \[[`0d1e79740f`](https://github.com/nodejs/node/commit/0d1e79740f)] - **src**: improve node::Dotenv trimming (Dario Piotrowicz) [#56983](https://github.com/nodejs/node/pull/56983) +- \[[`50f164e23b`](https://github.com/nodejs/node/commit/50f164e23b)] - **src**: improve error handling in string_bytes/decoder (James M Snell) [#56978](https://github.com/nodejs/node/pull/56978) +- \[[`93aa4393a4`](https://github.com/nodejs/node/commit/93aa4393a4)] - **src**: improve error handling in process_wrap (James M Snell) [#56977](https://github.com/nodejs/node/pull/56977) +- \[[`c1c824e38d`](https://github.com/nodejs/node/commit/c1c824e38d)] - **src**: use `args.This()` in zlib (Michaël Zasso) [#56988](https://github.com/nodejs/node/pull/56988) +- \[[`0a8e474bdc`](https://github.com/nodejs/node/commit/0a8e474bdc)] - **src**: add nullptr handling for `NativeKeyObject` (Burkov Egor) [#56900](https://github.com/nodejs/node/pull/56900) +- \[[`1ea6198a5a`](https://github.com/nodejs/node/commit/1ea6198a5a)] - **src**: disallow copy/move fns/constructors (Yagiz Nizipli) [#56811](https://github.com/nodejs/node/pull/56811) +- \[[`e4100853cb`](https://github.com/nodejs/node/commit/e4100853cb)] - **src**: add a hard dependency v8_inspector_headers (Chengzhong Wu) [#56805](https://github.com/nodejs/node/pull/56805) +- \[[`a1f92898c0`](https://github.com/nodejs/node/commit/a1f92898c0)] - **src**: improve error handling in encoding_binding.cc (James M Snell) [#56915](https://github.com/nodejs/node/pull/56915) +- \[[`dee8793d94`](https://github.com/nodejs/node/commit/dee8793d94)] - **src**: improve error handling in permission.cc (James M Snell) [#56904](https://github.com/nodejs/node/pull/56904) +- \[[`f41bc4cfd7`](https://github.com/nodejs/node/commit/f41bc4cfd7)] - **src**: improve error handling in node_sqlite (James M Snell) [#56891](https://github.com/nodejs/node/pull/56891) +- \[[`e4df6181bf`](https://github.com/nodejs/node/commit/e4df6181bf)] - **src**: improve error handling in node_os by removing ToLocalChecked (James M Snell) [#56888](https://github.com/nodejs/node/pull/56888) +- \[[`2c96e7a32c`](https://github.com/nodejs/node/commit/2c96e7a32c)] - **src**: improve error handling in node_url (James M Snell) [#56886](https://github.com/nodejs/node/pull/56886) +- \[[`36926ae8d8`](https://github.com/nodejs/node/commit/36926ae8d8)] - **src**: add check for Bignum in GroupOrderSize (Burkov Egor) [#56702](https://github.com/nodejs/node/pull/56702) +- \[[`a68f127a30`](https://github.com/nodejs/node/commit/a68f127a30)] - **src**: reduce string allocations on sqlite (Yagiz Nizipli) [#57227](https://github.com/nodejs/node/pull/57227) +- \[[`e41b1735f1`](https://github.com/nodejs/node/commit/e41b1735f1)] - **stream**: fix sizeAlgorithm validation in WritableStream (Daeyeon Jeong) [#57280](https://github.com/nodejs/node/pull/57280) +- \[[`3bc877dc5c`](https://github.com/nodejs/node/commit/3bc877dc5c)] - **test**: add more number cases for buffer.indexOf (Meghan Denny) [#57200](https://github.com/nodejs/node/pull/57200) +- \[[`cac9a4e832`](https://github.com/nodejs/node/commit/cac9a4e832)] - **test**: update parallel/test-tls-dhe for OpenSSL 3.5 (Richard Lau) [#57477](https://github.com/nodejs/node/pull/57477) +- \[[`3082ab3a64`](https://github.com/nodejs/node/commit/3082ab3a64)] - **test**: module syntax should throw (Marco Ippolito) [#57121](https://github.com/nodejs/node/pull/57121) +- \[[`9b0dfc9a44`](https://github.com/nodejs/node/commit/9b0dfc9a44)] - **test**: update snapshots for amaro v0.3.2 (Marco Ippolito) [#56916](https://github.com/nodejs/node/pull/56916) +- \[[`2defc35ea8`](https://github.com/nodejs/node/commit/2defc35ea8)] - **test**: test runner run plan (Pietro Marchini) [#57304](https://github.com/nodejs/node/pull/57304) +- \[[`ccb3df70be`](https://github.com/nodejs/node/commit/ccb3df70be)] - **test**: update WPT for WebCryptoAPI to edd42c005c (Node.js GitHub Bot) [#57365](https://github.com/nodejs/node/pull/57365) +- \[[`528103c5d0`](https://github.com/nodejs/node/commit/528103c5d0)] - **test**: simplify test-tls-connect-abort-controller.js (Yagiz Nizipli) [#57338](https://github.com/nodejs/node/pull/57338) +- \[[`17e21e6eb5`](https://github.com/nodejs/node/commit/17e21e6eb5)] - **test**: use `assert.match` in `test-esm-import-meta` (Antoine du Hamel) [#57290](https://github.com/nodejs/node/pull/57290) +- \[[`77bbee5184`](https://github.com/nodejs/node/commit/77bbee5184)] - **test**: update compression wpt (Yagiz Nizipli) [#56960](https://github.com/nodejs/node/pull/56960) +- \[[`4fe88f8f53`](https://github.com/nodejs/node/commit/4fe88f8f53)] - _**Revert**_ "**test**: temporary remove resource check from fs read-write" (Rafael Gonzaga) [#56906](https://github.com/nodejs/node/pull/56906) +- \[[`766efc7758`](https://github.com/nodejs/node/commit/766efc7758)] - **test**: more common.mustNotCall in net, tls (Meghan Denny) [#57246](https://github.com/nodejs/node/pull/57246) +- \[[`562e635e11`](https://github.com/nodejs/node/commit/562e635e11)] - **test**: swap assert.strictEqual() parameters (Luigi Pinca) [#57217](https://github.com/nodejs/node/pull/57217) +- \[[`64fdfd5622`](https://github.com/nodejs/node/commit/64fdfd5622)] - **test**: assert write return values in buffer-bigint64 (Meghan Denny) [#57212](https://github.com/nodejs/node/pull/57212) +- \[[`dd538e7cf1`](https://github.com/nodejs/node/commit/dd538e7cf1)] - **test**: allow embedder running async context frame test (Shelley Vohr) [#57193](https://github.com/nodejs/node/pull/57193) +- \[[`937bbeb2b6`](https://github.com/nodejs/node/commit/937bbeb2b6)] - **test**: resolve race condition in test-net-write-fully-async-\* (Matteo Collina) [#57022](https://github.com/nodejs/node/pull/57022) +- \[[`32df9f27d8`](https://github.com/nodejs/node/commit/32df9f27d8)] - **test**: add doAppendAndCancel test (Hasegawa-Yukihiro) [#56972](https://github.com/nodejs/node/pull/56972) +- \[[`90c98df258`](https://github.com/nodejs/node/commit/90c98df258)] - **test**: fix test-without-async-context-frame.mjs in debug mode (Joyee Cheung) [#57034](https://github.com/nodejs/node/pull/57034) +- \[[`974817c9fc`](https://github.com/nodejs/node/commit/974817c9fc)] - **test**: make eval snapshot comparison more flexible (Shelley Vohr) [#57020](https://github.com/nodejs/node/pull/57020) +- \[[`09741cd129`](https://github.com/nodejs/node/commit/09741cd129)] - **test**: simplify test-http2-client-promisify-connect-error (Luigi Pinca) [#57144](https://github.com/nodejs/node/pull/57144) +- \[[`89f3feb364`](https://github.com/nodejs/node/commit/89f3feb364)] - **test**: improve error output of test-http2-client-promisify-connect-error (Antoine du Hamel) [#57135](https://github.com/nodejs/node/pull/57135) +- \[[`25751eba4d`](https://github.com/nodejs/node/commit/25751eba4d)] - **test**: add case for unrecognised fields within pjson "exports" (Jacob Smith) [#57026](https://github.com/nodejs/node/pull/57026) +- \[[`bf0b9fa7c0`](https://github.com/nodejs/node/commit/bf0b9fa7c0)] - **test**: remove unnecessary assert requiring from tests (Dario Piotrowicz) [#57008](https://github.com/nodejs/node/pull/57008) +- \[[`8cfb2df466`](https://github.com/nodejs/node/commit/8cfb2df466)] - **test**: reduce flakiness on test-net-write-fully-async-buffer (Yagiz Nizipli) [#56971](https://github.com/nodejs/node/pull/56971) +- \[[`43c8c101da`](https://github.com/nodejs/node/commit/43c8c101da)] - **test**: remove flakiness on macOS test (Yagiz Nizipli) [#56971](https://github.com/nodejs/node/pull/56971) +- \[[`bd47178f7f`](https://github.com/nodejs/node/commit/bd47178f7f)] - **test**: improve timeout duration for debugger events (Yagiz Nizipli) [#56970](https://github.com/nodejs/node/pull/56970) +- \[[`65694aa2fd`](https://github.com/nodejs/node/commit/65694aa2fd)] - **test**: remove unnecessary syscall to cpuinfo (Yagiz Nizipli) [#56968](https://github.com/nodejs/node/pull/56968) +- \[[`5633c4b2df`](https://github.com/nodejs/node/commit/5633c4b2df)] - **test**: update webstorage wpt (Yagiz Nizipli) [#56963](https://github.com/nodejs/node/pull/56963) +- \[[`2244a2776a`](https://github.com/nodejs/node/commit/2244a2776a)] - **test**: execute shell directly for refresh() (Yagiz Nizipli) [#55051](https://github.com/nodejs/node/pull/55051) +- \[[`afae4b1216`](https://github.com/nodejs/node/commit/afae4b1216)] - **test**: change jenkins reporter (Carlos Espa) [#56808](https://github.com/nodejs/node/pull/56808) +- \[[`b26592a7c4`](https://github.com/nodejs/node/commit/b26592a7c4)] - **test**: fix race condition in test-child-process-bad-stdio (Colin Ihrig) [#56845](https://github.com/nodejs/node/pull/56845) +- \[[`72c2279649`](https://github.com/nodejs/node/commit/72c2279649)] - **test**: adjust check to use OpenSSL sec level (Michael Dawson) [#56819](https://github.com/nodejs/node/pull/56819) +- \[[`9551b27651`](https://github.com/nodejs/node/commit/9551b27651)] - **test**: test-crypto-scrypt.js doesn't need internals (Meghan Denny) [#56673](https://github.com/nodejs/node/pull/56673) +- \[[`3095db84be`](https://github.com/nodejs/node/commit/3095db84be)] - **test**: set `test-fs-cp` as flaky (Stefan Stojanovic) [#56799](https://github.com/nodejs/node/pull/56799) +- \[[`31f98d7ccd`](https://github.com/nodejs/node/commit/31f98d7ccd)] - **test**: search cctest files (Chengzhong Wu) [#56791](https://github.com/nodejs/node/pull/56791) +- \[[`267f17d5f6`](https://github.com/nodejs/node/commit/267f17d5f6)] - **test**: convert test_encoding_binding.cc to a JS test (Chengzhong Wu) [#56791](https://github.com/nodejs/node/pull/56791) +- \[[`a875d7bdd1`](https://github.com/nodejs/node/commit/a875d7bdd1)] - **test**: test-crypto-prime.js doesn't need internals (Meghan Denny) [#56675](https://github.com/nodejs/node/pull/56675) +- \[[`85482d69c6`](https://github.com/nodejs/node/commit/85482d69c6)] - **test**: temporary remove resource check from fs read-write (Rafael Gonzaga) [#56789](https://github.com/nodejs/node/pull/56789) +- \[[`ec63d72f16`](https://github.com/nodejs/node/commit/ec63d72f16)] - **test**: mark test-without-async-context-frame flaky on windows (James M Snell) [#56753](https://github.com/nodejs/node/pull/56753) +- \[[`f16acc8521`](https://github.com/nodejs/node/commit/f16acc8521)] - **test**: remove unnecessary code (Luigi Pinca) [#56784](https://github.com/nodejs/node/pull/56784) +- \[[`0573c19a97`](https://github.com/nodejs/node/commit/0573c19a97)] - **test**: mark `test-esm-loader-hooks-inspect-wait` flaky (Richard Lau) [#56803](https://github.com/nodejs/node/pull/56803) +- \[[`48e0fd3f13`](https://github.com/nodejs/node/commit/48e0fd3f13)] - **test**: update WPT for url to a23788b77a (Node.js GitHub Bot) [#56779](https://github.com/nodejs/node/pull/56779) +- \[[`642959b87f`](https://github.com/nodejs/node/commit/642959b87f)] - **test**: remove duplicate error reporter from ci (Carlos Espa) [#56739](https://github.com/nodejs/node/pull/56739) +- \[[`2023237b4e`](https://github.com/nodejs/node/commit/2023237b4e)] - **test,crypto**: make tests work for BoringSSL (Shelley Vohr) [#57021](https://github.com/nodejs/node/pull/57021) +- \[[`1b33b976ec`](https://github.com/nodejs/node/commit/1b33b976ec)] - **test_runner**: refactor testPlan counter increse (Pietro Marchini) [#56765](https://github.com/nodejs/node/pull/56765) +- \[[`d860f2bf42`](https://github.com/nodejs/node/commit/d860f2bf42)] - **test_runner**: differentiate test types in enqueue dequeue events (Eddie Abbondanzio) [#54049](https://github.com/nodejs/node/pull/54049) +- \[[`993bab646c`](https://github.com/nodejs/node/commit/993bab646c)] - **test_runner**: print formatted errors on summary (Pietro Marchini) [#56911](https://github.com/nodejs/node/pull/56911) +- \[[`3ed3ba438f`](https://github.com/nodejs/node/commit/3ed3ba438f)] - **test_runner**: allow special characters in snapshot keys (Carlos Espa) [#57017](https://github.com/nodejs/node/pull/57017) +- \[[`d1da9a3a2f`](https://github.com/nodejs/node/commit/d1da9a3a2f)] - **timers**: optimize timer functions with improved argument handling (Gürgün Dayıoğlu) [#57072](https://github.com/nodejs/node/pull/57072) +- \[[`44aa13990a`](https://github.com/nodejs/node/commit/44aa13990a)] - **timers**: remove unnecessary allocation of \_onTimeout (Gürgün Dayıoğlu) [#57497](https://github.com/nodejs/node/pull/57497) +- \[[`401b965977`](https://github.com/nodejs/node/commit/401b965977)] - **timers**: remove unused parameter from insertGuarded (Gürgün Dayıoğlu) [#57251](https://github.com/nodejs/node/pull/57251) +- \[[`9eac9c02c9`](https://github.com/nodejs/node/commit/9eac9c02c9)] - **timers**: simplify the compareTimersLists function (Gürgün Dayıoğlu) [#57110](https://github.com/nodejs/node/pull/57110) +- \[[`01215af350`](https://github.com/nodejs/node/commit/01215af350)] - **tls**: remove unnecessary type check on normalize (Yagiz Nizipli) [#57336](https://github.com/nodejs/node/pull/57336) +- \[[`f5e2b12a60`](https://github.com/nodejs/node/commit/f5e2b12a60)] - **(SEMVER-MINOR)** **tls**: implement tls.getCACertificates() (Joyee Cheung) [#57107](https://github.com/nodejs/node/pull/57107) +- \[[`7a777cdb58`](https://github.com/nodejs/node/commit/7a777cdb58)] - **tools**: fix WPT update cron string (Antoine du Hamel) [#57665](https://github.com/nodejs/node/pull/57665) +- \[[`c6d90dbf9b`](https://github.com/nodejs/node/commit/c6d90dbf9b)] - **tools**: remove stalled label on unstalled issues and PRs (Rich Trott) [#57630](https://github.com/nodejs/node/pull/57630) +- \[[`96f7f64602`](https://github.com/nodejs/node/commit/96f7f64602)] - **tools**: update sccache to support GH cache changes (Michaël Zasso) [#57573](https://github.com/nodejs/node/pull/57573) +- \[[`0b87027520`](https://github.com/nodejs/node/commit/0b87027520)] - **tools**: bump @babel/helpers from 7.26.9 to 7.26.10 in /tools/eslint (dependabot\[bot]) [#57444](https://github.com/nodejs/node/pull/57444) +- \[[`7d561eb90c`](https://github.com/nodejs/node/commit/7d561eb90c)] - **tools**: add config subspace (Marco Ippolito) [#57239](https://github.com/nodejs/node/pull/57239) +- \[[`46efdbf59f`](https://github.com/nodejs/node/commit/46efdbf59f)] - **tools**: import rather than require ESLint plugins (Michaël Zasso) [#57315](https://github.com/nodejs/node/pull/57315) +- \[[`502bfaf876`](https://github.com/nodejs/node/commit/502bfaf876)] - **tools**: switch back to official OpenSSL (Richard Lau) [#57301](https://github.com/nodejs/node/pull/57301) +- \[[`ea821f419d`](https://github.com/nodejs/node/commit/ea821f419d)] - **tools**: revert to use @stylistic/eslint-plugin-js v3 (Joyee Cheung) [#57314](https://github.com/nodejs/node/pull/57314) +- \[[`bb857615d3`](https://github.com/nodejs/node/commit/bb857615d3)] - **tools**: add more details about rolling inspector_protocol (Chengzhong Wu) [#57167](https://github.com/nodejs/node/pull/57167) +- \[[`3f29d39c1b`](https://github.com/nodejs/node/commit/3f29d39c1b)] - **tools**: bump the eslint group in /tools/eslint with 5 updates (dependabot\[bot]) [#57261](https://github.com/nodejs/node/pull/57261) +- \[[`b3caac83d4`](https://github.com/nodejs/node/commit/b3caac83d4)] - **tools**: remove deps/zlib/GN-scraper.py (Chengzhong Wu) [#57238](https://github.com/nodejs/node/pull/57238) +- \[[`ace99ffe79`](https://github.com/nodejs/node/commit/ace99ffe79)] - **tools**: run Linux tests on GitHub arm64 runners as well (Dennis Ameling) [#57162](https://github.com/nodejs/node/pull/57162) +- \[[`e65e6269b7`](https://github.com/nodejs/node/commit/e65e6269b7)] - **tools**: consolidate 'introduced_in' check for docs (1ilsang) [#57109](https://github.com/nodejs/node/pull/57109) +- \[[`890841e64b`](https://github.com/nodejs/node/commit/890841e64b)] - **tools**: do not run major-release workflow on forks (Rich Trott) [#57064](https://github.com/nodejs/node/pull/57064) +- \[[`e3f86c5a0c`](https://github.com/nodejs/node/commit/e3f86c5a0c)] - **tools**: fix release URL computation in update-root-certs.mjs (Joyee Cheung) [#56843](https://github.com/nodejs/node/pull/56843) +- \[[`280316f773`](https://github.com/nodejs/node/commit/280316f773)] - **tools**: add support for `import source` syntax in linter (Antoine du Hamel) [#56992](https://github.com/nodejs/node/pull/56992) +- \[[`998b2ae3cd`](https://github.com/nodejs/node/commit/998b2ae3cd)] - **tools**: bump eslint version (dependabot\[bot]) [#56869](https://github.com/nodejs/node/pull/56869) +- \[[`ca4121b95a`](https://github.com/nodejs/node/commit/ca4121b95a)] - **tools**: remove test-asan/ubsan workflows (Michaël Zasso) [#56823](https://github.com/nodejs/node/pull/56823) +- \[[`866ac37255`](https://github.com/nodejs/node/commit/866ac37255)] - **tools**: run macOS test workflow with Xcode 16.1 (Michaël Zasso) [#56831](https://github.com/nodejs/node/pull/56831) +- \[[`55ca46ad8e`](https://github.com/nodejs/node/commit/55ca46ad8e)] - **tools**: update sccache and sccache-action (Michaël Zasso) [#56815](https://github.com/nodejs/node/pull/56815) +- \[[`be9c1c93a8`](https://github.com/nodejs/node/commit/be9c1c93a8)] - **tools**: fix license-builder for inspector_protocol (Michaël Zasso) [#56814](https://github.com/nodejs/node/pull/56814) +- \[[`6dab980fab`](https://github.com/nodejs/node/commit/6dab980fab)] - **typings**: fix `ImportModuleDynamicallyCallback` return type (Chengzhong Wu) [#57160](https://github.com/nodejs/node/pull/57160) +- \[[`e301098854`](https://github.com/nodejs/node/commit/e301098854)] - **util**: avoid run debug when enabled is false (fengmk2) [#57494](https://github.com/nodejs/node/pull/57494) +- \[[`17016d7722`](https://github.com/nodejs/node/commit/17016d7722)] - **(SEMVER-MINOR)** **util**: expose diff function used by the assertion errors (Giovanni Bucci) [#57462](https://github.com/nodejs/node/pull/57462) +- \[[`42b9e19f6b`](https://github.com/nodejs/node/commit/42b9e19f6b)] - **util**: enforce shouldColorize in styleText array arg (Marco Ippolito) [#56722](https://github.com/nodejs/node/pull/56722) +- \[[`5ed6d8be40`](https://github.com/nodejs/node/commit/5ed6d8be40)] - **(SEMVER-MINOR)** **v8**: add v8.getCppHeapStatistics() method (Aditi) [#57146](https://github.com/nodejs/node/pull/57146) +- \[[`c06d218b23`](https://github.com/nodejs/node/commit/c06d218b23)] - **win,build**: add option to enable Control Flow Guard (Hüseyin Açacak) [#56605](https://github.com/nodejs/node/pull/56605) +- \[[`8202211140`](https://github.com/nodejs/node/commit/8202211140)] - **win,test**: disable test case failing with ClangCL (Stefan Stojanovic) [#57397](https://github.com/nodejs/node/pull/57397) +- \[[`1a12b4c119`](https://github.com/nodejs/node/commit/1a12b4c119)] - **zlib**: use modern class syntax for zstd classes (Yagiz Nizipli) [#56965](https://github.com/nodejs/node/pull/56965) +- \[[`f9b3680268`](https://github.com/nodejs/node/commit/f9b3680268)] - **zlib**: make all zstd functions experimental (Yagiz Nizipli) [#56964](https://github.com/nodejs/node/pull/56964) +- \[[`4991e5d826`](https://github.com/nodejs/node/commit/4991e5d826)] - **(SEMVER-MINOR)** **zlib**: add zstd support (Jan Martin) [#52100](https://github.com/nodejs/node/pull/52100) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.15.0/node-v22.15.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.15.0/node-v22.15.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.15.0/node-v22.15.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.15.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.15.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.15.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.15.0/node-v22.15.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.15.0/node-v22.15.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.15.0/node-v22.15.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.15.0/node-v22.15.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.15.0/node-v22.15.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.15.0/node-v22.15.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.15.0/node-v22.15.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.15.0/node-v22.15.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.15.0/node-v22.15.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.15.0/node-v22.15.0.tar.gz \ +Other release files: https://nodejs.org/dist/v22.15.0/ \ +Documentation: https://nodejs.org/docs/v22.15.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +049718cc0ce4f58de90f7b752b82a78868a21fe7685af1c603ba1d22ae8a4d67 node-v22.15.0-aix-ppc64.tar.gz +1013d381e8a4ebe64484eed07db2637a570090fdef87924bf0beb92d9ba7cc92 node-v22.15.0-arm64.msi +92eb58f54d172ed9dee320b8450f1390db629d4262c936d5c074b25a110fed02 node-v22.15.0-darwin-arm64.tar.gz +6e278a107d50da24b644dd26810a639a5f8ca67b55086e6b693caabcbb759912 node-v22.15.0-darwin-arm64.tar.xz +f7f42bee60d602783d3a842f0a02a2ecd9cb9d7f6f3088686c79295b0222facf node-v22.15.0-darwin-x64.tar.gz +7dab3f93551d88f1e63db6b32bae6d4858e16740e9849ebbeac1d43f5055d8f0 node-v22.15.0-darwin-x64.tar.xz +cda8bbbfb4f7fb19b65efd5faabc97ccea1e94422e7066b9a1e70280c1ca6453 node-v22.15.0-headers.tar.gz +1f0377a9f3dbb85959d38a6ebc6e7e189f520f509488c401be4970d8718a14e9 node-v22.15.0-headers.tar.xz +c3582722db988ed1eaefd590b877b86aaace65f68746726c1f8c79d26e5cc7de node-v22.15.0-linux-arm64.tar.gz +d68adf72c531f1118bee75b20ffbc5911accfda5e73454a798625464b40a4adf node-v22.15.0-linux-arm64.tar.xz +639a3ee3217049ba20e6f05651c7281a9d007111196387eb177081af8851e52f node-v22.15.0-linux-armv7l.tar.gz +998da599863b8104992472ca4e738842b5e9b76b3665ea8bc13bd1ca52019426 node-v22.15.0-linux-armv7l.tar.xz +a744107732546a3b112630cde1cc2db681559668cea36bee851348ed036c101c node-v22.15.0-linux-ppc64le.tar.gz +e12384dd6d8e80ee1cdb8cf0f38545d3cc2a5b99f7dd2c6ae05067222d39ff7a node-v22.15.0-linux-ppc64le.tar.xz +600afa22128e5d1b7d472109b8f9f93ace161dab3c1a8a642895675471916d86 node-v22.15.0-linux-s390x.tar.gz +308e14b2b20445e03fbec920921b6b7f579832516b3e826b0d67be8acf0ac6f6 node-v22.15.0-linux-s390x.tar.xz +29d1c60c5b64ccdb0bc4e5495135e68e08a872e0ae91f45d9ec34fc135a17981 node-v22.15.0-linux-x64.tar.gz +dafe2e8f82cb97de1bd10db9e2ec4c07bbf53389b0799b1e095a918951e78fd4 node-v22.15.0-linux-x64.tar.xz +0bc096a279cd7cbc57bf3a6c6570f3ca03b3ab684d1878a1425919e9b6b76317 node-v22.15.0.pkg +8e64edbc70a7188873e0f4f07c812fa747c27c477d558b23dcb135bdf5e32298 node-v22.15.0.tar.gz +e7c4226d1d92f33ad854d6da4f7e519e77690b8e73f93496881f8c539174d9df node-v22.15.0.tar.xz +d0615f16a280f4660a6c83d472a0b2e72122e47f4c82754a5ed950d54d0cbe3d node-v22.15.0-win-arm64.7z +737cd7046d96575c2d6cd36e0355afba54b79296b0f403ef4b3b1b5852b10ab6 node-v22.15.0-win-arm64.zip +45471a4f77cdaacce971ab7a6698659ed872606f7b4b0aecdfe5689627134cb2 node-v22.15.0-win-x64.7z +06067d4f0d463f90ed803d5eca5b039a05dec5d70fc7b7cc254803a59bd0e27c node-v22.15.0-win-x64.zip +f9534de57244052cb245ca3af29ac40e947b5735b05b37a28efac7bc82809a8a node-v22.15.0-win-x86.7z +961e362568b91340b0229d27a64e3925ce5d807898a86074d61cab578f151843 node-v22.15.0-win-x86.zip +499d4a47b9db6db47114a31ceab69c69a7265900a29a5da53746c00d13dbad88 node-v22.15.0-x64.msi +1d884cdc5517126c2da00e23b445050a2f1e8b7bcaa57e0feb2c2481d347fb0a node-v22.15.0-x86.msi +ebdab2adc9ff5fb09f852b665875af35138b9ee5725a3927bb85d7cfd36e059f win-arm64/node.exe +6c43922c747e0c07fcc4ceb64f08e98854a5c1b31665764076f5783556973d16 win-arm64/node.lib +fb437ae33e9e5fff6792ba7a1e81d1a1dab5e346b57328e9a0d2ec7b9bdb309d win-arm64/node_pdb.7z +7785c2aec7a86efce7707a1abc7dee58bd11e610f748f74e243789f9daff1e13 win-arm64/node_pdb.zip +77bdff912b1c569b3e693fe126f619337c3e9d73dafbc4d0bf1d4f1f6a145761 win-x64/node.exe +e731ad9af05eabe6bd941442b19dd6037f559a19a2fa8df2a8297ccb46ed7577 win-x64/node.lib +8c886b364ac8c65bef429d9d127f457e5c5755d19c4df294e9d187763dc6c3ea win-x64/node_pdb.7z +132d18a1f522d20bc63d66b0eabe8089a2643ac61e1585d0269013f01ef1baef win-x64/node_pdb.zip +0c20613ca23c8b8e7ca3d1ee5da9173dd9289f9833cff18649c192e4ce42c9b4 win-x86/node.exe +5f66397542e27adb288e1742720cedbeaba8a2034ebd58397306b2905f4acd2d win-x86/node.lib +93d5377d08c9c5edf71f0c52e801c1ae55ace3e45e107fdac61ec7e04e0e5ff5 win-x86/node_pdb.7z +7601c2ca6c1a64b834af03ac2cb78b8485dc501e8b5b980ac4702ff8d6ad0cfb win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEpgI1MPxTRh/skfmcBM0/L94HlXgFAmgIldcACgkQBM0/L94H +lXiqeA//TdW4CLwlfmlA2l/5o0QcJLxWjtS/D+Wyn3t+yyRqBUdTTCBpvKUwen1D +mLlK5uyedcF6D5nazBn7aBB21l+RglQ/1a4l2aA4vlwP2wKUjwHdsU4qWxdiX4hm +C1VBqmerLw+UyzEy7V9/WQLEsocEqBrfw8j0g44cWqJW278iRMc4OFvX+WEn34N+ +wxQI+aKQt7RrqlRUNKe83w8PkXP2wBMGiHwCQVN8GvS0IlKmEXUa/er9VHV5HXie +bCtmSlZvC4mPyUA3R4TYr1iAkoRrk0YNcoZ/eN45Zdd/IEyejoy0yddUNd3ow/6R +sHySf9b0YG0CZmJmLfHhAE9M+gUtz1QCHvGePs5+GScjytzIqBnNskfh/rSdjX1g +gWcU0vfOW4jz/enDmPXlLhMw18nz4UEVxmJMPFSd/yBhszcdds+aBR0mo9pkVZA2 +dsoAlLZWl16DpdmYLJhK6P2vs9LjWV0Pn43HcXxWgxSq+hFiRc/3m9BWWN2HEr3/ +uB/mE5kxb+h3qwlvygvzclnZ7PcITg8rpTWA3CIlnojPoS0p+23gSpYeGB1tVqz5 +qZcdnDN1iMnj0HzPKQoi12YTVdklPpDvGucNJya5+eVydzkrvPBHxxVczRUp8SWN +bJA5eOBajrS087L8bHJJ6kefur9bmJoAVqbVxl72Jef7s/O7gvk= +=MzJb +-----END PGP SIGNATURE----- +``` From 0b2403976987f6029a485e37965b90b991e61a46 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Wed, 23 Apr 2025 12:28:32 -0300 Subject: [PATCH 0418/1385] Blog: add update to Security CI incident (#7658) * Blog: add update to Security CI incident Co-Authored-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Co-Authored-By: Richard Lau <rlau@redhat.com> Co-Authored-By: Matteo Collina <matteo.collina@gmail.com> * fixup! Blog: add update to Security CI incident * fixup! fixup! Blog: add update to Security CI incident * Update apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> * Update apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> * Update apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md Signed-off-by: Matteo Collina <matteo.collina@gmail.com> * Update apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md Signed-off-by: Matteo Collina <matteo.collina@gmail.com> * Update apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md Signed-off-by: Matteo Collina <matteo.collina@gmail.com> * fixup Signed-off-by: Matteo Collina <hello@matteocollina.com> --------- Signed-off-by: Matteo Collina <matteo.collina@gmail.com> Signed-off-by: Matteo Collina <hello@matteocollina.com> Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> Co-authored-by: Richard Lau <rlau@redhat.com> Co-authored-by: Matteo Collina <matteo.collina@gmail.com> Co-authored-by: Matteo Collina <hello@matteocollina.com> --- .../vulnerability/march-2025-ci-incident.md | 69 ++++++++++++++++++- .../example_attack_test_infra.svg | 4 ++ .../blog/vulnerability/example_test_infra.svg | 4 ++ 3 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 apps/site/public/static/images/blog/vulnerability/example_attack_test_infra.svg create mode 100644 apps/site/public/static/images/blog/vulnerability/example_test_infra.svg diff --git a/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md b/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md index 635daabd05051..12c13318ddce2 100644 --- a/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md +++ b/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md @@ -1,13 +1,75 @@ --- -date: '2025-03-31T16:30:00.617Z' +date: '2025-04-23T16:30:00.617Z' category: vulnerability title: Node.js Test CI Security Incident layout: blog-post author: Node.js Technical Steering Committee --- -On March 21st, the Node.js project received a security report regarding our development infrastructure via [our bug bounty program](https://hackerone.com/nodejs). We immediately restricted access while implementing corrective actions. +# _(Update 23-April-2025)_ Node.js Test CI Security Incident – Full Disclosure + +## Summary + +On March 21, 2025, we received a [security report via HackerOne](https://hackerone.com/reports/3050534) (link restricted at time of writing), detailing a successful compromise of several Node.js test CI hosts. + +According to the HackerOne report, the exploit proceeded as follows: + +1. Submit a valid pull request to nodejs/node. +2. Wait for a maintainer to add the `request-ci` label (this label is added to every pull request with non-documentation changes). +3. After approval, update the pull request using an outdated Git commit timestamp. +4. When Jenkins pipelines trigger, they fetch and execute code from the forked pull request. +5. Attain code execution on Node.js Jenkins agents. + +Upon review, we identified that the `request-ci` label step simplifies but is **not required** to carry out the attack. A similar attack could be used against the `commit-queue` label, thus potentially allowing an attacker to land an unauthorized code change. + +The core issue stems from a Time-of-Check-Time-of-Use (TOCTOU) vulnerability between initiating a CI build and the moment the Jenkins job checks out the code. Previously, CI jobs used Git references (`refs/pull/<pr_id>/head`), which attackers can alter after triggering the CI. Importantly, the collaborator initiating the CI build did nothing wrong—the pull request appeared safe when CI was triggered. + +![Example of workflow for starting Jenkins CI on a Github Pull Request][example_test_infra] + +![Example of attack in the Node.js test infra][example_attack_test_Infra] + +## Remediation + +In response to this security incident, the Node.js security team took measures to mitigate risks and secure the infrastructure. + +- Immediately upon confirmation of the vulnerability, access to initiate new Jenkins CI runs was restricted to prevent further compromise while the team validated the report. +- All compromised hosts (24 machines) were swiftly identified, removed from Jenkins, and rebuilt to eliminate any potential residual risk left over from the initial ingress. +- Security improvements were implemented in Jenkins jobs to validate commit SHAs, ensuring jobs only executed trusted and verified code. +- `request-ci` and `commit-queue` labels now act relying on validated commit SHAs instead of comparing dates. +- Comprehensive audits were carried out across 140 Jenkins jobs, prioritizing frequently used ones, to detect and remediate vulnerabilities. +- Identified vulnerable GitHub workflows were temporarily disabled, promptly patched, and re-enabled with enhanced security measures. + +These targeted actions significantly strengthened the security posture of our CI infrastructure, preventing the recurrence of similar potential +intrusions and ensuring safe operations moving forward. +The change we implemented now requires every pull request to be approved before running the Jenkins CI - or for collaborators to specify the individual SHA. + +## Timeline + +1. **Friday, 21 March 2025**: Report received on Hackerone. Initial triage confirmed the report as a genuine issue. The ability to start new Jenkins CI runs was restricted to prevent any further machine compromises. +2. **Monday, 24 March 2025:** All compromised machines (totalling 24\) were identified and removed from Jenkins (pending a complete rebuild). Initial attempts to evaluate all 140 jobs defined in our Jenkins instance for vulnerability. Work started on updating the most often used vulnerable jobs to take an expected commit SHA and only proceed if the SHA of the code checked out on the machine matches. +3. **Tuesday, 25 March 2025:** Some affected hosts rebuilt. The updated jobs failed on macOS and were investigated and updated again. +4. **Wednesday, 26 March 2025**: More jobs updated and affected hosts rebuilt. Some GitHub workflows also identified as being vulnerable to similar attacks and disabled. +5. **Thursday, 27 March 2025**: Validation logic in the updated jobs tweaked again to allow daily testing on non-pull request branches. Decision taken to disable all remaining jobs that had not been evaluated for the vulnerability or identified as needing the fix applied. More machines rebuilt. +6. **Friday, 28 March 2025:** GitHub workflows were patched and `commit-queue` was re-enabled. +7. **Tuesday, 1 April 2025:** Ability to start jobs on Jenkins and via `request-ci` was reenabled. Some lesser used jobs were still disabled. +8. **Wednesday, 2 April 2025**: More machines rebuilt. +9. **Thursday, 3 April 2025**: Benchmarking and libuv CI jobs updated. + +## Security vs. Developer Experience + +Over 300 volunteers maintain the Node.js project. Our processes aim to streamline CI initiation and verification of contributions across approximately 100 Jenkins runners spanning multiple operating systems and CPU architectures. +The existing CI system design anticipates potential compromises, recognizing the need to balance security with developer convenience. + +## Volunteer Organization + +As a volunteer-driven organization, we rely on people dedicating their time to work on unglamorous tasks, such as hardening CI, handling security reports, and assembling releases. Even good-faith research against our live systems could significantly disrupt our operations. As always, we welcome all sorts of contributions, including penetration testing. We ask researchers to give us a heads up on what they are attempting to do on live systems and to keep an auditable record of their actions through our HackerOne program or by contacting the Node.js Technical Steering Committee directly (tsc@iojs.org). More on that in our [SECURITY.md](https://github.com/nodejs/node/blob/main/SECURITY.md) file. + +--- + +# Node.js Test CI Security Incident – Notice + +On March 21st, the Node.js project received a security report regarding our development infrastructure via [our bug bounty program](https://hackerone.com/nodejs). We immediately restricted access while implementing corrective actions. The reported issue did not impact the Node.js runtime and there is no risk to users of Node.js. No action by Node.js users is required. The development infrastructure is expected to be available to the community by April 15 or sooner. @@ -19,3 +81,6 @@ A full report of this incident will be available forthcoming. We appreciate the The current Node.js security policy can be found at [https://nodejs.org/security/](/security/). Please follow the process outlined in <https://github.com/nodejs/node/security/policy> if you wish to report a vulnerability in Node.js. Subscribe to the low-volume announcement-only nodejs-sec mailing list at <https://groups.google.com/forum/#!forum/nodejs-sec> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the nodejs GitHub organization. + +[example_test_infra]: /static/images/blog/vulnerability/example_test_infra.svg +[example_attack_test_Infra]: /static/images/blog/vulnerability/example_attack_test_infra.svg diff --git a/apps/site/public/static/images/blog/vulnerability/example_attack_test_infra.svg b/apps/site/public/static/images/blog/vulnerability/example_attack_test_infra.svg new file mode 100644 index 0000000000000..18edfa7801ac1 --- /dev/null +++ b/apps/site/public/static/images/blog/vulnerability/example_attack_test_infra.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 711.40625 643.90234375" width="1422.8125" height="1287.8046875"><!-- svg-source:excalidraw --><metadata></metadata><defs><style class="style-fonts"> + @font-face { font-family: Virgil; src: url(data:font/woff2;base64,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); }</style></defs><rect x="0" y="0" width="711.40625" height="643.90234375" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(21.682389413152123 52.10168989925296) rotate(0 79.91932012384586 35.46484375)"><path d="M17.73 0 C62.99 2.29, 107.31 0.43, 142.11 0 M17.73 0 C60.18 -0.09, 102.36 0.03, 142.11 0 M142.11 0 C154.11 1.52, 161.44 7.82, 159.84 17.73 M142.11 0 C151.68 -0.02, 157.98 5.26, 159.84 17.73 M159.84 17.73 C161.69 29.2, 161.17 36.4, 159.84 53.2 M159.84 17.73 C160.79 25.47, 160.28 34.23, 159.84 53.2 M159.84 53.2 C160.73 66.55, 153.41 69.99, 142.11 70.93 M159.84 53.2 C161.71 64.42, 154.53 71.92, 142.11 70.93 M142.11 70.93 C107.68 69.64, 70.99 71.05, 17.73 70.93 M142.11 70.93 C97.71 71.62, 54.91 72.52, 17.73 70.93 M17.73 70.93 C5.61 69.45, -1.28 64.49, 0 53.2 M17.73 70.93 C6.7 69.26, -0.25 63.37, 0 53.2 M0 53.2 C1.06 41.07, 1.35 29.92, 0 17.73 M0 53.2 C-0.84 45.6, -0.1 37.84, 0 17.73 M0 17.73 C-1.17 5.89, 6.66 -1.61, 17.73 0 M0 17.73 C1.62 5.52, 4.4 -0.4, 17.73 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(53.76729791590515 74.41603417947022) rotate(0 47.83441162109375 13.15049946978263)"><text x="47.83441162109375" y="18.53694405260566" font-family="Virgil, Segoe UI Emoji" font-size="21.04079915165228px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">PR #XYZ</text></g><g stroke-linecap="round" transform="translate(273.55078125 11.94140625) rotate(0 82.9765625 82.9765625)"><path d="M46.22 9.06 C55.25 3.14, 68.41 0.56, 79.77 0.16 C91.13 -0.24, 103.81 2.69, 114.4 6.67 C124.98 10.65, 135.57 16.25, 143.3 24.03 C151.03 31.81, 157.08 42.67, 160.78 53.36 C164.48 64.05, 166.23 76.67, 165.5 88.15 C164.77 99.62, 161.43 112.1, 156.41 122.21 C151.39 132.31, 144.06 142.04, 135.36 148.78 C126.65 155.52, 115.32 159.94, 104.17 162.63 C93.01 165.33, 79.46 166.58, 68.42 164.96 C57.38 163.34, 47.31 159.11, 37.92 152.9 C28.53 146.69, 18.34 137.28, 12.07 127.7 C5.8 118.12, 1.69 106.66, 0.32 95.42 C-1.05 84.19, 0.8 71.06, 3.86 60.29 C6.91 49.52, 10.5 39.88, 18.65 30.81 C26.81 21.73, 45.73 10.21, 52.79 5.84 C59.86 1.47, 60.49 3.28, 61.05 4.59 M89.04 0.98 C99.9 0.87, 112.04 5.47, 121.76 10.7 C131.47 15.94, 140.39 23.37, 147.31 32.39 C154.23 41.42, 160.44 54.11, 163.28 64.84 C166.13 75.57, 166.51 86.02, 164.38 96.78 C162.25 107.54, 156.75 120.11, 150.52 129.4 C144.3 138.69, 136.48 146.73, 127.03 152.52 C117.59 158.31, 105.03 162.69, 93.86 164.14 C82.69 165.59, 70.78 164.13, 59.99 161.24 C49.2 158.35, 37.82 153.7, 29.11 146.77 C20.4 139.84, 12.59 130.13, 7.72 119.67 C2.84 109.2, 0.04 95.56, -0.14 83.96 C-0.32 72.37, 2.51 60.34, 6.63 50.1 C10.75 39.86, 16.51 30.24, 24.59 22.51 C32.66 14.79, 44.43 7.47, 55.06 3.76 C65.7 0.04, 82.62 0.74, 88.4 0.22 C94.17 -0.29, 89.49 -0.65, 89.7 0.68" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(303.7041132359773 44.74467872670061) rotate(0 52.649940490722656 50)"><text x="52.649940490722656" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Maintainer</text><text x="52.649940490722656" y="42.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">add</text><text x="52.649940490722656" y="67.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">'request'ci'</text><text x="52.649940490722656" y="92.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">label</text></g><g stroke-linecap="round"><g transform="translate(185.89453125 91.484375) rotate(0 39.58984375 3.224609375)"><path d="M0.44 0.04 C13.91 1.13, 66.59 5.41, 79.73 6.63 M-0.79 -0.98 C12.67 0.31, 65.84 7.18, 79.07 8.26" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(185.89453125 91.484375) rotate(0 39.58984375 3.224609375)"><path d="M78.86 6.82 L65.37 11.28 L66.05 1.23 L78.46 9.29" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M79.07 8.26 C76.17 10.01, 73.39 10.46, 64.88 13.09 M79.07 8.26 C73.04 10.21, 67.83 11.82, 64.88 13.09 M64.88 13.09 C66.45 10.39, 66.51 4.98, 66.24 0.49 M64.88 13.09 C65.74 9.56, 65.74 6.67, 66.24 0.49 M66.24 0.49 C70.02 4.42, 74.75 6.27, 79.07 8.26 M66.24 0.49 C70.89 3.26, 74.39 5.19, 79.07 8.26 M79.07 8.26 C79.07 8.26, 79.07 8.26, 79.07 8.26 M79.07 8.26 C79.07 8.26, 79.07 8.26, 79.07 8.26" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(524.35546875 10) rotate(0 88.525390625 88.525390625)"><path d="M111.25 22.25 C126.22 37.21, 142.1 53.6, 154.8 66.75 M111.25 22.25 C127.23 39.56, 145.1 57.4, 154.8 66.75 M154.8 66.75 C178.41 90.87, 178.45 90.35, 154.8 111.25 M154.8 66.75 C175.35 87.63, 177.49 91.22, 154.8 111.25 M154.8 111.25 C136.46 129.2, 122.2 144.68, 111.25 154.8 M154.8 111.25 C144.39 122.6, 132.89 133.31, 111.25 154.8 M111.25 154.8 C89.68 177.35, 87.29 175.4, 66.75 154.8 M111.25 154.8 C88.65 178.19, 88.05 178.2, 66.75 154.8 M66.75 154.8 C59.34 145.29, 46.62 135.2, 22.25 111.25 M66.75 154.8 C54.32 141.85, 42.51 129.75, 22.25 111.25 M22.25 111.25 C-0.19 89.74, -0.61 90.03, 22.25 66.75 M22.25 111.25 C-0.27 86.85, 0.61 86.97, 22.25 66.75 M22.25 66.75 C30.98 55.54, 42.44 47.41, 66.75 22.25 M22.25 66.75 C31.04 56.89, 40.87 47.79, 66.75 22.25 M66.75 22.25 C89.6 -0.1, 90.56 -0.97, 111.25 22.25 M66.75 22.25 C86.91 -1.99, 89.04 -0.57, 111.25 22.25" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(566.828125 57.83984375) rotate(0 47.12995910644531 37.5)"><text x="47.12995910644531" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Certify</text><text x="47.12995910644531" y="42.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Safer</text><text x="47.12995910644531" y="67.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">validation</text></g><g stroke-linecap="round"><g transform="translate(444.27424460169277 102.24994218182837) rotate(0 42.13419270342183 -0.8515859533799812)"><path d="M0.96 1.14 C14.79 0.71, 69.37 -1.18, 83.09 -1.71 M0.01 0.7 C14.18 0.39, 70.91 0.09, 85.19 -0.18" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(444.27424460169277 102.24994218182837) rotate(0 42.13419270342183 -0.8515859533799812)"><path d="M84.58 0.85 L71.43 4.44 L72.05 -8.13 L83.7 -0.74" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M85.19 -0.18 C82.49 0.47, 76.86 2.73, 71.67 6.31 M85.19 -0.18 C82.02 2.28, 78.36 3.85, 71.67 6.31 M71.67 6.31 C72.93 4.56, 70.69 1.05, 71.52 -6.37 M71.67 6.31 C71.41 2.91, 72.06 -0.06, 71.52 -6.37 M71.52 -6.37 C76.18 -3.81, 80.69 -3.59, 85.19 -0.18 M71.52 -6.37 C74.18 -4.71, 76.78 -3.69, 85.19 -0.18 M85.19 -0.18 C85.19 -0.18, 85.19 -0.18, 85.19 -0.18 M85.19 -0.18 C85.19 -0.18, 85.19 -0.18, 85.19 -0.18" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(446.3822326660156 69.37109375) rotate(0 37.359954833984375 12.5)"><text x="37.359954833984375" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">triggers</text></g><g transform="translate(34.25067138671875 302.05078125) rotate(0 65.13995361328125 25)"><text x="65.13995361328125" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">requested by</text><text x="65.13995361328125" y="42.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">a maintainer?</text></g><g stroke-linecap="round" transform="translate(16.921875 265.640625) rotate(0 83.70703125 60.78125)"><path d="M112.27 2.73 C123.28 4.57, 133.9 11.62, 142.48 18.12 C151.06 24.63, 159.83 33.43, 163.77 41.76 C167.7 50.1, 167.72 59.48, 166.08 68.14 C164.43 76.8, 160.11 86.4, 153.89 93.72 C147.68 101.05, 139.05 107.37, 128.79 112.08 C118.54 116.8, 104.56 120.97, 92.36 122.01 C80.15 123.06, 66.82 121.45, 55.56 118.35 C44.29 115.25, 33.24 109.64, 24.77 103.42 C16.3 97.2, 8.74 89.44, 4.73 81.02 C0.72 72.61, -0.53 61.75, 0.71 52.94 C1.94 44.12, 5.61 35.49, 12.14 28.13 C18.67 20.78, 29.39 13.58, 39.89 8.8 C50.38 4.02, 62.07 0.07, 75.09 -0.55 C88.11 -1.16, 109.82 3.6, 118.01 5.1 C126.19 6.6, 124.92 7.59, 124.21 8.44 M72.49 -0.54 C83.7 -2.6, 98.61 -1.35, 110.12 1.66 C121.63 4.67, 132.95 11.06, 141.55 17.5 C150.14 23.94, 157.46 32.41, 161.68 40.32 C165.91 48.23, 167.85 56.56, 166.88 64.96 C165.91 73.36, 162.25 83.05, 155.87 90.75 C149.48 98.45, 138.74 106.29, 128.55 111.16 C118.37 116.03, 106.71 118.73, 94.75 119.95 C82.79 121.18, 68.2 121.29, 56.79 118.53 C45.38 115.77, 34.7 109.54, 26.28 103.41 C17.87 97.28, 10.81 89.84, 6.33 81.76 C1.84 73.68, -1.42 63.52, -0.63 54.94 C0.16 46.35, 4.59 37.73, 11.06 30.23 C17.53 22.72, 27.74 14.97, 38.2 9.9 C48.66 4.83, 68.27 1.38, 73.83 -0.19 C79.38 -1.77, 71.52 -0.63, 71.51 0.44" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(216.125 267.1796875) rotate(0 83.70703125 60.78125)"><path d="M111.72 3.85 C123.01 6.12, 136.16 12.89, 144.58 19.21 C153.01 25.53, 158.66 33.52, 162.27 41.78 C165.87 50.04, 167.46 60.15, 166.21 68.77 C164.97 77.39, 161.35 86.04, 154.8 93.49 C148.25 100.93, 137.4 108.78, 126.9 113.45 C116.4 118.12, 103.69 120.81, 91.8 121.52 C79.9 122.23, 66.84 120.69, 55.53 117.69 C44.21 114.7, 32.41 109.97, 23.91 103.57 C15.41 97.17, 8.53 87.71, 4.52 79.3 C0.5 70.88, -1.74 61.73, -0.18 53.08 C1.38 44.43, 7.09 34.91, 13.88 27.4 C20.66 19.89, 30.29 12.57, 40.55 8.02 C50.8 3.46, 60.83 -0.02, 75.42 0.09 C90.02 0.2, 117.61 5.98, 128.12 8.68 C138.62 11.37, 139.36 15.31, 138.43 16.26 M54.33 2.61 C64.64 -0.94, 78.79 -0.33, 90.71 0.78 C102.64 1.89, 115.46 5.09, 125.87 9.24 C136.29 13.39, 146.34 18.71, 153.19 25.68 C160.05 32.64, 165.48 42.17, 167 51.04 C168.52 59.91, 166.07 70.48, 162.31 78.89 C158.55 87.31, 152.74 95.07, 144.45 101.52 C136.16 107.97, 123.8 114.48, 112.58 117.58 C101.36 120.68, 88.86 120.92, 77.12 120.13 C65.38 119.34, 52.81 117.16, 42.14 112.84 C31.46 108.52, 20.09 101.37, 13.06 94.22 C6.02 87.07, 1.36 78.61, -0.08 69.93 C-1.52 61.26, 0.4 50.78, 4.44 42.17 C8.47 33.55, 16.1 24.82, 24.13 18.24 C32.16 11.66, 47.52 4.92, 52.6 2.67 C57.67 0.42, 54.11 3.38, 54.58 4.73" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(221.85367584228516 291.66015625) rotate(0 74.51741790771484 34.25356684840506)"><text x="74.51741790771484" y="16.09460927650392" font-family="Virgil, Segoe UI Emoji" font-size="18.268568985816028px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">PR has not</text><text x="74.51741790771484" y="38.93032050877396" font-family="Virgil, Segoe UI Emoji" font-size="18.268568985816028px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">changed since</text><text x="74.51741790771484" y="61.76603174104399" font-family="Virgil, Segoe UI Emoji" font-size="18.268568985816028px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">'request-ci' label</text></g><g stroke-linecap="round" transform="translate(10 239.33984375) rotate(0 195.326171875 87.681640625)"><path d="M32 0 C151.96 1.93, 274.9 2.88, 358.65 0 M358.65 0 C378.42 0.74, 389.55 11.56, 390.65 32 M390.65 32 C391.99 73.43, 390.88 116.77, 390.65 143.36 M390.65 143.36 C390.24 164.93, 380.67 175.67, 358.65 175.36 M358.65 175.36 C289.29 174.44, 219.25 173.77, 32 175.36 M32 175.36 C10.8 174.93, 1.93 164.4, 0 143.36 M0 143.36 C1.4 116.73, 0.5 91.56, 0 32 M0 32 C0.5 8.86, 10.48 0.74, 32 0" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g stroke-linecap="round"><g transform="translate(571.5795189919318 154.87916425458434) rotate(0 -232.13427841922748 41.22004118870507)"><path d="M0.23 1.16 C-76.83 14.86, -385.87 68.07, -463.21 81.5 M-1.11 0.72 C-78.15 14.61, -386.4 68.88, -463.61 82.55" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(571.5795189919318 154.87916425458434) rotate(0 -232.13427841922748 41.22004118870507)"><path d="M-462.2 82.21 L-452.64 73.59 L-450.3 87.41 L-463.01 82.44" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M-463.61 82.55 C-459.33 81.9, -459.18 79.19, -451.32 73.94 M-463.61 82.55 C-460.83 80, -457.02 78.04, -451.32 73.94 M-451.32 73.94 C-450.4 78.45, -449.64 81, -449.12 86.43 M-451.32 73.94 C-451.12 76.96, -450.96 79.41, -449.12 86.43 M-449.12 86.43 C-454.29 84.36, -457.62 84.76, -463.61 82.55 M-449.12 86.43 C-452.22 84.76, -455.77 84.84, -463.61 82.55 M-463.61 82.55 C-463.61 82.55, -463.61 82.55, -463.61 82.55 M-463.61 82.55 C-463.61 82.55, -463.61 82.55, -463.61 82.55" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(35.68206787109375 425.1796875) rotate(0 33.14996337890625 12.5)"><text x="33.14996337890625" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">if true</text></g><g transform="translate(339.12511444091797 507.73828125) rotate(354.30815405668926 82.66394805908203 10)"><text x="82.66394805908203" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Fetch /PR_ID/HEAD</text></g><g stroke-linecap="round" transform="translate(514.1796875 442.15234375) rotate(0 84.8671875 95.875)"><path d="M32 0 C67.5 1.9, 104.36 0.8, 137.73 0 M137.73 0 C159.93 -0.41, 169.96 11.35, 169.73 32 M169.73 32 C168.33 73.26, 167.81 113.53, 169.73 159.75 M169.73 159.75 C167.92 181.22, 158.63 193.68, 137.73 191.75 M137.73 191.75 C107.07 191.76, 76.01 190.86, 32 191.75 M32 191.75 C9.23 192.25, -1.81 180.89, 0 159.75 M0 159.75 C0.16 114.8, 0.92 71.83, 0 32 M0 32 C-1.49 10.1, 10.65 -1.43, 32 0" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="1.5 8"></path></g><g stroke-linecap="round" transform="translate(523.3125 460.60546875) rotate(0 72.8984375 15)"><path d="M7.5 0 C42.82 -0.54, 80.04 -1.48, 138.3 0 M7.5 0 C47.38 -1.02, 88.82 0.3, 138.3 0 M138.3 0 C142.47 1, 143.98 2.63, 145.8 7.5 M138.3 0 C142.8 2.22, 145.45 0.8, 145.8 7.5 M145.8 7.5 C144.67 10.88, 144.68 14.95, 145.8 22.5 M145.8 7.5 C145.55 11.03, 145.69 13.08, 145.8 22.5 M145.8 22.5 C146.33 25.73, 141.81 29.44, 138.3 30 M145.8 22.5 C145.78 25.85, 141.96 29.98, 138.3 30 M138.3 30 C93.84 29.61, 49.72 29.74, 7.5 30 M138.3 30 C93.41 29.45, 46.05 29.07, 7.5 30 M7.5 30 C2.54 29.5, -1.97 28.99, 0 22.5 M7.5 30 C0.84 30.76, -0.38 29.69, 0 22.5 M0 22.5 C-0.39 15.85, 0.92 10.66, 0 7.5 M0 22.5 C0.73 18.11, 0.69 13.66, 0 7.5 M0 7.5 C1.93 4.2, 2.37 -1.72, 7.5 0 M0 7.5 C0.96 3.32, 2.26 0.86, 7.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(552.610969543457 465.60546875) rotate(0 43.59996795654297 10)"><text x="43.59996795654297" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">node-test-1</text></g><g stroke-linecap="round" transform="translate(525.09765625 500.59375) rotate(0 72.8984375 15)"><path d="M7.5 0 C50.37 0.95, 93.09 -1.44, 138.3 0 M7.5 0 C35.55 -0.15, 63.53 -0.58, 138.3 0 M138.3 0 C142.86 1.93, 145.5 1.02, 145.8 7.5 M138.3 0 C141.82 -0.61, 146.59 0.83, 145.8 7.5 M145.8 7.5 C144.33 11.69, 146.25 15.72, 145.8 22.5 M145.8 7.5 C145.98 12.11, 145.22 17.83, 145.8 22.5 M145.8 22.5 C145.78 26.07, 142.13 29.98, 138.3 30 M145.8 22.5 C146.65 25.65, 144.91 29.61, 138.3 30 M138.3 30 C108.64 29.82, 76.91 30.79, 7.5 30 M138.3 30 C105.4 28.62, 71.47 29.61, 7.5 30 M7.5 30 C1.05 30.66, -0.33 29.41, 0 22.5 M7.5 30 C4.02 29.31, 1.73 26.83, 0 22.5 M0 22.5 C-0.42 19.15, -1.56 17.28, 0 7.5 M0 22.5 C0.59 19.08, -0.19 13.73, 0 7.5 M0 7.5 C0.84 3.22, 2.29 0.75, 7.5 0 M0 7.5 C1.85 2.89, 1.67 0.57, 7.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(550.8681259155273 505.59375) rotate(0 47.127967834472656 10)"><text x="47.127967834472656" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">node-test-2</text></g><g stroke-linecap="round" transform="translate(526.1875 540.67578125) rotate(0 72.8984375 15)"><path d="M7.5 0 C49.55 0.81, 95.89 0.29, 138.3 0 M7.5 0 C53.08 0.88, 98.95 -0.83, 138.3 0 M138.3 0 C142.02 -0.53, 146.48 1.05, 145.8 7.5 M138.3 0 C143.05 -1.65, 146.37 0.42, 145.8 7.5 M145.8 7.5 C146.62 11.68, 144.45 16.61, 145.8 22.5 M145.8 7.5 C145.68 10.14, 145.25 13.84, 145.8 22.5 M145.8 22.5 C146.54 25.89, 144.7 29.66, 138.3 30 M145.8 22.5 C144.29 27.1, 141.94 31.13, 138.3 30 M138.3 30 C94.18 29.2, 50.27 31.06, 7.5 30 M138.3 30 C101.6 31.31, 66.18 31.93, 7.5 30 M7.5 30 C3.82 29.4, 1.5 26.92, 0 22.5 M7.5 30 C0.73 31.34, -1.32 26.99, 0 22.5 M0 22.5 C-0.29 19.39, -0.86 14.97, 0 7.5 M0 22.5 C0.32 16.99, -0.07 11.22, 0 7.5 M0 7.5 C1.61 2.84, 1.78 0.49, 7.5 0 M0 7.5 C-2.18 2.57, 4.66 0.63, 7.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(551.0779876708984 545.67578125) rotate(0 48.00794982910156 10)"><text x="48.00794982910156" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">node-test-...</text></g><g stroke-linecap="round" transform="translate(527.5859375 585.40625) rotate(0 72.8984375 15)"><path d="M7.5 0 C45.73 -1.27, 82.08 0.11, 138.3 0 M7.5 0 C58.71 0.7, 111.54 0.24, 138.3 0 M138.3 0 C143.08 -1.43, 146.29 0.69, 145.8 7.5 M138.3 0 C143.08 0.86, 145.09 3.68, 145.8 7.5 M145.8 7.5 C144.33 10.71, 145.23 16.14, 145.8 22.5 M145.8 7.5 C145.99 10.32, 146.24 14.22, 145.8 22.5 M145.8 22.5 C144.48 27.15, 142.11 30.98, 138.3 30 M145.8 22.5 C146.48 27.38, 145.09 28.89, 138.3 30 M138.3 30 C110.46 28.06, 85.12 28.58, 7.5 30 M138.3 30 C95.37 30.95, 51.87 30.96, 7.5 30 M7.5 30 C0.96 31.17, -1.14 27.06, 0 22.5 M7.5 30 C2.49 27.74, 2.25 26.83, 0 22.5 M0 22.5 C1.38 16.52, -1.19 11.36, 0 7.5 M0 22.5 C0.62 17.59, -0.26 12.61, 0 7.5 M0 7.5 C-1.9 2.56, 4.37 0.55, 7.5 0 M0 7.5 C1.24 3.59, 1.4 -1.68, 7.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(553.9004135131836 590.40625) rotate(0 46.583961486816406 10)"><text x="46.583961486816406" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">node-test-N</text></g><g transform="translate(536.1188812255859 400.6640625) rotate(0 64.09596252441406 20)"><text x="64.09596252441406" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Jenkins Test CI</text><text x="64.09596252441406" y="34.096000000000004" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Cluster</text></g><g stroke-linecap="round" transform="translate(17.54296875 504.697265625) rotate(0 156.90625 45.962890625)"><path d="M22.98 0 C109.96 0.15, 197.4 0.06, 290.83 0 M290.83 0 C306.11 -0.55, 312.22 9.17, 313.81 22.98 M313.81 22.98 C315.17 34.78, 313.19 45.57, 313.81 68.94 M313.81 68.94 C313.47 85.46, 304.65 92.13, 290.83 91.93 M290.83 91.93 C226.37 89.26, 160.92 91.32, 22.98 91.93 M22.98 91.93 C9.4 93.79, -1.46 86.11, 0 68.94 M0 68.94 C0.23 57.24, 0.29 49.28, 0 22.98 M0 22.98 C-1.79 7.47, 8.49 0.9, 22.98 0" stroke="#e03131" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(28.714691162109375 530.61328125) rotate(0 142.75991821289062 20)"><text x="142.75991821289062" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Attacker send a commit changing</text><text x="142.75991821289062" y="34.096000000000004" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">the HEAD of the PR just validated</text></g><g stroke-linecap="round"><g transform="translate(334.623046875 546.109375) rotate(0 90.22265625 -8.216796875)"><path d="M-0.76 0.55 C28.94 -2.47, 149.21 -14.69, 179.39 -17.5 M1.04 -0.2 C31 -3.17, 151.81 -14.06, 181.55 -16.52" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(334.623046875 546.109375) rotate(0 90.22265625 -8.216796875)"><path d="M181.34 -17.45 L169.23 -9.82 L165.61 -21.85 L180.52 -17.5" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M181.55 -16.52 C177.11 -14.94, 169.91 -10.83, 168.55 -9.03 M181.55 -16.52 C177.82 -13.42, 174.25 -11.94, 168.55 -9.03 M168.55 -9.03 C169.01 -13.1, 167.41 -15.84, 167.45 -21.66 M168.55 -9.03 C168.57 -13.75, 168.13 -18.99, 167.45 -21.66 M167.45 -21.66 C173.3 -19.23, 177.13 -18.74, 181.55 -16.52 M167.45 -21.66 C172.5 -20.33, 176.8 -18.67, 181.55 -16.52 M181.55 -16.52 C181.55 -16.52, 181.55 -16.52, 181.55 -16.52 M181.55 -16.52 C181.55 -16.52, 181.55 -16.52, 181.55 -16.52" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(178.978515625 422.36328125) rotate(0 -5.060546875 37.341796875)"><path d="M0.11 -0.5 C-1.58 11.79, -7.39 61.3, -9.07 73.97 M-1.29 -1.81 C-3.15 10.61, -7.9 62.57, -9.46 75.13" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(178.978515625 422.36328125) rotate(0 -5.060546875 37.341796875)"><path d="M-8.95 74.54 L-13.86 59.34 L-3.5 60.73 L-8.27 73.43" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M-9.46 75.13 C-12.03 70.88, -14.2 64.2, -14.33 60.94 M-9.46 75.13 C-10.62 70.56, -12.77 64.88, -14.33 60.94 M-14.33 60.94 C-10.38 61.06, -7.46 62.26, -1.72 62.28 M-14.33 60.94 C-10.81 61.93, -7.31 61.51, -1.72 62.28 M-1.72 62.28 C-4.79 65.01, -6.5 70.01, -9.46 75.13 M-1.72 62.28 C-4.44 65.78, -6.34 70.88, -9.46 75.13 M-9.46 75.13 C-9.46 75.13, -9.46 75.13, -9.46 75.13 M-9.46 75.13 C-9.46 75.13, -9.46 75.13, -9.46 75.13" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(179.65406036376953 445.1484375) rotate(0 35.34398651123047 10)"><text x="35.34398651123047" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">TOCTOU</text></g></svg> \ No newline at end of file diff --git a/apps/site/public/static/images/blog/vulnerability/example_test_infra.svg b/apps/site/public/static/images/blog/vulnerability/example_test_infra.svg new file mode 100644 index 0000000000000..3d2135477ef60 --- /dev/null +++ b/apps/site/public/static/images/blog/vulnerability/example_test_infra.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 758.03515625 439.6640625" width="1516.0703125" height="879.328125"><!-- svg-source:excalidraw --><metadata></metadata><defs><style class="style-fonts"> + @font-face { font-family: Virgil; src: url(data:font/woff2;base64,d09GMgABAAAAAB3IAAsAAAAAL3AAAB17AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgTwRCArUML44C2QAATYCJAOBRAQgBYMcByAbVSMjAzVy0dKR/eUBN2SKH1CaQdmRiEwtIPHq6nS6uuzU08/XcDb3n7NP4ViUdTc8GSHJ7PD83Hrv//2/THrFiBzRwqKpESMqBQQLUbQ5wqggLS4w8krM4iow+oIn8J69u+1/CDzhAppGqcQaBBx43P7Kab107b6+7pYlTzIg4wB6gTCJa8u7n5aO/3CNr8m1W5bMGYtsBwacOOHhZIFb6g8F8I+oXDYQnAgc7On/6bSk205qZS1yecyvT7I+6JqZdn5LAscOjCTTsu3wYuAIpJH9/+W7/J/+1tvxmbkYAAuGaJvG/1pTC8w+xlcawFdg/lfau7K8iTMVhnGvuFVAm7hE+gqnWKnaJiOm44RFpf0/8VSAyLVF3cDfMHFPOwcuBAg1pRcGIK9mACBWCSgAKwX4mHTATkRYFgUABPtmPtaiItY+Wv/LYcMkrQBgPlcE/PSfFiCGKUABXiuE70CC/fUKYgMuLyPjxk+AGGoGFgmsUmXJV6leq/YNP8E+lIlaJvGByTKSClVr/CjZX088dMdtV11x2SUXnHfOhM/v3b1zCoJBuOvVWelY5BDpwbj5su6lJJ+tCPhxRvTQbB7q9YidDnkv8fXu0N1ckQvHzT2POYOZwU/QOvfE5xUXlBaES2qSEnM15cpInpcwIF0pzMrQiRwTZFaDg9ib6WMotkbEOWpd3qLs0XXdl/0iBr2BrikjK1Ew/jM9FlYqJy3U52pAOLTkspAC0kDxRSEEFlYdF3LVUzN6jEPwNJQyBQkhITwt2UfG0XVLd8tEAmGYzv0xCKJcQH+C0OccmukdDM1M6bzk+z6HyFOkQ1rdTWwOm9TnQdVTApMqiNLr5UxTfQ1rMuj1mL6LQxKuVnvYdl2OzKiWvy8Y3gzFlNBmQEZG8gyGWzTAyYTO8uPqgE2eP8mRJ0j6zBDZfGk8VK8/VdWn7HzOJoWti6m0eVUWax8Yx4CAjuM4lKv6/7Oa4gSZEWsvzzEQ0t5QsIyamkuLFhlqHD3TdfXh3tOgCOgTVc27u2He+BM/NhJAzvkSd7gDdtd88PLzvfdPHJR+7f2LNTlHQSCGYkgoEIEQwoO0iPnxcw7oxoDbeYvMc6VDH8zf3LKkIYh/m5E5MX4ePHxe2GEqf7G8vEBBPYOdpu5zvd6OLG4dzB9cUbE/HkR1UXkaxWDzMYdhcz4M1ozkXt6MHNPPNr7WJqPYSrscjxzg/j7gz2D0/uXu62giauPuXUv36KQgGIaGkgb2XVjvS40wZJcQ4oDPfJhEo47nAg4V5UsxDxawLJtGsX/ETl/374VLmMpaa3uVGeA5hoXSYlWG5C+CvPSUqyVoQWOmcf9sRnkUgpn4MV+Fmg2JgCpUGB4TWoQh1E+TvrSbzriHRFN8uyC3b1c4NpTXm6nu99UMj1kcu/DXzDGQTkGafzajpopu7MZ8m2/Doe8vv/km8C9lX0fvtyZHTPRz/fTwJadAkDQxGjap1FDX9UA/39WNhu7rnp7rPnf1/qxEEZszmEY/MTmeYqm82yEhiIc+5UNwQLkNkZKah55W4bBSqgPTaJPsGKmNW+jYB064D1EU4RZC7gJqIbCuYGCVwi3JA4SZtPHRoyRO6DclRbBlNpdOXeq/v6We/t0ommIgcGCQC0hjpg44QQiRp04B+ZYwwbYOckUHUMpnT9pmG4JbUV3y1m20x5R1/tohQu7B+gs2P7Y2Zv0HjFuNMTstA6YHuq+7ut4oVKV0EVC2M0pgOM6drComrJWubxTmF5WBMqu4lvTbEmjFawNyDsErZen1bsVyZbV1RmaCEBlazvBRocqFFZMxq0goUaMhSFisGej7nC8tIWMbuIHIcK0ns9h3M0qQdgWBCAQhF+ycgXcQzYrBLfsIZpe6usF82cuRECIgnSLJQdBosFw/3U+tDYsRO8hIZOnu5AamcnFYzN8ssOSa1gqsGRj7tksjRGtJ4qVJJolP4FC7C+w7dPzvLDU5NTVlwNVbMLyRzV2/Q+NEQo0BvTGU1zJr8rqoDWXlhzQMpBhmSJDOiiKi2NMqt8YMAtKhIaGEpIuZhnSfUKxhSMv1m1WpM+npb8tkMGyKDp4WMcQkPLKanKIVQp4Qgpzu5ndVTzE9sDYL1X1DSVAc0HW1utiT8Kho8zxqrtMsNXHV7UPidoy6wvvMfnWg+HELJR1b2bSlyBEucDOcNveEC9NntqU9e+qwGdOAZ6xdpJ44Zj+/q7fWHeYbChJ19Aqpj0Ya0kWaNyEn3gaUNe5a8vzpJ1b+U25EjlpA3iXckJI1jdwhpgQ7keCNGgUdt3XQ7o4yquMCLtHd18Zp+S9lVtZiUjmowPF0Wpjcyf+mBTJzao3UpISsZpP9/Mx0ai0bs60SlXbehER1nptZSp0Wo3J2Ln8epljG0d44zP9pt+PvPyTP1aZ5EyL2fbAS6qaX7iSk4eNsT974RbVKuvu9HtRNpm65jLB947cCW+2nNZlGDIKgAKpK6nGPPE6QQ7lkmwkK+mVFQqY4kpzysIh+C2ovsaI6rTDlptNs6A9fbg9CeTRSj8PDdBy0wQRDaXRwnxSsGo/v2qPGXsROUh52oQt6yiOj5CIdDAkBxjCjHI4cGaDjBTtXx1tcsFWtzEF3JqZE+4VO0+lSV9Yp1WO89fK420kmLRVRQRRrTdhAsVx2+Y/jqsyiNBJk6HhBCvJb9NNeobW9z+MSlelbQZln84LsYDjezDUfiJYFoWXW0yqUR583dXkM27JYIyE3kYRUSrXmr+ZaDpaaMEQGnQbqp9l6kqv9R5Rvzmn2eXgaciEEeE5ztQZTFhL5lIiXXJgic4iCSiyz0g9dGh+Z0ddo/OO/bVrmmkuos4E60rLnGOYpEIDZqhsdEBoKEsY5B7xheOiENB6n/xhhKPx+eV3RPbK1xc+rF4a1TZarc6N8IwynetKoeRrwtm/r4N15kk1vxcVah3KaQOKesFZA5m+3jfxBvkTmA+S8Onj48nNVqXaGpdHpBIzv0CeUt8Dux0XV9sj9ys78CnmtZBPvubW7P6j6KuL8j6ziIfy2rNk7wMBa01Y319uC9AYsL9AOIc8luKKpuUQaHmmdzpvpWkJSQllQHrYNzS7tCxXfQ73laZbWWjtxR0FtXb5hkflojBhe5JrA6Dg6Zltvhw1BvP038JE/yddy2lBVIBQEy8v4ZCDN+nkUcxIXFa8xdZVsnJNNplM9UyzrbbAJhtw8SXr3sySkocupNTOdU8ppvtzP1uzMk8qvPYon4qNTukDG9s54vSSjuA/cTh3UcTKVaO4Pc8Cquwrny4LDzvvWbjozUM/vYXhVeZwDv3UM5AJ2IgUG9Vth8HRIILa4CKk0atTDqY32byrDkdn/2v4cS5g+g1yG2KGxbtYbbKBupmaeWj5HVJavKapE80JRz1cYSgfJmaYYYUVul39wzaXdj4xzkuCjdOhF8iCwWz/SsvsFp2k6s/IKZVTHWyGq7WrIOWF98HG1TzUKlDSm9sx8cL1qWTJzKuv2TMlVV1WnQ1LNI7b3UxQVZK8RdQ9aswLnPsyAuO+fPOM1pEJFRnPDp5xtqtmN/5/NMZQUWSGtjkErXqdDaGkkNL7TrNfO4pnnsxNzL1dc9DoTxR4W5qXH80kyRxno09LkZte5qWcIZ3D4RNs0jPniEHbofsAUqBzNCKr7OYbh9/c+aST5z3q/YpqeqxV6TCCTLqsY+YvJeMzEOZaxBGsi03grqqOlgD5aMvFTV+cuHVNT9Z06k709tochebWZzlO28J+g47/d9SqttZ8RVZF60wmpSxgbYQjoc9Kh+DrgP2/bvZcs0hln7SqzWDPS4gvWJMEJ8iU0KztpeokX0p3CSfQwDmJ0iO3a4OHLexiebU7K42Cf4t2wHbvl+xDtG2l7JUOey40FBI+uSosdnWhzMzjG8LS0aEkJxvGoSfvPI2AnBMsC7IOsFs0jPvF9QJfsJM/u/JFsh3Jy4zDcL6pdfTaj9dZMKDtNyj328Ymd7k4qowwlBASujqPKu/PskISlf9kbkep3MuriaK1lcgebEcpzIjJn12Aa//wOTtCizHe6VpZS/r4zQKHNsYiApFl1oZeU7hdALAzp7tl9+cbsx9Fz2Xq3OdBF9/mcjJls4jFR5mrGFU215HZpjqEg4/FGa4PpVm3z1YBlOH/gWPOGpGDtIlfnpUJDTV1Ys4BHEWw0DqPGoePD9RlXzxb6X/jLsL5KzGBx3/JvyuoDZQ0wkJGBxbX59JecROPGmE3u9mbXeAUVwRp4ZTqHLo36H8CevJK0+0Zi4xJ90FG/Uh4o+kZr8sOpVHuvjqB3/XcH0N/u0MkDLChuFTp4P3MjXevP7C1gFDW1pri5MsylDrh7ADFNbQ8cbIQ2dgZKx921O0nPGgOTjEp+2jGyBWAWQjh+jyRyns1JIUlzSTvZFxe3cpx8Hcl/0dEQRE/YtoNjm7+WTWnFm7af8MYmUsBWZ9LtKwt7fEFXRM/z2Ke+5FZeACfQlv4mOQlHYAREHGsMZzrPMkelHPu9dWNU4mHytQRJRL8wR6yFnzI9kBEUgqLNFMhqrRGUkgO0Xghql+PrUx24+A6FVg94uND0Ssh7h/X+fL1g+86ic5nPyjr7BQVuvZd1T9kbDwKdSBAL24t/UgwkUvPzz/E7t9aC4wvX/353bPV/zupZW+Jt7IwuJGUVJ5l0e8zHasrav/ZVaeeyRMJYYKN/Y5t2M6CAsngFledmJ0r7m8Z7JUhpD4b2lOFCCkJjEmoY9Dy03NxOoHF/hzo44YyA7L5bj9qIlfioM9oRNZuicR0ibp4lakyr3dBVw4UC6AoDxclqVdC4q1+h9PfkNHH4UzJopVfNlaV4aK6XddzqXHNBw4pJda44GiUmFq+eZM+pt0al4PnXr248Ogqv8912Rf39SbeC8Cz9OFfCgijtosBOdg002lGuHJN2X+mWtrDTzW2H+ck6Gt17x9gAC4E4SWhaPCalzaS7zzMY3ldjYd+cPn06XzeOl2BS58B72uZmqstoXiP35/G5EakVzNb69TTeI/BrBmWtDa7WLRVs4FFpU3jA6ZKSfaz9Mq71Rl7625Ydr7f66LUfeDmwC9Y3dKK8cYBjFhFT5oxDiBTZb2AgnL5zS1whFR74yT8wnm3GSKncjVf2MOhjv8800yYvdgAtgjeINc13Rkv8fUG67weJ9qF/ZgPIm9JkqR3Lm/EGDEdaWQRkSqJ/Xzffbe7lRAIN+cq+QstmAXhjVF+RuiJ3kk3J+ePvt/qs9QnWIHWd4wBAk/HVKJdhsLXbzUrqjBWhUd3ukyc1tq38SmAruTmMDFobk0dGcIzd8jGrnGJAKELSWSP5PASyOKHVbTj8kQN113uteKmCsTTJZkg2yFSn8u8Zn16/V3DhudqlhL2SKW8z0F+QTjkZPrduo5RFB3AMNiKWpLSkFy/OrnMk6kI+h+pomEXQcM11FgUZVOBZGJekJZAwyMXzkRIsP/A5ptIpyMdZxkn+r/tHB84eXWy/PVixdt3677CY0Es7la5D9QSDcLdWMPpvKRGLxYlIMVLm4Y3mOeqYg5TBCe25b8tD7ifPI9xpESY67KK8ad+r3K9cYCKo4zkIOYTKHoxHB9kcUNKCYwloKvPmL9Ed+3p7mJMFVzJ3ddYm/cH73+Z24ysDgPbMJwv+1R6JpTWZKL4+wrRbI5ydHnn7/PDJfanWxfTvDMU9SNeGb2LiS8gF3AIyUusk0xGpdiF2yj9+LmA03l8scUUL2MQfbXje10SHI/sX7ozj4bmg5AsN1iH/xkDhkfInmmMqZPwurMJLZJ3FkuZEZ/hRM2EyMoFyd7Pe2tU0kRhko8QZ6iD9JIek4YMPY8e5qEnol11plYeW2AkOXYIokl7vABMZZL2DRyJ35rAY7yJbXdEC8Ee5XarPfvYpPbPR9CODpKOUMNmj8UGkIK/C+XF8wEprGNrqvSNVea33qcj8OPlWuevwNM5F7QNQlpaFQh3sEv/eQFLhBOSytYbOhv1ngw8S3ZcX3m/iYf6oP8YvclkLPLeHzgF2ywgMDPfVsRrO/lISHVAsSvHMRPsG74lcpZgIecRPZeuhuBDKDiAE5c6tDkRPk2xTEJvNgSxxKn9aZd/Z24MMNaKCH4J8CsukLaypBdJSL6AhLLSXUVaYJDah8kKy7EESQ6V+aSsFScqD3MINPsS0mYClBJtMlTl1zRlSdYhfBFzX6ZzH954VWQ9OS66gtwMK+AvWtu9IiJWlkPi6HC134MspKvGWcelFZI7cNfoS2rTPRZWxDs8QNAgAoalvB2u3/gRZBcFQF7E6dJuAgBkj4eTU1xbrO2A2x4iykFkIyW9gidd5F62l2mx9txAaLUH8mbTPCvnP4/itirnrZxYoNJezuOavOBnR/B7Sit+fzehB+EYUiycRw2VQNnflqRmb8vufK/STp3/ukX8nbU5ajCy/IRjPIiswi2wEc5j3J3C/aXHoifsJSXE/1R4WFmxPH7NttuGb8VpukfwzL0MefyQWpBveT10RldRr5KsCRXGRQiCm4zGxfQhoy/WBms6PFAcjkdPMnlK9Odcq7AZUYEiKOsaW9/vtIqifBcueApp9EVB8fSyKd7TVpv6b4FEYOFYWi1llVmyBLMvHZgy+58g8PPLht6UB1PsabAGesTjaapyhWwo4EIrLOjGWh76FdSv44U8VNmtznOEjV3Lhv3WS62F88bX/6DtcD/rN9XzoHajh0G/SKI2EQS6WECyR8ty4nHFKKjGbdB5QZrJ8nynWKeHB1woVtJB/612Xolfaat1mRzHvbBlstPrD2ejJpys6jaCp/6PmzJqixSoq1rsYyYFWboX/0TlBY/GOFPzMpliX5t7gmITuvDfqqNrSWtiMJEj3HcwGsXGMHH9rKkiE8xqd/++S8ZlRTh+LPNalCHOIKqy0G93ewMIaKCb4zELwwg0SFxLcwGrY0UDbQ+NiqikV9hsxHVwjUcgbd6Ki+dJx1gWNNrAUJmBcwhWwmi1hP5PtCKbQWrTJdCcHd3KcXNoGU+d55IW8WsQQJfnXbfxeetnuIzqaFlj9P33jnOS7sG1mnyMqeXETF/krSFC/ZCxQ7p7r4iLjqOG+bmfpeEbFKg6hfdM7pQ2Ouvk+3QpWO3D52QJQfo3NlmnBXucDFy3XQvmxrgK2nklFKYXr7Ohka6rHl40XGN26qACN2i3h/35lb/ChjiuXDhws4/miLeP53IrjN2jU2kpAjGN/k/y8h26h58xoyBj/wtYCzwyQbVulc+2LO1Yrce7EYPEAQ0xpoDxv6ozpTdr7LRvD6QWlVdPrGlKiussGtjTPS12gWNzdXif7qElla4nnCvUIRq0tHHqPvXxBd7n5a59H9xahGG13bOz/sJSlOyIFQo3dNzbojxmoeAP2cohpHWdu4+PZZeJdiE0cQS81sr1pZVgMiiE1nYdIVqyT9QkLIdGWg3Wftew0l+i2T6lFilVVdxNtfE/oqT/lXSLtMzETiezKjWHfPJytLM0N2hnUUvKhl3UQcY+EW0W0LkVRpEa5KK3Mk28vZ9+Bc0pN6CxikIUQOJAx0kAAwpBTFAf+X3R+1UP2OorjNMZc4shaTtKIUfSNipCEs00bXXyt0rCGZeviggpgidHD4kvOgaYaFTlsWDGtZ4CPz2T2SPvofh5XO7KuNB4wz9Z91iXId/tFdUlSVhdzaQId/jE8aM+vjS9abtbEoYVeu99Gba/lzLIrvYxF/fq6+FoN11Lo8u9HgB0kkhMXdiTQ1LsQymiyv2S0NBBYG8YkwndVofqtAoi2QwGpYAt9Xhcx6uR0skOsj5CJ1+GutGq5S7xcBZBYxC/d0UFlcf49mIgNbvAcw63/8C5FxAUazecu0ZVX7h/9gCeBMkdjts2hDJ3MNngT0tK1IcKgH6W4UgLJFFVLlhodEKC+/T4DxMJTZNcwzc7PLv4kTket/mZXt9zf3Oo7+PzniwhdJBmMoXmqHN7sTxLZ3yuDISCB3LEvkz9f5sLqjRjBYb4Qp2ZTucP/c7M8uO/q41QZecWjCqOEjMkOfrO79O9UkS5CZStJj5f/ctHK6GZUXryylpt+Y120F3iVcqjmb1cI7VpJGCnMcT6V+DBe0vd+SZdHB5+jBXEPC4WccV3/OykKzGw8Njqc0WKmRgb4xy6JMFEiU9LOJYQaAU6ijU8c10/NMOsiI80Hy06zH8jFGl6+y4rNKGvKf0S9SG4gUghOYRV6r1Wspbit7aH3LxyuITSrdpPKDkT8Oe5RHWSuoNNuUwX9nE1BcpRA9wv0R2I5aDZiR24UhVMXNoH/v8PsO8kUbBeZi7e2zCoTCCQmnkvGNscMT1ceO41KUtw0CQ0UphbQvfOeQ2vfnpQjARnp4exKSpsA8VjFIu82/epAtBIziPZOvyoufM+vrb/hQ5L6QcTPo0qzG9DB1p7BYoiQEHLRrsS5+ksHA31OUynlThpPLtbjf1yOqKuJ2bJ2U9P295XrMbX/T3tpbLwcxQ3vz8605hYCLeUrLxbu1ax36suYnKdnaO4jVb4gdpBKvUoEZKpPu8DRhU5BjRQ6zOVVQgs93LNiYhu94xJPeAnyZySBBnG+94v2FxkeJ9/wQvNLZVHx7XePrbZMkDJh+ldOmxS0trOp/9dNl/vMQYrJyhTdLPaWRI5eBgPj/hxAHsakU6sQJdAVuGpWEHYXyLciryIEtD7AZapDg5O5vgmNO3Sfu5ipa5wwNBzFCCzttPhclReZAltAekVCyH3D7QkWaVdVb/Wws9HGSULPQPvfxBU4xY5TVs5R5yiOmoyFJOC4qKbKs/K3tk9718dYlsZcCjQciamd6/imtMGf5Fn5pTnBq3Z6uNrLPU1gDjNQGWc3uASl+noLwro2XF0oZZ4+imU5KECRnvDTgnepY4h7k4tUT2TGVXgmhXU4L6SGdaVEdbTAelJaea7ez5nILaQiL76IC2d0E7FgbDosZGBmQH6cHHYjbylTbb6DQEatfrJGGW64lBoUiAr9rK8ZM4Ps7l0j+atuHbfFLHOK9kqrFnxh2bGCzvh93t2tQK3n3nINC/jdafeQiirwHghs9dkaryl1jg03FF13wGvVWu6HHHkKhkjQF8oRXauJn9yNJU2Ptny6c7P73ZORJIRAoZlzmuK4N6bZjZJ588C+cZjkFJumVRPEZKehogdPteHcDJp/Gaccbq4Q7PZ1hell8A2ivD+kntxzCCwofGdgDbF6qQaaQqA9Zq+cJl/3f2UdUS/St1XOMRJaeEcnJh8lqQpmh8ZbG8XzqJPZrtePu0KilgTAup0q7NsjRJRQsIsh+SBHvEvIcXVer8KpOJbpH7q2w6R4hP58J+Y6LOcIKDY67vuWK1UuuIM0LvOloQRE7hrh5/G26COVb3lzXrqwd0swhgLhEel08U+Um/+p0Vj7Kr7L1SMvZf/m1N0Zdi/Al0rPeDJxL3OXyqrP22z6U7OXfRKuYZ9VskdOaZxYL0SmrwvlKmfQVkRrslz4wk5tuHZNfJzlvKtUkl2jLqSYhJ3u7HedRtxrGi2gmX4aNFpPHw7ifTe8l6CLWpUyR+Qoje9w9YoN+guJcG0QDUYfCVhQlhNsT/lRvMYVQJH/1X/jR80Dy/KZUW9Ih1LRX3ji/eraty2f77yBr//j/G3O/YZegoTI/pug7JAXHuYBLgWqjB6APwbXU/YFFGcTbjg0ef3PMP/fE9pcR20vShdBBw3Qu5Ow0Vh141wJfjvw+h9e9QjKruHYvUQtQB7y3zQNXgJgDafTI+IvjbvvH4K8bRIaDqkMJz/t53mDkb/YeQCw/LxfhQji2s4rNwjrSVDpf3P0MuKC0eCTDeNWKmDlFk6JkpUeAxyIFUJzjQqoibKg4CRfoV0mUiGa0VQEw95UVBprKoFARCrGmSNwADD9lZqU/2gNH8lK1bEFhUl67ljq2Ezr1RHzjyYlX3FpqJUJlCmRgcF/aaQfc5Fhs+0QoAgwRD4a44S+luZpaSiqVa9B+xOVtnWFmcTcFfMgvkEZ6VJfpB3I5NCCdGlM1JazQkMOi2fKaDGUVOkcfK1erSbSZVGshc06lJ6OpWgFSqgaFKSFAQ==); }</style></defs><rect x="0" y="0" width="758.03515625" height="439.6640625" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(21.440201913150304 52.10168989925296) rotate(0 79.91932012384586 35.46484375)"><path d="M17.73 0 C58.9 -0.76, 102.58 2.11, 142.11 0 M17.73 0 C60.08 -0.19, 104.75 -0.91, 142.11 0 M142.11 0 C153.87 -0.14, 160.6 4.79, 159.84 17.73 M142.11 0 C153.27 1.96, 161.76 5.25, 159.84 17.73 M159.84 17.73 C161.45 31.08, 160.85 43.4, 159.84 53.2 M159.84 17.73 C159.1 29.57, 160.08 40.05, 159.84 53.2 M159.84 53.2 C160.36 66.94, 153.22 72.92, 142.11 70.93 M159.84 53.2 C160.57 63.81, 153.85 73.21, 142.11 70.93 M142.11 70.93 C99.97 72.6, 60.3 69.86, 17.73 70.93 M142.11 70.93 C100.19 72.48, 57.41 71.96, 17.73 70.93 M17.73 70.93 C5.65 69.03, 0.2 66.06, 0 53.2 M17.73 70.93 C5.07 69.29, 0.73 63.04, 0 53.2 M0 53.2 C0.21 45.81, 1.19 37.41, 0 17.73 M0 53.2 C1.09 39.86, -0.57 25.42, 0 17.73 M0 17.73 C-0.76 7.74, 5.06 -0.57, 17.73 0 M0 17.73 C0.63 5.17, 6.06 2.22, 17.73 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(53.52511041590333 74.41603417947044) rotate(0 47.83441162109375 13.150499469782744)"><text x="47.83441162109375" y="18.53694405260566" font-family="Virgil, Segoe UI Emoji" font-size="21.04079915165228px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">PR #XYZ</text></g><g stroke-linecap="round" transform="translate(273.30859375 11.94140625) rotate(0 82.9765625 82.9765625)"><path d="M84.5 0.17 C95.07 -0.57, 107.69 4.15, 117.84 8.89 C127.98 13.63, 137.83 20.13, 145.35 28.63 C152.87 37.14, 159.75 48.9, 162.96 59.92 C166.16 70.93, 166.23 83.8, 164.57 94.73 C162.91 105.66, 158.85 116.08, 152.99 125.48 C147.13 134.89, 138.66 144.68, 129.41 151.17 C120.16 157.66, 108.39 162.4, 97.48 164.43 C86.58 166.45, 74.85 166.08, 63.98 163.34 C53.12 160.6, 41.16 154.64, 32.29 148 C23.42 141.35, 16.12 133.22, 10.77 123.49 C5.42 113.76, 1.24 101.01, 0.22 89.62 C-0.81 78.23, 0.78 65.93, 4.62 55.17 C8.46 44.4, 15.65 33.17, 23.26 25.02 C30.87 16.86, 39.1 10.49, 50.26 6.23 C61.41 1.98, 82.82 0.08, 90.19 -0.49 C97.56 -1.07, 94.7 1.16, 94.5 2.8 M54.09 6.43 C63.6 1.29, 75.39 -1.76, 86.26 -1.21 C97.13 -0.66, 109.28 4.21, 119.31 9.72 C129.35 15.22, 139.38 23.12, 146.47 31.8 C153.55 40.48, 158.6 51.12, 161.82 61.79 C165.04 72.47, 167.13 85.05, 165.78 95.83 C164.43 106.61, 159.74 116.89, 153.71 126.48 C147.68 136.07, 139.07 146.91, 129.59 153.37 C120.11 159.84, 108.06 163.76, 96.82 165.27 C85.57 166.78, 72.97 165.46, 62.12 162.43 C51.27 159.39, 40.57 153.97, 31.7 147.05 C22.84 140.12, 14.29 130.91, 8.91 120.86 C3.52 110.81, -0.14 97.8, -0.6 86.76 C-1.07 75.72, 2.16 65.01, 6.14 54.61 C10.13 44.21, 15.5 32.36, 23.33 24.37 C31.16 16.38, 47.85 9.54, 53.11 6.66 C58.37 3.78, 54.29 5.96, 54.88 7.09" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(303.4619257359773 44.744678726700386) rotate(0 52.649940490722656 50)"><text x="52.649940490722656" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Maintainer</text><text x="52.649940490722656" y="42.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">add</text><text x="52.649940490722656" y="67.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">'request'ci'</text><text x="52.649940490722656" y="92.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">label</text></g><g stroke-linecap="round"><g transform="translate(185.65234375 91.484375) rotate(0 39.58984375 3.224609375)"><path d="M-1.18 0.42 C12.14 1.47, 65.74 6.01, 79.28 6.89 M0.39 -0.41 C13.62 0.22, 65.16 3.82, 78.38 5" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(185.65234375 91.484375) rotate(0 39.58984375 3.224609375)"><path d="M78.55 4.7 L65.4 10.42 L63.38 -3.7 L79.32 6.63" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M78.38 5 C75.47 6.28, 72.04 8.52, 64.33 10.26 M78.38 5 C75.02 5.57, 71.1 7.36, 64.33 10.26 M64.33 10.26 C65.83 5.85, 64.61 2.57, 65.32 -2.38 M64.33 10.26 C64.85 4.91, 65.22 0.03, 65.32 -2.38 M65.32 -2.38 C69.51 -0.87, 76.73 2.3, 78.38 5 M65.32 -2.38 C67.59 -0.17, 70.65 0.89, 78.38 5 M78.38 5 C78.38 5, 78.38 5, 78.38 5 M78.38 5 C78.38 5, 78.38 5, 78.38 5" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(524.11328125 10) rotate(0 88.525390625 88.525390625)"><path d="M111.25 22.25 C119.26 31.56, 131.38 40.7, 154.8 66.75 M111.25 22.25 C125.26 35.73, 137.49 49.38, 154.8 66.75 M154.8 66.75 C176.77 90.37, 175.55 88.77, 154.8 111.25 M154.8 66.75 C179.31 90.15, 177.2 86.81, 154.8 111.25 M154.8 111.25 C147.51 118.22, 136.97 129.16, 111.25 154.8 M154.8 111.25 C144.34 121.85, 134.24 132.95, 111.25 154.8 M111.25 154.8 C88.08 175.3, 88.8 178.35, 66.75 154.8 M111.25 154.8 C88.36 174.93, 90.56 176.2, 66.75 154.8 M66.75 154.8 C56.1 145.67, 50.55 136.77, 22.25 111.25 M66.75 154.8 C51.63 139.53, 36.15 125.66, 22.25 111.25 M22.25 111.25 C0.43 88.64, 0.24 87.21, 22.25 66.75 M22.25 111.25 C-1.05 89.71, -1.94 90.17, 22.25 66.75 M22.25 66.75 C38.66 50.51, 51.12 36.98, 66.75 22.25 M22.25 66.75 C32.4 56.2, 42.74 46.46, 66.75 22.25 M66.75 22.25 C88.94 -1.42, 89.22 -1.69, 111.25 22.25 M66.75 22.25 C87.91 -1.86, 87.23 1.16, 111.25 22.25" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(566.5859375 57.83984375) rotate(0 47.12995910644531 37.5)"><text x="47.12995910644531" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Certify</text><text x="47.12995910644531" y="42.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Safer</text><text x="47.12995910644531" y="67.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">validation</text></g><g stroke-linecap="round"><g transform="translate(444.03205710169095 102.24994218182792) rotate(0 42.13419270342183 -0.8515859533799812)"><path d="M-1 -0.83 C13.12 -1.22, 70.77 -2.02, 85.05 -2.34 M0.68 1.34 C14.67 1.1, 70.6 -0.58, 84.51 -1.14" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(444.03205710169095 102.24994218182792) rotate(0 42.13419270342183 -0.8515859533799812)"><path d="M85.5 -2.94 L69.8 4.56 L71.64 -8.8 L86.23 -0.14" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M84.51 -1.14 C79.07 1.95, 74.91 3.7, 71.14 5.66 M84.51 -1.14 C81.57 0.64, 78.24 1.66, 71.14 5.66 M71.14 5.66 C70.51 0.01, 70.41 -3.13, 70.7 -7.01 M71.14 5.66 C70.5 0.94, 71.09 -2.56, 70.7 -7.01 M70.7 -7.01 C76.81 -4.4, 81.45 -3.67, 84.51 -1.14 M70.7 -7.01 C75.99 -4.39, 79.68 -2.69, 84.51 -1.14 M84.51 -1.14 C84.51 -1.14, 84.51 -1.14, 84.51 -1.14 M84.51 -1.14 C84.51 -1.14, 84.51 -1.14, 84.51 -1.14" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(446.1400451660156 69.37109375) rotate(0 37.359954833984375 12.5)"><text x="37.359954833984375" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">triggers</text></g><g transform="translate(34.00848388671875 302.05078125) rotate(0 65.13995361328125 25)"><text x="65.13995361328125" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">requested by</text><text x="65.13995361328125" y="42.62" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">a maintainer?</text></g><g stroke-linecap="round" transform="translate(16.6796875 265.640625) rotate(0 83.70703125 60.78125)"><path d="M108.59 3 C119.96 4.56, 131.47 9.62, 140.39 15.58 C149.3 21.54, 157.55 30.39, 162.08 38.78 C166.61 47.17, 168.56 57.08, 167.57 65.92 C166.59 74.76, 162.4 84.32, 156.16 91.79 C149.92 99.27, 140.03 106.09, 130.14 110.79 C120.25 115.5, 108.69 118.63, 96.81 120.03 C84.93 121.42, 70.43 121.68, 58.87 119.18 C47.32 116.68, 36.26 111.15, 27.48 105.02 C18.71 98.9, 10.76 90.61, 6.21 82.41 C1.65 74.22, -0.57 64.64, 0.15 55.86 C0.87 47.09, 4.41 37.17, 10.54 29.76 C16.67 22.35, 26.85 16.18, 36.92 11.41 C46.98 6.63, 56.97 1.81, 70.94 1.12 C84.91 0.43, 110.46 5.31, 120.72 7.24 C130.99 9.17, 132.97 12, 132.54 12.71 M45.63 7.68 C55.57 3.01, 70.51 1.98, 82.24 1.37 C93.97 0.76, 105.14 0.85, 116.03 4.01 C126.92 7.18, 139.37 13.68, 147.6 20.35 C155.82 27.02, 162.23 35.12, 165.39 44.03 C168.55 52.94, 168.83 65.2, 166.55 73.81 C164.26 82.41, 158.85 88.89, 151.7 95.65 C144.55 102.41, 134.45 110.19, 123.67 114.37 C112.9 118.55, 99.54 120.33, 87.03 120.72 C74.52 121.1, 59.9 120.15, 48.59 116.67 C37.29 113.2, 26.98 106.65, 19.19 99.84 C11.4 93.04, 4.59 84.52, 1.85 75.84 C-0.89 67.17, 0.19 56.27, 2.76 47.79 C5.33 39.31, 10.24 31.95, 17.26 24.97 C24.28 17.98, 40.36 8.9, 44.88 5.88 C49.41 2.86, 43.79 5.7, 44.41 6.84" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(215.8828125 267.1796875) rotate(0 83.70703125 60.78125)"><path d="M119.09 5.02 C130.27 7.49, 140.93 14.32, 148.53 21.18 C156.12 28.03, 161.74 37.52, 164.68 46.15 C167.63 54.77, 168.59 64.43, 166.21 72.93 C163.83 81.43, 158 90.1, 150.4 97.15 C142.8 104.21, 131.34 111.2, 120.63 115.26 C109.91 119.32, 98.18 121.42, 86.13 121.52 C74.07 121.61, 59.38 119.41, 48.31 115.84 C37.25 112.27, 27.44 106.9, 19.73 100.1 C12.02 93.3, 5.12 83.78, 2.06 75.04 C-1.01 66.31, -1.11 56.28, 1.33 47.69 C3.78 39.11, 9.13 30.23, 16.72 23.54 C24.3 16.85, 35.99 11.42, 46.85 7.54 C57.71 3.67, 69.33 0.46, 81.89 0.29 C94.45 0.12, 115.34 5.01, 122.22 6.5 C129.11 8, 123.85 8.23, 123.21 9.25 M112.29 3.41 C123.21 5.49, 135.7 12.99, 144.24 19.4 C152.79 25.81, 159.6 33.79, 163.56 41.87 C167.52 49.94, 169.88 58.93, 168.01 67.86 C166.14 76.8, 159.5 87.88, 152.34 95.49 C145.18 103.11, 135.44 109.03, 125.05 113.56 C114.66 118.09, 102.01 121.84, 89.99 122.68 C77.98 123.52, 64.06 121.78, 52.98 118.61 C41.9 115.45, 31.85 110.42, 23.51 103.7 C15.17 96.98, 6.62 87.02, 2.95 78.3 C-0.73 69.57, -0.53 59.72, 1.48 51.34 C3.5 42.96, 8.57 35.27, 15.02 28.01 C21.47 20.75, 29.94 12.6, 40.18 7.78 C50.43 2.95, 64.43 -0.58, 76.49 -0.96 C88.55 -1.34, 106.54 4.25, 112.55 5.49 C118.56 6.74, 112.86 6.04, 112.56 6.51" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(221.61148834228516 291.66015625) rotate(0 74.51741790771484 34.25356684840517)"><text x="74.51741790771484" y="16.09460927650392" font-family="Virgil, Segoe UI Emoji" font-size="18.268568985816028px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">PR has not</text><text x="74.51741790771484" y="38.93032050877396" font-family="Virgil, Segoe UI Emoji" font-size="18.268568985816028px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">changed since</text><text x="74.51741790771484" y="61.76603174104399" font-family="Virgil, Segoe UI Emoji" font-size="18.268568985816028px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">'request-ci' label</text></g><g stroke-linecap="round" transform="translate(10 239.33984375) rotate(0 195.326171875 87.681640625)"><path d="M32 0 C144.1 0.52, 257.47 0.33, 358.65 0 M358.65 0 C379.26 1.4, 389.95 11.17, 390.65 32 M390.65 32 C391.81 59.14, 388.61 90.49, 390.65 143.36 M390.65 143.36 C391.44 164.66, 380.38 176.35, 358.65 175.36 M358.65 175.36 C285 176.21, 211.97 176.13, 32 175.36 M32 175.36 C11.98 173.94, -0.26 165.7, 0 143.36 M0 143.36 C0.36 112.14, -0.16 82.87, 0 32 M0 32 C-0.67 10.84, 10.49 0.76, 32 0" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g stroke-linecap="round"><g transform="translate(568.0625 155.4609375) rotate(0 -222.5234375 39.53125)"><path d="M0.08 1.02 C-74.12 14.07, -370.71 65.04, -444.77 78.06 M-1.34 0.51 C-75.71 13.7, -371.69 65.74, -445.57 79.07" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(568.0625 155.4609375) rotate(0 -222.5234375 39.53125)"><path d="M-446.23 79.38 L-435.24 70.23 L-430.48 81.45 L-445.02 78.68" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M-445.57 79.07 C-440.16 76.52, -438.58 74.27, -433.3 70.45 M-445.57 79.07 C-441.53 76.48, -437.83 73.24, -433.3 70.45 M-433.3 70.45 C-433.5 75.86, -431.89 79.73, -431.08 82.93 M-433.3 70.45 C-432.24 73.86, -432.49 77.72, -431.08 82.93 M-431.08 82.93 C-436.26 82.04, -441.51 79.22, -445.57 79.07 M-431.08 82.93 C-436.35 81.31, -441.07 79.77, -445.57 79.07 M-445.57 79.07 C-445.57 79.07, -445.57 79.07, -445.57 79.07 M-445.57 79.07 C-445.57 79.07, -445.57 79.07, -445.57 79.07" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(408.18597412109375 243.2578125) rotate(0 33.14996337890625 12.5)"><text x="33.14996337890625" y="17.619999999999997" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">if true</text></g><g stroke-linecap="round"><g transform="translate(405.78125 342.77734375) rotate(0 89.17578125 -3.474609375)"><path d="M-0.52 -0.17 C29.48 -1.36, 149.09 -5.6, 178.87 -6.74 M1.4 -1.3 C31.39 -2.91, 148.88 -8.02, 178.2 -8.75" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(405.78125 342.77734375) rotate(0 89.17578125 -3.474609375)"><path d="M176.41 -9.52 L165.63 -0.21 L163.55 -15.94 L177.34 -8.41" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"></path><path d="M178.2 -8.75 C175.27 -6.75, 173 -6.24, 164.84 -1.93 M178.2 -8.75 C174.32 -6.18, 170.78 -4, 164.84 -1.93 M164.84 -1.93 C164.29 -6.16, 163.56 -10.81, 164.39 -14.6 M164.84 -1.93 C164.55 -6.87, 164.8 -11.25, 164.39 -14.6 M164.39 -14.6 C169.55 -14.03, 172.01 -12.34, 178.2 -8.75 M164.39 -14.6 C168.91 -12.5, 173.84 -10.35, 178.2 -8.75 M178.2 -8.75 C178.2 -8.75, 178.2 -8.75, 178.2 -8.75 M178.2 -8.75 C178.2 -8.75, 178.2 -8.75, 178.2 -8.75" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(408.50792694091797 305.8359375) rotate(358.59508451210854 82.66394805908203 10)"><text x="82.66394805908203" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Fetch /PR_ID/HEAD</text></g><g stroke-linecap="round" transform="translate(578.30078125 237.9140625) rotate(0 84.8671875 95.875)"><path d="M32 0 C58.56 0.06, 84.43 1, 137.73 0 M137.73 0 C158.95 -0.99, 168.55 10.08, 169.73 32 M169.73 32 C170.04 72.44, 170.4 116.31, 169.73 159.75 M169.73 159.75 C169.31 182.8, 158.89 193.28, 137.73 191.75 M137.73 191.75 C100.99 189.12, 63.39 192.13, 32 191.75 M32 191.75 C9.45 190.46, 1.08 182.08, 0 159.75 M0 159.75 C0.42 123.45, 0.64 84.82, 0 32 M0 32 C1.36 11.65, 11.73 -1.6, 32 0" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="1.5 8"></path></g><g stroke-linecap="round" transform="translate(587.43359375 256.3671875) rotate(0 72.8984375 15)"><path d="M7.5 0 C49.11 0.37, 92.52 0.21, 138.3 0 M7.5 0 C58.2 1.24, 109.76 1.66, 138.3 0 M138.3 0 C143.99 -1.33, 146.96 3.5, 145.8 7.5 M138.3 0 C142.92 0.2, 147.85 4.72, 145.8 7.5 M145.8 7.5 C144.92 11.21, 144.77 17.41, 145.8 22.5 M145.8 7.5 C146.25 13.24, 145.08 17.4, 145.8 22.5 M145.8 22.5 C147.68 26.6, 141.41 31.7, 138.3 30 M145.8 22.5 C145.07 25.63, 143.6 30.71, 138.3 30 M138.3 30 C111.81 29.37, 82.98 28.66, 7.5 30 M138.3 30 C109.95 29.19, 80.97 29.79, 7.5 30 M7.5 30 C3.13 29.6, -1 26.04, 0 22.5 M7.5 30 C2.86 31.68, -1.7 27.84, 0 22.5 M0 22.5 C-1.14 19.01, 1.26 14.94, 0 7.5 M0 22.5 C-0.52 19.17, 0.24 15.5, 0 7.5 M0 7.5 C1.65 3.59, 4.43 1.59, 7.5 0 M0 7.5 C1.64 2.73, 4.51 2.27, 7.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(616.732063293457 261.3671875) rotate(0 43.59996795654297 10)"><text x="43.59996795654297" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">node-test-1</text></g><g stroke-linecap="round" transform="translate(589.21875 296.35546875) rotate(0 72.8984375 15)"><path d="M7.5 0 C34.65 1.22, 66 -0.39, 138.3 0 M7.5 0 C57.94 0.63, 108.2 -0.7, 138.3 0 M138.3 0 C142.39 0.86, 147.05 2.02, 145.8 7.5 M138.3 0 C141.91 1.64, 145.21 2.12, 145.8 7.5 M145.8 7.5 C145.32 10.54, 145.49 14.41, 145.8 22.5 M145.8 7.5 C145.19 12.21, 145.69 17.8, 145.8 22.5 M145.8 22.5 C144 25.55, 144.79 31.57, 138.3 30 M145.8 22.5 C144.55 26.84, 143.12 28.61, 138.3 30 M138.3 30 C86.5 29.82, 36.04 30.97, 7.5 30 M138.3 30 C90.2 31.1, 44.25 30.78, 7.5 30 M7.5 30 C3.51 31.3, -0.83 29.01, 0 22.5 M7.5 30 C4.23 29.71, 1.95 29.34, 0 22.5 M0 22.5 C-0.05 17.5, -0.47 13.36, 0 7.5 M0 22.5 C-0.67 17.67, -0.5 14.21, 0 7.5 M0 7.5 C-0.84 0.53, 2.45 0.71, 7.5 0 M0 7.5 C2.08 1.53, 1.81 -0.36, 7.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(614.9892196655273 301.35546875) rotate(0 47.127967834472656 10)"><text x="47.127967834472656" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">node-test-2</text></g><g stroke-linecap="round" transform="translate(590.30859375 336.4375) rotate(0 72.8984375 15)"><path d="M7.5 0 C39.98 0.36, 74.66 -2.1, 138.3 0 M7.5 0 C50.64 -0.07, 92 -0.02, 138.3 0 M138.3 0 C144.35 1.67, 145.59 3.93, 145.8 7.5 M138.3 0 C144.93 -0.6, 146.45 3.82, 145.8 7.5 M145.8 7.5 C145.66 10.73, 146.74 14.83, 145.8 22.5 M145.8 7.5 C146.52 10.39, 146.57 14.98, 145.8 22.5 M145.8 22.5 C145.47 28.11, 142.52 31.24, 138.3 30 M145.8 22.5 C143.91 27.1, 141.67 27.73, 138.3 30 M138.3 30 C91.54 27.8, 43.12 26.9, 7.5 30 M138.3 30 C88.1 29.08, 38.75 29.21, 7.5 30 M7.5 30 C3 28.17, 0.92 26.79, 0 22.5 M7.5 30 C0.97 30.64, 0.94 28.99, 0 22.5 M0 22.5 C0.87 18.69, 0.02 11.69, 0 7.5 M0 22.5 C0.32 16.27, -0.46 11.6, 0 7.5 M0 7.5 C0.95 1.86, 2.07 -0.68, 7.5 0 M0 7.5 C2.14 0.28, 3.82 -1.81, 7.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(615.1990814208984 341.4375) rotate(0 48.00794982910156 10)"><text x="48.00794982910156" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">node-test-...</text></g><g stroke-linecap="round" transform="translate(591.70703125 381.16796875) rotate(0 72.8984375 15)"><path d="M7.5 0 C52.45 2.11, 97.5 0.85, 138.3 0 M7.5 0 C53.37 -1.09, 101.34 0.42, 138.3 0 M138.3 0 C144.68 1.65, 146.11 3.45, 145.8 7.5 M138.3 0 C145.4 -1.26, 146.44 3.42, 145.8 7.5 M145.8 7.5 C147.34 11.86, 146.39 14.99, 145.8 22.5 M145.8 7.5 C145.42 13.66, 145.92 19.87, 145.8 22.5 M145.8 22.5 C145.13 26.09, 143.62 31.49, 138.3 30 M145.8 22.5 C144.28 26.47, 144.58 29.29, 138.3 30 M138.3 30 C100.97 31.97, 63.44 30.5, 7.5 30 M138.3 30 C104.78 31.13, 70.77 30.78, 7.5 30 M7.5 30 C2.52 28.48, 1.41 28.04, 0 22.5 M7.5 30 C1.42 27.92, 0.5 27.88, 0 22.5 M0 22.5 C1.13 19.03, -0.99 14.69, 0 7.5 M0 22.5 C0.07 18.13, -0.47 13.49, 0 7.5 M0 7.5 C0.37 0.74, 3.95 1.05, 7.5 0 M0 7.5 C-0.73 3.13, 3.64 -1.24, 7.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(618.0215072631836 386.16796875) rotate(0 46.583961486816406 10)"><text x="46.583961486816406" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">node-test-N</text></g><g transform="translate(600.2399749755859 196.42578125) rotate(0 64.09596252441406 20)"><text x="64.09596252441406" y="14.096" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Jenkins Test CI</text><text x="64.09596252441406" y="34.096000000000004" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Cluster</text></g></svg> \ No newline at end of file From 353177929d8d495f368d70bd1eb030f0875b3459 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz <dario@cloudflare.com> Date: Thu, 24 Apr 2025 14:17:58 +0200 Subject: [PATCH 0419/1385] chore: refactor the `generateBlogData` function (again) (#7607) (#7618) * chore: refactor the `generateBlogData` function (#7607) * add unit tests for `generateBlogData` * avoid mocking node:path * remove original modules * migrate to node test runner --- .../generators/__tests__/blogData.test.mjs | 209 ++++++++++++++++++ apps/site/next-data/generators/blogData.mjs | 107 +++++---- 2 files changed, 261 insertions(+), 55 deletions(-) create mode 100644 apps/site/next-data/generators/__tests__/blogData.test.mjs diff --git a/apps/site/next-data/generators/__tests__/blogData.test.mjs b/apps/site/next-data/generators/__tests__/blogData.test.mjs new file mode 100644 index 0000000000000..0825eac35f248 --- /dev/null +++ b/apps/site/next-data/generators/__tests__/blogData.test.mjs @@ -0,0 +1,209 @@ +import assert from 'node:assert/strict'; +import { normalize } from 'node:path'; +import { Readable } from 'node:stream'; +import { describe, it, mock } from 'node:test'; + +let files = []; + +mock.module('node:fs', { + namedExports: { + createReadStream: filename => { + const readable = new Readable(); + const file = files.find(f => filename.endsWith(normalize(f.path))); + readable.push(`---\n`); + file.frontMatterContent.forEach(line => readable.push(`${line}\n`)); + readable.push(`---\n`); + readable.push(null); + readable.close = () => {}; + return readable; + }, + }, +}); + +mock.module('../../../next.helpers.mjs', { + namedExports: { + getMarkdownFiles: () => { + return Promise.resolve(files.map(file => file.path)); + }, + }, +}); + +const generateBlogData = (await import('../blogData.mjs')).default; + +describe('generateBlogData', () => { + it('should return zero posts and only the default "all" category if no md file is found', async () => { + files = []; + + const blogData = await generateBlogData(); + + assert.deepEqual(blogData.categories, ['all']); + assert.deepEqual(blogData.posts, []); + }); + + it('should collect the data from a single md file if only one is found', async () => { + files = [ + { + path: 'pages/en/blog/post1.md', + frontMatterContent: [ + `date: '2020-01-01T00:00:00.000Z'`, + `title: POST 1`, + `author: author`, + ], + }, + ]; + + const blogData = await generateBlogData(); + + assert.equal(blogData.posts.length, 1); + const post = blogData.posts[0]; + assert.equal(post.title, 'POST 1'); + assert.deepEqual(post.date, new Date('2020-01-01T00:00:00.000Z')); + assert.equal(post.author, 'author'); + }); + + it('should collect the data from a single md file if only one is found', async () => { + files = [ + { + path: 'pages/en/blog/post1.md', + frontMatterContent: [ + `date: '2020-01-01T00:00:00.000Z'`, + `title: POST 1`, + `author: author`, + ], + }, + ]; + + const blogData = await generateBlogData(); + + assert.equal(blogData.posts.length, 1); + const post = blogData.posts[0]; + assert.equal(post.title, 'POST 1'); + assert.deepEqual(post.date, new Date('2020-01-01T00:00:00.000Z')); + assert.equal(post.author, 'author'); + }); + + it('should collect the data from multiple md files', async () => { + const currentDate = new Date(); + + files = [ + { + path: 'pages/en/blog/post1.md', + frontMatterContent: [ + `date: '2020-01-01T00:00:00.000Z'`, + `title: POST 1`, + `author: author-a`, + ], + }, + { + path: 'pages/en/blog/post2.md', + frontMatterContent: [ + `date: '2020-01-02T00:00:00.000Z'`, + `title: POST 2`, + `author: author-b`, + ], + }, + { + path: 'pages/en/blog/post3.md', + frontMatterContent: [ + // no date specified (the date defaults to the current date) + `title: POST 3`, + `author: author-c`, + ], + }, + ]; + + const blogData = await generateBlogData(); + + assert(blogData.posts.length, 3); + assert.equal(blogData.posts[0].title, 'POST 1'); + assert.deepEqual( + blogData.posts[0].date, + new Date('2020-01-01T00:00:00.000Z') + ); + assert.equal(blogData.posts[0].author, 'author-a'); + assert.equal(blogData.posts[1].title, 'POST 2'); + assert.deepEqual( + blogData.posts[1].date, + new Date('2020-01-02T00:00:00.000Z') + ); + assert.equal(blogData.posts[1].author, 'author-b'); + assert.equal(blogData.posts[2].title, 'POST 3'); + assert.equal( + blogData.posts[2].date.setMilliseconds(0), + currentDate.setMilliseconds(0) + ); + assert.equal(blogData.posts[2].author, 'author-c'); + }); + + it('should generate categories based on the categories of md files and their years', async () => { + files = [ + { + path: 'pages/en/blog/post1.md', + frontMatterContent: [ + "date: '2020-01-01T00:00:00.000Z'", + 'category: category-a', + ], + }, + { + path: 'pages/en/blog/sub-dir/post2.md', + frontMatterContent: [ + "date: '2020-01-02T00:00:00.000Z'", + 'category: category-b', + ], + }, + { + path: 'pages/en/blog/post3.md', + frontMatterContent: [ + "date: '2021-03-13T00:00:00.000Z'", + // no category specified (it should be "uncategorized") + ], + }, + { + path: 'pages/en/blog/post4.md', + frontMatterContent: [ + // no date specified (the date defaults to the current date) + 'category: category-b', + ], + }, + ]; + + const blogData = await generateBlogData(); + + assert.deepEqual(blogData.categories.sort(), [ + 'all', + 'category-a', + 'category-b', + 'uncategorized', + 'year-2020', + 'year-2021', + `year-${new Date().getUTCFullYear()}`, + ]); + }); + + it('should generate slugs based on the md filenames and categories', async () => { + files = [ + { + path: 'pages/en/blog/post1.md', + frontMatterContent: ['category: category-a'], + }, + { + path: 'pages/en/blog/post2.md', + frontMatterContent: ['category: category-b'], + }, + { + path: 'pages/en/blog/post3.md', + frontMatterContent: [ + // no category specified + ], + }, + ]; + + const blogData = await generateBlogData(); + + assert.deepEqual(blogData.posts.map(p => p.slug).sort(), [ + '/blog/category-a/post1', + '/blog/category-b/post2', + '/blog/uncategorized/post3', + ]); + }); +}); diff --git a/apps/site/next-data/generators/blogData.mjs b/apps/site/next-data/generators/blogData.mjs index c03e23c62a48a..0d34f9d348548 100644 --- a/apps/site/next-data/generators/blogData.mjs +++ b/apps/site/next-data/generators/blogData.mjs @@ -11,11 +11,6 @@ import { getMarkdownFiles } from '../../next.helpers.mjs'; // gets the current blog path based on local module path const blogPath = join(process.cwd(), 'pages/en/blog'); -/** - * This contains the metadata of all available blog categories - */ -const blogCategories = new Set(['all']); - /** * This method parses the source (raw) Markdown content into Frontmatter * and returns basic information for blog posts @@ -39,12 +34,6 @@ const getFrontMatter = (filename, source) => { // all = (all blog posts), publish year and the actual blog category const categories = [category, `year-${publishYear}`, 'all']; - // we add the year to the categories set - blogCategories.add(`year-${publishYear}`); - - // we add the category to the categories set - blogCategories.add(category); - // this is the url used for the blog post it based on the category and filename const slug = `/blog/${category}/${basename(filename, extname(filename))}`; @@ -63,50 +52,58 @@ const generateBlogData = async () => { '**/index.md', ]); - return new Promise(resolve => { - const posts = []; - const rawFrontmatter = []; - - filenames.forEach(filename => { - // We create a stream for reading a file instead of reading the files - const _stream = createReadStream(join(blogPath, filename)); - - // We create a readline interface to read the file line-by-line - const _readLine = readline.createInterface({ input: _stream }); - - // Creates an array of the metadata based on the filename - // This prevents concurrency issues since the for-loop is synchronous - // and these event listeners are not - rawFrontmatter[filename] = [0, '']; - - // We read line by line - _readLine.on('line', line => { - rawFrontmatter[filename][1] += `${line}\n`; - - // We observe the frontmatter separators - if (line === '---') { - rawFrontmatter[filename][0] += 1; - } - - // Once we have two separators we close the readLine and the stream - if (rawFrontmatter[filename][0] === 2) { - _readLine.close(); - _stream.close(); - } - }); - - // Then we parse gray-matter on the frontmatter - // This allows us to only read the frontmatter part of each file - // and optimise the read-process as we have thousands of markdown files - _readLine.on('close', () => { - posts.push(getFrontMatter(filename, rawFrontmatter[filename][1])); - - if (posts.length === filenames.length) { - resolve({ categories: [...blogCategories], posts }); - } - }); - }); - }); + /** + * This contains the metadata of all available blog categories + */ + const blogCategories = new Set(['all']); + + const posts = await Promise.all( + filenames.map( + filename => + new Promise(resolve => { + // We create a stream for reading a file instead of reading the files + const _stream = createReadStream(join(blogPath, filename)); + + // We create a readline interface to read the file line-by-line + const _readLine = readline.createInterface({ input: _stream }); + + let rawFrontmatter = ''; + let frontmatterSeparatorsEncountered = 0; + + // We read line by line + _readLine.on('line', line => { + rawFrontmatter += `${line}\n`; + + // We observe the frontmatter separators + if (line === '---') { + frontmatterSeparatorsEncountered++; + } + + // Once we have two separators we close the readLine and the stream + if (frontmatterSeparatorsEncountered === 2) { + _readLine.close(); + _stream.close(); + } + }); + + // Then we parse gray-matter on the frontmatter + // This allows us to only read the frontmatter part of each file + // and optimise the read-process as we have thousands of markdown files + _readLine.on('close', () => { + const frontMatterData = getFrontMatter(filename, rawFrontmatter); + + frontMatterData.categories.forEach(category => { + // we add the category to the categories set + blogCategories.add(category); + }); + + resolve(frontMatterData); + }); + }) + ) + ); + + return { categories: [...blogCategories], posts }; }; export default generateBlogData; From 5e81ccf82837440466d8183d1efb1956d90d873e Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Thu, 24 Apr 2025 18:59:39 +0200 Subject: [PATCH 0420/1385] [automated]: crowdin sync (#7674) * 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 <support+bot@crowdin.com> Co-authored-by: avivkeller <38299977+avivkeller@users.noreply.github.com> --- apps/site/pages/es/about/branding.mdx | 6 +-- .../site/pages/es/about/get-involved/index.md | 34 +++++++++++++++ apps/site/pages/es/about/index.mdx | 39 +++++++++++++++++ .../site/pages/es/about/previous-releases.mdx | 34 ++++++++++----- apps/site/pages/fr/about/branding.mdx | 6 +-- apps/site/pages/fr/about/index.mdx | 43 +++++++++++++++++++ .../site/pages/fr/about/previous-releases.mdx | 34 ++++++++++----- apps/site/pages/fr/download/current.mdx | 4 +- apps/site/pages/fr/download/index.mdx | 4 +- apps/site/pages/ja/about/index.mdx | 39 +++++++++++++++++ .../site/pages/ja/about/previous-releases.mdx | 1 + apps/site/snippets/es/download/n.bash | 8 ++++ apps/site/snippets/es/download/nvm.bash | 12 ++++++ packages/i18n/locales/fr.json | 2 + 14 files changed, 236 insertions(+), 30 deletions(-) create mode 100644 apps/site/pages/es/about/get-involved/index.md create mode 100644 apps/site/snippets/es/download/n.bash create mode 100644 apps/site/snippets/es/download/nvm.bash diff --git a/apps/site/pages/es/about/branding.mdx b/apps/site/pages/es/about/branding.mdx index 1fc4dcc0da676..5b2d9ef19ca7b 100644 --- a/apps/site/pages/es/about/branding.mdx +++ b/apps/site/pages/es/about/branding.mdx @@ -48,7 +48,7 @@ Créditos a [Angela Angelini](https://www.linkedin.com/in/angeliningl/) por dise </td> <td> - <img alt="Logo Apilado Claro de Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="Logo Apilado Claro de Node.js" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -58,7 +58,7 @@ Créditos a [Angela Angelini](https://www.linkedin.com/in/angeliningl/) por dise </td> <td> - <img alt="Logo Apilado Blanco de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="Logo Apilado Blanco de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> @@ -75,7 +75,7 @@ Créditos a [Angela Angelini](https://www.linkedin.com/in/angeliningl/) por dise </td> <td> - <img alt="Iconos Blanco de JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="Iconos Blanco de JS" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> 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..6034daf67326a --- /dev/null +++ b/apps/site/pages/es/about/get-involved/index.md @@ -0,0 +1,34 @@ +--- +title: Colaborar +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 + +- El [repositorio `nodejs/node` en GitHub](https://github.com/nodejs/node/issues) es dónde se debaten las funciones claves de Node.js y dónde se comunican problemas. +- El [repositorio `nodejs/help` en GitHub](https://github.com/nodejs/help/issues) es el lugar oficial para hacer preguntas sobre Node.js. +- El [servidor oficial de Discord de Node.js](/discord) es un lugar para charlar con otros desarrolladores de Node.js y recibir noticias oficiales del proyecto Node.js. +- El [calendario del proyecto de Node.js](https://nodejs.org/calendar) con todas las reuniones públicas del equipo de Node.js. + +## Material de Aprendizaje + +Si estás buscando aprender más sobre Node.js, hay muchos recursos disponibles para ti. + +- [Los materiales oficiales para aprender](https://nodejs.org/en/learn/) Node.js. +- [Documentación oficial de referencia de la API](https://nodejs.org/api/). +- [NodeSchool.io](https://nodeschool.io/) enseña conceptos de Node.js a través de juegos interactivos en la línea de comandos. +- [La etiqueta Node.js en StackOverflow](https://stackoverflow.com/questions/tagged/node.js) contiene numerosos hilos con recursos útiles. +- [La etiqueta de Node.js en Dev Community](https://dev.to/t/node) contiene artículos u otro contenido relevante a Node.js. + +## Áreas de Discusión No Oficiales + +Existen varias áreas de discusión no oficiales si buscas un lugar más informal para hablar sobre Node.js. +Ten en cuenta que el proyecto Node.js no respalda oficialmente estas áreas. Por favor, sigue sus respectivos códigos 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)_ +- `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/index.mdx b/apps/site/pages/es/about/index.mdx index c3f48857414e8..809ee607aacc3 100644 --- a/apps/site/pages/es/about/index.mdx +++ b/apps/site/pages/es/about/index.mdx @@ -54,3 +54,42 @@ En Node.js, no existe tal llamada de inicio del ciclo de eventos. Node.js simple 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. Que Node.js esté diseñado sin hilos no significa que no puedas aprovechar múltiples núcleos en tu entorno. Los procesos secundarios se pueden generar utilizando nuestra API [`child_process.fork()`](https://nodejs.org/api/child_process.html) y están diseñados para que sea fácil comunicarse con ellos. Construido sobre esa misma interfaz se encuentra el módulo [`cluster`](https://nodejs.org/api/cluster.html), que le permite compartir sockets entre procesos para permitir el equilibrio de carga en sus núcleos. + +## Recursos Oficiales de Node.js + +Para asegurar autenticidad y seguridad al usar Node.js, siempre use fuentes oficiales. No confíe en correos electrónicos, binarios, ni descargas de fuentes no oficiales. + +### Dominios oficiales de Node.js + +Para descargar binarios de Node.js y leer documentación oficial, use solo estos dominios: + +- [nodejs.org](https://nodejs.org) +- [nodejs.dev](https://nodejs.dev) _(Redirige a https://nodejs.org)_ +- [iojs.org](https://iojs.org) _(Redirige a https://nodejs.org)_ + +### Paquetes oficiales de npm + +El equipo de Node.js mantiene los siguientes alcances oficiales de paquetes npm: + +- [`@node-core`](https://npmjs.com/~node-core) +- [`@pkgjs`](https://npmjs.com/~pkgjs) + +Además, el equipo de Node.js mantiene los paquetes publicados por la cuenta npm [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation), aunque otros paquetes relacionados con Node.js (como [`undici`](https://www.npmjs.com/package/undici)) también pueden ser mantenidos por colaboradores estrechamente vinculados al proyecto. + +Usar paquetes del equipo de Node.js garantiza que estás trabajando con componentes oficialmente soportados de Node.js. + +### "Organizaciones oficiales de GitHub" + +Node.js y los proyectos relacionados se mantienen bajo estas organizaciones oficiales de GitHub: + +- [nodejs](https://github.com/nodejs) +- [pkgjs](https://github.com/pkgjs) + +### Canales oficiales de comunicación + +Node.js y la OpenJS Foundation se comunican a través de varios canales oficiales y apoyados por la comunidad. Puedes encontrar detalles sobre cómo involucrarte en la página de [Involúcrate](https://nodejs.org/en/about/get-involved). + +### Reportar problemas en el sitio web y tiempo de inactividad + +Si encuentras problemas con el sitio web de Node.js, repórtalos en el [repositorio del sitio web de Node.js](https://github.com/nodejs/nodejs.org/issues). +Para actualizaciones en tiempo real sobre interrupciones, visita la [Página de Estado de Node.js](https://status.nodejs.org). diff --git a/apps/site/pages/es/about/previous-releases.mdx b/apps/site/pages/es/about/previous-releases.mdx index 46bcef2d0f050..969d835eed402 100644 --- a/apps/site/pages/es/about/previous-releases.mdx +++ b/apps/site/pages/es/about/previous-releases.mdx @@ -24,16 +24,30 @@ El soporte comercial para versiones posteriores a la fase de Mantenimiento está <DownloadReleasesTable /> -## Oficial versus Comunidad +## Métodos de Instalación Oficial vs. Comunidad -El sito web de Node.js ofrece varios métodos de instalación que facilitan una instalación de Node.js sin interacción, como por una interfaz de línea de comandos (CLI), gestores de paquetes del OS (como `apt`), o gestores de versiones de Node.js (como `nvm`). +El sito web de Node.js ofrece varios métodos de instalación que facilitan una instalación de Node.js sin interacción, como por una interfaz de línea de comandos (CLI), gestores de paquetes del sistema operativo (OS) (e.g. `brew`), o gestores de versiones de Node.js (e.g. `nvm`). -El proyecto Node.js, en un intento de popularizar y anunciar esfuerzos comunitarios, ha introducido una página nueva de Descargas que enumera métodos de instalación Oficial y de la Comunidad, así proveyendo más flexibilidad y opciones para usuarios. -Como parte de este cambio, hemos introducido el concepto de métodos de instalación "Oficial" y "Comunidad". Para considerarse "Oficial", un método de instalación debe cumplir con los siguientes requisitos: +En un intento de anunciar y popularizar esfuerzos comunitarios, el proyecto Node.js ha introducido una página de Descargas actualizada que distingue entre métodos de instalación Oficial y de la Comunidad. Esta presentación provee más flexibilidad y opciones para usuarios. Para evitar confusión, hemos definido requisitos para cada designación. -| Requisitos | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Lanzamientos nuevos de Node.js deben estar disponible al mismo tiempo que el lanzamiento oficial | -| Los mantenedores del proyecto tienen una estrecha relación con Node.js, la cual incluye comunicación directa | -| El método de instalación descarga los binarios oficiales empaquetados por el proyecto Node.js | -| El método de instalación **no** compila desde el código fuente cuando binarios están disponibles, ni modifica los binarios oficiales proveídos por Node.js | +### Métodos de Instalación Oficiales + +Para considerarse "Oficial", métodos de instalación deben cumplir con los siguientes requisitos: + +| Requisitos (Métodos de Instalación Oficiales) | +| :------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Lanzamientos nuevos de Node.js deben estar disponible al mismo tiempo que el lanzamiento oficial. | +| Los mantenedores del proyecto tienen una estrecha relación con Node.js, la cual incluye comunicación directa. | +| El método de instalación debe descargar los binarios oficiales empaquetados por el proyecto Node.js. | +| El método de instalación no compila desde el código fuente cuando binarios están disponibles, ni modifica los binarios oficiales proveídos por Node.js. | + +### Métodos de Instalación de Comunidad + +Para ser incluida en la página de descargas (/download), los métodos de instalación de comunidad deben cumplir con unos requisitos mínimos: + +- **Apoyo de versiones:** Debe proveer instalaciones de cada versión de Node.js apoyado oficialmente que no ha pasado el fin de su vida útil (EOL). +- **Compatibilidad con Sistemas Operativos**: Debe operar en uno o más sistemas operativos oficialmente compatible. +- **Apoyo amplio de Sistemas Operativos:** No se puede limitar a una fracción de distribuciones o versiones del sistema operativo. + - Por ejemplo, si un método de instalación declara compatibilidad con "Windows", debe funcionar en cada edición de "Windows 10" y "Windows 11" (incluso versiones para servidores). + - De igual manera, un método de instalación que declara compatibilidad con "Linux" debe poder instalarse en cada una de las distribuciones principales de Linux, y no solo una selección reducida. No puede depender de un gestor de paquetes específico a una distribución en particular como `apt` o `dnf`. +- **Gratis y de Código Abierto:** Debe ser de código abierto que puede usarse gratuitamente y no como producto comercial vendido ni un servicio pagado. diff --git a/apps/site/pages/fr/about/branding.mdx b/apps/site/pages/fr/about/branding.mdx index ef0dedb49af36..c4e6c4c404f48 100644 --- a/apps/site/pages/fr/about/branding.mdx +++ b/apps/site/pages/fr/about/branding.mdx @@ -48,7 +48,7 @@ Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la c </td> <td> - <img alt="Logo empilé clair de Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="Logo empilé clair de Node.js" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -58,7 +58,7 @@ Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la c </td> <td> - <img alt="Logo empilé blanc de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="Logo empilé blanc de Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> @@ -75,7 +75,7 @@ Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la c </td> <td> - <img alt="Icons JS Blanc" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="Icons JS Blanc" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> diff --git a/apps/site/pages/fr/about/index.mdx b/apps/site/pages/fr/about/index.mdx index 30fc43194dba1..944164a53d008 100644 --- a/apps/site/pages/fr/about/index.mdx +++ b/apps/site/pages/fr/about/index.mdx @@ -73,3 +73,46 @@ profit de plusieurs cœurs dans votre environnement. Les processus enfants peuve communiquer avec. Le module [`cluster`](https://nodejs.org/api/cluster.html) est construit sur cette même interface, qui vous permet de partager des sockets entre les processus afin d'équilibrer la charge sur vos cœurs. + +## Ressources officielles Node.js + +Pour garantir l'authenticité et la sécurité lorsque vous travaillez avec Node.js, utilisez toujours des sources officielles. Évitez de faire confiance aux courriels, aux binaires +ou aux téléchargements provenant de sources non officielles. + +### Domaines officiels de Node.js + +Pour télécharger les binaires Node.js et accéder à la documentation officielle, utilisez uniquement ces domaines : + +- [nodejs.org](https://nodejs.org) +- [nodejs.dev](https://nodejs.dev) _(Redirection vers https://nodejs.org)_ +- [iojs.org](https://iojs.org) _(Redirection vers https://nodejs.org)_ + +### Paquets npm officiels + +L'équipe Node.js maintient les paquets npm officiels suivants : + +- [`@node-core`](https://npmjs.com/~node-core) +- [`@pkgjs`](https://npmjs.com/~pkgjs) + +De plus, l'équipe Node.js maintient les paquets publiés par le compte npm [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation), +bien que d'autres paquets liés à Node.js (comme [`undici`](https://www.npmjs.com/package/undici)) puissent également être maintenus par des contributeurs étroitement +liés au projet. + +L'utilisation de paquets de l'équipe Node.js garantit que vous travaillez avec des composants Node.js officiellement supportés. + +### Organisations GitHub officielles + +Node.js et les projets connexes sont maintenus sous ces organisations officielles GitHub : + +- [nodejs](https://github.com/nodejs) +- [pkgjs](https://github.com/pkgjs) + +### Canaux de communication officiels + +Node.js et la Fondation OpenJS communiquent par le biais de divers canaux officiels et soutenus par la communauté. Vous trouverez des détails sur +comment y participer sur la page [S'impliquer](https://nodejs.org/en/about/get-involved). + +### Signaler les problèmes et les temps d'arrêt d'un site web + +Si vous rencontrez des problèmes avec le site web Node.js, signalez-les à [Dépôt du site web Node.js](https://github.com/nodejs/nodejs.org/issues). +Pour obtenir des mises à jour en temps réel sur les pannes, visitez la [page d'état de Node.js](https://status.nodejs.org). diff --git a/apps/site/pages/fr/about/previous-releases.mdx b/apps/site/pages/fr/about/previous-releases.mdx index f01be60082b75..27df60dd5dea0 100644 --- a/apps/site/pages/fr/about/previous-releases.mdx +++ b/apps/site/pages/fr/about/previous-releases.mdx @@ -24,16 +24,30 @@ Le support commercial pour les versions dépassant la phase de maintenance est d <DownloadReleasesTable /> -## Officielle versus communautaire +## Méthodes d'installation officielles ou communautaires -Le site web de Node.js propose de nombreuses méthodes d'installation qui permettent d'installer Node.js de manière non interactive, -par exemple, via des CLI, des gestionnaires de paquets OS (tels que `apt`), ou des gestionnaires de versions Node.js (tels que `nvm`). +Le site web de Node.js propose plusieurs méthodes d'installation non interactives, notamment des interfaces en ligne de commande (CLI), des gestionnaires de paquets de systèmes d'exploitation (par exemple, `brew`) et des gestionnaires de versions de Node.js (par exemple, `nvm`). -Le projet Node.js, dans une tentative de populariser et d'annoncer les efforts de la communauté, a introduit une nouvelle page de téléchargement qui liste à la fois les méthodes d'installation officielles et communautaires, offrant plus de polyvalence et d'options aux utilisateurs. Avec ce changement, nous avons introduit le concept de méthodes d'installation "officielles" et "communautaires". Pour être considérée comme "officielle", la méthode d'installation doit répondre aux critères suivants : +Pour mettre en valeur et promouvoir les contributions de la communauté, le projet Node.js a introduit une page de téléchargement révisée classant les méthodes d'installation en deux catégories : "Officielle" et "Communautaire". Les utilisateurs bénéficient ainsi d'une plus grande flexibilité et d'un plus grand choix. Pour plus de clarté, nous avons défini des critères pour chaque catégorie. -| Prérequis | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Les nouvelles versions de Node.js doivent être disponibles en même temps que la version officielle | -| Les responsables de projet ont une relation étroite avec Node.js, y compris une communication directe | -| La méthode d'installation télécharge les binaires officiels fournis par le projet Node.js | -| La méthode d'installation ne compile **pas** à partir des sources lorsque les binaires sont disponibles, ni ne modifie les binaires officiels fournis par Node.js | +### Méthodes d'installation officielles + +Les méthodes d'installation désignées comme "Officielles" doivent satisfaire aux exigences suivantes : + +| Exigences (Méthodes d'installation officielles) | +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Les nouvelles versions de Node.js doivent être disponibles en même temps que la version officielle. | +| Les responsables de projet doivent avoir une relation étroite avec le projet Node.js, y compris des canaux de communication directs. | +| La méthode d'installation doit télécharger les binaires officiels fournis par le projet Node.js. | +| La méthode d'installation ne doit pas construire à partir des sources lorsque des binaires préconstruits sont disponibles, et ne doit pas non plus modifier les binaires officiels. | + +### Méthodes d'installation de la communauté + +Les méthodes d'installation communautaires incluses dans la page de téléchargement en libre-service (/download) doivent également respecter un ensemble minimum de critères : + +- _Prise en charge des versions :_\* Doit prendre en charge toutes les versions de Node.js actuellement prises en charge et qui ne sont pas en fin de vie. +- **Compatibilité avec les systèmes d'exploitation :** Doit fonctionner sur au moins un système d'exploitation officiellement pris en charge. +- **Prise en charge étendue du système d'exploitation :** Ne peut être limité à un sous-ensemble de distributions ou de versions du système d'exploitation. + - Par exemple, une méthode d'installation revendiquant la compatibilité avec "Windows" doit fonctionner sur "Windows 10", "Windows 11", et toutes leurs éditions (y compris les versions serveur). + - De même, une méthode d'installation revendiquant la compatibilité avec "Linux" doit pouvoir être installée sur toutes les distributions Linux majeures, et pas seulement sur un sous-ensemble spécifique. Elle ne peut pas s'appuyer sur des gestionnaires de paquets spécifiques à une distribution comme `apt` ou `dnf`. +- **Libre et Open Source:** Doit être libre d'utilisation et open source, ne doit pas être vendu comme un produit commercial, et ne doit pas être un service payant. diff --git a/apps/site/pages/fr/download/current.mdx b/apps/site/pages/fr/download/current.mdx index 70386163f0977..58ce516015957 100644 --- a/apps/site/pages/fr/download/current.mdx +++ b/apps/site/pages/fr/download/current.mdx @@ -17,9 +17,9 @@ title: Télécharger Node.js® </section> <section> - Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. + Lisez le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> ou <Release.BlogPostLink>article de blog</Release.BlogPostLink> pour cette version. -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. +En savoir plus sur les [versions de Node.js](/about/previous-releases), y compris le calendrier des versions et le statut LTS. Apprenez à <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">vérifier</LinkWithArrow> les SHASUMS signés. diff --git a/apps/site/pages/fr/download/index.mdx b/apps/site/pages/fr/download/index.mdx index 9002a88b086cc..c78e170b3ae53 100644 --- a/apps/site/pages/fr/download/index.mdx +++ b/apps/site/pages/fr/download/index.mdx @@ -17,9 +17,9 @@ title: Télécharger Node.js® </section> <section> - Lire le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> pour cette version. + Lisez le <Release.ChangelogLink>journal des modifications</Release.ChangelogLink> ou <Release.BlogPostLink>article de blog</Release.BlogPostLink> pour cette version. -Lire le <Release.BlogPostLink>journal des modifications</Release.BlogPostLink> pour cette version. +En savoir plus sur les [versions de Node.js](/about/previous-releases), y compris le calendrier des versions et le statut LTS. Apprenez à <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">vérifier</LinkWithArrow> les SHASUMS signés. diff --git a/apps/site/pages/ja/about/index.mdx b/apps/site/pages/ja/about/index.mdx index 5608f8f4e8211..3b5111e8bb110 100644 --- a/apps/site/pages/ja/about/index.mdx +++ b/apps/site/pages/ja/about/index.mdx @@ -52,3 +52,42 @@ Node.jsはRubyの[Event Machine](https://github.com/eventmachine/eventmachine) HTTPはNode.jsの中では第一級オブジェクトであり、ストリーミングや低レイテンシーを意識して設計されています。このためNode.jsはウェブのライブラリーやフレームワークの基盤として適しています。 Node.jsはスレッドを用いず設計されていますが、マルチコアを利用できないわけではありません。子プロセスは[`child_process.fork()`](https://nodejs.org/api/child_process.html) APIを使って作成でき、簡単に通信できるように設計されています。これと同じインターフェイスをもとに作られたのが[`cluster`](https://nodejs.org/api/cluster.html)モジュールで、プロセス間でソケットを共有することでコアの負荷分散を行えます。 + +## Node.js公式の情報源 + +Node.jsを利用する上で信頼性と安全性を確保するために、常に公式の情報源を確認してください。非公式の情報源からの電子メール、バイナリー、ダウンロード処理といったものを信用しないにしてください。 + +### Node.js公式のドメイン + +Node.jsのダウンロードと公式ドキュメントの参照は次のドメインのみを使用してください: + +- [nodejs.org](https://nodejs.org) +- [nodejs.dev](https://nodejs.dev) _(https://nodejs.org にリダイレクトされます)_ +- [iojs.org](https://iojs.org) _(https://nodejs.org にリダイレクトされます)_ + +### 公式のnpmパッケージ + +Node.jsチームは公式npmパッケージを次のスコープで管理しています: + +- [`@node-core`](https://npmjs.com/~node-core) +- [`@pkgjs`](https://npmjs.com/~pkgjs) + +さらにNode.jsチームは[`nodejs-foundation`](https://npmjs.com/~nodejs-foundation)のnpmアカウントで公開されているパッケージを管理しています。 +また、他のNode.js関連パッケージ([`undici`](https://www.npmjs.com/package/undici)のようなもの)もプロジェクトに密接に関係する貢献者によって管理されているかもしれません。 + +Node.jsチームのパッケージを利用することで公式にサポートされているNode.jsコンポーネントを利用していることが保証されます。 + +### 公式GitHub Organization + +Node.jsとその関連プロジェクトは次の公式GitHub Organizationで管理されています: + +- [nodejs](https://github.com/nodejs) +- [pkgjs](https://github.com/pkgjs) + +### 公式コミュニケーションチャンネル + +Node.jsとOpenJS Foundationはさまざまな公式チャネルやコミュニティがサポートするチャネルを通じて連携しています。参加方法の詳細は[活動への参加](https://nodejs.org/ja/about/get-involved)ページにあります。 + +### ウェブサイトの問題とダウンタイムの報告 + +Node.jsのウェブサイトで問題が発生した場合は[Node.jsウェブサイトリポジトリー](https://github.com/nodejs/nodejs.org/issues)に報告してください。障害に関するリアルタイムの情報については[Node.js Status Page](https://status.nodejs.org) をご確認ください。 diff --git a/apps/site/pages/ja/about/previous-releases.mdx b/apps/site/pages/ja/about/previous-releases.mdx index c851aa3797241..0ce3693f94f0e 100644 --- a/apps/site/pages/ja/about/previous-releases.mdx +++ b/apps/site/pages/ja/about/previous-releases.mdx @@ -47,3 +47,4 @@ Node.jsのウェブサイトではコマンドラインインターフェイス - **幅広いOSサポート:** OSのディストリビューションやバージョンのサブセットに制限されることがないこと。 - 例えば「Windows」との互換性を謳うインストール方法は「Windows 10」、「Windows 11」、およびそれらのすべてのエディション(サーバー版を含む)で機能しなければならない。 - 同様に「Linux」との互換性を謳うインストー ル方法は特定のサブセットだけでなく、すべての主要なLinuxディストリビュー ションにインストールできなければない。`apt`や`dnf`のようなディストリビューション固有のパッケージマネージャに依存することはできない。 +- **フリー&オープンソース:** 自由に利用できるオープンソースでなければならず、商用製品として販売されてはならない。また有料サービスであってもならない。 diff --git a/apps/site/snippets/es/download/n.bash b/apps/site/snippets/es/download/n.bash new file mode 100644 index 0000000000000..3ce42aee823c3 --- /dev/null +++ b/apps/site/snippets/es/download/n.bash @@ -0,0 +1,8 @@ +# Descarga e instala n y Node.js: +curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s ${props.release.major} + +# Node.js ya se instala durante n-install, pero también puedes instalarlo manualmente: +# n install ${props.release.major} + +# Verifica la versión de Node.js: +node -v # Debería mostrar "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/es/download/nvm.bash b/apps/site/snippets/es/download/nvm.bash new file mode 100644 index 0000000000000..c0f43b900d7fc --- /dev/null +++ b/apps/site/snippets/es/download/nvm.bash @@ -0,0 +1,12 @@ +# Descarga e instala nvm: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash + +# en lugar de reiniciar la shell +\. "$HOME/.nvm/nvm.sh" + +# Descarga e instala Node.js: +nvm install ${props.release.major} + +# Verifica la versión de Node.js: +node -v # Debería mostrar "${props.release.versionWithPrefix}". +nvm current # Debería mostrar "${props.release.versionWithPrefix}". diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index e759646488d47..26d75b9487c39 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -61,6 +61,7 @@ "links": { "asynchronousWork": "Travail asynchrone", "asynchronousFlowControl": "Contrôle de l'exécution asynchrone", + "discoverPromisesInNodejs": "Découvrir les promesses dans Node.js", "overviewOfBlockingVsNonBlocking": "Vue d'ensemble des opérations bloquantes vs non bloquantes", "javascriptAsynchronousProgrammingAndCallbacks": "Programmation asynchrone en JavaScript et Callbacks", "discoverJavascriptTimers": "Découvrez les minuteurs JavaScript", @@ -108,6 +109,7 @@ "links": { "diagnostics": "Diagnostique", "userJourney": "Parcours de l'utilisateur", + "understandingAndTuningMemory": "Comprendre et optimiser la mémoire", "memory": "Mémoire", "liveDebugging": "Débogage en direct", "poorPerformance": "Live debugging", From 4c7a7415a348b1fccb6952461bb36f8cae9b78ea Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Thu, 24 Apr 2025 21:51:16 +0200 Subject: [PATCH 0421/1385] hotfix: only one h1 header allowed Signed-off-by: Claudio W. <cwunder@gnome.org> --- apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md b/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md index 12c13318ddce2..fd299e8e69fcf 100644 --- a/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md +++ b/apps/site/pages/en/blog/vulnerability/march-2025-ci-incident.md @@ -67,7 +67,7 @@ As a volunteer-driven organization, we rely on people dedicating their time to w --- -# Node.js Test CI Security Incident – Notice +## Node.js Test CI Security Incident – Notice On March 21st, the Node.js project received a security report regarding our development infrastructure via [our bug bounty program](https://hackerone.com/nodejs). We immediately restricted access while implementing corrective actions. The reported issue did not impact the Node.js runtime and there is no risk to users of Node.js. No action by Node.js users is required. From 4ef944c090a56f19a9a8f420d590d37199356f5c Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Thu, 24 Apr 2025 23:23:47 +0300 Subject: [PATCH 0422/1385] feat(select): scroll buttons (#7649) * feat: select scroll buttons * docs: scroll buttons story added --- apps/site/next.config.mjs | 1 - package-lock.json | 32 ------------------- .../Common/Select/index.module.css | 8 +++++ .../Common/Select/index.stories.tsx | 7 ++++ .../ui-components/Common/Select/index.tsx | 22 ++++++------- packages/ui-components/package.json | 1 - 6 files changed, 25 insertions(+), 46 deletions(-) diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index 19b731e36d388..955a4926d8f44 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -84,7 +84,6 @@ const nextConfig = { '@radix-ui/react-accessible-icon', '@radix-ui/react-dropdown-menu', '@radix-ui/react-label', - '@radix-ui/react-scroll-area', '@radix-ui/react-select', '@radix-ui/react-slot', '@radix-ui/react-tabs', diff --git a/package-lock.json b/package-lock.json index f91b24ed5ea71..a56d0d3c193a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4291,37 +4291,6 @@ } } }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.3.tgz", - "integrity": "sha512-l7+NNBfBYYJa9tNqVcP2AGvxdE3lmE6kFTBXdvHgUaZuy+4wGCL1Cl2AfaR7RKyimj7lZURGLwFO59k4eBnDJQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "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-select": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.6.tgz", @@ -21239,7 +21208,6 @@ "@radix-ui/react-dialog": "^1.1.7", "@radix-ui/react-dropdown-menu": "~2.1.6", "@radix-ui/react-label": "~2.1.2", - "@radix-ui/react-scroll-area": "~1.2.3", "@radix-ui/react-select": "~2.1.6", "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", diff --git a/packages/ui-components/Common/Select/index.module.css b/packages/ui-components/Common/Select/index.module.css index 55d76484b0989..ed4f05e834bdb 100644 --- a/packages/ui-components/Common/Select/index.module.css +++ b/packages/ui-components/Common/Select/index.module.css @@ -151,3 +151,11 @@ rounded; } } + +.scrollIcon { + @apply mx-auto + my-1 + size-4 + text-neutral-700 + dark:text-neutral-200; +} diff --git a/packages/ui-components/Common/Select/index.stories.tsx b/packages/ui-components/Common/Select/index.stories.tsx index 23a1bede20d45..7af58fe7c5bee 100644 --- a/packages/ui-components/Common/Select/index.stories.tsx +++ b/packages/ui-components/Common/Select/index.stories.tsx @@ -21,6 +21,13 @@ export const WithoutLabel: Story = { }, }; +export const WithScrollButtons: Story = { + args: { + values: Array.from({ length: 100 }, (_, i) => `Item ${i}`), + defaultValue: 'Item 50', + }, +}; + export const DropdownLabel: Story = { args: { values: [ diff --git a/packages/ui-components/Common/Select/index.tsx b/packages/ui-components/Common/Select/index.tsx index 88df36658e897..66060a782dbe1 100644 --- a/packages/ui-components/Common/Select/index.tsx +++ b/packages/ui-components/Common/Select/index.tsx @@ -1,7 +1,6 @@ 'use client'; -import { ChevronDownIcon } from '@heroicons/react/24/outline'; -import * as ScrollPrimitive from '@radix-ui/react-scroll-area'; +import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'; import * as SelectPrimitive from '@radix-ui/react-select'; import classNames from 'classnames'; import { useEffect, useId, useMemo, useState } from 'react'; @@ -168,16 +167,15 @@ const Select = <T extends string>({ [styles.inline]: inline, })} > - <ScrollPrimitive.Root type="auto"> - <SelectPrimitive.Viewport> - <ScrollPrimitive.Viewport> - {memoizedMappedValues} - </ScrollPrimitive.Viewport> - </SelectPrimitive.Viewport> - <ScrollPrimitive.Scrollbar orientation="vertical"> - <ScrollPrimitive.Thumb /> - </ScrollPrimitive.Scrollbar> - </ScrollPrimitive.Root> + <SelectPrimitive.ScrollUpButton> + <ChevronUpIcon className={styles.scrollIcon} /> + </SelectPrimitive.ScrollUpButton> + <SelectPrimitive.Viewport> + {memoizedMappedValues} + </SelectPrimitive.Viewport> + <SelectPrimitive.ScrollDownButton> + <ChevronDownIcon className={styles.scrollIcon} /> + </SelectPrimitive.ScrollDownButton> </SelectPrimitive.Content> </SelectPrimitive.Portal> </SelectPrimitive.Root> diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index c8631c59943e3..4b76901fbed46 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -21,7 +21,6 @@ "@radix-ui/react-dialog": "^1.1.7", "@radix-ui/react-dropdown-menu": "~2.1.6", "@radix-ui/react-label": "~2.1.2", - "@radix-ui/react-scroll-area": "~1.2.3", "@radix-ui/react-select": "~2.1.6", "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", From 12e56dfb77dfdfac9d93f74af9ff4a84770a4f77 Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Thu, 24 Apr 2025 22:47:25 +0200 Subject: [PATCH 0423/1385] chore: add banners (#7685) * chore: add banners * Update apps/site/site.json Co-authored-by: Matt Cowley <me@mattcowley.co.uk> Signed-off-by: Claudio W. <cwunder@gnome.org> --------- Signed-off-by: Claudio W. <cwunder@gnome.org> Co-authored-by: Matt Cowley <me@mattcowley.co.uk> --- apps/site/site.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/site/site.json b/apps/site/site.json index 6f23ba06f744d..09f5fd55f0113 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -28,21 +28,21 @@ ], "websiteBanners": { "index": { - "startDate": "2025-03-17T00:00:00.000Z", - "endDate": "2025-04-17T00:00:00.000Z", - "text": "Node.js launches an official Discord community", - "link": "https://nodejs.org/en/blog/announcements/official-discord-launch-announcement", - "type": "default" + "startDate": "2025-04-01T00:00:00.000Z", + "endDate": "2025-06-01T00:00:00.000Z", + "text": "Node.js v18 is reaching End-Of-Life on April 30, 2025.", + "link": "https://nodejs.org/en/about/previous-releases#release-schedule", + "type": "warning" } }, "websiteBadges": { "index": { - "startDate": "2024-11-01T00:00:00.000Z", - "endDate": "2024-12-31T00:00:00.000Z", + "startDate": "2025-04-01T00:00:00.000Z", + "endDate": "2025-07-01T00:00:00.000Z", "kind": "default", - "title": "Read", - "text": "Node.js Collab Summit Report", - "link": "https://nodejs.org/en/blog/events/collab-summit-2024-dublin" + "title": "JSConf", + "text": "General Admission Tickets are on sale now!", + "link": "https://events.linuxfoundation.org/jsconf-north-america" } } } From e19099e2562f6f6e2e908acb1b5eda6e1a6fed1e Mon Sep 17 00:00:00 2001 From: Jonathan Netley <jpbnetley@gmail.com> Date: Fri, 25 Apr 2025 15:58:40 +0200 Subject: [PATCH 0424/1385] docs: nvm references latest version (#7684) --- apps/site/snippets/en/download/nvm.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/snippets/en/download/nvm.bash b/apps/site/snippets/en/download/nvm.bash index 1d26f29dae9e5..3fa80ca3821a0 100644 --- a/apps/site/snippets/en/download/nvm.bash +++ b/apps/site/snippets/en/download/nvm.bash @@ -1,5 +1,5 @@ # Download and install nvm: -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash # in lieu of restarting the shell \. "$HOME/.nvm/nvm.sh" From e082e908135831722eaf8948c89011f1c56c6eea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= <arauujogui@gmail.com> Date: Mon, 28 Apr 2025 05:14:45 -0300 Subject: [PATCH 0425/1385] fix: lint-snippets glob (#7686) * fix: lint snippets glob * fix: snippet syntax --- apps/site/pages/en/learn/test-runner/using-test-runner.md | 7 +++++-- apps/site/scripts/lint-snippets/index.mjs | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/site/pages/en/learn/test-runner/using-test-runner.md b/apps/site/pages/en/learn/test-runner/using-test-runner.md index 155e710b8eba0..4d634b52b8c06 100644 --- a/apps/site/pages/en/learn/test-runner/using-test-runner.md +++ b/apps/site/pages/en/learn/test-runner/using-test-runner.md @@ -77,12 +77,15 @@ import { test } from 'node:test'; import { detectOsInUserAgent } from '…'; const userAgents = [ - { ua: /* … */, os: 'WIN' }, + { + ua: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.3', + os: 'WIN', + }, // … ]; test('Detect OS via user-agent', { concurrency: true }, t => { - for (const { os, ua } from userAgents) { + for (const { os, ua } of userAgents) { t.test(ua, () => assert.equal(detectOsInUserAgent(ua), os)); } }); diff --git a/apps/site/scripts/lint-snippets/index.mjs b/apps/site/scripts/lint-snippets/index.mjs index fd155ce33a774..266dba933555b 100755 --- a/apps/site/scripts/lint-snippets/index.mjs +++ b/apps/site/scripts/lint-snippets/index.mjs @@ -79,10 +79,12 @@ function reportErrors(errors) { // Get all markdown files const filePaths = await glob('**/*.md', { root: process.cwd(), - cwd: 'apps/site/pages/en/learn/', + cwd: 'pages/en/learn/', absolute: true, }); +console.log(`Found ${filePaths.length} markdown files.`); + // Validate all files and collect errors const allErrors = await Promise.all(filePaths.map(validateFile)); From c029cea9fe4036a0c85abcc55392c10ccabfc19c Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Mon, 28 Apr 2025 16:10:32 +0200 Subject: [PATCH 0426/1385] [automated]: crowdin sync (#7687) * 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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- apps/site/pages/uk/download/current.mdx | 4 ++-- apps/site/pages/uk/download/index.mdx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/site/pages/uk/download/current.mdx b/apps/site/pages/uk/download/current.mdx index 7b9e6e28fa89e..26bc2635e4ffa 100644 --- a/apps/site/pages/uk/download/current.mdx +++ b/apps/site/pages/uk/download/current.mdx @@ -17,9 +17,9 @@ title: Завантажити Node.js® </section> <section> - Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. + Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> або <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. +Дізнайтеся більше про [релізи Node.js](/about/previous-releases), у тому числі про розклад релізів та статус підтримки. Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">перевірити</LinkWithArrow> підписані SHASUMS. diff --git a/apps/site/pages/uk/download/index.mdx b/apps/site/pages/uk/download/index.mdx index 7b9e6e28fa89e..26bc2635e4ffa 100644 --- a/apps/site/pages/uk/download/index.mdx +++ b/apps/site/pages/uk/download/index.mdx @@ -17,9 +17,9 @@ title: Завантажити Node.js® </section> <section> - Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> цієї версії. + Читайте <Release.ChangelogLink>список змін</Release.ChangelogLink> або <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. -Читайте <Release.BlogPostLink>публікацію в блозі</Release.BlogPostLink> про цю версію. +Дізнайтеся більше про [релізи Node.js](/about/previous-releases), у тому числі про розклад релізів та статус підтримки. Дізнайтеся, як <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">перевірити</LinkWithArrow> підписані SHASUMS. From 9c2357dd3fbdcda25839f28d6eec66b336ac7c7f Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Mon, 28 Apr 2025 12:29:25 -0400 Subject: [PATCH 0427/1385] feat(meta): add learn article issue template (#7680) * feat(meta): add learn article issue template * Newline * fixup! incorrect template format Signed-off-by: Aviv Keller <me@aviv.sh> * dd content Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/ISSUE_TEMPLATE/03-article-issue.yml | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/03-article-issue.yml diff --git a/.github/ISSUE_TEMPLATE/03-article-issue.yml b/.github/ISSUE_TEMPLATE/03-article-issue.yml new file mode 100644 index 0000000000000..a30127b2af336 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03-article-issue.yml @@ -0,0 +1,28 @@ +name: Report an issue on a Learn article +description: 'Found an error or something unclear in one of our Learn articles? Let us know!' +labels: [bug, content, learn] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to help improve the Node.js learning experience! + Before submitting, please check if there's already an existing issue that matches yours. + + - type: input + attributes: + label: 'Affected URL' + placeholder: 'https://nodejs.org/en/learn/some-article' + description: 'Please include the full URL of the article where the issue exists.' + validations: + required: true + + - type: textarea + attributes: + label: 'Describe the issue in detail:' + placeholder: | + 1. What is wrong or unclear? + 2. What did you expect to see? + 3. Any suggestions or corrections? + description: 'Tell us what you noticed and how we can improve the article.' + validations: + required: true From e2828b899bf649de548ff164d09cf6379e45450e Mon Sep 17 00:00:00 2001 From: keke <60368137+kekekuli@users.noreply.github.com> Date: Tue, 29 Apr 2025 00:36:18 +0800 Subject: [PATCH 0428/1385] fix(learn): improve the learn Asynchronous Work doc (#7682) * fix: improve 'Understanding process.nextTick()' page example code. * feat: add summary for understanding processnexttick doc * fix: add a link for the "order of events" * fix: use more clear words to summary * fix: use doc link instead of example code * fix: change the summary words * fix: fix error link --- .../understanding-processnexttick.md | 29 +------------------ 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/understanding-processnexttick.md b/apps/site/pages/en/learn/asynchronous-work/understanding-processnexttick.md index d37983c022ad4..2b71a57b2eb2e 100644 --- a/apps/site/pages/en/learn/asynchronous-work/understanding-processnexttick.md +++ b/apps/site/pages/en/learn/asynchronous-work/understanding-processnexttick.md @@ -25,31 +25,4 @@ Calling `setTimeout(() => {}, 0)` will execute the function at the end of next t Use `nextTick()` when you want to make sure that in the next event loop iteration that code is already executed. -#### An Example of the order of events: - -```js -console.log('Hello => number 1'); - -setImmediate(() => { - console.log('Running before the timeout => number 3'); -}); - -setTimeout(() => { - console.log('The timeout running last => number 4'); -}, 0); - -process.nextTick(() => { - console.log('Running at next tick => number 2'); -}); -``` - -#### Example output: - -```bash -Hello => number 1 -Running at next tick => number 2 -Running before the timeout => number 3 -The timeout running last => number 4 -``` - -The exact output may differ from run to run. +To learn more about the order of execution and how the event loop works, check out [the dedicated article](https://nodejs.org/en/learn/asynchronous-work/event-loop-timers-and-nexttick) From 0fec72281650104b638d898751823932edad8191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= <arauujogui@gmail.com> Date: Tue, 29 Apr 2025 09:31:42 -0300 Subject: [PATCH 0429/1385] feat: redesign the previous releases page (#7630) * feat(releaseData): add minorVersions prop * feat: create draft minor releases table modal * refactor: initials improvements * refactor: mv releasemodal component to correct dir * fix: release modal translation keys * feat: align button group * chore: rename badge component to badgegroup * refactor(BadgeGroup): use badge component * feat(DownloadReleasesTable): add status badge * feat(Modal): make subheader optional * refactor: create kind types * feat(ui-components): create separator component * feat(site): some improvements * refactor: nit * feat(site): add eol alerts * fix: remove incorrect anchor href * feat(ui-components): add smaller badge size * feat(site): add maintenance release status * feat(site): make codename prominent * chore: fix vertical separator story * refactor: some minor changes * fix: badgegroup references * refactor: small nit * feat: add minor versions release date * feat: smaller minor releases table * fix: oops wrong req * feat: create release overview component * fix: minor release links * feat(ui-components): add badge border on dark mode * chore: fix stylelint * chore: fix dep range * feat: format datetimes * refactor: small nits * fix: release announce links * refactor: remove comment * feat: use npm icon --- .../Downloads/DownloadReleasesTable.tsx | 61 --------- .../DownloadReleasesTable/DetailsButton.tsx | 30 +++++ .../Downloads/DownloadReleasesTable/index.tsx | 55 ++++++++ .../MinorReleasesTable/index.module.css | 8 ++ .../Downloads/MinorReleasesTable/index.tsx | 64 +++++++++ .../Downloads/ReleaseModal/index.tsx | 62 +++++++++ .../ReleaseOverview/index.module.css | 38 ++++++ .../Downloads/ReleaseOverview/index.tsx | 81 ++++++++++++ .../{withBadge.tsx => withBadgeGroup.tsx} | 10 +- apps/site/layouts/About.tsx | 5 +- .../site/next-data/generators/releaseData.mjs | 122 ++++++++++++------ apps/site/next.mdx.use.mjs | 4 +- apps/site/pages/en/index.mdx | 2 +- apps/site/pages/es/index.mdx | 2 +- apps/site/pages/fa/index.mdx | 2 +- apps/site/pages/fr/index.mdx | 2 +- apps/site/pages/id/index.mdx | 2 +- apps/site/pages/ja/index.mdx | 2 +- apps/site/pages/ko/index.mdx | 2 +- apps/site/pages/pt/index.mdx | 2 +- apps/site/pages/tr/index.mdx | 2 +- apps/site/pages/uk/index.mdx | 2 +- apps/site/pages/zh-cn/index.mdx | 2 +- apps/site/pages/zh-tw/index.mdx | 2 +- apps/site/providers/releaseModalProvider.tsx | 45 +++++++ apps/site/types/releases.ts | 18 ++- package-lock.json | 80 ++++++++++++ packages/i18n/locales/en.json | 27 +++- .../Common/Badge/index.module.css | 97 +++----------- .../Common/Badge/index.stories.tsx | 23 ++-- packages/ui-components/Common/Badge/index.tsx | 45 ++++--- .../Common/BadgeGroup/index.module.css | 77 +++++++++++ .../Common/BadgeGroup/index.stories.tsx | 35 +++++ .../ui-components/Common/BadgeGroup/index.tsx | 35 +++++ .../Common/Modal/index.module.css | 2 +- packages/ui-components/Common/Modal/index.tsx | 10 +- .../Common/Separator/index.module.css | 16 +++ .../Common/Separator/index.stories.tsx | 32 +++++ .../ui-components/Common/Separator/index.tsx | 27 ++++ packages/ui-components/package.json | 1 + 40 files changed, 891 insertions(+), 243 deletions(-) delete mode 100644 apps/site/components/Downloads/DownloadReleasesTable.tsx create mode 100644 apps/site/components/Downloads/DownloadReleasesTable/DetailsButton.tsx create mode 100644 apps/site/components/Downloads/DownloadReleasesTable/index.tsx create mode 100644 apps/site/components/Downloads/MinorReleasesTable/index.module.css create mode 100644 apps/site/components/Downloads/MinorReleasesTable/index.tsx create mode 100644 apps/site/components/Downloads/ReleaseModal/index.tsx create mode 100644 apps/site/components/Downloads/ReleaseOverview/index.module.css create mode 100644 apps/site/components/Downloads/ReleaseOverview/index.tsx rename apps/site/components/{withBadge.tsx => withBadgeGroup.tsx} (69%) create mode 100644 apps/site/providers/releaseModalProvider.tsx create mode 100644 packages/ui-components/Common/BadgeGroup/index.module.css create mode 100644 packages/ui-components/Common/BadgeGroup/index.stories.tsx create mode 100644 packages/ui-components/Common/BadgeGroup/index.tsx create mode 100644 packages/ui-components/Common/Separator/index.module.css create mode 100644 packages/ui-components/Common/Separator/index.stories.tsx create mode 100644 packages/ui-components/Common/Separator/index.tsx diff --git a/apps/site/components/Downloads/DownloadReleasesTable.tsx b/apps/site/components/Downloads/DownloadReleasesTable.tsx deleted file mode 100644 index 0c0acff74e59c..0000000000000 --- a/apps/site/components/Downloads/DownloadReleasesTable.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { getTranslations } from 'next-intl/server'; -import type { FC } from 'react'; - -import LinkWithArrow from '@/components/LinkWithArrow'; -import getReleaseData from '@/next-data/releaseData'; -import { BASE_CHANGELOG_URL } from '@/next.constants.mjs'; -import { getNodeApiLink } from '@/util/getNodeApiLink'; - -// This is a React Async Server Component -// Note that Hooks cannot be used in a RSC async component -// Async Components do not get re-rendered at all. -const DownloadReleasesTable: FC = async () => { - const releaseData = await getReleaseData(); - - const t = await getTranslations(); - - return ( - <table id="tbVersions" className="download-table full-width"> - <thead> - <tr> - <th>{t('components.downloadReleasesTable.version')}</th> - <th>{t('components.downloadReleasesTable.nApiVersion')}</th> - <th>{t('components.downloadReleasesTable.codename')}</th> - <th>{t('components.downloadReleasesTable.releaseDate')}</th> - <th>{t('components.downloadReleasesTable.npmVersion')}</th> - <th></th> - </tr> - </thead> - <tbody> - {releaseData.map(release => ( - <tr key={release.major}> - <td data-label="Version">v{release.version}</td> - <td data-label="Modules">v{release.modules}</td> - <td data-label="LTS">{release.codename || '-'}</td> - <td data-label="Date"> - <time>{release.releaseDate}</time> - </td> - <td data-label="npm">v{release.npm}</td> - <td className="download-table-last"> - <LinkWithArrow - href={`https://nodejs.org/download/release/${release.versionWithPrefix}/`} - > - {t('components.downloadReleasesTable.actions.releases')} - </LinkWithArrow> - - <LinkWithArrow href={`${BASE_CHANGELOG_URL}${release.version}`}> - {t('components.downloadReleasesTable.actions.changelog')} - </LinkWithArrow> - - <LinkWithArrow href={getNodeApiLink(release.versionWithPrefix)}> - {t('components.downloadReleasesTable.actions.docs')} - </LinkWithArrow> - </td> - </tr> - ))} - </tbody> - </table> - ); -}; - -export default DownloadReleasesTable; diff --git a/apps/site/components/Downloads/DownloadReleasesTable/DetailsButton.tsx b/apps/site/components/Downloads/DownloadReleasesTable/DetailsButton.tsx new file mode 100644 index 0000000000000..3c20ba738e4d4 --- /dev/null +++ b/apps/site/components/Downloads/DownloadReleasesTable/DetailsButton.tsx @@ -0,0 +1,30 @@ +'use client'; + +import { useTranslations } from 'next-intl'; +import type { FC } from 'react'; +import { use } from 'react'; + +import LinkWithArrow from '@/components/LinkWithArrow'; +import { ReleaseModalContext } from '@/providers/releaseModalProvider'; +import type { NodeRelease } from '@/types'; + +type DetailsButtonProps = { + versionData: NodeRelease; +}; + +const DetailsButton: FC<DetailsButtonProps> = ({ versionData }) => { + const t = useTranslations('components.downloadReleasesTable'); + + const { openModal } = use(ReleaseModalContext); + + return ( + <LinkWithArrow + className="cursor-pointer" + onClick={() => openModal(versionData)} + > + {t('details')} + </LinkWithArrow> + ); +}; + +export default DetailsButton; diff --git a/apps/site/components/Downloads/DownloadReleasesTable/index.tsx b/apps/site/components/Downloads/DownloadReleasesTable/index.tsx new file mode 100644 index 0000000000000..460e4e29eab2e --- /dev/null +++ b/apps/site/components/Downloads/DownloadReleasesTable/index.tsx @@ -0,0 +1,55 @@ +import Badge from '@node-core/ui-components/Common/Badge'; +import { getTranslations } from 'next-intl/server'; +import type { FC } from 'react'; + +import FormattedTime from '@/components/Common/FormattedTime'; +import DetailsButton from '@/components/Downloads/DownloadReleasesTable/DetailsButton'; +import getReleaseData from '@/next-data/releaseData'; + +const DownloadReleasesTable: FC = async () => { + const releaseData = await getReleaseData(); + + const t = await getTranslations(); + + return ( + <table id="tbVersions" className="download-table full-width"> + <thead> + <tr> + <th>{t('components.downloadReleasesTable.version')}</th> + <th>{t('components.downloadReleasesTable.codename')}</th> + <th>{t('components.downloadReleasesTable.firstReleased')}</th> + <th>{t('components.downloadReleasesTable.lastUpdated')}</th> + <th>{t('components.downloadReleasesTable.status')}</th> + <th></th> + </tr> + </thead> + <tbody> + {releaseData.map(release => ( + <tr key={release.major}> + <td data-label="Version">v{release.major}</td> + <td data-label="LTS">{release.codename || '-'}</td> + <td data-label="Date"> + <FormattedTime date={release.currentStart} /> + </td> + <td data-label="Date"> + <FormattedTime date={release.releaseDate} /> + </td> + <td data-label="Status"> + <Badge + kind={release.status === 'End-of-life' ? 'warning' : 'default'} + size="small" + > + {release.status} + </Badge> + </td> + <td className="download-table-last"> + <DetailsButton versionData={release} /> + </td> + </tr> + ))} + </tbody> + </table> + ); +}; + +export default DownloadReleasesTable; diff --git a/apps/site/components/Downloads/MinorReleasesTable/index.module.css b/apps/site/components/Downloads/MinorReleasesTable/index.module.css new file mode 100644 index 0000000000000..5740edadd7de7 --- /dev/null +++ b/apps/site/components/Downloads/MinorReleasesTable/index.module.css @@ -0,0 +1,8 @@ +@reference "../../../styles/index.css"; + +.links { + @apply flex + h-4 + items-center + gap-2; +} diff --git a/apps/site/components/Downloads/MinorReleasesTable/index.tsx b/apps/site/components/Downloads/MinorReleasesTable/index.tsx new file mode 100644 index 0000000000000..0fde534416cbf --- /dev/null +++ b/apps/site/components/Downloads/MinorReleasesTable/index.tsx @@ -0,0 +1,64 @@ +'use client'; + +import Separator from '@node-core/ui-components/Common/Separator'; +import { useTranslations } from 'next-intl'; +import type { FC } from 'react'; + +import Link from '@/components/Link'; +import { BASE_CHANGELOG_URL } from '@/next.constants.mjs'; +import type { MinorVersion } from '@/types'; +import { getNodeApiLink } from '@/util/getNodeApiLink'; + +import styles from './index.module.css'; + +type MinorReleasesTableProps = { + releases: Array<MinorVersion>; +}; + +export const MinorReleasesTable: FC<MinorReleasesTableProps> = ({ + releases, +}) => { + const t = useTranslations('components.minorReleasesTable'); + + return ( + <table> + <thead> + <tr> + <th>{t('version')}</th> + <th>{t('links')}</th> + </tr> + </thead> + <tbody> + {releases.map(release => ( + <tr key={release.version}> + <td>v{release.version}</td> + <td> + <div className={styles.links}> + <Link + kind="neutral" + href={`https://nodejs.org/download/release/v${release.version}/`} + > + {t('actions.release')} + </Link> + <Separator orientation="vertical" /> + <Link + kind="neutral" + href={`${BASE_CHANGELOG_URL}${release.version}`} + > + {t('actions.changelog')} + </Link> + <Separator orientation="vertical" /> + <Link + kind="neutral" + href={getNodeApiLink(`v${release.version}`)} + > + {t('actions.docs')} + </Link> + </div> + </td> + </tr> + ))} + </tbody> + </table> + ); +}; diff --git a/apps/site/components/Downloads/ReleaseModal/index.tsx b/apps/site/components/Downloads/ReleaseModal/index.tsx new file mode 100644 index 0000000000000..23b50e785739d --- /dev/null +++ b/apps/site/components/Downloads/ReleaseModal/index.tsx @@ -0,0 +1,62 @@ +import AlertBox from '@node-core/ui-components/Common/AlertBox'; +import Modal from '@node-core/ui-components/Common/Modal'; +import { useTranslations } from 'next-intl'; +import type { FC } from 'react'; + +import { MinorReleasesTable } from '@/components/Downloads/MinorReleasesTable'; +import { ReleaseOverview } from '@/components/Downloads/ReleaseOverview'; +import LinkWithArrow from '@/components/LinkWithArrow'; +import type { NodeRelease } from '@/types'; + +type ReleaseModalProps = { + isOpen: boolean; + closeModal: () => void; + release: NodeRelease; +}; + +const ReleaseModal: FC<ReleaseModalProps> = ({ + isOpen, + closeModal, + release, +}) => { + const t = useTranslations(); + + const modalHeadingKey = release.codename + ? 'components.releaseModal.title' + : 'components.releaseModal.titleWithoutCodename'; + + const modalHeading = t(modalHeadingKey, { + version: release.major, + codename: release.codename ?? '', + }); + + return ( + <Modal open={isOpen} onOpenChange={closeModal} heading={modalHeading}> + {release.status === 'End-of-life' && ( + <AlertBox + title={t('components.common.alertBox.warning')} + level="warning" + size="small" + > + {t('components.releaseModal.unsupportedVersionWarning')} + </AlertBox> + )} + + {release.releaseAnnounceLink && ( + <LinkWithArrow href={release.releaseAnnounceLink}> + {t('components.releaseModal.releaseAnnouncement')} + </LinkWithArrow> + )} + + <h5>{t('components.releaseModal.overview')}</h5> + + <ReleaseOverview release={release} /> + + <h5>{t('components.releaseModal.minorVersions')}</h5> + + <MinorReleasesTable releases={release.minorVersions} /> + </Modal> + ); +}; + +export default ReleaseModal; diff --git a/apps/site/components/Downloads/ReleaseOverview/index.module.css b/apps/site/components/Downloads/ReleaseOverview/index.module.css new file mode 100644 index 0000000000000..5043967ac27f1 --- /dev/null +++ b/apps/site/components/Downloads/ReleaseOverview/index.module.css @@ -0,0 +1,38 @@ +@reference "../../../styles/index.css"; + +.root { + @apply rounded + border + border-neutral-200 + p-4 + text-neutral-900 + dark:border-neutral-800 + dark:text-white; + + .container { + @apply grid + grid-cols-2 + gap-4 + lg:grid-cols-3; + } + + .item { + @apply flex + items-center + gap-2; + + h1 { + @apply text-sm + font-semibold; + } + + h2 { + @apply text-xs + font-normal; + } + + svg { + @apply size-4; + } + } +} diff --git a/apps/site/components/Downloads/ReleaseOverview/index.tsx b/apps/site/components/Downloads/ReleaseOverview/index.tsx new file mode 100644 index 0000000000000..c444908c99586 --- /dev/null +++ b/apps/site/components/Downloads/ReleaseOverview/index.tsx @@ -0,0 +1,81 @@ +import { + CalendarIcon, + ClockIcon, + CodeBracketSquareIcon, + Square3Stack3DIcon, +} from '@heroicons/react/24/outline'; +import NpmIcon from '@node-core/ui-components/Icons/PackageManager/Npm'; +import { useTranslations } from 'next-intl'; +import type { FC, ReactNode, SVGProps } from 'react'; + +import FormattedTime from '@/components/Common/FormattedTime'; +import type { NodeRelease } from '@/types'; + +import styles from './index.module.css'; + +type ItemProps = { + Icon: FC<SVGProps<SVGSVGElement>>; + title: ReactNode; + subtitle: ReactNode; +}; + +const Item: FC<ItemProps> = ({ Icon, title, subtitle }) => { + return ( + <div className={styles.item}> + <Icon /> + <div> + <h2>{subtitle}</h2> + <h1>{title}</h1> + </div> + </div> + ); +}; + +type ReleaseOverviewProps = { + release: NodeRelease; +}; + +export const ReleaseOverview: FC<ReleaseOverviewProps> = ({ release }) => { + const t = useTranslations(); + + return ( + <div className={styles.root}> + <div className={styles.container}> + <Item + Icon={CalendarIcon} + title={<FormattedTime date={release.currentStart} />} + subtitle={t('components.releaseOverview.firstReleased')} + /> + <Item + Icon={ClockIcon} + title={<FormattedTime date={release.releaseDate} />} + subtitle={t('components.releaseOverview.lastUpdated')} + /> + <Item + Icon={Square3Stack3DIcon} + title={release.minorVersions.length} + subtitle={t('components.releaseOverview.minorVersions')} + /> + {release.modules && ( + <Item + Icon={CodeBracketSquareIcon} + title={`v${release.modules}`} + subtitle={t('components.releaseOverview.nApiVersion')} + /> + )} + {release.npm && ( + <Item + Icon={NpmIcon} + title={`v${release.npm}`} + subtitle={t('components.releaseOverview.npmVersion')} + /> + )} + <Item + Icon={CodeBracketSquareIcon} + title={`v${release.v8}`} + subtitle={t('components.releaseOverview.v8Version')} + /> + </div> + </div> + ); +}; diff --git a/apps/site/components/withBadge.tsx b/apps/site/components/withBadgeGroup.tsx similarity index 69% rename from apps/site/components/withBadge.tsx rename to apps/site/components/withBadgeGroup.tsx index 7b91c84c373c5..4047f3af8ec1c 100644 --- a/apps/site/components/withBadge.tsx +++ b/apps/site/components/withBadgeGroup.tsx @@ -1,27 +1,27 @@ -import Badge from '@node-core/ui-components/Common/Badge'; +import BadgeGroup from '@node-core/ui-components/Common/BadgeGroup'; import type { FC } from 'react'; import Link from '@/components/Link'; import { siteConfig } from '@/next.json.mjs'; import { dateIsBetween } from '@/util/dateUtils'; -const WithBadge: FC<{ section: string }> = ({ section }) => { +const WithBadgeGroup: FC<{ section: string }> = ({ section }) => { const badge = siteConfig.websiteBadges[section]; if (badge && dateIsBetween(badge.startDate, badge.endDate)) { return ( - <Badge + <BadgeGroup as={Link} badgeText={badge.title} kind={badge.kind} href={badge.link} > {badge.text} - </Badge> + </BadgeGroup> ); } return null; }; -export default WithBadge; +export default WithBadgeGroup; diff --git a/apps/site/layouts/About.tsx b/apps/site/layouts/About.tsx index 5599ecbccfda3..7deab417f4fae 100644 --- a/apps/site/layouts/About.tsx +++ b/apps/site/layouts/About.tsx @@ -6,9 +6,10 @@ import WithMetaBar from '@/components/withMetaBar'; import WithNavBar from '@/components/withNavBar'; import WithSidebar from '@/components/withSidebar'; import ArticleLayout from '@/layouts/Article'; +import { ReleaseModalProvider } from '@/providers/releaseModalProvider'; const AboutLayout: FC<PropsWithChildren> = ({ children }) => ( - <> + <ReleaseModalProvider> <WithNavBar /> <ArticleLayout> @@ -24,7 +25,7 @@ const AboutLayout: FC<PropsWithChildren> = ({ children }) => ( </ArticleLayout> <WithFooter /> - </> + </ReleaseModalProvider> ); export default AboutLayout; diff --git a/apps/site/next-data/generators/releaseData.mjs b/apps/site/next-data/generators/releaseData.mjs index d04ced8340e8a..3db21e4166cf1 100644 --- a/apps/site/next-data/generators/releaseData.mjs +++ b/apps/site/next-data/generators/releaseData.mjs @@ -1,15 +1,20 @@ 'use strict'; import nodevu from '@nodevu/core'; +import { glob } from 'glob'; // Gets the appropriate release status for each major release const getNodeReleaseStatus = (now, support) => { - const { endOfLife, ltsStart, currentStart } = support; + const { endOfLife, maintenanceStart, ltsStart, currentStart } = support; if (endOfLife && now >= new Date(endOfLife)) { return 'End-of-life'; } + if (maintenanceStart && now >= new Date(maintenanceStart)) { + return 'Maintenance'; + } + if (ltsStart && now >= new Date(ltsStart)) { return 'LTS'; } @@ -27,47 +32,80 @@ const getNodeReleaseStatus = (now, support) => { * * @returns {Promise<Array<import('../../types').NodeRelease>>} */ -const generateReleaseData = () => { - return nodevu({ fetch: fetch }).then(nodevuOutput => { - // Filter out those without documented support - // Basically those not in schedule.json - const majors = Object.values(nodevuOutput).filter(major => !!major.support); - - const nodeReleases = majors.map(major => { - const [latestVersion] = Object.values(major.releases); - - const support = { - currentStart: major.support.phases.dates.start, - ltsStart: major.support.phases.dates.lts, - maintenanceStart: major.support.phases.dates.maintenance, - endOfLife: major.support.phases.dates.end, - }; - - // Get the major release status based on our Release Schedule - const status = getNodeReleaseStatus(new Date(), support); - - return { - ...support, - status, - major: latestVersion.semver.major, - version: latestVersion.semver.raw, - versionWithPrefix: `v${latestVersion.semver.raw}`, - codename: major.support.codename || '', - isLts: status === 'LTS', - npm: latestVersion.dependencies.npm || '', - v8: latestVersion.dependencies.v8 || '', - releaseDate: latestVersion.releaseDate || '', - modules: latestVersion.modules.version || '', - }; - }); - - // nodevu returns duplicated v0.x versions (v0.12, v0.10, ...). - // This behavior seems intentional as the case is hardcoded in nodevu, - // see https://github.com/cutenode/nodevu/blob/0c8538c70195fb7181e0a4d1eeb6a28e8ed95698/core/index.js#L24. - // This line ignores those duplicated versions and takes the latest - // v0.x version (v0.12.18). It is also consistent with the legacy - // nodejs.org implementation. - return nodeReleases.filter(r => r.major !== 0 || r.version === '0.12.18'); +const generateReleaseData = async () => { + const releaseAnnouncements = await glob('**/*-release-announce.md', { + root: process.cwd(), + cwd: 'pages/en/blog/announcements/', + absolute: false, + }); + + console.log('Release Announcement:', process.cwd(), releaseAnnouncements); + + const nodevuOutput = await nodevu({ fetch: fetch }); + + const majors = Object.entries(nodevuOutput).filter( + ([version, { support }]) => { + // Filter out those without documented support + // Basically those not in schedule.json + if (!support) { + return false; + } + + // nodevu returns duplicated v0.x versions (v0.12, v0.10, ...). + // This behavior seems intentional as the case is hardcoded in nodevu, + // see https://github.com/cutenode/nodevu/blob/0c8538c70195fb7181e0a4d1eeb6a28e8ed95698/core/index.js#L24. + // This line ignores those duplicated versions and takes the latest + // v0.x version (v0.12.18). It is also consistent with the legacy + // nodejs.org implementation. + if (version.startsWith('v0.') && version !== 'v0.12') { + return false; + } + + return true; + } + ); + + return majors.map(([, major]) => { + const [latestVersion] = Object.values(major.releases); + + const support = { + currentStart: major.support.phases.dates.start, + ltsStart: major.support.phases.dates.lts, + maintenanceStart: major.support.phases.dates.maintenance, + endOfLife: major.support.phases.dates.end, + }; + + // Get the major release status based on our Release Schedule + const status = getNodeReleaseStatus(new Date(), support); + + const minorVersions = Object.entries(major.releases).map(([, release]) => ({ + version: release.semver.raw, + releaseDate: release.releaseDate, + })); + + const majorVersion = latestVersion.semver.major; + + const releaseAnnounceLink = releaseAnnouncements.includes( + `v${majorVersion}-release-announce.md` + ) + ? `/blog/announcements/v${majorVersion}-release-announce` + : undefined; + + return { + ...support, + status, + major: latestVersion.semver.major, + version: latestVersion.semver.raw, + versionWithPrefix: `v${latestVersion.semver.raw}`, + codename: major.support.codename || '', + isLts: status === 'LTS', + npm: latestVersion.dependencies.npm || '', + v8: latestVersion.dependencies.v8, + releaseDate: latestVersion.releaseDate, + modules: latestVersion.modules.version || '', + releaseAnnounceLink, + minorVersions, + }; }); }; diff --git a/apps/site/next.mdx.use.mjs b/apps/site/next.mdx.use.mjs index 2f44a0bab6dce..537872c020e64 100644 --- a/apps/site/next.mdx.use.mjs +++ b/apps/site/next.mdx.use.mjs @@ -2,7 +2,7 @@ import DownloadReleasesTable from './components/Downloads/DownloadReleasesTable'; import UpcomingMeetings from './components/MDX/Calendar/UpcomingMeetings'; -import WithBadge from './components/withBadge'; +import WithBadgeGroup from './components/withBadgeGroup'; import WithBanner from './components/withBanner'; import WithNodeRelease from './components/withNodeRelease'; @@ -18,7 +18,7 @@ export const mdxComponents = { // HOC for providing Banner Data WithBanner: WithBanner, // HOC for providing Badge Data - WithBadge: WithBadge, + WithBadgeGroup: WithBadgeGroup, // Renders an container for Upcoming Node.js Meetings UpcomingMeetings: UpcomingMeetings, }; diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index 1558dac0319aa..7b9f1403e3c7b 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">Run JavaScript Everywhere</h1> diff --git a/apps/site/pages/es/index.mdx b/apps/site/pages/es/index.mdx index 72c9f55539fa3..7597663b63680 100644 --- a/apps/site/pages/es/index.mdx +++ b/apps/site/pages/es/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">Ejecuta JavaScript en cualquier parte</h1> diff --git a/apps/site/pages/fa/index.mdx b/apps/site/pages/fa/index.mdx index 10b0356201947..ab1dc8d23fca3 100644 --- a/apps/site/pages/fa/index.mdx +++ b/apps/site/pages/fa/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">اجرا جاوااسکریپت در همه جا</h1> diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx index 64f3ec059b2da..2cd8a9da0ec2c 100644 --- a/apps/site/pages/fr/index.mdx +++ b/apps/site/pages/fr/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">Exécuter du JavaScript partout</h1> diff --git a/apps/site/pages/id/index.mdx b/apps/site/pages/id/index.mdx index ae92dab406685..f321063c28a4b 100644 --- a/apps/site/pages/id/index.mdx +++ b/apps/site/pages/id/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">Jalankan JavaScript Di Mana Saja</h1> diff --git a/apps/site/pages/ja/index.mdx b/apps/site/pages/ja/index.mdx index dc21ad41a0bb4..f99616a253d6c 100644 --- a/apps/site/pages/ja/index.mdx +++ b/apps/site/pages/ja/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">どこでもJavaScriptを使おう</h1> diff --git a/apps/site/pages/ko/index.mdx b/apps/site/pages/ko/index.mdx index 25f31ed624ab0..f392ffcbcb1bb 100644 --- a/apps/site/pages/ko/index.mdx +++ b/apps/site/pages/ko/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> -<WithBadge section="index" /> +<WithBadgeGroup section="index" /> <div> <h1 className="special">어디서든 JavaScript를 실행하세요</h1> diff --git a/apps/site/pages/pt/index.mdx b/apps/site/pages/pt/index.mdx index 57261fea5aba2..af90aa6b5727e 100644 --- a/apps/site/pages/pt/index.mdx +++ b/apps/site/pages/pt/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">Executar a JavaScript em Toda Parte</h1> diff --git a/apps/site/pages/tr/index.mdx b/apps/site/pages/tr/index.mdx index 742f803ab7bbc..19d3aa83e7ede 100644 --- a/apps/site/pages/tr/index.mdx +++ b/apps/site/pages/tr/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">Her Yerde JavaScript Çalıştırın</h1> diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx index 07671833ad3e8..937fe4a2709e1 100644 --- a/apps/site/pages/uk/index.mdx +++ b/apps/site/pages/uk/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">Запускайте JavaScript будь-де</h1> diff --git a/apps/site/pages/zh-cn/index.mdx b/apps/site/pages/zh-cn/index.mdx index 9809abe73cdb7..120fe32b48227 100644 --- a/apps/site/pages/zh-cn/index.mdx +++ b/apps/site/pages/zh-cn/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">在任何地方运行 JavaScript</h1> diff --git a/apps/site/pages/zh-tw/index.mdx b/apps/site/pages/zh-tw/index.mdx index b329dd7ed0112..37766774fd1e3 100644 --- a/apps/site/pages/zh-tw/index.mdx +++ b/apps/site/pages/zh-tw/index.mdx @@ -4,7 +4,7 @@ layout: home --- <section> - <WithBadge section="index" /> + <WithBadgeGroup section="index" /> <div> <h1 className="special">隨時隨地執行 JavaScript</h1> diff --git a/apps/site/providers/releaseModalProvider.tsx b/apps/site/providers/releaseModalProvider.tsx new file mode 100644 index 0000000000000..acbcb17cc8e5c --- /dev/null +++ b/apps/site/providers/releaseModalProvider.tsx @@ -0,0 +1,45 @@ +'use client'; + +import { createContext, useState } from 'react'; +import type { FC, PropsWithChildren } from 'react'; + +import ReleaseModal from '@/components/Downloads/ReleaseModal'; +import type { NodeRelease } from '@/types'; + +type ReleaseModalContextType = { + activeRelease: NodeRelease | null; + openModal: (activeRelease: NodeRelease) => void; + closeModal: () => void; +}; + +export const ReleaseModalContext = createContext<ReleaseModalContextType>({ + activeRelease: null, + openModal: () => {}, + closeModal: () => {}, +}); + +export const ReleaseModalProvider: FC<PropsWithChildren> = ({ children }) => { + const [activeRelease, setValue] = useState<NodeRelease | null>(null); + + const openModal = (activeRelease: NodeRelease) => { + setValue(activeRelease); + }; + + const closeModal = () => { + setValue(null); + }; + + return ( + <ReleaseModalContext value={{ activeRelease, openModal, closeModal }}> + {children} + + {activeRelease && ( + <ReleaseModal + isOpen={!!activeRelease} + closeModal={closeModal} + release={activeRelease} + /> + )} + </ReleaseModalContext> + ); +}; diff --git a/apps/site/types/releases.ts b/apps/site/types/releases.ts index 2fc4a4f101d54..cf71f7bea406d 100644 --- a/apps/site/types/releases.ts +++ b/apps/site/types/releases.ts @@ -1,4 +1,9 @@ -export type NodeReleaseStatus = 'LTS' | 'Current' | 'End-of-life' | 'Pending'; +export type NodeReleaseStatus = + | 'LTS' + | 'Maintenance' + | 'Current' + | 'End-of-life' + | 'Pending'; export interface NodeReleaseSource { major: number; @@ -9,13 +14,20 @@ export interface NodeReleaseSource { maintenanceStart?: string; endOfLife: string; npm?: string; - v8?: string; - releaseDate?: string; + v8: string; + releaseDate: string; modules?: string; } +export interface MinorVersion { + version: string; + releaseDate: string; +} + export interface NodeRelease extends NodeReleaseSource { versionWithPrefix: string; isLts: boolean; status: NodeReleaseStatus; + releaseAnnounceLink?: string; + minorVersions: Array<MinorVersion>; } diff --git a/package-lock.json b/package-lock.json index a56d0d3c193a8..474f1653ef731 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4334,6 +4334,85 @@ } } }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.3.tgz", + "integrity": "sha512-2omrWKJvxR0U/tkIXezcc1nFMwtLU0+b/rDK40gnzJqTLWQ/TD/D5IYVefp9sC3QWfeQbpSbEA6op9MQKyaALQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.3" + }, + "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-separator/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "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-separator/node_modules/@radix-ui/react-primitive": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.3.tgz", + "integrity": "sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.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-separator/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "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-slot": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", @@ -21209,6 +21288,7 @@ "@radix-ui/react-dropdown-menu": "~2.1.6", "@radix-ui/react-label": "~2.1.2", "@radix-ui/react-select": "~2.1.6", + "@radix-ui/react-separator": "~1.1.3", "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", "@radix-ui/react-tooltip": "~1.1.8", diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index df9cefb8719c4..156804a86cf2e 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -149,15 +149,38 @@ "downloadReleasesTable": { "version": "Node.js", "nApiVersion": "N-API", - "npmVersion": "npm", "codename": "Codename", "releaseDate": "Released at", + "firstReleased": "First released", + "lastUpdated": "Last updated", + "status": "Status", + "details": "Details" + }, + "releaseModal": { + "title": "Node.js {version} ({codename})", + "titleWithoutCodename": "Node.js {version}", + "overview": "Overview", + "minorVersions": "Minor versions", + "releaseAnnouncement": "Release Announcement", + "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version." + }, + "minorReleasesTable": { + "version": "Version", + "links": "Links", "actions": { + "release": "Release", "changelog": "Changelog", - "releases": "Releases", "docs": "Docs" } }, + "releaseOverview": { + "firstReleased": "First released", + "lastUpdated": "Last updated", + "minorVersions": "Minor versions", + "nApiVersion": "N-API version", + "npmVersion": "npm version", + "v8Version": "V8 version" + }, "pagination": { "next": "Next", "previous": "Previous" diff --git a/packages/ui-components/Common/Badge/index.module.css b/packages/ui-components/Common/Badge/index.module.css index 9420740a87cf1..19bdba865743c 100644 --- a/packages/ui-components/Common/Badge/index.module.css +++ b/packages/ui-components/Common/Badge/index.module.css @@ -1,101 +1,38 @@ @reference "../../styles/index.css"; -.wrapper { - @apply flex - w-fit - items-center - rounded-full +.badge { + @apply rounded-full border - py-1 - pl-1 - pr-2.5 - text-sm - font-medium; + text-center + text-white; - .icon { - @apply size-4; - } - - .badge { - @apply mr-2 - rounded-full - border - px-2.5 + &.small { + @apply px-1.5 py-0.5 - text-center - text-white; + text-xs; } - .message { - @apply mr-1; + &.medium { + @apply px-2.5 + py-0.5 + text-base; } &.default { @apply border-green-200 - bg-green-100 - dark:border-green-700 - dark:bg-neutral-900; - - .icon { - @apply text-green-500 - dark:text-green-300; - } - - .badge { - @apply border-green-200 - bg-green-600 - dark:border-green-600; - } - - .message { - @apply text-green-700 - dark:text-green-300; - } + bg-green-600 + dark:border-green-800; } &.error { @apply border-danger-200 - bg-danger-100 - dark:border-danger-700 - dark:bg-neutral-900; - - .icon { - @apply text-danger-500 - dark:text-danger-300; - } - - .badge { - @apply border-danger-200 - bg-danger-600 - dark:border-danger-600; - } - - .message { - @apply text-danger-700 - dark:text-danger-300; - } + bg-danger-600 + dark:border-danger-800; } &.warning { @apply border-warning-200 - bg-warning-100 - dark:border-warning-700 - dark:bg-neutral-900; - - .icon { - @apply text-warning-500 - dark:text-warning-300; - } - - .badge { - @apply border-warning-200 - bg-warning-600 - dark:border-warning-600; - } - - .message { - @apply text-warning-700 - dark:text-warning-300; - } + bg-warning-600 + dark:border-warning-600; } } diff --git a/packages/ui-components/Common/Badge/index.stories.tsx b/packages/ui-components/Common/Badge/index.stories.tsx index b37dfa5b0a621..874ec97c26fd9 100644 --- a/packages/ui-components/Common/Badge/index.stories.tsx +++ b/packages/ui-components/Common/Badge/index.stories.tsx @@ -7,29 +7,32 @@ type Meta = MetaObj<typeof Badge>; export const Default: Story = { args: { - href: '/', - children: 'OpenJS Foundation Certification 2023', kind: 'default', - badgeText: 'New', }, }; export const Error: Story = { args: { - href: '/', - children: 'OpenJS Foundation Certification 2023', kind: 'error', - badgeText: 'New', }, }; export const Warning: Story = { args: { - href: '/', - children: 'OpenJS Foundation Certification 2023', kind: 'warning', - badgeText: 'New', }, }; -export default { component: Badge } as Meta; +export const Small: Story = { + args: { + size: 'small', + }, +}; + +export const Medium: Story = { + args: { + size: 'medium', + }, +}; + +export default { component: Badge, args: { children: 'Badge' } } as Meta; diff --git a/packages/ui-components/Common/Badge/index.tsx b/packages/ui-components/Common/Badge/index.tsx index 49590ebefe08e..5b9730368e35d 100644 --- a/packages/ui-components/Common/Badge/index.tsx +++ b/packages/ui-components/Common/Badge/index.tsx @@ -1,28 +1,35 @@ -import ArrowRightIcon from '@heroicons/react/24/solid/ArrowRightIcon'; -import type { ComponentProps, FC, PropsWithChildren } from 'react'; - -import type { LinkLike } from '@node-core/ui-components/types'; +import classNames from 'classnames'; +import type { FC, HTMLAttributes, PropsWithChildren } from 'react'; import styles from './index.module.css'; -type BadgeProps = { - kind?: 'default' | 'warning' | 'error'; - badgeText?: string; - as: LinkLike; -} & ComponentProps<LinkLike>; +type BadgeKind = 'default' | 'warning' | 'error'; + +type BadgeProps = HTMLAttributes<HTMLSpanElement> & { + size?: 'small' | 'medium'; + kind?: BadgeKind; +}; const Badge: FC<PropsWithChildren<BadgeProps>> = ({ kind = 'default', - badgeText, + size = 'medium', + className, children, - as: Component = 'a', - ...args -}) => ( - <Component className={`${styles.wrapper} ${styles[kind]}`} {...args}> - {badgeText && <span className={styles.badge}>{badgeText}</span>} - <span className={styles.message}>{children}</span> - {args.href && <ArrowRightIcon className={styles.icon} />} - </Component> -); + ...props +}) => { + return ( + <span + className={classNames( + styles.badge, + styles[kind], + styles[size], + className + )} + {...props} + > + {children} + </span> + ); +}; export default Badge; diff --git a/packages/ui-components/Common/BadgeGroup/index.module.css b/packages/ui-components/Common/BadgeGroup/index.module.css new file mode 100644 index 0000000000000..754356aa6012c --- /dev/null +++ b/packages/ui-components/Common/BadgeGroup/index.module.css @@ -0,0 +1,77 @@ +@reference "../../styles/index.css"; + +.wrapper { + @apply flex + w-fit + items-center + rounded-full + border + py-1 + pl-1 + pr-2.5 + text-sm + font-medium; + + .icon { + @apply size-4; + } + + .badge { + @apply mr-2; + } + + .message { + @apply mr-1; + } + + &.default { + @apply border-green-200 + bg-green-100 + dark:border-green-700 + dark:bg-neutral-900; + + .icon { + @apply text-green-500 + dark:text-green-300; + } + + .message { + @apply text-green-700 + dark:text-green-300; + } + } + + &.error { + @apply border-danger-200 + bg-danger-100 + dark:border-danger-700 + dark:bg-neutral-900; + + .icon { + @apply text-danger-500 + dark:text-danger-300; + } + + .message { + @apply text-danger-700 + dark:text-danger-300; + } + } + + &.warning { + @apply border-warning-200 + bg-warning-100 + dark:border-warning-700 + dark:bg-neutral-900; + + .icon { + @apply text-warning-500 + dark:text-warning-300; + } + + .message { + @apply text-warning-700 + dark:text-warning-300; + } + } +} diff --git a/packages/ui-components/Common/BadgeGroup/index.stories.tsx b/packages/ui-components/Common/BadgeGroup/index.stories.tsx new file mode 100644 index 0000000000000..ac2fe623dfdb5 --- /dev/null +++ b/packages/ui-components/Common/BadgeGroup/index.stories.tsx @@ -0,0 +1,35 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import BadgeGroup from '@node-core/ui-components/Common/BadgeGroup'; + +type Story = StoryObj<typeof BadgeGroup>; +type Meta = MetaObj<typeof BadgeGroup>; + +export const Default: Story = { + args: { + href: '/', + children: 'OpenJS Foundation Certification 2023', + kind: 'default', + badgeText: 'New', + }, +}; + +export const Error: Story = { + args: { + href: '/', + children: 'OpenJS Foundation Certification 2023', + kind: 'error', + badgeText: 'New', + }, +}; + +export const Warning: Story = { + args: { + href: '/', + children: 'OpenJS Foundation Certification 2023', + kind: 'warning', + badgeText: 'New', + }, +}; + +export default { component: BadgeGroup } as Meta; diff --git a/packages/ui-components/Common/BadgeGroup/index.tsx b/packages/ui-components/Common/BadgeGroup/index.tsx new file mode 100644 index 0000000000000..761ca9e3aaec6 --- /dev/null +++ b/packages/ui-components/Common/BadgeGroup/index.tsx @@ -0,0 +1,35 @@ +import ArrowRightIcon from '@heroicons/react/24/solid/ArrowRightIcon'; +import type { ComponentProps, FC, PropsWithChildren } from 'react'; + +import Badge from '@node-core/ui-components/Common/Badge'; +import type { LinkLike } from '@node-core/ui-components/types'; + +import styles from './index.module.css'; + +type BadgeGroupKind = 'default' | 'warning' | 'error'; + +type BadgeGroupProps = { + kind?: BadgeGroupKind; + badgeText?: string; + as: LinkLike; +} & ComponentProps<LinkLike>; + +const BadgeGroup: FC<PropsWithChildren<BadgeGroupProps>> = ({ + kind = 'default', + badgeText, + children, + as: Component = 'a', + ...args +}) => ( + <Component className={`${styles.wrapper} ${styles[kind]}`} {...args}> + {badgeText && ( + <Badge kind={kind} className={styles.badge}> + {badgeText} + </Badge> + )} + <span className={styles.message}>{children}</span> + {args.href && <ArrowRightIcon className={styles.icon} />} + </Component> +); + +export default BadgeGroup; diff --git a/packages/ui-components/Common/Modal/index.module.css b/packages/ui-components/Common/Modal/index.module.css index 1495d7e71bf46..5b399767fdf7e 100644 --- a/packages/ui-components/Common/Modal/index.module.css +++ b/packages/ui-components/Common/Modal/index.module.css @@ -15,6 +15,7 @@ m-4 inline-flex w-full + max-w-3xl flex-col overflow-y-auto rounded @@ -24,7 +25,6 @@ p-8 focus:outline-none sm:my-20 - lg:max-w-[900px] xl:p-12 dark:bg-neutral-950; } diff --git a/packages/ui-components/Common/Modal/index.tsx b/packages/ui-components/Common/Modal/index.tsx index 635ab82a54cfa..787a80e0cb73a 100644 --- a/packages/ui-components/Common/Modal/index.tsx +++ b/packages/ui-components/Common/Modal/index.tsx @@ -8,7 +8,7 @@ import styles from './index.module.css'; type ModalProps = PropsWithChildren<{ heading: string; - subheading: string; + subheading?: string; open?: boolean; onOpenChange?: (open: boolean) => void; }>; @@ -30,9 +30,11 @@ const Modal: FC<ModalProps> = ({ <Dialog.Title className={styles.title}>{heading}</Dialog.Title> - <Dialog.Description className={styles.description}> - {subheading} - </Dialog.Description> + {subheading && ( + <Dialog.Description className={styles.description}> + {subheading} + </Dialog.Description> + )} <main className={styles.wrapper}>{children}</main> diff --git a/packages/ui-components/Common/Separator/index.module.css b/packages/ui-components/Common/Separator/index.module.css new file mode 100644 index 0000000000000..61d7dc140faa0 --- /dev/null +++ b/packages/ui-components/Common/Separator/index.module.css @@ -0,0 +1,16 @@ +@reference "../../styles/index.css"; + +.root { + @apply shrink-0 + bg-neutral-800; + + &.horizontal { + @apply h-px + w-full; + } + + &.vertical { + @apply h-full + w-px; + } +} diff --git a/packages/ui-components/Common/Separator/index.stories.tsx b/packages/ui-components/Common/Separator/index.stories.tsx new file mode 100644 index 0000000000000..4fe7337c8b58c --- /dev/null +++ b/packages/ui-components/Common/Separator/index.stories.tsx @@ -0,0 +1,32 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import Separator from '@node-core/ui-components/Common/Separator'; + +type Story = StoryObj<typeof Separator>; +type Meta = MetaObj<typeof Separator>; + +export const Horizontal: Story = { + args: { + orientation: 'horizontal', + }, +}; + +export const Vertical: Story = { + args: { + orientation: 'vertical', + }, +}; + +export default { + component: Separator, + parameters: { + layout: 'centered', + }, + decorators: [ + Story => ( + <div className="size-32"> + <Story /> + </div> + ), + ], +} as Meta; diff --git a/packages/ui-components/Common/Separator/index.tsx b/packages/ui-components/Common/Separator/index.tsx new file mode 100644 index 0000000000000..2a51b8bd41adc --- /dev/null +++ b/packages/ui-components/Common/Separator/index.tsx @@ -0,0 +1,27 @@ +'use client'; + +import * as SeparatorPrimitive from '@radix-ui/react-separator'; +import classNames from 'classnames'; +import type { FC, ComponentProps } from 'react'; + +import styles from './index.module.css'; + +const Separator: FC<ComponentProps<typeof SeparatorPrimitive.Root>> = ({ + className, + orientation = 'horizontal', + decorative = true, + ...props +}) => ( + <SeparatorPrimitive.Root + decorative={decorative} + orientation={orientation} + className={classNames( + styles.root, + orientation === 'horizontal' ? styles.horizontal : styles.vertical, + className + )} + {...props} + /> +); + +export default Separator; diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 4b76901fbed46..633830d4401ec 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -22,6 +22,7 @@ "@radix-ui/react-dropdown-menu": "~2.1.6", "@radix-ui/react-label": "~2.1.2", "@radix-ui/react-select": "~2.1.6", + "@radix-ui/react-separator": "~1.1.3", "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", "@radix-ui/react-tooltip": "~1.1.8", From 91a533f7713fe6fa2051785bba59fa37d222b140 Mon Sep 17 00:00:00 2001 From: Lorenzo Zabot <lorenzozabot@gmail.com> Date: Tue, 29 Apr 2025 21:33:29 +0200 Subject: [PATCH 0430/1385] fix(content): unify usage of i.e. and e.g. (#7653) Uniform usage of i.e. and e.g. across docs --- apps/site/pages/en/blog/npm/npm-1-0-link.md | 2 +- apps/site/pages/en/blog/release/v0.10.0.md | 2 +- .../en/blog/vulnerability/october-2023-security-releases.md | 2 +- .../pages/en/learn/getting-started/nodejs-with-webassembly.md | 2 +- apps/site/pages/en/learn/modules/publishing-a-package.mdx | 2 +- apps/site/pages/en/learn/typescript/publishing-a-ts-package.md | 2 +- apps/site/scripts/release-post/index.mjs | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/site/pages/en/blog/npm/npm-1-0-link.md b/apps/site/pages/en/blog/npm/npm-1-0-link.md index cf33c47f70cde..bbcf993656c1d 100644 --- a/apps/site/pages/en/blog/npm/npm-1-0-link.md +++ b/apps/site/pages/en/blog/npm/npm-1-0-link.md @@ -106,7 +106,7 @@ I highly doubt that a native Windows node will ever have comparable symbolic lin When there is a native windows port of Node, if that native windows port has `fs.symlink` and `fs.readlink` support that is exactly identical to the way that they work on Unix, then this should work fine. -But I wouldn't hold my breath. Any bugs about this not working on a native Windows system (ie, not Cygwin) will most likely be closed with `wontfix`. +But I wouldn't hold my breath. Any bugs about this not working on a native Windows system (i.e., not Cygwin) will most likely be closed with `wontfix`. ## <!-- aside_credit_where_credit8217s_due -->Aside: Credit where Credit’s Due diff --git a/apps/site/pages/en/blog/release/v0.10.0.md b/apps/site/pages/en/blog/release/v0.10.0.md index 78ce3018c1120..6ee6268d6a94b 100644 --- a/apps/site/pages/en/blog/release/v0.10.0.md +++ b/apps/site/pages/en/blog/release/v0.10.0.md @@ -156,7 +156,7 @@ http/simple.js type=buffer length=102400: <span style="background-color:#0f0;col </pre> What we see here is that, overall, HTTP is faster. It's just slightly -slower (1-5%) when sending extremely large string messages (ie +slower (1-5%) when sending extremely large string messages (i.e. `type=bytes` rather than `type=buffer`). But otherwise, things are about the same, or slightly faster. diff --git a/apps/site/pages/en/blog/vulnerability/october-2023-security-releases.md b/apps/site/pages/en/blog/vulnerability/october-2023-security-releases.md index 0b62001e2f0f5..f62aa7ffb16f6 100644 --- a/apps/site/pages/en/blog/vulnerability/october-2023-security-releases.md +++ b/apps/site/pages/en/blog/vulnerability/october-2023-security-releases.md @@ -15,7 +15,7 @@ following issues. Undici did not always clear Cookie headers on cross-origin redirects. By design, cookie headers are [forbidden request headers](https://fetch.spec.whatwg.org/#forbidden-request-header), disallowing them to be set in RequestInit.headers in browser environments. Since undici handles headers more liberally than the spec, there was a disconnect from the assumptions the spec made, and undici's implementation of fetch. -As such this may lead to accidental leakage of cookie to a 3rd-party site or a malicious attacker who can control the redirection target (ie. an open redirector) to leak the cookie to the 3rd party site. +As such this may lead to accidental leakage of cookie to a 3rd-party site or a malicious attacker who can control the redirection target (i.e. an open redirector) to leak the cookie to the 3rd party site. More details area available in [GHSA-wqq4-5wpv-mx2g](https://github.com/nodejs/undici/security/advisories/GHSA-wqq4-5wpv-mx2g) 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 eb6dbcd55a2bd..ae80baa8f1e5c 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 @@ -12,7 +12,7 @@ The WebAssembly specification details two file formats, a binary format called a ## Key Concepts -- Module - A compiled WebAssembly binary, ie a `.wasm` file. +- Module - A compiled WebAssembly binary, i.e. a `.wasm` file. - Memory - A resizable ArrayBuffer. - Table - A resizable typed array of references not stored in Memory. - Instance - An instantiation of a Module with its Memory, Table, and variables. diff --git a/apps/site/pages/en/learn/modules/publishing-a-package.mdx b/apps/site/pages/en/learn/modules/publishing-a-package.mdx index aee351ebe14cc..58dcd1886355b 100644 --- a/apps/site/pages/en/learn/modules/publishing-a-package.mdx +++ b/apps/site/pages/en/learn/modules/publishing-a-package.mdx @@ -539,7 +539,7 @@ So when you see configuration options citing or named with `require` or `import` ⚠️ Adding an `"exports"` field/field-set to a package’s configuration effectively [blocks deep pathing into the package](https://nodejs.org/api/packages.html#package-entry-points) for anything not explicitly listed in the exports’ subpathing. This means it can be a breaking change. -⚠️ Consider carefully whether to distribute both CJS and ESM: It creates the potential for the [Dual Package Hazard](#the-dual-package-hazard) (especially if misconfigured and the consumer tries to get clever). This can lead to an extremely confusing bug in consuming projects, especially when your package is not perfectly configured. Consumers can even be blind-sided by an intermediary package that uses the "other" format of your package (eg consumer uses the ESM distribution, and some other package the consumer is also using itself uses the CJS distribution). If your package is in any way stateful, consuming both the CJS and ESM distributions will result in parallel states (which is almost surely unintentional). +⚠️ Consider carefully whether to distribute both CJS and ESM: It creates the potential for the [Dual Package Hazard](#the-dual-package-hazard) (especially if misconfigured and the consumer tries to get clever). This can lead to an extremely confusing bug in consuming projects, especially when your package is not perfectly configured. Consumers can even be blind-sided by an intermediary package that uses the "other" format of your package (e.g. consumer uses the ESM distribution, and some other package the consumer is also using itself uses the CJS distribution). If your package is in any way stateful, consuming both the CJS and ESM distributions will result in parallel states (which is almost surely unintentional). ### The dual-package hazard diff --git a/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md b/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md index 1a289ac1619f7..6d895feb721cd 100644 --- a/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md +++ b/apps/site/pages/en/learn/typescript/publishing-a-ts-package.md @@ -136,7 +136,7 @@ const bar: number = 1 + foo; TypeScript has warned that the above code will not behave as intended, just like a unit test warns that code does not behave as intended. They are complementary and verify different things—you should have both. -Your editor (eg VS Code) likely has built-in support for TypeScript, displaying errors as you work. If not, and/or you missed those, CI will have your back. +Your editor (e.g. VS Code) likely has built-in support for TypeScript, displaying errors as you work. If not, and/or you missed those, CI will have your back. The following [GitHub Action](https://github.com/features/actions) sets up a CI task to automatically check (and require) types pass inspection for a PR into the `main` branch. diff --git a/apps/site/scripts/release-post/index.mjs b/apps/site/scripts/release-post/index.mjs index f41f60e49321c..b7aba6e8ebfec 100644 --- a/apps/site/scripts/release-post/index.mjs +++ b/apps/site/scripts/release-post/index.mjs @@ -174,7 +174,7 @@ const verifyDownloads = version => Promise.all(downloadsTable(version).map(urlOrComingSoon)); const findAuthorLogin = (version, section) => { - // looking for the @author part of the release header, eg: + // looking for the @author part of the release header, e.g.: // ## 2016-03-08, Version 5.8.0 (Stable). @Fishrock123 // ## 2015-10-13, Version 4.2.1 'Argon' (LTS), @jasnell // ## 2015-09-08, Version 4.0.0 (Stable), @rvagg From 454d31dd70077a1946c97643a5254baa913f3f07 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Wed, 30 Apr 2025 14:42:44 +0200 Subject: [PATCH 0431/1385] chore: update v18 EOL banner (#7689) Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --- apps/site/site.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/site.json b/apps/site/site.json index 09f5fd55f0113..1d8f5212bcdbf 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -30,7 +30,7 @@ "index": { "startDate": "2025-04-01T00:00:00.000Z", "endDate": "2025-06-01T00:00:00.000Z", - "text": "Node.js v18 is reaching End-Of-Life on April 30, 2025.", + "text": "Node.js v18 has reached End-Of-Life on April 30, 2025.", "link": "https://nodejs.org/en/about/previous-releases#release-schedule", "type": "warning" } From 23c5ee8db9f7df9a719fdea712267af81af919fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 May 2025 08:40:54 -0500 Subject: [PATCH 0432/1385] meta: bump stefanzweifel/git-auto-commit-action from 5.1.0 to 5.2.0 (#7708) Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 5.1.0 to 5.2.0. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/e348103e9026cc0eee72ae06630dbe30c8bf7a79...b863ae1933cb653a53c021fe36dbb774e1fb9403) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-version: 5.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .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 e703fb8e41ffe..2359925eb7c5a 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -117,7 +117,7 @@ jobs: 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@e348103e9026cc0eee72ae06630dbe30c8bf7a79 # v5.1.0 + uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0 with: commit_options: '--no-verify --signoff' commit_message: 'chore: automated format of translated files' From 3d79b48f8e38899bde5dc2199b710f6813b621a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 May 2025 08:53:57 -0500 Subject: [PATCH 0433/1385] meta: bump github/codeql-action from 3.28.13 to 3.28.16 (#7707) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.13 to 3.28.16. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/1b549b9259bda1cb5ddde3b41741a82a2d15a841...28deaeda66b76a05916b6923827895f2b14ab387) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.16 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b828969508f17..9a28ac5859238 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/init@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/autobuild@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/analyze@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b5cb997b5708d..883e4132febdf 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 with: sarif_file: results.sarif From 2f9f1b2efc4cc3aee8144de28de63564a3145e29 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Date: Fri, 2 May 2025 17:28:21 -0500 Subject: [PATCH 0434/1385] feat(infra): adopt `pnpm` (#7662) * feat(infra): adopt `pnpm` * unpin, add peer deps * use @/ when possible * add note to onlyBuiltDependencies * Update vercel.json Co-authored-by: Matt Cowley <me@mattcowley.co.uk> Signed-off-by: Aviv Keller <me@aviv.sh> * code review --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: avivkeller <me@aviv.sh> Co-authored-by: Matt Cowley <me@mattcowley.co.uk> --- .github/PULL_REQUEST_TEMPLATE.md | 6 +- .github/dependabot.yml | 1 - .github/workflows/build.yml | 73 +- .github/workflows/chromatic.yml | 25 +- .github/workflows/lint-and-tests.yml | 38 +- .github/workflows/translations-sync.yml | 27 +- .gitignore | 6 +- .husky/pre-commit | 4 +- .npmrc | 2 - .prettierignore | 4 + COLLABORATOR_GUIDE.md | 6 +- CONTRIBUTING.md | 42 +- DEPENDENCY_PINNING.md | 2 +- README.md | 4 +- apps/site/eslint.config.js | 9 +- apps/site/next.config.mjs | 6 +- apps/site/package.json | 54 +- apps/site/tsconfig.json | 5 +- apps/site/vercel.json | 2 +- eslint.config.js | 8 - package-lock.json | 21567 ---------------------- package.json | 45 +- packages/i18n/eslint.config.js | 1 - packages/i18n/package.json | 17 +- packages/i18n/tsconfig.json | 3 +- packages/ui-components/eslint.config.js | 7 - packages/ui-components/package.json | 45 +- pnpm-lock.yaml | 13850 ++++++++++++++ pnpm-workspace.yaml | 13 + 29 files changed, 14099 insertions(+), 21773 deletions(-) delete mode 100644 .npmrc delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 053bfad342f18..fc641b4b78268 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -26,7 +26,7 @@ You can check the items by adding an `x` between the brackets, like this: `[x]` --> - [ ] I have read the [Contributing Guidelines](https://github.com/nodejs/nodejs.org/blob/main/CONTRIBUTING.md) and made commit messages that follow the guideline. -- [ ] I have run `npm run format` to ensure the code follows the style guide. -- [ ] I have run `npm run test` to check if all tests are passing. -- [ ] I have run `npx turbo build` to check if the website builds without errors. +- [ ] I have run `pnpm format` to ensure the code follows the style guide. +- [ ] I have run `pnpm test` to check if all tests are passing. +- [ ] I have run `pnpm build` to check if the website builds without errors. - [ ] I've covered new added functionality with unit tests if necessary. diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 85740a089f7da..6a8c86d797a23 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -60,7 +60,6 @@ updates: - 'react' - 'react-dom' - '@types/react' - - '@types/react-dom' tailwind: patterns: - '@savvywombat/tailwindcss-grid-areas' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 42d63f4b1096e..0bbe9efc1d438 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,6 +16,7 @@ on: types: - labeled merge_group: + workflow_dispatch: defaults: run: @@ -26,15 +27,18 @@ permissions: contents: read actions: read +env: + # See https://turbo.build/repo/docs/reference/command-line-reference/run#--cache-dir + TURBO_ARGS: --cache-dir=.turbo/cache + # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force + TURBO_FORCE: true + jobs: build: - # This Job should run either on `merge_groups` or `push` events + # This Job should run either on non-`pull_request_target` events, # or `pull_request_target` event with a `labeled` action with a label named `github_actions:pull-request` - # since we want to run Website Builds on all these 3 occasions. As this allows us to be certain the that builds are passing - if: | - (github.event_name == 'push' || github.event_name == 'merge_group') || - (github.event_name == 'pull_request_target' && - github.event.label.name == 'github_actions:pull-request') + # since we want to run Website Builds on all these occasions. As this allows us to be certain the that builds are passing + if: github.event_name != 'pull_request_target' || github.event.label.name == 'github_actions:pull-request' name: Build on ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -50,14 +54,6 @@ jobs: with: egress-policy: audit - - name: Provide Turborepo Arguments - # This step is responsible for providing a reusable string that can be used within other steps and jobs - # that use the `turbo` cli command as a way of easily providing shared arguments to the `turbo` command - id: turborepo_arguments - # See https://turbo.build/repo/docs/reference/command-line-reference/run#--cache-dir - # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force - run: echo "turbo_args=--force=true --cache-dir=.turbo/cache" >> "$GITHUB_OUTPUT" - - name: Use GNU tar instead BSD tar # This ensures that we use GNU `tar` which is more efficient for extracting caches's if: matrix.os == 'windows-latest' @@ -78,34 +74,29 @@ jobs: - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: - # See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node - path: | - ~/.npm - ${{ github.workspace }}/apps/site/.next/cache - # Generate a new cache whenever packages or source files change. - key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }} - # If source files changed but packages didn't, rebuild from a prior cache. - restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- + path: ${{ github.workspace }}/apps/site/.next/cache + key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }} + restore-keys: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}- + + - name: Set up pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + cache: true - name: Set up Node.js uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' - cache: 'npm' + cache: 'pnpm' - - 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 - # We also use `--omit=dev` to avoid installing devDependencies as we don't need them during the build step - run: npm i --no-audit --no-fund --userconfig=/dev/null --omit=dev + - name: Install packages + # We only want to install required production packages + run: pnpm install --prod --frozen-lockfile - name: Build Next.js (ISR) # We want a ISR build on CI to ensure that regular Next.js builds work as expected. - # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user - # the `${{ steps.turborepo_arguments.outputs.turbo_args }}` is a string substitution coming from a previous step - run: npx --package=turbo@latest -- turbo build ${{ steps.turborepo_arguments.outputs.turbo_args }} + run: pnpm exec turbo build ${{ env.TURBO_ARGS }} env: # We want to ensure we have enough RAM allocated to the Node.js process # this should be a last resort in case by any chances the build memory gets too high @@ -118,9 +109,7 @@ jobs: # We only run full static builds within Pull Requests. This step is also used to export # static output in all languages, and it only works on `push` events. if: github.event_name == 'push' - # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user - # the `${{ steps.turborepo_arguments.outputs.turbo_args }}` is a string substitution coming from a previous step - run: npx --package=turbo@latest -- turbo deploy ${{ steps.turborepo_arguments.outputs.turbo_args }} + run: pnpm exec turbo deploy ${{ env.TURBO_ARGS }} env: # We want to ensure we have enough RAM allocated to the Node.js process # this should be a last resort in case by any chances the build memory gets too high @@ -139,9 +128,7 @@ jobs: if: | (github.event_name == 'pull_request_target' && github.event.pull_request.head.ref != 'chore/crowdin') - # We want to enforce that the actual `turbo@latest` package is used instead of a possible hijack from the user - # the `${{ steps.turborepo_arguments.outputs.turbo_args }}` is a string substitution coming from a previous step - run: npx --package=turbo@latest -- turbo deploy ${{ steps.turborepo_arguments.outputs.turbo_args }} + run: pnpm exec turbo deploy ${{ env.TURBO_ARGS }} env: # We want to ensure we have enough RAM allocated to the Node.js process # this should be a last resort in case by any chances the build memory gets too high @@ -154,14 +141,12 @@ jobs: - name: Sync Orama Cloud # We only want to sync the Orama Cloud production indexes on `push` events. - # We also want to sync the Orama Cloud preview (deployment) indexes on `pull_request_target` events. + # We also want to sync the Orama Cloud preview (deployment) indexes on `pull_request_target` events (or manual triggers). # We also want to ensure that the sync only happens on the `ubuntu-latest` runner to avoid duplicate syncs # or Windows-based path issues. env: ORAMA_INDEX_ID: ${{ github.event_name == 'push' && secrets.ORAMA_PRODUCTION_INDEX_ID || secrets.ORAMA_INDEX_ID }} ORAMA_SECRET_KEY: ${{ github.event_name == 'push' && secrets.ORAMA_PRODUCTION_SECRET_KEY || secrets.ORAMA_SECRET_KEY }} - if: | - (matrix.os == 'ubuntu-latest') && - ((github.event_name == 'push') || (github.event_name == 'pull_request_target')) - run: | - cd apps/site && npm run sync-orama + if: matrix.os == 'ubuntu-latest' && github.event_name != 'merge_group' + working-directory: apps/site + run: pnpm sync-orama diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 6a08406e8fae8..92c15e578b667 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -16,6 +16,7 @@ on: - main types: - labeled + workflow_dispatch: defaults: run: @@ -26,19 +27,14 @@ permissions: contents: read actions: read -env: - # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force - TURBO_FORCE: true - jobs: chromatic: # We only need to run Storybook Builds and Storybook Visual Regression Tests within Pull Requests that actually # introduce changes to the Storybook. Hence, we skip running these on Crowdin PRs and Dependabot PRs # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 if: | - github.event_name == 'push' || github.event_name == 'merge_group' || + github.event_name != 'pull_request_target' || ( - github.event_name == 'pull_request_target' && github.event.label.name == 'github_actions:pull-request' && startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.pull_request.head.ref != 'chore/crowdin' @@ -66,22 +62,27 @@ jobs: # previous changes and previous commits and determine which Storybooks should be tested against and what should be built fetch-depth: 0 + - name: Set up pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + cache: true + - name: Set up Node.js uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' - cache: 'npm' + cache: 'pnpm' - - 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 --userconfig=/dev/null + - name: Install packages + run: pnpm install --frozen-lockfile - name: Start Visual Regression Tests (Chromatic) # This assigns the Environment Deployment for Storybook + # This action must be manually updated to the latest commit from + # https://github.com/chromaui/action id: chromatic-deploy - uses: chromaui/action@c93e0bc3a63aa176e14a75b61a31847cbfdd341c + uses: chromaui/action@e8cc4c31775280b175a3c440076c00d19a9014d7 # v11.28.2 with: workingDir: packages/ui-components buildScriptName: storybook:build diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index f76856f817279..ac9a36a9ba156 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -55,7 +55,6 @@ jobs: with: path: | .turbo/cache - node_modules/.cache .eslintmdcache .stylelintcache .prettiercache @@ -64,22 +63,25 @@ jobs: # 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') }}- + key: cache-lint-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('.turbo/cache/**') }} restore-keys: | - cache-lint-${{ hashFiles('package-lock.json') }}- + cache-lint-${{ hashFiles('pnpm-lock.yaml') }}- cache-lint- + - name: Set up pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + cache: true + - name: Set up Node.js uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' - cache: 'npm' + cache: 'pnpm' - - 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: Install packages + run: pnpm install --frozen-lockfile - name: Run quality checks with `turbo` # We run the ESLint and Prettier commands on all Workflow triggers of the `Lint` job, besides if @@ -88,7 +90,7 @@ jobs: if: | (github.event_name == 'push' || github.event_name == 'merge_group') || (github.event_name == 'pull_request' && github.event.pull_request.head.ref != 'chore/crowdin') - run: npx turbo lint check-types prettier + run: pnpm exec turbo lint check-types prettier - name: Save Lint Cache # We only want to save caches on `push` events or `pull_request_target` events @@ -105,11 +107,10 @@ jobs: with: path: | .turbo/cache - node_modules/.cache .eslintmdcache .stylelintcache .prettiercache - key: cache-lint-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.turbo/cache/**') }} + key: cache-lint-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('.turbo/cache/**') }} tests: name: Tests @@ -124,22 +125,25 @@ jobs: - name: Git Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Set up pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + cache: true + - name: Set up Node.js uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' - cache: 'npm' + cache: 'pnpm' - - 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 --userconfig=/dev/null + - name: Install packages + run: pnpm install --frozen-lockfile - name: Run Unit Tests # We want to run Unit Tests in every circumstance, including Crowdin PRs and Dependabot PRs to ensure # that changes to dependencies or translations don't break the Unit Tests - run: npm run test:ci + run: pnpm test:ci - name: Upload test coverage to Codecov if: ${{ !cancelled() && github.event_name != 'merge_group' }} diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 2359925eb7c5a..afa4ee70f1ca2 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -89,32 +89,35 @@ jobs: # 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') }}- + key: cache-lint-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('apps/site/.eslintmdcache') }} restore-keys: | - cache-lint-${{ hashFiles('package-lock.json') }}- + cache-lint-${{ hashFiles('pnpm-lock.yaml') }}- cache-lint- + - name: Set up pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + cache: true + - name: Set up Node.js uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' - cache: 'npm' + cache: 'pnpm' - - 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: Install packages + run: pnpm install --frozen-lockfile - - name: Run `npx lint:md --fix` + - name: Run `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 + run: pnpm exec 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` + - name: Run `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 + run: pnpm exec 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@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0 @@ -129,4 +132,4 @@ jobs: path: | apps/site/.eslintmdcache apps/site/.prettiercache - key: cache-lint-${{ hashFiles('package-lock.json') }}-${{ hashFiles('apps/site/.eslintmdcache') }} + key: cache-lint-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('apps/site/.eslintmdcache') }} diff --git a/.gitignore b/.gitignore index d7b5579a265c4..eab82e65d22fd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,12 @@ # Commonly ignored Node.js files node_modules +.env.* + +# npm Compatibility +# https://github.com/nodejs/nodejs.org/discussions/5334#discussioncomment-12827850 npm-debug.log .npm -.env.* +package-lock.json # Next.js Build Output .next diff --git a/.husky/pre-commit b/.husky/pre-commit index 2e2b9e7afa086..640452465f02e 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,5 @@ # lint and format staged files -npx lint-staged +pnpm dlx lint-staged # verify typescript staged files -npx tsc --build apps/site +pnpm --package=typescript dlx tsc --build apps/site diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 4a440c6a74c7e..0000000000000 --- a/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -# See bug in peerdeps resolution: https://github.com/npm/cli/issues/2999 -legacy-peer-deps = false diff --git a/.prettierignore b/.prettierignore index 73cf04bb7758b..fca5fe862757e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,7 +1,11 @@ # Commonly ignored Node.js files node_modules + +# npm Compatibility +# https://github.com/nodejs/nodejs.org/discussions/5334#discussioncomment-12827850 npm-debug.log .npm +package-lock.json # Next.js Build Output .next diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index f20fc67d7b4dd..825783c05da34 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -618,7 +618,7 @@ It is important to mention that there are some rules on our Vercel Deployments s - Branches starting with `dependabot` (Dependabot Automated PRs) or `gh` (GitHub Merge Queues) are not deployed to Vercel. - Vercel Deployments are triggered for all other branches during `push` activities. -- We have a custom install script that executes `npm ci --omit=dev` (the same way we do on our CI Pipelines) +- We have a custom install script that executes `pnpm install --prod --frozen-lockfile` (the same way we do on our CI Pipelines) - Hence if Builds fail unexpectedly, make sure that your dependency that is being used during build-time is on `dependencies` and not `devDependencies`. Checkout out [DEPENDENCY_PINNING.md](./DEPENDENCY_PINNING.md) for more information. - Our sponsorship with Vercel is maintained by the OpenJS Foundation @@ -631,10 +631,6 @@ The repository defines an optimized configuration for code editing. This is opti Defining a `.vscode` configuration like this also aides browser-only development using [GitHub's Codespaces feature](https://github.com/features/codespaces). The web-based GUI will read these same configuration files and setup the remote development environment the same way every time. -### Why we have an `.npmrc` file - -The npm ecosystem resolution and installation of `peerDependencies` installation [changed in recent versions](https://nodejs.org/en/blog/npm/peer-dependencies#using-peer-dependencies). The project documents what version of `Node.js` and `npm` to use via the [`.nvmrc` file](https://github.com/nodejs/nodejs.org/blob/main/.nvmrc). Not all contributors have tooling to automatically read this file and adhere to the correct version, however. To ensure all contributors install dependencies the same way, a local `.npmrc` file directly configures peerDependency installation behavior. - ## Seeking additional clarification A lot of the current structure is due to retro-compatibility, keeping a simple and familiar file structure and keeping files that have historical reasons or needs. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aa326e21a3f4b..355888bda9302 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -91,8 +91,8 @@ for getting things done and landing your contribution. 6. Run the following to install the dependencies and start a local preview of your work. ```bash - npm ci # installs this project's dependencies - npm run dev # starts a development environment + pnpm install --frozen-lockfile # installs this project's dependencies + pnpm dev # starts a development environment ``` 7. Perform your changes. In case you're unfamiliar with the structure of this repository, we recommend a read on the [Collaborator Guide](./COLLABORATOR_GUIDE.md) @@ -104,10 +104,10 @@ for getting things done and landing your contribution. git merge upstream/main ``` -9. Run `npm run format` to confirm that linting and formatting are passing. +9. Run `pnpm format` to confirm that linting and formatting are passing. ```bash - npm run format + pnpm format ``` 10. Once you're happy with your changes, add and commit them to your branch, then push the branch to your fork. @@ -138,29 +138,30 @@ This repository contains several scripts and commands for performing numerous ta <details> <summary>Commands for Running & Building the Website</summary> -- `npm run dev` runs Next.js's Local Development Server, listening by default on `http://localhost:3000/`. -- `npm run build` builds the Application on Production mode. The output is by default within `.next` folder. +- `pnpm dev` runs Next.js's Local Development Server, listening by default on `http://localhost:3000/`. +- `pnpm build` builds the Application on Production mode. The output is by default within `.next` folder. - This is used for the Node.js Vercel Deployments (Preview & Production) -- `npx turbo deploy` builds the Application on Export Production Mode. The output is by default within `build` folder. +- `pnpm deploy` builds the Application on Export Production Mode. The output is by default within `build` folder. - This is used for the Node.js Legacy Website Server (DigitalOcean) -- `npx turbo start` starts a web server running serving the built content from `npm run build` +- `pnpm start` starts a web server running serving the built content from `pnpm build` </details> <details> <summary>Commands for Maintenance Tasks and Tests</summary> -- `npm run lint` runs the linter for all files. - - `npm run lint:fix` attempts to fix any linting errors -- `npm run prettier` runs the prettier for all the js files. - - `npm run prettier:fix` attempts to fix any style errors -- `npx turbo format` formats and fixes lints for the whole codebase -- `npm run scripts:release-post` in the `apps/site` directory generates a release post for the current release - - **Usage:** `npm run scripts:release-post -- --version=vXX.X.X --force` -- `npx turbo storybook` starts Storybook's local server -- `npx turbo storybook:build` builds Storybook as a static web application for publishing -- `npm run test` runs all tests locally - - `npx turbo test:unit` runs unit-tests locally +- `pnpm lint` runs the linter for all files. + - `pnpm lint:fix` attempts to fix any linting errors +- `pnpm prettier` runs the prettier for all the js files. + - `pnpm prettier:fix` attempts to fix any style errors +- `pnpm format` formats and fixes lints for the whole codebase +- `pnpm scripts:release-post` generates a release post for the current release + - **Usage:** `pnpm scripts:release-post -- --version=vXX.X.X --force` +- `pnpm storybook` starts Storybook's local server +- `pnpm storybook:build` builds Storybook as a static web application for publishing +- `pnpm test` runs all tests locally + - `pnpm test:unit` runs unit-tests locally + - `pnpm test:ci` runs tests, and outputs data to be parsed by a CI environment </details> @@ -180,9 +181,6 @@ Commits should be signed. You can read more about [Commit Signing][] here. This project uses [Husky][] for Git pre-commit hooks. -- Some JSON files are generated during Build time with empty files as placeholders. Build time happens when you run `npx turbo serve` or `npx turbo build`. -- We don't want to commit those unnecessary changes. Since these files exist in the repository, `.gitignore` won't work for them. As a workaround, we have a pre-commit hook to discard those changes. - ## Pull Request Policy This policy governs how contributions should land within this repository. The lines below state the checks and policies to be followed before merging and in the act of merging. diff --git a/DEPENDENCY_PINNING.md b/DEPENDENCY_PINNING.md index 256f4278056f2..81a3ad54e6b4f 100644 --- a/DEPENDENCY_PINNING.md +++ b/DEPENDENCY_PINNING.md @@ -1,6 +1,6 @@ ## Dependency Pinning -Based on the initial discussions from [this discussion thread](https://github.com/nodejs/nodejs.org/discussions/5491), we've decided to use a more strict strategy for handling npm dependencies within the Node.js Website. +Based on the initial discussions from [this discussion thread](https://github.com/nodejs/nodejs.org/discussions/5491), we've decided to use a more strict strategy for handling dependencies within the Node.js Website. The intent here is to prevent the build process, or the website itself, from breaking due to changes in dependencies. As some dependencies do not respect semantic versioning, this is a real concern. Pinning dependencies also ensures that we stay fixed on a specific dependency version. For security updates, Dependabot is still configured to give us security alerts when specific dependencies got security advisories. diff --git a/README.md b/README.md index 572b6f53a0bd7..bd52c3b5080ec 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,8 @@ [Nodejs.org](https://nodejs.org/) by the [OpenJS Foundation](https://openjsf.org/) is the official website for the Node.js® JavaScript runtime. This repo is the source code for the website. It is built using [Next.js](https://nextjs.org), a React Framework. ```bash -npm ci -npm run dev +pnpm install --frozen-lockfile +pnpm dev # listening at localhost:3000 ``` diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index dbeafd7b881d1..7550dce11e375 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -4,7 +4,6 @@ import * as mdx from 'eslint-plugin-mdx'; import react from 'eslint-plugin-react'; import tseslint from 'typescript-eslint'; -// eslint-disable-next-line no-relative-import-paths/no-relative-import-paths import baseConfig from '../../eslint.config.js'; const compat = new FlatCompat(); @@ -40,7 +39,7 @@ export default tseslint.config( }, { files: ['**/*.{md,mdx}'], - extends: [mdx.configs.flat], + extends: [mdx.flat], rules: { 'no-irregular-whitespace': 'off', '@next/next/no-img-element': 'off', @@ -78,11 +77,5 @@ export default tseslint.config( }, ], }, - }, - { - files: ['**/*.mjs', '**/*.test.*'], - rules: { - 'no-relative-import-paths/no-relative-import-paths': 'off', - }, } ); diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index 955a4926d8f44..ce4f056acb9f5 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -1,6 +1,5 @@ 'use strict'; - -import withNextIntl from 'next-intl/plugin'; +import createNextIntlPlugin from 'next-intl/plugin'; import { BASE_PATH, ENABLE_STATIC_EXPORT } from './next.constants.mjs'; import { redirects, rewrites } from './next.rewrites.mjs'; @@ -98,4 +97,5 @@ const nextConfig = { }, }; -export default withNextIntl('./i18n.tsx')(nextConfig); +const withNextIntl = createNextIntlPlugin('./i18n.tsx'); +export default withNextIntl(nextConfig); diff --git a/apps/site/package.json b/apps/site/package.json index 7e34d4fb855c1..f1b3968493060 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -2,37 +2,45 @@ "name": "@node-core/website", "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", - "serve": "npm run dev", "build": "cross-env NODE_NO_WARNINGS=1 next build --turbopack", - "start": "cross-env NODE_NO_WARNINGS=1 next start", - "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true NODE_NO_WARNINGS=1 next build", "check-types": "tsc --noEmit", - "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", - "lint:snippets": "node ./scripts/lint-snippets/index.mjs", - "lint:md": "eslint \"**/*.md?(x)\" --cache --cache-strategy=content --cache-location=.eslintmdcache", - "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", + "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true NODE_NO_WARNINGS=1 next build", + "dev": "cross-env NODE_NO_WARNINGS=1 next dev", "lint": "turbo run lint:md lint:snippets lint:js lint:css", + "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", "lint:fix": "turbo run lint:md lint:js lint:css --no-cache -- --fix", + "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", + "lint:md": "eslint \"**/*.md?(x)\" --cache --cache-strategy=content --cache-location=.eslintmdcache", + "lint:snippets": "node ./scripts/lint-snippets/index.mjs", + "scripts:release-post": "cross-env NODE_NO_WARNINGS=1 node scripts/release-post/index.mjs", + "serve": "pnpm dev", + "start": "cross-env NODE_NO_WARNINGS=1 next start", "sync-orama": "node ./scripts/orama-search/sync-orama-cloud.mjs", + "test": "turbo test:unit", "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --experimental-test-module-mocks --enable-source-maps --import=global-jsdom/register --import=tsx --import=tests/setup.jsx --test **/*.test.*", - "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" npm run test:unit", - "test": "turbo test:unit" + "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" pnpm test:unit" }, "dependencies": { "@heroicons/react": "~2.2.0", "@mdx-js/mdx": "^3.1.0", - "@node-core/ui-components": "*", - "@node-core/website-i18n": "*", + "@node-core/ui-components": "workspace:*", + "@node-core/website-i18n": "workspace:*", "@nodevu/core": "0.3.0", + "@opentelemetry/api-logs": "~0.200.0", + "@opentelemetry/instrumentation": "~0.200.0", + "@opentelemetry/resources": "~1.30.1", + "@opentelemetry/sdk-logs": "~0.200.0", "@orama/react-components": "^0.6.4", "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", "@radix-ui/react-tooltip": "^1.1.8", + "@shikijs/core": "^3.2.2", + "@shikijs/engine-javascript": "^3.2.2", "@tailwindcss/postcss": "~4.0.17", + "@types/node": "22.14.0", + "@types/react": "^19.1.0", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", "@vercel/otel": "~1.10.4", @@ -43,14 +51,16 @@ "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", + "hast-util-to-string": "~3.0.1", "next": "15.3.0", "next-intl": "~4.0.2", "next-themes": "~0.4.6", "postcss": "~8.5.3", "postcss-calc": "~10.1.1", "postcss-loader": "~8.1.1", - "react": "19.1.0", - "react-dom": "19.1.0", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "reading-time": "~1.5.0", "rehype-autolink-headings": "~7.1.0", "rehype-slug": "~6.0.0", "remark-gfm": "~4.0.1", @@ -65,18 +75,29 @@ }, "devDependencies": { "@eslint/compat": "~1.2.8", + "@eslint/eslintrc": "~3.3.1", "@next/eslint-plugin-next": "15.2.4", "@testing-library/user-event": "~14.6.1", "@types/semver": "~7.7.0", "eslint-config-next": "15.2.4", "eslint-import-resolver-typescript": "~4.3.1", - "eslint-plugin-mdx": "~3.3.1", + "eslint-plugin-mdx": "~3.4.0", "eslint-plugin-react": "~7.37.4", "eslint-plugin-react-hooks": "5.2.0", "global-jsdom": "^26.0.0", "handlebars": "4.7.8", "jsdom": "^26.0.0", "remark-frontmatter": "5.0.0", + "remark-lint-fenced-code-flag": "^4.2.0", + "remark-lint-first-heading-level": "^4.0.1", + "remark-lint-maximum-line-length": "^4.1.1", + "remark-lint-no-file-name-articles": "^3.0.1", + "remark-lint-no-literal-urls": "^4.0.1", + "remark-lint-no-undefined-references": "^5.0.2", + "remark-lint-no-unused-definitions": "^4.0.2", + "remark-lint-prohibited-strings": "^4.0.0", + "remark-lint-unordered-list-marker-style": "^4.0.1", + "remark-parse": "11.0.0", "remark-preset-lint-node": "5.1.2", "stylelint": "16.17.0", "stylelint-config-standard": "37.0.0", @@ -85,6 +106,7 @@ "tsx": "^4.19.3", "typescript": "~5.8.2", "typescript-eslint": "~8.29.0", + "unified": "^11.0.5", "user-agent-data-types": "0.4.2" } } diff --git a/apps/site/tsconfig.json b/apps/site/tsconfig.json index e65aab6fc99c8..aa0bedd8483c1 100644 --- a/apps/site/tsconfig.json +++ b/apps/site/tsconfig.json @@ -14,7 +14,10 @@ "isolatedModules": true, "jsx": "preserve", "incremental": true, - "paths": { "@/*": ["./*"] }, + "paths": { + "@/*": ["./*"], + "@node-core/ui-components/*": ["../../packages/ui-components/*"] + }, "plugins": [{ "name": "next" }], "baseUrl": "." }, diff --git a/apps/site/vercel.json b/apps/site/vercel.json index 753b312a426f9..7265c09365a6e 100644 --- a/apps/site/vercel.json +++ b/apps/site/vercel.json @@ -1,4 +1,4 @@ { "buildCommand": "turbo build", - "installCommand": "npm install --omit=dev --include-workspace-root" + "installCommand": "pnpm install --prod --frozen-lockfile" } diff --git a/eslint.config.js b/eslint.config.js index 8519c135ff692..0411c1b5193a0 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,6 +1,5 @@ import js from '@eslint/js'; import importX from 'eslint-plugin-import-x'; -import noRelativeImportPaths from 'eslint-plugin-no-relative-import-paths'; export default [ js.configs.recommended, @@ -19,9 +18,6 @@ export default [ }, { files: ['**/*.{js,mjs,ts,tsx}'], - plugins: { - 'no-relative-import-paths': noRelativeImportPaths, - }, rules: { 'import-x/namespace': 'off', 'import-x/no-named-as-default-member': 'off', @@ -44,10 +40,6 @@ export default [ }, }, ], - 'no-relative-import-paths/no-relative-import-paths': [ - 'warn', - { allowSameFolder: true, prefix: '@' }, - ], }, }, ]; diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 474f1653ef731..0000000000000 --- a/package-lock.json +++ /dev/null @@ -1,21567 +0,0 @@ -{ - "name": "nodejs-website", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "nodejs-website", - "license": "MIT", - "workspaces": [ - "apps/*", - "packages/*" - ], - "dependencies": { - "acorn": "^8.14.1", - "husky": "9.1.7", - "lint-staged": "15.5.0", - "turbo": "2.4.4" - }, - "devDependencies": { - "@eslint/js": "~9.23.0", - "@reporters/github": "^1.7.2", - "@testing-library/react": "~16.3.0", - "@types/node": "22.14.0", - "@types/react": "^19.1.0", - "@types/react-dom": "^19.1.1", - "eslint": "~9.23.0", - "eslint-plugin-import-x": "~4.10.0", - "eslint-plugin-no-relative-import-paths": "~1.6.1", - "prettier": "3.5.3", - "prettier-plugin-tailwindcss": "0.6.11" - }, - "engines": { - "node": "v22" - } - }, - "apps/site": { - "name": "@node-core/website", - "dependencies": { - "@heroicons/react": "~2.2.0", - "@mdx-js/mdx": "^3.1.0", - "@node-core/ui-components": "*", - "@node-core/website-i18n": "*", - "@nodevu/core": "0.3.0", - "@orama/react-components": "^0.6.4", - "@oramacloud/client": "^2.1.4", - "@radix-ui/react-slot": "^1.1.2", - "@radix-ui/react-tabs": "^1.1.3", - "@radix-ui/react-toast": "^1.2.6", - "@radix-ui/react-tooltip": "^1.1.8", - "@tailwindcss/postcss": "~4.0.17", - "@vcarl/remark-headings": "~0.1.0", - "@vercel/analytics": "~1.5.0", - "@vercel/otel": "~1.10.4", - "@vercel/speed-insights": "~1.2.0", - "classnames": "~2.5.1", - "cross-env": "7.0.3", - "feed": "~4.2.2", - "github-slugger": "~2.0.0", - "glob": "~11.0.1", - "gray-matter": "~4.0.3", - "next": "15.3.0", - "next-intl": "~4.0.2", - "next-themes": "~0.4.6", - "postcss": "~8.5.3", - "postcss-calc": "~10.1.1", - "postcss-loader": "~8.1.1", - "react": "19.1.0", - "react-dom": "19.1.0", - "rehype-autolink-headings": "~7.1.0", - "rehype-slug": "~6.0.0", - "remark-gfm": "~4.0.1", - "remark-reading-time": "~2.0.1", - "semver": "~7.7.1", - "shiki": "~3.1.0", - "sval": "^0.6.3", - "tailwindcss": "~4.0.17", - "unist-util-visit": "~5.0.0", - "vfile": "~6.0.3", - "vfile-matter": "~5.0.1" - }, - "devDependencies": { - "@eslint/compat": "~1.2.8", - "@next/eslint-plugin-next": "15.2.4", - "@testing-library/user-event": "~14.6.1", - "@types/semver": "~7.7.0", - "eslint-config-next": "15.2.4", - "eslint-import-resolver-typescript": "~4.3.1", - "eslint-plugin-mdx": "~3.3.1", - "eslint-plugin-react": "~7.37.4", - "eslint-plugin-react-hooks": "5.2.0", - "global-jsdom": "^26.0.0", - "handlebars": "4.7.8", - "jsdom": "^26.0.0", - "remark-frontmatter": "5.0.0", - "remark-preset-lint-node": "5.1.2", - "stylelint": "16.17.0", - "stylelint-config-standard": "37.0.0", - "stylelint-order": "6.0.4", - "stylelint-selector-bem-pattern": "4.0.1", - "tsx": "^4.19.3", - "typescript": "~5.8.2", - "typescript-eslint": "~8.29.0", - "user-agent-data-types": "0.4.2" - } - }, - "apps/site/node_modules/@orama/react-components": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@orama/react-components/-/react-components-0.6.4.tgz", - "integrity": "sha512-NY0bN/9FAnqp/wgHUnYI0GdlosSDNLZzxeRPzSfsVJboPXnl2oBdFttjB0eecgDecD599AvJCmDsz167tSfNsg==", - "license": "Apache-2.0", - "dependencies": { - "@orama/wc-components": "0.6.4", - "@stencil/react-output-target": "^0.8.2" - }, - "peerDependencies": { - "react": ">=17.0.0 <20.0.0", - "react-dom": ">=17.0.0 <20.0.0" - } - }, - "apps/site/node_modules/@orama/wc-components": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@orama/wc-components/-/wc-components-0.6.4.tgz", - "integrity": "sha512-FgzIYVVYQV4OPzWwjME2JHNkwh3Sz0vBnUKcrGWHFs4kcGoltl0Ym/dyzArCNZiGQ56NE5E+0xo5ZFbaA8FxBA==", - "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.27.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" - } - }, - "apps/site/node_modules/@orama/wc-components/node_modules/shiki": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", - "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "1.29.2", - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/langs": "1.29.2", - "@shikijs/themes": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "apps/site/node_modules/@shikijs/core": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", - "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", - "license": "MIT", - "dependencies": { - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "apps/site/node_modules/@shikijs/engine-javascript": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", - "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "^2.2.0" - } - }, - "apps/site/node_modules/@shikijs/engine-oniguruma": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", - "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1" - } - }, - "apps/site/node_modules/@shikijs/langs": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", - "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "apps/site/node_modules/@shikijs/themes": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", - "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "apps/site/node_modules/@shikijs/types": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", - "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "apps/site/node_modules/@stencil/core": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.27.0.tgz", - "integrity": "sha512-GOA+pvSpwL734yijTB8+LHesqPq3o/K6IaCrNoZybNVpe6lgVfvciDwPeP1XOj6JZpA/Lp8Uh3U9znoS8qgwOA==", - "license": "MIT", - "bin": { - "stencil": "bin/stencil" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.10.0" - } - }, - "apps/site/node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "apps/site/node_modules/cssstyle": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", - "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.1.1", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "apps/site/node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "apps/site/node_modules/eslint-import-resolver-typescript": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.1.tgz", - "integrity": "sha512-/dR9YMomeBlvfuvX5q0C3Y/2PHC9OCRdT2ijFwdfq/4Bq+4m5/lqstEp9k3P6ocha1pCbhoY9fkwVYLmOqR0VQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.12", - "unrs-resolver": "^1.3.3" - }, - "engines": { - "node": "^16.17.0 || >=18.6.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "apps/site/node_modules/global-jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/global-jsdom/-/global-jsdom-26.0.0.tgz", - "integrity": "sha512-BqXpTNZFjP40N+s4k8Bk9HS8GFVPJB/+TKtwcShM84wLv6C5dH9o1dydI3pL6potanhfDiIAVDbaaGj/uSdRSA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "jsdom": ">=26 <27" - } - }, - "apps/site/node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "apps/site/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "apps/site/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "apps/site/node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "apps/site/node_modules/jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", - "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.1", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "apps/site/node_modules/next-intl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-4.0.2.tgz", - "integrity": "sha512-3cKVflwdrqxCOvAL+DtGN68qR802i0PEj0dttkAD5IK5XxOjugQs4yU8aSakvPMbkOrhEJ+89z5lG2EAqi7Gkw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/amannn" - } - ], - "license": "MIT", - "dependencies": { - "@formatjs/intl-localematcher": "^0.5.4", - "negotiator": "^1.0.0", - "use-intl": "^4.0.2" - }, - "peerDependencies": { - "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0", - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "apps/site/node_modules/next-intl/node_modules/use-intl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-4.0.2.tgz", - "integrity": "sha512-6RAP/5KJMRzLMLS25/BVh2u09cRK8S6HRGc1RnZvqR547qAKZCpjYylOqMPU9eNIirAiKoGmsoUPa7JrlaA/yg==", - "license": "MIT", - "dependencies": { - "@formatjs/fast-memoize": "^2.2.0", - "@schummar/icu-type-parser": "1.21.5", - "intl-messageformat": "^10.5.14" - }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" - } - }, - "apps/site/node_modules/oniguruma-to-es": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", - "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", - "license": "MIT", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" - } - }, - "apps/site/node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "apps/site/node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", - "license": "MIT", - "dependencies": { - "regex": "^5.1.1", - "regex-utilities": "^2.3.0" - } - }, - "apps/site/node_modules/shiki": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.1.0.tgz", - "integrity": "sha512-LdTNyWQlC5zdCaHdcp1zPA1OVA2ivb+KjGOOnGcy02tGaF5ja+dGibWFH7Ar8YlngUgK/scDqworK18Ys9cbYA==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "3.1.0", - "@shikijs/engine-javascript": "3.1.0", - "@shikijs/engine-oniguruma": "3.1.0", - "@shikijs/langs": "3.1.0", - "@shikijs/themes": "3.1.0", - "@shikijs/types": "3.1.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "apps/site/node_modules/shiki/node_modules/@shikijs/core": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.1.0.tgz", - "integrity": "sha512-1ppAOyg3F18N8Ge9DmJjGqRVswihN33rOgPovR6gUHW17Hw1L4RlRhnmVQcsacSHh0A8IO1FIgNbtTxUFwodmg==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.1.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - } - }, - "apps/site/node_modules/shiki/node_modules/@shikijs/engine-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.1.0.tgz", - "integrity": "sha512-/LwkhW17jYi7uPcdaaSQQDNW+xgrHXarkrxYPoC6WPzH2xW5mFMw12doHXJBqxmYvtcTbaatcv2MkH9+3PU1FA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.1.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^3.1.1" - } - }, - "apps/site/node_modules/shiki/node_modules/@shikijs/engine-oniguruma": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.1.0.tgz", - "integrity": "sha512-reRgy8VzDPdiDocuGDD60Rk/jLxgcgy+6H4n6jYLeN2Yw5ikasRjQQx8ERXtDM35yg2v/d6KolDBcK8hYYhcmw==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.1.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "apps/site/node_modules/shiki/node_modules/@shikijs/langs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.1.0.tgz", - "integrity": "sha512-hAM//sExPXAXG3ZDWjrmV6Vlw4zlWFOcT1ZXNhFRBwPP27scZu/ZIdZ+TdTgy06zSvyF4KIjnF8j6+ScKGu6ww==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.1.0" - } - }, - "apps/site/node_modules/shiki/node_modules/@shikijs/themes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.1.0.tgz", - "integrity": "sha512-A4MJmy9+ydLNbNCtkmdTp8a+ON+MMXoUe1KTkELkyu0+pHGOcbouhNuobhZoK59cL4cOST6CCz1x+kUdkp9UZA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.1.0" - } - }, - "apps/site/node_modules/shiki/node_modules/@shikijs/types": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.1.0.tgz", - "integrity": "sha512-F8e7Fy4ihtcNpJG572BZZC1ErYrBrzJ5Cbc9Zi3REgWry43gIvjJ9lFAoUnuy7Bvy4IFz7grUSxL5edfrrjFEA==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "apps/site/node_modules/shiki/node_modules/oniguruma-to-es": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", - "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", - "license": "MIT", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, - "apps/site/node_modules/shiki/node_modules/regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", - "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "apps/site/node_modules/shiki/node_modules/regex-recursion": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", - "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "apps/site/node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "license": "MIT" - }, - "apps/site/node_modules/tailwindcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", - "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", - "license": "MIT" - }, - "apps/site/node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "apps/site/node_modules/tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "apps/site/node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "apps/site/node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "apps/site/node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "apps/site/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "apps/site/node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@actions/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", - "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/exec": "^1.1.1", - "@actions/http-client": "^2.0.1" - } - }, - "node_modules/@actions/exec": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", - "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/io": "^1.0.1" - } - }, - "node_modules/@actions/http-client": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", - "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tunnel": "^0.0.6", - "undici": "^5.25.4" - } - }, - "node_modules/@actions/io": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", - "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@adobe/css-tools": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", - "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", - "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/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" - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "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" - } - }, - "node_modules/@babel/generator": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", - "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.26.10", - "@babel/types": "^7.26.10", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "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" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", - "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", - "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.26.10" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", - "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", - "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "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.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", - "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@csstools/color-helpers": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", - "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", - "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", - "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.0.2", - "@csstools/css-calc": "^2.1.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", - "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", - "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "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": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", - "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", - "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": "^7.0.0" - } - }, - "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/@emnapi/core": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.0.tgz", - "integrity": "sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.0.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.0.tgz", - "integrity": "sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", - "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", - "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", - "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", - "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", - "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", - "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", - "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", - "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", - "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", - "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", - "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", - "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", - "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", - "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", - "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", - "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", - "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", - "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", - "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", - "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", - "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", - "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", - "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", - "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", - "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", - "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", - "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", - "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/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.8", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.8.tgz", - "integrity": "sha512-LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saowA==", - "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.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "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", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", - "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/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/@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/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" - }, - "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.23.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", - "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", - "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.12.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", - "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", - "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", - "license": "MIT" - }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.4.tgz", - "integrity": "sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==", - "license": "MIT", - "dependencies": { - "@formatjs/fast-memoize": "2.2.7", - "@formatjs/intl-localematcher": "0.6.1", - "decimal.js": "^10.4.3", - "tslib": "^2.8.0" - } - }, - "node_modules/@formatjs/ecma402-abstract/node_modules/@formatjs/intl-localematcher": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", - "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@formatjs/fast-memoize": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", - "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.2.tgz", - "integrity": "sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==", - "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "2.3.4", - "@formatjs/icu-skeleton-parser": "1.8.14", - "tslib": "^2.8.0" - } - }, - "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.14", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.14.tgz", - "integrity": "sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==", - "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "2.3.4", - "tslib": "^2.8.0" - } - }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", - "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", - "license": "MIT", - "dependencies": { - "tslib": "2" - } - }, - "node_modules/@heroicons/react": { - "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" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", - "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", - "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.1.0" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", - "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", - "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.1.0" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", - "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", - "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.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", - "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", - "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.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", - "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", - "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.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", - "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", - "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", - "cpu": [ - "ppc64" - ], - "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.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", - "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", - "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", - "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", - "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.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", - "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", - "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", - "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.1.0" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", - "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", - "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.1.0" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", - "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", - "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.1.0" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", - "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", - "cpu": [ - "x64" - ], - "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-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", - "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", - "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.1.0" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", - "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", - "cpu": [ - "x64" - ], - "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-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", - "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.4.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.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", - "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", - "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.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", - "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", - "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", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "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", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "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", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@keyv/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3" - } - }, - "node_modules/@keyv/serialize/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "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.2.1" - } - }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", - "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@lit/react": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.7.tgz", - "integrity": "sha512-cencnwwLXQKiKxjfFzSgZRngcWJzUDZi/04E0fSaF86wZgchMdvTyu+lE36DrUfvuus3bH8+xLPrhM1cTjwpzw==", - "license": "BSD-3-Clause", - "peerDependencies": { - "@types/react": "17 || 18 || 19" - } - }, - "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", - "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdx": "^2.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-util-scope": "^1.0.0", - "estree-walker": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "markdown-extensions": "^2.0.0", - "recma-build-jsx": "^1.0.0", - "recma-jsx": "^1.0.0", - "recma-stringify": "^1.0.0", - "rehype-recma": "^1.0.0", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "source-map": "^0.7.0", - "unified": "^11.0.0", - "unist-util-position-from-estree": "^2.0.0", - "unist-util-stringify-position": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.7.tgz", - "integrity": "sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.3.1", - "@emnapi/runtime": "^1.3.1", - "@tybys/wasm-util": "^0.9.0" - } - }, - "node_modules/@next/env": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.0.tgz", - "integrity": "sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==", - "license": "MIT" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.4.tgz", - "integrity": "sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "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.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.0.tgz", - "integrity": "sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.0.tgz", - "integrity": "sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.0.tgz", - "integrity": "sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.0.tgz", - "integrity": "sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.0.tgz", - "integrity": "sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.0.tgz", - "integrity": "sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.0.tgz", - "integrity": "sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", - "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "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 - }, - "node_modules/@node-core/website-i18n": { - "resolved": "packages/i18n", - "link": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodevu/core": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@nodevu/core/-/core-0.3.0.tgz", - "integrity": "sha512-kVJh6kQViCE8Qf1j7pc7yhUke2kKb1eZM+rqln+EytHqyOq+eZUEtfWbDk1vfWhgiknnAcFOhdVA5apT8rTejQ==", - "license": "MIT", - "dependencies": { - "@nodevu/parsefiles": "^0.0.3", - "luxon": "^3.5.0", - "semver": "^7.6.3" - } - }, - "node_modules/@nodevu/parsefiles": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@nodevu/parsefiles/-/parsefiles-0.0.3.tgz", - "integrity": "sha512-IjwkVqA2SlH8XweoAw7EJkeyPGk7gW9imlvhpywrKiPCLP1H0meG/blNAF5X38pirsmvhxPe/BCyywT7Exwuow==", - "license": "MIT" - }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@npmcli/config": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.3.4.tgz", - "integrity": "sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/package-json": "^5.1.1", - "ci-info": "^4.0.0", - "ini": "^4.1.2", - "nopt": "^7.2.1", - "proc-log": "^4.2.0", - "semver": "^7.3.5", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/config/node_modules/ci-info": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", - "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@npmcli/config/node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", - "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "ini": "^4.1.3", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/git/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" - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/map-workspaces": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", - "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.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", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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" - }, - "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": { - "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/@npmcli/name-from-folder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", - "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/package-json": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", - "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^16.14.0 || >=18.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", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "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", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "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" - }, - "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": { - "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/@npmcli/promise-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", - "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.200.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", - "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", - "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.200.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz", - "integrity": "sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/api-logs": "0.200.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "shimmer": "^1.2.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", - "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs": { - "version": "0.200.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz", - "integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/api-logs": "0.200.0", - "@opentelemetry/core": "2.0.0", - "@opentelemetry/resources": "2.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", - "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", - "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/core": "2.0.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.30.0.tgz", - "integrity": "sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", - "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", - "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=14" - } - }, - "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": { - "@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": "3.1.3", - "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.3.tgz", - "integrity": "sha512-UdtAMLe2RxtqvmfNDJSMpYoQYUpXgs+9qXVVFCO0BqHF86gp+uz8N6ftkaLe1p55OQXmliciw7BH34GFozKLnQ==", - "license": "Apache-2.0", - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/@orama/switch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.1.3.tgz", - "integrity": "sha512-Gtah1T5jhF4hv+Bpl1k8ogAg3klTUwWzpI9sUG2XuaLHKPiob0PrVxD7YxJ06BERkFY0KdcDEK6k5fgIYcDPxA==", - "license": "Apache-2.0", - "peerDependencies": { - "@orama/orama": "3.1.3", - "@oramacloud/client": "^2.1.1" - } - }, - "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/@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", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.0.tgz", - "integrity": "sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", - "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", - "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", - "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.2" - }, - "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-collection": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz", - "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-slot": "1.1.2" - }, - "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-compose-refs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", - "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", - "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-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-dialog": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.7.tgz", - "integrity": "sha512-EIdma8C0C/I6kL6sO02avaCRqi3fmWJpxH6mqbVScorW6nNktzKJT/le7VPho3o/7wCsyRg3z0+Q+Obr0Gy/VQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.6", - "@radix-ui/react-focus-guards": "1.1.2", - "@radix-ui/react-focus-scope": "1.1.3", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-portal": "1.1.5", - "@radix-ui/react-presence": "1.1.3", - "@radix-ui/react-primitive": "2.0.3", - "@radix-ui/react-slot": "1.2.0", - "@radix-ui/react-use-controllable-state": "1.1.1", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "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-dialog/node_modules/@radix-ui/primitive": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", - "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "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-dialog/node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", - "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-dialog/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.6.tgz", - "integrity": "sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.0.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-escape-keydown": "1.1.1" - }, - "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-dialog/node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", - "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", - "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-dialog/node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.3.tgz", - "integrity": "sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.0.3", - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "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-dialog/node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "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-dialog/node_modules/@radix-ui/react-portal": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.5.tgz", - "integrity": "sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.3", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "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-dialog/node_modules/@radix-ui/react-presence": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.3.tgz", - "integrity": "sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "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-dialog/node_modules/@radix-ui/react-primitive": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.3.tgz", - "integrity": "sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.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-dialog/node_modules/@radix-ui/react-slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", - "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "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-dialog/node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", - "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-dialog/node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.1.tgz", - "integrity": "sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "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-dialog/node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", - "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "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-dialog/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", - "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-direction": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", - "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", - "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-dismissable-layer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", - "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@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-dropdown-menu": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.6.tgz", - "integrity": "sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.6", - "@radix-ui/react-primitive": "2.0.2", - "@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-focus-guards": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", - "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", - "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-focus-scope": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", - "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "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-id": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "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-label": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.2.tgz", - "integrity": "sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.2" - }, - "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-menu": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.6.tgz", - "integrity": "sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.5", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.2", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.2", - "@radix-ui/react-portal": "1.1.4", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-roving-focus": "1.1.2", - "@radix-ui/react-slot": "1.1.2", - "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "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-popper": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", - "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", - "license": "MIT", - "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-rect": "1.1.0", - "@radix-ui/react-use-size": "1.1.0", - "@radix-ui/rect": "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-portal": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", - "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.2", - "@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-presence": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", - "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1", - "@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-primitive": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", - "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.1.2" - }, - "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-roving-focus": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz", - "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-use-callback-ref": "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-select": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.6.tgz", - "integrity": "sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.5", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.2", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.2", - "@radix-ui/react-portal": "1.1.4", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-slot": "1.1.2", - "@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-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "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-separator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.3.tgz", - "integrity": "sha512-2omrWKJvxR0U/tkIXezcc1nFMwtLU0+b/rDK40gnzJqTLWQ/TD/D5IYVefp9sC3QWfeQbpSbEA6op9MQKyaALQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.3" - }, - "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-separator/node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "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-separator/node_modules/@radix-ui/react-primitive": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.3.tgz", - "integrity": "sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.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-separator/node_modules/@radix-ui/react-slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", - "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "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-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", - "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1" - }, - "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-tabs": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.3.tgz", - "integrity": "sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-roving-focus": "1.1.2", - "@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.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.6.tgz", - "integrity": "sha512-gN4dpuIVKEgpLn1z5FhzT9mYRUitbfZq9XqN/7kkBMUgFTzTG8x/KszWJugJXHcwxckY8xcKDZPz7kG3o6DsUA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.5", - "@radix-ui/react-portal": "1.1.4", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@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.2" - }, - "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.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.8.tgz", - "integrity": "sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.5", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.2", - "@radix-ui/react-portal": "1.1.4", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.2", - "@radix-ui/react-slot": "1.1.2", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.2" - }, - "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-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", - "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-use-controllable-state": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "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-use-escape-keydown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "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-use-layout-effect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", - "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-use-previous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", - "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", - "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-use-rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", - "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/rect": "1.1.0" - }, - "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-use-size": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", - "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "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-visually-hidden": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.2.tgz", - "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.2" - }, - "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/rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", - "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", - "license": "MIT" - }, - "node_modules/@reporters/github": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@reporters/github/-/github-1.7.2.tgz", - "integrity": "sha512-8mvTyKUxxDXkNIWfzv3FsHVwjr8JCwVtwidQws2neV6YgrsJW6OwTOBBhd01RKrDMXPxgpMQuFEfN9hRuUZGuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/core": "^1.10.0", - "stack-utils": "^2.0.6" - } - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", - "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@schummar/icu-type-parser": { - "version": "1.21.5", - "resolved": "https://registry.npmjs.org/@schummar/icu-type-parser/-/icu-type-parser-1.21.5.tgz", - "integrity": "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==", - "license": "MIT" - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "license": "MIT" - }, - "node_modules/@stencil/core": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.28.2.tgz", - "integrity": "sha512-sHwBNionxzHfmjQ93ffaQOBNvd5HrSn8e5KSsiBBaODgC/g9squZoARYHHJ0VFfUpOXkEoZQ+ASixpUBafG9bA==", - "license": "MIT", - "peer": true, - "bin": { - "stencil": "bin/stencil" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.10.0" - }, - "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" - } - }, - "node_modules/@stencil/react-output-target": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@stencil/react-output-target/-/react-output-target-0.8.2.tgz", - "integrity": "sha512-O7zRCfRbiPmxaW3oaPBB3RFOMQOuy1dfkcUUg+6en6NckrRzC2YEAzzo6iIkppDrPW34TJJRy/mqJUdlBPLJ1g==", - "license": "MIT", - "dependencies": { - "@lit/react": "^1.0.4", - "html-react-parser": "^5.1.10", - "style-object-to-css-string": "^1.0.0", - "ts-morph": "^22.0.0" - }, - "peerDependencies": { - "@stencil/core": ">=3 || >= 4.0.0-beta.0 || >= 4.0.0", - "react": "^18 || ^19", - "react-dom": "^18 || ^19" - }, - "peerDependenciesMeta": { - "@stencil/core": { - "optional": false - }, - "react": { - "optional": false - }, - "react-dom": { - "optional": false - } - } - }, - "node_modules/@stencil/store": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.1.2.tgz", - "integrity": "sha512-wtf9oKps4zBmdLoy1oSZDDc56ux17DZrFNIqqTbdvFXEcPYRzWGD9mRhSC/YxKvC3AdsFXaEsHn7Ph+5fhWcGA==", - "license": "MIT", - "engines": { - "node": ">=18.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.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.12.tgz", - "integrity": "sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "dequal": "^2.0.2", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-interactions": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.12.tgz", - "integrity": "sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.12", - "@storybook/test": "8.6.12", - "polished": "^4.2.2", - "ts-dedent": "^2.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/instrumenter": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.12.tgz", - "integrity": "sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==", - "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.6.12" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/test": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.12.tgz", - "integrity": "sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.12", - "@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.6.12" - } - }, - "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/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "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, - "license": "MIT", - "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, - "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-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, - "license": "MIT", - "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, - "license": "MIT", - "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", - "integrity": "sha512-5n+SXPfMTc4m7sWaJWPWjoHYWc6/B111M2Ia55toQ3GV4ON4vVlTgH9FX+EgCkDticElj99HLTMDJkHRj2yvkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/node-logger": "^8.0.0-alpha.10" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/@storybook/addon-themes": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.12.tgz", - "integrity": "sha512-eqE40MUKTz9lLEOusXjRuDC7DwCSIwlgEnlbvhhEEme8IeKf2di6yvlhenY4nn5QfkUwY1POnZxfJ2OpXj0gqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-viewport": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.12.tgz", - "integrity": "sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-swc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-3.0.0.tgz", - "integrity": "sha512-qkQwQEvHlxwPCHz/xakGfXJusEa1gKMw7enELh6QGopblfN3rMiV084boqiIqBReqWTasSwHOqvuElAu0NQ+8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@swc/core": "^1.10.8", - "swc-loader": "^0.2.6" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@storybook/builder-webpack5": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.12.tgz", - "integrity": "sha512-Z7RsQ/1+HbxdbM69JrEFcTL+pnVKUTMmeURMn5/eOvYTGjBtM18vbQTj0LjCUDIjC+v9U+uX8ZJEUVxFbGcxBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/core-webpack": "8.6.12", - "@types/semver": "^7.3.4", - "browser-assert": "^1.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "cjs-module-lexer": "^1.2.3", - "constants-browserify": "^1.0.0", - "css-loader": "^6.7.1", - "es-module-lexer": "^1.5.0", - "fork-ts-checker-webpack-plugin": "^8.0.0", - "html-webpack-plugin": "^5.5.0", - "magic-string": "^0.30.5", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "semver": "^7.3.7", - "style-loader": "^3.3.1", - "terser-webpack-plugin": "^5.3.1", - "ts-dedent": "^2.0.0", - "url": "^0.11.0", - "util": "^0.12.4", - "util-deprecate": "^1.0.2", - "webpack": "5", - "webpack-dev-middleware": "^6.1.2", - "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@storybook/components": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.12.tgz", - "integrity": "sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/core": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.12.tgz", - "integrity": "sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/theming": "8.6.12", - "better-opn": "^3.0.2", - "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", - "esbuild-register": "^3.5.0", - "jsdoc-type-pratt-parser": "^4.0.0", - "process": "^0.11.10", - "recast": "^0.23.5", - "semver": "^7.6.2", - "util": "^0.12.5", - "ws": "^8.2.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/@storybook/core-webpack": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.12.tgz", - "integrity": "sha512-TiE+KOm0hxb/p0JxeGHKxqTNX+xnTOFsBh6uloCSuvodutJ5pR/XpxKVxwo1gtSc0Uq3qpgbMhW6qYlYQetnKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/csf": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.13.tgz", - "integrity": "sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^2.19.0" - } - }, - "node_modules/@storybook/global": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/manager-api": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.12.tgz", - "integrity": "sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/node-logger": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.6.8.tgz", - "integrity": "sha512-uzUxS6AdQGDh+SpEFZQ7alqv4HUTZojntPtKWgx5aiDK61AU9JGa/MAny18ZVitLgY4FloO46E802gUaWdnYCA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/preset-react-webpack": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.12.tgz", - "integrity": "sha512-aCCHjR/jsVPVThRH7nK70wS0Od44M6hqkkakg3xr7LETZZGj99heen6t4VHvz8gcQYT9l6R/oZwCl7f/PQ3ZBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/core-webpack": "8.6.12", - "@storybook/react": "8.6.12", - "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@types/semver": "^7.3.4", - "find-up": "^5.0.0", - "magic-string": "^0.30.5", - "react-docgen": "^7.0.0", - "resolve": "^1.22.8", - "semver": "^7.3.7", - "tsconfig-paths": "^4.2.0", - "webpack": "5" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "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.6.12" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@storybook/preview-api": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.12.tgz", - "integrity": "sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/react": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.12.tgz", - "integrity": "sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/components": "8.6.12", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.12", - "@storybook/preview-api": "8.6.12", - "@storybook/react-dom-shim": "8.6.12", - "@storybook/theming": "8.6.12" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "@storybook/test": "8.6.12", - "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.6.12", - "typescript": ">= 4.2.x" - }, - "peerDependenciesMeta": { - "@storybook/test": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/@storybook/react-docgen-typescript-plugin": { - "version": "1.0.6--canary.9.0c3f3b7.0", - "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", - "find-cache-dir": "^3.3.1", - "flat-cache": "^3.0.4", - "micromatch": "^4.0.2", - "react-docgen-typescript": "^2.2.2", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "typescript": ">= 4.x", - "webpack": ">= 4" - } - }, - "node_modules/@storybook/react-dom-shim": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.12.tgz", - "integrity": "sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "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.6.12" - } - }, - "node_modules/@storybook/react-webpack5": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.12.tgz", - "integrity": "sha512-wZOjPQ00gu85iQoKgwz5uvM3+bhXrQDVR0ppVAj7vVy6cvLEsJXmqNLHbXPCZuKPmvwzYr1QkslMLCIkF8OGdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/builder-webpack5": "8.6.12", - "@storybook/preset-react-webpack": "8.6.12", - "@storybook/react": "8.6.12" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "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.6.12", - "typescript": ">= 4.2.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@storybook/theming": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.12.tgz", - "integrity": "sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@swc/core": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.11.tgz", - "integrity": "sha512-pCVY2Wn6dV/labNvssk9b3Owi4WOYsapcbWm90XkIj4xH/56Z6gzja9fsU+4MdPuEfC2Smw835nZHcdCFGyX6A==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.19" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.11.11", - "@swc/core-darwin-x64": "1.11.11", - "@swc/core-linux-arm-gnueabihf": "1.11.11", - "@swc/core-linux-arm64-gnu": "1.11.11", - "@swc/core-linux-arm64-musl": "1.11.11", - "@swc/core-linux-x64-gnu": "1.11.11", - "@swc/core-linux-x64-musl": "1.11.11", - "@swc/core-win32-arm64-msvc": "1.11.11", - "@swc/core-win32-ia32-msvc": "1.11.11", - "@swc/core-win32-x64-msvc": "1.11.11" - }, - "peerDependencies": { - "@swc/helpers": "*" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.11.tgz", - "integrity": "sha512-vJcjGVDB8cZH7zyOkC0AfpFYI/7GHKG0NSsH3tpuKrmoAXJyCYspKPGid7FT53EAlWreN7+Pew+bukYf5j+Fmg==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.11.tgz", - "integrity": "sha512-/N4dGdqEYvD48mCF3QBSycAbbQd3yoZ2YHSzYesQf8usNc2YpIhYqEH3sql02UsxTjEFOJSf1bxZABDdhbSl6A==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.11.tgz", - "integrity": "sha512-hsBhKK+wVXdN3x9MrL5GW0yT8o9GxteE5zHAI2HJjRQel3HtW7m5Nvwaq+q8rwMf4YQRd8ydbvwl4iUOZx7i2Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.11.tgz", - "integrity": "sha512-YOCdxsqbnn/HMPCNM6nrXUpSndLXMUssGTtzT7ffXqr7WuzRg2e170FVDVQFIkb08E7Ku5uOnnUVAChAJQbMOQ==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.11.tgz", - "integrity": "sha512-nR2tfdQRRzwqR2XYw9NnBk9Fdvff/b8IiJzDL28gRR2QiJWLaE8LsRovtWrzCOYq6o5Uu9cJ3WbabWthLo4jLw==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.11.tgz", - "integrity": "sha512-b4gBp5HA9xNWNC5gsYbdzGBJWx4vKSGybGMGOVWWuF+ynx10+0sA/o4XJGuNHm8TEDuNh9YLKf6QkIO8+GPJ1g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.11.tgz", - "integrity": "sha512-dEvqmQVswjNvMBwXNb8q5uSvhWrJLdttBSef3s6UC5oDSwOr00t3RQPzyS3n5qmGJ8UMTdPRmsopxmqaODISdg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.11.tgz", - "integrity": "sha512-aZNZznem9WRnw2FbTqVpnclvl8Q2apOBW2B316gZK+qxbe+ktjOUnYaMhdCG3+BYggyIBDOnaJeQrXbKIMmNdw==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.11.tgz", - "integrity": "sha512-DjeJn/IfjgOddmJ8IBbWuDK53Fqw7UvOz7kyI/728CSdDYC3LXigzj3ZYs4VvyeOt+ZcQZUB2HA27edOifomGw==", - "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.11.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.11.tgz", - "integrity": "sha512-Gp/SLoeMtsU4n0uRoKDOlGrRC6wCfifq7bqLwSlAG8u8MyJYJCcwjg7ggm0rhLdC2vbiZ+lLVl3kkETp+JUvKg==", - "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.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@swc/types": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.19.tgz", - "integrity": "sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.17.tgz", - "integrity": "sha512-LIdNwcqyY7578VpofXyqjH6f+3fP4nrz7FBLki5HpzqjYfXdF2m/eW18ZfoKePtDGg90Bvvfpov9d2gy5XVCbg==", - "license": "MIT", - "dependencies": { - "enhanced-resolve": "^5.18.1", - "jiti": "^2.4.2", - "tailwindcss": "4.0.17" - } - }, - "node_modules/@tailwindcss/node/node_modules/tailwindcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", - "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", - "license": "MIT" - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.17.tgz", - "integrity": "sha512-B4OaUIRD2uVrULpAD1Yksx2+wNarQr2rQh65nXqaqbLY1jCd8fO+3KLh/+TH4Hzh2NTHQvgxVbPdUDOtLk7vAw==", - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.0.17", - "@tailwindcss/oxide-darwin-arm64": "4.0.17", - "@tailwindcss/oxide-darwin-x64": "4.0.17", - "@tailwindcss/oxide-freebsd-x64": "4.0.17", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.17", - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.17", - "@tailwindcss/oxide-linux-arm64-musl": "4.0.17", - "@tailwindcss/oxide-linux-x64-gnu": "4.0.17", - "@tailwindcss/oxide-linux-x64-musl": "4.0.17", - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.17", - "@tailwindcss/oxide-win32-x64-msvc": "4.0.17" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.17.tgz", - "integrity": "sha512-3RfO0ZK64WAhop+EbHeyxGThyDr/fYhxPzDbEQjD2+v7ZhKTb2svTWy+KK+J1PHATus2/CQGAGp7pHY/8M8ugg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.17.tgz", - "integrity": "sha512-e1uayxFQCCDuzTk9s8q7MC5jFN42IY7nzcr5n0Mw/AcUHwD6JaBkXnATkD924ZsHyPDvddnusIEvkgLd2CiREg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.17.tgz", - "integrity": "sha512-d6z7HSdOKfXQ0HPlVx1jduUf/YtBuCCtEDIEFeBCzgRRtDsUuRtofPqxIVaSCUTOk5+OfRLonje6n9dF6AH8wQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.17.tgz", - "integrity": "sha512-EjrVa6lx3wzXz3l5MsdOGtYIsRjgs5Mru6lDv4RuiXpguWeOb3UzGJ7vw7PEzcFadKNvNslEQqoAABeMezprxQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.17.tgz", - "integrity": "sha512-65zXfCOdi8wuaY0Ye6qMR5LAXokHYtrGvo9t/NmxvSZtCCitXV/gzJ/WP5ksXPhff1SV5rov0S+ZIZU+/4eyCQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.17.tgz", - "integrity": "sha512-+aaq6hJ8ioTdbJV5IA1WjWgLmun4T7eYLTvJIToiXLHy5JzUERRbIZjAcjgK9qXMwnvuu7rqpxzej+hGoEcG5g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.17.tgz", - "integrity": "sha512-/FhWgZCdUGAeYHYnZKekiOC0aXFiBIoNCA0bwzkICiMYS5Rtx2KxFfMUXQVnl4uZRblG5ypt5vpPhVaXgGk80w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.17.tgz", - "integrity": "sha512-gELJzOHK6GDoIpm/539Golvk+QWZjxQcbkKq9eB2kzNkOvrP0xc5UPgO9bIMNt1M48mO8ZeNenCMGt6tfkvVBg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.17.tgz", - "integrity": "sha512-68NwxcJrZn94IOW4TysMIbYv5AlM6So1luTlbYUDIGnKma1yTFGBRNEJ+SacJ3PZE2rgcTBNRHX1TB4EQ/XEHw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.17.tgz", - "integrity": "sha512-AkBO8efP2/7wkEXkNlXzRD4f/7WerqKHlc6PWb5v0jGbbm22DFBLbIM19IJQ3b+tNewQZa+WnPOaGm0SmwMNjw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.17.tgz", - "integrity": "sha512-7/DTEvXcoWlqX0dAlcN0zlmcEu9xSermuo7VNGX9tJ3nYMdo735SHvbrHDln1+LYfF6NhJ3hjbpbjkMOAGmkDg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.0.17.tgz", - "integrity": "sha512-qeJbRTB5FMZXmuJF+eePd235EGY6IyJZF0Bh0YM6uMcCI4L9Z7dy+lPuLAhxOJzxnajsbjPoDAKOuAqZRtf1PQ==", - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.0.17", - "@tailwindcss/oxide": "4.0.17", - "lightningcss": "1.29.2", - "postcss": "^8.4.41", - "tailwindcss": "4.0.17" - } - }, - "node_modules/@tailwindcss/postcss/node_modules/tailwindcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", - "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", - "license": "MIT" - }, - "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/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/@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/react": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", - "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@testing-library/dom": "^10.0.0", - "@types/react": "^18.0.0 || ^19.0.0", - "@types/react-dom": "^18.0.0 || ^19.0.0", - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@testing-library/user-event": { - "version": "14.6.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", - "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "node_modules/@ts-morph/common": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.23.0.tgz", - "integrity": "sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==", - "license": "MIT", - "dependencies": { - "fast-glob": "^3.3.2", - "minimatch": "^9.0.3", - "mkdirp": "^3.0.1", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@ts-morph/common/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/concat-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", - "integrity": "sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/doctrine": { - "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" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "license": "MIT" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "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" - }, - "node_modules/@types/is-empty": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", - "integrity": "sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdx": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", - "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/parse-json": { - "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" - }, - "node_modules/@types/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz", - "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==", - "license": "MIT", - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.1.tgz", - "integrity": "sha512-jFf/woGTVTjUJsl2O7hcopJ1r0upqoq/vIOoCj0yLh3RIXxWcljlpuZ+vEBRXsymD1jhfeJrlyTy/S1UW+4y1w==", - "devOptional": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.0.0" - } - }, - "node_modules/@types/resolve": { - "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" - }, - "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/shimmer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", - "license": "MIT", - "peer": true - }, - "node_modules/@types/supports-color": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", - "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", - "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", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", - "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/type-utils": "8.29.0", - "@typescript-eslint/utils": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - }, - "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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", - "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", - "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.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/type-utils": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", - "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.29.0", - "@typescript-eslint/utils": "8.29.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", - "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", - "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/typescript-estree": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", - "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", - "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", - "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.29.0", - "eslint-visitor-keys": "^4.2.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/visitor-keys/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/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.3.3.tgz", - "integrity": "sha512-EpRILdWr3/xDa/7MoyfO7JuBIJqpBMphtu4+80BK1bRfFcniVT74h3Z7q1+WOc92FuIAYatB1vn9TJR67sORGw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.3.3.tgz", - "integrity": "sha512-ntj/g7lPyqwinMJWZ+DKHBse8HhVxswGTmNgFKJtdgGub3M3zp5BSZ3bvMP+kBT6dnYJLSVlDqdwOq1P8i0+/g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.3.3.tgz", - "integrity": "sha512-l6BT8f2CU821EW7U8hSUK8XPq4bmyTlt9Mn4ERrfjJNoCw0/JoHAh9amZZtV3cwC3bwwIat+GUnrcHTG9+qixw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.3.3.tgz", - "integrity": "sha512-8ScEc5a4y7oE2BonRvzJ+2GSkBaYWyh0/Ko4Q25e/ix6ANpJNhwEPZvCR6GVRmsQAYMIfQvYLdM6YEN+qRjnAQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.3.3.tgz", - "integrity": "sha512-8qQ6l1VTzLNd3xb2IEXISOKwMGXDCzY/UNy/7SovFW2Sp0K3YbL7Ao7R18v6SQkLqQlhhqSBIFRk+u6+qu5R5A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.3.3.tgz", - "integrity": "sha512-v81R2wjqcWXJlQY23byqYHt9221h4anQ6wwN64oMD/WAE+FmxPHFZee5bhRkNVtzqO/q7wki33VFWlhiADwUeQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.3.3.tgz", - "integrity": "sha512-cAOx/j0u5coMg4oct/BwMzvWJdVciVauUvsd+GQB/1FZYKQZmqPy0EjJzJGbVzFc6gbnfEcSqvQE6gvbGf2N8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.3.3.tgz", - "integrity": "sha512-mq2blqwErgDJD4gtFDlTX/HZ7lNP8YCHYFij2gkXPtMzrXxPW1hOtxL6xg4NWxvnj4bppppb0W3s/buvM55yfg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.3.3.tgz", - "integrity": "sha512-u0VRzfFYysarYHnztj2k2xr+eu9rmgoTUUgCCIT37Nr+j0A05Xk2c3RY8Mh5+DhCl2aYibihnaAEJHeR0UOFIQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.3.3.tgz", - "integrity": "sha512-OrVo5ZsG29kBF0Ug95a2KidS16PqAMmQNozM6InbquOfW/udouk063e25JVLqIBhHLB2WyBnixOQ19tmeC/hIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.3.3.tgz", - "integrity": "sha512-PYnmrwZ4HMp9SkrOhqPghY/aoL+Rtd4CQbr93GlrRTjK6kDzfMfgz3UH3jt6elrQAfupa1qyr1uXzeVmoEAxUA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.3.3.tgz", - "integrity": "sha512-81AnQY6fShmktQw4hWDUIilsKSdvr/acdJ5azAreu2IWNlaJOKphJSsUVWE+yCk6kBMoQyG9ZHCb/krb5K0PEA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.3.3.tgz", - "integrity": "sha512-X/42BMNw7cW6xrB9syuP5RusRnWGoq+IqvJO8IDpp/BZg64J1uuIW6qA/1Cl13Y4LyLXbJVYbYNSKwR/FiHEng==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.3.3.tgz", - "integrity": "sha512-EGNnNGQxMU5aTN7js3ETYvuw882zcO+dsVjs+DwO2j/fRVKth87C8e2GzxW1L3+iWAXMyJhvFBKRavk9Og1Z6A==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.3.3.tgz", - "integrity": "sha512-GraLbYqOJcmW1qY3osB+2YIiD62nVf2/bVLHZmrb4t/YSUwE03l7TwcDJl08T/Tm3SVhepX8RQkpzWbag/Sb4w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vcarl/remark-headings": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@vcarl/remark-headings/-/remark-headings-0.1.0.tgz", - "integrity": "sha512-ffQxJUcapJ9Bk+fiGN49YJ9RaYMibrSTSezB1Fcrtu+0YSZxA3bsaLlIv1u/4sjPIeW/BKrs4xtMT3l3P9Ba5Q==", - "license": "MIT", - "dependencies": { - "mdast-util-to-string": "^3.1.0", - "unist-util-visit": "^4.0.0" - } - }, - "node_modules/@vcarl/remark-headings/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@vcarl/remark-headings/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@vercel/analytics": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.5.0.tgz", - "integrity": "sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==", - "license": "MPL-2.0", - "peerDependencies": { - "@remix-run/react": "^2", - "@sveltejs/kit": "^1 || ^2", - "next": ">= 13", - "react": "^18 || ^19 || ^19.0.0-rc", - "svelte": ">= 4", - "vue": "^3", - "vue-router": "^4" - }, - "peerDependenciesMeta": { - "@remix-run/react": { - "optional": true - }, - "@sveltejs/kit": { - "optional": true - }, - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "svelte": { - "optional": true - }, - "vue": { - "optional": true - }, - "vue-router": { - "optional": true - } - } - }, - "node_modules/@vercel/otel": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@vercel/otel/-/otel-1.10.4.tgz", - "integrity": "sha512-X01cOLU2Aiku4y1Vn9HQ8VmkQEdIQiWhjHa7DEUspcNGNg0Xm7GYAU7ErZ0pH/5spsrvb2wpIIHSBFgs0M5p4g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.7.0", - "@opentelemetry/api-logs": ">=0.46.0 && <1.0.0", - "@opentelemetry/instrumentation": ">=0.46.0 && <1.0.0", - "@opentelemetry/resources": "^1.19.0", - "@opentelemetry/sdk-logs": ">=0.46.0 && <1.0.0", - "@opentelemetry/sdk-metrics": "^1.19.0", - "@opentelemetry/sdk-trace-base": "^1.19.0" - } - }, - "node_modules/@vercel/speed-insights": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.2.0.tgz", - "integrity": "sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw==", - "hasInstallScript": true, - "license": "Apache-2.0", - "peerDependencies": { - "@sveltejs/kit": "^1 || ^2", - "next": ">= 13", - "react": "^18 || ^19 || ^19.0.0-rc", - "svelte": ">= 4", - "vue": "^3", - "vue-router": "^4" - }, - "peerDependenciesMeta": { - "@sveltejs/kit": { - "optional": true - }, - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "svelte": { - "optional": true - }, - "vue": { - "optional": true - }, - "vue-router": { - "optional": true - } - } - }, - "node_modules/@vitest/expect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", - "chai": "^5.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/@vitest/utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.0.5", - "estree-walker": "^3.0.3", - "loupe": "^3.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", - "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", - "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.1.9", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "devOptional": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/ast-types": { - "version": "0.16.1", - "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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "license": "MIT", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "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/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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" - }, - "node_modules/better-opn": { - "version": "3.0.2", - "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" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boolbase": { - "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" - }, - "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/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-assert": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", - "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "devOptional": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/cacheable": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", - "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "hookified": "^1.7.1", - "keyv": "^5.3.1" - } - }, - "node_modules/cacheable/node_modules/keyv": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz", - "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@keyv/serialize": "^1.0.3" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "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" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001707", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", - "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "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" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/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/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "license": "MIT" - }, - "node_modules/classnames": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", - "license": "MIT" - }, - "node_modules/clean-css": { - "version": "5.3.3", - "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" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "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" - } - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "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", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "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/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/code-block-writer": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", - "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", - "license": "MIT" - }, - "node_modules/collapse-white-space": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "license": "MIT", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "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==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==", - "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/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "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" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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/commondir": { - "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" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/constants-browserify": { - "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" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "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", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-functions-list": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", - "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12 || >=16" - } - }, - "node_modules/css-loader": { - "version": "6.11.0", - "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", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "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/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "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" - } - }, - "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/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", - "license": "MIT" - }, - "node_modules/decode-named-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", - "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "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" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "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" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "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" - } - }, - "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", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "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/dompurify": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", - "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", - "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", - "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", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.123", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz", - "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==", - "devOptional": true, - "license": "ISC" - }, - "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/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", - "license": "MIT" - }, - "node_modules/endent": { - "version": "2.1.0", - "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", - "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.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esast-util-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", - "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/esast-util-from-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", - "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "acorn": "^8.0.0", - "esast-util-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/esbuild": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", - "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.2", - "@esbuild/android-arm": "0.25.2", - "@esbuild/android-arm64": "0.25.2", - "@esbuild/android-x64": "0.25.2", - "@esbuild/darwin-arm64": "0.25.2", - "@esbuild/darwin-x64": "0.25.2", - "@esbuild/freebsd-arm64": "0.25.2", - "@esbuild/freebsd-x64": "0.25.2", - "@esbuild/linux-arm": "0.25.2", - "@esbuild/linux-arm64": "0.25.2", - "@esbuild/linux-ia32": "0.25.2", - "@esbuild/linux-loong64": "0.25.2", - "@esbuild/linux-mips64el": "0.25.2", - "@esbuild/linux-ppc64": "0.25.2", - "@esbuild/linux-riscv64": "0.25.2", - "@esbuild/linux-s390x": "0.25.2", - "@esbuild/linux-x64": "0.25.2", - "@esbuild/netbsd-arm64": "0.25.2", - "@esbuild/netbsd-x64": "0.25.2", - "@esbuild/openbsd-arm64": "0.25.2", - "@esbuild/openbsd-x64": "0.25.2", - "@esbuild/sunos-x64": "0.25.2", - "@esbuild/win32-arm64": "0.25.2", - "@esbuild/win32-ia32": "0.25.2", - "@esbuild/win32-x64": "0.25.2" - } - }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "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" - }, - "peerDependencies": { - "esbuild": ">=0.12 <1" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", - "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", - "@eslint/config-helpers": "^0.2.0", - "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.23.0", - "@eslint/plugin-kit": "^0.2.7", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-next": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.4.tgz", - "integrity": "sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@next/eslint-plugin-next": "15.2.4", - "@rushstack/eslint-patch": "^1.10.3", - "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^5.0.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.7.tgz", - "integrity": "sha512-U7k84gOzrfl09c33qrIbD3TkWTWu3nt3dK5sDajHSekfoLlYGusIwSdPlPzVeA6TFpi0Wpj+ZdBD8hX4hxPoww==", - "dev": true, - "license": "ISC", - "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.3.7", - "enhanced-resolve": "^5.15.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^1.0.2", - "stable-hash": "^0.0.4", - "tinyglobby": "^0.2.12" - }, - "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_modules/eslint-mdx": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.3.1.tgz", - "integrity": "sha512-3koPGGjGOKXxWBIY0ExcMhtEGWRpbM/xrqIp6c4XDxZOMs/nIUEZKnaKZf+sAMRtqdv5Z99Nq5izWyCLoTdcGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.1", - "acorn-jsx": "^5.3.2", - "espree": "^9.6.1 || ^10.3.0", - "estree-util-visit": "^2.0.0", - "remark-mdx": "^3.1.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "synckit": "^0.10.3", - "tslib": "^2.8.1", - "unified": "^11.0.5", - "unified-engine": "^11.2.2", - "unist-util-visit": "^5.0.0", - "uvu": "^0.5.6", - "vfile": "^6.0.3" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "eslint": ">=8.0.0", - "remark-lint-file-extension": "*" - }, - "peerDependenciesMeta": { - "remark-lint-file-extension": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import-x": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.10.0.tgz", - "integrity": "sha512-5ej+0WILhX3D6wkcdsyYmPp10SUIK6fmuZ6KS8nf9MD8CJ6/S/3Dl7m21g+MLeaTMsvcEXo3JunNAbgHwXxs/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.0", - "@types/doctrine": "^0.0.9", - "@typescript-eslint/utils": "^8.28.0", - "debug": "^4.4.0", - "doctrine": "^3.0.0", - "eslint-import-resolver-node": "^0.3.9", - "get-tsconfig": "^4.10.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.3 || ^10.0.1", - "semver": "^7.7.1", - "stable-hash": "^0.0.5", - "tslib": "^2.8.1", - "unrs-resolver": "^1.3.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, - "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": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "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", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-import/node_modules/strip-bom": { - "version": "3.0.0", - "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" - } - }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "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": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-mdx": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.3.1.tgz", - "integrity": "sha512-YXm2YANiJ3Sl/6AdZUeR53deGG1JI6rG9crHITR2Mtb9k8SFWRspoHetnIvaYTEfgPsvUwAwVgT1JxRoZywpTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-mdx": "^3.3.1", - "mdast-util-from-markdown": "^2.0.2", - "remark-mdx": "^3.1.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "synckit": "^0.10.3", - "tslib": "^2.8.1", - "unified": "^11.0.5", - "vfile": "^6.0.3" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "eslint": ">=8.0.0" - } - }, - "node_modules/eslint-plugin-no-relative-import-paths": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-relative-import-paths/-/eslint-plugin-no-relative-import-paths-1.6.1.tgz", - "integrity": "sha512-YZNeOnsOrJcwhFw0X29MXjIzu2P/f5X2BZDPWw1R3VUYBRFxNIh77lyoL/XrMU9ewZNQPcEvAgL/cBOT1P330A==", - "dev": true, - "license": "ISC" - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", - "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "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/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-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": "*" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "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" - } - }, - "node_modules/eslint-plugin-storybook": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.12.0.tgz", - "integrity": "sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf": "^0.1.11", - "@typescript-eslint/utils": "^8.8.1", - "ts-dedent": "^2.2.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "eslint": ">=8" - } - }, - "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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/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/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==", - "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/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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/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/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/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" - }, - "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": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "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", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "devOptional": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-util-attach-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", - "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-build-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", - "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-walker": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-scope": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", - "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-to-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", - "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-value-to-estree": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", - "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", - "license": "MIT", - "dependencies": { - "is-plain-obj": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/estree-util-visit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "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.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "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/fast-json-parse": { - "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" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "devOptional": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fault": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", - "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/feed": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", - "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", - "license": "MIT", - "dependencies": { - "xml-js": "^1.6.11" - }, - "engines": { - "node": ">=0.4.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==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-entry-cache/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": ">=16" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "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", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "8.0.0", - "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", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" - } - }, - "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==", - "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/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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "7.1.0", - "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", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "10.1.0", - "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", - "universalify": "^2.0.0" - }, - "engines": { - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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": "*" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/fs-monkey": { - "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" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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==", - "dev": true, - "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", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "license": "ISC" - }, - "node_modules/glob": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", - "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" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "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/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/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true, - "license": "MIT" - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "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" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-util-heading-rank": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", - "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-estree": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", - "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-attach-comments": "^3.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", - "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-string": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", - "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/he": { - "version": "1.2.0", - "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" - } - }, - "node_modules/highlight.js": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", - "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/hookified": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", - "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", - "dev": true, - "license": "MIT" - }, - "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/hosted-git-info/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" - }, - "node_modules/html-dom-parser": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-5.0.13.tgz", - "integrity": "sha512-B7JonBuAfG32I7fDouUQEogBrz3jK9gAuN1r1AaXpED6dIhtg/JwiSRhjGL7aOJwRz3HU4efowCjQBaoXiREqg==", - "license": "MIT", - "dependencies": { - "domhandler": "5.0.3", - "htmlparser2": "10.0.0" - } - }, - "node_modules/html-dom-parser/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/html-dom-parser/node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/html-dom-parser/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/html-dom-parser/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/html-dom-parser/node_modules/entities": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", - "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/html-dom-parser/node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" - } - }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "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", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-react-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-5.2.2.tgz", - "integrity": "sha512-yA5012CJGSFWYZsgYzfr6HXJgDap38/AEP4ra8Cw+WHIi2ZRDXRX/QVYdumRf1P8zKyScKd6YOrWYvVEiPfGKg==", - "license": "MIT", - "dependencies": { - "domhandler": "5.0.3", - "html-dom-parser": "5.0.13", - "react-property": "2.0.2", - "style-to-js": "1.1.16" - }, - "peerDependencies": { - "@types/react": "0.14 || 15 || 16 || 17 || 18 || 19", - "react": "0.14 || 15 || 16 || 17 || 18 || 19" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/html-react-parser/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.6.3", - "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", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "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/husky": { - "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" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "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" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-in-the-middle": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.1.tgz", - "integrity": "sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "acorn": "^8.14.0", - "acorn-import-attributes": "^1.9.5", - "cjs-module-lexer": "^1.2.2", - "module-details-from-path": "^1.0.3" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", - "license": "MIT" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/intl-messageformat": { - "version": "10.7.16", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.16.tgz", - "integrity": "sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==", - "license": "BSD-3-Clause", - "dependencies": { - "@formatjs/ecma402-abstract": "2.3.4", - "@formatjs/fast-memoize": "2.2.7", - "@formatjs/icu-messageformat-parser": "2.11.2", - "tslib": "^2.8.0" - } - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "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", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-bun-module": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz", - "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.6.3" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-empty": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", - "integrity": "sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", - "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.1.0", - "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" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/known-css-properties": { - "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" - }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lightningcss": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", - "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.29.2", - "lightningcss-darwin-x64": "1.29.2", - "lightningcss-freebsd-x64": "1.29.2", - "lightningcss-linux-arm-gnueabihf": "1.29.2", - "lightningcss-linux-arm64-gnu": "1.29.2", - "lightningcss-linux-arm64-musl": "1.29.2", - "lightningcss-linux-x64-gnu": "1.29.2", - "lightningcss-linux-x64-musl": "1.29.2", - "lightningcss-win32-arm64-msvc": "1.29.2", - "lightningcss-win32-x64-msvc": "1.29.2" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", - "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", - "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", - "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", - "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", - "cpu": [ - "arm" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", - "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", - "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", - "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", - "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", - "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", - "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "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.5.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.0.tgz", - "integrity": "sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==", - "license": "MIT", - "dependencies": { - "chalk": "^5.4.1", - "commander": "^13.1.0", - "debug": "^4.4.0", - "execa": "^8.0.1", - "lilconfig": "^3.1.3", - "listr2": "^8.2.5", - "micromatch": "^4.0.8", - "pidtree": "^0.6.0", - "string-argv": "^0.3.2", - "yaml": "^2.7.0" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "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", - "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", - "license": "MIT", - "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "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", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/listr2/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "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", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "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", - "integrity": "sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@npmcli/config": "^8.0.0", - "import-meta-resolve": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "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", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "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", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", - "dev": true, - "license": "MIT" - }, - "node_modules/lower-case": { - "version": "2.0.2", - "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" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/luxon": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", - "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "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" - } - }, - "node_modules/map-or-similar": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true, - "license": "MIT" - }, - "node_modules/markdown-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", - "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "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", - "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", - "license": "MIT", - "funding": { - "type": "github", - "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/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-comment-marker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-3.0.0.tgz", - "integrity": "sha512-bt08sLmTNg00/UtVDiqZKocxqvQqqyQZAg1uaRuO/4ysXV5motg7RolF5o5yy/sY1rG0v2XgZEqFWho1+2UquA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-mdx-expression": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-directive": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", - "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-frontmatter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", - "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "escape-string-regexp": "^5.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-gfm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", - "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-gfm-autolink-literal": "^2.0.0", - "mdast-util-gfm-footnote": "^2.0.0", - "mdast-util-gfm-strikethrough": "^2.0.0", - "mdast-util-gfm-table": "^2.0.0", - "mdast-util-gfm-task-list-item": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", - "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "ccount": "^2.0.0", - "devlop": "^1.0.0", - "mdast-util-find-and-replace": "^3.0.0", - "micromark-util-character": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-heading-style": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-3.0.0.tgz", - "integrity": "sha512-tsUfM9Kj9msjlemA/38Z3pvraQay880E3zP2NgIthMoGcpU9bcPX9oSM6QC/+eFXGGB4ba+VCB1dKAPHB7Veug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", - "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", - "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", - "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string/node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/mdast-util-to-string/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "license": "MIT" - }, - "node_modules/memfs": { - "version": "3.5.3", - "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" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/memoizerific": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", - "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "dev": true, - "license": "MIT", - "dependencies": { - "map-or-similar": "^1.5.0" - } - }, - "node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-frontmatter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", - "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fault": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", - "license": "MIT", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^2.0.0", - "micromark-extension-gfm-footnote": "^2.0.0", - "micromark-extension-gfm-strikethrough": "^2.0.0", - "micromark-extension-gfm-table": "^2.0.0", - "micromark-extension-gfm-tagfilter": "^2.0.0", - "micromark-extension-gfm-task-list-item": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", - "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", - "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz", - "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==", - "license": "MIT", - "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-md": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", - "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", - "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", - "license": "MIT", - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^3.0.0", - "micromark-extension-mdx-jsx": "^3.0.0", - "micromark-extension-mdx-md": "^2.0.0", - "micromark-extension-mdxjs-esm": "^3.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", - "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz", - "integrity": "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-events-to-acorn": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", - "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "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" - } - }, - "node_modules/mime-types": { - "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" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "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", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", - "license": "MIT", - "peer": true - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/next": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/next/-/next-15.3.0.tgz", - "integrity": "sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==", - "license": "MIT", - "dependencies": { - "@next/env": "15.3.0", - "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.15", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.3.0", - "@next/swc-darwin-x64": "15.3.0", - "@next/swc-linux-arm64-gnu": "15.3.0", - "@next/swc-linux-arm64-musl": "15.3.0", - "@next/swc-linux-x64-gnu": "15.3.0", - "@next/swc-linux-x64-musl": "15.3.0", - "@next/swc-win32-arm64-msvc": "15.3.0", - "@next/swc-win32-x64-msvc": "15.3.0", - "sharp": "^0.34.1" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next-themes": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", - "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/no-case": { - "version": "3.0.4", - "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" - } - }, - "node_modules/node-abort-controller": { - "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" - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/nopt": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", - "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-install-checks": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", - "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", - "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-package-arg": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", - "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", - "dev": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm-pick-manifest": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", - "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "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" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nwsapi": { - "version": "2.2.19", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.19.tgz", - "integrity": "sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/objectorarray": { - "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" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.2", - "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", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/param-case": { - "version": "3.0.4", - "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" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^4.5.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "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" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "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/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", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "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/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/polished": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", - "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.17.8" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-bem-linter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-bem-linter/-/postcss-bem-linter-4.0.1.tgz", - "integrity": "sha512-jTG3uMo6n2YyxLBPLsRN+5R9djNJZ3mirAugvnYbZaZOwPmLb/MaQ2uql0fSdVYegjZBmX8tW5B0mfZigiXZ9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimatch": "^3.1.2", - "postcss-resolve-nested-selector": "^0.1.1" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", - "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^18.12 || ^20.9 || >=22.0" - }, - "peerDependencies": { - "postcss": "^8.4.38" - } - }, - "node_modules/postcss-loader": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", - "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", - "license": "MIT", - "dependencies": { - "cosmiconfig": "^9.0.0", - "jiti": "^1.20.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/postcss-loader/node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "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" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", - "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.2.1", - "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" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "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" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-safe-parser": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", - "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "engines": { - "node": ">=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" - } - }, - "node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-sorting": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", - "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8.4.20" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", - "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.21.3" - }, - "peerDependencies": { - "@ianvs/prettier-plugin-sort-imports": "*", - "@prettier/plugin-pug": "*", - "@shopify/prettier-plugin-liquid": "*", - "@trivago/prettier-plugin-sort-imports": "*", - "@zackad/prettier-plugin-twig": "*", - "prettier": "^3.0", - "prettier-plugin-astro": "*", - "prettier-plugin-css-order": "*", - "prettier-plugin-import-sort": "*", - "prettier-plugin-jsdoc": "*", - "prettier-plugin-marko": "*", - "prettier-plugin-multiline-arrays": "*", - "prettier-plugin-organize-attributes": "*", - "prettier-plugin-organize-imports": "*", - "prettier-plugin-sort-imports": "*", - "prettier-plugin-style-order": "*", - "prettier-plugin-svelte": "*" - }, - "peerDependenciesMeta": { - "@ianvs/prettier-plugin-sort-imports": { - "optional": true - }, - "@prettier/plugin-pug": { - "optional": true - }, - "@shopify/prettier-plugin-liquid": { - "optional": true - }, - "@trivago/prettier-plugin-sort-imports": { - "optional": true - }, - "@zackad/prettier-plugin-twig": { - "optional": true - }, - "prettier-plugin-astro": { - "optional": true - }, - "prettier-plugin-css-order": { - "optional": true - }, - "prettier-plugin-import-sort": { - "optional": true - }, - "prettier-plugin-jsdoc": { - "optional": true - }, - "prettier-plugin-marko": { - "optional": true - }, - "prettier-plugin-multiline-arrays": { - "optional": true - }, - "prettier-plugin-organize-attributes": { - "optional": true - }, - "prettier-plugin-organize-imports": { - "optional": true - }, - "prettier-plugin-sort-imports": { - "optional": true - }, - "prettier-plugin-style-order": { - "optional": true - }, - "prettier-plugin-svelte": { - "optional": true - } - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "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" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "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/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "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": "7.0.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", - "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "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/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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" - }, - "node_modules/quotation": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/quotation/-/quotation-2.0.3.tgz", - "integrity": "sha512-yEc24TEgCFLXx7D4JHJJkK4JFVtatO8fziwUxY4nB/Jbea9o9CVS3gt22mA0W7rPYAGW2fWzYDSOtD94PwOyqA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "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" - } - }, - "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-docgen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz", - "integrity": "sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.18.9", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", - "@types/babel__core": "^7.18.0", - "@types/babel__traverse": "^7.18.0", - "@types/doctrine": "^0.0.9", - "@types/resolve": "^1.20.2", - "doctrine": "^3.0.0", - "resolve": "^1.22.1", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": ">=16.14.0" - } - }, - "node_modules/react-docgen-typescript": { - "version": "2.2.2", - "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" - } - }, - "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": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.0" - } - }, - "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/react-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.2.tgz", - "integrity": "sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==", - "license": "MIT" - }, - "node_modules/react-remove-scroll": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", - "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.3", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.2", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-style-singleton": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", - "dev": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast/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", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "dev": true, - "license": "MIT", - "engines": { - "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", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", - "license": "MIT" - }, - "node_modules/recast": { - "version": "0.23.11", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", - "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/recast/node_modules/source-map": { - "version": "0.6.1", - "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" - } - }, - "node_modules/recma-build-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", - "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-util-build-jsx": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/recma-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", - "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", - "license": "MIT", - "dependencies": { - "acorn-jsx": "^5.0.0", - "estree-util-to-js": "^2.0.0", - "recma-parse": "^1.0.0", - "recma-stringify": "^1.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/recma-parse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", - "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "esast-util-from-js": "^2.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/recma-stringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", - "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-util-to-js": "^2.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redent/node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true, - "license": "MIT" - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rehype-autolink-headings": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz", - "integrity": "sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-heading-rank": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "unified": "^11.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-recma": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", - "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "hast-util-to-estree": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-slug": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", - "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "github-slugger": "^2.0.0", - "hast-util-heading-rank": "^3.0.0", - "hast-util-to-string": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remark-frontmatter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", - "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-frontmatter": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", - "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-gfm": "^3.0.0", - "micromark-extension-gfm": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.1.tgz", - "integrity": "sha512-1+PYGFziOg4pH7DDf1uMd4AR3YuO2EMnds/SdIWMPGT7CAfDRSnAmpxPsJD0Ds3IKpn97h3d5KPGf1WFOg6hXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "remark-message-control": "^8.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-blockquote-indentation": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.1.tgz", - "integrity": "sha512-7BhOsImFgTD7IIliu2tt+yJbx5gbMbXCOspc3VdYf/87iLJdWKqJoMy2V6DZG7kBjBlBsIZi38fDDngJttXt4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-checkbox-character-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.1.tgz", - "integrity": "sha512-6qilm7XQXOcTvjFEqqNY57Ki7md9rkSdpMIfIzVXdEnI4Npl2BnUff6ANrGRM7qTgJTrloaf8H0eQ91urcU6Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-checkbox-content-indent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.1.tgz", - "integrity": "sha512-R1gV4vGkgJQZQFIGve1paj4mVDUWlgX0KAHhjNpSyzuwuSIDoxWpEuSJSxcnczESgcjM4yVrZqEGMYi/fqZK0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-code-block-style": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.1.tgz", - "integrity": "sha512-d4mHsEpv1yqXWl2dd+28tGRX0Lzk5qw7cfxAQVkOXPUONhsMFwXJEBeeqZokeG4lOKtkKdIJR7ezScDfWR0X4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-definition-spacing": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.1.tgz", - "integrity": "sha512-ZjShKaBUGeHrZyIZWwOZOxX3guj/P7gRR5wbDADQctL4oK+ZLQfOvJFmAsF1nD4gNr0Ficjd0AuiWxQcc1qTMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-fenced-code-flag": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.1.1.tgz", - "integrity": "sha512-hKPqowc79jrJL47AfnqDThvE8Q249nHCleR5nxuf9ybriMqcAHYxragKzU5c4W1fNy20bTfFdZz/iAAQAk9kwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "quotation": "^2.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-fenced-code-marker": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.1.tgz", - "integrity": "sha512-uI91OcVPKjNxV+vpjDW9T64hkE0a/CRn3JhwdMxUAJYpVsKnA7PFPSFJOx/abNsVZHNSe7ZFGgGdaH/lqgSizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-file-extension": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.1.tgz", - "integrity": "sha512-1Ca5Dgu9J/j1fb7nvzNXh2xy4ija03igiP5i4le64LfrlloGax4VWcG/M7uL+CpRTFVqEJMWw0iKDEZxYSgImg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "quotation": "^2.0.0", - "unified-lint-rule": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-final-definition": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.2.tgz", - "integrity": "sha512-fz3UAcFQef77Zb8rz4za2R6y7pdyJot22iGtFoNIKdtbcNa8IKKEVoY3NIfrsLfhrjwzcha1Sp3fFA9NF6lc4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-mdx": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-final-newline": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.1.tgz", - "integrity": "sha512-q5diKHD6BMbzqWqgvYPOB8AJgLrMzEMBAprNXjcpKoZ/uCRqly+gxjco+qVUMtMWSd+P+KXZZEqoa7Y6QiOudw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "unified-lint-rule": "^3.0.0", - "vfile-location": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-first-heading-level": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-first-heading-level/-/remark-lint-first-heading-level-4.0.1.tgz", - "integrity": "sha512-ZqH476wQU2rk3L2X1Ef/FsdDZJsSkMqTkEjKyeac/hxnwDZ8ZLYYMmm4UKTgVZTtqFUkNYzgGEPAFXtrppHbJA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-mdx": "^3.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-hard-break-spaces": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.1.1.tgz", - "integrity": "sha512-AKDPDt39fvmr3yk38OKZEWJxxCOOUBE+96AsBfs+ExS5LW6oLa9041X5ahFDQHvHGzdoremEIaaElursaPEkNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-heading-style": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.1.tgz", - "integrity": "sha512-+rUpJ/N2CGC5xPgZ18XgsCsUBtadgEhdTi0BJPrsFmHPzL22BUHajeg9im8Y7zphUcbi1qFiKuxZd2nzDgZSXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-heading-style": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-list-item-bullet-indent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.1.tgz", - "integrity": "sha512-LKuTxkw5aYChzZoF3BkfaBheSCHs0T8n8dPHLQEuOLo6iC5wy98iyryz0KZ61GD8stlZgQO2KdWSdnP6vr40Iw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-list-item-indent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.1.tgz", - "integrity": "sha512-gJd1Q+jOAeTgmGRsdMpnRh01DUrAm0O5PCQxE8ttv1QZOV015p/qJH+B4N6QSmcUuPokHLAh9USuq05C73qpiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-maximum-line-length": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-4.1.1.tgz", - "integrity": "sha512-oIncZkI0oIXZk+1kJOMnE3WPbyMTUbds0q1E8WbCwtjN9pAZsQD2e+wK+xdi5VqOLPkvLER+yzbmi/A3Tp+XEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-mdx": "^3.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-blockquote-without-marker": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.1.tgz", - "integrity": "sha512-b4IOkNcG7C16HYAdKUeAhO7qPt45m+v7SeYbVrqvbSFtlD3EUBL8fgHRgLK1mdujFXDP1VguOEMx+Txv8JOT4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-directive": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-location": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-consecutive-blank-lines": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.1.tgz", - "integrity": "sha512-yLtYCrEBtGDao4ozmZruRzjMYAcBVFK69PoYjPfNwFO8pQ/LPt8KCq6oyg1ronNyRbDYEGqVdLIHcT/zL3LjPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-directive": "^3.0.0", - "mdast-util-mdx": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-duplicate-definitions": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.1.tgz", - "integrity": "sha512-Ek+A/xDkv5Nn+BXCFmf+uOrFSajCHj6CjhsHjtROgVUeEPj726yYekDBoDRA0Y3+z+U30AsJoHgf/9Jj1IFSug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-file-name-articles": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.1.tgz", - "integrity": "sha512-h31ZDDJV2T6g9WLBrXg1CJ1m8M170O/tlDPAEPGCa/rxwKvMcfum4yicaot0ZKbUZ1uEPjVSUPDeo3sU0zciCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-file-name-consecutive-dashes": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.1.tgz", - "integrity": "sha512-qGJRZ81sowEjv1dBodbHZ29pDZbrFpxiQQ6gBvkkHkkoYPekdnr8iUxmV38HcqH8+JNW1O4ELr+m71AA9/34Mw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-file-name-outer-dashes": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.1.tgz", - "integrity": "sha512-QIMrBPZKZ6BwQRPM65HhEHcJv6+wZnZ4z2ikvx2ht40cSmIN7ZTL7wKKJlnpF+4Ioi9XUj+cRHWqEhwJ9LCQIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-heading-content-indent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.1.tgz", - "integrity": "sha512-YIWktnZo7M9aw7PGnHdshvetSH3Y0qW+Fm143R66zsk5lLzn1XA5NEd/MtDzP8tSxxV+gcv+bDd5St1QUI4oSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-heading-indent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.1.tgz", - "integrity": "sha512-R/KkR9Qfh0AM3asadSnQQXMHu6BNZxPbxLI9h9JBPIZM+EtzycDlhaAHbOlQUdaHA5UEANhYENZBLrueH50Cdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-literal-urls": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.1.tgz", - "integrity": "sha512-RhTANFkFFXE6bM+WxWcPo2TTPEfkWG3lJZU50ycW7tJJmxUzDNzRed/z80EVJIdGwFa0NntVooLUJp3xrogalQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-character": "^2.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-literal-urls/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-multiple-toplevel-headings": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.1.tgz", - "integrity": "sha512-8sepobIOu3PlDOuMH7jtri+LH4tFNVQU+aqKSkrlNRdp831fYz9S+jA2crTVqWqxVbTwiF96uJWePv8/9qmHnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-mdx": "^3.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-shell-dollars": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.1.tgz", - "integrity": "sha512-UPE1DNCIkLtnS3YFD065Gkq5lQqfndBDpX8Ct/Zjn7M0/hzCyf9B6tpwCU0I20m9jzhS/CSY6mxYnAiEg+KkFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "collapse-white-space": "^2.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-shortcut-reference-image": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.1.tgz", - "integrity": "sha512-hQhJ3Dr8ZWRdj7qm6+9vcPpqtGchhENA2UHOmcTraLf6dN1cFATCgY/HbTbRIN6NkG/EEClTgRC1QCokWR2Mmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-shortcut-reference-link": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-4.0.1.tgz", - "integrity": "sha512-YxciuUZc90QaJYhayGO80lS3zxEOBgwwLW1MKYB7AfUdkrLcLVlS+DFloiq0MZ7EDVXuuGUEnIzyjyLSbI5BUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-table-indentation": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.1.tgz", - "integrity": "sha512-LHw9MGsuilM+3HkbRFZmdSE4T+sziaQzULH5ImYkLH2MLF8GKnAm2mgtveLZcW01wqFV2oEbpF1Y/s/QloXT7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-location": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-tabs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.1.tgz", - "integrity": "sha512-+lhGUgY3jhTwWn1x+tTIJNy5Fbs2NcYXCobRY7xeszY0VKPCBF2GyELafOVnr+iTmosXLuhZPp5YwNezQKH9IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "vfile-location": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-trailing-spaces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-trailing-spaces/-/remark-lint-no-trailing-spaces-3.0.2.tgz", - "integrity": "sha512-4KxOdzZ+BlCZDu9yYsKGOfB8fknukxYD+9VhI1I5l7Ns7TgqdYq4k/qwUfTHpQ4TF9aokL/tOpsEGOc4PGKTKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "unified-lint-rule": "^3.0.0", - "vfile-location": "^5.0.3" - } - }, - "node_modules/remark-lint-no-undefined-references": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-5.0.1.tgz", - "integrity": "sha512-j3qOk+jry1NPNbUmydGJpfbo1LeuZkvXOwr8ocxh1ymDzHf2GMCiToAiicDNaOuG85RkiIzLvnnCV5I7Mo5q8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-location": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-unused-definitions": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.1.tgz", - "integrity": "sha512-AdMbaCeMpj32HvDUuyI+bQyu/405Nby/rgFW8XDpI7U7ufPhHl+jj9J4NgeW7Z8DrODGr0iFgPNt6JtNLskFdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-ordered-list-marker-style": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.1.tgz", - "integrity": "sha512-vZTAbstcBPbGwJacwldGzdGmKwy5/4r29SZ9nQkME4alEl5B1ReSBlYa8t7QnTSW7+tqvA9Sg71RPadgAKWa4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "micromark-util-character": "^2.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-prohibited-strings": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-prohibited-strings/-/remark-lint-prohibited-strings-4.0.0.tgz", - "integrity": "sha512-dfLF4da5v3klRAdkHBLpNIC7WpvNdN7Eylgf+p19HPJn53CaxqlGjFvAQDAJU83xXEPWAmdonlx04GIS5ryLow==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^5.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile-location": "^5.0.1" - } - }, - "node_modules/remark-lint-prohibited-strings/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/remark-lint-prohibited-strings/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/remark-lint-prohibited-strings/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/remark-lint-prohibited-strings/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-prohibited-strings/node_modules/unified-lint-rule": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.2.tgz", - "integrity": "sha512-JWudPtRN7TLFHVLEVZ+Rm8FUb6kCAtHxEXFgBGDxRSdNMnGyTU5zyYvduHSF/liExlFB3vdFvsAHnNVE/UjAwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "trough": "^2.0.0", - "unified": "^10.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-prohibited-strings/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-prohibited-strings/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-prohibited-strings/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-rule-style": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.1.tgz", - "integrity": "sha512-gl1Ft13oTS3dJUCsWZzxD/5dAwI1HON67KU7uNfODD5gXJ8Y11deOWbun190ma7XbYdD7P0l8VT2HeRtEQzrWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-strong-marker": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.1.tgz", - "integrity": "sha512-KaGtj/OWEP4eoafevnlp3NsEVwC7yGEjBJ6uFMzfjNoXyjATdfZ2euB/AfKVt/A/FdZeeMeVoAUFH4DL+hScLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-table-cell-padding": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.1.1.tgz", - "integrity": "sha512-6fgVA1iINBoAJaZMOnSsxrF9Qj9+hmCqrsrqZqgJJETjT1ODGH64iAN1/6vHR7dIwmy73d6ysB2WrGyKhVlK3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "mdast-util-phrasing": "^4.0.0", - "pluralize": "^8.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-table-pipes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.1.tgz", - "integrity": "sha512-oOkRC0WRRDwvodfffGafoBFBTGwy9udQgKtxN53apmZpOmaUAxTi833ite0jMo078+LehNftO5bxrElZ9EQUlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-unordered-list-marker-style": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.1.tgz", - "integrity": "sha512-HMrVQC0Qbr8ktSy+1lJGRGU10qecL3T14L6s/THEQXR5Tk0wcsLLG0auNvB4r2+H+ClhVO/Vnm1TEosh1OCsfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-phrasing": "^4.0.0", - "unified-lint-rule": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", - "license": "MIT", - "dependencies": { - "mdast-util-mdx": "^3.0.0", - "micromark-extension-mdxjs": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-message-control": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-8.0.0.tgz", - "integrity": "sha512-brpzOO+jdyE/mLqvqqvbogmhGxKygjpCUCG/PwSCU43+JZQ+RM+sSzkCWBcYvgF3KIAVNIoPsvXjBkzO7EdsYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-comment-marker": "^3.0.0", - "unified-message-control": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-preset-lint-node": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-5.1.2.tgz", - "integrity": "sha512-ukBPfLqD05AomGL+Z3tbmBCKTaEM+9Dv8Pn0r/0vok8F95Z0wj/AY70cFhm038ID1vKBD07anky11dvigDAHlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-yaml": "^4.1.0", - "remark-gfm": "^4.0.0", - "remark-lint-blockquote-indentation": "^4.0.0", - "remark-lint-checkbox-character-style": "^5.0.0", - "remark-lint-checkbox-content-indent": "^5.0.0", - "remark-lint-code-block-style": "^4.0.0", - "remark-lint-definition-spacing": "^4.0.0", - "remark-lint-fenced-code-flag": "^4.0.0", - "remark-lint-fenced-code-marker": "^4.0.0", - "remark-lint-file-extension": "^3.0.0", - "remark-lint-final-definition": "^4.0.1", - "remark-lint-first-heading-level": "^4.0.0", - "remark-lint-heading-style": "^4.0.0", - "remark-lint-maximum-line-length": "^4.0.1", - "remark-lint-no-consecutive-blank-lines": "^5.0.0", - "remark-lint-no-file-name-articles": "^3.0.0", - "remark-lint-no-file-name-consecutive-dashes": "^3.0.0", - "remark-lint-no-file-name-outer-dashes": "^3.0.0", - "remark-lint-no-heading-indent": "^5.0.0", - "remark-lint-no-multiple-toplevel-headings": "^4.0.0", - "remark-lint-no-shell-dollars": "^4.0.0", - "remark-lint-no-table-indentation": "^5.0.0", - "remark-lint-no-tabs": "^4.0.0", - "remark-lint-no-trailing-spaces": "^3.0.2", - "remark-lint-prohibited-strings": "^4.0.0", - "remark-lint-rule-style": "^4.0.0", - "remark-lint-strong-marker": "^4.0.0", - "remark-lint-table-cell-padding": "^5.0.0", - "remark-lint-table-pipes": "^5.0.0", - "remark-lint-unordered-list-marker-style": "^4.0.0", - "remark-preset-lint-recommended": "^7.0.0", - "semver": "^7.5.4", - "unified-lint-rule": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/remark-preset-lint-recommended": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.1.tgz", - "integrity": "sha512-j1CY5u48PtZl872BQ40uWSQMT3R4gXKp0FUgevMu5gW7hFMtvaCiDq+BfhzeR8XKKiW9nIMZGfIMZHostz5X4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "remark-lint": "^10.0.0", - "remark-lint-final-newline": "^3.0.0", - "remark-lint-hard-break-spaces": "^4.0.0", - "remark-lint-list-item-bullet-indent": "^5.0.0", - "remark-lint-list-item-indent": "^4.0.0", - "remark-lint-no-blockquote-without-marker": "^6.0.0", - "remark-lint-no-duplicate-definitions": "^4.0.0", - "remark-lint-no-heading-content-indent": "^5.0.0", - "remark-lint-no-literal-urls": "^4.0.0", - "remark-lint-no-shortcut-reference-image": "^4.0.0", - "remark-lint-no-shortcut-reference-link": "^4.0.0", - "remark-lint-no-undefined-references": "^5.0.0", - "remark-lint-no-unused-definitions": "^4.0.0", - "remark-lint-ordered-list-marker-style": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reading-time": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-reading-time/-/remark-reading-time-2.0.1.tgz", - "integrity": "sha512-fy4BKy9SRhtYbEHvp6AItbRTnrhiDGbqLQTSYVbQPGuRCncU1ubSsh9p/W5QZSxtYcUXv8KGL0xBgPLyNJA1xw==", - "license": "ISC", - "dependencies": { - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-value-to-estree": "^1.3.0", - "reading-time": "^1.3.0", - "unist-util-visit": "^3.1.0" - } - }, - "node_modules/remark-reading-time/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/remark-reading-time/node_modules/estree-util-is-identifier-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", - "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reading-time/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reading-time/node_modules/unist-util-visit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reading-time/node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", - "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "mdast-util-to-hast": "^13.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-to-markdown": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "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", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-in-the-middle": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", - "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^4.3.5", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "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" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "devOptional": 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" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "license": "ISC" - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT" - }, - "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": { - "@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/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==", - "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/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==", - "dev": 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==", - "dev": true, - "license": "MIT" - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "devOptional": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", - "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.7.1" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.1", - "@img/sharp-darwin-x64": "0.34.1", - "@img/sharp-libvips-darwin-arm64": "1.1.0", - "@img/sharp-libvips-darwin-x64": "1.1.0", - "@img/sharp-libvips-linux-arm": "1.1.0", - "@img/sharp-libvips-linux-arm64": "1.1.0", - "@img/sharp-libvips-linux-ppc64": "1.1.0", - "@img/sharp-libvips-linux-s390x": "1.1.0", - "@img/sharp-libvips-linux-x64": "1.1.0", - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", - "@img/sharp-libvips-linuxmusl-x64": "1.1.0", - "@img/sharp-linux-arm": "0.34.1", - "@img/sharp-linux-arm64": "0.34.1", - "@img/sharp-linux-s390x": "0.34.1", - "@img/sharp-linux-x64": "0.34.1", - "@img/sharp-linuxmusl-arm64": "0.34.1", - "@img/sharp-linuxmusl-x64": "0.34.1", - "@img/sharp-wasm32": "0.34.1", - "@img/sharp-win32-ia32": "0.34.1", - "@img/sharp-win32-x64": "0.34.1" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", - "license": "BSD-2-Clause", - "peer": true - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "optional": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT", - "optional": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", - "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/sse.js": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/sse.js/-/sse.js-2.6.0.tgz", - "integrity": "sha512-eGEqOwiPX9Cm+KsOYkcz7HIEqWUSOFeChr0sT515hDOBLvQy5yxaLSZx9JWMhwjf75CXJq+7cgG1MKNh9GQ36w==", - "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", - "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", - "dev": true, - "license": "MIT" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/storybook": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.12.tgz", - "integrity": "sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/core": "8.6.12" - }, - "bin": { - "getstorybook": "bin/index.cjs", - "sb": "bin/index.cjs", - "storybook": "bin/index.cjs" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", - "license": "MIT", - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "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", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "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", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "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", - "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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/strip-ansi-cjs": { - "name": "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/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-indent": { - "version": "4.0.0", - "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" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-loader": { - "version": "3.3.4", - "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" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/style-object-to-css-string": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/style-object-to-css-string/-/style-object-to-css-string-1.1.3.tgz", - "integrity": "sha512-bISQoUsir/qGfo7vY8rw00ia9nnyE1jvYt3zZ2jhdkcXZ6dAEi74inMzQ6On57vFI+I4Fck6wOv5UI9BEwJDgw==", - "license": "MIT" - }, - "node_modules/style-to-js": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", - "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", - "license": "MIT", - "dependencies": { - "style-to-object": "1.0.8" - } - }, - "node_modules/style-to-object": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", - "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", - "license": "MIT", - "dependencies": { - "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.17.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.17.0.tgz", - "integrity": "sha512-I9OwVIWRMqVm2Br5iTbrfSqGRPWQUlvm6oXO1xZuYYu0Gpduy67N8wXOZv15p6E/JdlZiAtQaIoLKZEWk5hrjw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], - "license": "MIT", - "dependencies": { - "@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.1.0", - "debug": "^4.3.7", - "fast-glob": "^3.3.3", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^10.0.7", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^7.0.3", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.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.1.1", - "postcss": "^8.5.3", - "postcss-resolve-nested-selector": "^0.1.6", - "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^7.1.0", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "supports-hyperlinks": "^3.2.0", - "svg-tags": "^1.0.0", - "table": "^6.9.0", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "stylelint": "bin/stylelint.mjs" - }, - "engines": { - "node": ">=18.12.0" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-15.0.0.tgz", - "integrity": "sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], - "license": "MIT", - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "stylelint": "^16.13.0" - } - }, - "node_modules/stylelint-config-standard": { - "version": "37.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-37.0.0.tgz", - "integrity": "sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], - "license": "MIT", - "dependencies": { - "stylelint-config-recommended": "^15.0.0" - }, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "stylelint": "^16.13.0" - } - }, - "node_modules/stylelint-order": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz", - "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^8.4.32", - "postcss-sorting": "^8.0.2" - }, - "peerDependencies": { - "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1" - } - }, - "node_modules/stylelint-selector-bem-pattern": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/stylelint-selector-bem-pattern/-/stylelint-selector-bem-pattern-4.0.1.tgz", - "integrity": "sha512-zpyC52/aqwbxbtliyTKdV3gv+h/ExZUTIn7tKMt9nfILtMhYIeJNF5a3UE1dtv9L826ulXU+83YA83Ymx3jW0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": ">=4.17.21", - "postcss": "^8.4.24", - "postcss-bem-linter": "^4.0.1" - }, - "engines": { - "node": ">=18.12.0" - }, - "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": "10.0.7", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.7.tgz", - "integrity": "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^6.1.7" - } - }, - "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz", - "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==", - "dev": true, - "license": "MIT", - "dependencies": { - "cacheable": "^1.8.9", - "flatted": "^3.3.3", - "hookified": "^1.7.1" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stylelint/node_modules/ignore": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", - "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", - "dev": true, - "license": "MIT", - "engines": { - "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==", - "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" - } - }, - "node_modules/supports-hyperlinks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", - "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" - } - }, - "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", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sval": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/sval/-/sval-0.6.3.tgz", - "integrity": "sha512-QvR9JqSmsSE2nnFzAxWK/KRvgpQsBohMulGyIP0TtSG5kt1Eolw0Iyh+fydqkBh3Pyg2++26CW+5h8KVTatp5Q==", - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "node_modules/swc-loader": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", - "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@swc/counter": "^0.1.3" - }, - "peerDependencies": { - "@swc/core": "^1.2.147", - "webpack": ">=2" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/synckit": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.10.3.tgz", - "integrity": "sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.0", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "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/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", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", - "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", - "devOptional": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "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==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "devOptional": 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": ">= 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", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/tiny-invariant": { - "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" - }, - "node_modules/tinyglobby": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", - "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.3", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", - "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", - "dev": true, - "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==", - "dev": true, - "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", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tldts": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", - "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.85" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", - "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==", - "dev": true, - "license": "MIT" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.10" - } - }, - "node_modules/ts-morph": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-22.0.0.tgz", - "integrity": "sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==", - "license": "MIT", - "dependencies": { - "@ts-morph/common": "~0.23.0", - "code-block-writer": "^13.0.1" - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "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", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "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" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsx": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", - "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.25.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/turbo": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.4.4.tgz", - "integrity": "sha512-N9FDOVaY3yz0YCOhYIgOGYad7+m2ptvinXygw27WPLQvcZDl3+0Sa77KGVlLSiuPDChOUEnTKE9VJwLSi9BPGQ==", - "license": "MIT", - "bin": { - "turbo": "bin/turbo" - }, - "optionalDependencies": { - "turbo-darwin-64": "2.4.4", - "turbo-darwin-arm64": "2.4.4", - "turbo-linux-64": "2.4.4", - "turbo-linux-arm64": "2.4.4", - "turbo-windows-64": "2.4.4", - "turbo-windows-arm64": "2.4.4" - } - }, - "node_modules/turbo-darwin-64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.4.4.tgz", - "integrity": "sha512-5kPvRkLAfmWI0MH96D+/THnDMGXlFNmjeqNRj5grLKiry+M9pKj3pRuScddAXPdlxjO5Ptz06UNaOQrrYGTx1g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/turbo-darwin-arm64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.4.4.tgz", - "integrity": "sha512-/gtHPqbGQXDFhrmy+Q/MFW2HUTUlThJ97WLLSe4bxkDrKHecDYhAjbZ4rN3MM93RV9STQb3Tqy4pZBtsd4DfCw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/turbo-linux-64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.4.4.tgz", - "integrity": "sha512-SR0gri4k0bda56hw5u9VgDXLKb1Q+jrw4lM7WAhnNdXvVoep4d6LmnzgMHQQR12Wxl3KyWPbkz9d1whL6NTm2Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-linux-arm64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.4.4.tgz", - "integrity": "sha512-COXXwzRd3vslQIfJhXUklgEqlwq35uFUZ7hnN+AUyXx7hUOLIiD5NblL+ETrHnhY4TzWszrbwUMfe2BYWtaPQg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-windows-64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.4.4.tgz", - "integrity": "sha512-PV9rYNouGz4Ff3fd6sIfQy5L7HT9a4fcZoEv8PKRavU9O75G7PoDtm8scpHU10QnK0QQNLbE9qNxOAeRvF0fJg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/turbo-windows-arm64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.4.4.tgz", - "integrity": "sha512-403sqp9t5sx6YGEC32IfZTVWkRAixOQomGYB8kEc6ZD+//LirSxzeCHCnM8EmSXw7l57U1G+Fb0kxgTcKPU/Lg==", - "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", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "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", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.29.0.tgz", - "integrity": "sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.29.0", - "@typescript-eslint/parser": "8.29.0", - "@typescript-eslint/utils": "8.29.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", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", - "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified-engine": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.2.2.tgz", - "integrity": "sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/concat-stream": "^2.0.0", - "@types/debug": "^4.0.0", - "@types/is-empty": "^1.0.0", - "@types/node": "^22.0.0", - "@types/unist": "^3.0.0", - "concat-stream": "^2.0.0", - "debug": "^4.0.0", - "extend": "^3.0.0", - "glob": "^10.0.0", - "ignore": "^6.0.0", - "is-empty": "^1.0.0", - "is-plain-obj": "^4.0.0", - "load-plugin": "^6.0.0", - "parse-json": "^7.0.0", - "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/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/unified-engine/node_modules/ignore": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", - "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/unified-engine/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "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", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/unified-engine/node_modules/lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "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" - }, - "node_modules/unified-engine/node_modules/parse-json": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", - "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "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", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unified-lint-rule": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.1.tgz", - "integrity": "sha512-HxIeQOmwL19DGsxHXbeyzKHBsoSCFO7UtRVUvT2v61ptw/G+GbysWcrpHdfs5jqbIFDA11MoKngIhQK0BeTVjA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "trough": "^2.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified-message-control": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-5.0.0.tgz", - "integrity": "sha512-B2cSAkpuMVVmPP90KCfKdBhm1e9KYJ+zK3x5BCa0N65zpq1Ybkc9C77+M5qwR8FWO7RF3LM5QRRPZtgjW6DUCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "space-separated-tokens": "^2.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unist-util-inspect": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.1.0.tgz", - "integrity": "sha512-mOlg8Mp33pR0eeFpo5d2902ojqFFOKMMG2hF8bmH7ZlhnmjFgh0NI3/ZDwdaBJNbvrS7LZFVrBVtIE9KZ9s7vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", - "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unrs-resolver": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.3.3.tgz", - "integrity": "sha512-PFLAGQzYlyjniXdbmQ3dnGMZJXX5yrl2YS4DLRfR3BhgUsE1zpRIrccp9XMOGRfIHpdFvCn/nr5N1KMVda4x3A==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/JounQin" - }, - "optionalDependencies": { - "@unrs/resolver-binding-darwin-arm64": "1.3.3", - "@unrs/resolver-binding-darwin-x64": "1.3.3", - "@unrs/resolver-binding-freebsd-x64": "1.3.3", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.3.3", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.3.3", - "@unrs/resolver-binding-linux-arm64-gnu": "1.3.3", - "@unrs/resolver-binding-linux-arm64-musl": "1.3.3", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.3.3", - "@unrs/resolver-binding-linux-s390x-gnu": "1.3.3", - "@unrs/resolver-binding-linux-x64-gnu": "1.3.3", - "@unrs/resolver-binding-linux-x64-musl": "1.3.3", - "@unrs/resolver-binding-wasm32-wasi": "1.3.3", - "@unrs/resolver-binding-win32-arm64-msvc": "1.3.3", - "@unrs/resolver-binding-win32-ia32-msvc": "1.3.3", - "@unrs/resolver-binding-win32-x64-msvc": "1.3.3" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "devOptional": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.4", - "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" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/url/node_modules/punycode": { - "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" - }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/user-agent-data-types": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/user-agent-data-types/-/user-agent-data-types-0.4.2.tgz", - "integrity": "sha512-jXep3kO/dGNmDOkbDa8ccp4QArgxR4I76m3QVcJ1aOF0B9toc+YtSXtX5gLdDTZXyWlpQYQrABr6L1L2GZOghw==", - "dev": true, - "license": "MIT" - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/utila": { - "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" - }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/uvu/node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", - "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-matter": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-5.0.1.tgz", - "integrity": "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==", - "license": "MIT", - "dependencies": { - "vfile": "^6.0.0", - "yaml": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-reporter": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.1.tgz", - "integrity": "sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/supports-color": "^8.0.0", - "string-width": "^6.0.0", - "supports-color": "^9.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0", - "vfile-sort": "^4.0.0", - "vfile-statistics": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "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", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/vfile-reporter/node_modules/string-width": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", - "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^10.2.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "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", - "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/vfile-sort": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-4.0.0.tgz", - "integrity": "sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-statistics": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-3.0.0.tgz", - "integrity": "sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/walk-up-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", - "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", - "dev": true, - "license": "ISC" - }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/webpack": { - "version": "5.98.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", - "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware": { - "version": "6.1.3", - "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", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "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": ">= 10.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", - "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-html-community": "0.0.8", - "html-entities": "^2.1.0", - "strip-ansi": "^6.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-virtual-modules": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "devOptional": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "devOptional": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "devOptional": 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": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.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==", - "extraneous": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.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==", - "extraneous": 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==", - "extraneous": true, - "license": "MIT" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-js": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", - "license": "MIT", - "dependencies": { - "sax": "^1.2.4" - }, - "bin": { - "xml-js": "bin/cli.js" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "packages/i18n": { - "name": "@node-core/website-i18n", - "devDependencies": { - "eslint-import-resolver-typescript": "~4.3.1", - "typescript": "~5.8.2", - "typescript-eslint": "~8.29.0" - } - }, - "packages/i18n/node_modules/eslint-import-resolver-typescript": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.1.tgz", - "integrity": "sha512-/dR9YMomeBlvfuvX5q0C3Y/2PHC9OCRdT2ijFwdfq/4Bq+4m5/lqstEp9k3P6ocha1pCbhoY9fkwVYLmOqR0VQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.12", - "unrs-resolver": "^1.3.3" - }, - "engines": { - "node": "^16.17.0 || >=18.6.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "packages/i18n/node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "packages/i18n/node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "license": "MIT" - }, - "packages/ui-components": { - "name": "@node-core/ui-components", - "dependencies": { - "@heroicons/react": "^2.2.0", - "@radix-ui/react-dialog": "^1.1.7", - "@radix-ui/react-dropdown-menu": "~2.1.6", - "@radix-ui/react-label": "~2.1.2", - "@radix-ui/react-select": "~2.1.6", - "@radix-ui/react-separator": "~1.1.3", - "@radix-ui/react-tabs": "~1.1.3", - "@radix-ui/react-toast": "~1.2.6", - "@radix-ui/react-tooltip": "~1.1.8", - "@tailwindcss/postcss": "~4.0.17", - "@vcarl/remark-headings": "~0.1.0", - "classnames": "~2.5.1", - "postcss-calc": "^10.1.1", - "tailwindcss": "~4.0.17" - }, - "devDependencies": { - "@node-core/website-i18n": "*", - "@storybook/addon-controls": "^8.6.12", - "@storybook/addon-interactions": "^8.6.12", - "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.12", - "@storybook/addon-viewport": "^8.6.12", - "@storybook/addon-webpack5-compiler-swc": "^3.0.0", - "@storybook/react-webpack5": "^8.6.12", - "@testing-library/user-event": "~14.6.1", - "eslint-plugin-react": "~7.37.4", - "eslint-plugin-storybook": "~0.12.0", - "global-jsdom": "^26.0.0", - "storybook": "^8.6.11", - "stylelint": "^16.17.0", - "stylelint-config-standard": "^37.0.0", - "stylelint-order": "6.0.4", - "stylelint-selector-bem-pattern": "4.0.1", - "tsx": "^4.19.3", - "typescript": "~5.8.2", - "typescript-eslint": "~8.29.0" - }, - "engines": { - "node": ">=20" - } - }, - "packages/ui-components/node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 14" - } - }, - "packages/ui-components/node_modules/cssstyle": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", - "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@asamuzakjp/css-color": "^3.1.1", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "packages/ui-components/node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "packages/ui-components/node_modules/global-jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/global-jsdom/-/global-jsdom-26.0.0.tgz", - "integrity": "sha512-BqXpTNZFjP40N+s4k8Bk9HS8GFVPJB/+TKtwcShM84wLv6C5dH9o1dydI3pL6potanhfDiIAVDbaaGj/uSdRSA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "jsdom": ">=26 <27" - } - }, - "packages/ui-components/node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "packages/ui-components/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "packages/ui-components/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "packages/ui-components/node_modules/jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", - "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.1", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "packages/ui-components/node_modules/tailwindcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", - "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", - "license": "MIT" - }, - "packages/ui-components/node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "packages/ui-components/node_modules/tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "packages/ui-components/node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "packages/ui-components/node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "packages/ui-components/node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "packages/ui-components/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "packages/ui-components/node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=18" - } - } - } -} diff --git a/package.json b/package.json index 4f4570a276f63..aa80ab4bebd22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,5 @@ { "name": "nodejs-website", - "type": "module", "private": true, "description": "Nodejs.org Website", "homepage": "https://nodejs.org", @@ -8,33 +7,28 @@ "type": "git", "url": "git+https://github.com/nodejs/nodejs.org.git" }, + "license": "MIT", "author": { "name": "Node.js Website Working Group" }, - "license": "MIT", - "engines": { - "node": "v22" - }, - "workspaces": [ - "apps/*", - "packages/*" - ], + "type": "module", "scripts": { - "dev": "turbo run dev", "build": "turbo run build", - "storybook": "turbo run storybook", - "storybook:build": "turbo run storybook:build", - "start": "turbo run start", "check-types": "turbo check-types", - "scripts:release-post": "turbo run scripts:release-post", + "deploy": "turbo run deploy", + "dev": "turbo run dev", + "format": "pnpm lint:fix && pnpm prettier:fix", "lint": "turbo run lint", "lint:fix": "turbo run lint --force", + "prepare": "husky", "prettier": "prettier \"**/*.{js,mjs,ts,tsx,md,mdx,json,yml,css}\" --check --cache --cache-strategy=content --cache-location=.prettiercache", - "prettier:fix": "npm run prettier -- --write", - "format": "npm run lint:fix && npm run prettier:fix", + "prettier:fix": "pnpm prettier --write", + "scripts:release-post": "turbo run scripts:release-post", + "start": "turbo run start", + "storybook": "turbo run storybook", + "storybook:build": "turbo run storybook:build", "test": "turbo test:unit", - "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout --test-reporter=spec --test-reporter-destination=stdout\" turbo test:unit", - "prepare": "husky" + "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout --test-reporter=spec --test-reporter-destination=stdout\" turbo test:unit" }, "dependencies": { "acorn": "^8.14.1", @@ -46,13 +40,20 @@ "@eslint/js": "~9.23.0", "@reporters/github": "^1.7.2", "@testing-library/react": "~16.3.0", - "@types/node": "22.14.0", - "@types/react": "^19.1.0", - "@types/react-dom": "^19.1.1", + "cross-env": "^7.0.3", "eslint": "~9.23.0", "eslint-plugin-import-x": "~4.10.0", - "eslint-plugin-no-relative-import-paths": "~1.6.1", "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.11" + }, + "packageManager": "pnpm@10.10.0", + "engines": { + "node": "v22" + }, + "devEngines": { + "packageManager": { + "name": "pnpm", + "version": "10.10.0" + } } } diff --git a/packages/i18n/eslint.config.js b/packages/i18n/eslint.config.js index d5146991db352..2a6304344fb89 100644 --- a/packages/i18n/eslint.config.js +++ b/packages/i18n/eslint.config.js @@ -1,7 +1,6 @@ import importX from 'eslint-plugin-import-x'; 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 [ diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 876273723b3f3..76dc8312d83df 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,18 +1,25 @@ { "name": "@node-core/website-i18n", "type": "module", - ".": { - "types": "./dist/index.d.mts", - "default": "./lib/index.mjs" + "exports": { + ".": "./lib/index.mjs", + "./config.json": "./config.json", + "./locales/*.json": "./locales/*.json", + "./types": { + "types": "./types.d.ts", + "default": "./types.d.ts" + } }, "main": "./lib/index.mjs", "module": "./lib/index.mjs", "types": "./dist/index.d.mts", "files": [ - "locales" + "locales", + "index.js", + "config.json", + "types.d.ts" ], "scripts": { - "build": "tsc --declaration --emitDeclarationOnly", "lint:js": "eslint \"**/*.{js,mjs,ts}\"" }, "devDependencies": { diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json index 70662fcec503e..096873c40fd5e 100644 --- a/packages/i18n/tsconfig.json +++ b/packages/i18n/tsconfig.json @@ -14,7 +14,8 @@ "incremental": true, "paths": { "@/*": ["./*"] }, "baseUrl": ".", - "outDir": "dist" + "outDir": "dist", + "rootDir": "." }, "include": ["lib", "types.d.ts"], "exclude": ["node_modules", "dist"] diff --git a/packages/ui-components/eslint.config.js b/packages/ui-components/eslint.config.js index 7edede4a34117..fa5803300b76b 100644 --- a/packages/ui-components/eslint.config.js +++ b/packages/ui-components/eslint.config.js @@ -3,7 +3,6 @@ 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( @@ -55,12 +54,6 @@ export default tseslint.config( ], }, }, - { - 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 index 633830d4401ec..54adc2a552c57 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -1,20 +1,36 @@ { "name": "@node-core/ui-components", "type": "module", + "exports": { + "./Common/*": "./Common/*", + "./Common/*/*": "./Common/*/*", + "./Containers/*": "./Containers/*", + "./Containers/*/*": "./Containers/*/*", + "./Icons/*": "./Icons/*", + "./Icons/*/*": "./Icons/*/*", + "./styles/*": "./styles/*", + "./types": "./types.ts", + "./stylelint/*": "./stylelint/*" + }, + "files": [ + "Common", + "Containers", + "Icons", + "styles", + "types.ts", + "stylelint" + ], "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:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", "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", + "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", + "storybook": "cross-env NODE_NO_WARNINGS=1 storybook dev -p 6006 --quiet", "storybook:build": "cross-env NODE_NO_WARNINGS=1 storybook build --quiet --webpack-stats-json", + "test": "turbo test:unit", "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --enable-source-maps --import=global-jsdom/register --import=tsx --import=../../tests/setup.mjs --test **/*.test.*", - "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" npm run test:unit", - "test": "turbo test:unit" - }, - "engines": { - "node": ">=20" + "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" pnpm test:unit" }, "dependencies": { "@heroicons/react": "^2.2.0", @@ -33,19 +49,27 @@ "tailwindcss": "~4.0.17" }, "devDependencies": { - "@node-core/website-i18n": "*", + "@node-core/website-i18n": "workspace:*", "@storybook/addon-controls": "^8.6.12", "@storybook/addon-interactions": "^8.6.12", "@storybook/addon-styling-webpack": "^1.0.1", "@storybook/addon-themes": "^8.6.12", "@storybook/addon-viewport": "^8.6.12", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", + "@storybook/react": "^8.6.12", "@storybook/react-webpack5": "^8.6.12", "@testing-library/user-event": "~14.6.1", + "@types/node": "22.14.0", + "@types/react": "^19.1.0", + "cross-env": "^7.0.3", + "css-loader": "~6.11.0", "eslint-plugin-react": "~7.37.4", "eslint-plugin-storybook": "~0.12.0", "global-jsdom": "^26.0.0", + "postcss-loader": "~8.1.1", + "react": "^19.1.0", "storybook": "^8.6.11", + "style-loader": "~3.3.4", "stylelint": "^16.17.0", "stylelint-config-standard": "^37.0.0", "stylelint-order": "6.0.4", @@ -53,5 +77,8 @@ "tsx": "^4.19.3", "typescript": "~5.8.2", "typescript-eslint": "~8.29.0" + }, + "engines": { + "node": ">=20" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000000000..a475dc41eabd3 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,13850 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + acorn: + specifier: ^8.14.1 + version: 8.14.1 + husky: + specifier: 9.1.7 + version: 9.1.7 + lint-staged: + specifier: 15.5.0 + version: 15.5.0 + turbo: + specifier: 2.4.4 + version: 2.4.4 + devDependencies: + '@eslint/js': + specifier: ~9.23.0 + version: 9.23.0 + '@reporters/github': + specifier: ^1.7.2 + version: 1.7.2 + '@testing-library/react': + specifier: ~16.3.0 + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + eslint: + specifier: ~9.23.0 + version: 9.23.0(jiti@2.4.2) + eslint-plugin-import-x: + specifier: ~4.10.0 + version: 4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + prettier: + specifier: 3.5.3 + version: 3.5.3 + prettier-plugin-tailwindcss: + specifier: 0.6.11 + version: 0.6.11(prettier@3.5.3) + + apps/site: + dependencies: + '@heroicons/react': + specifier: ~2.2.0 + version: 2.2.0(react@19.1.0) + '@mdx-js/mdx': + specifier: ^3.1.0 + version: 3.1.0(acorn@8.14.1) + '@node-core/ui-components': + specifier: workspace:* + version: link:../../packages/ui-components + '@node-core/website-i18n': + specifier: workspace:* + version: link:../../packages/i18n + '@nodevu/core': + specifier: 0.3.0 + version: 0.3.0 + '@opentelemetry/api-logs': + specifier: ~0.200.0 + version: 0.200.0 + '@opentelemetry/instrumentation': + specifier: ~0.200.0 + version: 0.200.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': + specifier: ~1.30.1 + version: 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': + specifier: ~0.200.0 + version: 0.200.0(@opentelemetry/api@1.9.0) + '@orama/react-components': + specifier: ^0.6.4 + version: 0.6.4(@orama/core@0.0.10)(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@oramacloud/client': + specifier: ^2.1.4 + version: 2.1.4 + '@radix-ui/react-slot': + specifier: ^1.1.2 + version: 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-tabs': + specifier: ^1.1.3 + version: 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-toast': + specifier: ^1.2.6 + version: 1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-tooltip': + specifier: ^1.1.8 + version: 1.1.8(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@shikijs/core': + specifier: ^3.2.2 + version: 3.3.0 + '@shikijs/engine-javascript': + specifier: ^3.2.2 + version: 3.3.0 + '@tailwindcss/postcss': + specifier: ~4.0.17 + version: 4.0.17 + '@types/node': + specifier: 22.14.0 + version: 22.14.0 + '@types/react': + specifier: ^19.1.0 + version: 19.1.2 + '@vcarl/remark-headings': + specifier: ~0.1.0 + version: 0.1.0 + '@vercel/analytics': + specifier: ~1.5.0 + version: 1.5.0(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + '@vercel/otel': + specifier: ~1.10.4 + version: 1.10.4(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + '@vercel/speed-insights': + specifier: ~1.2.0 + version: 1.2.0(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + classnames: + specifier: ~2.5.1 + version: 2.5.1 + cross-env: + specifier: 7.0.3 + version: 7.0.3 + feed: + specifier: ~4.2.2 + version: 4.2.2 + github-slugger: + specifier: ~2.0.0 + version: 2.0.0 + glob: + specifier: ~11.0.1 + version: 11.0.2 + gray-matter: + specifier: ~4.0.3 + version: 4.0.3 + hast-util-to-string: + specifier: ~3.0.1 + version: 3.0.1 + next: + specifier: 15.3.0 + version: 15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next-intl: + specifier: ~4.0.2 + version: 4.0.3(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + next-themes: + specifier: ~0.4.6 + version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + postcss: + specifier: ~8.5.3 + version: 8.5.3 + postcss-calc: + specifier: ~10.1.1 + version: 10.1.1(postcss@8.5.3) + postcss-loader: + specifier: ~8.1.1 + version: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.7) + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + reading-time: + specifier: ~1.5.0 + version: 1.5.0 + rehype-autolink-headings: + specifier: ~7.1.0 + version: 7.1.0 + rehype-slug: + specifier: ~6.0.0 + version: 6.0.0 + remark-gfm: + specifier: ~4.0.1 + version: 4.0.1 + remark-reading-time: + specifier: ~2.0.1 + version: 2.0.1 + semver: + specifier: ~7.7.1 + version: 7.7.1 + shiki: + specifier: ~3.1.0 + version: 3.1.0 + sval: + specifier: ^0.6.3 + version: 0.6.7 + tailwindcss: + specifier: ~4.0.17 + version: 4.0.17 + unist-util-visit: + specifier: ~5.0.0 + version: 5.0.0 + vfile: + specifier: ~6.0.3 + version: 6.0.3 + vfile-matter: + specifier: ~5.0.1 + version: 5.0.1 + devDependencies: + '@eslint/compat': + specifier: ~1.2.8 + version: 1.2.9(eslint@9.23.0(jiti@2.4.2)) + '@eslint/eslintrc': + specifier: ~3.3.1 + version: 3.3.1 + '@next/eslint-plugin-next': + specifier: 15.2.4 + version: 15.2.4 + '@testing-library/user-event': + specifier: ~14.6.1 + version: 14.6.1(@testing-library/dom@10.4.0) + '@types/semver': + specifier: ~7.7.0 + version: 7.7.0 + eslint-config-next: + specifier: 15.2.4 + version: 15.2.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint-import-resolver-typescript: + specifier: ~4.3.1 + version: 4.3.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-mdx: + specifier: ~3.4.0 + version: 3.4.1(eslint@9.23.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) + eslint-plugin-react: + specifier: ~7.37.4 + version: 7.37.5(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-react-hooks: + specifier: 5.2.0 + version: 5.2.0(eslint@9.23.0(jiti@2.4.2)) + global-jsdom: + specifier: ^26.0.0 + version: 26.0.0(jsdom@26.1.0) + handlebars: + specifier: 4.7.8 + version: 4.7.8 + jsdom: + specifier: ^26.0.0 + version: 26.1.0 + remark-frontmatter: + specifier: 5.0.0 + version: 5.0.0 + remark-lint-fenced-code-flag: + specifier: ^4.2.0 + version: 4.2.0 + remark-lint-first-heading-level: + specifier: ^4.0.1 + version: 4.0.1 + remark-lint-maximum-line-length: + specifier: ^4.1.1 + version: 4.1.1 + remark-lint-no-file-name-articles: + specifier: ^3.0.1 + version: 3.0.1 + remark-lint-no-literal-urls: + specifier: ^4.0.1 + version: 4.0.1 + remark-lint-no-undefined-references: + specifier: ^5.0.2 + version: 5.0.2 + remark-lint-no-unused-definitions: + specifier: ^4.0.2 + version: 4.0.2 + remark-lint-prohibited-strings: + specifier: ^4.0.0 + version: 4.0.0 + remark-lint-unordered-list-marker-style: + specifier: ^4.0.1 + version: 4.0.1 + remark-parse: + specifier: 11.0.0 + version: 11.0.0 + remark-preset-lint-node: + specifier: 5.1.2 + version: 5.1.2 + stylelint: + specifier: 16.17.0 + version: 16.17.0(typescript@5.8.3) + stylelint-config-standard: + specifier: 37.0.0 + version: 37.0.0(stylelint@16.17.0(typescript@5.8.3)) + stylelint-order: + specifier: 6.0.4 + version: 6.0.4(stylelint@16.17.0(typescript@5.8.3)) + stylelint-selector-bem-pattern: + specifier: 4.0.1 + version: 4.0.1(stylelint@16.17.0(typescript@5.8.3)) + tsx: + specifier: ^4.19.3 + version: 4.19.4 + typescript: + specifier: ~5.8.2 + version: 5.8.3 + typescript-eslint: + specifier: ~8.29.0 + version: 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + unified: + specifier: ^11.0.5 + version: 11.0.5 + user-agent-data-types: + specifier: 0.4.2 + version: 0.4.2 + + packages/i18n: + devDependencies: + eslint-import-resolver-typescript: + specifier: ~4.3.1 + version: 4.3.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) + typescript: + specifier: ~5.8.2 + version: 5.8.3 + typescript-eslint: + specifier: ~8.29.0 + version: 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + + packages/ui-components: + dependencies: + '@heroicons/react': + specifier: ^2.2.0 + version: 2.2.0(react@19.1.0) + '@radix-ui/react-dialog': + specifier: ^1.1.7 + version: 1.1.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dropdown-menu': + specifier: ~2.1.6 + version: 2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-label': + specifier: ~2.1.2 + version: 2.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-select': + specifier: ~2.1.6 + version: 2.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-separator': + specifier: ~1.1.3 + version: 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-tabs': + specifier: ~1.1.3 + version: 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-toast': + specifier: ~1.2.6 + version: 1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-tooltip': + specifier: ~1.1.8 + version: 1.1.8(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tailwindcss/postcss': + specifier: ~4.0.17 + version: 4.0.17 + '@vcarl/remark-headings': + specifier: ~0.1.0 + version: 0.1.0 + classnames: + specifier: ~2.5.1 + version: 2.5.1 + postcss-calc: + specifier: ^10.1.1 + version: 10.1.1(postcss@8.5.3) + tailwindcss: + specifier: ~4.0.17 + version: 4.0.17 + devDependencies: + '@node-core/website-i18n': + specifier: workspace:* + version: link:../i18n + '@storybook/addon-controls': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-interactions': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-styling-webpack': + specifier: ^1.0.1 + version: 1.0.1(storybook@8.6.12(prettier@3.5.3))(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + '@storybook/addon-themes': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-viewport': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-webpack5-compiler-swc': + specifier: ^3.0.0 + version: 3.0.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + '@storybook/react': + specifier: ^8.6.12 + version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + '@storybook/react-webpack5': + specifier: ^8.6.12 + version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + '@testing-library/user-event': + specifier: ~14.6.1 + version: 14.6.1(@testing-library/dom@10.4.0) + '@types/node': + specifier: 22.14.0 + version: 22.14.0 + '@types/react': + specifier: ^19.1.0 + version: 19.1.2 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + css-loader: + specifier: ~6.11.0 + version: 6.11.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + eslint-plugin-react: + specifier: ~7.37.4 + version: 7.37.5(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-storybook: + specifier: ~0.12.0 + version: 0.12.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + global-jsdom: + specifier: ^26.0.0 + version: 26.0.0(jsdom@26.1.0) + postcss-loader: + specifier: ~8.1.1 + version: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + react: + specifier: ^19.1.0 + version: 19.1.0 + storybook: + specifier: ^8.6.11 + version: 8.6.12(prettier@3.5.3) + style-loader: + specifier: ~3.3.4 + version: 3.3.4(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + stylelint: + specifier: ^16.17.0 + version: 16.17.0(typescript@5.8.3) + stylelint-config-standard: + specifier: ^37.0.0 + version: 37.0.0(stylelint@16.17.0(typescript@5.8.3)) + stylelint-order: + specifier: 6.0.4 + version: 6.0.4(stylelint@16.17.0(typescript@5.8.3)) + stylelint-selector-bem-pattern: + specifier: 4.0.1 + version: 4.0.1(stylelint@16.17.0(typescript@5.8.3)) + tsx: + specifier: ^4.19.3 + version: 4.19.4 + typescript: + specifier: ~5.8.2 + version: 5.8.3 + typescript-eslint: + specifier: ~8.29.0 + version: 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + +packages: + + '@actions/core@1.11.1': + resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} + + '@actions/exec@1.1.1': + resolution: {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} + + '@actions/http-client@2.2.3': + resolution: {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} + + '@actions/io@1.1.3': + resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} + + '@adobe/css-tools@4.4.2': + resolution: {integrity: sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@asamuzakjp/css-color@3.1.5': + resolution: {integrity: sha512-w7AmVyTTiU41fNLsFDf+gA2Dwtbx2EJtn2pbJNAGSRAg50loXy1uLXA3hEpD8+eydcomTurw09tq5/AyceCaGg==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.1': + resolution: {integrity: sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.1': + resolution: {integrity: sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.1': + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.1': + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.1': + resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.27.1': + resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.1': + resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.3': + resolution: {integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.9': + resolution: {integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.2': + resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + + '@emnapi/core@1.4.3': + resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + + '@emnapi/wasi-threads@1.0.2': + resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + + '@esbuild/aix-ppc64@0.25.3': + resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.3': + resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.3': + resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.3': + resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.3': + resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.3': + resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.3': + resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.3': + resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.3': + resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.3': + resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.3': + resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.3': + resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.3': + resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.3': + resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.3': + resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.3': + resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.3': + resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.3': + resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.3': + resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.3': + resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.3': + resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.3': + resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.3': + resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.3': + resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.3': + resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@1.2.9': + resolution: {integrity: sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.2': + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.23.0': + resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@floating-ui/core@1.7.0': + resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==} + + '@floating-ui/dom@1.7.0': + resolution: {integrity: sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@formatjs/ecma402-abstract@2.3.4': + resolution: {integrity: sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==} + + '@formatjs/fast-memoize@2.2.7': + resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} + + '@formatjs/icu-messageformat-parser@2.11.2': + resolution: {integrity: sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==} + + '@formatjs/icu-skeleton-parser@1.8.14': + resolution: {integrity: sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==} + + '@formatjs/intl-localematcher@0.5.10': + resolution: {integrity: sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==} + + '@formatjs/intl-localematcher@0.6.1': + resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} + + '@heroicons/react@2.2.0': + resolution: {integrity: sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==} + peerDependencies: + react: '>= 16 || ^19.0.0-rc' + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@img/sharp-darwin-arm64@0.34.1': + resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.1': + resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.1.0': + resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.1.0': + resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.1.0': + resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.1.0': + resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.1.0': + resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.1.0': + resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.1.0': + resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.1.0': + resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.1': + resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.1': + resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.34.1': + resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.1': + resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.1': + resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.1': + resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.1': + resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.34.1': + resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.1': + resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@keyv/serialize@1.0.3': + resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} + + '@lit-labs/ssr-dom-shim@1.3.0': + resolution: {integrity: sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==} + + '@lit/react@1.0.7': + resolution: {integrity: sha512-cencnwwLXQKiKxjfFzSgZRngcWJzUDZi/04E0fSaF86wZgchMdvTyu+lE36DrUfvuus3bH8+xLPrhM1cTjwpzw==} + peerDependencies: + '@types/react': 17 || 18 || 19 + + '@lit/reactive-element@2.1.0': + resolution: {integrity: sha512-L2qyoZSQClcBmq0qajBVbhYEcG6iK0XfLn66ifLe/RfC0/ihpc+pl0Wdn8bJ8o+hj38cG0fGXRgSS20MuXn7qA==} + + '@mdx-js/mdx@3.1.0': + resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} + + '@napi-rs/wasm-runtime@0.2.9': + resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} + + '@next/env@15.3.0': + resolution: {integrity: sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==} + + '@next/eslint-plugin-next@15.2.4': + resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==} + + '@next/swc-darwin-arm64@15.3.0': + resolution: {integrity: sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@15.3.0': + resolution: {integrity: sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@15.3.0': + resolution: {integrity: sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@15.3.0': + resolution: {integrity: sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@15.3.0': + resolution: {integrity: sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@15.3.0': + resolution: {integrity: sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@15.3.0': + resolution: {integrity: sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@15.3.0': + resolution: {integrity: sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nodevu/core@0.3.0': + resolution: {integrity: sha512-kVJh6kQViCE8Qf1j7pc7yhUke2kKb1eZM+rqln+EytHqyOq+eZUEtfWbDk1vfWhgiknnAcFOhdVA5apT8rTejQ==} + + '@nodevu/parsefiles@0.0.3': + resolution: {integrity: sha512-IjwkVqA2SlH8XweoAw7EJkeyPGk7gW9imlvhpywrKiPCLP1H0meG/blNAF5X38pirsmvhxPe/BCyywT7Exwuow==} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@npmcli/config@8.3.4': + resolution: {integrity: sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/git@5.0.8': + resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/map-workspaces@3.0.6': + resolution: {integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/name-from-folder@2.0.0': + resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/package-json@5.2.1': + resolution: {integrity: sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/promise-spawn@7.0.2': + resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@opentelemetry/api-logs@0.200.0': + resolution: {integrity: sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/core@1.30.1': + resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@2.0.0': + resolution: {integrity: sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/instrumentation@0.200.0': + resolution: {integrity: sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/resources@1.30.1': + resolution: {integrity: sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/resources@2.0.0': + resolution: {integrity: sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.200.0': + resolution: {integrity: sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.10.0' + + '@opentelemetry/sdk-metrics@1.30.1': + resolution: {integrity: sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@1.30.1': + resolution: {integrity: sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.28.0': + resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} + engines: {node: '>=14'} + + '@opentelemetry/semantic-conventions@1.32.0': + resolution: {integrity: sha512-s0OpmpQFSfMrmedAn9Lhg4KWJELHCU6uU9dtIJ28N8UGhf9Y55im5X8fEzwhwDwiSqN+ZPSNrDJF7ivf/AuRPQ==} + engines: {node: '>=14'} + + '@orama/core@0.0.10': + resolution: {integrity: sha512-rZ4AHeHoFTxOXMhM0An2coO3OfR+FpL0ejXc1PPrNsGB4p6VNlky7FAGeuqOvS5gUYB5ywJsmDzCxeflPtgk4w==} + + '@orama/cuid2@2.2.3': + resolution: {integrity: sha512-Lcak3chblMejdlSHgYU2lS2cdOhDpU6vkfIJH4m+YKvqQyLqs1bB8+w6NT1MG5bO12NUK2GFc34Mn2xshMIQ1g==} + + '@orama/highlight@0.1.9': + resolution: {integrity: sha512-eH4uZMea4R9x9vBFJyS/87oR4Y8oIKxF7e1SItJ9DhPlexZWMVZRlFYvHS1BM/563/dU240ct4ZaGHoYKiCkyQ==} + + '@orama/orama@3.1.6': + resolution: {integrity: sha512-qtSrqCqRU93SjEBedz987tvWao1YQSELjBhGkHYGVP7Dg0lBWP6d+uZEIt5gxTAYio/YWWlhivmRABvRfPLmnQ==} + engines: {node: '>= 16.0.0'} + + '@orama/react-components@0.6.4': + resolution: {integrity: sha512-NY0bN/9FAnqp/wgHUnYI0GdlosSDNLZzxeRPzSfsVJboPXnl2oBdFttjB0eecgDecD599AvJCmDsz167tSfNsg==} + peerDependencies: + react: '>=17.0.0 <20.0.0' + react-dom: '>=17.0.0 <20.0.0' + + '@orama/switch@3.1.6': + resolution: {integrity: sha512-Swj9tQZWQ8tw44sAJmlF15xlJ5+h1GdgysvPGTe1NHJCcAOrX2qxp4OsWB+1vxmIxewP6brnP/U3nUehQNQi6g==} + peerDependencies: + '@orama/core': ^0.0.10 + '@orama/orama': 3.1.6 + '@oramacloud/client': ^2.1.1 + + '@orama/wc-components@0.6.4': + resolution: {integrity: sha512-FgzIYVVYQV4OPzWwjME2JHNkwh3Sz0vBnUKcrGWHFs4kcGoltl0Ym/dyzArCNZiGQ56NE5E+0xo5ZFbaA8FxBA==} + + '@oramacloud/client@2.1.4': + resolution: {integrity: sha512-uNPFs4wq/iOPbggCwTkVNbIr64Vfd7ZS/h+cricXVnzXWocjDTfJ3wLL4lr0qiSu41g8z+eCAGBqJ30RO2O4AA==} + + '@phosphor-icons/webcomponents@2.1.5': + resolution: {integrity: sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.2.4': + resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.1': + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + + '@radix-ui/react-arrow@1.1.2': + resolution: {integrity: sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==} + 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 + + '@radix-ui/react-arrow@1.1.3': + resolution: {integrity: sha512-2dvVU4jva0qkNZH6HHWuSz5FN5GeU5tymvCgutF8WaXz9WnD1NgUhy73cqzkjkN4Zkn8lfTPv5JIfrC221W+Nw==} + 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 + + '@radix-ui/react-arrow@1.1.4': + resolution: {integrity: sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==} + 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 + + '@radix-ui/react-collection@1.1.3': + resolution: {integrity: sha512-mM2pxoQw5HJ49rkzwOs7Y6J4oYH22wS8BfK2/bBxROlI4xuR0c4jEenQP63LlTlDkO6Buj2Vt+QYAYcOgqtrXA==} + 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 + + '@radix-ui/react-collection@1.1.4': + resolution: {integrity: sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg==} + 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 + + '@radix-ui/react-compose-refs@1.1.1': + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {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 + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.11': + resolution: {integrity: sha512-yI7S1ipkP5/+99qhSI6nthfo/tR6bL6Zgxi/+1UO6qPa6UeM6nlafWcQ65vB4rU2XjgjMfMhI3k9Y5MztA62VQ==} + 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 + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.5': + resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} + 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 + + '@radix-ui/react-dismissable-layer@1.1.6': + resolution: {integrity: sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==} + 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 + + '@radix-ui/react-dismissable-layer@1.1.7': + resolution: {integrity: sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==} + 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 + + '@radix-ui/react-dropdown-menu@2.1.12': + resolution: {integrity: sha512-VJoMs+BWWE7YhzEQyVwvF9n22Eiyr83HotCVrMQzla/OwRovXCgah7AcaEr4hMNj4gJxSdtIbcHGvmJXOoJVHA==} + 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 + + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.3': + resolution: {integrity: sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==} + 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 + + '@radix-ui/react-focus-scope@1.1.4': + resolution: {integrity: sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==} + 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 + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.4': + resolution: {integrity: sha512-wy3dqizZnZVV4ja0FNnUhIWNwWdoldXrneEyUcVtLYDAt8ovGS4ridtMAOGgXBBIfggL4BOveVWsjXDORdGEQg==} + 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 + + '@radix-ui/react-menu@2.1.12': + resolution: {integrity: sha512-+qYq6LfbiGo97Zz9fioX83HCiIYYFNs8zAsVCMQrIakoNYylIzWuoD/anAD3UzvvR6cnswmfRFJFq/zYYq/k7Q==} + 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 + + '@radix-ui/react-popper@1.2.2': + resolution: {integrity: sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==} + 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 + + '@radix-ui/react-popper@1.2.3': + resolution: {integrity: sha512-iNb9LYUMkne9zIahukgQmHlSBp9XWGeQQ7FvUGNk45ywzOb6kQa+Ca38OphXlWDiKvyneo9S+KSJsLfLt8812A==} + 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 + + '@radix-ui/react-popper@1.2.4': + resolution: {integrity: sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==} + 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 + + '@radix-ui/react-portal@1.1.4': + resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} + 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 + + '@radix-ui/react-portal@1.1.5': + resolution: {integrity: sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==} + 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 + + '@radix-ui/react-portal@1.1.6': + resolution: {integrity: sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==} + 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 + + '@radix-ui/react-presence@1.1.2': + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + 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 + + '@radix-ui/react-presence@1.1.4': + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + 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 + + '@radix-ui/react-primitive@2.0.2': + resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + 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 + + '@radix-ui/react-primitive@2.0.3': + resolution: {integrity: sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==} + 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 + + '@radix-ui/react-primitive@2.1.0': + resolution: {integrity: sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==} + 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 + + '@radix-ui/react-roving-focus@1.1.7': + resolution: {integrity: sha512-C6oAg451/fQT3EGbWHbCQjYTtbyjNO1uzQgMzwyivcHT3GKNEmu1q3UuREhN+HzHAVtv3ivMVK08QlC+PkYw9Q==} + 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 + + '@radix-ui/react-select@2.1.7': + resolution: {integrity: sha512-exzGIRtc7S8EIM2KjFg+7lJZsH7O7tpaBaJbBNVDnOZNhtoQ2iV+iSNfi2Wth0m6h3trJkMVvzAehB3c6xj/3Q==} + 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 + + '@radix-ui/react-separator@1.1.4': + resolution: {integrity: sha512-2fTm6PSiUm8YPq9W0E4reYuv01EE3aFSzt8edBiXqPHshF8N9+Kymt/k0/R+F3dkY5lQyB/zPtrP82phskLi7w==} + 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 + + '@radix-ui/react-slot@1.1.2': + resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.0': + resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tabs@1.1.9': + resolution: {integrity: sha512-KIjtwciYvquiW/wAFkELZCVnaNLBsYNhTNcvl+zfMAbMhRkcvNuCLXDDd22L0j7tagpzVh/QwbFpwAATg7ILPw==} + 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 + + '@radix-ui/react-toast@1.2.11': + resolution: {integrity: sha512-Ed2mlOmT+tktOsu2NZBK1bCSHh/uqULu1vWOkpQTVq53EoOuZUZw7FInQoDB3uil5wZc2oe0XN9a7uVZB7/6AQ==} + 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 + + '@radix-ui/react-tooltip@1.1.8': + resolution: {integrity: sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==} + 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 + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.1': + resolution: {integrity: sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.2': + resolution: {integrity: sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==} + 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 + + '@radix-ui/react-visually-hidden@1.1.3': + resolution: {integrity: sha512-oXSF3ZQRd5fvomd9hmUCb2EHSZbPp3ZSHAHJJU/DlF9XoFkJBBW8RHU/E8WEH+RbSfJd/QFA0sl8ClJXknBwHQ==} + 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 + + '@radix-ui/react-visually-hidden@1.2.0': + resolution: {integrity: sha512-rQj0aAWOpCdCMRbI6pLQm8r7S2BM3YhTa0SzOYD55k+hJA8oo9J+H+9wLM9oMlZWOX/wJWPTzfDfmZkf7LvCfg==} + 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 + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@reporters/github@1.7.2': + resolution: {integrity: sha512-8mvTyKUxxDXkNIWfzv3FsHVwjr8JCwVtwidQws2neV6YgrsJW6OwTOBBhd01RKrDMXPxgpMQuFEfN9hRuUZGuA==} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.11.0': + resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==} + + '@schummar/icu-type-parser@1.21.5': + resolution: {integrity: sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==} + + '@shikijs/core@1.29.2': + resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} + + '@shikijs/core@3.1.0': + resolution: {integrity: sha512-1ppAOyg3F18N8Ge9DmJjGqRVswihN33rOgPovR6gUHW17Hw1L4RlRhnmVQcsacSHh0A8IO1FIgNbtTxUFwodmg==} + + '@shikijs/core@3.3.0': + resolution: {integrity: sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ==} + + '@shikijs/engine-javascript@1.29.2': + resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} + + '@shikijs/engine-javascript@3.1.0': + resolution: {integrity: sha512-/LwkhW17jYi7uPcdaaSQQDNW+xgrHXarkrxYPoC6WPzH2xW5mFMw12doHXJBqxmYvtcTbaatcv2MkH9+3PU1FA==} + + '@shikijs/engine-javascript@3.3.0': + resolution: {integrity: sha512-XlhnFGv0glq7pfsoN0KyBCz9FJU678LZdQ2LqlIdAj6JKsg5xpYKay3DkazXWExp3DTJJK9rMOuGzU2911pg7Q==} + + '@shikijs/engine-oniguruma@1.29.2': + resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} + + '@shikijs/engine-oniguruma@3.1.0': + resolution: {integrity: sha512-reRgy8VzDPdiDocuGDD60Rk/jLxgcgy+6H4n6jYLeN2Yw5ikasRjQQx8ERXtDM35yg2v/d6KolDBcK8hYYhcmw==} + + '@shikijs/langs@1.29.2': + resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} + + '@shikijs/langs@3.1.0': + resolution: {integrity: sha512-hAM//sExPXAXG3ZDWjrmV6Vlw4zlWFOcT1ZXNhFRBwPP27scZu/ZIdZ+TdTgy06zSvyF4KIjnF8j6+ScKGu6ww==} + + '@shikijs/themes@1.29.2': + resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} + + '@shikijs/themes@3.1.0': + resolution: {integrity: sha512-A4MJmy9+ydLNbNCtkmdTp8a+ON+MMXoUe1KTkELkyu0+pHGOcbouhNuobhZoK59cL4cOST6CCz1x+kUdkp9UZA==} + + '@shikijs/types@1.29.2': + resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} + + '@shikijs/types@3.1.0': + resolution: {integrity: sha512-F8e7Fy4ihtcNpJG572BZZC1ErYrBrzJ5Cbc9Zi3REgWry43gIvjJ9lFAoUnuy7Bvy4IFz7grUSxL5edfrrjFEA==} + + '@shikijs/types@3.3.0': + resolution: {integrity: sha512-KPCGnHG6k06QG/2pnYGbFtFvpVJmC3uIpXrAiPrawETifujPBv0Se2oUxm5qYgjCvGJS9InKvjytOdN+bGuX+Q==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@stencil/core@4.27.0': + resolution: {integrity: sha512-GOA+pvSpwL734yijTB8+LHesqPq3o/K6IaCrNoZybNVpe6lgVfvciDwPeP1XOj6JZpA/Lp8Uh3U9znoS8qgwOA==} + engines: {node: '>=16.0.0', npm: '>=7.10.0'} + hasBin: true + + '@stencil/react-output-target@0.8.2': + resolution: {integrity: sha512-O7zRCfRbiPmxaW3oaPBB3RFOMQOuy1dfkcUUg+6en6NckrRzC2YEAzzo6iIkppDrPW34TJJRy/mqJUdlBPLJ1g==} + peerDependencies: + '@stencil/core': '>=3 || >= 4.0.0-beta.0 || >= 4.0.0' + react: ^18 || ^19 + react-dom: ^18 || ^19 + + '@stencil/store@2.1.3': + resolution: {integrity: sha512-qeWJisbcafVcAhFZidiqK82ULlgBzPNEhlsm0PZ54FHkNTIomxns2MiI7IOGUvGPumK1WK7KzajRomHHc8SYag==} + engines: {node: '>=18.0.0', npm: '>=6.0.0'} + peerDependencies: + '@stencil/core': '>=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0' + + '@storybook/addon-controls@8.6.12': + resolution: {integrity: sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-interactions@8.6.12': + resolution: {integrity: sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-styling-webpack@1.0.1': + resolution: {integrity: sha512-5n+SXPfMTc4m7sWaJWPWjoHYWc6/B111M2Ia55toQ3GV4ON4vVlTgH9FX+EgCkDticElj99HLTMDJkHRj2yvkg==} + peerDependencies: + webpack: ^5.0.0 + + '@storybook/addon-themes@8.6.12': + resolution: {integrity: sha512-eqE40MUKTz9lLEOusXjRuDC7DwCSIwlgEnlbvhhEEme8IeKf2di6yvlhenY4nn5QfkUwY1POnZxfJ2OpXj0gqQ==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-viewport@8.6.12': + resolution: {integrity: sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-webpack5-compiler-swc@3.0.0': + resolution: {integrity: sha512-qkQwQEvHlxwPCHz/xakGfXJusEa1gKMw7enELh6QGopblfN3rMiV084boqiIqBReqWTasSwHOqvuElAu0NQ+8w==} + engines: {node: '>=18'} + + '@storybook/builder-webpack5@8.6.12': + resolution: {integrity: sha512-Z7RsQ/1+HbxdbM69JrEFcTL+pnVKUTMmeURMn5/eOvYTGjBtM18vbQTj0LjCUDIjC+v9U+uX8ZJEUVxFbGcxBw==} + peerDependencies: + storybook: ^8.6.12 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/components@8.6.12': + resolution: {integrity: sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/core-webpack@8.6.12': + resolution: {integrity: sha512-TiE+KOm0hxb/p0JxeGHKxqTNX+xnTOFsBh6uloCSuvodutJ5pR/XpxKVxwo1gtSc0Uq3qpgbMhW6qYlYQetnKA==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/core@8.6.12': + resolution: {integrity: sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + '@storybook/csf@0.1.13': + resolution: {integrity: sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==} + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/instrumenter@8.6.12': + resolution: {integrity: sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/manager-api@8.6.12': + resolution: {integrity: sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/node-logger@8.6.12': + resolution: {integrity: sha512-Jk7mQWsu60BptBwYJAd69kMmsEqBAbGDuA/fqban+8vfNiSKgR3PRkhis0DsGEk53bpAEfbkCcyvYRCrrq4M3Q==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/preset-react-webpack@8.6.12': + resolution: {integrity: sha512-aCCHjR/jsVPVThRH7nK70wS0Od44M6hqkkakg3xr7LETZZGj99heen6t4VHvz8gcQYT9l6R/oZwCl7f/PQ3ZBQ==} + engines: {node: '>=18.0.0'} + 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.6.12 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/preview-api@8.6.12': + resolution: {integrity: sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': + resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} + peerDependencies: + typescript: '>= 4.x' + webpack: '>= 4' + + '@storybook/react-dom-shim@8.6.12': + resolution: {integrity: sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==} + 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.6.12 + + '@storybook/react-webpack5@8.6.12': + resolution: {integrity: sha512-wZOjPQ00gu85iQoKgwz5uvM3+bhXrQDVR0ppVAj7vVy6cvLEsJXmqNLHbXPCZuKPmvwzYr1QkslMLCIkF8OGdA==} + engines: {node: '>=18.0.0'} + 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.6.12 + typescript: '>= 4.2.x' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/react@8.6.12': + resolution: {integrity: sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.12 + 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.6.12 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + + '@storybook/test@8.6.12': + resolution: {integrity: sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/theming@8.6.12': + resolution: {integrity: sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@swc/core-darwin-arm64@1.11.24': + resolution: {integrity: sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.11.24': + resolution: {integrity: sha512-H/3cPs8uxcj2Fe3SoLlofN5JG6Ny5bl8DuZ6Yc2wr7gQFBmyBkbZEz+sPVgsID7IXuz7vTP95kMm1VL74SO5AQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.11.24': + resolution: {integrity: sha512-PHJgWEpCsLo/NGj+A2lXZ2mgGjsr96ULNW3+T3Bj2KTc8XtMUkE8tmY2Da20ItZOvPNC/69KroU7edyo1Flfbw==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.11.24': + resolution: {integrity: sha512-C2FJb08+n5SD4CYWCTZx1uR88BN41ZieoHvI8A55hfVf2woT8+6ZiBzt74qW2g+ntZ535Jts5VwXAKdu41HpBg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.11.24': + resolution: {integrity: sha512-ypXLIdszRo0re7PNNaXN0+2lD454G8l9LPK/rbfRXnhLWDBPURxzKlLlU/YGd2zP98wPcVooMmegRSNOKfvErw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.11.24': + resolution: {integrity: sha512-IM7d+STVZD48zxcgo69L0yYptfhaaE9cMZ+9OoMxirNafhKKXwoZuufol1+alEFKc+Wbwp+aUPe/DeWC/Lh3dg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.11.24': + resolution: {integrity: sha512-DZByJaMVzSfjQKKQn3cqSeqwy6lpMaQDQQ4HPlch9FWtDx/dLcpdIhxssqZXcR2rhaQVIaRQsCqwV6orSDGAGw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.11.24': + resolution: {integrity: sha512-Q64Ytn23y9aVDKN5iryFi8mRgyHw3/kyjTjT4qFCa8AEb5sGUuSj//AUZ6c0J7hQKMHlg9do5Etvoe61V98/JQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.11.24': + resolution: {integrity: sha512-9pKLIisE/Hh2vJhGIPvSoTK4uBSPxNVyXHmOrtdDot4E1FUUI74Vi8tFdlwNbaj8/vusVnb8xPXsxF1uB0VgiQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.11.24': + resolution: {integrity: sha512-sybnXtOsdB+XvzVFlBVGgRHLqp3yRpHK7CrmpuDKszhj/QhmsaZzY/GHSeALlMtLup13M0gqbcQvsTNlAHTg3w==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.11.24': + resolution: {integrity: sha512-MaQEIpfcEMzx3VWWopbofKJvaraqmL6HbLlw2bFZ7qYqYw3rkhM0cQVEgyzbHtTWwCwPMFZSC2DUbhlZgrMfLg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@swc/types@0.1.21': + resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + + '@tailwindcss/node@4.0.17': + resolution: {integrity: sha512-LIdNwcqyY7578VpofXyqjH6f+3fP4nrz7FBLki5HpzqjYfXdF2m/eW18ZfoKePtDGg90Bvvfpov9d2gy5XVCbg==} + + '@tailwindcss/oxide-android-arm64@4.0.17': + resolution: {integrity: sha512-3RfO0ZK64WAhop+EbHeyxGThyDr/fYhxPzDbEQjD2+v7ZhKTb2svTWy+KK+J1PHATus2/CQGAGp7pHY/8M8ugg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.0.17': + resolution: {integrity: sha512-e1uayxFQCCDuzTk9s8q7MC5jFN42IY7nzcr5n0Mw/AcUHwD6JaBkXnATkD924ZsHyPDvddnusIEvkgLd2CiREg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.0.17': + resolution: {integrity: sha512-d6z7HSdOKfXQ0HPlVx1jduUf/YtBuCCtEDIEFeBCzgRRtDsUuRtofPqxIVaSCUTOk5+OfRLonje6n9dF6AH8wQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.0.17': + resolution: {integrity: sha512-EjrVa6lx3wzXz3l5MsdOGtYIsRjgs5Mru6lDv4RuiXpguWeOb3UzGJ7vw7PEzcFadKNvNslEQqoAABeMezprxQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.17': + resolution: {integrity: sha512-65zXfCOdi8wuaY0Ye6qMR5LAXokHYtrGvo9t/NmxvSZtCCitXV/gzJ/WP5ksXPhff1SV5rov0S+ZIZU+/4eyCQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.17': + resolution: {integrity: sha512-+aaq6hJ8ioTdbJV5IA1WjWgLmun4T7eYLTvJIToiXLHy5JzUERRbIZjAcjgK9qXMwnvuu7rqpxzej+hGoEcG5g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.0.17': + resolution: {integrity: sha512-/FhWgZCdUGAeYHYnZKekiOC0aXFiBIoNCA0bwzkICiMYS5Rtx2KxFfMUXQVnl4uZRblG5ypt5vpPhVaXgGk80w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.0.17': + resolution: {integrity: sha512-gELJzOHK6GDoIpm/539Golvk+QWZjxQcbkKq9eB2kzNkOvrP0xc5UPgO9bIMNt1M48mO8ZeNenCMGt6tfkvVBg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.0.17': + resolution: {integrity: sha512-68NwxcJrZn94IOW4TysMIbYv5AlM6So1luTlbYUDIGnKma1yTFGBRNEJ+SacJ3PZE2rgcTBNRHX1TB4EQ/XEHw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.17': + resolution: {integrity: sha512-AkBO8efP2/7wkEXkNlXzRD4f/7WerqKHlc6PWb5v0jGbbm22DFBLbIM19IJQ3b+tNewQZa+WnPOaGm0SmwMNjw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.0.17': + resolution: {integrity: sha512-7/DTEvXcoWlqX0dAlcN0zlmcEu9xSermuo7VNGX9tJ3nYMdo735SHvbrHDln1+LYfF6NhJ3hjbpbjkMOAGmkDg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.0.17': + resolution: {integrity: sha512-B4OaUIRD2uVrULpAD1Yksx2+wNarQr2rQh65nXqaqbLY1jCd8fO+3KLh/+TH4Hzh2NTHQvgxVbPdUDOtLk7vAw==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.0.17': + resolution: {integrity: sha512-qeJbRTB5FMZXmuJF+eePd235EGY6IyJZF0Bh0YM6uMcCI4L9Z7dy+lPuLAhxOJzxnajsbjPoDAKOuAqZRtf1PQ==} + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@16.3.0': + resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@testing-library/user-event@14.6.1': + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@ts-morph/common@0.23.0': + resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/concat-stream@2.0.3': + resolution: {integrity: sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/is-empty@1.2.3': + resolution: {integrity: sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/react@19.1.2': + resolution: {integrity: sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==} + + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + + '@types/semver@7.7.0': + resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + + '@types/shimmer@1.2.0': + resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} + + '@types/supports-color@8.1.3': + resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript-eslint/eslint-plugin@8.29.1': + resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/eslint-plugin@8.31.1': + resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.29.1': + resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.31.1': + resolution: {integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.29.1': + resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.31.1': + resolution: {integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.29.1': + resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/type-utils@8.31.1': + resolution: {integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.29.1': + resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.31.1': + resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.29.1': + resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/typescript-estree@8.31.1': + resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.29.1': + resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.31.1': + resolution: {integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.29.1': + resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.31.1': + resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@unrs/resolver-binding-darwin-arm64@1.7.2': + resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.7.2': + resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.7.2': + resolution: {integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + resolution: {integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + resolution: {integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + resolution: {integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + resolution: {integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + resolution: {integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + resolution: {integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + resolution: {integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + resolution: {integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + resolution: {integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.7.2': + resolution: {integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.7.2': + resolution: {integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + resolution: {integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + resolution: {integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + resolution: {integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==} + cpu: [x64] + os: [win32] + + '@vcarl/remark-headings@0.1.0': + resolution: {integrity: sha512-ffQxJUcapJ9Bk+fiGN49YJ9RaYMibrSTSezB1Fcrtu+0YSZxA3bsaLlIv1u/4sjPIeW/BKrs4xtMT3l3P9Ba5Q==} + + '@vercel/analytics@1.5.0': + resolution: {integrity: sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==} + peerDependencies: + '@remix-run/react': ^2 + '@sveltejs/kit': ^1 || ^2 + next: '>= 13' + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 + peerDependenciesMeta: + '@remix-run/react': + optional: true + '@sveltejs/kit': + optional: true + next: + optional: true + react: + optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true + + '@vercel/otel@1.10.4': + resolution: {integrity: sha512-X01cOLU2Aiku4y1Vn9HQ8VmkQEdIQiWhjHa7DEUspcNGNg0Xm7GYAU7ErZ0pH/5spsrvb2wpIIHSBFgs0M5p4g==} + engines: {node: '>=18'} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + '@opentelemetry/api-logs': '>=0.46.0 && <1.0.0' + '@opentelemetry/instrumentation': '>=0.46.0 && <1.0.0' + '@opentelemetry/resources': ^1.19.0 + '@opentelemetry/sdk-logs': '>=0.46.0 && <1.0.0' + '@opentelemetry/sdk-metrics': ^1.19.0 + '@opentelemetry/sdk-trace-base': ^1.19.0 + + '@vercel/speed-insights@1.2.0': + resolution: {integrity: sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw==} + peerDependencies: + '@sveltejs/kit': ^1 || ^2 + next: '>= 13' + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 + peerDependenciesMeta: + '@sveltejs/kit': + optional: true + next: + optional: true + react: + optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true + + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.3: + resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} + engines: {node: '>=4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + cacheable@1.8.10: + resolution: {integrity: sha512-0ZnbicB/N2R6uziva8l6O6BieBklArWyiGx4GkwAhLKhSHyQtRfM9T1nx7HHuHDKkYB/efJQhz3QJ6x/YqoZzA==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + caniuse-lite@1.0.30001716: + resolution: {integrity: sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==} + + case-sensitive-paths-webpack-plugin@2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@4.2.0: + resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-functions-list@3.2.3: + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} + engines: {node: '>=12 || >=16'} + + css-loader@6.11.0: + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssstyle@4.3.1: + resolution: {integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==} + engines: {node: '>=18'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + decode-named-character-reference@1.1.0: + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + dompurify@3.2.5: + resolution: {integrity: sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.149: + resolution: {integrity: sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + endent@2.1.0: + resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.25.3: + resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-next@15.2.4: + resolution: {integrity: sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-import-resolver-typescript@4.3.4: + resolution: {integrity: sha512-buzw5z5VtiQMysYLH9iW9BV04YyZebsw+gPi+c4FCjfS9i6COYOrEWw9t3m3wA9PFBfqcBCqWf32qrXLbwafDw==} + engines: {node: ^16.17.0 || >=18.6.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-mdx@3.4.1: + resolution: {integrity: sha512-/Pt9D5TIAZwAUnCJA24i+uE9NuqulmLI58a1oU1eRb5jeUNOR23FpIt4xuBE9CFR50nd4FkLnuyox7dSNSZ5Tg==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: '>=8.0.0' + remark-lint-file-extension: '*' + peerDependenciesMeta: + remark-lint-file-extension: + optional: true + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import-x@4.10.6: + resolution: {integrity: sha512-sWIaoezWK7kuPA7u29ULsO8WzlYYC8uivaipsazyHiZDykjNsuPtwRsYZIK2luqc5wppwXOop8iFdW7xffo/Xw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-mdx@3.4.1: + resolution: {integrity: sha512-dfQ7LthK/Kmfw2d5XrR4CS1ScmFOa1S9vPjBUxtKgCEl6mNnYVfA/yg50xLyab0pI/GEfGEmvlajs2biDHJBsA==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: '>=8.0.0' + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-storybook@0.12.0: + resolution: {integrity: sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=8' + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.23.0: + resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@2.1.0: + resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-value-to-estree@1.3.0: + resolution: {integrity: sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==} + engines: {node: '>=12.0.0'} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-parse@1.0.3: + resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + feed@4.2.2: + resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} + engines: {node: '>=0.4.0'} + + file-entry-cache@10.0.8: + resolution: {integrity: sha512-FGXHpfmI4XyzbLd3HQ8cbUcsFGohJpZtmQRHr8z8FxxtCe2PcpgIlVLwIgunqjvRmXypBETvwhV4ptJizA+Y1Q==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat-cache@6.1.8: + resolution: {integrity: sha512-R6MaD3nrJAtO7C3QOuS79ficm2pEAy++TgEUD8ii1LVlbcgZ9DtASLkt9B+RZSFCzm7QHDMlXPsqqB6W2Pfr1Q==} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fork-ts-checker-webpack-plugin@8.0.0: + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@11.0.2: + resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-jsdom@26.0.0: + resolution: {integrity: sha512-BqXpTNZFjP40N+s4k8Bk9HS8GFVPJB/+TKtwcShM84wLv6C5dH9o1dydI3pL6potanhfDiIAVDbaaGj/uSdRSA==} + engines: {node: '>=18'} + peerDependencies: + jsdom: '>=26 <27' + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + hookified@1.8.2: + resolution: {integrity: sha512-5nZbBNP44sFCDjSoB//0N7m508APCgbQ4mGGo1KJGBYyCKNHfry1Pvd0JVHZIxjdnqn8nFRBAN/eFB6Rk/4w5w==} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + html-dom-parser@5.0.13: + resolution: {integrity: sha512-B7JonBuAfG32I7fDouUQEogBrz3jK9gAuN1r1AaXpED6dIhtg/JwiSRhjGL7aOJwRz3HU4efowCjQBaoXiREqg==} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-react-parser@5.2.3: + resolution: {integrity: sha512-y34oKTu+9T1fKdJE1cN9QWFWu8sx8Qa5tJOafUfMUF5Niah+yF6zlEHhWh7a0iZEcLRPIMw54bY14ajQF7xP7A==} + peerDependencies: + '@types/react': 0.14 || 15 || 16 || 17 || 18 || 19 + react: 0.14 || 15 || 16 || 17 || 18 || 19 + peerDependenciesMeta: + '@types/react': + optional: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + html-webpack-plugin@5.6.3: + resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@6.0.2: + resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} + engines: {node: '>= 4'} + + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-in-the-middle@1.13.1: + resolution: {integrity: sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.3: + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + intl-messageformat@10.7.16: + resolution: {integrity: sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-empty@1.2.0: + resolution: {integrity: sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jackspeak@4.1.0: + resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==} + engines: {node: 20 || >=22} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyv@5.3.3: + resolution: {integrity: sha512-Rwu4+nXI9fqcxiEHtbkvoes2X+QfkTRo1TMkPfwzipGsJlJO/z69vqB4FNl9xJ3xCpAcbkvmEabZfPzrwN3+gQ==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + known-css-properties@0.35.0: + resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + lint-staged@15.5.0: + resolution: {integrity: sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.3.2: + resolution: {integrity: sha512-vsBzcU4oE+v0lj4FhVLzr9dBTv4/fHIa57l+GCwovP8MoFNZJTOhGU8PXd4v2VJCbECAaijBiHntiekFMLvo0g==} + engines: {node: '>=18.0.0'} + + lit-element@4.2.0: + resolution: {integrity: sha512-MGrXJVAI5x+Bfth/pU9Kst1iWID6GHDLEzFEnyULB/sFiRLgkd8NPK/PeeXxktA3T6EIIaq8U3KcbTU5XFcP2Q==} + + lit-html@3.3.0: + resolution: {integrity: sha512-RHoswrFAxY2d8Cf2mm4OZ1DgzCoBKUKSPvA1fhtSELxUERq2aQQ2h05pO9j81gS1o7RIRJ+CePLogfyahwmynw==} + + lit@3.3.0: + resolution: {integrity: sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==} + + load-plugin@6.0.3: + resolution: {integrity: sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w==} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + luxon@3.6.1: + resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} + engines: {node: '>=12'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + marked-highlight@2.2.1: + resolution: {integrity: sha512-SiCIeEiQbs9TxGwle9/OwbOejHCZsohQRaNTY2u8euEXYt2rYUFoiImUirThU3Gd/o6Q1gHGtH9qloHlbJpNIA==} + peerDependencies: + marked: '>=4 <16' + + marked@13.0.3: + resolution: {integrity: sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==} + engines: {node: '>= 18'} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + mdast-comment-marker@3.0.0: + resolution: {integrity: sha512-bt08sLmTNg00/UtVDiqZKocxqvQqqyQZAg1uaRuO/4ysXV5motg7RolF5o5yy/sY1rG0v2XgZEqFWho1+2UquA==} + + mdast-util-directive@3.1.0: + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-heading-style@3.0.0: + resolution: {integrity: sha512-tsUfM9Kj9msjlemA/38Z3pvraQay880E3zP2NgIthMoGcpU9bcPX9oSM6QC/+eFXGGB4ba+VCB1dKAPHB7Veug==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + module-details-from-path@1.0.4: + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-postinstall@0.2.3: + resolution: {integrity: sha512-Mi7JISo/4Ij2tDZ2xBE2WH+/KvVlkhA6juEjpEeRAVPNCpN3nxJo/5FhDNKgBcdmcmhaH6JjgST4xY/23ZYK0w==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-intl@4.0.3: + resolution: {integrity: sha512-vw25WvRheZG6NzyXYePuhc/xrYHMhnu7cVcB49XoXaQsO4WMV0YDV6BllhRgI5Ne79hpoAQMyk/fxIKtkBVbNg==} + peerDependencies: + next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@15.3.0: + resolution: {integrity: sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-package-arg@11.0.3: + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-pick-manifest@9.1.0: + resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + objectorarray@1.0.5: + resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@2.3.0: + resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} + + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} + + oniguruma-to-es@4.3.3: + resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@7.1.1: + resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} + engines: {node: '>=16'} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-bem-linter@4.0.1: + resolution: {integrity: sha512-jTG3uMo6n2YyxLBPLsRN+5R9djNJZ3mirAugvnYbZaZOwPmLb/MaQ2uql0fSdVYegjZBmX8tW5B0mfZigiXZ9Q==} + peerDependencies: + postcss: ^8.4.21 + + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-loader@8.1.1: + resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-sorting@8.0.2: + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + peerDependencies: + postcss: ^8.4.20 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-plugin-tailwindcss@0.6.11: + resolution: {integrity: sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@7.0.0: + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quotation@2.0.3: + resolution: {integrity: sha512-yEc24TEgCFLXx7D4JHJJkK4JFVtatO8fziwUxY4nB/Jbea9o9CVS3gt22mA0W7rPYAGW2fWzYDSOtD94PwOyqA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + react-docgen-typescript@2.2.2: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@7.1.1: + resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} + engines: {node: '>=16.14.0'} + + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-property@2.0.2: + resolution: {integrity: sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + engines: {node: '>=0.10.0'} + + read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + reading-time@1.5.0: + resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} + + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.0: + resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-lint-blockquote-indentation@4.0.1: + resolution: {integrity: sha512-7BhOsImFgTD7IIliu2tt+yJbx5gbMbXCOspc3VdYf/87iLJdWKqJoMy2V6DZG7kBjBlBsIZi38fDDngJttXt4w==} + + remark-lint-checkbox-character-style@5.0.1: + resolution: {integrity: sha512-6qilm7XQXOcTvjFEqqNY57Ki7md9rkSdpMIfIzVXdEnI4Npl2BnUff6ANrGRM7qTgJTrloaf8H0eQ91urcU6Og==} + + remark-lint-checkbox-content-indent@5.0.1: + resolution: {integrity: sha512-R1gV4vGkgJQZQFIGve1paj4mVDUWlgX0KAHhjNpSyzuwuSIDoxWpEuSJSxcnczESgcjM4yVrZqEGMYi/fqZK0w==} + + remark-lint-code-block-style@4.0.1: + resolution: {integrity: sha512-d4mHsEpv1yqXWl2dd+28tGRX0Lzk5qw7cfxAQVkOXPUONhsMFwXJEBeeqZokeG4lOKtkKdIJR7ezScDfWR0X4w==} + + remark-lint-definition-spacing@4.0.1: + resolution: {integrity: sha512-ZjShKaBUGeHrZyIZWwOZOxX3guj/P7gRR5wbDADQctL4oK+ZLQfOvJFmAsF1nD4gNr0Ficjd0AuiWxQcc1qTMA==} + + remark-lint-fenced-code-flag@4.2.0: + resolution: {integrity: sha512-QWGTrnYbcopOFZR98djDREmKApLonJ7hmXE7pEcOGee9JY/EUIVS7Lq54Hy9CtU3cVIvQQmiMTxCwUhfddDJFA==} + + remark-lint-fenced-code-marker@4.0.1: + resolution: {integrity: sha512-uI91OcVPKjNxV+vpjDW9T64hkE0a/CRn3JhwdMxUAJYpVsKnA7PFPSFJOx/abNsVZHNSe7ZFGgGdaH/lqgSizA==} + + remark-lint-file-extension@3.0.1: + resolution: {integrity: sha512-1Ca5Dgu9J/j1fb7nvzNXh2xy4ija03igiP5i4le64LfrlloGax4VWcG/M7uL+CpRTFVqEJMWw0iKDEZxYSgImg==} + + remark-lint-final-definition@4.0.2: + resolution: {integrity: sha512-fz3UAcFQef77Zb8rz4za2R6y7pdyJot22iGtFoNIKdtbcNa8IKKEVoY3NIfrsLfhrjwzcha1Sp3fFA9NF6lc4w==} + + remark-lint-final-newline@3.0.1: + resolution: {integrity: sha512-q5diKHD6BMbzqWqgvYPOB8AJgLrMzEMBAprNXjcpKoZ/uCRqly+gxjco+qVUMtMWSd+P+KXZZEqoa7Y6QiOudw==} + + remark-lint-first-heading-level@4.0.1: + resolution: {integrity: sha512-ZqH476wQU2rk3L2X1Ef/FsdDZJsSkMqTkEjKyeac/hxnwDZ8ZLYYMmm4UKTgVZTtqFUkNYzgGEPAFXtrppHbJA==} + + remark-lint-hard-break-spaces@4.1.1: + resolution: {integrity: sha512-AKDPDt39fvmr3yk38OKZEWJxxCOOUBE+96AsBfs+ExS5LW6oLa9041X5ahFDQHvHGzdoremEIaaElursaPEkNg==} + + remark-lint-heading-style@4.0.1: + resolution: {integrity: sha512-+rUpJ/N2CGC5xPgZ18XgsCsUBtadgEhdTi0BJPrsFmHPzL22BUHajeg9im8Y7zphUcbi1qFiKuxZd2nzDgZSXQ==} + + remark-lint-list-item-bullet-indent@5.0.1: + resolution: {integrity: sha512-LKuTxkw5aYChzZoF3BkfaBheSCHs0T8n8dPHLQEuOLo6iC5wy98iyryz0KZ61GD8stlZgQO2KdWSdnP6vr40Iw==} + + remark-lint-list-item-indent@4.0.1: + resolution: {integrity: sha512-gJd1Q+jOAeTgmGRsdMpnRh01DUrAm0O5PCQxE8ttv1QZOV015p/qJH+B4N6QSmcUuPokHLAh9USuq05C73qpiA==} + + remark-lint-maximum-line-length@4.1.1: + resolution: {integrity: sha512-oIncZkI0oIXZk+1kJOMnE3WPbyMTUbds0q1E8WbCwtjN9pAZsQD2e+wK+xdi5VqOLPkvLER+yzbmi/A3Tp+XEg==} + + remark-lint-no-blockquote-without-marker@6.0.1: + resolution: {integrity: sha512-b4IOkNcG7C16HYAdKUeAhO7qPt45m+v7SeYbVrqvbSFtlD3EUBL8fgHRgLK1mdujFXDP1VguOEMx+Txv8JOT4w==} + + remark-lint-no-consecutive-blank-lines@5.0.1: + resolution: {integrity: sha512-yLtYCrEBtGDao4ozmZruRzjMYAcBVFK69PoYjPfNwFO8pQ/LPt8KCq6oyg1ronNyRbDYEGqVdLIHcT/zL3LjPA==} + + remark-lint-no-duplicate-definitions@4.0.1: + resolution: {integrity: sha512-Ek+A/xDkv5Nn+BXCFmf+uOrFSajCHj6CjhsHjtROgVUeEPj726yYekDBoDRA0Y3+z+U30AsJoHgf/9Jj1IFSug==} + + remark-lint-no-file-name-articles@3.0.1: + resolution: {integrity: sha512-h31ZDDJV2T6g9WLBrXg1CJ1m8M170O/tlDPAEPGCa/rxwKvMcfum4yicaot0ZKbUZ1uEPjVSUPDeo3sU0zciCQ==} + + remark-lint-no-file-name-consecutive-dashes@3.0.1: + resolution: {integrity: sha512-qGJRZ81sowEjv1dBodbHZ29pDZbrFpxiQQ6gBvkkHkkoYPekdnr8iUxmV38HcqH8+JNW1O4ELr+m71AA9/34Mw==} + + remark-lint-no-file-name-outer-dashes@3.0.1: + resolution: {integrity: sha512-QIMrBPZKZ6BwQRPM65HhEHcJv6+wZnZ4z2ikvx2ht40cSmIN7ZTL7wKKJlnpF+4Ioi9XUj+cRHWqEhwJ9LCQIw==} + + remark-lint-no-heading-content-indent@5.0.1: + resolution: {integrity: sha512-YIWktnZo7M9aw7PGnHdshvetSH3Y0qW+Fm143R66zsk5lLzn1XA5NEd/MtDzP8tSxxV+gcv+bDd5St1QUI4oSQ==} + + remark-lint-no-heading-indent@5.0.1: + resolution: {integrity: sha512-R/KkR9Qfh0AM3asadSnQQXMHu6BNZxPbxLI9h9JBPIZM+EtzycDlhaAHbOlQUdaHA5UEANhYENZBLrueH50Cdg==} + + remark-lint-no-literal-urls@4.0.1: + resolution: {integrity: sha512-RhTANFkFFXE6bM+WxWcPo2TTPEfkWG3lJZU50ycW7tJJmxUzDNzRed/z80EVJIdGwFa0NntVooLUJp3xrogalQ==} + + remark-lint-no-multiple-toplevel-headings@4.0.1: + resolution: {integrity: sha512-8sepobIOu3PlDOuMH7jtri+LH4tFNVQU+aqKSkrlNRdp831fYz9S+jA2crTVqWqxVbTwiF96uJWePv8/9qmHnA==} + + remark-lint-no-shell-dollars@4.0.1: + resolution: {integrity: sha512-UPE1DNCIkLtnS3YFD065Gkq5lQqfndBDpX8Ct/Zjn7M0/hzCyf9B6tpwCU0I20m9jzhS/CSY6mxYnAiEg+KkFA==} + + remark-lint-no-shortcut-reference-image@4.0.1: + resolution: {integrity: sha512-hQhJ3Dr8ZWRdj7qm6+9vcPpqtGchhENA2UHOmcTraLf6dN1cFATCgY/HbTbRIN6NkG/EEClTgRC1QCokWR2Mmw==} + + remark-lint-no-shortcut-reference-link@4.0.1: + resolution: {integrity: sha512-YxciuUZc90QaJYhayGO80lS3zxEOBgwwLW1MKYB7AfUdkrLcLVlS+DFloiq0MZ7EDVXuuGUEnIzyjyLSbI5BUA==} + + remark-lint-no-table-indentation@5.0.1: + resolution: {integrity: sha512-LHw9MGsuilM+3HkbRFZmdSE4T+sziaQzULH5ImYkLH2MLF8GKnAm2mgtveLZcW01wqFV2oEbpF1Y/s/QloXT7w==} + + remark-lint-no-tabs@4.0.1: + resolution: {integrity: sha512-+lhGUgY3jhTwWn1x+tTIJNy5Fbs2NcYXCobRY7xeszY0VKPCBF2GyELafOVnr+iTmosXLuhZPp5YwNezQKH9IQ==} + + remark-lint-no-trailing-spaces@3.0.2: + resolution: {integrity: sha512-4KxOdzZ+BlCZDu9yYsKGOfB8fknukxYD+9VhI1I5l7Ns7TgqdYq4k/qwUfTHpQ4TF9aokL/tOpsEGOc4PGKTKw==} + + remark-lint-no-undefined-references@5.0.2: + resolution: {integrity: sha512-5prkVb1tKwJwr5+kct/UjsLjvMdEDO7uClPeGfrxfAcN59+pWU8OUSYiqYmpSKWJPIdyxPRS8Oyf1HtaYvg8VQ==} + + remark-lint-no-unused-definitions@4.0.2: + resolution: {integrity: sha512-KRzPmvfq6b3LSEcAQZobAn+5eDfPTle0dPyDEywgPSc3E7MIdRZQenL9UL8iIqHQWK4FvdUD0GX8FXGqu5EuCw==} + + remark-lint-ordered-list-marker-style@4.0.1: + resolution: {integrity: sha512-vZTAbstcBPbGwJacwldGzdGmKwy5/4r29SZ9nQkME4alEl5B1ReSBlYa8t7QnTSW7+tqvA9Sg71RPadgAKWa4w==} + + remark-lint-prohibited-strings@4.0.0: + resolution: {integrity: sha512-dfLF4da5v3klRAdkHBLpNIC7WpvNdN7Eylgf+p19HPJn53CaxqlGjFvAQDAJU83xXEPWAmdonlx04GIS5ryLow==} + + remark-lint-rule-style@4.0.1: + resolution: {integrity: sha512-gl1Ft13oTS3dJUCsWZzxD/5dAwI1HON67KU7uNfODD5gXJ8Y11deOWbun190ma7XbYdD7P0l8VT2HeRtEQzrWg==} + + remark-lint-strong-marker@4.0.1: + resolution: {integrity: sha512-KaGtj/OWEP4eoafevnlp3NsEVwC7yGEjBJ6uFMzfjNoXyjATdfZ2euB/AfKVt/A/FdZeeMeVoAUFH4DL+hScLQ==} + + remark-lint-table-cell-padding@5.1.1: + resolution: {integrity: sha512-6fgVA1iINBoAJaZMOnSsxrF9Qj9+hmCqrsrqZqgJJETjT1ODGH64iAN1/6vHR7dIwmy73d6ysB2WrGyKhVlK3A==} + + remark-lint-table-pipes@5.0.1: + resolution: {integrity: sha512-oOkRC0WRRDwvodfffGafoBFBTGwy9udQgKtxN53apmZpOmaUAxTi833ite0jMo078+LehNftO5bxrElZ9EQUlQ==} + + remark-lint-unordered-list-marker-style@4.0.1: + resolution: {integrity: sha512-HMrVQC0Qbr8ktSy+1lJGRGU10qecL3T14L6s/THEQXR5Tk0wcsLLG0auNvB4r2+H+ClhVO/Vnm1TEosh1OCsfw==} + + remark-lint@10.0.1: + resolution: {integrity: sha512-1+PYGFziOg4pH7DDf1uMd4AR3YuO2EMnds/SdIWMPGT7CAfDRSnAmpxPsJD0Ds3IKpn97h3d5KPGf1WFOg6hXQ==} + + remark-mdx@3.1.0: + resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} + + remark-message-control@8.0.0: + resolution: {integrity: sha512-brpzOO+jdyE/mLqvqqvbogmhGxKygjpCUCG/PwSCU43+JZQ+RM+sSzkCWBcYvgF3KIAVNIoPsvXjBkzO7EdsYQ==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-preset-lint-node@5.1.2: + resolution: {integrity: sha512-ukBPfLqD05AomGL+Z3tbmBCKTaEM+9Dv8Pn0r/0vok8F95Z0wj/AY70cFhm038ID1vKBD07anky11dvigDAHlw==} + engines: {node: '>=18.0.0'} + + remark-preset-lint-recommended@7.0.1: + resolution: {integrity: sha512-j1CY5u48PtZl872BQ40uWSQMT3R4gXKp0FUgevMu5gW7hFMtvaCiDq+BfhzeR8XKKiW9nIMZGfIMZHostz5X4g==} + + remark-reading-time@2.0.1: + resolution: {integrity: sha512-fy4BKy9SRhtYbEHvp6AItbRTnrhiDGbqLQTSYVbQPGuRCncU1ubSsh9p/W5QZSxtYcUXv8KGL0xBgPLyNJA1xw==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-in-the-middle@7.5.2: + resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} + engines: {node: '>=8.6.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.2: + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + engines: {node: '>= 10.13.0'} + + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + sharp@0.34.1: + resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.29.2: + resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} + + shiki@3.1.0: + resolution: {integrity: sha512-LdTNyWQlC5zdCaHdcp1zPA1OVA2ivb+KjGOOnGcy02tGaF5ja+dGibWFH7Ar8YlngUgK/scDqworK18Ys9cbYA==} + + shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sse.js@2.6.0: + resolution: {integrity: sha512-eGEqOwiPX9Cm+KsOYkcz7HIEqWUSOFeChr0sT515hDOBLvQy5yxaLSZx9JWMhwjf75CXJq+7cgG1MKNh9GQ36w==} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + storybook@8.6.12: + resolution: {integrity: sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==} + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-loader@3.3.4: + resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + style-object-to-css-string@1.1.3: + resolution: {integrity: sha512-bISQoUsir/qGfo7vY8rw00ia9nnyE1jvYt3zZ2jhdkcXZ6dAEi74inMzQ6On57vFI+I4Fck6wOv5UI9BEwJDgw==} + + style-to-js@1.1.16: + resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} + + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + 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 + + stylelint-config-recommended@15.0.0: + resolution: {integrity: sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.13.0 + + stylelint-config-standard@37.0.0: + resolution: {integrity: sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.13.0 + + stylelint-order@6.0.4: + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + + stylelint-selector-bem-pattern@4.0.1: + resolution: {integrity: sha512-zpyC52/aqwbxbtliyTKdV3gv+h/ExZUTIn7tKMt9nfILtMhYIeJNF5a3UE1dtv9L826ulXU+83YA83Ymx3jW0A==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.2.1 + + stylelint@16.17.0: + resolution: {integrity: sha512-I9OwVIWRMqVm2Br5iTbrfSqGRPWQUlvm6oXO1xZuYYu0Gpduy67N8wXOZv15p6E/JdlZiAtQaIoLKZEWk5hrjw==} + engines: {node: '>=18.12.0'} + hasBin: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + sval@0.6.7: + resolution: {integrity: sha512-RLkd73Wkx55fAiz250B4XBgufLiT8k1T6cbWM2/EoALkJNTkX5gYMNpvHsmhc+NQqMn3Bu99Kty2PKyunYiLsw==} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + swc-loader@0.2.6: + resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} + peerDependencies: + '@swc/core': ^1.2.147 + webpack: '>=2' + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.11.4: + resolution: {integrity: sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tailwindcss@4.0.17: + resolution: {integrity: sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-morph@22.0.0: + resolution: {integrity: sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + engines: {node: '>=18.0.0'} + hasBin: true + + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + + turbo-darwin-64@2.4.4: + resolution: {integrity: sha512-5kPvRkLAfmWI0MH96D+/THnDMGXlFNmjeqNRj5grLKiry+M9pKj3pRuScddAXPdlxjO5Ptz06UNaOQrrYGTx1g==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.4.4: + resolution: {integrity: sha512-/gtHPqbGQXDFhrmy+Q/MFW2HUTUlThJ97WLLSe4bxkDrKHecDYhAjbZ4rN3MM93RV9STQb3Tqy4pZBtsd4DfCw==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.4.4: + resolution: {integrity: sha512-SR0gri4k0bda56hw5u9VgDXLKb1Q+jrw4lM7WAhnNdXvVoep4d6LmnzgMHQQR12Wxl3KyWPbkz9d1whL6NTm2Q==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.4.4: + resolution: {integrity: sha512-COXXwzRd3vslQIfJhXUklgEqlwq35uFUZ7hnN+AUyXx7hUOLIiD5NblL+ETrHnhY4TzWszrbwUMfe2BYWtaPQg==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@2.4.4: + resolution: {integrity: sha512-PV9rYNouGz4Ff3fd6sIfQy5L7HT9a4fcZoEv8PKRavU9O75G7PoDtm8scpHU10QnK0QQNLbE9qNxOAeRvF0fJg==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.4.4: + resolution: {integrity: sha512-403sqp9t5sx6YGEC32IfZTVWkRAixOQomGYB8kEc6ZD+//LirSxzeCHCnM8EmSXw7l57U1G+Fb0kxgTcKPU/Lg==} + cpu: [arm64] + os: [win32] + + turbo@2.4.4: + resolution: {integrity: sha512-N9FDOVaY3yz0YCOhYIgOGYad7+m2ptvinXygw27WPLQvcZDl3+0Sa77KGVlLSiuPDChOUEnTKE9VJwLSi9BPGQ==} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript-eslint@8.29.1: + resolution: {integrity: sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici@5.29.0: + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + engines: {node: '>=14.0'} + + unified-engine@11.2.2: + resolution: {integrity: sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==} + + unified-lint-rule@2.1.2: + resolution: {integrity: sha512-JWudPtRN7TLFHVLEVZ+Rm8FUb6kCAtHxEXFgBGDxRSdNMnGyTU5zyYvduHSF/liExlFB3vdFvsAHnNVE/UjAwA==} + + unified-lint-rule@3.0.1: + resolution: {integrity: sha512-HxIeQOmwL19DGsxHXbeyzKHBsoSCFO7UtRVUvT2v61ptw/G+GbysWcrpHdfs5jqbIFDA11MoKngIhQK0BeTVjA==} + + unified-message-control@5.0.0: + resolution: {integrity: sha512-B2cSAkpuMVVmPP90KCfKdBhm1e9KYJ+zK3x5BCa0N65zpq1Ybkc9C77+M5qwR8FWO7RF3LM5QRRPZtgjW6DUCw==} + + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-inspect@8.1.0: + resolution: {integrity: sha512-mOlg8Mp33pR0eeFpo5d2902ojqFFOKMMG2hF8bmH7ZlhnmjFgh0NI3/ZDwdaBJNbvrS7LZFVrBVtIE9KZ9s7vQ==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@4.1.1: + resolution: {integrity: sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@3.1.0: + resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==} + + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unrs-resolver@1.7.2: + resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-intl@4.1.0: + resolution: {integrity: sha512-mQvDYFvoGn+bm/PWvlQOtluKCknsQ5a9F1Cj0hMfBjMBVTwnOqLPd6srhjvVdEQEQFVyHM1PfyifKqKYb11M9Q==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + user-agent-data-types@0.4.2: + resolution: {integrity: sha512-jXep3kO/dGNmDOkbDa8ccp4QArgxR4I76m3QVcJ1aOF0B9toc+YtSXtX5gLdDTZXyWlpQYQrABr6L1L2GZOghw==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-matter@5.0.1: + resolution: {integrity: sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile-reporter@8.1.1: + resolution: {integrity: sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==} + + vfile-sort@4.0.0: + resolution: {integrity: sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==} + + vfile-statistics@3.0.0: + resolution: {integrity: sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + walk-up-path@3.0.1: + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-dev-middleware@6.1.3: + resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-hot-middleware@2.26.1: + resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + webpack@5.99.7: + resolution: {integrity: sha512-CNqKBRMQjwcmKR0idID5va1qlhrqVUKpovi+Ec79ksW8ux7iS1+A6VqzfZXgVYCFRKl7XL5ap3ZoMpwBJxcg0w==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@actions/core@1.11.1': + dependencies: + '@actions/exec': 1.1.1 + '@actions/http-client': 2.2.3 + + '@actions/exec@1.1.1': + dependencies: + '@actions/io': 1.1.3 + + '@actions/http-client@2.2.3': + dependencies: + tunnel: 0.0.6 + undici: 5.29.0 + + '@actions/io@1.1.3': {} + + '@adobe/css-tools@4.4.2': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@asamuzakjp/css-color@3.1.5': + dependencies: + '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 10.4.3 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.1': {} + + '@babel/core@7.27.1': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.1': + dependencies: + '@babel/compat-data': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.1': + dependencies: + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 + + '@babel/parser@7.27.1': + dependencies: + '@babel/types': 7.27.1 + + '@babel/runtime@7.27.1': {} + + '@babel/template@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 + + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + + '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@emnapi/core@1.4.3': + dependencies: + '@emnapi/wasi-threads': 1.0.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.4.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.25.3': + optional: true + + '@esbuild/android-arm64@0.25.3': + optional: true + + '@esbuild/android-arm@0.25.3': + optional: true + + '@esbuild/android-x64@0.25.3': + optional: true + + '@esbuild/darwin-arm64@0.25.3': + optional: true + + '@esbuild/darwin-x64@0.25.3': + optional: true + + '@esbuild/freebsd-arm64@0.25.3': + optional: true + + '@esbuild/freebsd-x64@0.25.3': + optional: true + + '@esbuild/linux-arm64@0.25.3': + optional: true + + '@esbuild/linux-arm@0.25.3': + optional: true + + '@esbuild/linux-ia32@0.25.3': + optional: true + + '@esbuild/linux-loong64@0.25.3': + optional: true + + '@esbuild/linux-mips64el@0.25.3': + optional: true + + '@esbuild/linux-ppc64@0.25.3': + optional: true + + '@esbuild/linux-riscv64@0.25.3': + optional: true + + '@esbuild/linux-s390x@0.25.3': + optional: true + + '@esbuild/linux-x64@0.25.3': + optional: true + + '@esbuild/netbsd-arm64@0.25.3': + optional: true + + '@esbuild/netbsd-x64@0.25.3': + optional: true + + '@esbuild/openbsd-arm64@0.25.3': + optional: true + + '@esbuild/openbsd-x64@0.25.3': + optional: true + + '@esbuild/sunos-x64@0.25.3': + optional: true + + '@esbuild/win32-arm64@0.25.3': + optional: true + + '@esbuild/win32-ia32@0.25.3': + optional: true + + '@esbuild/win32-x64@0.25.3': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.23.0(jiti@2.4.2))': + dependencies: + eslint: 9.23.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/compat@1.2.9(eslint@9.23.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.23.0(jiti@2.4.2) + + '@eslint/config-array@0.19.2': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.23.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@fastify/busboy@2.1.1': {} + + '@floating-ui/core@1.7.0': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.7.0': + dependencies: + '@floating-ui/core': 1.7.0 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/dom': 1.7.0 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + '@floating-ui/utils@0.2.9': {} + + '@formatjs/ecma402-abstract@2.3.4': + dependencies: + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/intl-localematcher': 0.6.1 + decimal.js: 10.5.0 + tslib: 2.8.1 + + '@formatjs/fast-memoize@2.2.7': + dependencies: + tslib: 2.8.1 + + '@formatjs/icu-messageformat-parser@2.11.2': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/icu-skeleton-parser': 1.8.14 + tslib: 2.8.1 + + '@formatjs/icu-skeleton-parser@1.8.14': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.5.10': + dependencies: + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.6.1': + dependencies: + tslib: 2.8.1 + + '@heroicons/react@2.2.0(react@19.1.0)': + dependencies: + react: 19.1.0 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@img/sharp-darwin-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.1.0 + optional: true + + '@img/sharp-darwin-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.1.0 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-darwin-x64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-arm@1.1.0': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-s390x@1.1.0': + optional: true + + '@img/sharp-libvips-linux-x64@1.1.0': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.1.0': + optional: true + + '@img/sharp-linux-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.1.0 + optional: true + + '@img/sharp-linux-arm@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.1.0 + optional: true + + '@img/sharp-linux-s390x@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.1.0 + optional: true + + '@img/sharp-linux-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.1.0 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + optional: true + + '@img/sharp-wasm32@0.34.1': + dependencies: + '@emnapi/runtime': 1.4.3 + optional: true + + '@img/sharp-win32-ia32@0.34.1': + optional: true + + '@img/sharp-win32-x64@0.34.1': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@keyv/serialize@1.0.3': + dependencies: + buffer: 6.0.3 + + '@lit-labs/ssr-dom-shim@1.3.0': {} + + '@lit/react@1.0.7(@types/react@19.1.2)': + dependencies: + '@types/react': 19.1.2 + + '@lit/reactive-element@2.1.0': + dependencies: + '@lit-labs/ssr-dom-shim': 1.3.0 + + '@mdx-js/mdx@3.1.0(acorn@8.14.1)': + dependencies: + '@types/estree': 1.0.7 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.0(acorn@8.14.1) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.4 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - acorn + - supports-color + + '@napi-rs/wasm-runtime@0.2.9': + dependencies: + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 + '@tybys/wasm-util': 0.9.0 + optional: true + + '@next/env@15.3.0': {} + + '@next/eslint-plugin-next@15.2.4': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@15.3.0': + optional: true + + '@next/swc-darwin-x64@15.3.0': + optional: true + + '@next/swc-linux-arm64-gnu@15.3.0': + optional: true + + '@next/swc-linux-arm64-musl@15.3.0': + optional: true + + '@next/swc-linux-x64-gnu@15.3.0': + optional: true + + '@next/swc-linux-x64-musl@15.3.0': + optional: true + + '@next/swc-win32-arm64-msvc@15.3.0': + optional: true + + '@next/swc-win32-x64-msvc@15.3.0': + optional: true + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@nodevu/core@0.3.0': + dependencies: + '@nodevu/parsefiles': 0.0.3 + luxon: 3.6.1 + semver: 7.7.1 + + '@nodevu/parsefiles@0.0.3': {} + + '@nolyfill/is-core-module@1.0.39': {} + + '@npmcli/config@8.3.4': + dependencies: + '@npmcli/map-workspaces': 3.0.6 + '@npmcli/package-json': 5.2.1 + ci-info: 4.2.0 + ini: 4.1.3 + nopt: 7.2.1 + proc-log: 4.2.0 + semver: 7.7.1 + walk-up-path: 3.0.1 + transitivePeerDependencies: + - bluebird + + '@npmcli/git@5.0.8': + dependencies: + '@npmcli/promise-spawn': 7.0.2 + ini: 4.1.3 + lru-cache: 10.4.3 + npm-pick-manifest: 9.1.0 + proc-log: 4.2.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.7.1 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + + '@npmcli/map-workspaces@3.0.6': + dependencies: + '@npmcli/name-from-folder': 2.0.0 + glob: 10.4.5 + minimatch: 9.0.5 + read-package-json-fast: 3.0.2 + + '@npmcli/name-from-folder@2.0.0': {} + + '@npmcli/package-json@5.2.1': + dependencies: + '@npmcli/git': 5.0.8 + glob: 10.4.5 + hosted-git-info: 7.0.2 + json-parse-even-better-errors: 3.0.2 + normalize-package-data: 6.0.2 + proc-log: 4.2.0 + semver: 7.7.1 + transitivePeerDependencies: + - bluebird + + '@npmcli/promise-spawn@7.0.2': + dependencies: + which: 4.0.0 + + '@opentelemetry/api-logs@0.200.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/core@2.0.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.32.0 + + '@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.200.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.13.1 + require-in-the-middle: 7.5.2 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/resources@2.0.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.32.0 + + '@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.200.0 + '@opentelemetry/core': 2.0.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/semantic-conventions@1.28.0': {} + + '@opentelemetry/semantic-conventions@1.32.0': {} + + '@orama/core@0.0.10': + dependencies: + '@orama/cuid2': 2.2.3 + dedent: 1.5.3 + transitivePeerDependencies: + - babel-plugin-macros + + '@orama/cuid2@2.2.3': + dependencies: + '@noble/hashes': 1.8.0 + + '@orama/highlight@0.1.9': {} + + '@orama/orama@3.1.6': {} + + '@orama/react-components@0.6.4(@orama/core@0.0.10)(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@orama/wc-components': 0.6.4(@orama/core@0.0.10) + '@stencil/react-output-target': 0.8.2(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + transitivePeerDependencies: + - '@orama/core' + - '@stencil/core' + - '@types/react' + + '@orama/switch@3.1.6(@orama/core@0.0.10)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4)': + dependencies: + '@orama/core': 0.0.10 + '@orama/orama': 3.1.6 + '@oramacloud/client': 2.1.4 + + '@orama/wc-components@0.6.4(@orama/core@0.0.10)': + dependencies: + '@orama/highlight': 0.1.9 + '@orama/orama': 3.1.6 + '@orama/switch': 3.1.6(@orama/core@0.0.10)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4) + '@oramacloud/client': 2.1.4 + '@phosphor-icons/webcomponents': 2.1.5 + '@stencil/core': 4.27.0 + '@stencil/store': 2.1.3(@stencil/core@4.27.0) + dompurify: 3.2.5 + highlight.js: 11.11.1 + markdown-it: 14.1.0 + marked: 13.0.3 + marked-highlight: 2.2.1(marked@13.0.3) + shiki: 1.29.2 + sse.js: 2.6.0 + transitivePeerDependencies: + - '@orama/core' + + '@oramacloud/client@2.1.4': + dependencies: + '@orama/cuid2': 2.2.3 + '@orama/orama': 3.1.6 + lodash: 4.17.21 + + '@phosphor-icons/webcomponents@2.1.5': + dependencies: + lit: 3.3.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.2.4': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.1': {} + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-arrow@1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-arrow@1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-arrow@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-collection@1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-collection@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-context@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-context@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dialog@1.1.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + aria-hidden: 1.2.4 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-direction@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dismissable-layer@1.1.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dismissable-layer@1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dismissable-layer@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dropdown-menu@2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-menu': 2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-focus-scope@1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-focus-scope@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-id@1.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-id@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-label@2.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-menu@2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + aria-hidden: 1.2.4 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-popper@1.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/rect': 1.1.0 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-popper@1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-popper@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-portal@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-portal@1.1.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-portal@1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-presence@1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-presence@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-primitive@2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-slot': 1.1.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-primitive@2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-primitive@2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-roving-focus@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-select@2.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + aria-hidden: 1.2.4 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-separator@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-slot@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-slot@1.2.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-tabs@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-toast@1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-tooltip@1.1.8(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-controllable-state@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-rect@1.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-size@1.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-visually-hidden@1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-visually-hidden@1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-visually-hidden@1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/rect@1.1.0': {} + + '@radix-ui/rect@1.1.1': {} + + '@reporters/github@1.7.2': + dependencies: + '@actions/core': 1.11.1 + stack-utils: 2.0.6 + + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.11.0': {} + + '@schummar/icu-type-parser@1.21.5': {} + + '@shikijs/core@1.29.2': + dependencies: + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/core@3.1.0': + dependencies: + '@shikijs/types': 3.1.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/core@3.3.0': + dependencies: + '@shikijs/types': 3.3.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 2.3.0 + + '@shikijs/engine-javascript@3.1.0': + dependencies: + '@shikijs/types': 3.1.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 3.1.1 + + '@shikijs/engine-javascript@3.3.0': + dependencies: + '@shikijs/types': 3.3.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.3 + + '@shikijs/engine-oniguruma@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/engine-oniguruma@3.1.0': + dependencies: + '@shikijs/types': 3.1.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/langs@3.1.0': + dependencies: + '@shikijs/types': 3.1.0 + + '@shikijs/themes@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/themes@3.1.0': + dependencies: + '@shikijs/types': 3.1.0 + + '@shikijs/types@1.29.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/types@3.1.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/types@3.3.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@stencil/core@4.27.0': {} + + '@stencil/react-output-target@0.8.2(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@lit/react': 1.0.7(@types/react@19.1.2) + '@stencil/core': 4.27.0 + html-react-parser: 5.2.3(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + style-object-to-css-string: 1.1.3 + ts-morph: 22.0.0 + transitivePeerDependencies: + - '@types/react' + + '@stencil/store@2.1.3(@stencil/core@4.27.0)': + dependencies: + '@stencil/core': 4.27.0 + + '@storybook/addon-controls@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + + '@storybook/addon-interactions@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/test': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + polished: 4.3.1 + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + + '@storybook/addon-styling-webpack@1.0.1(storybook@8.6.12(prettier@3.5.3))(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3))': + dependencies: + '@storybook/node-logger': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + transitivePeerDependencies: + - storybook + + '@storybook/addon-themes@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + + '@storybook/addon-viewport@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + memoizerific: 1.11.3 + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/addon-webpack5-compiler-swc@3.0.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3))': + dependencies: + '@swc/core': 1.11.24 + swc-loader: 0.2.6(@swc/core@1.11.24)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + transitivePeerDependencies: + - '@swc/helpers' + - webpack + + '@storybook/builder-webpack5@8.6.12(@swc/core@1.11.24)(esbuild@0.25.3)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': + dependencies: + '@storybook/core-webpack': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@types/semver': 7.7.0 + browser-assert: 1.2.1 + case-sensitive-paths-webpack-plugin: 2.4.0 + cjs-module-lexer: 1.4.3 + constants-browserify: 1.0.0 + css-loader: 6.11.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + es-module-lexer: 1.7.0 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + html-webpack-plugin: 5.6.3(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + magic-string: 0.30.17 + path-browserify: 1.0.1 + process: 0.11.10 + semver: 7.7.1 + storybook: 8.6.12(prettier@3.5.3) + style-loader: 3.3.4(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + terser-webpack-plugin: 5.3.14(@swc/core@1.11.24)(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + ts-dedent: 2.2.0 + url: 0.11.4 + util: 0.12.5 + util-deprecate: 1.0.2 + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + webpack-dev-middleware: 6.1.3(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + webpack-hot-middleware: 2.26.1 + webpack-virtual-modules: 0.6.2 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + + '@storybook/components@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/core-webpack@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + + '@storybook/core@8.6.12(prettier@3.5.3)(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + better-opn: 3.0.2 + browser-assert: 1.2.1 + esbuild: 0.25.3 + esbuild-register: 3.6.0(esbuild@0.25.3) + jsdoc-type-pratt-parser: 4.1.0 + process: 0.11.10 + recast: 0.23.11 + semver: 7.7.1 + util: 0.12.5 + ws: 8.18.1 + optionalDependencies: + prettier: 3.5.3 + transitivePeerDependencies: + - bufferutil + - storybook + - supports-color + - utf-8-validate + + '@storybook/csf@0.1.13': + dependencies: + type-fest: 2.19.0 + + '@storybook/global@5.0.0': {} + + '@storybook/instrumenter@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + '@vitest/utils': 2.1.9 + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/manager-api@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/node-logger@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/preset-react-webpack@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': + dependencies: + '@storybook/core-webpack': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/react': 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + '@types/semver': 7.7.0 + find-up: 5.0.0 + magic-string: 0.30.17 + react: 19.1.0 + react-docgen: 7.1.1 + react-dom: 19.1.0(react@19.1.0) + resolve: 1.22.10 + semver: 7.7.1 + storybook: 8.6.12(prettier@3.5.3) + tsconfig-paths: 4.2.0 + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@storybook/test' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@storybook/preview-api@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3))': + dependencies: + debug: 4.4.0 + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.2.0 + micromatch: 4.0.8 + react-docgen-typescript: 2.2.2(typescript@5.8.3) + tslib: 2.8.1 + typescript: 5.8.3 + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + transitivePeerDependencies: + - supports-color + + '@storybook/react-dom-shim@8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))': + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/react-webpack5@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': + dependencies: + '@storybook/builder-webpack5': 8.6.12(@swc/core@1.11.24)(esbuild@0.25.3)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + '@storybook/preset-react-webpack': 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + '@storybook/react': 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + storybook: 8.6.12(prettier@3.5.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@rspack/core' + - '@storybook/test' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@storybook/react@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': + dependencies: + '@storybook/components': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/preview-api': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/react-dom-shim': 8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3)) + '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + storybook: 8.6.12(prettier@3.5.3) + optionalDependencies: + '@storybook/test': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + typescript: 5.8.3 + + '@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@testing-library/dom': 10.4.0 + '@testing-library/jest-dom': 6.5.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/expect': 2.0.5 + '@vitest/spy': 2.0.5 + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/theming@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@swc/core-darwin-arm64@1.11.24': + optional: true + + '@swc/core-darwin-x64@1.11.24': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.11.24': + optional: true + + '@swc/core-linux-arm64-gnu@1.11.24': + optional: true + + '@swc/core-linux-arm64-musl@1.11.24': + optional: true + + '@swc/core-linux-x64-gnu@1.11.24': + optional: true + + '@swc/core-linux-x64-musl@1.11.24': + optional: true + + '@swc/core-win32-arm64-msvc@1.11.24': + optional: true + + '@swc/core-win32-ia32-msvc@1.11.24': + optional: true + + '@swc/core-win32-x64-msvc@1.11.24': + optional: true + + '@swc/core@1.11.24': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.21 + optionalDependencies: + '@swc/core-darwin-arm64': 1.11.24 + '@swc/core-darwin-x64': 1.11.24 + '@swc/core-linux-arm-gnueabihf': 1.11.24 + '@swc/core-linux-arm64-gnu': 1.11.24 + '@swc/core-linux-arm64-musl': 1.11.24 + '@swc/core-linux-x64-gnu': 1.11.24 + '@swc/core-linux-x64-musl': 1.11.24 + '@swc/core-win32-arm64-msvc': 1.11.24 + '@swc/core-win32-ia32-msvc': 1.11.24 + '@swc/core-win32-x64-msvc': 1.11.24 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@swc/types@0.1.21': + dependencies: + '@swc/counter': 0.1.3 + + '@tailwindcss/node@4.0.17': + dependencies: + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + tailwindcss: 4.0.17 + + '@tailwindcss/oxide-android-arm64@4.0.17': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.0.17': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.0.17': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.0.17': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.17': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.17': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.0.17': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.0.17': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.0.17': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.17': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.0.17': + optional: true + + '@tailwindcss/oxide@4.0.17': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.0.17 + '@tailwindcss/oxide-darwin-arm64': 4.0.17 + '@tailwindcss/oxide-darwin-x64': 4.0.17 + '@tailwindcss/oxide-freebsd-x64': 4.0.17 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.17 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.17 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.17 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.17 + '@tailwindcss/oxide-linux-x64-musl': 4.0.17 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.17 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.17 + + '@tailwindcss/postcss@4.0.17': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.0.17 + '@tailwindcss/oxide': 4.0.17 + lightningcss: 1.29.2 + postcss: 8.5.3 + tailwindcss: 4.0.17 + + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.27.1 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.5.0': + dependencies: + '@adobe/css-tools': 4.4.2 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@testing-library/dom': 10.4.0 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@ts-morph/common@0.23.0': + dependencies: + fast-glob: 3.3.3 + minimatch: 9.0.5 + mkdirp: 3.0.1 + path-browserify: 1.0.1 + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.1 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.1 + + '@types/concat-stream@2.0.3': + dependencies: + '@types/node': 22.14.0 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/doctrine@0.0.9': {} + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.7 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.7 + + '@types/estree@1.0.7': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/html-minifier-terser@6.1.0': {} + + '@types/is-empty@1.2.3': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/mdast@3.0.15': + dependencies: + '@types/unist': 2.0.11 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.13': {} + + '@types/ms@2.1.0': {} + + '@types/node@22.14.0': + dependencies: + undici-types: 6.21.0 + + '@types/parse-json@4.0.2': {} + + '@types/react@19.1.2': + dependencies: + csstype: 3.1.3 + + '@types/resolve@1.20.6': {} + + '@types/semver@7.7.0': {} + + '@types/shimmer@1.2.0': {} + + '@types/supports-color@8.1.3': {} + + '@types/trusted-types@2.0.7': {} + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/type-utils': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.1 + eslint: 9.23.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.31.1 + '@typescript-eslint/type-utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.31.1 + eslint: 9.23.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.1 + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.31.1 + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.31.1 + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.29.1': + dependencies: + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 + + '@typescript-eslint/scope-manager@8.31.1': + dependencies: + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/visitor-keys': 8.31.1 + + '@typescript-eslint/type-utils@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.29.1': {} + + '@typescript-eslint/types@8.31.1': {} + + '@typescript-eslint/typescript-estree@8.29.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/visitor-keys': 8.31.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.23.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.23.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.31.1 + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.29.1': + dependencies: + '@typescript-eslint/types': 8.29.1 + eslint-visitor-keys: 4.2.0 + + '@typescript-eslint/visitor-keys@8.31.1': + dependencies: + '@typescript-eslint/types': 8.31.1 + eslint-visitor-keys: 4.2.0 + + '@ungap/structured-clone@1.3.0': {} + + '@unrs/resolver-binding-darwin-arm64@1.7.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.7.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.7.2': + dependencies: + '@napi-rs/wasm-runtime': 0.2.9 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + optional: true + + '@vcarl/remark-headings@0.1.0': + dependencies: + mdast-util-to-string: 3.2.0 + unist-util-visit: 4.1.2 + + '@vercel/analytics@1.5.0(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + optionalDependencies: + next: 15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + + '@vercel/otel@1.10.4(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.200.0 + '@opentelemetry/instrumentation': 0.200.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.200.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) + + '@vercel/speed-insights@1.2.0(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + optionalDependencies: + next: 15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.2.0 + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.9': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.3 + tinyrainbow: 1.2.0 + + '@vitest/utils@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + loupe: 3.1.3 + tinyrainbow: 1.2.0 + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abbrev@2.0.0: {} + + acorn-import-attributes@1.9.5(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + agent-base@7.1.3: {} + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-html-community@0.0.8: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + assertion-error@2.0.1: {} + + ast-types-flow@0.0.8: {} + + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + + astral-regex@2.0.0: {} + + astring@1.9.0: {} + + async-function@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.10.3: {} + + axobject-query@4.1.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + base64-js@1.5.1: {} + + better-opn@3.0.2: + dependencies: + open: 8.4.2 + + binary-extensions@2.3.0: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-assert@1.2.1: {} + + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001716 + electron-to-chromium: 1.5.149 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + + buffer-from@1.1.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + cacheable@1.8.10: + dependencies: + hookified: 1.8.2 + keyv: 5.3.3 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + caniuse-lite@1.0.30001716: {} + + case-sensitive-paths-webpack-plugin@2.4.0: {} + + ccount@2.0.1: {} + + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + check-error@2.1.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chrome-trace-event@1.0.4: {} + + ci-info@4.2.0: {} + + cjs-module-lexer@1.4.3: {} + + classnames@2.5.1: {} + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + client-only@0.0.1: {} + + code-block-writer@13.0.3: {} + + collapse-white-space@2.1.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + + colord@2.9.3: {} + + colorette@2.0.20: {} + + comma-separated-tokens@2.0.3: {} + + commander@13.1.0: {} + + commander@2.20.3: {} + + commander@8.3.0: {} + + commondir@1.0.1: {} + + concat-map@0.0.1: {} + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + constants-browserify@1.0.0: {} + + convert-source-map@2.0.0: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@9.0.0(typescript@5.8.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.8.3 + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-functions-list@3.2.3: {} + + css-loader@6.11.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) + postcss-modules-scope: 3.2.1(postcss@8.5.3) + postcss-modules-values: 4.0.0(postcss@8.5.3) + postcss-value-parser: 4.2.0 + semver: 7.7.1 + optionalDependencies: + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + css.escape@1.5.1: {} + + cssesc@3.0.0: {} + + cssstyle@4.3.1: + dependencies: + '@asamuzakjp/css-color': 3.1.5 + rrweb-cssom: 0.8.0 + + csstype@3.1.3: {} + + damerau-levenshtein@1.0.8: {} + + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decimal.js@10.5.0: {} + + decode-named-character-reference@1.1.0: + dependencies: + character-entities: 2.0.2 + + dedent@0.7.0: {} + + dedent@1.5.3: {} + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + dequal@2.0.3: {} + + detect-libc@2.0.4: {} + + detect-node-es@1.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff@5.2.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + dompurify@3.2.5: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.149: {} + + emoji-regex-xs@1.0.0: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + endent@2.1.0: + dependencies: + dedent: 0.7.0 + fast-json-parse: 1.0.3 + objectorarray: 1.0.5 + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@2.2.0: {} + + entities@4.5.0: {} + + entities@6.0.0: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + err-code@2.0.3: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.14.1 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.2 + + esbuild-register@3.6.0(esbuild@0.25.3): + dependencies: + debug: 4.4.0 + esbuild: 0.25.3 + transitivePeerDependencies: + - supports-color + + esbuild@0.25.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.3 + '@esbuild/android-arm': 0.25.3 + '@esbuild/android-arm64': 0.25.3 + '@esbuild/android-x64': 0.25.3 + '@esbuild/darwin-arm64': 0.25.3 + '@esbuild/darwin-x64': 0.25.3 + '@esbuild/freebsd-arm64': 0.25.3 + '@esbuild/freebsd-x64': 0.25.3 + '@esbuild/linux-arm': 0.25.3 + '@esbuild/linux-arm64': 0.25.3 + '@esbuild/linux-ia32': 0.25.3 + '@esbuild/linux-loong64': 0.25.3 + '@esbuild/linux-mips64el': 0.25.3 + '@esbuild/linux-ppc64': 0.25.3 + '@esbuild/linux-riscv64': 0.25.3 + '@esbuild/linux-s390x': 0.25.3 + '@esbuild/linux-x64': 0.25.3 + '@esbuild/netbsd-arm64': 0.25.3 + '@esbuild/netbsd-x64': 0.25.3 + '@esbuild/openbsd-arm64': 0.25.3 + '@esbuild/openbsd-x64': 0.25.3 + '@esbuild/sunos-x64': 0.25.3 + '@esbuild/win32-arm64': 0.25.3 + '@esbuild/win32-ia32': 0.25.3 + '@esbuild/win32-x64': 0.25.3 + + escalade@3.2.0: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-next@15.2.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@next/eslint-plugin-next': 15.2.4 + '@rushstack/eslint-patch': 1.11.0 + '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.23.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.5(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.23.0(jiti@2.4.2)) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + get-tsconfig: 4.10.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.13 + unrs-resolver: 1.7.2 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@4.3.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + get-tsconfig: 4.10.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.13 + unrs-resolver: 1.7.2 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + transitivePeerDependencies: + - supports-color + + eslint-mdx@3.4.1(eslint@9.23.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint: 9.23.0(jiti@2.4.2) + espree: 10.3.0 + estree-util-visit: 2.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + synckit: 0.11.4 + tslib: 2.8.1 + unified: 11.0.5 + unified-engine: 11.2.2 + unist-util-visit: 5.0.0 + uvu: 0.5.6 + vfile: 6.0.3 + optionalDependencies: + remark-lint-file-extension: 3.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.23.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@pkgr/core': 0.2.4 + '@types/doctrine': 0.0.9 + '@typescript-eslint/utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.0 + doctrine: 3.0.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.10.0 + is-glob: 4.0.3 + minimatch: 10.0.1 + semver: 7.7.1 + stable-hash: 0.0.5 + tslib: 2.8.1 + unrs-resolver: 1.7.2 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.23.0(jiti@2.4.2)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.10.3 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.23.0(jiti@2.4.2) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-mdx@3.4.1(eslint@9.23.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + eslint-mdx: 3.4.1(eslint@9.23.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + synckit: 0.11.4 + tslib: 2.8.1 + unified: 11.0.5 + vfile: 6.0.3 + transitivePeerDependencies: + - bluebird + - remark-lint-file-extension + - supports-color + + eslint-plugin-react-hooks@5.2.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + + eslint-plugin-react@7.37.5(eslint@9.23.0(jiti@2.4.2)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.23.0(jiti@2.4.2) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-plugin-storybook@0.12.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@storybook/csf': 0.1.13 + '@typescript-eslint/utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.23.0(jiti@2.4.2) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.23.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.2 + '@eslint/config-helpers': 0.2.2 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.23.0 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.7 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@2.1.0: {} + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.7 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.4 + + estree-util-value-to-estree@1.3.0: + dependencies: + is-plain-obj: 3.0.0 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + + esutils@2.0.3: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-parse@1.0.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + feed@4.2.2: + dependencies: + xml-js: 1.6.11 + + file-entry-cache@10.0.8: + dependencies: + flat-cache: 6.1.8 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flat-cache@6.1.8: + dependencies: + cacheable: 1.8.10 + flatted: 3.3.3 + hookified: 1.8.2 + + flatted@3.3.3: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + '@babel/code-frame': 7.27.1 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.7.1 + tapable: 2.2.1 + typescript: 5.8.3 + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + + format@0.2.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-monkey@1.0.6: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@8.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@11.0.2: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.0 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-jsdom@26.0.0(jsdom@26.1.0): + dependencies: + jsdom: 26.1.0 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globjoin@0.1.4: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-heading-rank@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.7 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.16 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.7 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.16 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + he@1.2.0: {} + + highlight.js@11.11.1: {} + + hookified@1.8.2: {} + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + html-dom-parser@5.0.13: + dependencies: + domhandler: 5.0.3 + htmlparser2: 10.0.0 + + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + + html-entities@2.6.0: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.39.0 + + html-react-parser@5.2.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + domhandler: 5.0.3 + html-dom-parser: 5.0.13 + react: 19.1.0 + react-property: 2.0.2 + style-to-js: 1.1.16 + optionalDependencies: + '@types/react': 19.1.2 + + html-tags@3.3.1: {} + + html-void-elements@3.0.0: {} + + html-webpack-plugin@5.6.3(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + optionalDependencies: + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.0 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + human-signals@5.0.0: {} + + husky@9.1.7: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@6.0.2: {} + + ignore@7.0.4: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-in-the-middle@1.13.1: + dependencies: + acorn: 8.14.1 + acorn-import-attributes: 1.9.5(acorn@8.14.1) + cjs-module-lexer: 1.4.3 + module-details-from-path: 1.0.4 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.3: {} + + inline-style-parser@0.2.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + intl-messageformat@10.7.16: + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/icu-messageformat-parser': 2.11.2 + tslib: 2.8.1 + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: + optional: true + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-buffer@2.0.5: {} + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.1 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-decimal@2.0.1: {} + + is-docker@2.2.1: {} + + is-empty@1.2.0: {} + + is-extendable@0.1.1: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-map@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-plain-obj@3.0.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@5.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@3.0.0: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isexe@3.1.1: {} + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@4.1.0: + dependencies: + '@isaacs/cliui': 8.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.14.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@1.21.7: {} + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdoc-type-pratt-parser@4.1.0: {} + + jsdom@26.1.0: + dependencies: + cssstyle: 4.3.1 + data-urls: 5.0.0 + decimal.js: 10.5.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@3.0.2: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + keyv@5.3.3: + dependencies: + '@keyv/serialize': 1.0.3 + + kind-of@6.0.3: {} + + kleur@4.1.5: {} + + known-css-properties@0.35.0: {} + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-darwin-arm64@1.29.2: + optional: true + + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + + lightningcss-win32-x64-msvc@1.29.2: + optional: true + + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + lint-staged@15.5.0: + dependencies: + chalk: 5.4.1 + commander: 13.1.0 + debug: 4.4.0 + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.3.2 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.7.1 + transitivePeerDependencies: + - supports-color + + listr2@8.3.2: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + lit-element@4.2.0: + dependencies: + '@lit-labs/ssr-dom-shim': 1.3.0 + '@lit/reactive-element': 2.1.0 + lit-html: 3.3.0 + + lit-html@3.3.0: + dependencies: + '@types/trusted-types': 2.0.7 + + lit@3.3.0: + dependencies: + '@lit/reactive-element': 2.1.0 + lit-element: 4.2.0 + lit-html: 3.3.0 + + load-plugin@6.0.3: + dependencies: + '@npmcli/config': 8.3.4 + import-meta-resolve: 4.1.0 + transitivePeerDependencies: + - bluebird + + loader-runner@4.3.0: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash.truncate@4.4.2: {} + + lodash@4.17.21: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@3.1.3: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lru-cache@10.4.3: {} + + lru-cache@11.1.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + luxon@3.6.1: {} + + lz-string@1.5.0: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + map-or-similar@1.5.0: {} + + markdown-extensions@2.0.0: {} + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + markdown-table@3.0.4: {} + + marked-highlight@2.2.1(marked@13.0.3): + dependencies: + marked: 13.0.3 + + marked@13.0.3: {} + + math-intrinsics@1.1.0: {} + + mathml-tag-names@2.1.3: {} + + mdast-comment-marker@3.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-mdx-expression: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-directive@3.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-heading-style@3.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@3.2.0: + dependencies: + '@types/mdast': 3.0.15 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.12.2: {} + + mdurl@2.0.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + + meow@13.2.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.7 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.7 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.2 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.7 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.7 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.7 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.2 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + min-indent@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mkdirp@3.0.1: {} + + module-details-from-path@1.0.4: {} + + mri@1.2.0: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + napi-postinstall@0.2.3: {} + + natural-compare@1.4.0: {} + + negotiator@1.0.0: {} + + neo-async@2.6.2: {} + + next-intl@4.0.3(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + dependencies: + '@formatjs/intl-localematcher': 0.5.10 + negotiator: 1.0.0 + next: 15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + use-intl: 4.1.0(react@19.1.0) + optionalDependencies: + typescript: 5.8.3 + + next-themes@0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@next/env': 15.3.0 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001716 + postcss: 8.4.31 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + styled-jsx: 5.1.6(react@19.1.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.3.0 + '@next/swc-darwin-x64': 15.3.0 + '@next/swc-linux-arm64-gnu': 15.3.0 + '@next/swc-linux-arm64-musl': 15.3.0 + '@next/swc-linux-x64-gnu': 15.3.0 + '@next/swc-linux-x64-musl': 15.3.0 + '@next/swc-win32-arm64-msvc': 15.3.0 + '@next/swc-win32-x64-msvc': 15.3.0 + '@opentelemetry/api': 1.9.0 + sharp: 0.34.1 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-abort-controller@3.1.1: {} + + node-releases@2.0.19: {} + + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + npm-install-checks@6.3.0: + dependencies: + semver: 7.7.1 + + npm-normalize-package-bin@3.0.1: {} + + npm-package-arg@11.0.3: + dependencies: + hosted-git-info: 7.0.2 + proc-log: 4.2.0 + semver: 7.7.1 + validate-npm-package-name: 5.0.1 + + npm-pick-manifest@9.1.0: + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.3 + semver: 7.7.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nwsapi@2.2.20: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + objectorarray@1.0.5: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@2.3.0: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + + oniguruma-to-es@3.1.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 6.0.1 + regex-recursion: 6.0.2 + + oniguruma-to-es@4.3.3: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.1.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@7.1.1: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 3.0.2 + lines-and-columns: 2.0.4 + type-fest: 3.13.1 + + parse5@7.3.0: + dependencies: + entities: 6.0.0 + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + + path-type@4.0.0: {} + + pathval@2.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pluralize@8.0.0: {} + + polished@4.3.1: + dependencies: + '@babel/runtime': 7.27.1 + + possible-typed-array-names@1.1.0: {} + + postcss-bem-linter@4.0.1(postcss@8.5.3): + dependencies: + minimatch: 3.1.2 + postcss: 8.5.3 + postcss-resolve-nested-selector: 0.1.6 + + postcss-calc@10.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + cosmiconfig: 9.0.0(typescript@5.8.3) + jiti: 1.21.7 + postcss: 8.5.3 + semver: 7.7.1 + optionalDependencies: + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + transitivePeerDependencies: + - typescript + + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.7): + dependencies: + cosmiconfig: 9.0.0(typescript@5.8.3) + jiti: 1.21.7 + postcss: 8.5.3 + semver: 7.7.1 + optionalDependencies: + webpack: 5.99.7 + transitivePeerDependencies: + - typescript + + postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-modules-values@4.0.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sorting@8.0.2(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-plugin-tailwindcss@0.6.11(prettier@3.5.3): + dependencies: + prettier: 3.5.3 + + prettier@3.5.3: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + proc-log@4.2.0: {} + + process@0.11.10: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@7.0.0: {} + + punycode.js@2.3.1: {} + + punycode@1.4.1: {} + + punycode@2.3.1: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + quotation@2.0.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + react-docgen-typescript@2.2.2(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + react-docgen@7.1.1: + dependencies: + '@babel/core': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.6 + doctrine: 3.0.0 + resolve: 1.22.10 + strip-indent: 4.0.0 + transitivePeerDependencies: + - supports-color + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-property@2.0.2: {} + + react-remove-scroll-bar@2.3.8(@types/react@19.1.2)(react@19.1.0): + dependencies: + react: 19.1.0 + react-style-singleton: 2.2.3(@types/react@19.1.2)(react@19.1.0) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.2 + + react-remove-scroll@2.6.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + react: 19.1.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.2)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.2)(react@19.1.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.1.2)(react@19.1.0) + use-sidecar: 1.1.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + react-style-singleton@2.2.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + get-nonce: 1.0.1 + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.2 + + react@19.1.0: {} + + read-package-json-fast@3.0.2: + dependencies: + json-parse-even-better-errors: 3.0.2 + npm-normalize-package-bin: 3.0.1 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + reading-time@1.5.0: {} + + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.7 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.0(acorn@8.14.1): + dependencies: + acorn-jsx: 5.3.2(acorn@8.14.1) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - acorn + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.7 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.7 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regex-recursion@5.1.1: + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + rehype-autolink-headings@7.1.0: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.3.0 + hast-util-heading-rank: 3.0.0 + hast-util-is-element: 3.0.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.7 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + + rehype-slug@6.0.0: + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.1 + unist-util-visit: 5.0.0 + + relateurl@0.2.7: {} + + remark-frontmatter@5.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-lint-blockquote-indentation@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + + remark-lint-checkbox-character-style@5.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-checkbox-content-indent@5.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + + remark-lint-code-block-style@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-definition-spacing@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-visit-parents: 6.0.1 + + remark-lint-fenced-code-flag@4.2.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + quotation: 2.0.3 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + + remark-lint-fenced-code-marker@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-file-extension@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + quotation: 2.0.3 + unified-lint-rule: 3.0.1 + + remark-lint-final-definition@4.0.2: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-mdx: 3.0.0 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + remark-lint-final-newline@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + unified-lint-rule: 3.0.1 + vfile-location: 5.0.3 + + remark-lint-first-heading-level@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-mdx: 3.0.0 + unified-lint-rule: 3.0.1 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + + remark-lint-hard-break-spaces@4.1.1: + dependencies: + '@types/mdast': 4.0.4 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + + remark-lint-heading-style@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-heading-style: 3.0.0 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-list-item-bullet-indent@5.0.1: + dependencies: + '@types/mdast': 4.0.4 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + + remark-lint-list-item-indent@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + + remark-lint-maximum-line-length@4.1.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-mdx: 3.0.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + transitivePeerDependencies: + - supports-color + + remark-lint-no-blockquote-without-marker@6.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-directive: 3.1.0 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-location: 5.0.3 + transitivePeerDependencies: + - supports-color + + remark-lint-no-consecutive-blank-lines@5.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.0 + mdast-util-mdx: 3.0.0 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + + remark-lint-no-duplicate-definitions@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-no-file-name-articles@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + unified-lint-rule: 3.0.1 + + remark-lint-no-file-name-consecutive-dashes@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + unified-lint-rule: 3.0.1 + + remark-lint-no-file-name-outer-dashes@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + unified-lint-rule: 3.0.1 + + remark-lint-no-heading-content-indent@5.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + + remark-lint-no-heading-indent@5.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + + remark-lint-no-literal-urls@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-string: 4.0.0 + micromark-util-character: 2.1.1 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + + remark-lint-no-multiple-toplevel-headings@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-mdx: 3.0.0 + unified-lint-rule: 3.0.1 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + remark-lint-no-shell-dollars@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + collapse-white-space: 2.1.0 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-visit-parents: 6.0.1 + + remark-lint-no-shortcut-reference-image@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + unified-lint-rule: 3.0.1 + unist-util-visit-parents: 6.0.1 + + remark-lint-no-shortcut-reference-link@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + unified-lint-rule: 3.0.1 + unist-util-visit-parents: 6.0.1 + + remark-lint-no-table-indentation@5.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-location: 5.0.3 + + remark-lint-no-tabs@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + unified-lint-rule: 3.0.1 + vfile-location: 5.0.3 + + remark-lint-no-trailing-spaces@3.0.2: + dependencies: + unified-lint-rule: 3.0.1 + vfile-location: 5.0.3 + + remark-lint-no-undefined-references@5.0.2: + dependencies: + '@types/mdast': 4.0.4 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + micromark-util-normalize-identifier: 2.0.1 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-location: 5.0.3 + + remark-lint-no-unused-definitions@4.0.2: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + unified-lint-rule: 3.0.1 + unist-util-visit-parents: 6.0.1 + + remark-lint-ordered-list-marker-style@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + micromark-util-character: 2.1.1 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-prohibited-strings@4.0.0: + dependencies: + escape-string-regexp: 5.0.0 + unified-lint-rule: 2.1.2 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile-location: 5.0.3 + + remark-lint-rule-style@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-strong-marker@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-table-cell-padding@5.1.1: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + mdast-util-phrasing: 4.1.0 + pluralize: 8.0.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint-table-pipes@5.0.1: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + + remark-lint-unordered-list-marker-style@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-phrasing: 4.1.0 + unified-lint-rule: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile-message: 4.0.2 + + remark-lint@10.0.1: + dependencies: + '@types/mdast': 4.0.4 + remark-message-control: 8.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.1.0: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-message-control@8.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-comment-marker: 3.0.0 + unified-message-control: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-preset-lint-node@5.1.2: + dependencies: + js-yaml: 4.1.0 + remark-gfm: 4.0.1 + remark-lint-blockquote-indentation: 4.0.1 + remark-lint-checkbox-character-style: 5.0.1 + remark-lint-checkbox-content-indent: 5.0.1 + remark-lint-code-block-style: 4.0.1 + remark-lint-definition-spacing: 4.0.1 + remark-lint-fenced-code-flag: 4.2.0 + remark-lint-fenced-code-marker: 4.0.1 + remark-lint-file-extension: 3.0.1 + remark-lint-final-definition: 4.0.2 + remark-lint-first-heading-level: 4.0.1 + remark-lint-heading-style: 4.0.1 + remark-lint-maximum-line-length: 4.1.1 + remark-lint-no-consecutive-blank-lines: 5.0.1 + remark-lint-no-file-name-articles: 3.0.1 + remark-lint-no-file-name-consecutive-dashes: 3.0.1 + remark-lint-no-file-name-outer-dashes: 3.0.1 + remark-lint-no-heading-indent: 5.0.1 + remark-lint-no-multiple-toplevel-headings: 4.0.1 + remark-lint-no-shell-dollars: 4.0.1 + remark-lint-no-table-indentation: 5.0.1 + remark-lint-no-tabs: 4.0.1 + remark-lint-no-trailing-spaces: 3.0.2 + remark-lint-prohibited-strings: 4.0.0 + remark-lint-rule-style: 4.0.1 + remark-lint-strong-marker: 4.0.1 + remark-lint-table-cell-padding: 5.1.1 + remark-lint-table-pipes: 5.0.1 + remark-lint-unordered-list-marker-style: 4.0.1 + remark-preset-lint-recommended: 7.0.1 + semver: 7.7.1 + unified-lint-rule: 3.0.1 + unist-util-visit: 5.0.0 + transitivePeerDependencies: + - supports-color + + remark-preset-lint-recommended@7.0.1: + dependencies: + remark-lint: 10.0.1 + remark-lint-final-newline: 3.0.1 + remark-lint-hard-break-spaces: 4.1.1 + remark-lint-list-item-bullet-indent: 5.0.1 + remark-lint-list-item-indent: 4.0.1 + remark-lint-no-blockquote-without-marker: 6.0.1 + remark-lint-no-duplicate-definitions: 4.0.1 + remark-lint-no-heading-content-indent: 5.0.1 + remark-lint-no-literal-urls: 4.0.1 + remark-lint-no-shortcut-reference-image: 4.0.1 + remark-lint-no-shortcut-reference-link: 4.0.1 + remark-lint-no-undefined-references: 5.0.2 + remark-lint-no-unused-definitions: 4.0.2 + remark-lint-ordered-list-marker-style: 4.0.1 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-reading-time@2.0.1: + dependencies: + estree-util-is-identifier-name: 2.1.0 + estree-util-value-to-estree: 1.3.0 + reading-time: 1.5.0 + unist-util-visit: 3.1.0 + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + require-from-string@2.0.2: {} + + require-in-the-middle@7.5.2: + dependencies: + debug: 4.4.0 + module-details-from-path: 1.0.4 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + retry@0.12.0: {} + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rrweb-cssom@0.8.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safer-buffer@2.1.2: {} + + sax@1.4.1: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.26.0: {} + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.2: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + + semver@6.3.1: {} + + semver@7.7.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + sharp@0.34.1: + dependencies: + color: 4.2.3 + detect-libc: 2.0.4 + semver: 7.7.1 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.1 + '@img/sharp-darwin-x64': 0.34.1 + '@img/sharp-libvips-darwin-arm64': 1.1.0 + '@img/sharp-libvips-darwin-x64': 1.1.0 + '@img/sharp-libvips-linux-arm': 1.1.0 + '@img/sharp-libvips-linux-arm64': 1.1.0 + '@img/sharp-libvips-linux-ppc64': 1.1.0 + '@img/sharp-libvips-linux-s390x': 1.1.0 + '@img/sharp-libvips-linux-x64': 1.1.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + '@img/sharp-linux-arm': 0.34.1 + '@img/sharp-linux-arm64': 0.34.1 + '@img/sharp-linux-s390x': 0.34.1 + '@img/sharp-linux-x64': 0.34.1 + '@img/sharp-linuxmusl-arm64': 0.34.1 + '@img/sharp-linuxmusl-x64': 0.34.1 + '@img/sharp-wasm32': 0.34.1 + '@img/sharp-win32-ia32': 0.34.1 + '@img/sharp-win32-x64': 0.34.1 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@1.29.2: + dependencies: + '@shikijs/core': 1.29.2 + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/langs': 1.29.2 + '@shikijs/themes': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + shiki@3.1.0: + dependencies: + '@shikijs/core': 3.1.0 + '@shikijs/engine-javascript': 3.1.0 + '@shikijs/engine-oniguruma': 3.1.0 + '@shikijs/langs': 3.1.0 + '@shikijs/themes': 3.1.0 + '@shikijs/types': 3.1.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + shimmer@1.2.1: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + + slash@3.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + space-separated-tokens@2.0.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + sprintf-js@1.0.3: {} + + sse.js@2.6.0: {} + + stable-hash@0.0.5: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + storybook@8.6.12(prettier@3.5.3): + dependencies: + '@storybook/core': 8.6.12(prettier@3.5.3)(storybook@8.6.12(prettier@3.5.3)) + optionalDependencies: + prettier: 3.5.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + streamsearch@1.1.0: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@6.1.0: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.4.0 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom-string@1.0.0: {} + + strip-bom@3.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + style-loader@3.3.4(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + + style-object-to-css-string@1.1.3: {} + + style-to-js@1.1.16: + dependencies: + style-to-object: 1.0.8 + + style-to-object@1.0.8: + dependencies: + inline-style-parser: 0.2.4 + + styled-jsx@5.1.6(react@19.1.0): + dependencies: + client-only: 0.0.1 + react: 19.1.0 + + stylelint-config-recommended@15.0.0(stylelint@16.17.0(typescript@5.8.3)): + dependencies: + stylelint: 16.17.0(typescript@5.8.3) + + stylelint-config-standard@37.0.0(stylelint@16.17.0(typescript@5.8.3)): + dependencies: + stylelint: 16.17.0(typescript@5.8.3) + stylelint-config-recommended: 15.0.0(stylelint@16.17.0(typescript@5.8.3)) + + stylelint-order@6.0.4(stylelint@16.17.0(typescript@5.8.3)): + dependencies: + postcss: 8.5.3 + postcss-sorting: 8.0.2(postcss@8.5.3) + stylelint: 16.17.0(typescript@5.8.3) + + stylelint-selector-bem-pattern@4.0.1(stylelint@16.17.0(typescript@5.8.3)): + dependencies: + lodash: 4.17.21 + postcss: 8.5.3 + postcss-bem-linter: 4.0.1(postcss@8.5.3) + stylelint: 16.17.0(typescript@5.8.3) + + stylelint@16.17.0(typescript@5.8.3): + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@dual-bundle/import-meta-resolve': 4.1.0 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.8.3) + css-functions-list: 3.2.3 + css-tree: 3.1.0 + debug: 4.4.0 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 10.0.8 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 7.0.4 + imurmurhash: 0.1.4 + is-plain-object: 5.0.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.1.1 + postcss: 8.5.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 7.0.1(postcss@8.5.3) + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + supports-hyperlinks: 3.2.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-color@9.4.0: {} + + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + sval@0.6.7: + dependencies: + acorn: 8.14.1 + + svg-tags@1.0.0: {} + + swc-loader@0.2.6(@swc/core@1.11.24)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + '@swc/core': 1.11.24 + '@swc/counter': 0.1.3 + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + + symbol-tree@3.2.4: {} + + synckit@0.11.4: + dependencies: + '@pkgr/core': 0.2.4 + tslib: 2.8.1 + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwindcss@4.0.17: {} + + tapable@2.2.1: {} + + terser-webpack-plugin@5.3.14(@swc/core@1.11.24)(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.39.0 + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + optionalDependencies: + '@swc/core': 1.11.24 + esbuild: 0.25.3 + + terser-webpack-plugin@5.3.14(webpack@5.99.7): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.39.0 + webpack: 5.99.7 + optional: true + + terser@5.39.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + tiny-invariant@1.3.3: {} + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} + + tldts-core@6.1.86: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + ts-dedent@2.2.0: {} + + ts-morph@22.0.0: + dependencies: + '@ts-morph/common': 0.23.0 + code-block-writer: 13.0.3 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tsx@4.19.4: + dependencies: + esbuild: 0.25.3 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + + tunnel@0.0.6: {} + + turbo-darwin-64@2.4.4: + optional: true + + turbo-darwin-arm64@2.4.4: + optional: true + + turbo-linux-64@2.4.4: + optional: true + + turbo-linux-arm64@2.4.4: + optional: true + + turbo-windows-64@2.4.4: + optional: true + + turbo-windows-arm64@2.4.4: + optional: true + + turbo@2.4.4: + optionalDependencies: + turbo-darwin-64: 2.4.4 + turbo-darwin-arm64: 2.4.4 + turbo-linux-64: 2.4.4 + turbo-linux-arm64: 2.4.4 + turbo-windows-64: 2.4.4 + turbo-windows-arm64: 2.4.4 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@2.19.0: {} + + type-fest@3.13.1: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typedarray@0.0.6: {} + + typescript-eslint@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typescript@5.8.3: {} + + uc.micro@2.1.0: {} + + uglify-js@3.19.3: + optional: true + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.21.0: {} + + undici@5.29.0: + dependencies: + '@fastify/busboy': 2.1.1 + + unified-engine@11.2.2: + dependencies: + '@types/concat-stream': 2.0.3 + '@types/debug': 4.1.12 + '@types/is-empty': 1.2.3 + '@types/node': 22.14.0 + '@types/unist': 3.0.3 + concat-stream: 2.0.0 + debug: 4.4.0 + extend: 3.0.2 + glob: 10.4.5 + ignore: 6.0.2 + is-empty: 1.2.0 + is-plain-obj: 4.1.0 + load-plugin: 6.0.3 + parse-json: 7.1.1 + trough: 2.2.0 + unist-util-inspect: 8.1.0 + vfile: 6.0.3 + vfile-message: 4.0.2 + vfile-reporter: 8.1.1 + vfile-statistics: 3.0.0 + yaml: 2.7.1 + transitivePeerDependencies: + - bluebird + - supports-color + + unified-lint-rule@2.1.2: + dependencies: + '@types/unist': 2.0.11 + trough: 2.2.0 + unified: 10.1.2 + vfile: 5.3.7 + + unified-lint-rule@3.0.1: + dependencies: + '@types/unist': 3.0.3 + trough: 2.2.0 + unified: 11.0.5 + vfile: 6.0.3 + + unified-message-control@5.0.0: + dependencies: + '@types/unist': 3.0.3 + devlop: 1.1.0 + space-separated-tokens: 2.0.2 + unist-util-is: 6.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + vfile-message: 4.0.2 + + unified@10.1.2: + dependencies: + '@types/unist': 2.0.11 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-inspect@8.1.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.11 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.11 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@4.1.1: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@3.1.0: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + unist-util-visit-parents: 4.1.1 + + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@2.0.1: {} + + unrs-resolver@1.7.2: + dependencies: + napi-postinstall: 0.2.3 + optionalDependencies: + '@unrs/resolver-binding-darwin-arm64': 1.7.2 + '@unrs/resolver-binding-darwin-x64': 1.7.2 + '@unrs/resolver-binding-freebsd-x64': 1.7.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.7.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.7.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.7.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-x64-musl': 1.7.2 + '@unrs/resolver-binding-wasm32-wasi': 1.7.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.7.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.7.2 + + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.14.0 + + use-callback-ref@1.3.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.2 + + use-intl@4.1.0(react@19.1.0): + dependencies: + '@formatjs/fast-memoize': 2.2.7 + '@schummar/icu-type-parser': 1.21.5 + intl-messageformat: 10.7.16 + react: 19.1.0 + + use-sidecar@1.1.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + detect-node-es: 1.1.0 + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.2 + + user-agent-data-types@0.4.2: {} + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.0 + is-typed-array: 1.1.15 + which-typed-array: 1.1.19 + + utila@0.4.0: {} + + uvu@0.5.6: + dependencies: + dequal: 2.0.3 + diff: 5.2.0 + kleur: 4.1.5 + sade: 1.8.1 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@5.0.1: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-matter@5.0.1: + dependencies: + vfile: 6.0.3 + yaml: 2.7.1 + + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.11 + unist-util-stringify-position: 3.0.3 + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile-reporter@8.1.1: + dependencies: + '@types/supports-color': 8.1.3 + string-width: 6.1.0 + supports-color: 9.4.0 + unist-util-stringify-position: 4.0.0 + vfile: 6.0.3 + vfile-message: 4.0.2 + vfile-sort: 4.0.0 + vfile-statistics: 3.0.0 + + vfile-sort@4.0.0: + dependencies: + vfile: 6.0.3 + vfile-message: 4.0.2 + + vfile-statistics@3.0.0: + dependencies: + vfile: 6.0.3 + vfile-message: 4.0.2 + + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.11 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + walk-up-path@3.0.1: {} + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + webidl-conversions@7.0.0: {} + + webpack-dev-middleware@6.1.3(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.3.2 + optionalDependencies: + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + + webpack-hot-middleware@2.26.1: + dependencies: + ansi-html-community: 0.0.8 + html-entities: 2.6.0 + strip-ansi: 6.0.1 + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.2: {} + + webpack@5.99.7: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.1 + browserslist: 4.24.5 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.14(webpack@5.99.7) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + optional: true + + webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.1 + browserslist: 4.24.5 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.14(@swc/core@1.11.24)(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@4.0.0: + dependencies: + isexe: 3.1.1 + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + ws@8.18.1: {} + + xml-js@1.6.11: + dependencies: + sax: 1.4.1 + + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + + yallist@3.1.1: {} + + yaml@1.10.2: {} + + yaml@2.7.1: {} + + yocto-queue@0.1.0: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000000000..c47d8ad2e89ac --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,13 @@ +packages: + - packages/* + - apps/* + +# https://pnpm.io/settings#onlybuiltdependencies +# These are the dependencies that we trust to safely +# run installation scripts. +onlyBuiltDependencies: + - '@swc/core' + - '@vercel/speed-insights' + - esbuild + - sharp + - unrs-resolver From eeab1831f7d1ca60bc33e821e3e6836b3270597a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 11:24:29 -0400 Subject: [PATCH 0435/1385] meta: bump codecov/codecov-action from 5.4.0 to 5.4.2 (#7706) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.4.0 to 5.4.2. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/0565863a31f2c772f9f0395002a31e3f06189574...ad3126e916f78f00edff4ed0317cf185271ccc2d) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: 5.4.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lint-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index ac9a36a9ba156..b25c5c9c530ce 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -147,7 +147,7 @@ jobs: - name: Upload test coverage to Codecov if: ${{ !cancelled() && github.event_name != 'merge_group' }} - uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0 + uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2 with: files: ./apps/site/lcov.info,./packages/ui-components/lcov.info From f9660f56cb7e9f400d6c194e56de95f1c01c04a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 11:24:42 -0400 Subject: [PATCH 0436/1385] meta: bump rtCamp/action-slack-notify from 2.3.2 to 2.3.3 (#7702) Bumps [rtCamp/action-slack-notify](https://github.com/rtcamp/action-slack-notify) from 2.3.2 to 2.3.3. - [Release notes](https://github.com/rtcamp/action-slack-notify/releases) - [Commits](https://github.com/rtcamp/action-slack-notify/compare/c33737706dea87cd7784c687dadc9adf1be59990...e31e87e03dd19038e411e38ae27cbad084a90661) --- updated-dependencies: - dependency-name: rtCamp/action-slack-notify dependency-version: 2.3.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/notify-on-push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index 41b6cc9bf04c4..9fd8ad4647cfa 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Slack Notification - uses: rtCamp/action-slack-notify@c33737706dea87cd7784c687dadc9adf1be59990 # 2.3.2 + uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # 2.3.3 env: SLACK_COLOR: '#DE512A' SLACK_ICON: https://github.com/nodejs.png?size=48 From 8a187bfeb38f9276a91bb69d185182f88e89c49e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 13:25:45 -0400 Subject: [PATCH 0437/1385] meta: bump step-security/harden-runner from 2.11.0 to 2.12.0 (#7704) Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.11.0 to 2.12.0. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/4d991eb9b905ef189e4c376166672c3f2f230481...0634a2670c59f64b4a01f0f96f84700a4088b9f0) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-version: 2.12.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/chromatic.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/pull-request-label.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/translations-pr-lint.yml | 2 +- .github/workflows/translations-sync.yml | 4 ++-- .github/workflows/translations-upload.yml | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0bbe9efc1d438..d8d8c8bd9b6ac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 92c15e578b667..d0ad71b56a9d5 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -49,7 +49,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9a28ac5859238..0bb48cf5e5f80 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 9eb2a2db0ed8e..5ad419a49d408 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index 8f6a086b8eb51..943fb37a5e4ce 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -65,7 +65,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index b25c5c9c530ce..8da9a90741b24 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -43,7 +43,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -118,7 +118,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/pull-request-label.yml b/.github/workflows/pull-request-label.yml index b6d0b196e8643..7d69654f44544 100644 --- a/.github/workflows/pull-request-label.yml +++ b/.github/workflows/pull-request-label.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 883e4132febdf..19399f675f861 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/translations-pr-lint.yml b/.github/workflows/translations-pr-lint.yml index 53da73d640fbb..a3b45ef9e0035 100644 --- a/.github/workflows/translations-pr-lint.yml +++ b/.github/workflows/translations-pr-lint.yml @@ -42,7 +42,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index afa4ee70f1ca2..9ee88e0477b75 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -26,7 +26,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -67,7 +67,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml index a3e2cf532f222..be01799d72bb5 100644 --- a/.github/workflows/translations-upload.yml +++ b/.github/workflows/translations-upload.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit From 2412584c92d4ed0c5d8c46c29513c412ecc3fffa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 17:30:54 +0000 Subject: [PATCH 0438/1385] meta: bump actions/setup-node from 4.3.0 to 4.4.0 (#7703) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.3.0 to 4.4.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/cdca7365b2dadb8aad0a33bc7601856ffabcc48e...49933ea5288caeca8642d1e84afbd3f7d6820020) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 4.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/chromatic.yml | 2 +- .github/workflows/lint-and-tests.yml | 4 ++-- .github/workflows/translations-sync.yml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d8d8c8bd9b6ac..8bd878abac653 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -84,7 +84,7 @@ jobs: cache: true - name: Set up Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index d0ad71b56a9d5..3fc06df5dce6b 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -68,7 +68,7 @@ jobs: cache: true - name: Set up Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 8da9a90741b24..368edb118c53b 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -74,7 +74,7 @@ jobs: cache: true - name: Set up Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' @@ -131,7 +131,7 @@ jobs: cache: true - name: Set up Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 9ee88e0477b75..5e3cd42ce7b37 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -100,7 +100,7 @@ jobs: cache: true - name: Set up Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: # We want to ensure that the Node.js version running here respects our supported versions node-version-file: '.nvmrc' From 9115987ac352e9ebd170244b5830f0ff8fce8f50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 19:51:17 +0200 Subject: [PATCH 0439/1385] meta: bump @types/node from 22.14.0 to 22.15.3 (#7714) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.14.0 to 22.15.3. - [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-version: 22.15.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index f1b3968493060..0778a3a4876fe 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -39,7 +39,7 @@ "@shikijs/core": "^3.2.2", "@shikijs/engine-javascript": "^3.2.2", "@tailwindcss/postcss": "~4.0.17", - "@types/node": "22.14.0", + "@types/node": "22.15.3", "@types/react": "^19.1.0", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 54adc2a552c57..ae1abfd0318e4 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -59,7 +59,7 @@ "@storybook/react": "^8.6.12", "@storybook/react-webpack5": "^8.6.12", "@testing-library/user-event": "~14.6.1", - "@types/node": "22.14.0", + "@types/node": "22.15.3", "@types/react": "^19.1.0", "cross-env": "^7.0.3", "css-loader": "~6.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a475dc41eabd3..70ee56a48f2ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -103,8 +103,8 @@ importers: specifier: ~4.0.17 version: 4.0.17 '@types/node': - specifier: 22.14.0 - version: 22.14.0 + specifier: 22.15.3 + version: 22.15.3 '@types/react': specifier: ^19.1.0 version: 19.1.2 @@ -393,8 +393,8 @@ importers: specifier: ~14.6.1 version: 14.6.1(@testing-library/dom@10.4.0) '@types/node': - specifier: 22.14.0 - version: 22.14.0 + specifier: 22.15.3 + version: 22.15.3 '@types/react': specifier: ^19.1.0 version: 19.1.2 @@ -2386,8 +2386,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.14.0': - resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} + '@types/node@22.15.3': + resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -8425,7 +8425,7 @@ snapshots: '@types/concat-stream@2.0.3': dependencies: - '@types/node': 22.14.0 + '@types/node': 22.15.3 '@types/debug@4.1.12': dependencies: @@ -8473,7 +8473,7 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@22.14.0': + '@types/node@22.15.3': dependencies: undici-types: 6.21.0 @@ -10680,7 +10680,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.14.0 + '@types/node': 22.15.3 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13370,7 +13370,7 @@ snapshots: '@types/concat-stream': 2.0.3 '@types/debug': 4.1.12 '@types/is-empty': 1.2.3 - '@types/node': 22.14.0 + '@types/node': 22.15.3 '@types/unist': 3.0.3 concat-stream: 2.0.0 debug: 4.4.0 From b663493daab6f21e54ab3694a331f7b8d8ce4dce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 14:27:16 -0400 Subject: [PATCH 0440/1385] meta: bump github/codeql-action from 3.28.16 to 3.28.17 (#7711) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.16 to 3.28.17. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/28deaeda66b76a05916b6923827895f2b14ab387...60168efe1c415ce0f5521ea06d5c2062adbeed1b) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.17 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0bb48cf5e5f80..5b28675bbbf7a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 + uses: github/codeql-action/init@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 + uses: github/codeql-action/autobuild@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 + uses: github/codeql-action/analyze@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 19399f675f861..a14ccce3a1c5a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 + uses: github/codeql-action/upload-sarif@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 with: sarif_file: results.sarif From 581c972be707852656222edfb097155771da0af0 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 3 May 2025 19:47:29 -0400 Subject: [PATCH 0441/1385] chore(const): add IS_NOT_VERCEL_RUNTIME_ENV (#7721) * chore(const): add IS_NOT_VERCEL_RUNTIME_ENV * finally a good copilot suggestion Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller <me@aviv.sh> * pull out `!IS_DEV_ENV` Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- apps/site/next-data/blogData.ts | 8 +------- apps/site/next-data/downloadSnippets.ts | 8 +------- apps/site/next-data/releaseData.ts | 8 +------- apps/site/next.constants.mjs | 12 ++++++++++++ 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/apps/site/next-data/blogData.ts b/apps/site/next-data/blogData.ts index 32e2b71494bc3..a5d1f8e9d704b 100644 --- a/apps/site/next-data/blogData.ts +++ b/apps/site/next-data/blogData.ts @@ -1,9 +1,7 @@ import { ENABLE_STATIC_EXPORT, - IS_DEV_ENV, NEXT_DATA_URL, - VERCEL_ENV, - VERCEL_REGION, + IS_NOT_VERCEL_RUNTIME_ENV, } from '@/next.constants.mjs'; import type { BlogCategory, BlogPostsRSC } from '@/types'; @@ -11,10 +9,6 @@ const getBlogData = ( cat: BlogCategory, page?: number ): Promise<BlogPostsRSC> => { - const IS_NOT_VERCEL_RUNTIME_ENV = - (!IS_DEV_ENV && VERCEL_ENV && !VERCEL_REGION) || - (!IS_DEV_ENV && !VERCEL_ENV); - // When we're using Static Exports the Next.js Server is not running (during build-time) // hence the self-ingestion APIs will not be available. In this case we want to load // the data directly within the current thread, which will anyways be loaded only once diff --git a/apps/site/next-data/downloadSnippets.ts b/apps/site/next-data/downloadSnippets.ts index 6fd143852204a..d371d07388c9e 100644 --- a/apps/site/next-data/downloadSnippets.ts +++ b/apps/site/next-data/downloadSnippets.ts @@ -1,9 +1,7 @@ import { ENABLE_STATIC_EXPORT, - IS_DEV_ENV, NEXT_DATA_URL, - VERCEL_ENV, - VERCEL_REGION, + IS_NOT_VERCEL_RUNTIME_ENV, } from '@/next.constants.mjs'; import { availableLocaleCodes } from '@/next.locales.mjs'; import type { DownloadSnippet } from '@/types'; @@ -17,10 +15,6 @@ export default async function getDownloadSnippets( return []; } - const IS_NOT_VERCEL_RUNTIME_ENV = - (!IS_DEV_ENV && VERCEL_ENV && !VERCEL_REGION) || - (!IS_DEV_ENV && !VERCEL_ENV); - // When we're using Static Exports the Next.js Server is not running (during build-time) // hence the self-ingestion APIs will not be available. In this case we want to load // the data directly within the current thread, which will anyways be loaded only once diff --git a/apps/site/next-data/releaseData.ts b/apps/site/next-data/releaseData.ts index e04c4c9373d15..deafe804129a0 100644 --- a/apps/site/next-data/releaseData.ts +++ b/apps/site/next-data/releaseData.ts @@ -1,17 +1,11 @@ import { ENABLE_STATIC_EXPORT, - IS_DEV_ENV, NEXT_DATA_URL, - VERCEL_ENV, - VERCEL_REGION, + IS_NOT_VERCEL_RUNTIME_ENV, } from '@/next.constants.mjs'; import type { NodeRelease } from '@/types'; const getReleaseData = (): Promise<Array<NodeRelease>> => { - const IS_NOT_VERCEL_RUNTIME_ENV = - (!IS_DEV_ENV && VERCEL_ENV && !VERCEL_REGION) || - (!IS_DEV_ENV && !VERCEL_ENV); - // When we're using Static Exports the Next.js Server is not running (during build-time) // hence the self-ingestion APIs will not be available. In this case we want to load // the data directly within the current thread, which will anyways be loaded only once diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index 52439c1454bee..309093b7b5dcd 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -23,6 +23,18 @@ export const VERCEL_ENV = process.env.VERCEL_ENV || undefined; */ export const VERCEL_REGION = process.env.VERCEL_REGION || undefined; +/** + * This constant determines if the current environment is NOT a Vercel runtime environment. + * + * The logic is as follows: + * - If we are NOT in a development environment (`!IS_DEV_ENV`) AND: + * - Vercel environment variable (`VERCEL_ENV`) is defined but the Vercel region (`VERCEL_REGION`) is NOT defined, OR + * - Vercel environment variable (`VERCEL_ENV`) is NOT defined at all. + * This helps identify cases where the application is running outside of Vercel's runtime environment. + */ +export const IS_NOT_VERCEL_RUNTIME_ENV = + !IS_DEV_ENV && ((VERCEL_ENV && !VERCEL_REGION) || !VERCEL_ENV); + /** * This is used for telling Next.js to do a Static Export Build of the Website * From 54bcc86351c716aeef2ca129a8196084eca4e00c Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Sun, 4 May 2025 01:54:18 +0200 Subject: [PATCH 0442/1385] chore(next): remove `vercel.json` and extra log, update fonts (#7718) * chore: local fonts and removed some weird files * chore: use from google fonts --- apps/site/next-data/generators/releaseData.mjs | 2 -- apps/site/next.fonts.ts | 14 ++++++-------- .../public/static/fonts/ibm-plex-mono.woff2 | Bin 0 -> 14812 bytes apps/site/public/static/fonts/open-sans.woff2 | Bin 0 -> 18668 bytes apps/site/vercel.json | 4 ---- 5 files changed, 6 insertions(+), 14 deletions(-) create mode 100644 apps/site/public/static/fonts/ibm-plex-mono.woff2 create mode 100644 apps/site/public/static/fonts/open-sans.woff2 delete mode 100644 apps/site/vercel.json diff --git a/apps/site/next-data/generators/releaseData.mjs b/apps/site/next-data/generators/releaseData.mjs index 3db21e4166cf1..319f5608815f9 100644 --- a/apps/site/next-data/generators/releaseData.mjs +++ b/apps/site/next-data/generators/releaseData.mjs @@ -39,8 +39,6 @@ const generateReleaseData = async () => { absolute: false, }); - console.log('Release Announcement:', process.cwd(), releaseAnnouncements); - const nodevuOutput = await nodevu({ fetch: fetch }); const majors = Object.entries(nodevuOutput).filter( diff --git a/apps/site/next.fonts.ts b/apps/site/next.fonts.ts index eb664bb76e978..d34c74fc825b1 100644 --- a/apps/site/next.fonts.ts +++ b/apps/site/next.fonts.ts @@ -1,21 +1,19 @@ -import { Open_Sans, IBM_Plex_Mono } from 'next/font/google'; +import localFont from 'next/font/local'; // This configures the Next.js Font for Open Sans // We then export a variable and class name to be used // within Tailwind (tailwind.config.ts) and Storybook (preview.js) -export const OPEN_SANS = Open_Sans({ - weight: ['300', '400', '600', '700'], +export const OPEN_SANS = localFont({ + src: './public/static/fonts/open-sans.woff2', display: 'fallback', - subsets: ['latin'], variable: '--font-open-sans', }); // This configures the Next.js Font for IBM Plex Mono // We then export a variable and class name to be used // within Tailwind (tailwind.config.ts) and Storybook (preview.js) -export const IBM_PLEX_MONO = IBM_Plex_Mono({ - weight: ['400', '600'], - subsets: ['latin'], - fallback: ['ui-monospace'], +export const IBM_PLEX_MONO = localFont({ + src: './public/static/fonts/ibm-plex-mono.woff2', + display: 'fallback', variable: '--font-ibm-plex-mono', }); diff --git a/apps/site/public/static/fonts/ibm-plex-mono.woff2 b/apps/site/public/static/fonts/ibm-plex-mono.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a6c77d653d2e5a0692433d058a8dd2238b94aaec GIT binary patch literal 14812 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 CHH9_+ literal 0 HcmV?d00001 diff --git a/apps/site/public/static/fonts/open-sans.woff2 b/apps/site/public/static/fonts/open-sans.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..eaae94217be29ecce9daf1a7f7b35b0ba099a1a9 GIT binary patch literal 18668 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 PU3zbBiqFQyt^oi5TvQ8C literal 0 HcmV?d00001 diff --git a/apps/site/vercel.json b/apps/site/vercel.json deleted file mode 100644 index 7265c09365a6e..0000000000000 --- a/apps/site/vercel.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "buildCommand": "turbo build", - "installCommand": "pnpm install --prod --frozen-lockfile" -} From 9410369442face47394f97bd8e7bb459e1c255f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 11:52:31 +0200 Subject: [PATCH 0443/1385] meta: bump @orama/react-components from 0.6.4 to 0.7.0 in the orama group (#7695) meta: bump @orama/react-components in the orama group Bumps the orama group with 1 update: @orama/react-components. Updates `@orama/react-components` from 0.6.4 to 0.7.0 --- updated-dependencies: - dependency-name: "@orama/react-components" dependency-version: 0.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: orama ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- pnpm-lock.yaml | 51 ++++++++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 0778a3a4876fe..3924fe07a32bb 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -30,7 +30,7 @@ "@opentelemetry/instrumentation": "~0.200.0", "@opentelemetry/resources": "~1.30.1", "@opentelemetry/sdk-logs": "~0.200.0", - "@orama/react-components": "^0.6.4", + "@orama/react-components": "^0.7.0", "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 70ee56a48f2ed..483b0044d1d39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,8 +76,8 @@ importers: specifier: ~0.200.0 version: 0.200.0(@opentelemetry/api@1.9.0) '@orama/react-components': - specifier: ^0.6.4 - version: 0.6.4(@orama/core@0.0.10)(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^0.7.0 + version: 0.7.0(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@oramacloud/client': specifier: ^2.1.4 version: 2.1.4 @@ -1181,8 +1181,8 @@ packages: resolution: {integrity: sha512-s0OpmpQFSfMrmedAn9Lhg4KWJELHCU6uU9dtIJ28N8UGhf9Y55im5X8fEzwhwDwiSqN+ZPSNrDJF7ivf/AuRPQ==} engines: {node: '>=14'} - '@orama/core@0.0.10': - resolution: {integrity: sha512-rZ4AHeHoFTxOXMhM0An2coO3OfR+FpL0ejXc1PPrNsGB4p6VNlky7FAGeuqOvS5gUYB5ywJsmDzCxeflPtgk4w==} + '@orama/core@0.1.5': + resolution: {integrity: sha512-BbRwGSR/rrlsF09sQ931Ee3IH5re3El23VplfmgZUKjiEqd0fjPdSbpybzEMybWDNp/0/UCG3OUs0HIiiFTWEg==} '@orama/cuid2@2.2.3': resolution: {integrity: sha512-Lcak3chblMejdlSHgYU2lS2cdOhDpU6vkfIJH4m+YKvqQyLqs1bB8+w6NT1MG5bO12NUK2GFc34Mn2xshMIQ1g==} @@ -1194,8 +1194,8 @@ packages: resolution: {integrity: sha512-qtSrqCqRU93SjEBedz987tvWao1YQSELjBhGkHYGVP7Dg0lBWP6d+uZEIt5gxTAYio/YWWlhivmRABvRfPLmnQ==} engines: {node: '>= 16.0.0'} - '@orama/react-components@0.6.4': - resolution: {integrity: sha512-NY0bN/9FAnqp/wgHUnYI0GdlosSDNLZzxeRPzSfsVJboPXnl2oBdFttjB0eecgDecD599AvJCmDsz167tSfNsg==} + '@orama/react-components@0.7.0': + resolution: {integrity: sha512-YAUkFwqKqYdL2Lh0VhQM+bQOx3vfZwxUurOX9+fS85/k+KIGPG18l5iDjWMAsA4WC96SEvV1xfSA67XMXEgwrA==} peerDependencies: react: '>=17.0.0 <20.0.0' react-dom: '>=17.0.0 <20.0.0' @@ -1207,8 +1207,8 @@ packages: '@orama/orama': 3.1.6 '@oramacloud/client': ^2.1.1 - '@orama/wc-components@0.6.4': - resolution: {integrity: sha512-FgzIYVVYQV4OPzWwjME2JHNkwh3Sz0vBnUKcrGWHFs4kcGoltl0Ym/dyzArCNZiGQ56NE5E+0xo5ZFbaA8FxBA==} + '@orama/wc-components@0.7.0': + resolution: {integrity: sha512-PuDxF4evv8al91lFLVDHC9i+ow4m4+p69WGEzCa/UhV5c7sifV4Bd4d7A0yATuyEJTuaQUtEtn4kM3EEfK994g==} '@oramacloud/client@2.1.4': resolution: {integrity: sha512-uNPFs4wq/iOPbggCwTkVNbIr64Vfd7ZS/h+cricXVnzXWocjDTfJ3wLL4lr0qiSu41g8z+eCAGBqJ30RO2O4AA==} @@ -6526,6 +6526,14 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.3: + resolution: {integrity: sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -7233,10 +7241,12 @@ snapshots: '@opentelemetry/semantic-conventions@1.32.0': {} - '@orama/core@0.0.10': + '@orama/core@0.1.5': dependencies: '@orama/cuid2': 2.2.3 dedent: 1.5.3 + zod: 3.24.3 + zod-to-json-schema: 3.24.5(zod@3.24.3) transitivePeerDependencies: - babel-plugin-macros @@ -7248,28 +7258,29 @@ snapshots: '@orama/orama@3.1.6': {} - '@orama/react-components@0.6.4(@orama/core@0.0.10)(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@orama/react-components@0.7.0(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@orama/wc-components': 0.6.4(@orama/core@0.0.10) + '@orama/wc-components': 0.7.0 '@stencil/react-output-target': 0.8.2(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: - - '@orama/core' - '@stencil/core' - '@types/react' + - babel-plugin-macros - '@orama/switch@3.1.6(@orama/core@0.0.10)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4)': + '@orama/switch@3.1.6(@orama/core@0.1.5)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4)': dependencies: - '@orama/core': 0.0.10 + '@orama/core': 0.1.5 '@orama/orama': 3.1.6 '@oramacloud/client': 2.1.4 - '@orama/wc-components@0.6.4(@orama/core@0.0.10)': + '@orama/wc-components@0.7.0': dependencies: + '@orama/core': 0.1.5 '@orama/highlight': 0.1.9 '@orama/orama': 3.1.6 - '@orama/switch': 3.1.6(@orama/core@0.0.10)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4) + '@orama/switch': 3.1.6(@orama/core@0.1.5)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4) '@oramacloud/client': 2.1.4 '@phosphor-icons/webcomponents': 2.1.5 '@stencil/core': 4.27.0 @@ -7282,7 +7293,7 @@ snapshots: shiki: 1.29.2 sse.js: 2.6.0 transitivePeerDependencies: - - '@orama/core' + - babel-plugin-macros '@oramacloud/client@2.1.4': dependencies: @@ -13847,4 +13858,10 @@ snapshots: yocto-queue@0.1.0: {} + zod-to-json-schema@3.24.5(zod@3.24.3): + dependencies: + zod: 3.24.3 + + zod@3.24.3: {} + zwitch@2.0.4: {} From 0e5e4ec68aeaf5f6bd5f234185cfc5e58cac189e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 11:54:07 +0200 Subject: [PATCH 0444/1385] meta: bump the lint group across 1 directory with 8 updates (#7717) Bumps the lint group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.23.0` | `9.26.0` | | [eslint](https://github.com/eslint/eslint) | `9.23.0` | `9.26.0` | | [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) | `4.10.6` | `4.11.0` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.29.1` | `8.31.1` | | [stylelint](https://github.com/stylelint/stylelint) | `16.17.0` | `16.19.1` | | [stylelint-config-standard](https://github.com/stylelint/stylelint-config-standard) | `37.0.0` | `38.0.0` | | [stylelint-order](https://github.com/hudochenkov/stylelint-order) | `6.0.4` | `7.0.0` | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `15.2.4` | `15.3.1` | Updates `@eslint/js` from 9.23.0 to 9.26.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.26.0/packages/js) Updates `eslint` from 9.23.0 to 9.26.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.23.0...v9.26.0) Updates `eslint-plugin-import-x` from 4.10.6 to 4.11.0 - [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.10.6...v4.11.0) Updates `typescript-eslint` from 8.29.1 to 8.31.1 - [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.31.1/packages/typescript-eslint) Updates `stylelint` from 16.17.0 to 16.19.1 - [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.17.0...16.19.1) Updates `stylelint-config-standard` from 37.0.0 to 38.0.0 - [Release notes](https://github.com/stylelint/stylelint-config-standard/releases) - [Changelog](https://github.com/stylelint/stylelint-config-standard/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint-config-standard/compare/37.0.0...38.0.0) Updates `stylelint-order` from 6.0.4 to 7.0.0 - [Release notes](https://github.com/hudochenkov/stylelint-order/releases) - [Changelog](https://github.com/hudochenkov/stylelint-order/blob/master/CHANGELOG.md) - [Commits](https://github.com/hudochenkov/stylelint-order/compare/6.0.4...7.0.0) Updates `eslint-config-next` from 15.2.4 to 15.3.1 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v15.3.1/packages/eslint-config-next) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-version: 9.26.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint dependency-version: 9.26.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint-plugin-import-x dependency-version: 4.11.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: typescript-eslint dependency-version: 8.31.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: stylelint dependency-version: 16.19.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: stylelint-config-standard dependency-version: 38.0.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: lint - dependency-name: stylelint-order dependency-version: 7.0.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: lint - dependency-name: eslint-config-next dependency-version: 15.3.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 10 +- package.json | 6 +- packages/i18n/package.json | 2 +- packages/ui-components/package.json | 8 +- pnpm-lock.yaml | 833 ++++++++++++++++++---------- 5 files changed, 562 insertions(+), 297 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 3924fe07a32bb..d8a09e34d2a44 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -79,7 +79,7 @@ "@next/eslint-plugin-next": "15.2.4", "@testing-library/user-event": "~14.6.1", "@types/semver": "~7.7.0", - "eslint-config-next": "15.2.4", + "eslint-config-next": "15.3.1", "eslint-import-resolver-typescript": "~4.3.1", "eslint-plugin-mdx": "~3.4.0", "eslint-plugin-react": "~7.37.4", @@ -99,13 +99,13 @@ "remark-lint-unordered-list-marker-style": "^4.0.1", "remark-parse": "11.0.0", "remark-preset-lint-node": "5.1.2", - "stylelint": "16.17.0", - "stylelint-config-standard": "37.0.0", - "stylelint-order": "6.0.4", + "stylelint": "16.19.1", + "stylelint-config-standard": "38.0.0", + "stylelint-order": "7.0.0", "stylelint-selector-bem-pattern": "4.0.1", "tsx": "^4.19.3", "typescript": "~5.8.2", - "typescript-eslint": "~8.29.0", + "typescript-eslint": "~8.31.1", "unified": "^11.0.5", "user-agent-data-types": "0.4.2" } diff --git a/package.json b/package.json index aa80ab4bebd22..db8f22dcc0b77 100644 --- a/package.json +++ b/package.json @@ -37,12 +37,12 @@ "turbo": "2.4.4" }, "devDependencies": { - "@eslint/js": "~9.23.0", + "@eslint/js": "~9.26.0", "@reporters/github": "^1.7.2", "@testing-library/react": "~16.3.0", "cross-env": "^7.0.3", - "eslint": "~9.23.0", - "eslint-plugin-import-x": "~4.10.0", + "eslint": "~9.26.0", + "eslint-plugin-import-x": "~4.11.0", "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.11" }, diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 76dc8312d83df..308ca4d39ed8d 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -25,6 +25,6 @@ "devDependencies": { "eslint-import-resolver-typescript": "~4.3.1", "typescript": "~5.8.2", - "typescript-eslint": "~8.29.0" + "typescript-eslint": "~8.31.1" } } diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index ae1abfd0318e4..7bd75f2ccd145 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -70,13 +70,13 @@ "react": "^19.1.0", "storybook": "^8.6.11", "style-loader": "~3.3.4", - "stylelint": "^16.17.0", - "stylelint-config-standard": "^37.0.0", - "stylelint-order": "6.0.4", + "stylelint": "^16.19.1", + "stylelint-config-standard": "^38.0.0", + "stylelint-order": "7.0.0", "stylelint-selector-bem-pattern": "4.0.1", "tsx": "^4.19.3", "typescript": "~5.8.2", - "typescript-eslint": "~8.29.0" + "typescript-eslint": "~8.31.1" }, "engines": { "node": ">=20" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 483b0044d1d39..055e2e078c4dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,8 +22,8 @@ importers: version: 2.4.4 devDependencies: '@eslint/js': - specifier: ~9.23.0 - version: 9.23.0 + specifier: ~9.26.0 + version: 9.26.0 '@reporters/github': specifier: ^1.7.2 version: 1.7.2 @@ -34,11 +34,11 @@ importers: specifier: ^7.0.3 version: 7.0.3 eslint: - specifier: ~9.23.0 - version: 9.23.0(jiti@2.4.2) + specifier: ~9.26.0 + version: 9.26.0(jiti@2.4.2) eslint-plugin-import-x: - specifier: ~4.10.0 - version: 4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~4.11.0 + version: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) prettier: specifier: 3.5.3 version: 3.5.3 @@ -204,7 +204,7 @@ importers: devDependencies: '@eslint/compat': specifier: ~1.2.8 - version: 1.2.9(eslint@9.23.0(jiti@2.4.2)) + version: 1.2.9(eslint@9.26.0(jiti@2.4.2)) '@eslint/eslintrc': specifier: ~3.3.1 version: 3.3.1 @@ -218,20 +218,20 @@ importers: specifier: ~7.7.0 version: 7.7.0 eslint-config-next: - specifier: 15.2.4 - version: 15.2.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + specifier: 15.3.1 + version: 15.3.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) eslint-import-resolver-typescript: specifier: ~4.3.1 - version: 4.3.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) + version: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-mdx: specifier: ~3.4.0 - version: 3.4.1(eslint@9.23.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) + version: 3.4.1(eslint@9.26.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) eslint-plugin-react: specifier: ~7.37.4 - version: 7.37.5(eslint@9.23.0(jiti@2.4.2)) + version: 7.37.5(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: 5.2.0 - version: 5.2.0(eslint@9.23.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.26.0(jiti@2.4.2)) global-jsdom: specifier: ^26.0.0 version: 26.0.0(jsdom@26.1.0) @@ -278,17 +278,17 @@ importers: specifier: 5.1.2 version: 5.1.2 stylelint: - specifier: 16.17.0 - version: 16.17.0(typescript@5.8.3) + specifier: 16.19.1 + version: 16.19.1(typescript@5.8.3) stylelint-config-standard: - specifier: 37.0.0 - version: 37.0.0(stylelint@16.17.0(typescript@5.8.3)) + specifier: 38.0.0 + version: 38.0.0(stylelint@16.19.1(typescript@5.8.3)) stylelint-order: - specifier: 6.0.4 - version: 6.0.4(stylelint@16.17.0(typescript@5.8.3)) + specifier: 7.0.0 + version: 7.0.0(stylelint@16.19.1(typescript@5.8.3)) stylelint-selector-bem-pattern: specifier: 4.0.1 - version: 4.0.1(stylelint@16.17.0(typescript@5.8.3)) + version: 4.0.1(stylelint@16.19.1(typescript@5.8.3)) tsx: specifier: ^4.19.3 version: 4.19.4 @@ -296,8 +296,8 @@ importers: specifier: ~5.8.2 version: 5.8.3 typescript-eslint: - specifier: ~8.29.0 - version: 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~8.31.1 + version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) unified: specifier: ^11.0.5 version: 11.0.5 @@ -309,13 +309,13 @@ importers: devDependencies: eslint-import-resolver-typescript: specifier: ~4.3.1 - version: 4.3.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) + version: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) typescript: specifier: ~5.8.2 version: 5.8.3 typescript-eslint: - specifier: ~8.29.0 - version: 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~8.31.1 + version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) packages/ui-components: dependencies: @@ -406,10 +406,10 @@ importers: version: 6.11.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) eslint-plugin-react: specifier: ~7.37.4 - version: 7.37.5(eslint@9.23.0(jiti@2.4.2)) + version: 7.37.5(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-storybook: specifier: ~0.12.0 - version: 0.12.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + version: 0.12.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) global-jsdom: specifier: ^26.0.0 version: 26.0.0(jsdom@26.1.0) @@ -426,17 +426,17 @@ importers: specifier: ~3.3.4 version: 3.3.4(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) stylelint: - specifier: ^16.17.0 - version: 16.17.0(typescript@5.8.3) + specifier: ^16.19.1 + version: 16.19.1(typescript@5.8.3) stylelint-config-standard: - specifier: ^37.0.0 - version: 37.0.0(stylelint@16.17.0(typescript@5.8.3)) + specifier: ^38.0.0 + version: 38.0.0(stylelint@16.19.1(typescript@5.8.3)) stylelint-order: - specifier: 6.0.4 - version: 6.0.4(stylelint@16.17.0(typescript@5.8.3)) + specifier: 7.0.0 + version: 7.0.0(stylelint@16.19.1(typescript@5.8.3)) stylelint-selector-bem-pattern: specifier: 4.0.1 - version: 4.0.1(stylelint@16.17.0(typescript@5.8.3)) + version: 4.0.1(stylelint@16.19.1(typescript@5.8.3)) tsx: specifier: ^4.19.3 version: 4.19.4 @@ -444,8 +444,8 @@ importers: specifier: ~5.8.2 version: 5.8.3 typescript-eslint: - specifier: ~8.29.0 - version: 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~8.31.1 + version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) packages: @@ -764,18 +764,14 @@ packages: eslint: optional: true - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/config-helpers@0.2.2': resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.12.0': - resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.13.0': resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -784,8 +780,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.23.0': - resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} + '@eslint/js@9.26.0': + resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -1010,6 +1006,10 @@ packages: '@mdx-js/mdx@3.1.0': resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} + '@modelcontextprotocol/sdk@1.11.0': + resolution: {integrity: sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==} + engines: {node: '>=18'} + '@napi-rs/wasm-runtime@0.2.9': resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} @@ -1019,6 +1019,9 @@ packages: '@next/eslint-plugin-next@15.2.4': resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==} + '@next/eslint-plugin-next@15.3.1': + resolution: {integrity: sha512-oEs4dsfM6iyER3jTzMm4kDSbrQJq8wZw5fmT6fg2V3SMo+kgG+cShzLfEV20senZzv8VF+puNLheiGPlBGsv2A==} + '@next/swc-darwin-arm64@15.3.0': resolution: {integrity: sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==} engines: {node: '>= 10'} @@ -2416,14 +2419,6 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.29.1': - resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.31.1': resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2432,13 +2427,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.29.1': - resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.31.1': resolution: {integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2446,21 +2434,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.29.1': - resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.31.1': resolution: {integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.29.1': - resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.31.1': resolution: {integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2468,33 +2445,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.29.1': - resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.31.1': resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.29.1': - resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.31.1': resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.29.1': - resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.31.1': resolution: {integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2502,10 +2462,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.29.1': - resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.31.1': resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2735,6 +2691,10 @@ packages: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -2919,6 +2879,10 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -2950,6 +2914,10 @@ packages: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + cacheable@1.8.10: resolution: {integrity: sha512-0ZnbicB/N2R6uziva8l6O6BieBklArWyiGx4GkwAhLKhSHyQtRfM9T1nx7HHuHDKkYB/efJQhz3QJ6x/YqoZzA==} @@ -3087,6 +3055,10 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -3100,9 +3072,29 @@ packages: constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -3243,6 +3235,10 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -3318,6 +3314,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.5.149: resolution: {integrity: sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==} @@ -3333,6 +3332,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + endent@2.1.0: resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} @@ -3420,6 +3423,9 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} @@ -3432,8 +3438,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-next@15.2.4: - resolution: {integrity: sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==} + eslint-config-next@15.3.1: + resolution: {integrity: sha512-GnmyVd9TE/Ihe3RrvcafFhXErErtr2jS0JDeCSp3vWvy86AXwHsRBt0E3MqP/m8ACS1ivcsi5uaqjbhsG18qKw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' @@ -3501,8 +3507,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import-x@4.10.6: - resolution: {integrity: sha512-sWIaoezWK7kuPA7u29ULsO8WzlYYC8uivaipsazyHiZDykjNsuPtwRsYZIK2luqc5wppwXOop8iFdW7xffo/Xw==} + eslint-plugin-import-x@4.11.0: + resolution: {integrity: sha512-NAaYY49342gj09QGvwnFFl5KcD5aLzjAz97Lo+upnN8MzjEGSIlmL5sxCYGqtIeMjw8fSRDFZIp2xjRLT+yl4Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3563,8 +3569,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.23.0: - resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} + eslint@9.26.0: + resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3630,6 +3636,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -3637,10 +3647,28 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + eventsource-parser@3.0.1: + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.6: + resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} + engines: {node: '>=18.0.0'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -3704,6 +3732,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} @@ -3749,6 +3781,14 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -3996,6 +4036,10 @@ packages: htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -4080,6 +4124,10 @@ packages: intl-messageformat@10.7.16: resolution: {integrity: sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==} + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -4212,6 +4260,9 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -4367,8 +4418,8 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - known-css-properties@0.35.0: - resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} + known-css-properties@0.36.0: + resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==} language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -4643,6 +4694,10 @@ packages: mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + memfs@3.5.3: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} @@ -4654,6 +4709,10 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4777,10 +4836,18 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -4966,6 +5033,10 @@ packages: objectorarray@1.0.5: resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -5045,6 +5116,10 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -5078,6 +5153,10 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -5102,6 +5181,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -5179,8 +5262,8 @@ packages: resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} - postcss-sorting@8.0.2: - resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + postcss-sorting@9.1.0: + resolution: {integrity: sha512-Mn8KJ45HNNG6JBpBizXcyf6LqY/qyqetGcou/nprDnFwBFBLGj0j/sNKV2lj2KMOVOwdXu14aEzqJv8CIV6e8g==} peerDependencies: postcss: ^8.4.20 @@ -5292,6 +5375,10 @@ packages: property-information@7.0.0: resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} @@ -5320,6 +5407,10 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + react-docgen-typescript@2.2.2: resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: @@ -5656,6 +5747,10 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} @@ -5715,9 +5810,17 @@ packages: engines: {node: '>=10'} hasBin: true + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -5730,6 +5833,9 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sharp@0.34.1: resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -5833,6 +5939,10 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + storybook@8.6.12: resolution: {integrity: sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==} hasBin: true @@ -5955,22 +6065,23 @@ packages: babel-plugin-macros: optional: true - stylelint-config-recommended@15.0.0: - resolution: {integrity: sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==} + stylelint-config-recommended@16.0.0: + resolution: {integrity: sha512-4RSmPjQegF34wNcK1e1O3Uz91HN8P1aFdFzio90wNK9mjgAI19u5vsU868cVZboKzCaa5XbpvtTzAAGQAxpcXA==} engines: {node: '>=18.12.0'} peerDependencies: - stylelint: ^16.13.0 + stylelint: ^16.16.0 - stylelint-config-standard@37.0.0: - resolution: {integrity: sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==} + stylelint-config-standard@38.0.0: + resolution: {integrity: sha512-uj3JIX+dpFseqd/DJx8Gy3PcRAJhlEZ2IrlFOc4LUxBX/PNMEQ198x7LCOE2Q5oT9Vw8nyc4CIL78xSqPr6iag==} engines: {node: '>=18.12.0'} peerDependencies: - stylelint: ^16.13.0 + stylelint: ^16.18.0 - stylelint-order@6.0.4: - resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + stylelint-order@7.0.0: + resolution: {integrity: sha512-rSWxx0KscYfxU02wEskKXES9lkRzuuONMMNkZ7SUc6uiF3tDKm7e+sE0Ax/SBlG4TUf1sp1R6f3/SlsPGmzthg==} + engines: {node: '>=20.19.0'} peerDependencies: - stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + stylelint: ^16.18.0 stylelint-selector-bem-pattern@4.0.1: resolution: {integrity: sha512-zpyC52/aqwbxbtliyTKdV3gv+h/ExZUTIn7tKMt9nfILtMhYIeJNF5a3UE1dtv9L826ulXU+83YA83Ymx3jW0A==} @@ -5978,8 +6089,8 @@ packages: peerDependencies: stylelint: ^16.2.1 - stylelint@16.17.0: - resolution: {integrity: sha512-I9OwVIWRMqVm2Br5iTbrfSqGRPWQUlvm6oXO1xZuYYu0Gpduy67N8wXOZv15p6E/JdlZiAtQaIoLKZEWk5hrjw==} + stylelint@16.19.1: + resolution: {integrity: sha512-C1SlPZNMKl+d/C867ZdCRthrS+6KuZ3AoGW113RZCOL0M8xOGpgx7G70wq7lFvqvm4dcfdGFVLB/mNaLFChRKw==} engines: {node: '>=18.12.0'} hasBin: true @@ -6080,6 +6191,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + tough-cookie@5.1.2: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} @@ -6172,6 +6287,10 @@ packages: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -6191,8 +6310,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.29.1: - resolution: {integrity: sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==} + typescript-eslint@8.31.1: + resolution: {integrity: sha512-j6DsEotD/fH39qKzXTQRwYYWlt7D+0HmfpOK+DVhwJOFLcdmn92hq3mBb7HlKJHbjjI/gTOqEcc9d6JfpFf/VA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -6283,6 +6402,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + unrs-resolver@1.7.2: resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} @@ -6348,6 +6471,10 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -6794,18 +6921,18 @@ snapshots: '@esbuild/win32-x64@0.25.3': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.23.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': dependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.9(eslint@9.23.0(jiti@2.4.2))': + '@eslint/compat@1.2.9(eslint@9.26.0(jiti@2.4.2))': optionalDependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) - '@eslint/config-array@0.19.2': + '@eslint/config-array@0.20.0': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.0 @@ -6815,10 +6942,6 @@ snapshots: '@eslint/config-helpers@0.2.2': {} - '@eslint/core@0.12.0': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/core@0.13.0': dependencies: '@types/json-schema': 7.0.15 @@ -6837,7 +6960,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.23.0': {} + '@eslint/js@9.26.0': {} '@eslint/object-schema@2.1.6': {} @@ -7065,6 +7188,21 @@ snapshots: - acorn - supports-color + '@modelcontextprotocol/sdk@1.11.0': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.6 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.24.3 + zod-to-json-schema: 3.24.5(zod@3.24.3) + transitivePeerDependencies: + - supports-color + '@napi-rs/wasm-runtime@0.2.9': dependencies: '@emnapi/core': 1.4.3 @@ -7078,6 +7216,10 @@ snapshots: dependencies: fast-glob: 3.3.1 + '@next/eslint-plugin-next@15.3.1': + dependencies: + fast-glob: 3.3.1 + '@next/swc-darwin-arm64@15.3.0': optional: true @@ -8508,32 +8650,15 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.29.1 - '@typescript-eslint/type-utils': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.29.1 - eslint: 9.23.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/type-utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.31.1 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -8542,80 +8667,36 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.29.1 - '@typescript-eslint/types': 8.29.1 - '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.29.1 - debug: 4.4.0 - eslint: 9.23.0(jiti@2.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.31.1 '@typescript-eslint/types': 8.31.1 '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.31.1 debug: 4.4.0 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.29.1': - dependencies: - '@typescript-eslint/types': 8.29.1 - '@typescript-eslint/visitor-keys': 8.29.1 - '@typescript-eslint/scope-manager@8.31.1': dependencies: '@typescript-eslint/types': 8.31.1 '@typescript-eslint/visitor-keys': 8.31.1 - '@typescript-eslint/type-utils@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - debug: 4.4.0 - eslint: 9.23.0(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.0 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.29.1': {} - '@typescript-eslint/types@8.31.1': {} - '@typescript-eslint/typescript-estree@8.29.1(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 8.29.1 - '@typescript-eslint/visitor-keys': 8.29.1 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 8.31.1 @@ -8630,33 +8711,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.23.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.29.1 - '@typescript-eslint/types': 8.29.1 - '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.31.1 '@typescript-eslint/types': 8.31.1 '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.29.1': - dependencies: - '@typescript-eslint/types': 8.29.1 - eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.31.1': dependencies: '@typescript-eslint/types': 8.31.1 @@ -8856,6 +8921,11 @@ snapshots: abbrev@2.0.0: {} + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + acorn-import-attributes@1.9.5(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -9037,6 +9107,20 @@ snapshots: binary-extensions@2.3.0: {} + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.0 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + boolbase@1.0.0: {} brace-expansion@1.1.11: @@ -9072,6 +9156,8 @@ snapshots: dependencies: streamsearch: 1.1.0 + bytes@3.1.2: {} + cacheable@1.8.10: dependencies: hookified: 1.8.2 @@ -9206,6 +9292,8 @@ snapshots: commander@8.3.0: {} + comment-parser@1.4.1: {} + commondir@1.0.1: {} concat-map@0.0.1: {} @@ -9219,8 +9307,23 @@ snapshots: constants-browserify@1.0.0: {} + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + convert-source-map@2.0.0: {} + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -9352,6 +9455,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + depd@2.0.0: {} + dequal@2.0.3: {} detect-libc@2.0.4: {} @@ -9435,6 +9540,8 @@ snapshots: eastasianwidth@0.2.0: {} + ee-first@1.1.1: {} + electron-to-chromium@1.5.149: {} emoji-regex-xs@1.0.0: {} @@ -9445,6 +9552,8 @@ snapshots: emoji-regex@9.2.2: {} + encodeurl@2.0.0: {} + endent@2.1.0: dependencies: dedent: 0.7.0 @@ -9623,25 +9732,27 @@ snapshots: escalade@3.2.0: {} + escape-html@1.0.3: {} + escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} - eslint-config-next@15.2.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + eslint-config-next@15.3.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@next/eslint-plugin-next': 15.2.4 + '@next/eslint-plugin-next': 15.3.1 '@rushstack/eslint-patch': 1.11.0 - '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-react: 7.37.5(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.23.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.5(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.26.0(jiti@2.4.2)) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -9657,42 +9768,42 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) get-tsconfig: 4.10.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-import-x: 4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.3.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)): + eslint-import-resolver-typescript@4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 4.4.0 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) get-tsconfig: 4.10.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-import-x: 4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color - eslint-mdx@3.4.1(eslint@9.23.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): + eslint-mdx@3.4.1(eslint@9.26.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): dependencies: acorn: 8.14.1 acorn-jsx: 5.3.2(acorn@8.14.1) - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) espree: 10.3.0 estree-util-visit: 2.0.0 remark-mdx: 3.1.0 @@ -9711,25 +9822,23 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.10.6(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@pkgr/core': 0.2.4 - '@types/doctrine': 0.0.9 - '@typescript-eslint/utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + comment-parser: 1.4.1 debug: 4.4.0 - doctrine: 3.0.0 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.10.0 is-glob: 4.0.3 @@ -9742,7 +9851,7 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -9751,9 +9860,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.23.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -9765,13 +9874,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.26.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -9781,7 +9890,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -9790,10 +9899,10 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-mdx@3.4.1(eslint@9.23.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): + eslint-plugin-mdx@3.4.1(eslint@9.26.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): dependencies: - eslint: 9.23.0(jiti@2.4.2) - eslint-mdx: 3.4.1(eslint@9.23.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) + eslint: 9.26.0(jiti@2.4.2) + eslint-mdx: 3.4.1(eslint@9.26.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) mdast-util-from-markdown: 2.0.2 mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -9809,11 +9918,11 @@ snapshots: - remark-lint-file-extension - supports-color - eslint-plugin-react-hooks@5.2.0(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) - eslint-plugin-react@7.37.5(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-react@7.37.5(eslint@9.26.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -9821,7 +9930,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -9835,11 +9944,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-storybook@0.12.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + eslint-plugin-storybook@0.12.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: '@storybook/csf': 0.1.13 - '@typescript-eslint/utils': 8.31.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color @@ -9859,19 +9968,20 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.23.0(jiti@2.4.2): + eslint@9.26.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 + '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.2 - '@eslint/core': 0.12.0 + '@eslint/core': 0.13.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.23.0 + '@eslint/js': 9.26.0 '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 + '@modelcontextprotocol/sdk': 1.11.0 '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -9896,6 +10006,7 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + zod: 3.24.3 optionalDependencies: jiti: 2.4.2 transitivePeerDependencies: @@ -9962,10 +10073,18 @@ snapshots: esutils@2.0.3: {} + etag@1.8.1: {} + eventemitter3@5.0.1: {} events@3.3.0: {} + eventsource-parser@3.0.1: {} + + eventsource@3.0.6: + dependencies: + eventsource-parser: 3.0.1 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -9978,6 +10097,42 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -10040,6 +10195,17 @@ snapshots: dependencies: to-regex-range: 5.0.1 + finalhandler@2.1.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 @@ -10103,6 +10269,10 @@ snapshots: format@0.2.2: {} + forwarded@0.2.0: {} + + fresh@2.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -10422,6 +10592,14 @@ snapshots: domutils: 2.8.0 entities: 2.2.0 + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 @@ -10500,6 +10678,8 @@ snapshots: '@formatjs/icu-messageformat-parser': 2.11.2 tslib: 2.8.1 + ipaddr.js@1.9.1: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -10619,6 +10799,8 @@ snapshots: is-potential-custom-element-name@1.0.1: {} + is-promise@4.0.0: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -10784,7 +10966,7 @@ snapshots: kleur@4.1.5: {} - known-css-properties@0.35.0: {} + known-css-properties@0.36.0: {} language-subtag-registry@0.3.23: {} @@ -11187,6 +11369,8 @@ snapshots: mdurl@2.0.0: {} + media-typer@1.1.0: {} + memfs@3.5.3: dependencies: fs-monkey: 1.0.6 @@ -11197,6 +11381,8 @@ snapshots: meow@13.2.0: {} + merge-descriptors@2.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -11479,10 +11665,16 @@ snapshots: mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} @@ -11659,6 +11851,10 @@ snapshots: objectorarray@1.0.5: {} + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -11770,6 +11966,8 @@ snapshots: dependencies: entities: 6.0.0 + parseurl@1.3.3: {} + pascal-case@3.1.2: dependencies: no-case: 3.0.4 @@ -11797,6 +11995,8 @@ snapshots: lru-cache: 11.1.0 minipass: 7.1.2 + path-to-regexp@8.2.0: {} + path-type@4.0.0: {} pathval@2.0.0: {} @@ -11809,6 +12009,8 @@ snapshots: pidtree@0.6.0: {} + pkce-challenge@5.0.0: {} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -11887,7 +12089,7 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sorting@8.0.2(postcss@8.5.3): + postcss-sorting@9.1.0(postcss@8.5.3): dependencies: postcss: 8.5.3 @@ -11943,6 +12145,11 @@ snapshots: property-information@7.0.0: {} + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + punycode.js@2.3.1: {} punycode@1.4.1: {} @@ -11963,6 +12170,13 @@ snapshots: range-parser@1.2.1: {} + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + react-docgen-typescript@2.2.2(typescript@5.8.3): dependencies: typescript: 5.8.3 @@ -12688,6 +12902,16 @@ snapshots: dependencies: glob: 7.2.3 + router@2.2.0: + dependencies: + debug: 4.4.0 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: @@ -12751,10 +12975,35 @@ snapshots: semver@7.7.1: {} + send@1.2.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -12777,6 +13026,8 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 + setprototypeof@1.2.0: {} + sharp@0.34.1: dependencies: color: 4.2.3 @@ -12925,6 +13176,8 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 + statuses@2.0.1: {} + storybook@8.6.12(prettier@3.5.3): dependencies: '@storybook/core': 8.6.12(prettier@3.5.3)(storybook@8.6.12(prettier@3.5.3)) @@ -13065,29 +13318,29 @@ snapshots: client-only: 0.0.1 react: 19.1.0 - stylelint-config-recommended@15.0.0(stylelint@16.17.0(typescript@5.8.3)): + stylelint-config-recommended@16.0.0(stylelint@16.19.1(typescript@5.8.3)): dependencies: - stylelint: 16.17.0(typescript@5.8.3) + stylelint: 16.19.1(typescript@5.8.3) - stylelint-config-standard@37.0.0(stylelint@16.17.0(typescript@5.8.3)): + stylelint-config-standard@38.0.0(stylelint@16.19.1(typescript@5.8.3)): dependencies: - stylelint: 16.17.0(typescript@5.8.3) - stylelint-config-recommended: 15.0.0(stylelint@16.17.0(typescript@5.8.3)) + stylelint: 16.19.1(typescript@5.8.3) + stylelint-config-recommended: 16.0.0(stylelint@16.19.1(typescript@5.8.3)) - stylelint-order@6.0.4(stylelint@16.17.0(typescript@5.8.3)): + stylelint-order@7.0.0(stylelint@16.19.1(typescript@5.8.3)): dependencies: postcss: 8.5.3 - postcss-sorting: 8.0.2(postcss@8.5.3) - stylelint: 16.17.0(typescript@5.8.3) + postcss-sorting: 9.1.0(postcss@8.5.3) + stylelint: 16.19.1(typescript@5.8.3) - stylelint-selector-bem-pattern@4.0.1(stylelint@16.17.0(typescript@5.8.3)): + stylelint-selector-bem-pattern@4.0.1(stylelint@16.19.1(typescript@5.8.3)): dependencies: lodash: 4.17.21 postcss: 8.5.3 postcss-bem-linter: 4.0.1(postcss@8.5.3) - stylelint: 16.17.0(typescript@5.8.3) + stylelint: 16.19.1(typescript@5.8.3) - stylelint@16.17.0(typescript@5.8.3): + stylelint@16.19.1(typescript@5.8.3): dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 @@ -13110,7 +13363,7 @@ snapshots: ignore: 7.0.4 imurmurhash: 0.1.4 is-plain-object: 5.0.0 - known-css-properties: 0.35.0 + known-css-properties: 0.36.0 mathml-tag-names: 2.1.3 meow: 13.2.0 micromatch: 4.0.8 @@ -13229,6 +13482,8 @@ snapshots: dependencies: is-number: 7.0.0 + toidentifier@1.0.1: {} + tough-cookie@5.1.2: dependencies: tldts: 6.1.86 @@ -13311,6 +13566,12 @@ snapshots: type-fest@3.13.1: {} + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -13346,12 +13607,12 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.29.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -13511,6 +13772,8 @@ snapshots: universalify@2.0.1: {} + unpipe@1.0.0: {} + unrs-resolver@1.7.2: dependencies: napi-postinstall: 0.2.3 @@ -13598,6 +13861,8 @@ snapshots: validate-npm-package-name@5.0.1: {} + vary@1.1.2: {} + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 From e72dff329644a5ef4e762ce7c5c5e500667b32f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 11:22:40 -0400 Subject: [PATCH 0445/1385] meta: bump @radix-ui/react-select from 2.1.6 to 2.2.2 (#7699) Bumps [@radix-ui/react-select](https://github.com/radix-ui/primitives) from 2.1.6 to 2.2.2. - [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-select" dependency-version: 2.2.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 229 ++-------------------------- 2 files changed, 14 insertions(+), 217 deletions(-) diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 7bd75f2ccd145..0cf05b9984794 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -37,7 +37,7 @@ "@radix-ui/react-dialog": "^1.1.7", "@radix-ui/react-dropdown-menu": "~2.1.6", "@radix-ui/react-label": "~2.1.2", - "@radix-ui/react-select": "~2.1.6", + "@radix-ui/react-select": "~2.2.2", "@radix-ui/react-separator": "~1.1.3", "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 055e2e078c4dc..9f4519103d27e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -332,8 +332,8 @@ importers: specifier: ~2.1.2 version: 2.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-select': - specifier: ~2.1.6 - version: 2.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~2.2.2 + version: 2.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-separator': specifier: ~1.1.3 version: 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -1249,19 +1249,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-arrow@1.1.3': - resolution: {integrity: sha512-2dvVU4jva0qkNZH6HHWuSz5FN5GeU5tymvCgutF8WaXz9WnD1NgUhy73cqzkjkN4Zkn8lfTPv5JIfrC221W+Nw==} - 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 - '@radix-ui/react-arrow@1.1.4': resolution: {integrity: sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==} peerDependencies: @@ -1275,19 +1262,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collection@1.1.3': - resolution: {integrity: sha512-mM2pxoQw5HJ49rkzwOs7Y6J4oYH22wS8BfK2/bBxROlI4xuR0c4jEenQP63LlTlDkO6Buj2Vt+QYAYcOgqtrXA==} - 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 - '@radix-ui/react-collection@1.1.4': resolution: {integrity: sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg==} peerDependencies: @@ -1372,19 +1346,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-dismissable-layer@1.1.6': - resolution: {integrity: sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==} - 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 - '@radix-ui/react-dismissable-layer@1.1.7': resolution: {integrity: sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==} peerDependencies: @@ -1420,19 +1381,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-scope@1.1.3': - resolution: {integrity: sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==} - 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 - '@radix-ui/react-focus-scope@1.1.4': resolution: {integrity: sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==} peerDependencies: @@ -1503,19 +1451,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.3': - resolution: {integrity: sha512-iNb9LYUMkne9zIahukgQmHlSBp9XWGeQQ7FvUGNk45ywzOb6kQa+Ca38OphXlWDiKvyneo9S+KSJsLfLt8812A==} - 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 - '@radix-ui/react-popper@1.2.4': resolution: {integrity: sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==} peerDependencies: @@ -1542,19 +1477,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.1.5': - resolution: {integrity: sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==} - 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 - '@radix-ui/react-portal@1.1.6': resolution: {integrity: sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==} peerDependencies: @@ -1607,19 +1529,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.0.3': - resolution: {integrity: sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==} - 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 - '@radix-ui/react-primitive@2.1.0': resolution: {integrity: sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==} peerDependencies: @@ -1646,8 +1555,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-select@2.1.7': - resolution: {integrity: sha512-exzGIRtc7S8EIM2KjFg+7lJZsH7O7tpaBaJbBNVDnOZNhtoQ2iV+iSNfi2Wth0m6h3trJkMVvzAehB3c6xj/3Q==} + '@radix-ui/react-select@2.2.2': + resolution: {integrity: sha512-HjkVHtBkuq+r3zUAZ/CvNWUGKPfuicGDbgtZgiQuFmNcV5F+Tgy24ep2nsAW2nFgvhGPJVqeBZa6KyVN0EyrBA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1756,15 +1665,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-controllable-state@1.1.1': - resolution: {integrity: sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-controllable-state@1.2.2': resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: @@ -1877,19 +1777,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-visually-hidden@1.1.3': - resolution: {integrity: sha512-oXSF3ZQRd5fvomd9hmUCb2EHSZbPp3ZSHAHJJU/DlF9XoFkJBBW8RHU/E8WEH+RbSfJd/QFA0sl8ClJXknBwHQ==} - 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 - '@radix-ui/react-visually-hidden@1.2.0': resolution: {integrity: sha512-rQj0aAWOpCdCMRbI6pLQm8r7S2BM3YhTa0SzOYD55k+hJA8oo9J+H+9wLM9oMlZWOX/wJWPTzfDfmZkf7LvCfg==} peerDependencies: @@ -7466,14 +7353,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-arrow@1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-arrow@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7482,17 +7361,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-collection@1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-collection@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) @@ -7567,18 +7435,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-dismissable-layer@1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-dismissable-layer@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 @@ -7611,16 +7467,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-focus-scope@1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-focus-scope@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) @@ -7695,23 +7541,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-popper@1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/rect': 1.1.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-popper@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7738,15 +7567,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-portal@1.1.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-portal@1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7782,14 +7602,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-primitive@2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-primitive@2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) @@ -7814,27 +7626,27 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-select@2.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-select@2.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) aria-hidden: 1.2.4 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -7936,13 +7748,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-use-controllable-state@1.1.1(@types/react@19.1.2)(react@19.1.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.2)(react@19.1.0)': dependencies: '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.2)(react@19.1.0) @@ -8026,14 +7831,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-visually-hidden@1.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-visually-hidden@1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) From 5363ac5aebd263e12c35f4f54c6258e779450417 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 17:24:09 +0200 Subject: [PATCH 0446/1385] meta: bump lint-staged from 15.5.0 to 15.5.1 (#7712) Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 15.5.0 to 15.5.1. - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](https://github.com/lint-staged/lint-staged/compare/v15.5.0...v15.5.1) --- updated-dependencies: - dependency-name: lint-staged dependency-version: 15.5.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index db8f22dcc0b77..d1ea7c0042212 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "dependencies": { "acorn": "^8.14.1", "husky": "9.1.7", - "lint-staged": "15.5.0", + "lint-staged": "15.5.1", "turbo": "2.4.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f4519103d27e..d3bed8bc7a223 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: 9.1.7 version: 9.1.7 lint-staged: - specifier: 15.5.0 - version: 15.5.0 + specifier: 15.5.1 + version: 15.5.1 turbo: specifier: 2.4.4 version: 2.4.4 @@ -4397,8 +4397,8 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lint-staged@15.5.0: - resolution: {integrity: sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==} + lint-staged@15.5.1: + resolution: {integrity: sha512-6m7u8mue4Xn6wK6gZvSCQwBvMBR36xfY24nF5bMTf2MHDYG6S3yhJuOgdYVw99hsjyDt2d4z168b3naI8+NWtQ==} engines: {node: '>=18.12.0'} hasBin: true @@ -10831,7 +10831,7 @@ snapshots: dependencies: uc.micro: 2.1.0 - lint-staged@15.5.0: + lint-staged@15.5.1: dependencies: chalk: 5.4.1 commander: 13.1.0 From edb305f766cb1984d7d49de90188e18c5aef7213 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 15:28:47 +0000 Subject: [PATCH 0447/1385] meta: bump the next-js group with 4 updates (#7693) Bumps the next-js group with 4 updates: [@vercel/otel](https://github.com/vercel/otel), [next](https://github.com/vercel/next.js), [next-intl](https://github.com/amannn/next-intl) and [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next). Updates `@vercel/otel` from 1.10.4 to 1.11.0 - [Release notes](https://github.com/vercel/otel/releases) - [Commits](https://github.com/vercel/otel/compare/@vercel/otel@1.10.4...@vercel/otel@1.11.0) Updates `next` from 15.3.0 to 15.3.1 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v15.3.0...v15.3.1) Updates `next-intl` from 4.0.2 to 4.1.0 - [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/v4.0.2...v4.1.0) Updates `@next/eslint-plugin-next` from 15.2.4 to 15.3.1 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v15.3.1/packages/eslint-plugin-next) --- updated-dependencies: - dependency-name: "@vercel/otel" dependency-version: 1.11.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: next-js - dependency-name: next dependency-version: 15.3.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: next-js - dependency-name: next-intl dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: next-js - dependency-name: "@next/eslint-plugin-next" dependency-version: 15.3.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: next-js ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 8 +-- pnpm-lock.yaml | 127 +++++++++++++++++++---------------------- 2 files changed, 64 insertions(+), 71 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index d8a09e34d2a44..259c8f893f8b9 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -43,7 +43,7 @@ "@types/react": "^19.1.0", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", - "@vercel/otel": "~1.10.4", + "@vercel/otel": "~1.11.0", "@vercel/speed-insights": "~1.2.0", "classnames": "~2.5.1", "cross-env": "7.0.3", @@ -52,8 +52,8 @@ "glob": "~11.0.1", "gray-matter": "~4.0.3", "hast-util-to-string": "~3.0.1", - "next": "15.3.0", - "next-intl": "~4.0.2", + "next": "15.3.1", + "next-intl": "~4.1.0", "next-themes": "~0.4.6", "postcss": "~8.5.3", "postcss-calc": "~10.1.1", @@ -76,7 +76,7 @@ "devDependencies": { "@eslint/compat": "~1.2.8", "@eslint/eslintrc": "~3.3.1", - "@next/eslint-plugin-next": "15.2.4", + "@next/eslint-plugin-next": "15.3.1", "@testing-library/user-event": "~14.6.1", "@types/semver": "~7.7.0", "eslint-config-next": "15.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d3bed8bc7a223..465f33c23c26d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,13 +113,13 @@ importers: version: 0.1.0 '@vercel/analytics': specifier: ~1.5.0 - version: 1.5.0(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 1.5.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) '@vercel/otel': - specifier: ~1.10.4 - version: 1.10.4(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + specifier: ~1.11.0 + version: 1.11.0(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) '@vercel/speed-insights': specifier: ~1.2.0 - version: 1.2.0(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 1.2.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) classnames: specifier: ~2.5.1 version: 2.5.1 @@ -142,11 +142,11 @@ importers: specifier: ~3.0.1 version: 3.0.1 next: - specifier: 15.3.0 - version: 15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.3.1 + version: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-intl: - specifier: ~4.0.2 - version: 4.0.3(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + specifier: ~4.1.0 + version: 4.1.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) next-themes: specifier: ~0.4.6 version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -209,8 +209,8 @@ importers: specifier: ~3.3.1 version: 3.3.1 '@next/eslint-plugin-next': - specifier: 15.2.4 - version: 15.2.4 + specifier: 15.3.1 + version: 15.3.1 '@testing-library/user-event': specifier: ~14.6.1 version: 14.6.1(@testing-library/dom@10.4.0) @@ -1013,59 +1013,56 @@ packages: '@napi-rs/wasm-runtime@0.2.9': resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} - '@next/env@15.3.0': - resolution: {integrity: sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==} - - '@next/eslint-plugin-next@15.2.4': - resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==} + '@next/env@15.3.1': + resolution: {integrity: sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==} '@next/eslint-plugin-next@15.3.1': resolution: {integrity: sha512-oEs4dsfM6iyER3jTzMm4kDSbrQJq8wZw5fmT6fg2V3SMo+kgG+cShzLfEV20senZzv8VF+puNLheiGPlBGsv2A==} - '@next/swc-darwin-arm64@15.3.0': - resolution: {integrity: sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==} + '@next/swc-darwin-arm64@15.3.1': + resolution: {integrity: sha512-hjDw4f4/nla+6wysBL07z52Gs55Gttp5Bsk5/8AncQLJoisvTBP0pRIBK/B16/KqQyH+uN4Ww8KkcAqJODYH3w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.3.0': - resolution: {integrity: sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==} + '@next/swc-darwin-x64@15.3.1': + resolution: {integrity: sha512-q+aw+cJ2ooVYdCEqZVk+T4Ni10jF6Fo5DfpEV51OupMaV5XL6pf3GCzrk6kSSZBsMKZtVC1Zm/xaNBFpA6bJ2g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.3.0': - resolution: {integrity: sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==} + '@next/swc-linux-arm64-gnu@15.3.1': + resolution: {integrity: sha512-wBQ+jGUI3N0QZyWmmvRHjXjTWFy8o+zPFLSOyAyGFI94oJi+kK/LIZFJXeykvgXUk1NLDAEFDZw/NVINhdk9FQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.3.0': - resolution: {integrity: sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==} + '@next/swc-linux-arm64-musl@15.3.1': + resolution: {integrity: sha512-IIxXEXRti/AulO9lWRHiCpUUR8AR/ZYLPALgiIg/9ENzMzLn3l0NSxVdva7R/VDcuSEBo0eGVCe3evSIHNz0Hg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.3.0': - resolution: {integrity: sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==} + '@next/swc-linux-x64-gnu@15.3.1': + resolution: {integrity: sha512-bfI4AMhySJbyXQIKH5rmLJ5/BP7bPwuxauTvVEiJ/ADoddaA9fgyNNCcsbu9SlqfHDoZmfI6g2EjzLwbsVTr5A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.3.0': - resolution: {integrity: sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==} + '@next/swc-linux-x64-musl@15.3.1': + resolution: {integrity: sha512-FeAbR7FYMWR+Z+M5iSGytVryKHiAsc0x3Nc3J+FD5NVbD5Mqz7fTSy8CYliXinn7T26nDMbpExRUI/4ekTvoiA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.3.0': - resolution: {integrity: sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==} + '@next/swc-win32-arm64-msvc@15.3.1': + resolution: {integrity: sha512-yP7FueWjphQEPpJQ2oKmshk/ppOt+0/bB8JC8svPUZNy0Pi3KbPx2Llkzv1p8CoQa+D2wknINlJpHf3vtChVBw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.0': - resolution: {integrity: sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==} + '@next/swc-win32-x64-msvc@15.3.1': + resolution: {integrity: sha512-3PMvF2zRJAifcRNni9uMk/gulWfWS+qVI/pagd+4yLF5bcXPZPPH2xlYRYOsUjmCJOXSTAC2PjRzbhsRzR2fDQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2470,8 +2467,8 @@ packages: vue-router: optional: true - '@vercel/otel@1.10.4': - resolution: {integrity: sha512-X01cOLU2Aiku4y1Vn9HQ8VmkQEdIQiWhjHa7DEUspcNGNg0Xm7GYAU7ErZ0pH/5spsrvb2wpIIHSBFgs0M5p4g==} + '@vercel/otel@1.11.0': + resolution: {integrity: sha512-cS+Yq2qfkkGyoRKhdKd81J5pVPo7ulLnqeQsISITJVynRNuun8+1FfY+DHcPT2drj9Bl/7LpG0BosULrv7yyqg==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.7.0 @@ -4800,8 +4797,8 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next-intl@4.0.3: - resolution: {integrity: sha512-vw25WvRheZG6NzyXYePuhc/xrYHMhnu7cVcB49XoXaQsO4WMV0YDV6BllhRgI5Ne79hpoAQMyk/fxIKtkBVbNg==} + next-intl@4.1.0: + resolution: {integrity: sha512-JNJRjc7sdnfUxhZmGcvzDszZ60tQKrygV/VLsgzXhnJDxQPn1cN2rVpc53adA1SvBJwPK2O6Sc6b4gYSILjCzw==} peerDependencies: next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -4816,8 +4813,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.3.0: - resolution: {integrity: sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==} + next@15.3.1: + resolution: {integrity: sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -7097,38 +7094,34 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true - '@next/env@15.3.0': {} - - '@next/eslint-plugin-next@15.2.4': - dependencies: - fast-glob: 3.3.1 + '@next/env@15.3.1': {} '@next/eslint-plugin-next@15.3.1': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.3.0': + '@next/swc-darwin-arm64@15.3.1': optional: true - '@next/swc-darwin-x64@15.3.0': + '@next/swc-darwin-x64@15.3.1': optional: true - '@next/swc-linux-arm64-gnu@15.3.0': + '@next/swc-linux-arm64-gnu@15.3.1': optional: true - '@next/swc-linux-arm64-musl@15.3.0': + '@next/swc-linux-arm64-musl@15.3.1': optional: true - '@next/swc-linux-x64-gnu@15.3.0': + '@next/swc-linux-x64-gnu@15.3.1': optional: true - '@next/swc-linux-x64-musl@15.3.0': + '@next/swc-linux-x64-musl@15.3.1': optional: true - '@next/swc-win32-arm64-msvc@15.3.0': + '@next/swc-win32-arm64-msvc@15.3.1': optional: true - '@next/swc-win32-x64-msvc@15.3.0': + '@next/swc-win32-x64-msvc@15.3.1': optional: true '@noble/hashes@1.8.0': {} @@ -8584,12 +8577,12 @@ snapshots: mdast-util-to-string: 3.2.0 unist-util-visit: 4.1.2 - '@vercel/analytics@1.5.0(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@vercel/analytics@1.5.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': optionalDependencies: - next: 15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 - '@vercel/otel@1.10.4(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': + '@vercel/otel@1.11.0(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.200.0 @@ -8599,9 +8592,9 @@ snapshots: '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@vercel/speed-insights@1.2.0(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@vercel/speed-insights@1.2.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': optionalDependencies: - next: 15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 '@vitest/expect@2.0.5': @@ -11512,11 +11505,11 @@ snapshots: neo-async@2.6.2: {} - next-intl@4.0.3(next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + next-intl@4.1.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0 - next: 15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 use-intl: 4.1.0(react@19.1.0) optionalDependencies: @@ -11527,9 +11520,9 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - next@15.3.0(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.3.0 + '@next/env': 15.3.1 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -11539,14 +11532,14 @@ snapshots: react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.3.0 - '@next/swc-darwin-x64': 15.3.0 - '@next/swc-linux-arm64-gnu': 15.3.0 - '@next/swc-linux-arm64-musl': 15.3.0 - '@next/swc-linux-x64-gnu': 15.3.0 - '@next/swc-linux-x64-musl': 15.3.0 - '@next/swc-win32-arm64-msvc': 15.3.0 - '@next/swc-win32-x64-msvc': 15.3.0 + '@next/swc-darwin-arm64': 15.3.1 + '@next/swc-darwin-x64': 15.3.1 + '@next/swc-linux-arm64-gnu': 15.3.1 + '@next/swc-linux-arm64-musl': 15.3.1 + '@next/swc-linux-x64-gnu': 15.3.1 + '@next/swc-linux-x64-musl': 15.3.1 + '@next/swc-win32-arm64-msvc': 15.3.1 + '@next/swc-win32-x64-msvc': 15.3.1 '@opentelemetry/api': 1.9.0 sharp: 0.34.1 transitivePeerDependencies: From 9781ae79bb9c2022ea367148185c7945a7df27b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 15:29:48 +0000 Subject: [PATCH 0448/1385] meta: bump style-loader from 3.3.4 to 4.0.0 (#7716) Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 3.3.4 to 4.0.0. - [Release notes](https://github.com/webpack-contrib/style-loader/releases) - [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/style-loader/compare/v3.3.4...v4.0.0) --- updated-dependencies: - dependency-name: style-loader dependency-version: 4.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 0cf05b9984794..de40f25af5b4e 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -69,7 +69,7 @@ "postcss-loader": "~8.1.1", "react": "^19.1.0", "storybook": "^8.6.11", - "style-loader": "~3.3.4", + "style-loader": "~4.0.0", "stylelint": "^16.19.1", "stylelint-config-standard": "^38.0.0", "stylelint-order": "7.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 465f33c23c26d..fa35f9ad1a534 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -423,8 +423,8 @@ importers: specifier: ^8.6.11 version: 8.6.12(prettier@3.5.3) style-loader: - specifier: ~3.3.4 - version: 3.3.4(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + specifier: ~4.0.0 + version: 4.0.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) stylelint: specifier: ^16.19.1 version: 16.19.1(typescript@5.8.3) @@ -5927,6 +5927,12 @@ packages: peerDependencies: webpack: ^5.0.0 + style-loader@4.0.0: + resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.27.0 + style-object-to-css-string@1.1.3: resolution: {integrity: sha512-bISQoUsir/qGfo7vY8rw00ia9nnyE1jvYt3zZ2jhdkcXZ6dAEi74inMzQ6On57vFI+I4Fck6wOv5UI9BEwJDgw==} @@ -13093,6 +13099,10 @@ snapshots: dependencies: webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + style-loader@4.0.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + style-object-to-css-string@1.1.3: {} style-to-js@1.1.16: From 0cb6aacd4f0de6f50e43e24dec6f2316598eee7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 15:36:37 +0000 Subject: [PATCH 0449/1385] meta: bump turbo from 2.4.4 to 2.5.2 (#7713) Bumps [turbo](https://github.com/vercel/turborepo) from 2.4.4 to 2.5.2. - [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.4.4...v2.5.2) --- updated-dependencies: - dependency-name: turbo dependency-version: 2.5.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 58 +++++++++++++++++++++++++------------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index d1ea7c0042212..e52404ead05a8 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "acorn": "^8.14.1", "husky": "9.1.7", "lint-staged": "15.5.1", - "turbo": "2.4.4" + "turbo": "2.5.2" }, "devDependencies": { "@eslint/js": "~9.26.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa35f9ad1a534..c66aa46faf267 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: 15.5.1 version: 15.5.1 turbo: - specifier: 2.4.4 - version: 2.4.4 + specifier: 2.5.2 + version: 2.5.2 devDependencies: '@eslint/js': specifier: ~9.26.0 @@ -6131,38 +6131,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.4.4: - resolution: {integrity: sha512-5kPvRkLAfmWI0MH96D+/THnDMGXlFNmjeqNRj5grLKiry+M9pKj3pRuScddAXPdlxjO5Ptz06UNaOQrrYGTx1g==} + turbo-darwin-64@2.5.2: + resolution: {integrity: sha512-2aIl0Sx230nLk+Cg2qSVxvPOBWCZpwKNuAMKoROTvWKif6VMpkWWiR9XEPoz7sHeLmCOed4GYGMjL1bqAiIS/g==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.4.4: - resolution: {integrity: sha512-/gtHPqbGQXDFhrmy+Q/MFW2HUTUlThJ97WLLSe4bxkDrKHecDYhAjbZ4rN3MM93RV9STQb3Tqy4pZBtsd4DfCw==} + turbo-darwin-arm64@2.5.2: + resolution: {integrity: sha512-MrFYhK/jYu8N6QlqZtqSHi3e4QVxlzqU3ANHTKn3/tThuwTLbNHEvzBPWSj5W7nZcM58dCqi6gYrfRz6bJZyAA==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.4.4: - resolution: {integrity: sha512-SR0gri4k0bda56hw5u9VgDXLKb1Q+jrw4lM7WAhnNdXvVoep4d6LmnzgMHQQR12Wxl3KyWPbkz9d1whL6NTm2Q==} + turbo-linux-64@2.5.2: + resolution: {integrity: sha512-LxNqUE2HmAJQ/8deoLgMUDzKxd5bKxqH0UBogWa+DF+JcXhtze3UTMr6lEr0dEofdsEUYK1zg8FRjglmwlN5YA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.4.4: - resolution: {integrity: sha512-COXXwzRd3vslQIfJhXUklgEqlwq35uFUZ7hnN+AUyXx7hUOLIiD5NblL+ETrHnhY4TzWszrbwUMfe2BYWtaPQg==} + turbo-linux-arm64@2.5.2: + resolution: {integrity: sha512-0MI1Ao1q8zhd+UUbIEsrM+yLq1BsrcJQRGZkxIsHFlGp7WQQH1oR3laBgfnUCNdCotCMD6w4moc9pUbXdOR3bg==} cpu: [arm64] os: [linux] - turbo-windows-64@2.4.4: - resolution: {integrity: sha512-PV9rYNouGz4Ff3fd6sIfQy5L7HT9a4fcZoEv8PKRavU9O75G7PoDtm8scpHU10QnK0QQNLbE9qNxOAeRvF0fJg==} + turbo-windows-64@2.5.2: + resolution: {integrity: sha512-hOLcbgZzE5ttACHHyc1ajmWYq4zKT42IC3G6XqgiXxMbS+4eyVYTL+7UvCZBd3Kca1u4TLQdLQjeO76zyDJc2A==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.4.4: - resolution: {integrity: sha512-403sqp9t5sx6YGEC32IfZTVWkRAixOQomGYB8kEc6ZD+//LirSxzeCHCnM8EmSXw7l57U1G+Fb0kxgTcKPU/Lg==} + turbo-windows-arm64@2.5.2: + resolution: {integrity: sha512-fMU41ABhSLa18H8V3Z7BMCGynQ8x+wj9WyBMvWm1jeyRKgkvUYJsO2vkIsy8m0vrwnIeVXKOIn6eSe1ddlBVqw==} cpu: [arm64] os: [win32] - turbo@2.4.4: - resolution: {integrity: sha512-N9FDOVaY3yz0YCOhYIgOGYad7+m2ptvinXygw27WPLQvcZDl3+0Sa77KGVlLSiuPDChOUEnTKE9VJwLSi9BPGQ==} + turbo@2.5.2: + resolution: {integrity: sha512-Qo5lfuStr6LQh3sPQl7kIi243bGU4aHGDQJUf6ylAdGwks30jJFloc9NYHP7Y373+gGU9OS0faA4Mb5Sy8X9Xw==} hasBin: true type-check@0.4.0: @@ -13331,32 +13331,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.4.4: + turbo-darwin-64@2.5.2: optional: true - turbo-darwin-arm64@2.4.4: + turbo-darwin-arm64@2.5.2: optional: true - turbo-linux-64@2.4.4: + turbo-linux-64@2.5.2: optional: true - turbo-linux-arm64@2.4.4: + turbo-linux-arm64@2.5.2: optional: true - turbo-windows-64@2.4.4: + turbo-windows-64@2.5.2: optional: true - turbo-windows-arm64@2.4.4: + turbo-windows-arm64@2.5.2: optional: true - turbo@2.4.4: + turbo@2.5.2: optionalDependencies: - turbo-darwin-64: 2.4.4 - turbo-darwin-arm64: 2.4.4 - turbo-linux-64: 2.4.4 - turbo-linux-arm64: 2.4.4 - turbo-windows-64: 2.4.4 - turbo-windows-arm64: 2.4.4 + turbo-darwin-64: 2.5.2 + turbo-darwin-arm64: 2.5.2 + turbo-linux-64: 2.5.2 + turbo-linux-arm64: 2.5.2 + turbo-windows-64: 2.5.2 + turbo-windows-arm64: 2.5.2 type-check@0.4.0: dependencies: From b30c97972368afcd41cabdce39d84c9b060517cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 11:56:10 -0400 Subject: [PATCH 0450/1385] meta: bump @radix-ui/react-tooltip from 1.1.8 to 1.2.4 (#7696) Bumps [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives) from 1.1.8 to 1.2.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-version: 1.2.4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 368 ++-------------------------- 3 files changed, 22 insertions(+), 350 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 259c8f893f8b9..5e7848fafc7af 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -35,7 +35,7 @@ "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", - "@radix-ui/react-tooltip": "^1.1.8", + "@radix-ui/react-tooltip": "^1.2.4", "@shikijs/core": "^3.2.2", "@shikijs/engine-javascript": "^3.2.2", "@tailwindcss/postcss": "~4.0.17", diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index de40f25af5b4e..53409a3c0273b 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -41,7 +41,7 @@ "@radix-ui/react-separator": "~1.1.3", "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", - "@radix-ui/react-tooltip": "~1.1.8", + "@radix-ui/react-tooltip": "~1.2.4", "@tailwindcss/postcss": "~4.0.17", "@vcarl/remark-headings": "~0.1.0", "classnames": "~2.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c66aa46faf267..8437fae496fbb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,8 +91,8 @@ importers: specifier: ^1.2.6 version: 1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tooltip': - specifier: ^1.1.8 - version: 1.1.8(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.2.4 + version: 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@shikijs/core': specifier: ^3.2.2 version: 3.3.0 @@ -344,8 +344,8 @@ importers: specifier: ~1.2.6 version: 1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tooltip': - specifier: ~1.1.8 - version: 1.1.8(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~1.2.4 + version: 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tailwindcss/postcss': specifier: ~4.0.17 version: 4.0.17 @@ -1227,25 +1227,9 @@ packages: '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} - '@radix-ui/primitive@1.1.1': - resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} - '@radix-ui/primitive@1.1.2': resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} - '@radix-ui/react-arrow@1.1.2': - resolution: {integrity: sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==} - 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 - '@radix-ui/react-arrow@1.1.4': resolution: {integrity: sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==} peerDependencies: @@ -1272,15 +1256,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.1.1': - resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-compose-refs@1.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: @@ -1290,15 +1265,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-context@1.1.1': - resolution: {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 - '@radix-ui/react-context@1.1.2': resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: @@ -1330,19 +1296,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.5': - resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} - 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 - '@radix-ui/react-dismissable-layer@1.1.7': resolution: {integrity: sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==} peerDependencies: @@ -1391,15 +1344,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-id@1.1.1': resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: @@ -1435,19 +1379,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.2': - resolution: {integrity: sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==} - 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 - '@radix-ui/react-popper@1.2.4': resolution: {integrity: sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==} peerDependencies: @@ -1461,19 +1392,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.1.4': - resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} - 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 - '@radix-ui/react-portal@1.1.6': resolution: {integrity: sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==} peerDependencies: @@ -1487,19 +1405,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.2': - resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} - 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 - '@radix-ui/react-presence@1.1.4': resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} peerDependencies: @@ -1513,19 +1418,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.0.2': - resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} - 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 - '@radix-ui/react-primitive@2.1.0': resolution: {integrity: sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==} peerDependencies: @@ -1578,15 +1470,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slot@1.1.2': - resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-slot@1.2.0': resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} peerDependencies: @@ -1622,8 +1505,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.1.8': - resolution: {integrity: sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==} + '@radix-ui/react-tooltip@1.2.4': + resolution: {integrity: sha512-DyW8VVeeMSSLFvAmnVnCwvI3H+1tpJFHT50r+tdOoMse9XqYDBCcyux8u3G2y+LOpt7fPQ6KKH0mhs+ce1+Z5w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1635,15 +1518,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: @@ -1653,15 +1527,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-controllable-state@1.2.2': resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: @@ -1680,15 +1545,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-escape-keydown@1.1.1': resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: @@ -1698,15 +1554,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-layout-effect@1.1.1': resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: @@ -1725,15 +1572,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-rect@1.1.1': resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: @@ -1743,15 +1581,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-size@1.1.1': resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: @@ -1761,19 +1590,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-visually-hidden@1.1.2': - resolution: {integrity: sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==} - 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 - '@radix-ui/react-visually-hidden@1.2.0': resolution: {integrity: sha512-rQj0aAWOpCdCMRbI6pLQm8r7S2BM3YhTa0SzOYD55k+hJA8oo9J+H+9wLM9oMlZWOX/wJWPTzfDfmZkf7LvCfg==} peerDependencies: @@ -1787,9 +1603,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} @@ -7340,18 +7153,8 @@ snapshots: '@radix-ui/number@1.1.1': {} - '@radix-ui/primitive@1.1.1': {} - '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-arrow@1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-arrow@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7371,24 +7174,12 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-compose-refs@1.1.1(@types/react@19.1.2)(react@19.1.0)': - dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.2)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-context@1.1.1(@types/react@19.1.2)(react@19.1.0)': - dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-context@1.1.2(@types/react@19.1.2)(react@19.1.0)': dependencies: react: 19.1.0 @@ -7422,18 +7213,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-dismissable-layer@1.1.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-dismissable-layer@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 @@ -7476,13 +7255,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-id@1.1.0(@types/react@19.1.2)(react@19.1.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-id@1.1.1(@types/react@19.1.2)(react@19.1.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) @@ -7523,23 +7295,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-popper@1.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/rect': 1.1.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-popper@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7557,15 +7312,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-portal@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-portal@1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7575,15 +7321,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-presence@1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-presence@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) @@ -7593,14 +7330,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-primitive@2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-slot': 1.1.2(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-primitive@2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) @@ -7661,13 +7390,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-slot@1.1.2(@types/react@19.1.2)(react@19.1.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-slot@1.2.0(@types/react@19.1.2)(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) @@ -7709,28 +7431,22 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-tooltip@1.1.8(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-tooltip@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 @@ -7740,13 +7456,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.1.2)(react@19.1.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.2)(react@19.1.0)': dependencies: '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.2)(react@19.1.0) @@ -7762,13 +7471,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.1.2)(react@19.1.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.2)(react@19.1.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) @@ -7776,12 +7478,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.1.2)(react@19.1.0)': - dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.2)(react@19.1.0)': dependencies: react: 19.1.0 @@ -7794,13 +7490,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-use-rect@1.1.0(@types/react@19.1.2)(react@19.1.0)': - dependencies: - '@radix-ui/rect': 1.1.0 - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.2)(react@19.1.0)': dependencies: '@radix-ui/rect': 1.1.1 @@ -7808,13 +7497,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-use-size@1.1.0(@types/react@19.1.2)(react@19.1.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.2)(react@19.1.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) @@ -7822,14 +7504,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-visually-hidden@1.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-visually-hidden@1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7838,8 +7512,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/rect@1.1.0': {} - '@radix-ui/rect@1.1.1': {} '@reporters/github@1.7.2': From cf913680d4765d8453d741383736bb207fdb1110 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 16:07:10 +0000 Subject: [PATCH 0451/1385] meta: bump @tailwindcss/postcss from 4.0.17 to 4.1.5 (#7698) Bumps [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) from 4.0.17 to 4.1.5. - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.5/packages/@tailwindcss-postcss) --- updated-dependencies: - dependency-name: "@tailwindcss/postcss" dependency-version: 4.1.5 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 147 ++++++++++++++++------------ 3 files changed, 86 insertions(+), 65 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 5e7848fafc7af..7adfd55528d71 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -38,7 +38,7 @@ "@radix-ui/react-tooltip": "^1.2.4", "@shikijs/core": "^3.2.2", "@shikijs/engine-javascript": "^3.2.2", - "@tailwindcss/postcss": "~4.0.17", + "@tailwindcss/postcss": "~4.1.5", "@types/node": "22.15.3", "@types/react": "^19.1.0", "@vcarl/remark-headings": "~0.1.0", diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 53409a3c0273b..ee7a168c79620 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -42,7 +42,7 @@ "@radix-ui/react-tabs": "~1.1.3", "@radix-ui/react-toast": "~1.2.6", "@radix-ui/react-tooltip": "~1.2.4", - "@tailwindcss/postcss": "~4.0.17", + "@tailwindcss/postcss": "~4.1.5", "@vcarl/remark-headings": "~0.1.0", "classnames": "~2.5.1", "postcss-calc": "^10.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8437fae496fbb..e952dd34388e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -100,8 +100,8 @@ importers: specifier: ^3.2.2 version: 3.3.0 '@tailwindcss/postcss': - specifier: ~4.0.17 - version: 4.0.17 + specifier: ~4.1.5 + version: 4.1.5 '@types/node': specifier: 22.15.3 version: 22.15.3 @@ -347,8 +347,8 @@ importers: specifier: ~1.2.4 version: 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tailwindcss/postcss': - specifier: ~4.0.17 - version: 4.0.17 + specifier: ~4.1.5 + version: 4.1.5 '@vcarl/remark-headings': specifier: ~0.1.0 version: 0.1.0 @@ -1906,81 +1906,93 @@ packages: '@swc/types@0.1.21': resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} - '@tailwindcss/node@4.0.17': - resolution: {integrity: sha512-LIdNwcqyY7578VpofXyqjH6f+3fP4nrz7FBLki5HpzqjYfXdF2m/eW18ZfoKePtDGg90Bvvfpov9d2gy5XVCbg==} + '@tailwindcss/node@4.1.5': + resolution: {integrity: sha512-CBhSWo0vLnWhXIvpD0qsPephiaUYfHUX3U9anwDaHZAeuGpTiB3XmsxPAN6qX7bFhipyGBqOa1QYQVVhkOUGxg==} - '@tailwindcss/oxide-android-arm64@4.0.17': - resolution: {integrity: sha512-3RfO0ZK64WAhop+EbHeyxGThyDr/fYhxPzDbEQjD2+v7ZhKTb2svTWy+KK+J1PHATus2/CQGAGp7pHY/8M8ugg==} + '@tailwindcss/oxide-android-arm64@4.1.5': + resolution: {integrity: sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.0.17': - resolution: {integrity: sha512-e1uayxFQCCDuzTk9s8q7MC5jFN42IY7nzcr5n0Mw/AcUHwD6JaBkXnATkD924ZsHyPDvddnusIEvkgLd2CiREg==} + '@tailwindcss/oxide-darwin-arm64@4.1.5': + resolution: {integrity: sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.0.17': - resolution: {integrity: sha512-d6z7HSdOKfXQ0HPlVx1jduUf/YtBuCCtEDIEFeBCzgRRtDsUuRtofPqxIVaSCUTOk5+OfRLonje6n9dF6AH8wQ==} + '@tailwindcss/oxide-darwin-x64@4.1.5': + resolution: {integrity: sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.0.17': - resolution: {integrity: sha512-EjrVa6lx3wzXz3l5MsdOGtYIsRjgs5Mru6lDv4RuiXpguWeOb3UzGJ7vw7PEzcFadKNvNslEQqoAABeMezprxQ==} + '@tailwindcss/oxide-freebsd-x64@4.1.5': + resolution: {integrity: sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.17': - resolution: {integrity: sha512-65zXfCOdi8wuaY0Ye6qMR5LAXokHYtrGvo9t/NmxvSZtCCitXV/gzJ/WP5ksXPhff1SV5rov0S+ZIZU+/4eyCQ==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5': + resolution: {integrity: sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.0.17': - resolution: {integrity: sha512-+aaq6hJ8ioTdbJV5IA1WjWgLmun4T7eYLTvJIToiXLHy5JzUERRbIZjAcjgK9qXMwnvuu7rqpxzej+hGoEcG5g==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.5': + resolution: {integrity: sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.0.17': - resolution: {integrity: sha512-/FhWgZCdUGAeYHYnZKekiOC0aXFiBIoNCA0bwzkICiMYS5Rtx2KxFfMUXQVnl4uZRblG5ypt5vpPhVaXgGk80w==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.5': + resolution: {integrity: sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.0.17': - resolution: {integrity: sha512-gELJzOHK6GDoIpm/539Golvk+QWZjxQcbkKq9eB2kzNkOvrP0xc5UPgO9bIMNt1M48mO8ZeNenCMGt6tfkvVBg==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.5': + resolution: {integrity: sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.0.17': - resolution: {integrity: sha512-68NwxcJrZn94IOW4TysMIbYv5AlM6So1luTlbYUDIGnKma1yTFGBRNEJ+SacJ3PZE2rgcTBNRHX1TB4EQ/XEHw==} + '@tailwindcss/oxide-linux-x64-musl@4.1.5': + resolution: {integrity: sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-win32-arm64-msvc@4.0.17': - resolution: {integrity: sha512-AkBO8efP2/7wkEXkNlXzRD4f/7WerqKHlc6PWb5v0jGbbm22DFBLbIM19IJQ3b+tNewQZa+WnPOaGm0SmwMNjw==} + '@tailwindcss/oxide-wasm32-wasi@4.1.5': + resolution: {integrity: sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.5': + resolution: {integrity: sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.0.17': - resolution: {integrity: sha512-7/DTEvXcoWlqX0dAlcN0zlmcEu9xSermuo7VNGX9tJ3nYMdo735SHvbrHDln1+LYfF6NhJ3hjbpbjkMOAGmkDg==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.5': + resolution: {integrity: sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.0.17': - resolution: {integrity: sha512-B4OaUIRD2uVrULpAD1Yksx2+wNarQr2rQh65nXqaqbLY1jCd8fO+3KLh/+TH4Hzh2NTHQvgxVbPdUDOtLk7vAw==} + '@tailwindcss/oxide@4.1.5': + resolution: {integrity: sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA==} engines: {node: '>= 10'} - '@tailwindcss/postcss@4.0.17': - resolution: {integrity: sha512-qeJbRTB5FMZXmuJF+eePd235EGY6IyJZF0Bh0YM6uMcCI4L9Z7dy+lPuLAhxOJzxnajsbjPoDAKOuAqZRtf1PQ==} + '@tailwindcss/postcss@4.1.5': + resolution: {integrity: sha512-5lAC2/pzuyfhsFgk6I58HcNy6vPK3dV/PoPxSDuOTVbDvCddYHzHiJZZInGIY0venvzzfrTEUAXJFULAfFmObg==} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} @@ -5843,6 +5855,9 @@ packages: tailwindcss@4.0.17: resolution: {integrity: sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==} + tailwindcss@4.1.5: + resolution: {integrity: sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -7909,67 +7924,71 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tailwindcss/node@4.0.17': + '@tailwindcss/node@4.1.5': dependencies: enhanced-resolve: 5.18.1 jiti: 2.4.2 - tailwindcss: 4.0.17 + lightningcss: 1.29.2 + tailwindcss: 4.1.5 + + '@tailwindcss/oxide-android-arm64@4.1.5': + optional: true - '@tailwindcss/oxide-android-arm64@4.0.17': + '@tailwindcss/oxide-darwin-arm64@4.1.5': optional: true - '@tailwindcss/oxide-darwin-arm64@4.0.17': + '@tailwindcss/oxide-darwin-x64@4.1.5': optional: true - '@tailwindcss/oxide-darwin-x64@4.0.17': + '@tailwindcss/oxide-freebsd-x64@4.1.5': optional: true - '@tailwindcss/oxide-freebsd-x64@4.0.17': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.17': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.5': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.0.17': + '@tailwindcss/oxide-linux-arm64-musl@4.1.5': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.0.17': + '@tailwindcss/oxide-linux-x64-gnu@4.1.5': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.0.17': + '@tailwindcss/oxide-linux-x64-musl@4.1.5': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.0.17': + '@tailwindcss/oxide-wasm32-wasi@4.1.5': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.0.17': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.5': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.0.17': + '@tailwindcss/oxide-win32-x64-msvc@4.1.5': optional: true - '@tailwindcss/oxide@4.0.17': + '@tailwindcss/oxide@4.1.5': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.0.17 - '@tailwindcss/oxide-darwin-arm64': 4.0.17 - '@tailwindcss/oxide-darwin-x64': 4.0.17 - '@tailwindcss/oxide-freebsd-x64': 4.0.17 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.17 - '@tailwindcss/oxide-linux-arm64-gnu': 4.0.17 - '@tailwindcss/oxide-linux-arm64-musl': 4.0.17 - '@tailwindcss/oxide-linux-x64-gnu': 4.0.17 - '@tailwindcss/oxide-linux-x64-musl': 4.0.17 - '@tailwindcss/oxide-win32-arm64-msvc': 4.0.17 - '@tailwindcss/oxide-win32-x64-msvc': 4.0.17 - - '@tailwindcss/postcss@4.0.17': + '@tailwindcss/oxide-android-arm64': 4.1.5 + '@tailwindcss/oxide-darwin-arm64': 4.1.5 + '@tailwindcss/oxide-darwin-x64': 4.1.5 + '@tailwindcss/oxide-freebsd-x64': 4.1.5 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.5 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.5 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.5 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.5 + '@tailwindcss/oxide-linux-x64-musl': 4.1.5 + '@tailwindcss/oxide-wasm32-wasi': 4.1.5 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.5 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.5 + + '@tailwindcss/postcss@4.1.5': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.0.17 - '@tailwindcss/oxide': 4.0.17 - lightningcss: 1.29.2 + '@tailwindcss/node': 4.1.5 + '@tailwindcss/oxide': 4.1.5 postcss: 8.5.3 - tailwindcss: 4.0.17 + tailwindcss: 4.1.5 '@testing-library/dom@10.4.0': dependencies: @@ -12902,6 +12921,8 @@ snapshots: tailwindcss@4.0.17: {} + tailwindcss@4.1.5: {} + tapable@2.2.1: {} terser-webpack-plugin@5.3.14(@swc/core@1.11.24)(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): From a17de0b191b77aa7d5563332d993a8edd43f011e Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 4 May 2025 12:09:56 -0400 Subject: [PATCH 0452/1385] chore(dependabot): improve dependency grouping (#7719) --- .github/dependabot.yml | 84 +++++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 33 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6a8c86d797a23..31709893a4a8e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,6 +9,7 @@ updates: commit-message: prefix: meta open-pull-requests-limit: 10 + - package-ecosystem: npm directory: '/' versioning-strategy: increase @@ -21,57 +22,74 @@ updates: groups: lint: patterns: - - '@typescript-eslint/*' - - 'eslint' - - 'typescript-eslint' - - 'eslint-*' - '@eslint/*' - - 'stylelint' - - 'stylelint-*' + - '@typescript-eslint/*' + - acorn + - eslint + - eslint-* + - lint-staged + - prettier + - prettier-* + - stylelint + - stylelint-* + - typescript-eslint + - unified exclude-patterns: - 'eslint-plugin-storybook' - storybook: - patterns: - - 'storybook' - - '@storybook/*' - - 'eslint-plugin-storybook' - testing: - patterns: - - '@testing-library/*' - - '@types/testing-library*' - - 'tsx' - - '@reporters/github' - - 'jsdom' - - 'global-jsdom' - next-js: - patterns: - - 'next' - - '@next/eslint-plugin-next' - - 'next-*' - - '@vercel/*' + - 'prettier-plugin-tailwindcss' mdx: patterns: - '@vcarl/remark-headings' + - '@shikijs/*' - '@mdx-js/*' - - 'rehype-*' - - 'remark-*' + - hast-util-* + - rehype-* + - remark-* + - shiki + - sval + - unist-util-* + - vfile + - vfile-* + - reading-time + orama: + patterns: + - '@orama/*' + - '@oramacloud/*' + radix: + patterns: + - '@radix-ui/*' react: patterns: - 'react' - 'react-dom' - '@types/react' - tailwind: + storybook: + patterns: + - 'storybook' + - '@storybook/*' + - 'eslint-plugin-storybook' + styling: patterns: - '@savvywombat/tailwindcss-grid-areas' - - '@tailwindcss/container-queries' + - '@tailwindcss/*' - 'prettier-plugin-tailwindcss' - 'tailwindcss' - orama: + testing: patterns: - - '@orama/*' - - '@oramacloud/*' + - '@testing-library/*' + - '@reporters/*' + - global-jsdom + - jsdom + - tsx + vercel: + patterns: + - '@next/*' + - '@opentelemetry/*' + - '@vercel/*' + - next + - next-* + - turbo ignore: - # Manually update major versions of @types/node with the version specified within .nvmrc - dependency-name: '@types/node' update-types: ['version-update:semver-major'] open-pull-requests-limit: 10 From f1022c29d3568f555bb02d26c0cf0e24a8c58de3 Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Sun, 4 May 2025 19:09:29 +0200 Subject: [PATCH 0453/1385] [automated]: crowdin sync (#7710) * chore: synced translations from crowdin * format --------- Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: avivkeller <me@aviv.sh> --- apps/site/pages/ja/download/current.mdx | 4 +- apps/site/pages/ja/download/index.mdx | 4 +- .../pages/ro/download/package-manager/all.md | 2 +- .../site/pages/uk/about/get-involved/index.md | 2 +- apps/site/pages/uk/index.mdx | 4 +- apps/site/pages/zh-tw/about/index.mdx | 41 ++++++++++++++++++- .../pages/zh-tw/about/previous-releases.mdx | 33 +++++++++++---- apps/site/pages/zh-tw/download/current.mdx | 4 +- apps/site/pages/zh-tw/download/index.mdx | 6 +-- apps/site/snippets/fr/download/nvm.bash | 2 +- apps/site/snippets/ja/download/nvm.bash | 2 +- apps/site/snippets/uk/download/nvm.bash | 2 +- apps/site/snippets/zh-tw/download/n.bash | 8 ++++ apps/site/snippets/zh-tw/download/nvm.bash | 11 +++-- packages/i18n/locales/fr.json | 27 +++++++++++- packages/i18n/locales/ja.json | 31 ++++++++++++-- 16 files changed, 148 insertions(+), 35 deletions(-) create mode 100644 apps/site/snippets/zh-tw/download/n.bash diff --git a/apps/site/pages/ja/download/current.mdx b/apps/site/pages/ja/download/current.mdx index 2dcbd1693702c..8a1dff2596315 100644 --- a/apps/site/pages/ja/download/current.mdx +++ b/apps/site/pages/ja/download/current.mdx @@ -17,9 +17,9 @@ title: Node.js®をダウンロードする </section> <section> - このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 + このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>や<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>を確認できます。 -このバージョンの<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>を確認できます。 +リリーススケジュールやLTSに関する詳しい内容は[Node.jsのリリース](/ja/about/previous-releases)を確認してください。 署名済みSHASUMSの<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">検証方法</LinkWithArrow>について詳しくはこちら。 diff --git a/apps/site/pages/ja/download/index.mdx b/apps/site/pages/ja/download/index.mdx index 2dcbd1693702c..8a1dff2596315 100644 --- a/apps/site/pages/ja/download/index.mdx +++ b/apps/site/pages/ja/download/index.mdx @@ -17,9 +17,9 @@ title: Node.js®をダウンロードする </section> <section> - このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>を確認できます。 + このバージョンの<Release.ChangelogLink>変更点</Release.ChangelogLink>や<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>を確認できます。 -このバージョンの<Release.BlogPostLink>ブログ記事</Release.BlogPostLink>を確認できます。 +リリーススケジュールやLTSに関する詳しい内容は[Node.jsのリリース](/ja/about/previous-releases)を確認してください。 署名済みSHASUMSの<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">検証方法</LinkWithArrow>について詳しくはこちら。 diff --git a/apps/site/pages/ro/download/package-manager/all.md b/apps/site/pages/ro/download/package-manager/all.md index a6c4c599762c6..e00184acf6238 100644 --- a/apps/site/pages/ro/download/package-manager/all.md +++ b/apps/site/pages/ro/download/package-manager/all.md @@ -236,7 +236,7 @@ nvm uninstall 8 Managerul de versiuni „nvs” este multiplatformă și poate fi utilizat pe sisteme Windows, macOS și Unix -Pentru a instala `nvs` pe Windows, accesați [pagina de lansare](https://github.com/jasongin/nvs/releases) aici și descărcați fișierul de instalare MSI al celei mai recente ediții. +Pentru a instala `nvs` pe Windows, accesează aici [pagina de lansare](https://github.com/jasongin/nvs/releases) și descarcă fișierul de instalare MSI al celei mai recente lansări. De asemenea, puteți folosi `chocolatey` pentru a-l instala: diff --git a/apps/site/pages/uk/about/get-involved/index.md b/apps/site/pages/uk/about/get-involved/index.md index 02d6f8350a887..8ab43f85a96a1 100644 --- a/apps/site/pages/uk/about/get-involved/index.md +++ b/apps/site/pages/uk/about/get-involved/index.md @@ -11,7 +11,7 @@ layout: about - [Репозиторій GitHub `nodejs/node`](https://github.com/nodejs/node/issues) — це місце для обговорення основного функціонала Node.js та повідомлення про проблеми. - Репозиторій GitHub [`nodejs/help`](https://github.com/nodejs/help/issues) — це офіційне місце, де можна запитувати про Node.js. -- [Офіційний Discord-сервер Node.js](/discord) — це місце для спілкування з іншими розробниками Node.js та отримання офіційних новин проєкту Node.js. +- [Офіційний Discord‑сервер Node.js](/discord) — це місце для спілкування з іншими розробниками Node.js та отримання офіційних новин проєкту Node.js. - [Календар проєкту](https://nodejs.org/calendar) Node.js з усіма публічними командними зустрічами. ## Навчальні матеріали diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx index 937fe4a2709e1..e7f678d14918c 100644 --- a/apps/site/pages/uk/index.mdx +++ b/apps/site/pages/uk/index.mdx @@ -1,5 +1,5 @@ --- -title: Запускайте JavaScript будь-де +title: Запускайте JavaScript будь‑де layout: home --- @@ -7,7 +7,7 @@ layout: home <WithBadgeGroup section="index" /> <div> - <h1 className="special">Запускайте JavaScript будь-де</h1> + <h1 className="special">Запускайте JavaScript будь‑де</h1> Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти. diff --git a/apps/site/pages/zh-tw/about/index.mdx b/apps/site/pages/zh-tw/about/index.mdx index 2be4e46c3c1bd..f6eff0e302577 100644 --- a/apps/site/pages/zh-tw/about/index.mdx +++ b/apps/site/pages/zh-tw/about/index.mdx @@ -43,7 +43,7 @@ server.listen(port, hostname, () => { 這與目前更常見的作業系統多執行緒並行模型形成鮮明對比。執行緒導向的網路效率相對較低且難以使用。此外,Node.js 的使用者也不必擔心死鎖 (deadlock) 問題,因為系統中並沒有上鎖機制。Node.js 中幾乎沒有直接執行 I/O 的函式,所以除了使用 Node.js 標準函式庫的同步方法進行 I/O 外,不會阻塞行程。少了阻塞使得在 Node.js 中開發可擴展的系統變得非常容易。 -如果您不熟悉這些術語,可以參考這篇完整的文章[〈阻塞與非阻塞概述〉](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking)。 +如果您不熟悉這些術語,可以參考這篇完整的文章[〈阻塞與非阻塞概述(EN)〉](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking)。 --- @@ -52,3 +52,42 @@ Node.js 在設計上類似於 Ruby 的 [Event Machine](https://github.com/eventm HTTP 是 Node.js 中的一等公民,在設計時就考慮到了串流處理和低延遲。這使得 Node.js 非常適合作為 web 函式庫或框架的基礎。 雖然 Node.js 的設計中沒有執行緒,但這並不代表其無法善用多核心環境。透過我們的 [`child_process.fork()`](https://nodejs.org/api/child_process.html) API 可以產生能便利互相溝通的子行程。基於相同介面的 [`cluster`](https://nodejs.org/api/cluster.html) 模組則可讓您在程序間共享 socket,以達成多核心負載平衡。 + +## 官方 Node.js 資源 + +為確保您使用真正且安全的 Node.js,請總是使用官方來源。不要信任來自非官方來源的信件、二進位檔、下載連結。 + +### 官方 Node.js 網域 + +於下載 Node.js 二進位檔或存取官方文件時,請只使用下列網域: + +- [nodejs.org](https://nodejs.org) +- [nodejs.dev](https://nodejs.dev)_(重新導向至 https://nodejs.org)_ +- [iojs.org](https://iojs.org)_(重新導向至 https://nodejs.org)_ + +### 官方 npm 套件 + +Node.js 團隊維護下列的官方 npm 套件範圍: + +- [`@node-core`](https://npmjs.com/~node-core) +- [`@pkgjs`](https://npmjs.com/~pkgjs) + +此外,Node.js 團隊維護由 [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation) npm 帳號發布的套件,而其他 Node.js 相關的套件(如: [`undici`](https://www.npmjs.com/package/undici))可能由與本專案關係密切的貢獻者維護。 + +使用來自 Node.js 團隊的套件,可確保您使用的是官方支援的 Node.js 元件。 + +### 官方 GitHub 組織 + +Node.js 及相關專案是由這些官方 GitHub 組織維護: + +- [nodejs](https://github.com/nodejs) +- [pkgjs](https://github.com/pkgjs) + +### 官方交流管道 + +Node.js 及 OpenJS 基金會會使用數種官方及社群支援的交流管道。您可以在 [加入我們(EN)](https://nodejs.org/en/about/get-involved) 頁面了解詳情。 + +### 回報網站問題及下線 + +如果您遇到 Node.js 網站的問題,請在[Node.js 網站儲存庫](https://github.com/nodejs/nodejs.org/issues)回報問題。 +關於網站下線狀況的即時更新,請造訪 [Node.js 狀態頁面](https://status.nodejs.org)。 diff --git a/apps/site/pages/zh-tw/about/previous-releases.mdx b/apps/site/pages/zh-tw/about/previous-releases.mdx index d4b8d5fcc3a54..d223786edcb90 100644 --- a/apps/site/pages/zh-tw/about/previous-releases.mdx +++ b/apps/site/pages/zh-tw/about/previous-releases.mdx @@ -21,15 +21,30 @@ Node.js 的主要版本在釋出後六個月內皆處於最新 (Current) 狀態 <DownloadReleasesTable /> -## 官方與社群之比較 +## 比較官方及社群提供的安裝方法 -本網站提供多種安裝方法,讓您可透過非互動方式來安裝 Node.js,例如透過 CLI、作業系統套件管理程式(如:`apt`)或 Node.js 版本管理程式(如:`nvm`)。 +Node.js 網站提供數種免介入的安裝方法,包括命令列介面 (CLIs)、作業系統的套件管理程式(如:`brew`)及 Node.js 版本管理程式(如:`nvm`)。 -Node.js 專案基於推廣及宣傳社群成果的目的,推出新版的下載頁面,包含官方及社群的安裝方法並提供使用者更多樣的選項。隨著這項改變,我們引入了「官方」及「社群」安裝方法的概念。一項「官方」安裝方法需滿足下列所有條件: +為強調並促進社群貢獻,Node.js 專案引入了改版的下載頁面,將安裝方法分為「官方」及「社群」以提供使用者更多彈性及選擇。為區分清楚,我們定義了各類別的條件。 -| 條件 | -| ----------------------------------------------------------------------------------- | -| 必須與官方同時釋出新版 Node.js | -| 專案維護者與 Node.js 保持密切聯繫,例如可直接溝通 | -| 安裝方式需下載 Node.js 專案打包的官方二進位檔 | -| 安裝方法**不會**在 Node.js 已提供的官方二進位檔時自行編譯原始碼,或修改官方二進位檔 | +### 官方安裝方法 + +指定為「官方」的安裝方法需滿足下列條件: + +| 條件(官方安裝方法) | +| :--------------------------------------------------------------------------------- | +| 必須與官方同時釋出新版 Node.js | +| 專案維護者與 Node.js 保持密切聯繫,例如有直接的溝通管道 | +| 該安裝方法需下載由 Node.js 專案打包的官方二進位檔 | +| 該安裝方法不可在有預先建置的二進位檔時,仍自行編譯原始碼,也不可修改官方的二進位檔 | + +### 社群提供的安裝方法 + +下載頁面 (/download) 列出的社群安裝方法,也必須遵守下列的最低條件: + +- **版本支援**: 須支援所有仍受到支援、未結束生命週期 (EOL) 的 Node.js 版本 +- **作業系統相容性**:須可運作於至少一種官方支援的作業系統 +- **廣泛作業系統支援**:不可侷限於一部分作業系統發行版或版本 + - 例如,一項宣稱相容「Windows」的安裝方法,須可運作於包含伺服器版在內所有「Windows 10」、「Windows 11」版本 (edition) + - 類似地,一項宣稱相容「Linux」的安裝方法,須可安裝於所有主要的 Linux 發行版,而非限於其中一部分。該安裝方法不可依賴特定發行版的套件管理程式,如 `apt` 或 `dnf` +- **自由且開放源碼**:須可自由使用並開放原始碼,不可被作為商業產品販售,且不可為付費使用的服務 diff --git a/apps/site/pages/zh-tw/download/current.mdx b/apps/site/pages/zh-tw/download/current.mdx index 139e605e0cb94..61306a4665a40 100644 --- a/apps/site/pages/zh-tw/download/current.mdx +++ b/apps/site/pages/zh-tw/download/current.mdx @@ -17,9 +17,9 @@ title: 下載 Node.js® </section> <section> - 閱讀此版本的<Release.ChangelogLink>更新備註</Release.ChangelogLink>。 + 閱讀此版本的 <Release.ChangelogLink>版本紀錄</Release.ChangelogLink>或<Release.BlogPostLink>部落格貼文</Release.BlogPostLink>。 -閱讀此版本的<Release.BlogPostLink>部落格文章</Release.BlogPostLink>。 +了解更多有關 [Node.js 版本](/about/previous-releases) 的資訊,包含發行時程表及長期支援版本的狀態。 瞭解如何<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">驗證已簽署的 SHASUMS</LinkWithArrow>。 diff --git a/apps/site/pages/zh-tw/download/index.mdx b/apps/site/pages/zh-tw/download/index.mdx index 139e605e0cb94..6809851847312 100644 --- a/apps/site/pages/zh-tw/download/index.mdx +++ b/apps/site/pages/zh-tw/download/index.mdx @@ -17,11 +17,11 @@ title: 下載 Node.js® </section> <section> - 閱讀此版本的<Release.ChangelogLink>更新備註</Release.ChangelogLink>。 + 閱讀此版本的 <Release.ChangelogLink>版本紀錄</Release.ChangelogLink>或<Release.BlogPostLink>部落格貼文</Release.BlogPostLink>。 -閱讀此版本的<Release.BlogPostLink>部落格文章</Release.BlogPostLink>。 +了解更多有關 [Node.js 版本](/about/previous-releases) 的資訊,包含發行時程表及長期支援版本的狀態。 -瞭解如何<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">驗證已簽署的 SHASUMS</LinkWithArrow>。 +了解如何<LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">驗證已簽署的 SHASUMS</LinkWithArrow>。 在尋找 Node.js 原始碼?下載經簽署的 <Release.DownloadLink kind="source">Node.js 原始碼 tarball</Release.DownloadLink>。 diff --git a/apps/site/snippets/fr/download/nvm.bash b/apps/site/snippets/fr/download/nvm.bash index ec3eae4aabad2..092d6ff46e05f 100644 --- a/apps/site/snippets/fr/download/nvm.bash +++ b/apps/site/snippets/fr/download/nvm.bash @@ -1,5 +1,5 @@ # Télécharger et installer nvm : -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash # au lieu de redémarrer le shell \. "$HOME/.nvm/nvm.sh" diff --git a/apps/site/snippets/ja/download/nvm.bash b/apps/site/snippets/ja/download/nvm.bash index 4fe9d37ea72dd..598c71a08b159 100644 --- a/apps/site/snippets/ja/download/nvm.bash +++ b/apps/site/snippets/ja/download/nvm.bash @@ -1,5 +1,5 @@ # nvmをダウンロードしてインストールする: -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash # シェルを再起動する代わりに実行する \. "$HOME/.nvm/nvm.sh" diff --git a/apps/site/snippets/uk/download/nvm.bash b/apps/site/snippets/uk/download/nvm.bash index 07545f1cca90b..96d67c38ed4b5 100644 --- a/apps/site/snippets/uk/download/nvm.bash +++ b/apps/site/snippets/uk/download/nvm.bash @@ -1,5 +1,5 @@ # Завантажує й установлює nvm: -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash # Замість перезапуску оболонки можна виконати: \. "$HOME/.nvm/nvm.sh" diff --git a/apps/site/snippets/zh-tw/download/n.bash b/apps/site/snippets/zh-tw/download/n.bash new file mode 100644 index 0000000000000..fb23614cdd602 --- /dev/null +++ b/apps/site/snippets/zh-tw/download/n.bash @@ -0,0 +1,8 @@ +# 下載並安裝 n 及 Node.js: +curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s ${props.release.major} + +# n-install 執行時已安裝 Node.js,但您還是可以手動安裝: +# n install ${props.release.major} + +# 核對 Node.js 版本: +node -v # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/apps/site/snippets/zh-tw/download/nvm.bash b/apps/site/snippets/zh-tw/download/nvm.bash index 71d4c882a57e0..df3685f3f6ddd 100644 --- a/apps/site/snippets/zh-tw/download/nvm.bash +++ b/apps/site/snippets/zh-tw/download/nvm.bash @@ -1,9 +1,12 @@ -# 下載並安裝 nvm: -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +# 下載並安裝 nvm: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash -# 下載並安裝 Node.js: +# 不想重新啟動 shell 時,執行: +\. "$HOME/.nvm/nvm.sh" + +# 下載並安裝 Node.js: nvm install ${props.release.major} -# 核對 Node.js 版本: +# 核對 Node.js 版本: node -v # 應會印出 "${props.release.versionWithPrefix}"。 nvm current # 應會印出 "${props.release.versionWithPrefix}"。 diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index 26d75b9487c39..24935c15e22d1 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -149,15 +149,38 @@ "downloadReleasesTable": { "version": "Node.js", "nApiVersion": "N-API", - "npmVersion": "npm", "codename": "Nom de code", "releaseDate": "Publié le", + "firstReleased": "Première publication", + "lastUpdated": "Dernière mise à jour", + "status": "Statut", + "details": "Détails" + }, + "releaseModal": { + "title": "Node.js {version} ({codename})", + "titleWithoutCodename": "Node.js {version}", + "overview": "Vue d'ensemble", + "minorVersions": "Versions mineures", + "releaseAnnouncement": "Annonce de publication", + "unsupportedVersionWarning": "Cette version ne fait plus l'objet d'une maintenance. Veuillez utiliser une version actuellement supportée. Comprendre l'accompagnement de fin de vie." + }, + "minorReleasesTable": { + "version": "Version", + "links": "Liens", "actions": { + "release": "Release", "changelog": "Journal de modifications", - "releases": "Versions", "docs": "Documents" } }, + "releaseOverview": { + "firstReleased": "Première publication", + "lastUpdated": "Dernière mise à jour", + "minorVersions": "Versions mineures", + "nApiVersion": "Version N-API", + "npmVersion": "npm version", + "v8Version": "V8 version" + }, "pagination": { "next": "Suivant", "previous": "Précédent" diff --git a/packages/i18n/locales/ja.json b/packages/i18n/locales/ja.json index 93431ff7009a1..4e2d528fba27c 100644 --- a/packages/i18n/locales/ja.json +++ b/packages/i18n/locales/ja.json @@ -15,7 +15,7 @@ "toggle": "メニューを切り替える" }, "links": { - "about": "About", + "about": "はじめに", "download": "ダウンロード", "docs": "ドキュメント", "guides": "ガイド", @@ -61,6 +61,7 @@ "links": { "asynchronousWork": "非同期処理", "asynchronousFlowControl": "非同期のフロー制御", + "discoverPromisesInNodejs": "Node.jsでプロミスを知る", "overviewOfBlockingVsNonBlocking": "ブロッキングとノンブロッキングの概要", "javascriptAsynchronousProgrammingAndCallbacks": "JavaScriptの非同期プログラミングとコールバック", "discoverJavascriptTimers": "JavaScriptのタイマー処理について", @@ -108,6 +109,7 @@ "links": { "diagnostics": "診断", "userJourney": "ユーザージャーニー", + "understandingAndTuningMemory": "メモリーのチューニングの理解", "memory": "メモリー", "liveDebugging": "ライブデバッグ", "poorPerformance": "パフォーマンスの低下", @@ -147,15 +149,38 @@ "downloadReleasesTable": { "version": "Node.js", "nApiVersion": "N-API", - "npmVersion": "npm", "codename": "コードネーム", "releaseDate": "でリリース済み", + "firstReleased": "最初のリリース", + "lastUpdated": "最終更新日", + "status": "ステータス", + "details": "詳細" + }, + "releaseModal": { + "title": "Node.js {version} ({codename})", + "titleWithoutCodename": "Node.js {version}", + "overview": "概要", + "minorVersions": "マイナーバージョン", + "releaseAnnouncement": "リリース", + "unsupportedVersionWarning": "このバージョンのメンテナンスは終了しています。現在サポートされているバージョンを利用してください。" + }, + "minorReleasesTable": { + "version": "バージョン", + "links": "リンク", "actions": { + "release": "リリース", "changelog": "変更履歴", - "releases": "リリース", "docs": "ドキュメント" } }, + "releaseOverview": { + "firstReleased": "最初のリリース", + "lastUpdated": "最終更新日", + "minorVersions": "マイナーバージョン", + "nApiVersion": "N-APIのバージョン", + "npmVersion": "npmのバージョン", + "v8Version": "V8のバージョン" + }, "pagination": { "next": "次へ", "previous": "前へ" From b551775b7ba54fb08ae307f5af0553fb861040ac Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 4 May 2025 19:33:16 -0400 Subject: [PATCH 0454/1385] fix(chromatic): run if a user adds the label to a Dependabot PR (#7722) * fix(chromatic): run if a user adds the label to a Dependabot PR Signed-off-by: Aviv Keller <me@aviv.sh> * fixup! Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/chromatic.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 3fc06df5dce6b..cd9ae12686231 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -31,12 +31,11 @@ jobs: chromatic: # We only need to run Storybook Builds and Storybook Visual Regression Tests within Pull Requests that actually # introduce changes to the Storybook. Hence, we skip running these on Crowdin PRs and Dependabot PRs - # sha reference has no stable git tag reference or URL. see https://github.com/chromaui/chromatic-cli/issues/797 if: | github.event_name != 'pull_request_target' || ( github.event.label.name == 'github_actions:pull-request' && - startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && + github.actor != 'dependabot[bot]' && github.event.pull_request.head.ref != 'chore/crowdin' ) From a5142e481ef98ff10fd18a6b49ca0e106a95037b Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Tue, 6 May 2025 11:39:43 -0300 Subject: [PATCH 0455/1385] Blog: v24.0.0 release post (#7727) Refs: https://github.com/nodejs/node/pull/57609 --- apps/site/pages/en/blog/release/v24.0.0.md | 490 +++++++++++++++++++++ 1 file changed, 490 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v24.0.0.md diff --git a/apps/site/pages/en/blog/release/v24.0.0.md b/apps/site/pages/en/blog/release/v24.0.0.md new file mode 100644 index 0000000000000..e17474ab83ea9 --- /dev/null +++ b/apps/site/pages/en/blog/release/v24.0.0.md @@ -0,0 +1,490 @@ +--- +date: '2025-05-06T14:31:35.851Z' +category: release +title: Node v24.0.0 (Current) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-05-06, Version 24.0.0 (Current), @RafaelGSS and @juanarbol + +We’re excited to announce the release of Node.js 24! This release brings +several significant updates, including the upgrade of the V8 JavaScript +engine to version 13.6 and npm to version 11. Starting with +Node.js 24, support for MSVC has been removed, and ClangCL is now required +to compile Node.js on Windows. The `AsyncLocalStorage` API now uses +`AsyncContextFrame` by default, and `URLPattern` is available globally. +These changes, along with many other improvements, continue to push the +platform forward. + +As a reminder, Node.js 24 will enter long-term support (LTS) in October, +but until then, it will be the "Current" release for the next six months. +We encourage you to explore the new features and benefits offered by this +latest release and evaluate their potential impact on your applications. + +## Notable Changes + +### V8 13.6 + +The V8 engine is updated to version 13.6, which includes several new +JavaScript features: + +- [`Float16Array`](https://chromestatus.com/feature/5164400693215232) +- [Explicit resource management](https://tc39.es/proposal-explicit-resource-management/) +- [`RegExp.escape`](https://github.com/tc39/proposal-regex-escaping) +- [WebAssembly Memory64](https://github.com/WebAssembly/memory64) +- [`Error.isError`](https://github.com/tc39/proposal-is-error) + +The V8 update was a contribution by Michaël Zasso in [#58070](https://github.com/nodejs/node/pull/58070). + +### npm 11 + +Node.js 24 comes with npm 11, which includes several improvements and new +features. This update brings enhanced performance, improved security features, +and better compatibility with modern JavaScript packages. + +The npm update was a contribution by the npm team in [#56274](https://github.com/nodejs/node/pull/56274). + +### `AsyncLocalStorage` defaults to `AsyncContextFrame` + +`AsyncLocalStorage` now uses `AsyncContextFrame` by default, which provides a +more efficient implementation of asynchronous context tracking. +This change improves performance and makes the API more robust for advanced +use cases. + +This change was a contribution by Stephen Belanger in [#55552](https://github.com/nodejs/node/pull/55552). + +### `URLPattern` as a global + +The [`URLPattern`](https://developer.mozilla.org/en-US/docs/Web/API/URLPattern) +API is now exposed on the global object, making it easier to use without +explicit imports. This API provides a powerful pattern matching system for URLs, +similar to how regular expressions work for strings. + +This feature was a contribution by Jonas Badalič in [#56950](https://github.com/nodejs/node/pull/56950). + +### Permission Model Improvements + +The experimental Permission Model introduced in Node.js 20 has been improved, +and the flag has been changed from `--experimental-permission` to simply +`--permission`, indicating its increasing stability and readiness for broader +adoption. + +This change was a contribution by Rafael Gonzaga in [#56240](https://github.com/nodejs/node/pull/56240). + +### Test Runner Enhancements + +The test runner module now automatically waits for subtests to finish, +eliminating the need to manually await test promises. This makes writing tests +more intuitive and reduces common errors related to unhandled promises. + +The test runner improvements were contributions by Colin Ihrig in [#56664](https://github.com/nodejs/node/pull/56664). + +### Undici 7 + +Node.js 24 includes Undici 7, which brings numerous improvements to the +HTTP client capabilities, including better performance and support for newer +HTTP features. + +### Deprecations and Removals + +Several APIs have been deprecated or removed in this release: + +- Runtime deprecation of `url.parse()` - use the WHATWG URL API instead ([#55017](https://github.com/nodejs/node/pull/55017)) +- Removal of deprecated `tls.createSecurePair` ([#57361](https://github.com/nodejs/node/pull/57361)) +- Runtime deprecation of `SlowBuffer` ([#55175](https://github.com/nodejs/node/pull/55175)) +- Runtime deprecation of instantiating REPL without new ([#54869](https://github.com/nodejs/node/pull/54869)) +- Deprecation of using Zlib classes without `new` ([#55718](https://github.com/nodejs/node/pull/55718)) +- Deprecation of passing `args` to `spawn` and `execFile` in child_process ([#57199](https://github.com/nodejs/node/pull/57199)) + +### Semver-Major Commits + +- \[[`c6b934380a`](https://github.com/nodejs/node/commit/c6b934380a)] - **(SEMVER-MAJOR)** **src**: enable `Float16Array` on global object (Michaël Zasso) [#58154](https://github.com/nodejs/node/pull/58154) +- \[[`69efb81a73`](https://github.com/nodejs/node/commit/69efb81a73)] - **(SEMVER-MAJOR)** **src**: enable explicit resource management (Michaël Zasso) [#58154](https://github.com/nodejs/node/pull/58154) +- \[[`b00ff4270e`](https://github.com/nodejs/node/commit/b00ff4270e)] - **(SEMVER-MAJOR)** **src,test**: unregister the isolate after disposal and before freeing (Joyee Cheung) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`b81697d860`](https://github.com/nodejs/node/commit/b81697d860)] - **(SEMVER-MAJOR)** **src**: use non-deprecated WriteUtf8V2() method (Yagiz Nizipli) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`1f06169b87`](https://github.com/nodejs/node/commit/1f06169b87)] - **(SEMVER-MAJOR)** **src**: use non-deprecated Utf8LengthV2() method (Yagiz Nizipli) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`eae9a296f0`](https://github.com/nodejs/node/commit/eae9a296f0)] - **(SEMVER-MAJOR)** **src**: use V8-owned CppHeap (Joyee Cheung) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`087c254a11`](https://github.com/nodejs/node/commit/087c254a11)] - **(SEMVER-MAJOR)** **test**: fix test-fs-write for V8 13.6 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`9e49bedd8e`](https://github.com/nodejs/node/commit/9e49bedd8e)] - **(SEMVER-MAJOR)** **build**: update list of installed cppgc headers (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`93cca8a43e`](https://github.com/nodejs/node/commit/93cca8a43e)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 13.6 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`347daa07be`](https://github.com/nodejs/node/commit/347daa07be)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 13.5 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`2a35d5a86c`](https://github.com/nodejs/node/commit/2a35d5a86c)] - **(SEMVER-MAJOR)** **build**: fix V8 TLS config for shared lib builds (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`b0fb5a09cf`](https://github.com/nodejs/node/commit/b0fb5a09cf)] - **(SEMVER-MAJOR)** **build**: pass `-fPIC` to linker as well for shared builds (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`dd4c5d6c73`](https://github.com/nodejs/node/commit/dd4c5d6c73)] - **(SEMVER-MAJOR)** **src,test**: add V8 API to test the hash seed (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`1d5d7b6eed`](https://github.com/nodejs/node/commit/1d5d7b6eed)] - **(SEMVER-MAJOR)** **src**: use `v8::ExternalMemoryAccounter` (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`3779e43cce`](https://github.com/nodejs/node/commit/3779e43cce)] - **(SEMVER-MAJOR)** **tools**: update license-builder and LICENSE for V8 deps (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`82c2255206`](https://github.com/nodejs/node/commit/82c2255206)] - **(SEMVER-MAJOR)** **deps**: remove deps/simdutf (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`8a258eb7b1`](https://github.com/nodejs/node/commit/8a258eb7b1)] - **(SEMVER-MAJOR)** **test**: handle explicit resource management globals (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`9e0d9b6024`](https://github.com/nodejs/node/commit/9e0d9b6024)] - **(SEMVER-MAJOR)** **test**: adapt assert tests to stack trace changes (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`f7406aa56d`](https://github.com/nodejs/node/commit/f7406aa56d)] - **(SEMVER-MAJOR)** **test**: update test-linux-perf-logger (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`c7493fac5e`](https://github.com/nodejs/node/commit/c7493fac5e)] - **(SEMVER-MAJOR)** _**Revert**_ "**test**: disable fast API call count checks" (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`50a8527867`](https://github.com/nodejs/node/commit/50a8527867)] - **(SEMVER-MAJOR)** **src**: replace uses of FastApiTypedArray (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`9c1ebb713c`](https://github.com/nodejs/node/commit/9c1ebb713c)] - **(SEMVER-MAJOR)** **build**: add `/bigobj` to compile V8 on Windows (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`fb3d5ea45d`](https://github.com/nodejs/node/commit/fb3d5ea45d)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 13.4 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`756abacf73`](https://github.com/nodejs/node/commit/756abacf73)] - **(SEMVER-MAJOR)** **build,src,tools**: adapt build config for V8 13.3 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`f8953e54b0`](https://github.com/nodejs/node/commit/f8953e54b0)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 13.2 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`c8a0e205e1`](https://github.com/nodejs/node/commit/c8a0e205e1)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 13.1 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`1689ee84ce`](https://github.com/nodejs/node/commit/1689ee84ce)] - **(SEMVER-MAJOR)** **build**: enable shared RO heap with ptr compression (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`15f2fb9467`](https://github.com/nodejs/node/commit/15f2fb9467)] - **(SEMVER-MAJOR)** **build**: remove support for s390 32-bit (Richard Lau) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`4ab254c9f2`](https://github.com/nodejs/node/commit/4ab254c9f2)] - **(SEMVER-MAJOR)** **deps**: V8: backport 954187bb1b87 (Joyee Cheung) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`732923b927`](https://github.com/nodejs/node/commit/732923b927)] - **(SEMVER-MAJOR)** **deps**: patch V8 to support compilation with MSVC (StefanStojanovic) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`972834d7c0`](https://github.com/nodejs/node/commit/972834d7c0)] - **(SEMVER-MAJOR)** **deps**: always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`7098bff3a9`](https://github.com/nodejs/node/commit/7098bff3a9)] - **(SEMVER-MAJOR)** **deps**: disable V8 concurrent sparkplug compilation (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`dc82c40d4a`](https://github.com/nodejs/node/commit/dc82c40d4a)] - **(SEMVER-MAJOR)** **deps**: use std::map in MSVC STL for EphemeronRememberedSet (Joyee Cheung) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`42f5130ee2`](https://github.com/nodejs/node/commit/42f5130ee2)] - **(SEMVER-MAJOR)** **deps**: patch V8 for illumos (Dan McDonald) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`23b17dbd9e`](https://github.com/nodejs/node/commit/23b17dbd9e)] - **(SEMVER-MAJOR)** **deps**: remove problematic comment from v8-internal (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`c5d71fcdab`](https://github.com/nodejs/node/commit/c5d71fcdab)] - **(SEMVER-MAJOR)** **deps**: define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`fbc2005b15`](https://github.com/nodejs/node/commit/fbc2005b15)] - **(SEMVER-MAJOR)** **deps**: fix FP16 bitcasts.h (Stefan Stojanovic) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`57f9430503`](https://github.com/nodejs/node/commit/57f9430503)] - **(SEMVER-MAJOR)** **deps**: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`f26cab1b85`](https://github.com/nodejs/node/commit/f26cab1b85)] - **(SEMVER-MAJOR)** **src**: update NODE_MODULE_VERSION to 137 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`f8923a4f17`](https://github.com/nodejs/node/commit/f8923a4f17)] - **(SEMVER-MAJOR)** **build**: reset embedder string to "-node.0" (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`c7964bc02b`](https://github.com/nodejs/node/commit/c7964bc02b)] - **(SEMVER-MAJOR)** **deps**: update V8 to 13.6.233.8 (Michaël Zasso) [#58070](https://github.com/nodejs/node/pull/58070) +- \[[`6682861d6f`](https://github.com/nodejs/node/commit/6682861d6f)] - **(SEMVER-MAJOR)** **build**: downgrade armv7 support to experimental (Michaël Zasso) [#58071](https://github.com/nodejs/node/pull/58071) +- \[[`0579e0ec93`](https://github.com/nodejs/node/commit/0579e0ec93)] - **(SEMVER-MAJOR)** **buffer**: move SlowBuffer to EOL (James M Snell) [#58008](https://github.com/nodejs/node/pull/58008) +- \[[`a55f5d5e63`](https://github.com/nodejs/node/commit/a55f5d5e63)] - **(SEMVER-MAJOR)** **readline**: add stricter validation for functions called after closed (Dario Piotrowicz) [#57680](https://github.com/nodejs/node/pull/57680) +- \[[`d16b0bae55`](https://github.com/nodejs/node/commit/d16b0bae55)] - **(SEMVER-MAJOR)** **http2**: session tracking and graceful server close (Kushagra Pandey) [#57586](https://github.com/nodejs/node/pull/57586) +- \[[`e2b94dc3f9`](https://github.com/nodejs/node/commit/e2b94dc3f9)] - **(SEMVER-MAJOR)** **readline**: fix unicode line separators being ignored (Dario Piotrowicz) [#57591](https://github.com/nodejs/node/pull/57591) +- \[[`4a47ce5ff9`](https://github.com/nodejs/node/commit/4a47ce5ff9)] - **(SEMVER-MAJOR)** _**Revert**_ "**assert,util**: revert recursive breaking change" (Ruben Bridgewater) [#57622](https://github.com/nodejs/node/pull/57622) +- \[[`7d4db69049`](https://github.com/nodejs/node/commit/7d4db69049)] - **(SEMVER-MAJOR)** **http**: remove outgoingmessage \_headers and \_headersList (Yagiz Nizipli) [#57551](https://github.com/nodejs/node/pull/57551) +- \[[`fabf9384e0`](https://github.com/nodejs/node/commit/fabf9384e0)] - **(SEMVER-MAJOR)** **fs**: remove ability to call truncate with fd (Yagiz Nizipli) [#57567](https://github.com/nodejs/node/pull/57567) +- \[[`a587bd2ee2`](https://github.com/nodejs/node/commit/a587bd2ee2)] - **(SEMVER-MAJOR)** **net**: make \_setSimultaneousAccepts() end-of-life deprecated (Yagiz Nizipli) [#57550](https://github.com/nodejs/node/pull/57550) +- \[[`c6bca3fd34`](https://github.com/nodejs/node/commit/c6bca3fd34)] - **(SEMVER-MAJOR)** **child_process**: deprecate passing `args` to `spawn` and `execFile` (Daniel Venable) [#57199](https://github.com/nodejs/node/pull/57199) +- \[[`e42c01b56d`](https://github.com/nodejs/node/commit/e42c01b56d)] - **(SEMVER-MAJOR)** **buffer**: make `buflen` in integer range (zhenweijin) [#51821](https://github.com/nodejs/node/pull/51821) +- \[[`cc08ad56b8`](https://github.com/nodejs/node/commit/cc08ad56b8)] - **(SEMVER-MAJOR)** **tls**: remove deprecated tls.createSecurePair (Jonas) [#57361](https://github.com/nodejs/node/pull/57361) +- \[[`6f2a6b262b`](https://github.com/nodejs/node/commit/6f2a6b262b)] - **(SEMVER-MAJOR)** **tls**: make server.prototype.setOptions end-of-life (Yagiz Nizipli) [#57339](https://github.com/nodejs/node/pull/57339) +- \[[`0c371d919e`](https://github.com/nodejs/node/commit/0c371d919e)] - **(SEMVER-MAJOR)** **lib**: remove obsolete Cipher export (James M Snell) [#57266](https://github.com/nodejs/node/pull/57266) +- \[[`2cbf3c38db`](https://github.com/nodejs/node/commit/2cbf3c38db)] - **(SEMVER-MAJOR)** **timers**: check for immediate instance in clearImmediate (Gürgün Dayıoğlu) [#57069](https://github.com/nodejs/node/pull/57069) +- \[[`4f512faf4a`](https://github.com/nodejs/node/commit/4f512faf4a)] - **(SEMVER-MAJOR)** **lib**: unexpose six process bindings (Michaël Zasso) [#57149](https://github.com/nodejs/node/pull/57149) +- \[[`8b40221777`](https://github.com/nodejs/node/commit/8b40221777)] - **(SEMVER-MAJOR)** **build**: bump supported macOS version to 13.5 (Michaël Zasso) [#57115](https://github.com/nodejs/node/pull/57115) +- \[[`5d7091f1bc`](https://github.com/nodejs/node/commit/5d7091f1bc)] - **(SEMVER-MAJOR)** **timers**: set several methods EOL (Yagiz Nizipli) [#56966](https://github.com/nodejs/node/pull/56966) +- \[[`d1f8ccb10d`](https://github.com/nodejs/node/commit/d1f8ccb10d)] - **(SEMVER-MAJOR)** **url**: expose urlpattern as global (Jonas) [#56950](https://github.com/nodejs/node/pull/56950) +- \[[`ed52ab913b`](https://github.com/nodejs/node/commit/ed52ab913b)] - **(SEMVER-MAJOR)** **build**: increase minimum Xcode version to 16.1 (Michaël Zasso) [#56824](https://github.com/nodejs/node/pull/56824) +- \[[`1a2eb15bc6`](https://github.com/nodejs/node/commit/1a2eb15bc6)] - **(SEMVER-MAJOR)** **test_runner**: remove promises returned by t.test() (Colin Ihrig) [#56664](https://github.com/nodejs/node/pull/56664) +- \[[`96718268fe`](https://github.com/nodejs/node/commit/96718268fe)] - **(SEMVER-MAJOR)** **test_runner**: remove promises returned by test() (Colin Ihrig) [#56664](https://github.com/nodejs/node/pull/56664) +- \[[`aa3523ec22`](https://github.com/nodejs/node/commit/aa3523ec22)] - **(SEMVER-MAJOR)** **test_runner**: automatically wait for subtests to finish (Colin Ihrig) [#56664](https://github.com/nodejs/node/pull/56664) +- \[[`6857dbc018`](https://github.com/nodejs/node/commit/6857dbc018)] - **(SEMVER-MAJOR)** **test**: disable fast API call count checks (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`89f661dd66`](https://github.com/nodejs/node/commit/89f661dd66)] - **(SEMVER-MAJOR)** **build**: link V8 with atomic library (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`7e8752006a`](https://github.com/nodejs/node/commit/7e8752006a)] - **(SEMVER-MAJOR)** **src**: update GetForegroundTaskRunner override (Etienne Pierre-doray) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`44b0e423dc`](https://github.com/nodejs/node/commit/44b0e423dc)] - **(SEMVER-MAJOR)** **build**: remove support for ppc 32-bit (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`6f965260dd`](https://github.com/nodejs/node/commit/6f965260dd)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 13.0 (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`52d39441d0`](https://github.com/nodejs/node/commit/52d39441d0)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick f915fa4c9f41 (Olivier Flückiger) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`99ffe3555a`](https://github.com/nodejs/node/commit/99ffe3555a)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick 0d5d6e71bbb0 (Yagiz Nizipli) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`5d8011d91c`](https://github.com/nodejs/node/commit/5d8011d91c)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick 0c11feeeca4a (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`d85d2f8350`](https://github.com/nodejs/node/commit/d85d2f8350)] - **(SEMVER-MAJOR)** **deps**: define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`e8f55f7b7a`](https://github.com/nodejs/node/commit/e8f55f7b7a)] - **(SEMVER-MAJOR)** **deps**: always define V8_NODISCARD as no-op (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`b3c1b63a5d`](https://github.com/nodejs/node/commit/b3c1b63a5d)] - **(SEMVER-MAJOR)** **deps**: fix FP16 bitcasts.h (Stefan Stojanovic) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`d0361f0bba`](https://github.com/nodejs/node/commit/d0361f0bba)] - **(SEMVER-MAJOR)** **deps**: patch V8 to support compilation with MSVC (StefanStojanovic) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`a4e0fce896`](https://github.com/nodejs/node/commit/a4e0fce896)] - **(SEMVER-MAJOR)** **deps**: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`4f8fd566cc`](https://github.com/nodejs/node/commit/4f8fd566cc)] - **(SEMVER-MAJOR)** **deps**: disable V8 concurrent sparkplug compilation (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`1142f78f1d`](https://github.com/nodejs/node/commit/1142f78f1d)] - **(SEMVER-MAJOR)** **deps**: always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`7917b67313`](https://github.com/nodejs/node/commit/7917b67313)] - **(SEMVER-MAJOR)** **src**: update NODE_MODULE_VERSION to 134 (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`1f654e655c`](https://github.com/nodejs/node/commit/1f654e655c)] - **(SEMVER-MAJOR)** **build**: reset embedder string to "-node.0" (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`5edec0e39a`](https://github.com/nodejs/node/commit/5edec0e39a)] - **(SEMVER-MAJOR)** **deps**: update V8 to 13.0.245.25 (Michaël Zasso) [#55014](https://github.com/nodejs/node/pull/55014) +- \[[`25b22e4754`](https://github.com/nodejs/node/commit/25b22e4754)] - **(SEMVER-MAJOR)** **deps**: upgrade npm to 11.0.0 (npm team) [#56274](https://github.com/nodejs/node/pull/56274) +- \[[`529b56ef9d`](https://github.com/nodejs/node/commit/529b56ef9d)] - **(SEMVER-MAJOR)** **fs**: deprecate passing invalid types in `fs.existsSync` (Carlos Espa) [#55753](https://github.com/nodejs/node/pull/55753) +- \[[`bf3bc4ec2f`](https://github.com/nodejs/node/commit/bf3bc4ec2f)] - **(SEMVER-MAJOR)** **src**: drop --experimental-permission in favour of --permission (Rafael Gonzaga) [#56240](https://github.com/nodejs/node/pull/56240) +- \[[`fd8de670da`](https://github.com/nodejs/node/commit/fd8de670da)] - **(SEMVER-MAJOR)** **stream**: catch and forward error from dest.write (jakecastelli) [#55270](https://github.com/nodejs/node/pull/55270) +- \[[`47b80c293d`](https://github.com/nodejs/node/commit/47b80c293d)] - **(SEMVER-MAJOR)** **deps**: update undici to 7.0.0 (Node.js GitHub Bot) [#56070](https://github.com/nodejs/node/pull/56070) +- \[[`58982d712b`](https://github.com/nodejs/node/commit/58982d712b)] - **(SEMVER-MAJOR)** **src**: add async context frame to AsyncResource (Gerhard Stöbich) [#56082](https://github.com/nodejs/node/pull/56082) +- \[[`4ee87b8bc3`](https://github.com/nodejs/node/commit/4ee87b8bc3)] - **(SEMVER-MAJOR)** **zlib**: deprecate classes usage without `new` (Yagiz Nizipli) [#55718](https://github.com/nodejs/node/pull/55718) +- \[[`b02cd411c2`](https://github.com/nodejs/node/commit/b02cd411c2)] - **(SEMVER-MAJOR)** **fs**: runtime deprecate `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) [#49686](https://github.com/nodejs/node/pull/49686) +- \[[`d9540b51eb`](https://github.com/nodejs/node/commit/d9540b51eb)] - **(SEMVER-MAJOR)** **fs**: remove `dirent.path` (Antoine du Hamel) [#55548](https://github.com/nodejs/node/pull/55548) +- \[[`0368f2f662`](https://github.com/nodejs/node/commit/0368f2f662)] - **(SEMVER-MAJOR)** **repl**: runtime deprecate instantiating without new (Aviv Keller) [#54869](https://github.com/nodejs/node/pull/54869) +- \[[`03dcd7077a`](https://github.com/nodejs/node/commit/03dcd7077a)] - **(SEMVER-MAJOR)** **src**: nuke deprecated and un-used enum members in `OptionEnvvarSettings` (Juan José) [#53079](https://github.com/nodejs/node/pull/53079) +- \[[`51ae57673d`](https://github.com/nodejs/node/commit/51ae57673d)] - **(SEMVER-MAJOR)** **lib**: make ALS default to AsyncContextFrame (Stephen Belanger) [#55552](https://github.com/nodejs/node/pull/55552) +- \[[`11fbdd8c9d`](https://github.com/nodejs/node/commit/11fbdd8c9d)] - **(SEMVER-MAJOR)** **url**: runtime deprecate url.parse (Yagiz Nizipli) [#55017](https://github.com/nodejs/node/pull/55017) +- \[[`019efe1453`](https://github.com/nodejs/node/commit/019efe1453)] - **(SEMVER-MAJOR)** **lib**: runtime deprecate SlowBuffer (Rafael Gonzaga) [#55175](https://github.com/nodejs/node/pull/55175) + +### Semver-Minor Commits + +- \[[`bf9f25719a`](https://github.com/nodejs/node/commit/bf9f25719a)] - **(SEMVER-MINOR)** **esm**: graduate import.meta properties (James M Snell) [#58011](https://github.com/nodejs/node/pull/58011) +- \[[`947c6a4405`](https://github.com/nodejs/node/commit/947c6a4405)] - **(SEMVER-MINOR)** **src**: add ExecutionAsyncId getter for any Context (Attila Szegedi) [#57820](https://github.com/nodejs/node/pull/57820) +- \[[`ea04184328`](https://github.com/nodejs/node/commit/ea04184328)] - **(SEMVER-MINOR)** **worker**: add worker.getHeapStatistics() (Matteo Collina) [#57888](https://github.com/nodejs/node/pull/57888) +- \[[`ec79f7686d`](https://github.com/nodejs/node/commit/ec79f7686d)] - **(SEMVER-MINOR)** **util**: add `types.isFloat16Array()` (Livia Medeiros) [#57879](https://github.com/nodejs/node/pull/57879) +- \[[`13dee58d0e`](https://github.com/nodejs/node/commit/13dee58d0e)] - **(SEMVER-MINOR)** **test_runner**: add global setup and teardown functionality (Pietro Marchini) [#57438](https://github.com/nodejs/node/pull/57438) +- \[[`932c2d9c70`](https://github.com/nodejs/node/commit/932c2d9c70)] - **(SEMVER-MINOR)** **stream**: preserve AsyncLocalStorage context in finished() (Gürgün Dayıoğlu) [#57865](https://github.com/nodejs/node/pull/57865) +- \[[`18d6249580`](https://github.com/nodejs/node/commit/18d6249580)] - **(SEMVER-MINOR)** **repl**: add support for multiline history (Giovanni Bucci) [#57400](https://github.com/nodejs/node/pull/57400) +- \[[`c3e44342d9`](https://github.com/nodejs/node/commit/c3e44342d9)] - **(SEMVER-MINOR)** **lib**: add defaultValue and name options to AsyncLocalStorage (James M Snell) [#57766](https://github.com/nodejs/node/pull/57766) +- \[[`f99f815641`](https://github.com/nodejs/node/commit/f99f815641)] - **(SEMVER-MINOR)** **doc**: graduate multiple experimental apis (James M Snell) [#57765](https://github.com/nodejs/node/pull/57765) +- \[[`21f3c96199`](https://github.com/nodejs/node/commit/21f3c96199)] - **(SEMVER-MINOR)** **esm**: support top-level Wasm without package type (Guy Bedford) [#57610](https://github.com/nodejs/node/pull/57610) +- \[[`ada34bd0ea`](https://github.com/nodejs/node/commit/ada34bd0ea)] - **(SEMVER-MINOR)** **http**: support http proxy for fetch under NODE_USE_ENV_PROXY (Joyee Cheung) [#57165](https://github.com/nodejs/node/pull/57165) +- \[[`05cf1410b1`](https://github.com/nodejs/node/commit/05cf1410b1)] - **(SEMVER-MINOR)** **assert**: mark partialDeepStrictEqual() as stable (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`57e49ee777`](https://github.com/nodejs/node/commit/57e49ee777)] - **(SEMVER-MINOR)** **esm**: support source phase imports for WebAssembly (Guy Bedford) [#56919](https://github.com/nodejs/node/pull/56919) +- \[[`55413004c8`](https://github.com/nodejs/node/commit/55413004c8)] - **(SEMVER-MINOR)** **stream**: handle generator destruction from Duplex.from() (Matthieu Sieben) [#55096](https://github.com/nodejs/node/pull/55096) + +### Semver-Patch Commits + +- \[[`7df9558efc`](https://github.com/nodejs/node/commit/7df9558efc)] - **assert**: support `Float16Array` in loose deep equality checks (Livia Medeiros) [#57881](https://github.com/nodejs/node/pull/57881) +- \[[`d9e78c00c1`](https://github.com/nodejs/node/commit/d9e78c00c1)] - **assert,util**: fix constructor lookup in deep equal comparison (Ruben Bridgewater) [#57876](https://github.com/nodejs/node/pull/57876) +- \[[`f4572f0826`](https://github.com/nodejs/node/commit/f4572f0826)] - **assert,util**: improve deep object comparison performance (Ruben Bridgewater) [#57648](https://github.com/nodejs/node/pull/57648) +- \[[`2e9fb6e1e0`](https://github.com/nodejs/node/commit/2e9fb6e1e0)] - **assert,util**: improve unequal number comparison performance (Ruben Bridgewater) [#57619](https://github.com/nodejs/node/pull/57619) +- \[[`5f9cc5ecbb`](https://github.com/nodejs/node/commit/5f9cc5ecbb)] - **assert,util**: improve array comparison (Ruben Bridgewater) [#57619](https://github.com/nodejs/node/pull/57619) +- \[[`b5b192314c`](https://github.com/nodejs/node/commit/b5b192314c)] - **async_hooks**: enable AsyncLocalStorage once constructed (Chengzhong Wu) [#58029](https://github.com/nodejs/node/pull/58029) +- \[[`442b4162fb`](https://github.com/nodejs/node/commit/442b4162fb)] - **benchmark**: add sqlite prepare select get (Vinícius Lourenço) [#58040](https://github.com/nodejs/node/pull/58040) +- \[[`2d894eacae`](https://github.com/nodejs/node/commit/2d894eacae)] - **benchmark**: add sqlite prepare select all (Vinícius Lourenço) [#58040](https://github.com/nodejs/node/pull/58040) +- \[[`4d47f3afef`](https://github.com/nodejs/node/commit/4d47f3afef)] - **benchmark**: add sqlite is transaction (Vinícius Lourenço) [#58040](https://github.com/nodejs/node/pull/58040) +- \[[`85f2bbc02b`](https://github.com/nodejs/node/commit/85f2bbc02b)] - **benchmark**: add sqlite prepare insert (Vinícius Lourenço) [#58040](https://github.com/nodejs/node/pull/58040) +- \[[`e61b38e47d`](https://github.com/nodejs/node/commit/e61b38e47d)] - **benchmark**: disambiguate `filename` and `dirname` read perf (Antoine du Hamel) [#58056](https://github.com/nodejs/node/pull/58056) +- \[[`ca86c93390`](https://github.com/nodejs/node/commit/ca86c93390)] - **buffer**: avoid creating unnecessary environment (Yagiz Nizipli) [#58053](https://github.com/nodejs/node/pull/58053) +- \[[`dc22890dd8`](https://github.com/nodejs/node/commit/dc22890dd8)] - **buffer**: improve byteLength performance (Yagiz Nizipli) [#58048](https://github.com/nodejs/node/pull/58048) +- \[[`619bf86fe9`](https://github.com/nodejs/node/commit/619bf86fe9)] - **buffer**: define global v8::CFunction objects as const (Mert Can Altin) [#57676](https://github.com/nodejs/node/pull/57676) +- \[[`d24414ceec`](https://github.com/nodejs/node/commit/d24414ceec)] - **build**: use `$(BUILDTYPE)` when cleaning coverage files (Aviv Keller) [#57995](https://github.com/nodejs/node/pull/57995) +- \[[`004913992c`](https://github.com/nodejs/node/commit/004913992c)] - **build**: define python when generating `out/Makefile` (Aviv Keller) [#57970](https://github.com/nodejs/node/pull/57970) +- \[[`77d11f9c7c`](https://github.com/nodejs/node/commit/77d11f9c7c)] - **build**: fix zstd libname (Antoine du Hamel) [#57999](https://github.com/nodejs/node/pull/57999) +- \[[`74473af8ee`](https://github.com/nodejs/node/commit/74473af8ee)] - **build**: use clang-cl in coverage-windows workflow (Michaël Zasso) [#57919](https://github.com/nodejs/node/pull/57919) +- \[[`46fc497e7b`](https://github.com/nodejs/node/commit/46fc497e7b)] - **build**: fix missing files warning (Luigi Pinca) [#57870](https://github.com/nodejs/node/pull/57870) +- \[[`403264c02e`](https://github.com/nodejs/node/commit/403264c02e)] - **build**: remove redundant `-mXX` flags for V8 (Michaël Zasso) [#57907](https://github.com/nodejs/node/pull/57907) +- \[[`e55b02b368`](https://github.com/nodejs/node/commit/e55b02b368)] - **build**: drop support for python 3.8 (Aviv Keller) [#55239](https://github.com/nodejs/node/pull/55239) +- \[[`234c71077b`](https://github.com/nodejs/node/commit/234c71077b)] - **crypto**: fix cross-realm `SharedArrayBuffer` validation (Antoine du Hamel) [#57974](https://github.com/nodejs/node/pull/57974) +- \[[`14367588d8`](https://github.com/nodejs/node/commit/14367588d8)] - **crypto**: fix cross-realm check of `ArrayBuffer` (Felipe Forbeck) [#57828](https://github.com/nodejs/node/pull/57828) +- \[[`0f55a96e9c`](https://github.com/nodejs/node/commit/0f55a96e9c)] - **crypto**: forbid passing `Float16Array` to `getRandomValues()` (Livia Medeiros) [#57880](https://github.com/nodejs/node/pull/57880) +- \[[`dce6f43a4f`](https://github.com/nodejs/node/commit/dce6f43a4f)] - **crypto**: revert dangerous uses of std::string_view (Tobias Nießen) [#57816](https://github.com/nodejs/node/pull/57816) +- \[[`fd3fb0c347`](https://github.com/nodejs/node/commit/fd3fb0c347)] - **crypto**: fix misleading positional argument (Tobias Nießen) [#57843](https://github.com/nodejs/node/pull/57843) +- \[[`92aae40dce`](https://github.com/nodejs/node/commit/92aae40dce)] - **crypto**: make auth tag size assumption explicit (Tobias Nießen) [#57803](https://github.com/nodejs/node/pull/57803) +- \[[`4793bb2fdc`](https://github.com/nodejs/node/commit/4793bb2fdc)] - **crypto**: remove CipherBase::Init (Tobias Nießen) [#57787](https://github.com/nodejs/node/pull/57787) +- \[[`e567952388`](https://github.com/nodejs/node/commit/e567952388)] - **crypto**: remove BoringSSL dh-primes addition (Shelley Vohr) [#57023](https://github.com/nodejs/node/pull/57023) +- \[[`270ab65ee4`](https://github.com/nodejs/node/commit/270ab65ee4)] - **deps**: update ada to 3.2.3 (Node.js GitHub Bot) [#58045](https://github.com/nodejs/node/pull/58045) +- \[[`f725127c19`](https://github.com/nodejs/node/commit/f725127c19)] - **deps**: update zstd to 1.5.7 (Node.js GitHub Bot) [#57940](https://github.com/nodejs/node/pull/57940) +- \[[`fd6adb7de6`](https://github.com/nodejs/node/commit/fd6adb7de6)] - **deps**: update simdutf to 6.5.0 (Node.js GitHub Bot) [#57939](https://github.com/nodejs/node/pull/57939) +- \[[`cdedec7e29`](https://github.com/nodejs/node/commit/cdedec7e29)] - **deps**: update undici to 7.8.0 (Node.js GitHub Bot) [#57770](https://github.com/nodejs/node/pull/57770) +- \[[`878dc9337e`](https://github.com/nodejs/node/commit/878dc9337e)] - **deps**: update zlib to 1.3.0.1-motley-780819f (Node.js GitHub Bot) [#57768](https://github.com/nodejs/node/pull/57768) +- \[[`3e885e1441`](https://github.com/nodejs/node/commit/3e885e1441)] - **deps**: update timezone to 2025b (Node.js GitHub Bot) [#57857](https://github.com/nodejs/node/pull/57857) +- \[[`e92e100c9d`](https://github.com/nodejs/node/commit/e92e100c9d)] - **deps**: update amaro to 0.5.2 (Node.js GitHub Bot) [#57871](https://github.com/nodejs/node/pull/57871) +- \[[`afc49db038`](https://github.com/nodejs/node/commit/afc49db038)] - **deps**: update simdutf to 6.4.2 (Node.js GitHub Bot) [#57855](https://github.com/nodejs/node/pull/57855) +- \[[`70bd8bc174`](https://github.com/nodejs/node/commit/70bd8bc174)] - **deps**: delete OpenSSL demos, doc and test folders (Michaël Zasso) [#57835](https://github.com/nodejs/node/pull/57835) +- \[[`40dcd4a3d1`](https://github.com/nodejs/node/commit/40dcd4a3d1)] - **deps**: upgrade npm to 11.3.0 (npm team) [#57801](https://github.com/nodejs/node/pull/57801) +- \[[`678d82b9be`](https://github.com/nodejs/node/commit/678d82b9be)] - **deps**: update c-ares to v1.34.5 (Node.js GitHub Bot) [#57792](https://github.com/nodejs/node/pull/57792) +- \[[`f079c4aa37`](https://github.com/nodejs/node/commit/f079c4aa37)] - **deps**: update simdutf to 6.4.0 (Node.js GitHub Bot) [#56764](https://github.com/nodejs/node/pull/56764) +- \[[`ec29f563a9`](https://github.com/nodejs/node/commit/ec29f563a9)] - **deps**: update ada to 3.2.2 (Yagiz Nizipli) [#57693](https://github.com/nodejs/node/pull/57693) +- \[[`95296d0d84`](https://github.com/nodejs/node/commit/95296d0d84)] - **deps**: update amaro to 0.5.1 (Marco Ippolito) [#57704](https://github.com/nodejs/node/pull/57704) +- \[[`c377394657`](https://github.com/nodejs/node/commit/c377394657)] - **deps**: update undici to 7.6.0 (nodejs-github-bot) [#57685](https://github.com/nodejs/node/pull/57685) +- \[[`a56175561a`](https://github.com/nodejs/node/commit/a56175561a)] - **deps**: update amaro to 0.5.0 (nodejs-github-bot) [#57687](https://github.com/nodejs/node/pull/57687) +- \[[`a86912a462`](https://github.com/nodejs/node/commit/a86912a462)] - **deps**: update icu to 77.1 (Node.js GitHub Bot) [#57455](https://github.com/nodejs/node/pull/57455) +- \[[`0b2cf1b642`](https://github.com/nodejs/node/commit/0b2cf1b642)] - **deps**: update undici to 7.5.0 (Node.js GitHub Bot) [#57427](https://github.com/nodejs/node/pull/57427) +- \[[`c3927aa558`](https://github.com/nodejs/node/commit/c3927aa558)] - **deps**: upgrade npm to 11.2.0 (npm team) [#57334](https://github.com/nodejs/node/pull/57334) +- \[[`9c7bc95f56`](https://github.com/nodejs/node/commit/9c7bc95f56)] - **deps**: update undici to 7.4.0 (Node.js GitHub Bot) [#57236](https://github.com/nodejs/node/pull/57236) +- \[[`9dee7b94bf`](https://github.com/nodejs/node/commit/9dee7b94bf)] - **deps**: update undici to 7.3.0 (Node.js GitHub Bot) [#56624](https://github.com/nodejs/node/pull/56624) +- \[[`cadc4ed067`](https://github.com/nodejs/node/commit/cadc4ed067)] - **deps**: upgrade npm to 11.1.0 (npm team) [#56818](https://github.com/nodejs/node/pull/56818) +- \[[`5770972dc6`](https://github.com/nodejs/node/commit/5770972dc6)] - **deps**: update undici to 7.2.1 (Node.js GitHub Bot) [#56569](https://github.com/nodejs/node/pull/56569) +- \[[`67b647edc7`](https://github.com/nodejs/node/commit/67b647edc7)] - **deps**: update undici to 7.2.0 (Node.js GitHub Bot) [#56335](https://github.com/nodejs/node/pull/56335) +- \[[`6c03beba46`](https://github.com/nodejs/node/commit/6c03beba46)] - **deps**: update undici to 7.1.0 (Node.js GitHub Bot) [#56179](https://github.com/nodejs/node/pull/56179) +- \[[`8b4bacdf1a`](https://github.com/nodejs/node/commit/8b4bacdf1a)] - **dns**: restore dns query cache ttl (Ethan Arrowood) [#57640](https://github.com/nodejs/node/pull/57640) +- \[[`f6a085da3f`](https://github.com/nodejs/node/commit/f6a085da3f)] - **doc**: mark Node.js 18 as End-of-Life (Richard Lau) [#58084](https://github.com/nodejs/node/pull/58084) +- \[[`ca67c002d6`](https://github.com/nodejs/node/commit/ca67c002d6)] - **doc**: add dario-piotrowicz to collaborators (Dario Piotrowicz) [#58102](https://github.com/nodejs/node/pull/58102) +- \[[`cdb3d01194`](https://github.com/nodejs/node/commit/cdb3d01194)] - **doc**: fix formatting of `import.meta.filename` section (Antoine du Hamel) [#58079](https://github.com/nodejs/node/pull/58079) +- \[[`0557d60f41`](https://github.com/nodejs/node/commit/0557d60f41)] - **doc**: fix env variable name in `util.styleText` (Antoine du Hamel) [#58072](https://github.com/nodejs/node/pull/58072) +- \[[`d5783af1fe`](https://github.com/nodejs/node/commit/d5783af1fe)] - **doc**: add returns for https.get (Eng Zer Jun) [#58025](https://github.com/nodejs/node/pull/58025) +- \[[`a2260a4a18`](https://github.com/nodejs/node/commit/a2260a4a18)] - **doc**: fix typo in `buffer.md` (chocolateboy) [#58052](https://github.com/nodejs/node/pull/58052) +- \[[`352df168da`](https://github.com/nodejs/node/commit/352df168da)] - **doc**: reserve module version 136 for Electron 37 (Calvin) [#57979](https://github.com/nodejs/node/pull/57979) +- \[[`ebbbdd15a1`](https://github.com/nodejs/node/commit/ebbbdd15a1)] - **doc**: correct deprecation type of `assert.CallTracker` (René) [#57997](https://github.com/nodejs/node/pull/57997) +- \[[`36b0a296db`](https://github.com/nodejs/node/commit/36b0a296db)] - **doc**: fix `AsyncLocalStorage` example response changes after node v18 (Naor Tedgi (Abu Emma)) [#57969](https://github.com/nodejs/node/pull/57969) +- \[[`8b4adfb439`](https://github.com/nodejs/node/commit/8b4adfb439)] - **doc**: fix linter errors (Antoine du Hamel) [#57987](https://github.com/nodejs/node/pull/57987) +- \[[`626b26d888`](https://github.com/nodejs/node/commit/626b26d888)] - **doc**: mark devtools integration section as active development (Chengzhong Wu) [#57886](https://github.com/nodejs/node/pull/57886) +- \[[`56a808d20b`](https://github.com/nodejs/node/commit/56a808d20b)] - **doc**: fix typo in `module.md` (Alex Schwartz) [#57889](https://github.com/nodejs/node/pull/57889) +- \[[`df90bd9656`](https://github.com/nodejs/node/commit/df90bd9656)] - **doc**: increase z-index of header element (Dario Piotrowicz) [#57851](https://github.com/nodejs/node/pull/57851) +- \[[`74c415d46a`](https://github.com/nodejs/node/commit/74c415d46a)] - **doc**: add missing TS formats for `load` hooks (Antoine du Hamel) [#57837](https://github.com/nodejs/node/pull/57837) +- \[[`ce1b5aabd4`](https://github.com/nodejs/node/commit/ce1b5aabd4)] - **doc**: clarify the multi REPL example (Dario Piotrowicz) [#57759](https://github.com/nodejs/node/pull/57759) +- \[[`deb434e61f`](https://github.com/nodejs/node/commit/deb434e61f)] - **doc**: fix deprecation type for `DEP0148` (Livia Medeiros) [#57785](https://github.com/nodejs/node/pull/57785) +- \[[`a5ef2e8858`](https://github.com/nodejs/node/commit/a5ef2e8858)] - **doc**: list DOMException as a potential error raised by Node.js (Chengzhong Wu) [#57783](https://github.com/nodejs/node/pull/57783) +- \[[`f66a2717ee`](https://github.com/nodejs/node/commit/f66a2717ee)] - **doc**: add missing v0.x changelog entries (Antoine du Hamel) [#57779](https://github.com/nodejs/node/pull/57779) +- \[[`05098668ba`](https://github.com/nodejs/node/commit/05098668ba)] - **doc**: fix typo in writing-docs (Sebastian Beltran) [#57776](https://github.com/nodejs/node/pull/57776) +- \[[`379718e26e`](https://github.com/nodejs/node/commit/379718e26e)] - **doc**: clarify examples section in REPL doc (Dario Piotrowicz) [#57762](https://github.com/nodejs/node/pull/57762) +- \[[`952a212377`](https://github.com/nodejs/node/commit/952a212377)] - **doc**: explicitly state that corepack will be removed in v25+ (Trivikram Kamat) [#57747](https://github.com/nodejs/node/pull/57747) +- \[[`81066717d0`](https://github.com/nodejs/node/commit/81066717d0)] - **doc**: update position type to integer | null in fs (Yukihiro Hasegawa) [#57745](https://github.com/nodejs/node/pull/57745) +- \[[`a00fec62f9`](https://github.com/nodejs/node/commit/a00fec62f9)] - **doc**: allow the $schema property in node.config.json (Remco Haszing) [#57560](https://github.com/nodejs/node/pull/57560) +- \[[`cc848986ad`](https://github.com/nodejs/node/commit/cc848986ad)] - **doc**: update CI instructions (Antoine du Hamel) [#57743](https://github.com/nodejs/node/pull/57743) +- \[[`576a6df5bb`](https://github.com/nodejs/node/commit/576a6df5bb)] - **doc**: update example of using `await` in REPL (Dario Piotrowicz) [#57653](https://github.com/nodejs/node/pull/57653) +- \[[`0a15b00d34`](https://github.com/nodejs/node/commit/0a15b00d34)] - **doc**: add back mention of visa fees to onboarding doc (Darshan Sen) [#57730](https://github.com/nodejs/node/pull/57730) +- \[[`766d9a8eac`](https://github.com/nodejs/node/commit/766d9a8eac)] - **doc**: remove link to `QUIC.md` (Antoine du Hamel) [#57729](https://github.com/nodejs/node/pull/57729) +- \[[`a8da209796`](https://github.com/nodejs/node/commit/a8da209796)] - **doc**: process.execve is only unavailable for Windows (Yaksh Bariya) [#57726](https://github.com/nodejs/node/pull/57726) +- \[[`d066d1fcec`](https://github.com/nodejs/node/commit/d066d1fcec)] - **doc**: mark type stripping as release candidate (Marco Ippolito) [#57705](https://github.com/nodejs/node/pull/57705) +- \[[`35096b7353`](https://github.com/nodejs/node/commit/35096b7353)] - **doc**: clarify `unhandledRejection` events behaviors in process doc (Dario Piotrowicz) [#57654](https://github.com/nodejs/node/pull/57654) +- \[[`27b113dced`](https://github.com/nodejs/node/commit/27b113dced)] - **doc**: improved fetch docs (Alessandro Miliucci) [#57296](https://github.com/nodejs/node/pull/57296) +- \[[`310ccb5b7d`](https://github.com/nodejs/node/commit/310ccb5b7d)] - **doc**: document REPL custom eval arguments (Dario Piotrowicz) [#57690](https://github.com/nodejs/node/pull/57690) +- \[[`44dfbeca23`](https://github.com/nodejs/node/commit/44dfbeca23)] - **doc**: classify Chrome DevTools Protocol as tier 2 (Chengzhong Wu) [#57634](https://github.com/nodejs/node/pull/57634) +- \[[`1e920a06c7`](https://github.com/nodejs/node/commit/1e920a06c7)] - **doc**: mark multiple vm module APIS stable (James M Snell) [#57513](https://github.com/nodejs/node/pull/57513) +- \[[`db770a0b3b`](https://github.com/nodejs/node/commit/db770a0b3b)] - **doc**: correct status of require(esm) warning in v20 changelog (Joyee Cheung) [#57529](https://github.com/nodejs/node/pull/57529) +- \[[`24c460dc0c`](https://github.com/nodejs/node/commit/24c460dc0c)] - **doc**: reserve NMV 135 for Electron 36 (David Sanders) [#57151](https://github.com/nodejs/node/pull/57151) +- \[[`5119049ca6`](https://github.com/nodejs/node/commit/5119049ca6)] - **doc**: fix faulty YAML metadata (Antoine du Hamel) [#56508](https://github.com/nodejs/node/pull/56508) +- \[[`7bedcfd4a2`](https://github.com/nodejs/node/commit/7bedcfd4a2)] - **doc**: fix typo (Alex Yang) [#56125](https://github.com/nodejs/node/pull/56125) +- \[[`069ec1b983`](https://github.com/nodejs/node/commit/069ec1b983)] - **doc**: consolidate history table of CustomEvent (Edigleysson Silva (Edy)) [#55758](https://github.com/nodejs/node/pull/55758) +- \[[`304f164f52`](https://github.com/nodejs/node/commit/304f164f52)] - **doc,build,win**: update docs with clang (Stefan Stojanovic) [#57991](https://github.com/nodejs/node/pull/57991) +- \[[`c4ca0d7ab1`](https://github.com/nodejs/node/commit/c4ca0d7ab1)] - **esm**: avoid `import.meta` setup costs for unused properties (Antoine du Hamel) [#57286](https://github.com/nodejs/node/pull/57286) +- \[[`073d40be42`](https://github.com/nodejs/node/commit/073d40be42)] - **fs**: added test for missing call to uv_fs_req_cleanup (Justin Nietzel) [#57811](https://github.com/nodejs/node/pull/57811) +- \[[`52e4967f45`](https://github.com/nodejs/node/commit/52e4967f45)] - **fs**: add missing call to uv_fs_req_cleanup (Justin Nietzel) [#57811](https://github.com/nodejs/node/pull/57811) +- \[[`3edea66431`](https://github.com/nodejs/node/commit/3edea66431)] - **fs**: improve globSync performance (Rich Trott) [#57725](https://github.com/nodejs/node/pull/57725) +- \[[`b8865dfda5`](https://github.com/nodejs/node/commit/b8865dfda5)] - **fs**: only show deprecation warning when error code matches (Antoine du Hamel) [#56549](https://github.com/nodejs/node/pull/56549) +- \[[`c91ce2120c`](https://github.com/nodejs/node/commit/c91ce2120c)] - **fs**: fix `getDirent().parentPath` when type is `UV_DIRENT_UNKNOWN` (Livia Medeiros) [#55553](https://github.com/nodejs/node/pull/55553) +- \[[`5e9cac2714`](https://github.com/nodejs/node/commit/5e9cac2714)] - **http2**: add raw header array support to h2Session.request() (Tim Perry) [#57917](https://github.com/nodejs/node/pull/57917) +- \[[`924ebcd7f7`](https://github.com/nodejs/node/commit/924ebcd7f7)] - **http2**: use args.This() instead of args.Holder() (Joyee Cheung) [#58004](https://github.com/nodejs/node/pull/58004) +- \[[`a3655645d9`](https://github.com/nodejs/node/commit/a3655645d9)] - **http2**: fix graceful session close (Kushagra Pandey) [#57808](https://github.com/nodejs/node/pull/57808) +- \[[`406b06b046`](https://github.com/nodejs/node/commit/406b06b046)] - **http2**: fix check for `frame->hd.type` (hanguanqiang) [#57644](https://github.com/nodejs/node/pull/57644) +- \[[`8f3aeea613`](https://github.com/nodejs/node/commit/8f3aeea613)] - **http2**: skip writeHead if stream is closed (Shima Ryuhei) [#57686](https://github.com/nodejs/node/pull/57686) +- \[[`398674a25a`](https://github.com/nodejs/node/commit/398674a25a)] - **lib**: avoid StackOverflow on `serializeError` (Chengzhong Wu) [#58075](https://github.com/nodejs/node/pull/58075) +- \[[`4ef6376cff`](https://github.com/nodejs/node/commit/4ef6376cff)] - **lib**: resolve the issue of not adhering to the specified buffer size (0hm☘️🏳️‍⚧️) [#55896](https://github.com/nodejs/node/pull/55896) +- \[[`5edcb28583`](https://github.com/nodejs/node/commit/5edcb28583)] - **lib**: fix AbortSignal.any() with timeout signals (Gürgün Dayıoğlu) [#57867](https://github.com/nodejs/node/pull/57867) +- \[[`68c5954d59`](https://github.com/nodejs/node/commit/68c5954d59)] - **lib**: use Map primordial for ActiveAsyncContextFrame (Gürgün Dayıoğlu) [#57670](https://github.com/nodejs/node/pull/57670) +- \[[`62640750fd`](https://github.com/nodejs/node/commit/62640750fd)] - **meta**: allow penetration testing on live system with prior authorization (Matteo Collina) [#57966](https://github.com/nodejs/node/pull/57966) +- \[[`33803a5fbb`](https://github.com/nodejs/node/commit/33803a5fbb)] - **meta**: fix subsystem in commit title (Luigi Pinca) [#57945](https://github.com/nodejs/node/pull/57945) +- \[[`7e195ec8f8`](https://github.com/nodejs/node/commit/7e195ec8f8)] - **meta**: bump Mozilla-Actions/sccache-action from 0.0.8 to 0.0.9 (dependabot\[bot]) [#57720](https://github.com/nodejs/node/pull/57720) +- \[[`6ab9db9552`](https://github.com/nodejs/node/commit/6ab9db9552)] - **meta**: bump actions/download-artifact from 4.1.9 to 4.2.1 (dependabot\[bot]) [#57719](https://github.com/nodejs/node/pull/57719) +- \[[`f0c84a6aab`](https://github.com/nodejs/node/commit/f0c84a6aab)] - **meta**: bump actions/setup-python from 5.4.0 to 5.5.0 (dependabot\[bot]) [#57718](https://github.com/nodejs/node/pull/57718) +- \[[`eb1a515c99`](https://github.com/nodejs/node/commit/eb1a515c99)] - **meta**: bump peter-evans/create-pull-request from 7.0.7 to 7.0.8 (dependabot\[bot]) [#57717](https://github.com/nodejs/node/pull/57717) +- \[[`89c156d715`](https://github.com/nodejs/node/commit/89c156d715)] - **meta**: bump github/codeql-action from 3.28.10 to 3.28.13 (dependabot\[bot]) [#57716](https://github.com/nodejs/node/pull/57716) +- \[[`8e27c827fa`](https://github.com/nodejs/node/commit/8e27c827fa)] - **meta**: bump actions/cache from 4.2.2 to 4.2.3 (dependabot\[bot]) [#57715](https://github.com/nodejs/node/pull/57715) +- \[[`dd5e580acd`](https://github.com/nodejs/node/commit/dd5e580acd)] - **meta**: bump actions/setup-node from 4.2.0 to 4.3.0 (dependabot\[bot]) [#57714](https://github.com/nodejs/node/pull/57714) +- \[[`4876e1658f`](https://github.com/nodejs/node/commit/4876e1658f)] - **meta**: bump actions/upload-artifact from 4.6.1 to 4.6.2 (dependabot\[bot]) [#57713](https://github.com/nodejs/node/pull/57713) +- \[[`004914722f`](https://github.com/nodejs/node/commit/004914722f)] - **module**: fix incorrect formatting in require(esm) cycle error message (haykam821) [#57453](https://github.com/nodejs/node/pull/57453) +- \[[`a5406899db`](https://github.com/nodejs/node/commit/a5406899db)] - **module**: improve `getPackageType` performance (Dario Piotrowicz) [#57599](https://github.com/nodejs/node/pull/57599) +- \[[`6adbbe2887`](https://github.com/nodejs/node/commit/6adbbe2887)] - **module**: remove unnecessary `readPackage` function (Dario Piotrowicz) [#57596](https://github.com/nodejs/node/pull/57596) +- \[[`1e490aa570`](https://github.com/nodejs/node/commit/1e490aa570)] - **module**: improve typescript error message format (Marco Ippolito) [#57687](https://github.com/nodejs/node/pull/57687) +- \[[`ecd081df82`](https://github.com/nodejs/node/commit/ecd081df82)] - **node-api**: add nested object wrap and napi_ref test (Chengzhong Wu) [#57981](https://github.com/nodejs/node/pull/57981) +- \[[`b4f6aa8a87`](https://github.com/nodejs/node/commit/b4f6aa8a87)] - **node-api**: convert NewEnv to node_napi_env\_\_::New (Vladimir Morozov) [#57834](https://github.com/nodejs/node/pull/57834) +- \[[`8cd98220af`](https://github.com/nodejs/node/commit/8cd98220af)] - **os**: fix netmask format check condition in getCIDR function (Wiyeong Seo) [#57324](https://github.com/nodejs/node/pull/57324) +- \[[`8b83ab39e3`](https://github.com/nodejs/node/commit/8b83ab39e3)] - **process**: disable building execve on IBM i (Abdirahim Musse) [#57883](https://github.com/nodejs/node/pull/57883) +- \[[`9230f22029`](https://github.com/nodejs/node/commit/9230f22029)] - **process**: remove support for undocumented symbol (Antoine du Hamel) [#56552](https://github.com/nodejs/node/pull/56552) +- \[[`5835de65ee`](https://github.com/nodejs/node/commit/5835de65ee)] - **quic**: fix debug log (jakecastelli) [#57689](https://github.com/nodejs/node/pull/57689) +- \[[`14b357940c`](https://github.com/nodejs/node/commit/14b357940c)] - _**Revert**_ "**readline**: add stricter validation for functions called after closed" (Dario Piotrowicz) [#58024](https://github.com/nodejs/node/pull/58024) +- \[[`ab99ee6f4c`](https://github.com/nodejs/node/commit/ab99ee6f4c)] - **repl**: fix multiline history editing string order (Giovanni Bucci) [#57874](https://github.com/nodejs/node/pull/57874) +- \[[`160da87484`](https://github.com/nodejs/node/commit/160da87484)] - **repl**: deprecate `repl.builtinModules` (Dario Piotrowicz) [#57508](https://github.com/nodejs/node/pull/57508) +- \[[`10eb2b079e`](https://github.com/nodejs/node/commit/10eb2b079e)] - **sqlite**: add location method (Edy Silva) [#57860](https://github.com/nodejs/node/pull/57860) +- \[[`da05addc5e`](https://github.com/nodejs/node/commit/da05addc5e)] - **sqlite**: add getter to detect transactions (Colin Ihrig) [#57925](https://github.com/nodejs/node/pull/57925) +- \[[`0df87e07a0`](https://github.com/nodejs/node/commit/0df87e07a0)] - **sqlite**: add timeout options to DatabaseSync (Edy Silva) [#57752](https://github.com/nodejs/node/pull/57752) +- \[[`2b2a0bf96b`](https://github.com/nodejs/node/commit/2b2a0bf96b)] - **sqlite**: add setReturnArrays method to StatementSync (Gürgün Dayıoğlu) [#57542](https://github.com/nodejs/node/pull/57542) +- \[[`064e0ebc90`](https://github.com/nodejs/node/commit/064e0ebc90)] - **sqlite**: enable common flags (Edy Silva) [#57621](https://github.com/nodejs/node/pull/57621) +- \[[`26fa594454`](https://github.com/nodejs/node/commit/26fa594454)] - **sqlite**: refactor prepared statement iterator (Colin Ihrig) [#57569](https://github.com/nodejs/node/pull/57569) +- \[[`0bf2c2827c`](https://github.com/nodejs/node/commit/0bf2c2827c)] - **sqlite,doc,test**: add aggregate function (Edy Silva) [#56600](https://github.com/nodejs/node/pull/56600) +- \[[`da281d7651`](https://github.com/nodejs/node/commit/da281d7651)] - **sqlite,src**: refactor sqlite value conversion (Edy Silva) [#57571](https://github.com/nodejs/node/pull/57571) +- \[[`413e93ce7d`](https://github.com/nodejs/node/commit/413e93ce7d)] - **src**: only block on user blocking worker tasks (Joyee Cheung) [#58047](https://github.com/nodejs/node/pull/58047) +- \[[`a5d01667e1`](https://github.com/nodejs/node/commit/a5d01667e1)] - **src**: use priority queue to run worker tasks (Joyee Cheung) [#58047](https://github.com/nodejs/node/pull/58047) +- \[[`d2f5ceb757`](https://github.com/nodejs/node/commit/d2f5ceb757)] - **src**: add more debug logs and comments in NodePlatform (Joyee Cheung) [#58047](https://github.com/nodejs/node/pull/58047) +- \[[`130eaa20a4`](https://github.com/nodejs/node/commit/130eaa20a4)] - **src**: improve parsing of boolean options (Edy Silva) [#58039](https://github.com/nodejs/node/pull/58039) +- \[[`f7ab6300de`](https://github.com/nodejs/node/commit/f7ab6300de)] - **src**: remove unused detachArrayBuffer method (Yagiz Nizipli) [#58055](https://github.com/nodejs/node/pull/58055) +- \[[`d712aa4cc0`](https://github.com/nodejs/node/commit/d712aa4cc0)] - **src**: fix internalModuleStat v8 fast path (Yagiz Nizipli) [#58054](https://github.com/nodejs/node/pull/58054) +- \[[`902cbe66a2`](https://github.com/nodejs/node/commit/902cbe66a2)] - **src**: fix EnvironmentOptions.async_context_frame default value (Chengzhong Wu) [#58030](https://github.com/nodejs/node/pull/58030) +- \[[`cfb39b9adb`](https://github.com/nodejs/node/commit/cfb39b9adb)] - **src**: annotate BaseObjects in the heap snapshots correctly (Joyee Cheung) [#57417](https://github.com/nodejs/node/pull/57417) +- \[[`4e02f239e4`](https://github.com/nodejs/node/commit/4e02f239e4)] - **src**: use macros to reduce code duplication is cares_wrap (James M Snell) [#57937](https://github.com/nodejs/node/pull/57937) +- \[[`f36d30043a`](https://github.com/nodejs/node/commit/f36d30043a)] - **src**: improve error handling in cares_wrap (James M Snell) [#57937](https://github.com/nodejs/node/pull/57937) +- \[[`88f047b828`](https://github.com/nodejs/node/commit/88f047b828)] - **src**: use ranges library (C++20) to simplify code (Daniel Lemire) [#57975](https://github.com/nodejs/node/pull/57975) +- \[[`09206e9731`](https://github.com/nodejs/node/commit/09206e9731)] - **src**: fix -Wunreachable-code-return in node_sea (Shelley Vohr) [#57664](https://github.com/nodejs/node/pull/57664) +- \[[`87fd838a73`](https://github.com/nodejs/node/commit/87fd838a73)] - **src**: add dcheck_eq for Object::New constructor calls (Jonas) [#57943](https://github.com/nodejs/node/pull/57943) +- \[[`2877207e19`](https://github.com/nodejs/node/commit/2877207e19)] - **src**: move windows specific fns to `_WIN32` (Yagiz Nizipli) [#57951](https://github.com/nodejs/node/pull/57951) +- \[[`b4055150bd`](https://github.com/nodejs/node/commit/b4055150bd)] - **src**: avoid calling SetPrototypeV2() (Yagiz Nizipli) [#57949](https://github.com/nodejs/node/pull/57949) +- \[[`46062f14e7`](https://github.com/nodejs/node/commit/46062f14e7)] - **src**: change DCHECK to CHECK (Wuli Zuo) [#57948](https://github.com/nodejs/node/pull/57948) +- \[[`a1106cc878`](https://github.com/nodejs/node/commit/a1106cc878)] - **src**: improve thread safety of TaskQueue (Shelley Vohr) [#57910](https://github.com/nodejs/node/pull/57910) +- \[[`99ed5034ea`](https://github.com/nodejs/node/commit/99ed5034ea)] - **src**: fixup errorhandling more in various places (James M Snell) [#57852](https://github.com/nodejs/node/pull/57852) +- \[[`227f2cb9a8`](https://github.com/nodejs/node/commit/227f2cb9a8)] - **src**: fix typo in comments (Edy Silva) [#57868](https://github.com/nodejs/node/pull/57868) +- \[[`a7d614a930`](https://github.com/nodejs/node/commit/a7d614a930)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#57646](https://github.com/nodejs/node/pull/57646) +- \[[`4e7ae97dce`](https://github.com/nodejs/node/commit/4e7ae97dce)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#57642](https://github.com/nodejs/node/pull/57642) +- \[[`aab4adb34e`](https://github.com/nodejs/node/commit/aab4adb34e)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#57578](https://github.com/nodejs/node/pull/57578) +- \[[`fded233676`](https://github.com/nodejs/node/commit/fded233676)] - **src**: migrate from deprecated SnapshotCreator constructor (Joyee Cheung) [#55337](https://github.com/nodejs/node/pull/55337) +- \[[`8c5f9b4708`](https://github.com/nodejs/node/commit/8c5f9b4708)] - **src**: improve error message for invalid child stdio type in spawn_sync (Dario Piotrowicz) [#57589](https://github.com/nodejs/node/pull/57589) +- \[[`14d751a736`](https://github.com/nodejs/node/commit/14d751a736)] - **src**: implement util.types fast API calls (Ruben Bridgewater) [#57819](https://github.com/nodejs/node/pull/57819) +- \[[`5e14fd13aa`](https://github.com/nodejs/node/commit/5e14fd13aa)] - **src**: enter and lock isolate properly in json parser (Joyee Cheung) [#57823](https://github.com/nodejs/node/pull/57823) +- \[[`34350019f8`](https://github.com/nodejs/node/commit/34350019f8)] - **src**: add BaseObjectPtr nullptr operations (Chengzhong Wu) [#56585](https://github.com/nodejs/node/pull/56585) +- \[[`d50b8a8815`](https://github.com/nodejs/node/commit/d50b8a8815)] - **src**: remove `void*` -> `char*` -> `void*` casts (Tobias Nießen) [#57791](https://github.com/nodejs/node/pull/57791) +- \[[`2b0f65ed5f`](https://github.com/nodejs/node/commit/2b0f65ed5f)] - **src**: improve error handling in `node_env_var.cc` (Antoine du Hamel) [#57767](https://github.com/nodejs/node/pull/57767) +- \[[`fc5295521a`](https://github.com/nodejs/node/commit/fc5295521a)] - **src**: improve error handling in node_http2 (James M Snell) [#57764](https://github.com/nodejs/node/pull/57764) +- \[[`c707633f45`](https://github.com/nodejs/node/commit/c707633f45)] - **src**: improve error handing in node_messaging (James M Snell) [#57760](https://github.com/nodejs/node/pull/57760) +- \[[`4093de6ff5`](https://github.com/nodejs/node/commit/4093de6ff5)] - **src**: improve error handling in crypto_x509 (James M Snell) [#57757](https://github.com/nodejs/node/pull/57757) +- \[[`d309712820`](https://github.com/nodejs/node/commit/d309712820)] - **src**: improve error handling in callback.cc (James M Snell) [#57758](https://github.com/nodejs/node/pull/57758) +- \[[`6d39c47ee8`](https://github.com/nodejs/node/commit/6d39c47ee8)] - **src**: improve StringBytes error handling (James M Snell) [#57706](https://github.com/nodejs/node/pull/57706) +- \[[`3ff37a844f`](https://github.com/nodejs/node/commit/3ff37a844f)] - **src**: initialize privateSymbols for per_context (Jason Zhang) [#57479](https://github.com/nodejs/node/pull/57479) +- \[[`56380df40c`](https://github.com/nodejs/node/commit/56380df40c)] - **src**: improve error handling in process.env handling (James M Snell) [#57707](https://github.com/nodejs/node/pull/57707) +- \[[`db8b29d282`](https://github.com/nodejs/node/commit/db8b29d282)] - **src**: remove unused variable in crypto_x509.cc (Michaël Zasso) [#57754](https://github.com/nodejs/node/pull/57754) +- \[[`ed72044cca`](https://github.com/nodejs/node/commit/ed72044cca)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#57733](https://github.com/nodejs/node/pull/57733) +- \[[`50f57073d8`](https://github.com/nodejs/node/commit/50f57073d8)] - **src**: fix kill signal 0 on Windows (Stefan Stojanovic) [#57695](https://github.com/nodejs/node/pull/57695) +- \[[`e144b69044`](https://github.com/nodejs/node/commit/e144b69044)] - **src**: fixup fs SyncCall to propagate errors correctly (James M Snell) [#57711](https://github.com/nodejs/node/pull/57711) +- \[[`f58c12078b`](https://github.com/nodejs/node/commit/f58c12078b)] - **src**: fix inefficient usage of v8_inspector::StringView (Simon Zünd) [#52372](https://github.com/nodejs/node/pull/52372) +- \[[`a3ad331ce5`](https://github.com/nodejs/node/commit/a3ad331ce5)] - **src**: disable abseil deadlock detection (Chengzhong Wu) [#57582](https://github.com/nodejs/node/pull/57582) +- \[[`e4ff2b6fad`](https://github.com/nodejs/node/commit/e4ff2b6fad)] - **src**: remove deleted tls file (Shelley Vohr) [#57481](https://github.com/nodejs/node/pull/57481) +- \[[`d5db63a1a8`](https://github.com/nodejs/node/commit/d5db63a1a8)] - _**Revert**_ "**src**: do not expose simdjson.h in node_config_file.h" (James M Snell) [#57197](https://github.com/nodejs/node/pull/57197) +- \[[`076a99f11d`](https://github.com/nodejs/node/commit/076a99f11d)] - **src**: do not expose simdjson.h in node_config_file.h (Cheng) [#57173](https://github.com/nodejs/node/pull/57173) +- \[[`ad845588d0`](https://github.com/nodejs/node/commit/ad845588d0)] - _**Revert**_ "**src**: modernize cleanup queue to use c++20" (Richard Lau) [#56846](https://github.com/nodejs/node/pull/56846) +- \[[`581b44421a`](https://github.com/nodejs/node/commit/581b44421a)] - **src**: modernize cleanup queue to use c++20 (Yagiz Nizipli) [#56063](https://github.com/nodejs/node/pull/56063) +- \[[`a154352215`](https://github.com/nodejs/node/commit/a154352215)] - **src,permission**: make ERR_ACCESS_DENIED more descriptive (Rafael Gonzaga) [#57585](https://github.com/nodejs/node/pull/57585) +- \[[`6156f8a6d5`](https://github.com/nodejs/node/commit/6156f8a6d5)] - _**Revert**_ "**stream**: handle generator destruction from Duplex.from()" (jakecastelli) [#56278](https://github.com/nodejs/node/pull/56278) +- \[[`a0077c9b8b`](https://github.com/nodejs/node/commit/a0077c9b8b)] - **test**: remove deadlock workaround (Joyee Cheung) [#58047](https://github.com/nodejs/node/pull/58047) +- \[[`1f2b26172a`](https://github.com/nodejs/node/commit/1f2b26172a)] - **test**: prevent extraneous HOSTNAME substitution in test-runner-output (René) [#58076](https://github.com/nodejs/node/pull/58076) +- \[[`9ba16469c3`](https://github.com/nodejs/node/commit/9ba16469c3)] - **test**: update WPT for WebCryptoAPI to b48efd681e (Node.js GitHub Bot) [#58044](https://github.com/nodejs/node/pull/58044) +- \[[`3d708e0132`](https://github.com/nodejs/node/commit/3d708e0132)] - **test**: add missing newlines to repl .exit writes (Dario Piotrowicz) [#58041](https://github.com/nodejs/node/pull/58041) +- \[[`3457aee009`](https://github.com/nodejs/node/commit/3457aee009)] - **test**: use validateByRetainingPath in heapdump tests (Joyee Cheung) [#57417](https://github.com/nodejs/node/pull/57417) +- \[[`3d34c5f5e3`](https://github.com/nodejs/node/commit/3d34c5f5e3)] - **test**: add fast api tests for getLibuvNow() (Yagiz Nizipli) [#58022](https://github.com/nodejs/node/pull/58022) +- \[[`b8b019245b`](https://github.com/nodejs/node/commit/b8b019245b)] - **test**: add ALS test using http agent keep alive (Gerhard Stöbich) [#58017](https://github.com/nodejs/node/pull/58017) +- \[[`cbd2abeb8d`](https://github.com/nodejs/node/commit/cbd2abeb8d)] - **test**: deflake test-http2-options-max-headers-block-length (Luigi Pinca) [#57959](https://github.com/nodejs/node/pull/57959) +- \[[`21d052a578`](https://github.com/nodejs/node/commit/21d052a578)] - **test**: rename to getCallSites (Wuli Zuo) [#57948](https://github.com/nodejs/node/pull/57948) +- \[[`f2fd19e641`](https://github.com/nodejs/node/commit/f2fd19e641)] - **test**: force GC in test-file-write-stream4 (Luigi Pinca) [#57930](https://github.com/nodejs/node/pull/57930) +- \[[`7039173398`](https://github.com/nodejs/node/commit/7039173398)] - **test**: enable skipped colorize test (Shima Ryuhei) [#57887](https://github.com/nodejs/node/pull/57887) +- \[[`baa6968f95`](https://github.com/nodejs/node/commit/baa6968f95)] - **test**: update WPT for WebCryptoAPI to 164426ace2 (Node.js GitHub Bot) [#57854](https://github.com/nodejs/node/pull/57854) +- \[[`660d238798`](https://github.com/nodejs/node/commit/660d238798)] - **test**: deflake test-buffer-large-size (jakecastelli) [#57789](https://github.com/nodejs/node/pull/57789) +- \[[`ce2274d52f`](https://github.com/nodejs/node/commit/ce2274d52f)] - **test**: add test for frame count being 0.5 (Jake Yuesong Li) [#57732](https://github.com/nodejs/node/pull/57732) +- \[[`9d2a09db00`](https://github.com/nodejs/node/commit/9d2a09db00)] - **test**: fix the decimal fractions explaination (Jake Yuesong Li) [#57732](https://github.com/nodejs/node/pull/57732) +- \[[`12f4124af8`](https://github.com/nodejs/node/commit/12f4124af8)] - _**Revert**_ "**test**: add tests for REPL custom evals" (Tobias Nießen) [#57793](https://github.com/nodejs/node/pull/57793) +- \[[`3cdf8ec7c7`](https://github.com/nodejs/node/commit/3cdf8ec7c7)] - **test**: add tests for REPL custom evals (Dario Piotrowicz) [#57691](https://github.com/nodejs/node/pull/57691) +- \[[`9af8b92fb4`](https://github.com/nodejs/node/commit/9af8b92fb4)] - **test**: update expected error message for macOS (Antoine du Hamel) [#57742](https://github.com/nodejs/node/pull/57742) +- \[[`eaec2b5169`](https://github.com/nodejs/node/commit/eaec2b5169)] - **test**: fix dangling promise in test_runner no isolation test setup (Jacob Smith) [#57595](https://github.com/nodejs/node/pull/57595) +- \[[`51ded6eaeb`](https://github.com/nodejs/node/commit/51ded6eaeb)] - **test**: improve test description (jakecastelli) [#56943](https://github.com/nodejs/node/pull/56943) +- \[[`75b9c1cdd8`](https://github.com/nodejs/node/commit/75b9c1cdd8)] - **test**: remove test-macos-app-sandbox flaky designation (Luigi Pinca) [#56471](https://github.com/nodejs/node/pull/56471) +- \[[`72537f5631`](https://github.com/nodejs/node/commit/72537f5631)] - **test**: remove flaky test-pipe-file-to-http designation (Luigi Pinca) [#56472](https://github.com/nodejs/node/pull/56472) +- \[[`984a472137`](https://github.com/nodejs/node/commit/984a472137)] - **test**: remove test-runner-watch-mode-complex flaky designation (Luigi Pinca) [#56470](https://github.com/nodejs/node/pull/56470) +- \[[`23275cc7bc`](https://github.com/nodejs/node/commit/23275cc7bc)] - **test**: add test case for `util.inspect` (Jordan Harband) [#55778](https://github.com/nodejs/node/pull/55778) +- \[[`99e4685636`](https://github.com/nodejs/node/commit/99e4685636)] - **test_runner**: support mocking json modules (Jacob Smith) [#58007](https://github.com/nodejs/node/pull/58007) +- \[[`8207828aad`](https://github.com/nodejs/node/commit/8207828aad)] - **test_runner**: recalculate run duration on watch restart (Pietro Marchini) [#57786](https://github.com/nodejs/node/pull/57786) +- \[[`7416a7f35a`](https://github.com/nodejs/node/commit/7416a7f35a)] - **test_runner**: match minimum file column to 'all files' (Shima Ryuhei) [#57848](https://github.com/nodejs/node/pull/57848) +- \[[`87ac6cfed7`](https://github.com/nodejs/node/commit/87ac6cfed7)] - **test_runner**: improve --test-timeout to be per test (jakecastelli) [#57672](https://github.com/nodejs/node/pull/57672) +- \[[`ae08210e37`](https://github.com/nodejs/node/commit/ae08210e37)] - **tools**: ignore V8 tests in CodeQL scans (Rich Trott) [#58081](https://github.com/nodejs/node/pull/58081) +- \[[`25c17ab365`](https://github.com/nodejs/node/commit/25c17ab365)] - **tools**: enable CodeQL config file (Rich Trott) [#58036](https://github.com/nodejs/node/pull/58036) +- \[[`c3d2a1c723`](https://github.com/nodejs/node/commit/c3d2a1c723)] - **tools**: ignore test directory in CodeQL scans (Rich Trott) [#57978](https://github.com/nodejs/node/pull/57978) +- \[[`d31e630462`](https://github.com/nodejs/node/commit/d31e630462)] - **tools**: add semver-major release support to release-lint (Antoine du Hamel) [#57892](https://github.com/nodejs/node/pull/57892) +- \[[`3a99975a88`](https://github.com/nodejs/node/commit/3a99975a88)] - **tools**: add codeql nightly (Rafael Gonzaga) [#57788](https://github.com/nodejs/node/pull/57788) +- \[[`77dee41a5d`](https://github.com/nodejs/node/commit/77dee41a5d)] - **tools**: edit create-release-proposal workflow to handle pr body length (Elves Vieira) [#57841](https://github.com/nodejs/node/pull/57841) +- \[[`6592803bd0`](https://github.com/nodejs/node/commit/6592803bd0)] - **tools**: add zstd updater to workflow (KASEYA\yahor.siarheyenka) [#57831](https://github.com/nodejs/node/pull/57831) +- \[[`c08349393b`](https://github.com/nodejs/node/commit/c08349393b)] - **tools**: remove unused `osx-pkg-postinstall.sh` (Antoine du Hamel) [#57667](https://github.com/nodejs/node/pull/57667) +- \[[`82bb228796`](https://github.com/nodejs/node/commit/82bb228796)] - **tools**: do not use temp files when merging PRs (Antoine du Hamel) [#57790](https://github.com/nodejs/node/pull/57790) +- \[[`f2cdc98e75`](https://github.com/nodejs/node/commit/f2cdc98e75)] - **tools**: update gyp-next to 0.20.0 (Node.js GitHub Bot) [#57683](https://github.com/nodejs/node/pull/57683) +- \[[`02d36cd61d`](https://github.com/nodejs/node/commit/02d36cd61d)] - **tools**: update doc to new version (Node.js GitHub Bot) [#57769](https://github.com/nodejs/node/pull/57769) +- \[[`74ac98c78e`](https://github.com/nodejs/node/commit/74ac98c78e)] - **tools**: bump the eslint group in /tools/eslint with 4 updates (dependabot\[bot]) [#57721](https://github.com/nodejs/node/pull/57721) +- \[[`dcba975031`](https://github.com/nodejs/node/commit/dcba975031)] - **tools**: enable linter in `test/fixtures/source-map/output` (Antoine du Hamel) [#57700](https://github.com/nodejs/node/pull/57700) +- \[[`b9043c9e9b`](https://github.com/nodejs/node/commit/b9043c9e9b)] - **tools**: enable linter in `test/fixtures/errors` (Antoine du Hamel) [#57701](https://github.com/nodejs/node/pull/57701) +- \[[`bbbf49812e`](https://github.com/nodejs/node/commit/bbbf49812e)] - **tools**: enable linter in `test/fixtures/test-runner/output` (Antoine du Hamel) [#57698](https://github.com/nodejs/node/pull/57698) +- \[[`9f1ad3c6da`](https://github.com/nodejs/node/commit/9f1ad3c6da)] - **tools**: enable linter in `test/fixtures/eval` (Antoine du Hamel) [#57699](https://github.com/nodejs/node/pull/57699) +- \[[`98df74464f`](https://github.com/nodejs/node/commit/98df74464f)] - **tools**: enable linter on some fixtures file (Antoine du Hamel) [#57674](https://github.com/nodejs/node/pull/57674) +- \[[`cf02cdb799`](https://github.com/nodejs/node/commit/cf02cdb799)] - **tools**: update ESLint to 9.23 (Antoine du Hamel) [#57673](https://github.com/nodejs/node/pull/57673) +- \[[`8790348303`](https://github.com/nodejs/node/commit/8790348303)] - **tools**: update doc to new version (Node.js GitHub Bot) [#57085](https://github.com/nodejs/node/pull/57085) +- \[[`b1ee186a62`](https://github.com/nodejs/node/commit/b1ee186a62)] - **tools**: update doc to new version (Node.js GitHub Bot) [#51192](https://github.com/nodejs/node/pull/51192) +- \[[`be34b5e7fc`](https://github.com/nodejs/node/commit/be34b5e7fc)] - **tools**: disable doc building when ICU is not available (Antoine du Hamel) [#51192](https://github.com/nodejs/node/pull/51192) +- \[[`6a486347fb`](https://github.com/nodejs/node/commit/6a486347fb)] - **url**: improve canParse() performance for non-onebyte strings (Yagiz Nizipli) [#58023](https://github.com/nodejs/node/pull/58023) +- \[[`7e3503fff1`](https://github.com/nodejs/node/commit/7e3503fff1)] - **util**: fix parseEnv handling of invalid lines (Augustin Mauroy) [#57798](https://github.com/nodejs/node/pull/57798) +- \[[`594269fcca`](https://github.com/nodejs/node/commit/594269fcca)] - **util**: fix formatting of objects with built-in Symbol.toPrimitive (Shima Ryuhei) [#57832](https://github.com/nodejs/node/pull/57832) +- \[[`8ca56a8db8`](https://github.com/nodejs/node/commit/8ca56a8db8)] - **util**: preserve `length` of deprecated functions (Livia Medeiros) [#57806](https://github.com/nodejs/node/pull/57806) +- \[[`6add4c56aa`](https://github.com/nodejs/node/commit/6add4c56aa)] - **util**: fix parseEnv incorrectly splitting multiple ‘=‘ in value (HEESEUNG) [#57421](https://github.com/nodejs/node/pull/57421) +- \[[`e577618227`](https://github.com/nodejs/node/commit/e577618227)] - **util**: inspect: enumerable Symbols no longer have square brackets (Jordan Harband) [#55778](https://github.com/nodejs/node/pull/55778) +- \[[`cb7eb15161`](https://github.com/nodejs/node/commit/cb7eb15161)] - **watch**: clarify completion/failure watch mode messages (Dario Piotrowicz) [#57926](https://github.com/nodejs/node/pull/57926) +- \[[`65562127bd`](https://github.com/nodejs/node/commit/65562127bd)] - **watch**: check parent and child path properly (Jason Zhang) [#57425](https://github.com/nodejs/node/pull/57425) +- \[[`b39fb9aa7f`](https://github.com/nodejs/node/commit/b39fb9aa7f)] - **win**: fix SIGQUIT on ClangCL (Stefan Stojanovic) [#57659](https://github.com/nodejs/node/pull/57659) +- \[[`76c5ea669d`](https://github.com/nodejs/node/commit/76c5ea669d)] - **worker**: add ESM version examples to worker docs (fisker Cheung) [#57645](https://github.com/nodejs/node/pull/57645) +- \[[`17965eb33d`](https://github.com/nodejs/node/commit/17965eb33d)] - **zlib**: fix pointer alignment (jhofstee) [#57727](https://github.com/nodejs/node/pull/57727) + +Windows 64-bit Installer: https://nodejs.org/dist/v24.0.0/node-v24.0.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.0.0/node-v24.0.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v24.0.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.0.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v24.0.0/node-v24.0.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: _Coming soon_ \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v24.0.0/node-v24.0.0.tar.gz \ +Other release files: https://nodejs.org/dist/v24.0.0/ \ +Documentation: https://nodejs.org/docs/v24.0.0/api/ + +### SHASUMS + +``` +[INSERT SHASUMS HERE] +``` From 6ad40cc76427ea554a0bd06e287843dfd2571497 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Tue, 6 May 2025 17:00:53 +0200 Subject: [PATCH 0456/1385] fix: v24.0.0 blog post (#7728) Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --- apps/site/pages/en/blog/release/v24.0.0.md | 51 +++++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/blog/release/v24.0.0.md b/apps/site/pages/en/blog/release/v24.0.0.md index e17474ab83ea9..11a6b28159915 100644 --- a/apps/site/pages/en/blog/release/v24.0.0.md +++ b/apps/site/pages/en/blog/release/v24.0.0.md @@ -477,7 +477,6 @@ Linux 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-x64.tar. Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-ppc64le.tar.xz \ Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-s390x.tar.xz \ AIX 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-aix-ppc64.tar.gz \ -ARMv7 32-bit Binary: _Coming soon_ \ ARMv8 64-bit Binary: https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-arm64.tar.xz \ Source Code: https://nodejs.org/dist/v24.0.0/node-v24.0.0.tar.gz \ Other release files: https://nodejs.org/dist/v24.0.0/ \ @@ -486,5 +485,53 @@ Documentation: https://nodejs.org/docs/v24.0.0/api/ ### SHASUMS ``` -[INSERT SHASUMS HERE] +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +0befccb7064fd8430adc6cc749cf1df5be592c704d876ec0964c310cd36291f5 node-v24.0.0-aix-ppc64.tar.gz +feb30061237f2ca01720869fdd1b7b7fbed5808c7912a6860b4c4a31543232c9 node-v24.0.0-arm64.msi +194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121 node-v24.0.0-darwin-arm64.tar.gz +2094ffe8d719e19a50105666828867730a43161dcd18f64a31e442fdce9f7b1d node-v24.0.0-darwin-arm64.tar.xz +f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a node-v24.0.0-darwin-x64.tar.gz +c88f0dbac5a2e693296e5651f0df515d5e672fdfc689e8fc54d93ed88928cc52 node-v24.0.0-darwin-x64.tar.xz +4605ee37eef345568f43de8c1843f3f7a243865654c1e942c50584de6bd59bb5 node-v24.0.0-headers.tar.gz +8e3e44a661b0490bf14f3d05499010dc6e059f9aef33982df596d5a364ce8a65 node-v24.0.0-headers.tar.xz +4104136ddd3d2f167d799f1b21bac72ccf500d80c24be849195f831df6371b83 node-v24.0.0-linux-arm64.tar.gz +d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040 node-v24.0.0-linux-arm64.tar.xz +04654c22d8f9fc3021a27f37a95c16f820870908a49cd361f4cf74ed14509a10 node-v24.0.0-linux-ppc64le.tar.gz +cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d node-v24.0.0-linux-ppc64le.tar.xz +aa6fa7c5dc7d699116a39a781eb1685a68e3843d2d95bcd98527fd28922de63a node-v24.0.0-linux-s390x.tar.gz +e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021 node-v24.0.0-linux-s390x.tar.xz +b760ed6de40c35a25eb011b3cf5943d35d7a76f0c8c331d5a801e10925826cb3 node-v24.0.0-linux-x64.tar.gz +59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7 node-v24.0.0-linux-x64.tar.xz +a5109cafaeb7618fc8626ff81d6f6f0150071c619ea6a1cc719a3f0cc4e31beb node-v24.0.0-win-arm64.7z +03b6676f4872fbe4645113de8e23da834a7c1464045369f2b7a374bf482a5e12 node-v24.0.0-win-arm64.zip +22ebf01fa7ef63ffb48a9cd23feec0d790d9e427d7b99166a49ec8ae5cb637cd node-v24.0.0-win-x64.7z +3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304 node-v24.0.0-win-x64.zip +e57f5d12f116def6595c546a6fcdd24fc7724d570f626ffab4bd0b8f83e4b2c2 node-v24.0.0-x64.msi +46925583196e44236dd87e53b8c77dc3399e60ab36703961d5d3f11221cf7ab6 node-v24.0.0.pkg +144fec7c01052003ddc1f7fb2f3d698ac897711659c1017f60ac8b45e672ba17 node-v24.0.0.tar.gz +914f3f1b03f84a0994d7357f190ff13c038800c693b6c06da2290eb588c82761 node-v24.0.0.tar.xz +5ec9ccc3b95820c8d7cfeb04ce2ca41dfaeeca36235def87432bee44e0a2c5e5 win-arm64/node.exe +6809fc156673d10cca7dff0e54f28309bb111d235c54493a4a0ca401c2113be7 win-arm64/node.lib +e3bdd19b5df3958f619c0de0b584a55901e743b43f5666453af43f0fe39f628d win-arm64/node_pdb.7z +eddea458a851b6a17012d41e38b33500230043f519438d552c8d830de2378823 win-arm64/node_pdb.zip +ade7ce4d4ff97447aa4fdcf2ae9e9094cbfaca0b135475cac621349bc2d335ab win-x64/node.exe +34882ca2bb450431047f2dd3bae1c3b8c1cd2b4cffd5c1a0bf079948846d2b83 win-x64/node.lib +6679dd6097746e68bb2711c2db88c9c1ba4937fe79e5ba6e9a3653eeedf3fe30 win-x64/node_pdb.7z +fc9bfef712207a441620976078fd105246aadd00bd08d3d88b939b2bc4541a2a win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmgaHTcACgkQi+q0389V +XvS60Av6AncIZXko7m+eijPHMGGatMpn/ZWnQnd7bn+BYoDkj7nY9TyIIOd+H29N +b9cVIqaS/QI+5Y8yJ9I313EODwCbfHgSMv+XsMFqT0aDmD0u9MNSu+CO425Ve6l0 +z1AyI0iDLQn4xmJEZ8qyidAl16urOArBj8uR/K9Hai4SXjiVoC5P2nuDPupLV5pJ +7CKXyrKsQHBibNE4/s+08pYJmIUZ0sLSG0BD2rPzmJC2IcHmiTerNKJGzXGxo9T/ +iTX4lgEyRGShOE1O9PUIBSSzugv9Nkkm208PLDVJtM/ot0XIbg3NFQlKGkdaRMD1 +Rh6FJ+T3SF6iNFdX4VnhfhdcEP7ygw946c7M9uZT/+4gL6E3RsB+IPTdrLAAzWig +s+BDHVVFlvZwBesS4bkhnyVLFOEkpMHY3hIGc8iMcmvXbu8WtolsULQAA0v6i4mh +mmP7ClxkFmM/RVSE1MH62GDq46meBHUDFP8P93/8zo5oMzDtt6Rbn0vZ+SxKzUY2 +rkG2dAH+ +=O7VR +-----END PGP SIGNATURE----- ``` From 87c918ed24d5f91cab878307edc13be173497fbb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 11:53:57 -0400 Subject: [PATCH 0457/1385] meta: bump shiki from 3.1.0 to 3.3.0 in the mdx group (#7724) Bumps the mdx group with 1 update: [shiki](https://github.com/shikijs/shiki/tree/HEAD/packages/shiki). Updates `shiki` from 3.1.0 to 3.3.0 - [Release notes](https://github.com/shikijs/shiki/releases) - [Commits](https://github.com/shikijs/shiki/commits/v3.3.0/packages/shiki) --- updated-dependencies: - dependency-name: shiki dependency-version: 3.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mdx ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- pnpm-lock.yaml | 82 ++++++++++++------------------------------ 2 files changed, 24 insertions(+), 60 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 7adfd55528d71..266b9d4093df6 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -66,7 +66,7 @@ "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.1", "semver": "~7.7.1", - "shiki": "~3.1.0", + "shiki": "~3.3.0", "sval": "^0.6.3", "tailwindcss": "~4.0.17", "unist-util-visit": "~5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e952dd34388e6..ffa15d561ac56 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -184,8 +184,8 @@ importers: specifier: ~7.7.1 version: 7.7.1 shiki: - specifier: ~3.1.0 - version: 3.1.0 + specifier: ~3.3.0 + version: 3.3.0 sval: specifier: ^0.6.3 version: 0.6.7 @@ -1621,45 +1621,36 @@ packages: '@shikijs/core@1.29.2': resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} - '@shikijs/core@3.1.0': - resolution: {integrity: sha512-1ppAOyg3F18N8Ge9DmJjGqRVswihN33rOgPovR6gUHW17Hw1L4RlRhnmVQcsacSHh0A8IO1FIgNbtTxUFwodmg==} - '@shikijs/core@3.3.0': resolution: {integrity: sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ==} '@shikijs/engine-javascript@1.29.2': resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} - '@shikijs/engine-javascript@3.1.0': - resolution: {integrity: sha512-/LwkhW17jYi7uPcdaaSQQDNW+xgrHXarkrxYPoC6WPzH2xW5mFMw12doHXJBqxmYvtcTbaatcv2MkH9+3PU1FA==} - '@shikijs/engine-javascript@3.3.0': resolution: {integrity: sha512-XlhnFGv0glq7pfsoN0KyBCz9FJU678LZdQ2LqlIdAj6JKsg5xpYKay3DkazXWExp3DTJJK9rMOuGzU2911pg7Q==} '@shikijs/engine-oniguruma@1.29.2': resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} - '@shikijs/engine-oniguruma@3.1.0': - resolution: {integrity: sha512-reRgy8VzDPdiDocuGDD60Rk/jLxgcgy+6H4n6jYLeN2Yw5ikasRjQQx8ERXtDM35yg2v/d6KolDBcK8hYYhcmw==} + '@shikijs/engine-oniguruma@3.3.0': + resolution: {integrity: sha512-l0vIw+GxeNU7uGnsu6B+Crpeqf+WTQ2Va71cHb5ZYWEVEPdfYwY5kXwYqRJwHrxz9WH+pjSpXQz+TJgAsrkA5A==} '@shikijs/langs@1.29.2': resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} - '@shikijs/langs@3.1.0': - resolution: {integrity: sha512-hAM//sExPXAXG3ZDWjrmV6Vlw4zlWFOcT1ZXNhFRBwPP27scZu/ZIdZ+TdTgy06zSvyF4KIjnF8j6+ScKGu6ww==} + '@shikijs/langs@3.3.0': + resolution: {integrity: sha512-zt6Kf/7XpBQKSI9eqku+arLkAcDQ3NHJO6zFjiChI8w0Oz6Jjjay7pToottjQGjSDCFk++R85643WbyINcuL+g==} '@shikijs/themes@1.29.2': resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} - '@shikijs/themes@3.1.0': - resolution: {integrity: sha512-A4MJmy9+ydLNbNCtkmdTp8a+ON+MMXoUe1KTkELkyu0+pHGOcbouhNuobhZoK59cL4cOST6CCz1x+kUdkp9UZA==} + '@shikijs/themes@3.3.0': + resolution: {integrity: sha512-tXeCvLXBnqq34B0YZUEaAD1lD4lmN6TOHAhnHacj4Owh7Ptb/rf5XCDeROZt2rEOk5yuka3OOW2zLqClV7/SOg==} '@shikijs/types@1.29.2': resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} - '@shikijs/types@3.1.0': - resolution: {integrity: sha512-F8e7Fy4ihtcNpJG572BZZC1ErYrBrzJ5Cbc9Zi3REgWry43gIvjJ9lFAoUnuy7Bvy4IFz7grUSxL5edfrrjFEA==} - '@shikijs/types@3.3.0': resolution: {integrity: sha512-KPCGnHG6k06QG/2pnYGbFtFvpVJmC3uIpXrAiPrawETifujPBv0Se2oUxm5qYgjCvGJS9InKvjytOdN+bGuX+Q==} @@ -4763,9 +4754,6 @@ packages: oniguruma-to-es@2.3.0: resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} - oniguruma-to-es@3.1.1: - resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} - oniguruma-to-es@4.3.3: resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} @@ -5560,8 +5548,8 @@ packages: shiki@1.29.2: resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} - shiki@3.1.0: - resolution: {integrity: sha512-LdTNyWQlC5zdCaHdcp1zPA1OVA2ivb+KjGOOnGcy02tGaF5ja+dGibWFH7Ar8YlngUgK/scDqworK18Ys9cbYA==} + shiki@3.3.0: + resolution: {integrity: sha512-j0Z1tG5vlOFGW8JVj0Cpuatzvshes7VJy5ncDmmMaYcmnGW0Js1N81TOW98ivTFNZfKRn9uwEg/aIm638o368g==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -7549,13 +7537,6 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/core@3.1.0': - dependencies: - '@shikijs/types': 3.1.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.5 - '@shikijs/core@3.3.0': dependencies: '@shikijs/types': 3.3.0 @@ -7569,12 +7550,6 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 2.3.0 - '@shikijs/engine-javascript@3.1.0': - dependencies: - '@shikijs/types': 3.1.0 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 3.1.1 - '@shikijs/engine-javascript@3.3.0': dependencies: '@shikijs/types': 3.3.0 @@ -7586,37 +7561,32 @@ snapshots: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.1.0': + '@shikijs/engine-oniguruma@3.3.0': dependencies: - '@shikijs/types': 3.1.0 + '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 '@shikijs/langs@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/langs@3.1.0': + '@shikijs/langs@3.3.0': dependencies: - '@shikijs/types': 3.1.0 + '@shikijs/types': 3.3.0 '@shikijs/themes@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/themes@3.1.0': + '@shikijs/themes@3.3.0': dependencies: - '@shikijs/types': 3.1.0 + '@shikijs/types': 3.3.0 '@shikijs/types@1.29.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.1.0': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - '@shikijs/types@3.3.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 @@ -11362,12 +11332,6 @@ snapshots: regex: 5.1.1 regex-recursion: 5.1.1 - oniguruma-to-es@3.1.1: - dependencies: - emoji-regex-xs: 1.0.0 - regex: 6.0.1 - regex-recursion: 6.0.2 - oniguruma-to-es@4.3.3: dependencies: oniguruma-parser: 0.12.1 @@ -12560,14 +12524,14 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shiki@3.1.0: + shiki@3.3.0: dependencies: - '@shikijs/core': 3.1.0 - '@shikijs/engine-javascript': 3.1.0 - '@shikijs/engine-oniguruma': 3.1.0 - '@shikijs/langs': 3.1.0 - '@shikijs/themes': 3.1.0 - '@shikijs/types': 3.1.0 + '@shikijs/core': 3.3.0 + '@shikijs/engine-javascript': 3.3.0 + '@shikijs/engine-oniguruma': 3.3.0 + '@shikijs/langs': 3.3.0 + '@shikijs/themes': 3.3.0 + '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 From 866bb557aff691958fb44f1b586508e70f125d73 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Thu, 8 May 2025 17:34:47 +0200 Subject: [PATCH 0458/1385] chore(badge): add next-10 (#7726) --- apps/site/site.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/site/site.json b/apps/site/site.json index 1d8f5212bcdbf..13f31ad3e562e 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -37,12 +37,12 @@ }, "websiteBadges": { "index": { - "startDate": "2025-04-01T00:00:00.000Z", - "endDate": "2025-07-01T00:00:00.000Z", + "startDate": "2025-05-06", + "endDate": "2025-05-31", "kind": "default", - "title": "JSConf", - "text": "General Admission Tickets are on sale now!", - "link": "https://events.linuxfoundation.org/jsconf-north-america" + "title": "Next-10 Survey", + "text": "We need your feedback to help us shape Node.js", + "link": "https://linuxfoundation.research.net/r/2025nodenext10" } } } From 862c078202461b5f76583e95251d5948272f446b Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Thu, 8 May 2025 15:09:17 -0300 Subject: [PATCH 0459/1385] Blog: pre release announcement May security releases (#7731) --- .../may-2025-security-releases.md | 39 +++++++++++++++++++ apps/site/site.json | 8 ++-- 2 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md diff --git a/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md new file mode 100644 index 0000000000000..fa6f7a5638c94 --- /dev/null +++ b/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md @@ -0,0 +1,39 @@ +--- +date: 2025-05-08T03:00:00.000Z +category: vulnerability +title: Wednesday, May 14, 2025 Security Releases +slug: may-2025-security-releases +layout: blog-post +author: The Node.js Project +--- + +# Summary + +The Node.js project will release new versions of the 24.x, 23.x, 22.x, 20.x +releases lines on or shortly after, Wednesday, May 14, 2025 in order to address: + +- 1 low severity issues. +- 1 high severity issues. +- 1 medium severity issues. + +## Impact + +The 24.x release line of Node.js is vulnerable to 1 high severity issues. +The 23.x release line of Node.js is vulnerable to 1 high severity issues. +The 22.x release line of Node.js is vulnerable to 1 low severity issues, 1 high severity issues. +The 20.x release line of Node.js is vulnerable to 1 low severity issues, 1 high severity issues, 1 medium severity issues. + +It's important to note that End-of-Life versions are always affected when a security release occurs. +To ensure your system's security, please use an up-to-date version as outlined in our +[Release Schedule](https://github.com/nodejs/release#release-schedule). + +## Release timing + +Releases will be available on, or shortly after, Wednesday, May 14, 2025. + +## Contact and future updates + +The current Node.js security policy can be found at <https://nodejs.org/en/security/>. +Please follow the process outlined in <https://github.com/nodejs/node/blob/master/SECURITY.md> if you wish to report a vulnerability in Node.js. + +Subscribe to the low-volume announcement-only nodejs-sec mailing list at <https://groups.google.com/forum/#!forum/nodejs-sec> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the nodejs GitHub organization. diff --git a/apps/site/site.json b/apps/site/site.json index 13f31ad3e562e..062038f70e93d 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -28,10 +28,10 @@ ], "websiteBanners": { "index": { - "startDate": "2025-04-01T00:00:00.000Z", - "endDate": "2025-06-01T00:00:00.000Z", - "text": "Node.js v18 has reached End-Of-Life on April 30, 2025.", - "link": "https://nodejs.org/en/about/previous-releases#release-schedule", + "startDate": "2025-05-08T03:00:00.000Z", + "endDate": "2025-05-15T03:00:00.000Z", + "text": "New security releases to be made available Wednesday, May 14, 2025", + "link": "https://nodejs.org/en/blog/vulnerability/may-2025-security-releases", "type": "warning" } }, From 071eef93bd1774d3e532315b037a41cabb608e23 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Thu, 8 May 2025 23:54:46 +0200 Subject: [PATCH 0460/1385] Blog: v24.0.1 release post (#7733) Refs: https://github.com/nodejs/node/pull/58226 --- apps/site/pages/en/blog/release/v24.0.1.md | 103 +++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v24.0.1.md diff --git a/apps/site/pages/en/blog/release/v24.0.1.md b/apps/site/pages/en/blog/release/v24.0.1.md new file mode 100644 index 0000000000000..c450262d08a0d --- /dev/null +++ b/apps/site/pages/en/blog/release/v24.0.1.md @@ -0,0 +1,103 @@ +--- +date: '2025-05-08T20:05:05.636Z' +category: release +title: Node v24.0.1 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-05-08, Version 24.0.1 (Current), @aduh95 + +### Notable Changes + +- \[[`2e1d9581e0`](https://github.com/nodejs/node/commit/2e1d9581e0)] - _**Revert**_ "**buffer**: move SlowBuffer to EOL" (Filip Skokan) [#58211](https://github.com/nodejs/node/pull/58211) + +### Commits + +- \[[`d38e811c5b`](https://github.com/nodejs/node/commit/d38e811c5b)] - **benchmark**: fix typo in method name for error-stack (Miguel Marcondes Filho) [#58128](https://github.com/nodejs/node/pull/58128) +- \[[`2e1d9581e0`](https://github.com/nodejs/node/commit/2e1d9581e0)] - _**Revert**_ "**buffer**: move SlowBuffer to EOL" (Filip Skokan) [#58211](https://github.com/nodejs/node/pull/58211) +- \[[`a883b0c979`](https://github.com/nodejs/node/commit/a883b0c979)] - **build**: use //third_party/simdutf by default in GN (Shelley Vohr) [#58115](https://github.com/nodejs/node/pull/58115) +- \[[`3d84b5c7a4`](https://github.com/nodejs/node/commit/3d84b5c7a4)] - **doc**: add HBSPS as triager (Wiyeong Seo) [#57980](https://github.com/nodejs/node/pull/57980) +- \[[`1e57cb686e`](https://github.com/nodejs/node/commit/1e57cb686e)] - **doc**: add history entries to `--input-type` section (Antoine du Hamel) [#58175](https://github.com/nodejs/node/pull/58175) +- \[[`0b54f06b6f`](https://github.com/nodejs/node/commit/0b54f06b6f)] - **doc**: add ambassaor message (Brian Muenzenmeyer) [#57600](https://github.com/nodejs/node/pull/57600) +- \[[`46bee52d57`](https://github.com/nodejs/node/commit/46bee52d57)] - **doc**: fix misaligned options in vm.compileFunction() (Jimmy Leung) [#58145](https://github.com/nodejs/node/pull/58145) +- \[[`e732a8bfdd`](https://github.com/nodejs/node/commit/e732a8bfdd)] - **doc**: fix typo in benchmark script path (Miguel Marcondes Filho) [#58129](https://github.com/nodejs/node/pull/58129) +- \[[`d49ff34adb`](https://github.com/nodejs/node/commit/d49ff34adb)] - **doc**: add missing options.signal to readlinePromises.createInterface() (Jimmy Leung) [#55456](https://github.com/nodejs/node/pull/55456) +- \[[`bc9f5a2e79`](https://github.com/nodejs/node/commit/bc9f5a2e79)] - **doc**: fix typo of file `zlib.md` (yusheng chen) [#58093](https://github.com/nodejs/node/pull/58093) +- \[[`c8e8558958`](https://github.com/nodejs/node/commit/c8e8558958)] - **doc**: clarify future Corepack removal in v25+ (Trivikram Kamat) [#57825](https://github.com/nodejs/node/pull/57825) +- \[[`b13d5d14bd`](https://github.com/nodejs/node/commit/b13d5d14bd)] - **meta**: bump actions/setup-node from 4.3.0 to 4.4.0 (dependabot\[bot]) [#58111](https://github.com/nodejs/node/pull/58111) +- \[[`0ebb17a300`](https://github.com/nodejs/node/commit/0ebb17a300)] - **meta**: bump actions/setup-python from 5.5.0 to 5.6.0 (dependabot\[bot]) [#58107](https://github.com/nodejs/node/pull/58107) +- \[[`5946785bf4`](https://github.com/nodejs/node/commit/5946785bf4)] - **tools**: exclude deps/v8/tools from CodeQL scans (Rich Trott) [#58132](https://github.com/nodejs/node/pull/58132) +- \[[`0708497c7f`](https://github.com/nodejs/node/commit/0708497c7f)] - **tools**: bump the eslint group in /tools/eslint with 6 updates (dependabot\[bot]) [#58105](https://github.com/nodejs/node/pull/58105) + +Windows 64-bit Installer: https://nodejs.org/dist/v24.0.1/node-v24.0.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.0.1/node-v24.0.1-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v24.0.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.0.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v24.0.1/node-v24.0.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.0.1/node-v24.0.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.0.1/node-v24.0.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v24.0.1/node-v24.0.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.0.1/node-v24.0.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.0.1/node-v24.0.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v24.0.1/node-v24.0.1-aix-ppc64.tar.gz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v24.0.1/node-v24.0.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v24.0.1/node-v24.0.1.tar.gz \ +Other release files: https://nodejs.org/dist/v24.0.1/ \ +Documentation: https://nodejs.org/docs/v24.0.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +264d0432fe5820e74e66a0f94fb9f51959728149985746021a9aae57ebe46761 node-v24.0.1-aix-ppc64.tar.gz +e3c89f37088167a5eb656c6e1d912f06fbc446103f632b18b3149e2baf0b7ec2 node-v24.0.1-arm64.msi +f38faa6ea209aa31f56e5d82ee021ba5b8f149137734d81a31fda65c327f0be4 node-v24.0.1-darwin-arm64.tar.gz +60644415ed97d17a74250b182ae0b634f649db401f36c79c6aace60d0913dd80 node-v24.0.1-darwin-arm64.tar.xz +f0be72400208ff369b1dd4e2b6c0aa09713ad42e8cd99e7abf2a9b1575e2fef5 node-v24.0.1-darwin-x64.tar.gz +b81734d1f82097274f95f1986fcc72c42a7c52a0343eaef0fdc7ffc5e0d9b08f node-v24.0.1-darwin-x64.tar.xz +2205f0b4749dcd2feab66293953c9f6dbab3c509a7771e7821762ebba5ec1235 node-v24.0.1-headers.tar.gz +1891351c25607f4b8770b36174a6092d4bb8acf0a030bc4b05fddfd1d7c8992f node-v24.0.1-headers.tar.xz +45a5ffeff5eae91e64f19575072f0241ff71da49c0cdf69fad360323c587a5bd node-v24.0.1-linux-arm64.tar.gz +9e61592d31480c6835c56d1d605bda0fbfd7311fb4e0e69a9441343ca9b3feb5 node-v24.0.1-linux-arm64.tar.xz +66d74261b98d0aec8bec6b980e0f49c5b95543e4b2d365394cf96c7294b9d5a6 node-v24.0.1-linux-ppc64le.tar.gz +96866845a35098c36ecd391c9e210c59ea482332a2b2cf9933438d91efd3e4e7 node-v24.0.1-linux-ppc64le.tar.xz +a65aac6ec6324c0b81a68bf8a701cb2cb8654be1422866908b42dba680c9368d node-v24.0.1-linux-s390x.tar.gz +1db1bb96fceb0d94105e3c0ebed6001f44bdc70a82d73b92fbc7e5d91e8dd6b3 node-v24.0.1-linux-s390x.tar.xz +58239e217440acffb3889954f1dc0977f46048c54f226e446280fc8feb8c5ab9 node-v24.0.1-linux-x64.tar.gz +12d8b7c7dd9191bd4f3afe872c7d4908ac75d2a6ef06d2ae59c0b4aa384bc875 node-v24.0.1-linux-x64.tar.xz +ddb291b75560600b4ad763b0d1f556a913805ffe301006b5cb637eb728b4e62a node-v24.0.1-win-arm64.7z +64df0c762fd866687f88b059cb4a1da3a2ad50a80f9666a505412868edf61948 node-v24.0.1-win-arm64.zip +88f541641996127887052fe059a96e7e83ae7f0e19aabf04fdd60c9e0da4f7ad node-v24.0.1-win-x64.7z +8bbbc4860ce03f8a6cc7369039f6497be3157c4bde3ad54651cc22f5f3af0b40 node-v24.0.1-win-x64.zip +d2896e3630c14fea0c9f8dd4bc23a6e4974f292cc242714612d4f8a53896f8c1 node-v24.0.1-x64.msi +e1580db46b085b3ebfc7f87489f7340e3ab4d26bb58be516be2a19e92bea73fa node-v24.0.1.pkg +e02f2ad3fe56f74674657f2e76019c99f74a7172b4e5e02db0687e60c4c99508 node-v24.0.1.tar.gz +70271026971808409a7ed6444360d5fe3ef4146c1ca53f2ca290c60d214be84e node-v24.0.1.tar.xz +7a4ca50fa4556c55d0bc6136e278d43f2d9809756906ea68bfe5ae5076ba4ce5 win-arm64/node.exe +6809fc156673d10cca7dff0e54f28309bb111d235c54493a4a0ca401c2113be7 win-arm64/node.lib +afec8ef9e518b93a8f3713693892e50c6984b0f599e5ca5849e191b4437ead9c win-arm64/node_pdb.7z +d15a58efde7cc6d97c2cc56aaab603a6f24bbc6013614de4d14787d6b6daf625 win-arm64/node_pdb.zip +5303ddb655aa510d131bdfd07aeba0e598b03896effe2edc235b2a58369fc4a5 win-x64/node.exe +34882ca2bb450431047f2dd3bae1c3b8c1cd2b4cffd5c1a0bf079948846d2b83 win-x64/node.lib +e0cd0eae609960285f52f98c48a3216c6ec4aeb58b26e9eb316f1eeaeebda841 win-x64/node_pdb.7z +2e6aa8b476595ad1cf1b2b432b59d090e11af4b762af562156faeb4ba118ef2d win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmgdDNsACgkQIdkA/9sj +N1Zs6w//R+vvhpQfYp9JYBvi8eNWciqx4236XlKZc3tWTdoYwAigsdoAQGmvAbRc +MdI2C7Rx9FJSkhRYa76rNo1j40Jw/2wNQjC/+DdI3yHthJl4nUKS/dxkZxw99M4k +0QQMHktq5gANu782AosVwtGYPbmf/1xz4BGoW+NTxqyoNeGFlHgxoQA6d1wvnCWI +NdFcZqzTWFg0ZazCkWVRs0YNS57eVstD+iyJTO8geq84TC1j7DJQjIx0HZI1jrmt +y6ZQP3zdov0aDq9qUJVfPxG9JA3nxLOaIL9tuDcJLJJ9AJBl30p+AD7PrvIfRUye +UqVlVMA675E7IRdep2M3Q0jNpSVy2VsrdPGna//BvK2yMJ6MM0qSpvrMc7RJPrYj +sigsThhkSitqmbRApqWJW+Mf37+jHplGg0k110kfGoI7F10aJJz1QlmOGdWAwyVU +j3xRuqannoRSFjKYmtlpcyowrAePV83n2D8N3bnwoBefHwCxnLZN87L+wB8luS0f +ovX3UNUAx+u/ZP26UOh4qYNVBWLeJXjR1GNcGFChhfc9721blvm5gCqvf/PjMmrx +1BB/ximegO3CRWzo4sMWyq2rLDHEPJMImcYbnP4J2J7MjfLA9iUYKLDfe/5duwWU +gfMRH/uqaxigBOMqsY0VOo4WopvOaT0vr5f3hGUkWSuytG9U8YU= +=5wpg +-----END PGP SIGNATURE----- +``` From f4e5e2b22085a6282486155a543855400e3b0398 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Fri, 9 May 2025 18:28:51 +0200 Subject: [PATCH 0461/1385] fix: remove link to ARMv7 from Node.js 24+ release post template (#7734) --- apps/site/scripts/release-post/downloadsTable.mjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/site/scripts/release-post/downloadsTable.mjs b/apps/site/scripts/release-post/downloadsTable.mjs index 8de6f88d1726f..1a02c4feb5fc7 100644 --- a/apps/site/scripts/release-post/downloadsTable.mjs +++ b/apps/site/scripts/release-post/downloadsTable.mjs @@ -107,6 +107,10 @@ const resolveDownloads = version => { ); } + if (semVer.satisfies(version, '>= 24.0.0')) { + downloads = downloads.filter(ver => ver.title !== 'ARMv7 32-bit Binary'); + } + return downloads; }; From 10a07a1efc29d86e43bd49462917c0b2f9269e3a Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Fri, 9 May 2025 16:47:25 -0300 Subject: [PATCH 0462/1385] Blog: fix markdown may25 sec release (#7737) I'll follow up this in the automation --- .../blog/vulnerability/may-2025-security-releases.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md index fa6f7a5638c94..bc9e63667c6e1 100644 --- a/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md +++ b/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md @@ -12,16 +12,16 @@ author: The Node.js Project The Node.js project will release new versions of the 24.x, 23.x, 22.x, 20.x releases lines on or shortly after, Wednesday, May 14, 2025 in order to address: -- 1 low severity issues. - 1 high severity issues. - 1 medium severity issues. +- 1 low severity issues. ## Impact -The 24.x release line of Node.js is vulnerable to 1 high severity issues. -The 23.x release line of Node.js is vulnerable to 1 high severity issues. -The 22.x release line of Node.js is vulnerable to 1 low severity issues, 1 high severity issues. -The 20.x release line of Node.js is vulnerable to 1 low severity issues, 1 high severity issues, 1 medium severity issues. +- The 24.x release line of Node.js is vulnerable to 1 high severity issues. +- The 23.x release line of Node.js is vulnerable to 1 high severity issues. +- The 22.x release line of Node.js is vulnerable to 1 low severity issues, 1 high severity issues. +- The 20.x release line of Node.js is vulnerable to 1 low severity issues, 1 high severity issues, 1 medium severity issues. It's important to note that End-of-Life versions are always affected when a security release occurs. To ensure your system's security, please use an up-to-date version as outlined in our From 16beaa7085da9f07b74d2bf98828fd1302bf0edc Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz <dario.piotrowicz@gmail.com> Date: Fri, 9 May 2025 22:48:02 +0100 Subject: [PATCH 0463/1385] fix: convert incorrect breadcrumb links to opaque spans (#7626) * fix: convert incorrect breadcrumb links to opaque spans * add linkless story * make sure last item is always displayed as active --- .../Common/Breadcrumbs/index.stories.tsx | 19 +++++++++++++++++++ .../Common/Breadcrumbs/index.tsx | 14 +++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/packages/ui-components/Common/Breadcrumbs/index.stories.tsx b/packages/ui-components/Common/Breadcrumbs/index.stories.tsx index e591ba7e5f0b8..5829aecb3f41b 100644 --- a/packages/ui-components/Common/Breadcrumbs/index.stories.tsx +++ b/packages/ui-components/Common/Breadcrumbs/index.stories.tsx @@ -24,6 +24,25 @@ export const Default: Story = { }, }; +export const Linkless: Story = { + args: { + links: [ + { + label: 'Learn', + href: '', + }, + { + label: 'Getting Started', + href: '', + }, + { + label: 'Introduction to Node.js', + href: '', + }, + ], + }, +}; + export const Truncate: Story = { args: { links: [ diff --git a/packages/ui-components/Common/Breadcrumbs/index.tsx b/packages/ui-components/Common/Breadcrumbs/index.tsx index acf8c0ee10204..1a3026af5e00c 100644 --- a/packages/ui-components/Common/Breadcrumbs/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/index.tsx @@ -51,9 +51,17 @@ const Breadcrumbs: FC<BreadcrumbsProps> = ({ hideSeparator={isLastItem} position={position + +!hideHome} > - <BreadcrumbLink as={as} href={link.href} active={isLastItem}> - {link.label} - </BreadcrumbLink> + {link.href || isLastItem ? ( + <BreadcrumbLink + as={as} + href={link.href || undefined} + active={isLastItem} + > + {link.label} + </BreadcrumbLink> + ) : ( + <span className="opacity-70">{link.label}</span> + )} </BreadcrumbItem> ); }), From bf334d9a9ffe7f1cbb4c54f95df52506f5ecc4e1 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 10 May 2025 13:33:16 -0400 Subject: [PATCH 0464/1385] chore: use subpath imports instead of path aliases (#7735) * chore: use subpath imports instead of path aliases * fixup! chore: use subpath imports instead of path aliases * #ui and #site --- COLLABORATOR_GUIDE.md | 2 +- apps/site/app/[locale]/[...path]/page.tsx | 8 +++--- apps/site/app/[locale]/error.tsx | 4 +-- apps/site/app/[locale]/feed/[feed]/route.ts | 6 ++--- apps/site/app/[locale]/layout.tsx | 12 ++++----- .../app/[locale]/next-data/api-data/route.ts | 12 ++++----- .../blog-data/[category]/[page]/route.ts | 6 ++--- .../next-data/download-snippets/route.tsx | 4 +-- .../next-data/og/[category]/[title]/route.tsx | 6 ++--- .../app/[locale]/next-data/page-data/route.ts | 6 ++--- .../[locale]/next-data/release-data/route.ts | 4 +-- apps/site/app/[locale]/not-found.tsx | 4 +-- apps/site/app/[locale]/page.tsx | 19 ++++++++------ apps/site/app/global-error.tsx | 6 ++--- apps/site/app/sitemap.ts | 6 ++--- apps/site/client-context.ts | 4 +-- .../Blog/BlogHeader/__tests__/index.test.jsx | 2 +- .../site/components/Blog/BlogHeader/index.tsx | 4 +-- .../BlogPostCard/__tests__/index.test.jsx | 2 +- .../components/Blog/BlogPostCard/index.tsx | 10 ++++---- apps/site/components/Common/Button.tsx | 2 +- apps/site/components/Common/CodeBox.tsx | 4 +-- apps/site/components/Common/CrossLink.tsx | 2 +- apps/site/components/Common/FormattedTime.tsx | 2 +- apps/site/components/Common/LinkTabs.tsx | 4 +-- apps/site/components/Common/Pagination.tsx | 2 +- apps/site/components/Common/Search/index.tsx | 4 +-- .../Downloads/DownloadButton/index.tsx | 10 ++++---- .../components/Downloads/DownloadLink.tsx | 12 ++++----- .../DownloadReleasesTable/DetailsButton.tsx | 6 ++--- .../Downloads/DownloadReleasesTable/index.tsx | 6 ++--- .../Downloads/MinorReleasesTable/index.tsx | 8 +++--- .../Downloads/Release/BlogPostLink.tsx | 4 +-- .../Downloads/Release/ChangelogLink.tsx | 8 +++--- .../Downloads/Release/DownloadLink.tsx | 6 ++--- .../Release/InstallationMethodDropdown.tsx | 10 +++++--- .../Release/OperatingSystemDropdown.tsx | 12 ++++++--- .../Release/PackageManagerDropdown.tsx | 10 +++++--- .../Downloads/Release/PlatformDropdown.tsx | 10 ++++---- .../Release/PrebuiltDownloadButtons.tsx | 8 +++--- .../Downloads/Release/ReleaseCodeBox.tsx | 19 ++++++++------ .../Downloads/Release/VersionDropdown.tsx | 5 +++- .../Downloads/ReleaseModal/index.tsx | 8 +++--- .../Downloads/ReleaseOverview/index.tsx | 4 +-- apps/site/components/Link.tsx | 2 +- apps/site/components/LinkWithArrow.tsx | 2 +- .../components/MDX/Calendar/Event/index.tsx | 8 +++--- .../MDX/Calendar/UpcomingMeetings.tsx | 12 ++++----- apps/site/components/MDX/Calendar/utils.ts | 2 +- apps/site/components/MDX/CodeBox/index.tsx | 4 +-- apps/site/components/MDX/Image/index.tsx | 2 +- apps/site/components/withAvatarGroup.tsx | 6 ++--- apps/site/components/withBadgeGroup.tsx | 6 ++--- apps/site/components/withBanner.tsx | 6 ++--- apps/site/components/withBlogCategories.tsx | 10 ++++---- apps/site/components/withBlogCrossLinks.tsx | 8 +++--- apps/site/components/withBreadcrumbs.tsx | 12 ++++++--- apps/site/components/withDownloadSection.tsx | 15 ++++++----- apps/site/components/withFooter.tsx | 6 ++--- apps/site/components/withLayout.tsx | 18 ++++++------- apps/site/components/withMetaBar.tsx | 16 ++++++------ apps/site/components/withNavBar.tsx | 14 +++++------ apps/site/components/withNodeRelease.tsx | 4 +-- apps/site/components/withNodejsLogo.tsx | 2 +- .../components/withProgressionSidebar.tsx | 8 +++--- apps/site/components/withSidebar.tsx | 8 +++--- .../site/components/withSidebarCrossLinks.tsx | 6 ++--- .../__tests__/useClientContext.test.jsx | 4 +-- .../__tests__/useCopyToClipboard.test.jsx | 2 +- .../__tests__/useDetectOS.test.mjs | 2 +- .../__tests__/useMediaQuery.test.mjs | 2 +- .../__tests__/useNotification.test.jsx | 4 +-- .../hooks/react-client/useClientContext.ts | 4 +-- apps/site/hooks/react-client/useDetectOS.ts | 6 ++--- .../hooks/react-client/useNavigationState.ts | 4 +-- .../hooks/react-client/useNotification.ts | 2 +- .../hooks/react-generic/useSiteNavigation.ts | 4 +-- .../hooks/react-server/useClientContext.ts | 2 +- apps/site/i18n.tsx | 2 +- apps/site/layouts/About.tsx | 14 +++++------ apps/site/layouts/ArticlePage.tsx | 8 +++--- apps/site/layouts/Base.tsx | 4 +-- apps/site/layouts/Blog.tsx | 14 +++++------ apps/site/layouts/Default.tsx | 8 +++--- apps/site/layouts/Download.tsx | 8 +++--- apps/site/layouts/GlowingBackdrop.tsx | 4 +-- apps/site/layouts/Learn.tsx | 14 +++++------ apps/site/layouts/Post.tsx | 16 ++++++------ apps/site/middleware.ts | 2 +- apps/site/next-data/blogData.ts | 6 ++--- apps/site/next-data/downloadSnippets.ts | 8 +++--- .../generators/__tests__/releaseData.test.mjs | 2 +- .../__tests__/websiteFeeds.test.mjs | 2 +- apps/site/next-data/providers/blogData.ts | 6 ++--- .../next-data/providers/downloadSnippets.ts | 2 +- apps/site/next-data/providers/releaseData.ts | 2 +- apps/site/next-data/providers/websiteFeeds.ts | 4 +-- apps/site/next-data/releaseData.ts | 6 ++--- apps/site/package.json | 11 ++++++++ .../__tests__/matterProvider.test.jsx | 2 +- .../navigationStateProvider.test.jsx | 2 +- .../__tests__/notificationProvider.test.jsx | 2 +- .../__tests__/releaseProvider.test.jsx | 5 +++- .../__tests__/themeProvider.test.jsx | 2 +- apps/site/providers/matterProvider.tsx | 6 ++--- apps/site/providers/releaseModalProvider.tsx | 4 +-- apps/site/providers/releaseProvider.tsx | 9 ++++--- apps/site/providers/themeProvider.tsx | 2 +- .../__tests__/releaseReducer.test.mjs | 5 +++- apps/site/reducers/releaseReducer.ts | 2 +- apps/site/tsconfig.json | 4 --- apps/site/types/release.ts | 6 ++--- apps/site/types/server.ts | 4 +-- .../__tests__/assignClientContext.test.mjs | 2 +- apps/site/util/__tests__/authorUtils.test.mjs | 2 +- apps/site/util/__tests__/blogUtils.test.mjs | 2 +- apps/site/util/__tests__/dateUtils.test.mjs | 2 +- apps/site/util/__tests__/debounce.test.mjs | 2 +- apps/site/util/__tests__/deepMerge.test.mjs | 2 +- apps/site/util/__tests__/detectOS.test.mjs | 2 +- .../util/__tests__/downloadUtils.test.mjs | 2 +- .../__tests__/getHighEntropyValues.test.mjs | 2 +- .../__tests__/getLanguageDisplayName.test.mjs | 4 +-- .../util/__tests__/getNodeApiLink.test.mjs | 2 +- .../__tests__/getNodeDownloadUrl.test.mjs | 2 +- .../util/__tests__/getUserPlatform.test.mjs | 2 +- apps/site/util/__tests__/gitHubUtils.test.mjs | 2 +- apps/site/util/__tests__/hexToRGBA.test.mjs | 2 +- apps/site/util/__tests__/imageUtils.test.mjs | 2 +- apps/site/util/__tests__/stringUtils.test.mjs | 2 +- apps/site/util/assignClientContext.ts | 2 +- apps/site/util/authorUtils.ts | 8 +++--- apps/site/util/blogUtils.ts | 2 +- apps/site/util/detectOS.ts | 2 +- apps/site/util/downloadUtils.tsx | 6 ++--- apps/site/util/getHighlighter.ts | 2 +- apps/site/util/getLanguageDisplayName.ts | 2 +- apps/site/util/getNodeApiLink.ts | 2 +- apps/site/util/getNodeDownloadUrl.ts | 4 +-- apps/site/util/getUserPlatform.ts | 2 +- package.json | 2 +- packages/i18n/lib/index.mjs | 2 +- packages/i18n/tsconfig.json | 1 - .../Common/AlertBox/index.stories.tsx | 2 +- .../AvatarGroup/Avatar/index.stories.tsx | 2 +- .../Common/AvatarGroup/Avatar/index.tsx | 2 +- .../AvatarGroup/Overlay/index.stories.tsx | 2 +- .../Common/AvatarGroup/Overlay/index.tsx | 2 +- .../Common/AvatarGroup/index.stories.tsx | 2 +- .../Common/AvatarGroup/index.tsx | 12 ++++----- .../Common/Badge/index.stories.tsx | 2 +- .../Common/BadgeGroup/index.stories.tsx | 2 +- .../ui-components/Common/BadgeGroup/index.tsx | 4 +-- .../Common/Banner/index.stories.tsx | 2 +- .../Common/BaseActiveLink/index.tsx | 2 +- .../Common/BaseButton/index.stories.tsx | 2 +- .../ui-components/Common/BaseButton/index.tsx | 2 +- .../Common/BaseCodeBox/index.stories.tsx | 2 +- .../Common/BaseCodeBox/index.tsx | 4 +-- .../Common/BaseCrossLink/index.stories.tsx | 2 +- .../Common/BaseCrossLink/index.tsx | 7 ++---- .../Common/BaseLinkTabs/index.stories.tsx | 2 +- .../Common/BaseLinkTabs/index.tsx | 4 +-- .../BasePagination/Ellipsis/index.stories.tsx | 2 +- .../__tests__/index.test.jsx | 2 +- .../PaginationListItem/index.stories.tsx | 2 +- .../PaginationListItem/index.tsx | 2 +- .../BasePagination/__tests__/index.test.jsx | 2 +- .../Common/BasePagination/index.stories.tsx | 2 +- .../Common/BasePagination/index.tsx | 6 ++--- .../BasePagination/useGetPageElements.tsx | 10 ++++---- .../Common/Blockquote/index.stories.tsx | 2 +- .../Breadcrumbs/BreadcrumbHomeLink/index.tsx | 2 +- .../Breadcrumbs/BreadcrumbLink/index.tsx | 2 +- .../BreadcrumbTruncatedItem/index.tsx | 2 +- .../Common/Breadcrumbs/index.stories.tsx | 2 +- .../Common/Breadcrumbs/index.tsx | 15 +++++------ .../Common/CodeTabs/index.stories.tsx | 4 +-- .../ui-components/Common/CodeTabs/index.tsx | 2 +- .../Common/GlowingBackdrop/index.stories.tsx | 2 +- .../Common/GlowingBackdrop/index.tsx | 2 +- .../Common/LanguageDropDown/index.stories.tsx | 2 +- .../Common/LanguageDropDown/index.tsx | 2 +- .../Common/Modal/index.stories.tsx | 2 +- .../Common/NodejsLogo/index.stories.tsx | 2 +- .../ui-components/Common/NodejsLogo/index.tsx | 4 +-- .../Common/Notification/index.stories.tsx | 2 +- .../Common/Preview/index.stories.tsx | 2 +- .../ui-components/Common/Preview/index.tsx | 6 ++--- .../ProgressionSidebarGroup/index.tsx | 7 ++---- .../ProgressionSidebarItem/index.tsx | 9 +++---- .../ProgressionSidebar/index.stories.tsx | 2 +- .../Common/ProgressionSidebar/index.tsx | 6 ++--- .../Common/Select/index.stories.tsx | 4 +-- .../ui-components/Common/Select/index.tsx | 4 +-- .../Common/Separator/index.stories.tsx | 2 +- .../Common/Tabs/index.stories.tsx | 2 +- .../Common/ThemeToggle/index.stories.tsx | 2 +- .../Common/Tooltip/index.stories.tsx | 2 +- .../Containers/Footer/index.stories.tsx | 2 +- .../ui-components/Containers/Footer/index.tsx | 6 ++--- .../Containers/MetaBar/index.stories.tsx | 4 +-- .../Containers/MetaBar/index.tsx | 2 +- .../NavBar/NavItem/index.stories.tsx | 2 +- .../Containers/NavBar/NavItem/index.tsx | 4 +-- .../Containers/NavBar/index.stories.tsx | 2 +- .../ui-components/Containers/NavBar/index.tsx | 7 ++---- .../Sidebar/SidebarGroup/index.stories.tsx | 2 +- .../Containers/Sidebar/SidebarGroup/index.tsx | 7 ++---- .../Sidebar/SidebarItem/index.stories.tsx | 2 +- .../Containers/Sidebar/SidebarItem/index.tsx | 7 ++---- .../Containers/Sidebar/index.stories.tsx | 2 +- .../Containers/Sidebar/index.tsx | 6 ++--- .../Icons/HexagonGrid.stories.tsx | 2 +- .../Icons/InstallationMethod/index.ts | 16 ++++++------ .../ui-components/Icons/Logos/JsWhite.tsx | 2 +- packages/ui-components/Icons/Logos/Nodejs.tsx | 2 +- packages/ui-components/Icons/Logos/index.ts | 14 +++++------ .../Icons/OperatingSystem/index.ts | 8 +++--- .../Icons/PackageManager/index.ts | 6 ++--- packages/ui-components/Icons/Social/index.ts | 14 +++++------ .../__design__/node-logos.stories.tsx | 2 +- .../__design__/platform-logos.stories.tsx | 9 ++----- .../__design__/social-logos.stories.tsx | 2 +- packages/ui-components/package.json | 25 ++++++++++++------- packages/ui-components/tsconfig.json | 2 +- 226 files changed, 573 insertions(+), 549 deletions(-) diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 825783c05da34..6dcd3f49d5de2 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -356,7 +356,7 @@ To add a new download installation method, follow these steps: } ``` -3. **Update `InstallationMethodLabel` and `InstallationMethod` in `@/types/release.ts`:** +3. **Update `InstallationMethodLabel` and `InstallationMethod` in `apps/site/types/release.ts`:** - Add the new method to the `InstallationMethodLabel` and `InstallationMethod` types. diff --git a/apps/site/app/[locale]/[...path]/page.tsx b/apps/site/app/[locale]/[...path]/page.tsx index 13e6342fd58be..01edf259fe177 100644 --- a/apps/site/app/[locale]/[...path]/page.tsx +++ b/apps/site/app/[locale]/[...path]/page.tsx @@ -7,13 +7,13 @@ * dynamic params, which will lead on static export errors and other sort of issues. */ -import * as basePage from '@/app/[locale]/page'; +import * as basePage from '#site/app/[locale]/page'; import { ENABLE_STATIC_EXPORT_LOCALE, ENABLE_STATIC_EXPORT, -} from '@/next.constants.mjs'; -import { dynamicRouter } from '@/next.dynamic.mjs'; -import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; +} from '#site/next.constants.mjs'; +import { dynamicRouter } from '#site/next.dynamic.mjs'; +import { availableLocaleCodes, defaultLocale } from '#site/next.locales.mjs'; // This is the default Viewport Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-viewport#generateviewport-function diff --git a/apps/site/app/[locale]/error.tsx b/apps/site/app/[locale]/error.tsx index 79feae5ccf4c0..c3f2232662fd4 100644 --- a/apps/site/app/[locale]/error.tsx +++ b/apps/site/app/[locale]/error.tsx @@ -4,8 +4,8 @@ import { ArrowRightIcon } from '@heroicons/react/24/solid'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Button from '@/components/Common/Button'; -import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; +import Button from '#site/components/Common/Button'; +import GlowingBackdropLayout from '#site/layouts/GlowingBackdrop'; const ErrorPage: FC<{ error: Error }> = () => { const t = useTranslations(); diff --git a/apps/site/app/[locale]/feed/[feed]/route.ts b/apps/site/app/[locale]/feed/[feed]/route.ts index d9abcf4dede63..a5abc2981a17b 100644 --- a/apps/site/app/[locale]/feed/[feed]/route.ts +++ b/apps/site/app/[locale]/feed/[feed]/route.ts @@ -1,8 +1,8 @@ import { NextResponse } from 'next/server'; -import provideWebsiteFeeds from '@/next-data/providers/websiteFeeds'; -import { siteConfig } from '@/next.json.mjs'; -import { defaultLocale } from '@/next.locales.mjs'; +import provideWebsiteFeeds from '#site/next-data/providers/websiteFeeds'; +import { siteConfig } from '#site/next.json.mjs'; +import { defaultLocale } from '#site/next.locales.mjs'; type DynamicStaticPaths = { locale: string; feed: string }; type StaticParams = { params: Promise<DynamicStaticPaths> }; diff --git a/apps/site/app/[locale]/layout.tsx b/apps/site/app/[locale]/layout.tsx index 4b28313a7599b..ed0a60eb0057e 100644 --- a/apps/site/app/[locale]/layout.tsx +++ b/apps/site/app/[locale]/layout.tsx @@ -4,13 +4,13 @@ import classNames from 'classnames'; import { NextIntlClientProvider } from 'next-intl'; import type { FC, PropsWithChildren } from 'react'; -import BaseLayout from '@/layouts/Base'; -import { VERCEL_ENV } from '@/next.constants.mjs'; -import { IBM_PLEX_MONO, OPEN_SANS } from '@/next.fonts'; -import { availableLocalesMap, defaultLocale } from '@/next.locales.mjs'; -import { ThemeProvider } from '@/providers/themeProvider'; +import BaseLayout from '#site/layouts/Base'; +import { VERCEL_ENV } from '#site/next.constants.mjs'; +import { IBM_PLEX_MONO, OPEN_SANS } from '#site/next.fonts'; +import { availableLocalesMap, defaultLocale } from '#site/next.locales.mjs'; +import { ThemeProvider } from '#site/providers/themeProvider'; -import '@/styles/index.css'; +import '#site/styles/index.css'; const fontClasses = classNames(IBM_PLEX_MONO.variable, OPEN_SANS.variable); 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 849d93864de07..de008a59739b0 100644 --- a/apps/site/app/[locale]/next-data/api-data/route.ts +++ b/apps/site/app/[locale]/next-data/api-data/route.ts @@ -1,11 +1,11 @@ import { deflateSync } from 'node:zlib'; -import provideReleaseData from '@/next-data/providers/releaseData'; -import { GITHUB_API_KEY } from '@/next.constants.mjs'; -import { defaultLocale } from '@/next.locales.mjs'; -import type { GitHubApiFile } from '@/types'; -import { getGitHubApiDocsUrl } from '@/util/gitHubUtils'; -import { parseRichTextIntoPlainText } from '@/util/stringUtils'; +import provideReleaseData from '#site/next-data/providers/releaseData'; +import { GITHUB_API_KEY } from '#site/next.constants.mjs'; +import { defaultLocale } from '#site/next.locales.mjs'; +import type { GitHubApiFile } from '#site/types'; +import { getGitHubApiDocsUrl } from '#site/util/gitHubUtils'; +import { parseRichTextIntoPlainText } from '#site/util/stringUtils'; // Defines if we should use the GitHub API Key for the request // based on the environment variable `GITHUB_API_KEY` diff --git a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts index ed7977b3d6252..11f5489084d88 100644 --- a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts +++ b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts @@ -1,9 +1,9 @@ import { provideBlogPosts, providePaginatedBlogPosts, -} from '@/next-data/providers/blogData'; -import { defaultLocale } from '@/next.locales.mjs'; -import type { BlogCategory } from '@/types'; +} from '#site/next-data/providers/blogData'; +import { defaultLocale } from '#site/next.locales.mjs'; +import type { BlogCategory } from '#site/types'; type DynamicStaticPaths = { locale: string; diff --git a/apps/site/app/[locale]/next-data/download-snippets/route.tsx b/apps/site/app/[locale]/next-data/download-snippets/route.tsx index 7ef5cfb53a02d..90232982a2d45 100644 --- a/apps/site/app/[locale]/next-data/download-snippets/route.tsx +++ b/apps/site/app/[locale]/next-data/download-snippets/route.tsx @@ -1,5 +1,5 @@ -import provideDownloadSnippets from '@/next-data/providers/downloadSnippets'; -import { defaultLocale } from '@/next.locales.mjs'; +import provideDownloadSnippets from '#site/next-data/providers/downloadSnippets'; +import { defaultLocale } from '#site/next.locales.mjs'; type DynamicStaticPaths = { locale: string }; type StaticParams = { params: Promise<DynamicStaticPaths> }; 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 5f1b19cc8c643..05b304e5721ed 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 @@ -2,9 +2,9 @@ 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 { DEFAULT_CATEGORY_OG_TYPE } from '@/next.constants.mjs'; -import { defaultLocale } from '@/next.locales.mjs'; -import { hexToRGBA } from '@/util/hexToRGBA'; +import { DEFAULT_CATEGORY_OG_TYPE } from '#site/next.constants.mjs'; +import { defaultLocale } from '#site/next.locales.mjs'; +import { hexToRGBA } from '#site/util/hexToRGBA'; // TODO: use CSS variables instead of absolute values const CATEGORY_TO_THEME_COLOUR_MAP = { diff --git a/apps/site/app/[locale]/next-data/page-data/route.ts b/apps/site/app/[locale]/next-data/page-data/route.ts index 4259685cfecf3..d7e9fdd09efd4 100644 --- a/apps/site/app/[locale]/next-data/page-data/route.ts +++ b/apps/site/app/[locale]/next-data/page-data/route.ts @@ -2,9 +2,9 @@ import { deflateSync } from 'node:zlib'; import matter from 'gray-matter'; -import { dynamicRouter } from '@/next.dynamic.mjs'; -import { defaultLocale } from '@/next.locales.mjs'; -import { parseRichTextIntoPlainText } from '@/util/stringUtils'; +import { dynamicRouter } from '#site/next.dynamic.mjs'; +import { defaultLocale } from '#site/next.locales.mjs'; +import { parseRichTextIntoPlainText } from '#site/util/stringUtils'; // This is the Route Handler for the `GET` method which handles the request // for a digest and metadata of all existing pages on Node.js Website diff --git a/apps/site/app/[locale]/next-data/release-data/route.ts b/apps/site/app/[locale]/next-data/release-data/route.ts index 6d72572315f39..8b4d229f81066 100644 --- a/apps/site/app/[locale]/next-data/release-data/route.ts +++ b/apps/site/app/[locale]/next-data/release-data/route.ts @@ -1,5 +1,5 @@ -import provideReleaseData from '@/next-data/providers/releaseData'; -import { defaultLocale } from '@/next.locales.mjs'; +import provideReleaseData from '#site/next-data/providers/releaseData'; +import { defaultLocale } from '#site/next.locales.mjs'; // This is the Route Handler for the `GET` method which handles the request // for generating static data related to the Node.js Release Data diff --git a/apps/site/app/[locale]/not-found.tsx b/apps/site/app/[locale]/not-found.tsx index 9ab34ca5bbf2e..7972f7c265ac4 100644 --- a/apps/site/app/[locale]/not-found.tsx +++ b/apps/site/app/[locale]/not-found.tsx @@ -5,8 +5,8 @@ import Image from 'next/image'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Button from '@/components/Common/Button'; -import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; +import Button from '#site/components/Common/Button'; +import GlowingBackdropLayout from '#site/layouts/GlowingBackdrop'; const NotFoundPage: FC = () => { const t = useTranslations(); diff --git a/apps/site/app/[locale]/page.tsx b/apps/site/app/[locale]/page.tsx index 123644759baf6..624e7e1afe598 100644 --- a/apps/site/app/[locale]/page.tsx +++ b/apps/site/app/[locale]/page.tsx @@ -11,17 +11,20 @@ import { notFound, redirect } from 'next/navigation'; import { setRequestLocale } from 'next-intl/server'; import type { FC } from 'react'; -import { setClientContext } from '@/client-context'; -import WithLayout from '@/components/withLayout'; +import { setClientContext } from '#site/client-context'; +import WithLayout from '#site/components/withLayout'; import { ENABLE_STATIC_EXPORT_LOCALE, ENABLE_STATIC_EXPORT, -} from '@/next.constants.mjs'; -import { PAGE_VIEWPORT, DYNAMIC_ROUTES } from '@/next.dynamic.constants.mjs'; -import { dynamicRouter } from '@/next.dynamic.mjs'; -import { allLocaleCodes, availableLocaleCodes } from '@/next.locales.mjs'; -import { defaultLocale } from '@/next.locales.mjs'; -import { MatterProvider } from '@/providers/matterProvider'; +} from '#site/next.constants.mjs'; +import { + PAGE_VIEWPORT, + DYNAMIC_ROUTES, +} from '#site/next.dynamic.constants.mjs'; +import { dynamicRouter } from '#site/next.dynamic.mjs'; +import { allLocaleCodes, availableLocaleCodes } from '#site/next.locales.mjs'; +import { defaultLocale } from '#site/next.locales.mjs'; +import { MatterProvider } from '#site/providers/matterProvider'; type DynamicStaticPaths = { path: Array<string>; locale: string }; type DynamicParams = { params: Promise<DynamicStaticPaths> }; diff --git a/apps/site/app/global-error.tsx b/apps/site/app/global-error.tsx index 53238830c7a2c..7c656bfe74487 100644 --- a/apps/site/app/global-error.tsx +++ b/apps/site/app/global-error.tsx @@ -3,9 +3,9 @@ import { ArrowRightIcon } from '@heroicons/react/24/solid'; import type { FC } from 'react'; -import Button from '@/components/Common/Button'; -import BaseLayout from '@/layouts/Base'; -import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; +import Button from '#site/components/Common/Button'; +import BaseLayout from '#site/layouts/Base'; +import GlowingBackdropLayout from '#site/layouts/GlowingBackdrop'; const GlobalErrorPage: FC<{ error: Error }> = () => ( <html> diff --git a/apps/site/app/sitemap.ts b/apps/site/app/sitemap.ts index 19a33e05dffec..86b8c337a7290 100644 --- a/apps/site/app/sitemap.ts +++ b/apps/site/app/sitemap.ts @@ -4,9 +4,9 @@ import { BASE_PATH, BASE_URL, EXTERNAL_LINKS_SITEMAP, -} from '@/next.constants.mjs'; -import { dynamicRouter } from '@/next.dynamic.mjs'; -import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; +} from '#site/next.constants.mjs'; +import { dynamicRouter } from '#site/next.dynamic.mjs'; +import { availableLocaleCodes, defaultLocale } from '#site/next.locales.mjs'; // This is the combination of the Application Base URL and Base PATH const baseUrlAndPath = `${BASE_URL}${BASE_PATH}`; diff --git a/apps/site/client-context.ts b/apps/site/client-context.ts index 0ee4c5e38d04f..8ed30d8fb353b 100644 --- a/apps/site/client-context.ts +++ b/apps/site/client-context.ts @@ -1,7 +1,7 @@ import { cache } from 'react'; -import type { ClientSharedServerContext } from '@/types'; -import { assignClientContext } from '@/util/assignClientContext'; +import type { ClientSharedServerContext } from '#site/types'; +import { assignClientContext } from '#site/util/assignClientContext'; // This allows us to have Server-Side Context's of the shared "contextual" data // which includes the frontmatter, the current pathname from the dynamic segments diff --git a/apps/site/components/Blog/BlogHeader/__tests__/index.test.jsx b/apps/site/components/Blog/BlogHeader/__tests__/index.test.jsx index c895ea729ee81..83ef08a47e5e6 100644 --- a/apps/site/components/Blog/BlogHeader/__tests__/index.test.jsx +++ b/apps/site/components/Blog/BlogHeader/__tests__/index.test.jsx @@ -3,7 +3,7 @@ import assert from 'node:assert/strict'; import { render, screen } from '@testing-library/react'; -import BlogHeader from '@/components/Blog/BlogHeader'; +import BlogHeader from '#site/components/Blog/BlogHeader'; describe('BlogHeader', () => { it('should have correct href when category is all', () => { diff --git a/apps/site/components/Blog/BlogHeader/index.tsx b/apps/site/components/Blog/BlogHeader/index.tsx index ddbcdc750c698..d345b8bf1e5b7 100644 --- a/apps/site/components/Blog/BlogHeader/index.tsx +++ b/apps/site/components/Blog/BlogHeader/index.tsx @@ -2,8 +2,8 @@ import { RssIcon } from '@heroicons/react/24/solid'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { siteConfig } from '@/next.json.mjs'; +import Link from '#site/components/Link'; +import { siteConfig } from '#site/next.json.mjs'; import styles from './index.module.css'; diff --git a/apps/site/components/Blog/BlogPostCard/__tests__/index.test.jsx b/apps/site/components/Blog/BlogPostCard/__tests__/index.test.jsx index 8e0a19f5e650c..a0a09b8187055 100644 --- a/apps/site/components/Blog/BlogPostCard/__tests__/index.test.jsx +++ b/apps/site/components/Blog/BlogPostCard/__tests__/index.test.jsx @@ -5,7 +5,7 @@ import { render, screen } from '@testing-library/react'; import { isVisible } from '../../../../../../tests/utilities.mjs'; -import BlogPostCard from '@/components/Blog/BlogPostCard'; +import BlogPostCard from '#site/components/Blog/BlogPostCard'; function renderBlogPostCard({ title = 'Blog post title', diff --git a/apps/site/components/Blog/BlogPostCard/index.tsx b/apps/site/components/Blog/BlogPostCard/index.tsx index b99c1ac13a465..4f7487b86de75 100644 --- a/apps/site/components/Blog/BlogPostCard/index.tsx +++ b/apps/site/components/Blog/BlogPostCard/index.tsx @@ -2,11 +2,11 @@ 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 Link from '@/components/Link'; -import WithAvatarGroup from '@/components/withAvatarGroup'; -import type { BlogCategory } from '@/types'; -import { mapBlogCategoryToPreviewType } from '@/util/blogUtils'; +import FormattedTime from '#site/components/Common/FormattedTime'; +import Link from '#site/components/Link'; +import WithAvatarGroup from '#site/components/withAvatarGroup'; +import type { BlogCategory } from '#site/types'; +import { mapBlogCategoryToPreviewType } from '#site/util/blogUtils'; import styles from './index.module.css'; diff --git a/apps/site/components/Common/Button.tsx b/apps/site/components/Common/Button.tsx index 87d98febce2d1..206570b3a9bcb 100644 --- a/apps/site/components/Common/Button.tsx +++ b/apps/site/components/Common/Button.tsx @@ -3,7 +3,7 @@ import BaseButton, { } from '@node-core/ui-components/Common/BaseButton'; import type { FC, ComponentProps } from 'react'; -import Link from '@/components/Link'; +import Link from '#site/components/Link'; const Button: FC< Omit<ButtonProps, 'as'> & Omit<ComponentProps<typeof Link>, 'as' | 'size'> diff --git a/apps/site/components/Common/CodeBox.tsx b/apps/site/components/Common/CodeBox.tsx index b95304a11a08e..4b050cf5f9c8d 100644 --- a/apps/site/components/Common/CodeBox.tsx +++ b/apps/site/components/Common/CodeBox.tsx @@ -4,8 +4,8 @@ import BaseCodeBox from '@node-core/ui-components/Common/BaseCodeBox'; import { useTranslations } from 'next-intl'; import type { FC, PropsWithChildren, ReactNode } from 'react'; -import Link from '@/components/Link'; -import { useCopyToClipboard, useNotification } from '@/hooks'; +import Link from '#site/components/Link'; +import { useCopyToClipboard, useNotification } from '#site/hooks'; type CodeBoxProps = { language: string; diff --git a/apps/site/components/Common/CrossLink.tsx b/apps/site/components/Common/CrossLink.tsx index 85ef3fc0c8809..c22dbdd6661e3 100644 --- a/apps/site/components/Common/CrossLink.tsx +++ b/apps/site/components/Common/CrossLink.tsx @@ -3,7 +3,7 @@ import type { CrossLinkProps } from '@node-core/ui-components/Common/BaseCrossLi import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; +import Link from '#site/components/Link'; const CrossLink: FC<Omit<CrossLinkProps, 'as' | 'label'>> = props => { const t = useTranslations(); diff --git a/apps/site/components/Common/FormattedTime.tsx b/apps/site/components/Common/FormattedTime.tsx index 68aff9ee78dd3..17787e7a19d64 100644 --- a/apps/site/components/Common/FormattedTime.tsx +++ b/apps/site/components/Common/FormattedTime.tsx @@ -2,7 +2,7 @@ import type { DateTimeFormatOptions } from 'next-intl'; import { useFormatter } from 'next-intl'; import type { FC } from 'react'; -import { DEFAULT_DATE_FORMAT } from '@/next.calendar.constants.mjs'; +import { DEFAULT_DATE_FORMAT } from '#site/next.calendar.constants.mjs'; type FormattedTimeProps = { date: string | Date; diff --git a/apps/site/components/Common/LinkTabs.tsx b/apps/site/components/Common/LinkTabs.tsx index 7f45ef41b8994..60c9c4d716668 100644 --- a/apps/site/components/Common/LinkTabs.tsx +++ b/apps/site/components/Common/LinkTabs.tsx @@ -4,8 +4,8 @@ import BaseLinkTabs from '@node-core/ui-components/Common/BaseLinkTabs'; import type { LinkTabsProps } from '@node-core/ui-components/Common/BaseLinkTabs'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { useRouter } from '@/navigation.mjs'; +import Link from '#site/components/Link'; +import { useRouter } from '#site/navigation.mjs'; const LinkTabs: FC<Omit<LinkTabsProps, 'as' | 'onSelect'>> = props => { const { push } = useRouter(); diff --git a/apps/site/components/Common/Pagination.tsx b/apps/site/components/Common/Pagination.tsx index 05a759cba1d31..2992d1abf365f 100644 --- a/apps/site/components/Common/Pagination.tsx +++ b/apps/site/components/Common/Pagination.tsx @@ -3,7 +3,7 @@ import type { PaginationProps } from '@node-core/ui-components/Common/BasePagina import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; +import Link from '#site/components/Link'; const Pagination: FC< Omit<PaginationProps, 'as' | 'labels' | 'getPageLabel'> diff --git a/apps/site/components/Common/Search/index.tsx b/apps/site/components/Common/Search/index.tsx index 4e8728c36ffd6..14a01db46a60d 100644 --- a/apps/site/components/Common/Search/index.tsx +++ b/apps/site/components/Common/Search/index.tsx @@ -5,14 +5,14 @@ import { useTranslations, useLocale } from 'next-intl'; import { useTheme } from 'next-themes'; import type { FC } from 'react'; -import { useRouter } from '@/navigation.mjs'; +import { useRouter } from '#site/navigation.mjs'; import { ORAMA_CLOUD_ENDPOINT, ORAMA_CLOUD_API_KEY, DEFAULT_ORAMA_QUERY_PARAMS, DEFAULT_ORAMA_SUGGESTIONS, BASE_URL, -} from '@/next.constants.mjs'; +} from '#site/next.constants.mjs'; type ResultMapDescription = { path: string; diff --git a/apps/site/components/Downloads/DownloadButton/index.tsx b/apps/site/components/Downloads/DownloadButton/index.tsx index 622e655acaf02..f238ce4546505 100644 --- a/apps/site/components/Downloads/DownloadButton/index.tsx +++ b/apps/site/components/Downloads/DownloadButton/index.tsx @@ -4,11 +4,11 @@ import { CloudArrowDownIcon } from '@heroicons/react/24/outline'; import classNames from 'classnames'; import type { FC, PropsWithChildren } from 'react'; -import Button from '@/components/Common/Button'; -import { useClientContext } from '@/hooks'; -import type { NodeRelease } from '@/types'; -import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; -import { getUserPlatform } from '@/util/getUserPlatform'; +import Button from '#site/components/Common/Button'; +import { useClientContext } from '#site/hooks'; +import type { NodeRelease } from '#site/types'; +import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; +import { getUserPlatform } from '#site/util/getUserPlatform'; import styles from './index.module.css'; diff --git a/apps/site/components/Downloads/DownloadLink.tsx b/apps/site/components/Downloads/DownloadLink.tsx index df9fc74c5e7ab..e639a83d2ac7c 100644 --- a/apps/site/components/Downloads/DownloadLink.tsx +++ b/apps/site/components/Downloads/DownloadLink.tsx @@ -2,12 +2,12 @@ import type { FC, PropsWithChildren } from 'react'; -import LinkWithArrow from '@/components/LinkWithArrow'; -import { useClientContext } from '@/hooks'; -import type { NodeRelease } from '@/types'; -import type { DownloadKind } from '@/util/getNodeDownloadUrl'; -import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; -import { getUserPlatform } from '@/util/getUserPlatform'; +import LinkWithArrow from '#site/components/LinkWithArrow'; +import { useClientContext } from '#site/hooks'; +import type { NodeRelease } from '#site/types'; +import type { DownloadKind } from '#site/util/getNodeDownloadUrl'; +import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; +import { getUserPlatform } from '#site/util/getUserPlatform'; type DownloadLinkProps = { release: NodeRelease; kind?: DownloadKind }; diff --git a/apps/site/components/Downloads/DownloadReleasesTable/DetailsButton.tsx b/apps/site/components/Downloads/DownloadReleasesTable/DetailsButton.tsx index 3c20ba738e4d4..b8fbeb6f160b9 100644 --- a/apps/site/components/Downloads/DownloadReleasesTable/DetailsButton.tsx +++ b/apps/site/components/Downloads/DownloadReleasesTable/DetailsButton.tsx @@ -4,9 +4,9 @@ import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { use } from 'react'; -import LinkWithArrow from '@/components/LinkWithArrow'; -import { ReleaseModalContext } from '@/providers/releaseModalProvider'; -import type { NodeRelease } from '@/types'; +import LinkWithArrow from '#site/components/LinkWithArrow'; +import { ReleaseModalContext } from '#site/providers/releaseModalProvider'; +import type { NodeRelease } from '#site/types'; type DetailsButtonProps = { versionData: NodeRelease; diff --git a/apps/site/components/Downloads/DownloadReleasesTable/index.tsx b/apps/site/components/Downloads/DownloadReleasesTable/index.tsx index 460e4e29eab2e..fa2180f5f7fbe 100644 --- a/apps/site/components/Downloads/DownloadReleasesTable/index.tsx +++ b/apps/site/components/Downloads/DownloadReleasesTable/index.tsx @@ -2,9 +2,9 @@ import Badge from '@node-core/ui-components/Common/Badge'; import { getTranslations } from 'next-intl/server'; import type { FC } from 'react'; -import FormattedTime from '@/components/Common/FormattedTime'; -import DetailsButton from '@/components/Downloads/DownloadReleasesTable/DetailsButton'; -import getReleaseData from '@/next-data/releaseData'; +import FormattedTime from '#site/components/Common/FormattedTime'; +import DetailsButton from '#site/components/Downloads/DownloadReleasesTable/DetailsButton'; +import getReleaseData from '#site/next-data/releaseData'; const DownloadReleasesTable: FC = async () => { const releaseData = await getReleaseData(); diff --git a/apps/site/components/Downloads/MinorReleasesTable/index.tsx b/apps/site/components/Downloads/MinorReleasesTable/index.tsx index 0fde534416cbf..c2cf17ec975a5 100644 --- a/apps/site/components/Downloads/MinorReleasesTable/index.tsx +++ b/apps/site/components/Downloads/MinorReleasesTable/index.tsx @@ -4,10 +4,10 @@ import Separator from '@node-core/ui-components/Common/Separator'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { BASE_CHANGELOG_URL } from '@/next.constants.mjs'; -import type { MinorVersion } from '@/types'; -import { getNodeApiLink } from '@/util/getNodeApiLink'; +import Link from '#site/components/Link'; +import { BASE_CHANGELOG_URL } from '#site/next.constants.mjs'; +import type { MinorVersion } from '#site/types'; +import { getNodeApiLink } from '#site/util/getNodeApiLink'; import styles from './index.module.css'; diff --git a/apps/site/components/Downloads/Release/BlogPostLink.tsx b/apps/site/components/Downloads/Release/BlogPostLink.tsx index 3082da9c3c5c8..484fffb0eaac1 100644 --- a/apps/site/components/Downloads/Release/BlogPostLink.tsx +++ b/apps/site/components/Downloads/Release/BlogPostLink.tsx @@ -3,8 +3,8 @@ import type { FC, PropsWithChildren } from 'react'; import { useContext } from 'react'; -import Link from '@/components/Link'; -import { ReleaseContext } from '@/providers/releaseProvider'; +import Link from '#site/components/Link'; +import { ReleaseContext } from '#site/providers/releaseProvider'; const BlogPostLink: FC<PropsWithChildren> = ({ children }) => { const { release } = useContext(ReleaseContext); diff --git a/apps/site/components/Downloads/Release/ChangelogLink.tsx b/apps/site/components/Downloads/Release/ChangelogLink.tsx index ff3e08d616ea9..13c4f4f784e80 100644 --- a/apps/site/components/Downloads/Release/ChangelogLink.tsx +++ b/apps/site/components/Downloads/Release/ChangelogLink.tsx @@ -3,10 +3,10 @@ import type { FC, PropsWithChildren } from 'react'; import { useContext } from 'react'; -import Link from '@/components/Link'; -import LinkWithArrow from '@/components/LinkWithArrow'; -import { BASE_CHANGELOG_URL } from '@/next.constants.mjs'; -import { ReleaseContext } from '@/providers/releaseProvider'; +import Link from '#site/components/Link'; +import LinkWithArrow from '#site/components/LinkWithArrow'; +import { BASE_CHANGELOG_URL } from '#site/next.constants.mjs'; +import { ReleaseContext } from '#site/providers/releaseProvider'; const ChangelogLink: FC<PropsWithChildren> = ({ children }) => { const { release } = useContext(ReleaseContext); diff --git a/apps/site/components/Downloads/Release/DownloadLink.tsx b/apps/site/components/Downloads/Release/DownloadLink.tsx index 40b43abb80648..dc685ccedda79 100644 --- a/apps/site/components/Downloads/Release/DownloadLink.tsx +++ b/apps/site/components/Downloads/Release/DownloadLink.tsx @@ -3,9 +3,9 @@ import type { FC, PropsWithChildren } from 'react'; import { useContext } from 'react'; -import DownloadLinkBase from '@/components/Downloads/DownloadLink'; -import { ReleaseContext } from '@/providers/releaseProvider'; -import type { DownloadKind } from '@/util/getNodeDownloadUrl'; +import DownloadLinkBase from '#site/components/Downloads/DownloadLink'; +import { ReleaseContext } from '#site/providers/releaseProvider'; +import type { DownloadKind } from '#site/util/getNodeDownloadUrl'; type DownloadLinkProps = { kind?: DownloadKind }; diff --git a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx index c857c9b0ddf87..b050b156f18c4 100644 --- a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx +++ b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx @@ -5,9 +5,13 @@ import { useTranslations } from 'next-intl'; import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; -import { ReleaseContext } from '@/providers/releaseProvider'; -import type { InstallationMethod } from '@/types/release'; -import { nextItem, INSTALL_METHODS, parseCompat } from '@/util/downloadUtils'; +import { ReleaseContext } from '#site/providers/releaseProvider'; +import type { InstallationMethod } from '#site/types/release'; +import { + nextItem, + INSTALL_METHODS, + parseCompat, +} from '#site/util/downloadUtils'; const InstallationMethodDropdown: FC = () => { const release = useContext(ReleaseContext); diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index 578c0e0e0be15..e5ba1e404d141 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -5,10 +5,14 @@ import { useTranslations } from 'next-intl'; import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; -import { useClientContext } from '@/hooks'; -import { ReleaseContext } from '@/providers/releaseProvider'; -import type { UserOS } from '@/types/userOS'; -import { nextItem, OPERATING_SYSTEMS, parseCompat } from '@/util/downloadUtils'; +import { useClientContext } from '#site/hooks'; +import { ReleaseContext } from '#site/providers/releaseProvider'; +import type { UserOS } from '#site/types/userOS'; +import { + nextItem, + OPERATING_SYSTEMS, + parseCompat, +} from '#site/util/downloadUtils'; type OperatingSystemDropdownProps = { exclude?: Array<UserOS> }; diff --git a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx index ff58252e08420..28a48d178339d 100644 --- a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx +++ b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx @@ -5,9 +5,13 @@ import { useTranslations } from 'next-intl'; import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; -import { ReleaseContext } from '@/providers/releaseProvider'; -import type { PackageManager } from '@/types/release'; -import { nextItem, PACKAGE_MANAGERS, parseCompat } from '@/util/downloadUtils'; +import { ReleaseContext } from '#site/providers/releaseProvider'; +import type { PackageManager } from '#site/types/release'; +import { + nextItem, + PACKAGE_MANAGERS, + parseCompat, +} from '#site/util/downloadUtils'; const PackageManagerDropdown: FC = () => { const release = useContext(ReleaseContext); diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index a6a30bbaef6a7..7e5405e612155 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -5,11 +5,11 @@ import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useEffect, useContext, useMemo } from 'react'; -import { useClientContext } from '@/hooks'; -import { ReleaseContext } from '@/providers/releaseProvider'; -import type { UserPlatform } from '@/types/userOS'; -import { PLATFORMS, nextItem, parseCompat } from '@/util/downloadUtils'; -import { getUserPlatform } from '@/util/getUserPlatform'; +import { useClientContext } from '#site/hooks'; +import { ReleaseContext } from '#site/providers/releaseProvider'; +import type { UserPlatform } from '#site/types/userOS'; +import { PLATFORMS, nextItem, parseCompat } from '#site/util/downloadUtils'; +import { getUserPlatform } from '#site/util/getUserPlatform'; const PlatformDropdown: FC = () => { const { architecture, bitness } = useClientContext(); diff --git a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx index b968e68651c2b..6b23dd1ed508e 100644 --- a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx +++ b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx @@ -6,13 +6,13 @@ import { useTranslations } from 'next-intl'; import { useContext } from 'react'; import type { FC } from 'react'; -import Button from '@/components/Common/Button'; -import { ReleaseContext } from '@/providers/releaseProvider'; +import Button from '#site/components/Common/Button'; +import { ReleaseContext } from '#site/providers/releaseProvider'; import { OperatingSystemLabel, OS_NOT_SUPPORTING_INSTALLERS, -} from '@/util/downloadUtils'; -import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; +} from '#site/util/downloadUtils'; +import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; // Retrieves the pure extension piece from the input string const getExtension = (input: string) => String(input.split('.').slice(-1)); diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 7678f7ac66f16..1ee5e6303d0c0 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -6,14 +6,17 @@ import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useContext, useMemo } from 'react'; -import CodeBox from '@/components/Common/CodeBox'; -import Link from '@/components/Link'; -import LinkWithArrow from '@/components/LinkWithArrow'; -import { createSval } from '@/next.jsx.compiler.mjs'; -import { ReleaseContext, ReleasesContext } from '@/providers/releaseProvider'; -import type { ReleaseContextType } from '@/types/release'; -import { INSTALL_METHODS } from '@/util/downloadUtils'; -import { highlightToHtml } from '@/util/getHighlighter'; +import CodeBox from '#site/components/Common/CodeBox'; +import Link from '#site/components/Link'; +import LinkWithArrow from '#site/components/LinkWithArrow'; +import { createSval } from '#site/next.jsx.compiler.mjs'; +import { + ReleaseContext, + ReleasesContext, +} from '#site/providers/releaseProvider'; +import type { ReleaseContextType } from '#site/types/release'; +import { INSTALL_METHODS } from '#site/util/downloadUtils'; +import { highlightToHtml } from '#site/util/getHighlighter'; // Creates a minimal JavaScript interpreter for parsing the JavaScript code from the snippets // Note: that the code runs inside a sandboxed environment and cannot interact with any code outside of the sandbox diff --git a/apps/site/components/Downloads/Release/VersionDropdown.tsx b/apps/site/components/Downloads/Release/VersionDropdown.tsx index 2f8b1b015c358..c2e1663f09a19 100644 --- a/apps/site/components/Downloads/Release/VersionDropdown.tsx +++ b/apps/site/components/Downloads/Release/VersionDropdown.tsx @@ -5,7 +5,10 @@ import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useContext } from 'react'; -import { ReleaseContext, ReleasesContext } from '@/providers/releaseProvider'; +import { + ReleaseContext, + ReleasesContext, +} from '#site/providers/releaseProvider'; const getDropDownStatus = (version: string, status: string) => { if (status === 'LTS') { diff --git a/apps/site/components/Downloads/ReleaseModal/index.tsx b/apps/site/components/Downloads/ReleaseModal/index.tsx index 23b50e785739d..83a272a7214a0 100644 --- a/apps/site/components/Downloads/ReleaseModal/index.tsx +++ b/apps/site/components/Downloads/ReleaseModal/index.tsx @@ -3,10 +3,10 @@ import Modal from '@node-core/ui-components/Common/Modal'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import { MinorReleasesTable } from '@/components/Downloads/MinorReleasesTable'; -import { ReleaseOverview } from '@/components/Downloads/ReleaseOverview'; -import LinkWithArrow from '@/components/LinkWithArrow'; -import type { NodeRelease } from '@/types'; +import { MinorReleasesTable } from '#site/components/Downloads/MinorReleasesTable'; +import { ReleaseOverview } from '#site/components/Downloads/ReleaseOverview'; +import LinkWithArrow from '#site/components/LinkWithArrow'; +import type { NodeRelease } from '#site/types'; type ReleaseModalProps = { isOpen: boolean; diff --git a/apps/site/components/Downloads/ReleaseOverview/index.tsx b/apps/site/components/Downloads/ReleaseOverview/index.tsx index c444908c99586..a29118a8e400f 100644 --- a/apps/site/components/Downloads/ReleaseOverview/index.tsx +++ b/apps/site/components/Downloads/ReleaseOverview/index.tsx @@ -8,8 +8,8 @@ import NpmIcon from '@node-core/ui-components/Icons/PackageManager/Npm'; import { useTranslations } from 'next-intl'; import type { FC, ReactNode, SVGProps } from 'react'; -import FormattedTime from '@/components/Common/FormattedTime'; -import type { NodeRelease } from '@/types'; +import FormattedTime from '#site/components/Common/FormattedTime'; +import type { NodeRelease } from '#site/types'; import styles from './index.module.css'; diff --git a/apps/site/components/Link.tsx b/apps/site/components/Link.tsx index ae680b9971fac..72ececf586631 100644 --- a/apps/site/components/Link.tsx +++ b/apps/site/components/Link.tsx @@ -1,6 +1,6 @@ import type { FC, HTMLProps } from 'react'; -import { Link as LocalizedLink } from '@/navigation.mjs'; +import { Link as LocalizedLink } from '#site/navigation.mjs'; const Link: FC<HTMLProps<HTMLAnchorElement>> = ({ children, diff --git a/apps/site/components/LinkWithArrow.tsx b/apps/site/components/LinkWithArrow.tsx index fb44bef842c21..12eb3cdf5472d 100644 --- a/apps/site/components/LinkWithArrow.tsx +++ b/apps/site/components/LinkWithArrow.tsx @@ -3,7 +3,7 @@ import type { SlotProps } from '@radix-ui/react-slot'; import { Slot } from '@radix-ui/react-slot'; import type { ComponentProps, FC, PropsWithChildren } from 'react'; -import Link from '@/components/Link'; +import Link from '#site/components/Link'; type LinkWithArrowProps = | ({ asChild?: false } & ComponentProps<typeof Link>) diff --git a/apps/site/components/MDX/Calendar/Event/index.tsx b/apps/site/components/MDX/Calendar/Event/index.tsx index a83a62df801d8..542cb494b6bb7 100644 --- a/apps/site/components/MDX/Calendar/Event/index.tsx +++ b/apps/site/components/MDX/Calendar/Event/index.tsx @@ -1,9 +1,9 @@ import type { FC } from 'react'; -import FormattedTime from '@/components/Common/FormattedTime'; -import Link from '@/components/Link'; -import { getZoomLink, isZoned } from '@/components/MDX/Calendar/utils'; -import type { CalendarEvent } from '@/types'; +import FormattedTime from '#site/components/Common/FormattedTime'; +import Link from '#site/components/Link'; +import { getZoomLink, isZoned } from '#site/components/MDX/Calendar/utils'; +import type { CalendarEvent } from '#site/types'; import styles from './index.module.css'; diff --git a/apps/site/components/MDX/Calendar/UpcomingMeetings.tsx b/apps/site/components/MDX/Calendar/UpcomingMeetings.tsx index cac02b5d71fc8..743db02817ab0 100644 --- a/apps/site/components/MDX/Calendar/UpcomingMeetings.tsx +++ b/apps/site/components/MDX/Calendar/UpcomingMeetings.tsx @@ -1,11 +1,11 @@ import type { FC } from 'react'; -import FormattedTime from '@/components/Common/FormattedTime'; -import Event from '@/components/MDX/Calendar/Event'; -import { getZoomLink, isZoned } from '@/components/MDX/Calendar/utils'; -import { CALENDAR_NODEJS_ID } from '@/next.calendar.constants.mjs'; -import { getCalendarEvents } from '@/next.calendar.mjs'; -import type { CalendarEvent } from '@/types'; +import FormattedTime from '#site/components/Common/FormattedTime'; +import Event from '#site/components/MDX/Calendar/Event'; +import { getZoomLink, isZoned } from '#site/components/MDX/Calendar/utils'; +import { CALENDAR_NODEJS_ID } from '#site/next.calendar.constants.mjs'; +import { getCalendarEvents } from '#site/next.calendar.mjs'; +import type { CalendarEvent } from '#site/types'; import styles from './calendar.module.css'; diff --git a/apps/site/components/MDX/Calendar/utils.ts b/apps/site/components/MDX/Calendar/utils.ts index 7b0f632577172..0c051431d969d 100644 --- a/apps/site/components/MDX/Calendar/utils.ts +++ b/apps/site/components/MDX/Calendar/utils.ts @@ -1,4 +1,4 @@ -import type { CalendarEvent, ZonedCalendarTime } from '@/types'; +import type { CalendarEvent, ZonedCalendarTime } from '#site/types'; export const isZoned = (d: object): d is ZonedCalendarTime => 'dateTime' in d && 'timeZone' in d; diff --git a/apps/site/components/MDX/CodeBox/index.tsx b/apps/site/components/MDX/CodeBox/index.tsx index 01df11b11e741..8aa1367993b20 100644 --- a/apps/site/components/MDX/CodeBox/index.tsx +++ b/apps/site/components/MDX/CodeBox/index.tsx @@ -1,7 +1,7 @@ import type { FC, PropsWithChildren } from 'react'; -import CodeBox from '@/components/Common/CodeBox'; -import { getLanguageDisplayName } from '@/util/getLanguageDisplayName'; +import CodeBox from '#site/components/Common/CodeBox'; +import { getLanguageDisplayName } from '#site/util/getLanguageDisplayName'; type CodeBoxProps = { className?: string; showCopyButton?: string }; diff --git a/apps/site/components/MDX/Image/index.tsx b/apps/site/components/MDX/Image/index.tsx index 871651ddd2882..844a9596acf0b 100644 --- a/apps/site/components/MDX/Image/index.tsx +++ b/apps/site/components/MDX/Image/index.tsx @@ -2,7 +2,7 @@ import type { ImageProps } from 'next/image'; import Image from 'next/image'; import type { FC } from 'react'; -import { isSvgImage } from '@/util/imageUtils'; +import { isSvgImage } from '#site/util/imageUtils'; const MDXImage: FC<ImageProps> = ({ width, height, alt, src, ...props }) => { const isUnoptimizedImage = isSvgImage(src.toString()); diff --git a/apps/site/components/withAvatarGroup.tsx b/apps/site/components/withAvatarGroup.tsx index 10bbcfc8732fb..0c82aabe74c07 100644 --- a/apps/site/components/withAvatarGroup.tsx +++ b/apps/site/components/withAvatarGroup.tsx @@ -4,9 +4,9 @@ import AvatarGroup from '@node-core/ui-components/Common/AvatarGroup'; import Image from 'next/image'; import type { ComponentProps, FC } from 'react'; -import Link from '@/components/Link'; -import type { AuthorProps } from '@/types'; -import { getAuthors } from '@/util/authorUtils'; +import Link from '#site/components/Link'; +import type { AuthorProps } from '#site/types'; +import { getAuthors } from '#site/util/authorUtils'; type WithAvatarGroupProps = Omit< ComponentProps<typeof AvatarGroup>, diff --git a/apps/site/components/withBadgeGroup.tsx b/apps/site/components/withBadgeGroup.tsx index 4047f3af8ec1c..ceda7771adff4 100644 --- a/apps/site/components/withBadgeGroup.tsx +++ b/apps/site/components/withBadgeGroup.tsx @@ -1,9 +1,9 @@ import BadgeGroup from '@node-core/ui-components/Common/BadgeGroup'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { siteConfig } from '@/next.json.mjs'; -import { dateIsBetween } from '@/util/dateUtils'; +import Link from '#site/components/Link'; +import { siteConfig } from '#site/next.json.mjs'; +import { dateIsBetween } from '#site/util/dateUtils'; const WithBadgeGroup: FC<{ section: string }> = ({ section }) => { const badge = siteConfig.websiteBadges[section]; diff --git a/apps/site/components/withBanner.tsx b/apps/site/components/withBanner.tsx index 32061a10c7284..09f05065959d4 100644 --- a/apps/site/components/withBanner.tsx +++ b/apps/site/components/withBanner.tsx @@ -2,9 +2,9 @@ import { ArrowUpRightIcon } from '@heroicons/react/24/outline'; import Banner from '@node-core/ui-components/Common/Banner'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { siteConfig } from '@/next.json.mjs'; -import { dateIsBetween } from '@/util/dateUtils'; +import Link from '#site/components/Link'; +import { siteConfig } from '#site/next.json.mjs'; +import { dateIsBetween } from '#site/util/dateUtils'; const WithBanner: FC<{ section: string }> = ({ section }) => { const banner = siteConfig.websiteBanners[section]; diff --git a/apps/site/components/withBlogCategories.tsx b/apps/site/components/withBlogCategories.tsx index 9bb121d98feda..c011a6b60b618 100644 --- a/apps/site/components/withBlogCategories.tsx +++ b/apps/site/components/withBlogCategories.tsx @@ -1,11 +1,11 @@ import { useTranslations } from 'next-intl'; import type { ComponentProps, FC } from 'react'; -import BlogPostCard from '@/components/Blog/BlogPostCard'; -import LinkTabs from '@/components/Common/LinkTabs'; -import Pagination from '@/components/Common/Pagination'; -import type { BlogPostsRSC } from '@/types'; -import { mapAuthorToCardAuthors } from '@/util/authorUtils'; +import BlogPostCard from '#site/components/Blog/BlogPostCard'; +import LinkTabs from '#site/components/Common/LinkTabs'; +import Pagination from '#site/components/Common/Pagination'; +import type { BlogPostsRSC } from '#site/types'; +import { mapAuthorToCardAuthors } from '#site/util/authorUtils'; type WithBlogCategoriesProps = { categories: ComponentProps<typeof LinkTabs>['tabs']; diff --git a/apps/site/components/withBlogCrossLinks.tsx b/apps/site/components/withBlogCrossLinks.tsx index 07d05fa8900d2..f5d09ed136504 100644 --- a/apps/site/components/withBlogCrossLinks.tsx +++ b/apps/site/components/withBlogCrossLinks.tsx @@ -1,9 +1,9 @@ import type { FC } from 'react'; -import { getClientContext } from '@/client-context'; -import CrossLink from '@/components/Common/CrossLink'; -import getBlogData from '@/next-data/blogData'; -import type { BlogCategory } from '@/types'; +import { getClientContext } from '#site/client-context'; +import CrossLink from '#site/components/Common/CrossLink'; +import getBlogData from '#site/next-data/blogData'; +import type { BlogCategory } from '#site/types'; const WithBlogCrossLinks: FC = async () => { const { pathname } = getClientContext(); diff --git a/apps/site/components/withBreadcrumbs.tsx b/apps/site/components/withBreadcrumbs.tsx index fce1d3b85b7b6..a0fcc4f28792a 100644 --- a/apps/site/components/withBreadcrumbs.tsx +++ b/apps/site/components/withBreadcrumbs.tsx @@ -5,10 +5,14 @@ import Breadcrumbs from '@node-core/ui-components/Common/Breadcrumbs'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { useClientContext, useMediaQuery, useSiteNavigation } from '@/hooks'; -import type { NavigationKeys } from '@/types'; -import { dashToCamelCase } from '@/util/stringUtils'; +import Link from '#site/components/Link'; +import { + useClientContext, + useMediaQuery, + useSiteNavigation, +} from '#site/hooks'; +import type { NavigationKeys } from '#site/types'; +import { dashToCamelCase } from '#site/util/stringUtils'; type WithBreadcrumbsProps = { navKeys?: Array<NavigationKeys>; diff --git a/apps/site/components/withDownloadSection.tsx b/apps/site/components/withDownloadSection.tsx index ebc48602665b8..c65c4b0a53fd5 100644 --- a/apps/site/components/withDownloadSection.tsx +++ b/apps/site/components/withDownloadSection.tsx @@ -1,12 +1,15 @@ import { getLocale } from 'next-intl/server'; import type { FC, PropsWithChildren } from 'react'; -import { getClientContext } from '@/client-context'; -import WithNodeRelease from '@/components/withNodeRelease'; -import getDownloadSnippets from '@/next-data/downloadSnippets'; -import getReleaseData from '@/next-data/releaseData'; -import { defaultLocale } from '@/next.locales.mjs'; -import { ReleaseProvider, ReleasesProvider } from '@/providers/releaseProvider'; +import { getClientContext } from '#site/client-context'; +import WithNodeRelease from '#site/components/withNodeRelease'; +import getDownloadSnippets from '#site/next-data/downloadSnippets'; +import getReleaseData from '#site/next-data/releaseData'; +import { defaultLocale } from '#site/next.locales.mjs'; +import { + ReleaseProvider, + ReleasesProvider, +} from '#site/providers/releaseProvider'; // By default the translated languages do not contain all the download snippets // Hence we always merge any translated snippet with the fallbacks for missing snippets diff --git a/apps/site/components/withFooter.tsx b/apps/site/components/withFooter.tsx index 53b9c96592b54..8bf75ac402940 100644 --- a/apps/site/components/withFooter.tsx +++ b/apps/site/components/withFooter.tsx @@ -4,9 +4,9 @@ import Footer from '@node-core/ui-components/Containers/Footer'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { usePathname } from '@/navigation.mjs'; -import { siteNavigation } from '@/next.json.mjs'; +import Link from '#site/components/Link'; +import { usePathname } from '#site/navigation.mjs'; +import { siteNavigation } from '#site/next.json.mjs'; const WithFooter: FC = () => { const t = useTranslations(); diff --git a/apps/site/components/withLayout.tsx b/apps/site/components/withLayout.tsx index 0c4a1638ee5b3..ec553190e621d 100644 --- a/apps/site/components/withLayout.tsx +++ b/apps/site/components/withLayout.tsx @@ -1,14 +1,14 @@ import type { FC, PropsWithChildren } from 'react'; -import AboutLayout from '@/layouts/About'; -import ArticlePageLayout from '@/layouts/ArticlePage'; -import BlogLayout from '@/layouts/Blog'; -import DefaultLayout from '@/layouts/Default'; -import DownloadLayout from '@/layouts/Download'; -import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; -import LearnLayout from '@/layouts/Learn'; -import PostLayout from '@/layouts/Post'; -import type { Layouts } from '@/types'; +import AboutLayout from '#site/layouts/About'; +import ArticlePageLayout from '#site/layouts/ArticlePage'; +import BlogLayout from '#site/layouts/Blog'; +import DefaultLayout from '#site/layouts/Default'; +import DownloadLayout from '#site/layouts/Download'; +import GlowingBackdropLayout from '#site/layouts/GlowingBackdrop'; +import LearnLayout from '#site/layouts/Learn'; +import PostLayout from '#site/layouts/Post'; +import type { Layouts } from '#site/types'; const layouts = { about: AboutLayout, diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index 133568e2793a8..a7dd313ad8167 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -5,14 +5,14 @@ import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; import { useFormatter, useLocale, useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import WithAvatarGroup from '@/components/withAvatarGroup'; -import { useClientContext } from '@/hooks/react-client'; -import useMediaQuery from '@/hooks/react-client/useMediaQuery'; -import { DEFAULT_DATE_FORMAT } from '@/next.calendar.constants.mjs'; -import { TRANSLATION_URL } from '@/next.constants.mjs'; -import { defaultLocale } from '@/next.locales.mjs'; -import { getGitHubBlobUrl } from '@/util/gitHubUtils'; +import Link from '#site/components/Link'; +import WithAvatarGroup from '#site/components/withAvatarGroup'; +import { useClientContext } from '#site/hooks/react-client'; +import useMediaQuery from '#site/hooks/react-client/useMediaQuery'; +import { DEFAULT_DATE_FORMAT } from '#site/next.calendar.constants.mjs'; +import { TRANSLATION_URL } from '#site/next.constants.mjs'; +import { defaultLocale } from '#site/next.locales.mjs'; +import { getGitHubBlobUrl } from '#site/util/gitHubUtils'; const WithMetaBar: FC = () => { const { headings, readingTime, frontmatter, filename } = useClientContext(); diff --git a/apps/site/components/withNavBar.tsx b/apps/site/components/withNavBar.tsx index 9850ad9f31c8d..882d98bcef78f 100644 --- a/apps/site/components/withNavBar.tsx +++ b/apps/site/components/withNavBar.tsx @@ -13,14 +13,14 @@ import { useLocale, useTranslations } from 'next-intl'; import { useTheme } from 'next-themes'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import WithBanner from '@/components/withBanner'; -import WithNodejsLogo from '@/components/withNodejsLogo'; -import { useSiteNavigation } from '@/hooks'; -import { useRouter, usePathname } from '@/navigation.mjs'; -import { availableLocales } from '@/next.locales.mjs'; +import Link from '#site/components/Link'; +import WithBanner from '#site/components/withBanner'; +import WithNodejsLogo from '#site/components/withNodejsLogo'; +import { useSiteNavigation } from '#site/hooks'; +import { useRouter, usePathname } from '#site/navigation.mjs'; +import { availableLocales } from '#site/next.locales.mjs'; -const SearchButton = dynamic(() => import('@/components/Common/Search'), { +const SearchButton = dynamic(() => import('#site/components/Common/Search'), { ssr: false, loading: () => ( <Skeleton className={styles.searchButtonSkeleton} loading={true} /> diff --git a/apps/site/components/withNodeRelease.tsx b/apps/site/components/withNodeRelease.tsx index 521579fb4f8c8..bb73bfa8290b7 100644 --- a/apps/site/components/withNodeRelease.tsx +++ b/apps/site/components/withNodeRelease.tsx @@ -1,7 +1,7 @@ import type { FC } from 'react'; -import getReleaseData from '@/next-data/releaseData'; -import type { NodeRelease, NodeReleaseStatus } from '@/types'; +import getReleaseData from '#site/next-data/releaseData'; +import type { NodeRelease, NodeReleaseStatus } from '#site/types'; type WithNodeReleaseProps = { status: Array<NodeReleaseStatus> | NodeReleaseStatus; diff --git a/apps/site/components/withNodejsLogo.tsx b/apps/site/components/withNodejsLogo.tsx index 0b76506a77904..87566aeb78b6b 100644 --- a/apps/site/components/withNodejsLogo.tsx +++ b/apps/site/components/withNodejsLogo.tsx @@ -2,7 +2,7 @@ import NodejsLogo from '@node-core/ui-components/Common/NodejsLogo'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import { siteConfig } from '@/next.json.mjs'; +import { siteConfig } from '#site/next.json.mjs'; const WithNodejsLogo: FC = () => { const t = useTranslations(); diff --git a/apps/site/components/withProgressionSidebar.tsx b/apps/site/components/withProgressionSidebar.tsx index 9ee005206bf46..a98d27e801f85 100644 --- a/apps/site/components/withProgressionSidebar.tsx +++ b/apps/site/components/withProgressionSidebar.tsx @@ -6,10 +6,10 @@ import { useLocale, useTranslations } from 'next-intl'; import type { RichTranslationValues } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { useSiteNavigation } from '@/hooks/server'; -import { useRouter } from '@/navigation.mjs'; -import type { NavigationKeys } from '@/types'; +import Link from '#site/components/Link'; +import { useSiteNavigation } from '#site/hooks/server'; +import { useRouter } from '#site/navigation.mjs'; +import type { NavigationKeys } from '#site/types'; type WithProgressionSidebarProps = { navKey: NavigationKeys; diff --git a/apps/site/components/withSidebar.tsx b/apps/site/components/withSidebar.tsx index ac70f5bf624d4..5e93888d994c7 100644 --- a/apps/site/components/withSidebar.tsx +++ b/apps/site/components/withSidebar.tsx @@ -6,10 +6,10 @@ import { useLocale, useTranslations } from 'next-intl'; import type { RichTranslationValues } from 'next-intl'; import type { FC } from 'react'; -import Link from '@/components/Link'; -import { useSiteNavigation } from '@/hooks/server'; -import { useRouter } from '@/navigation.mjs'; -import type { NavigationKeys } from '@/types'; +import Link from '#site/components/Link'; +import { useSiteNavigation } from '#site/hooks/server'; +import { useRouter } from '#site/navigation.mjs'; +import type { NavigationKeys } from '#site/types'; type WithSidebarProps = { navKeys: Array<NavigationKeys>; diff --git a/apps/site/components/withSidebarCrossLinks.tsx b/apps/site/components/withSidebarCrossLinks.tsx index 8b4513ddd2fd1..53bac9215efe3 100644 --- a/apps/site/components/withSidebarCrossLinks.tsx +++ b/apps/site/components/withSidebarCrossLinks.tsx @@ -1,8 +1,8 @@ import type { FC } from 'react'; -import CrossLink from '@/components/Common/CrossLink'; -import { useClientContext, useSiteNavigation } from '@/hooks/server'; -import type { NavigationKeys } from '@/types'; +import CrossLink from '#site/components/Common/CrossLink'; +import { useClientContext, useSiteNavigation } from '#site/hooks/server'; +import type { NavigationKeys } from '#site/types'; type WithCrossLinksProps = { navKey: NavigationKeys }; diff --git a/apps/site/hooks/react-client/__tests__/useClientContext.test.jsx b/apps/site/hooks/react-client/__tests__/useClientContext.test.jsx index 8f3eb918996e9..7d43d41caafa3 100644 --- a/apps/site/hooks/react-client/__tests__/useClientContext.test.jsx +++ b/apps/site/hooks/react-client/__tests__/useClientContext.test.jsx @@ -3,8 +3,8 @@ import { renderHook } from '@testing-library/react'; import { describe, it } from 'node:test'; import assert from 'node:assert/strict'; -import useClientContext from '@/hooks/react-client/useClientContext'; -import { MatterContext } from '@/providers/matterProvider'; +import useClientContext from '#site/hooks/react-client/useClientContext'; +import { MatterContext } from '#site/providers/matterProvider'; describe('useClientContext', () => { it('should return client context values', () => { diff --git a/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.jsx b/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.jsx index 1a9610c0fded1..5bb64c54c7592 100644 --- a/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.jsx +++ b/apps/site/hooks/react-client/__tests__/useCopyToClipboard.test.jsx @@ -4,7 +4,7 @@ import { setTimeout } from 'node:timers/promises'; import { render, fireEvent, screen } from '@testing-library/react'; -import useCopyToClipboard from '@/hooks/react-client/useCopyToClipboard'; +import useCopyToClipboard from '#site/hooks/react-client/useCopyToClipboard'; navigator.clipboard = { writeText: () => {} }; diff --git a/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs b/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs index c410bba50d133..ce9616ae418ad 100644 --- a/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useDetectOS.test.mjs @@ -3,7 +3,7 @@ import { describe, it, afterEach } from 'node:test'; import { renderHook, waitFor } from '@testing-library/react'; -import useDetectOS from '@/hooks/react-client/useDetectOS'; +import useDetectOS from '#site/hooks/react-client/useDetectOS'; const windowsUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'; diff --git a/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs b/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs index c7b0cf0aca981..5bc2c382204f5 100644 --- a/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs +++ b/apps/site/hooks/react-client/__tests__/useMediaQuery.test.mjs @@ -3,7 +3,7 @@ import { describe, it } from 'node:test'; import { renderHook } from '@testing-library/react'; -import useMediaQuery from '@/hooks/react-client/useMediaQuery'; +import useMediaQuery from '#site/hooks/react-client/useMediaQuery'; const noop = () => {}; diff --git a/apps/site/hooks/react-client/__tests__/useNotification.test.jsx b/apps/site/hooks/react-client/__tests__/useNotification.test.jsx index 3748584eff189..fcba40ea86091 100644 --- a/apps/site/hooks/react-client/__tests__/useNotification.test.jsx +++ b/apps/site/hooks/react-client/__tests__/useNotification.test.jsx @@ -3,8 +3,8 @@ import { render } from '@testing-library/react'; import { describe, it } from 'node:test'; import assert from 'node:assert/strict'; -import useNotification from '@/hooks/react-client/useNotification'; -import { NotificationProvider } from '@/providers/notificationProvider'; +import useNotification from '#site/hooks/react-client/useNotification'; +import { NotificationProvider } from '#site/providers/notificationProvider'; describe('useNotification', () => { it('should return the notification dispatch function', () => { diff --git a/apps/site/hooks/react-client/useClientContext.ts b/apps/site/hooks/react-client/useClientContext.ts index a323ab0428fdb..2ecfae88cabc0 100644 --- a/apps/site/hooks/react-client/useClientContext.ts +++ b/apps/site/hooks/react-client/useClientContext.ts @@ -2,8 +2,8 @@ import { useContext } from 'react'; -import { MatterContext } from '@/providers/matterProvider'; -import type { ClientSharedServerContext } from '@/types'; +import { MatterContext } from '#site/providers/matterProvider'; +import type { ClientSharedServerContext } from '#site/types'; const useClientContext = (): ClientSharedServerContext => { const { diff --git a/apps/site/hooks/react-client/useDetectOS.ts b/apps/site/hooks/react-client/useDetectOS.ts index 68854dee2abf5..e751738bd1c61 100644 --- a/apps/site/hooks/react-client/useDetectOS.ts +++ b/apps/site/hooks/react-client/useDetectOS.ts @@ -2,9 +2,9 @@ import { useEffect, useState } from 'react'; -import type { UserArchitecture, UserBitness, UserOS } from '@/types/userOS'; -import { detectOS } from '@/util/detectOS'; -import { getHighEntropyValues } from '@/util/getHighEntropyValues'; +import type { UserArchitecture, UserBitness, UserOS } from '#site/types/userOS'; +import { detectOS } from '#site/util/detectOS'; +import { getHighEntropyValues } from '#site/util/getHighEntropyValues'; type UserOSState = { os: UserOS | 'LOADING'; diff --git a/apps/site/hooks/react-client/useNavigationState.ts b/apps/site/hooks/react-client/useNavigationState.ts index c899ec6957a26..ab3e420d6e668 100644 --- a/apps/site/hooks/react-client/useNavigationState.ts +++ b/apps/site/hooks/react-client/useNavigationState.ts @@ -3,8 +3,8 @@ import type { RefObject } from 'react'; import { useContext, useEffect } from 'react'; -import { NavigationStateContext } from '@/providers/navigationStateProvider'; -import { debounce } from '@/util/debounce'; +import { NavigationStateContext } from '#site/providers/navigationStateProvider'; +import { debounce } from '#site/util/debounce'; const useNavigationState = <T extends HTMLElement>( id: string, diff --git a/apps/site/hooks/react-client/useNotification.ts b/apps/site/hooks/react-client/useNotification.ts index 9e8343b4a7534..acac47f606faf 100644 --- a/apps/site/hooks/react-client/useNotification.ts +++ b/apps/site/hooks/react-client/useNotification.ts @@ -2,7 +2,7 @@ import { useContext } from 'react'; -import { NotificationDispatch } from '@/providers/notificationProvider'; +import { NotificationDispatch } from '#site/providers/notificationProvider'; const useNotification = () => useContext(NotificationDispatch); diff --git a/apps/site/hooks/react-generic/useSiteNavigation.ts b/apps/site/hooks/react-generic/useSiteNavigation.ts index a6c2024f00783..768092b72f31b 100644 --- a/apps/site/hooks/react-generic/useSiteNavigation.ts +++ b/apps/site/hooks/react-generic/useSiteNavigation.ts @@ -2,12 +2,12 @@ import type { RichTranslationValues } from 'next-intl'; import { useTranslations } from 'next-intl'; import type { HTMLAttributeAnchorTarget } from 'react'; -import { siteNavigation } from '@/next.json.mjs'; +import { siteNavigation } from '#site/next.json.mjs'; import type { FormattedMessage, NavigationEntry, NavigationKeys, -} from '@/types'; +} from '#site/types'; type Context = Record<string, RichTranslationValues>; type Navigation = Record<string, NavigationEntry>; diff --git a/apps/site/hooks/react-server/useClientContext.ts b/apps/site/hooks/react-server/useClientContext.ts index f50800fb073b6..981ceb5070773 100644 --- a/apps/site/hooks/react-server/useClientContext.ts +++ b/apps/site/hooks/react-server/useClientContext.ts @@ -1,4 +1,4 @@ -import { getClientContext } from '@/client-context'; +import { getClientContext } from '#site/client-context'; const useClientContext = () => getClientContext(); diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index 81209f2b5ed71..3d899b06f6755 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -2,7 +2,7 @@ import { importLocale } from '@node-core/website-i18n'; import defaultMessages from '@node-core/website-i18n/locales/en.json'; import { getRequestConfig } from 'next-intl/server'; -import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; +import { availableLocaleCodes, defaultLocale } from '#site/next.locales.mjs'; import deepMerge from './util/deepMerge'; diff --git a/apps/site/layouts/About.tsx b/apps/site/layouts/About.tsx index 7deab417f4fae..f37d797c8a852 100644 --- a/apps/site/layouts/About.tsx +++ b/apps/site/layouts/About.tsx @@ -1,12 +1,12 @@ import type { FC, PropsWithChildren } from 'react'; -import WithBreadcrumbs from '@/components/withBreadcrumbs'; -import WithFooter from '@/components/withFooter'; -import WithMetaBar from '@/components/withMetaBar'; -import WithNavBar from '@/components/withNavBar'; -import WithSidebar from '@/components/withSidebar'; -import ArticleLayout from '@/layouts/Article'; -import { ReleaseModalProvider } from '@/providers/releaseModalProvider'; +import WithBreadcrumbs from '#site/components/withBreadcrumbs'; +import WithFooter from '#site/components/withFooter'; +import WithMetaBar from '#site/components/withMetaBar'; +import WithNavBar from '#site/components/withNavBar'; +import WithSidebar from '#site/components/withSidebar'; +import ArticleLayout from '#site/layouts/Article'; +import { ReleaseModalProvider } from '#site/providers/releaseModalProvider'; const AboutLayout: FC<PropsWithChildren> = ({ children }) => ( <ReleaseModalProvider> diff --git a/apps/site/layouts/ArticlePage.tsx b/apps/site/layouts/ArticlePage.tsx index a2cadddc0cfb2..02c2cbb412c46 100644 --- a/apps/site/layouts/ArticlePage.tsx +++ b/apps/site/layouts/ArticlePage.tsx @@ -1,9 +1,9 @@ import type { FC, PropsWithChildren } from 'react'; -import WithMetaBar from '@/components/withMetaBar'; -import WithNavBar from '@/components/withNavBar'; -import WithSidebar from '@/components/withSidebar'; -import ArticleLayout from '@/layouts/Article'; +import WithMetaBar from '#site/components/withMetaBar'; +import WithNavBar from '#site/components/withNavBar'; +import WithSidebar from '#site/components/withSidebar'; +import ArticleLayout from '#site/layouts/Article'; const ArticlePageLayout: FC<PropsWithChildren> = ({ children }) => ( <> diff --git a/apps/site/layouts/Base.tsx b/apps/site/layouts/Base.tsx index 7176b805e5206..83ff12826ed06 100644 --- a/apps/site/layouts/Base.tsx +++ b/apps/site/layouts/Base.tsx @@ -2,8 +2,8 @@ import type { FC, PropsWithChildren } from 'react'; -import { NavigationStateProvider } from '@/providers/navigationStateProvider'; -import { NotificationProvider } from '@/providers/notificationProvider'; +import { NavigationStateProvider } from '#site/providers/navigationStateProvider'; +import { NotificationProvider } from '#site/providers/notificationProvider'; import styles from './layouts.module.css'; diff --git a/apps/site/layouts/Blog.tsx b/apps/site/layouts/Blog.tsx index b8a57d5a9a5f3..4d174cca68c98 100644 --- a/apps/site/layouts/Blog.tsx +++ b/apps/site/layouts/Blog.tsx @@ -1,13 +1,13 @@ import { getTranslations } from 'next-intl/server'; import type { FC } from 'react'; -import { getClientContext } from '@/client-context'; -import BlogHeader from '@/components/Blog/BlogHeader'; -import WithBlogCategories from '@/components/withBlogCategories'; -import WithFooter from '@/components/withFooter'; -import WithNavBar from '@/components/withNavBar'; -import getBlogData from '@/next-data/blogData'; -import type { BlogCategory } from '@/types'; +import { getClientContext } from '#site/client-context'; +import BlogHeader from '#site/components/Blog/BlogHeader'; +import WithBlogCategories from '#site/components/withBlogCategories'; +import WithFooter from '#site/components/withFooter'; +import WithNavBar from '#site/components/withNavBar'; +import getBlogData from '#site/next-data/blogData'; +import type { BlogCategory } from '#site/types'; import styles from './layouts.module.css'; diff --git a/apps/site/layouts/Default.tsx b/apps/site/layouts/Default.tsx index ad903411dadca..dc459c28fa7c4 100644 --- a/apps/site/layouts/Default.tsx +++ b/apps/site/layouts/Default.tsx @@ -1,9 +1,9 @@ import type { FC, PropsWithChildren } from 'react'; -import WithFooter from '@/components/withFooter'; -import WithNavBar from '@/components/withNavBar'; -import WithSidebar from '@/components/withSidebar'; -import ArticleLayout from '@/layouts/Article'; +import WithFooter from '#site/components/withFooter'; +import WithNavBar from '#site/components/withNavBar'; +import WithSidebar from '#site/components/withSidebar'; +import ArticleLayout from '#site/layouts/Article'; const DefaultLayout: FC<PropsWithChildren> = ({ children }) => ( <> diff --git a/apps/site/layouts/Download.tsx b/apps/site/layouts/Download.tsx index cedae914aab5a..eb0cfdcacdf94 100644 --- a/apps/site/layouts/Download.tsx +++ b/apps/site/layouts/Download.tsx @@ -1,9 +1,9 @@ import type { FC, PropsWithChildren } from 'react'; -import { getClientContext } from '@/client-context'; -import WithDownloadSection from '@/components/withDownloadSection'; -import WithFooter from '@/components/withFooter'; -import WithNavBar from '@/components/withNavBar'; +import { getClientContext } from '#site/client-context'; +import WithDownloadSection from '#site/components/withDownloadSection'; +import WithFooter from '#site/components/withFooter'; +import WithNavBar from '#site/components/withNavBar'; import styles from './layouts.module.css'; diff --git a/apps/site/layouts/GlowingBackdrop.tsx b/apps/site/layouts/GlowingBackdrop.tsx index 491eb03b0bc7a..30487e8fd001a 100644 --- a/apps/site/layouts/GlowingBackdrop.tsx +++ b/apps/site/layouts/GlowingBackdrop.tsx @@ -2,8 +2,8 @@ import GlowingBackdrop from '@node-core/ui-components/Common/GlowingBackdrop'; import classNames from 'classnames'; import type { FC, PropsWithChildren } from 'react'; -import WithFooter from '@/components/withFooter'; -import WithNavBar from '@/components/withNavBar'; +import WithFooter from '#site/components/withFooter'; +import WithNavBar from '#site/components/withNavBar'; import styles from './layouts.module.css'; diff --git a/apps/site/layouts/Learn.tsx b/apps/site/layouts/Learn.tsx index a42e6ae5a221c..e795495ac64a1 100644 --- a/apps/site/layouts/Learn.tsx +++ b/apps/site/layouts/Learn.tsx @@ -1,12 +1,12 @@ import type { FC, PropsWithChildren } from 'react'; -import WithBreadcrumbs from '@/components/withBreadcrumbs'; -import WithFooter from '@/components/withFooter'; -import WithMetaBar from '@/components/withMetaBar'; -import WithNavBar from '@/components/withNavBar'; -import WithProgressionSidebar from '@/components/withProgressionSidebar'; -import WithSidebarCrossLinks from '@/components/withSidebarCrossLinks'; -import ArticleLayout from '@/layouts/Article'; +import WithBreadcrumbs from '#site/components/withBreadcrumbs'; +import WithFooter from '#site/components/withFooter'; +import WithMetaBar from '#site/components/withMetaBar'; +import WithNavBar from '#site/components/withNavBar'; +import WithProgressionSidebar from '#site/components/withProgressionSidebar'; +import WithSidebarCrossLinks from '#site/components/withSidebarCrossLinks'; +import ArticleLayout from '#site/layouts/Article'; const LearnLayout: FC<PropsWithChildren> = ({ children }) => ( <> diff --git a/apps/site/layouts/Post.tsx b/apps/site/layouts/Post.tsx index 57ee76f80347d..a614fc27a36bd 100644 --- a/apps/site/layouts/Post.tsx +++ b/apps/site/layouts/Post.tsx @@ -1,14 +1,14 @@ import Preview from '@node-core/ui-components/Common/Preview'; import type { FC, PropsWithChildren } from 'react'; -import WithAvatarGroup from '@/components/withAvatarGroup'; -import WithBlogCrossLinks from '@/components/withBlogCrossLinks'; -import WithFooter from '@/components/withFooter'; -import WithMetaBar from '@/components/withMetaBar'; -import WithNavBar from '@/components/withNavBar'; -import { useClientContext } from '@/hooks/react-server'; -import { mapAuthorToCardAuthors } from '@/util/authorUtils'; -import { mapBlogCategoryToPreviewType } from '@/util/blogUtils'; +import WithAvatarGroup from '#site/components/withAvatarGroup'; +import WithBlogCrossLinks from '#site/components/withBlogCrossLinks'; +import WithFooter from '#site/components/withFooter'; +import WithMetaBar from '#site/components/withMetaBar'; +import WithNavBar from '#site/components/withNavBar'; +import { useClientContext } from '#site/hooks/react-server'; +import { mapAuthorToCardAuthors } from '#site/util/authorUtils'; +import { mapBlogCategoryToPreviewType } from '#site/util/blogUtils'; import styles from './layouts.module.css'; diff --git a/apps/site/middleware.ts b/apps/site/middleware.ts index 95183c635d1c8..58c3ded5d1d70 100644 --- a/apps/site/middleware.ts +++ b/apps/site/middleware.ts @@ -1,6 +1,6 @@ import createMiddleware from 'next-intl/middleware'; -import { availableLocaleCodes, defaultLocale } from '@/next.locales.mjs'; +import { availableLocaleCodes, defaultLocale } from '#site/next.locales.mjs'; export default createMiddleware({ // A list of all locales that are supported diff --git a/apps/site/next-data/blogData.ts b/apps/site/next-data/blogData.ts index a5d1f8e9d704b..9536f5bf57ba9 100644 --- a/apps/site/next-data/blogData.ts +++ b/apps/site/next-data/blogData.ts @@ -2,8 +2,8 @@ import { ENABLE_STATIC_EXPORT, NEXT_DATA_URL, IS_NOT_VERCEL_RUNTIME_ENV, -} from '@/next.constants.mjs'; -import type { BlogCategory, BlogPostsRSC } from '@/types'; +} from '#site/next.constants.mjs'; +import type { BlogCategory, BlogPostsRSC } from '#site/types'; const getBlogData = ( cat: BlogCategory, @@ -14,7 +14,7 @@ const getBlogData = ( // the data directly within the current thread, which will anyways be loaded only once // We use lazy-imports to prevent `provideBlogData` from executing on import if (ENABLE_STATIC_EXPORT || IS_NOT_VERCEL_RUNTIME_ENV) { - return import('@/next-data/providers/blogData').then( + return import('#site/next-data/providers/blogData').then( ({ provideBlogPosts, providePaginatedBlogPosts }) => page ? providePaginatedBlogPosts(cat, page) : provideBlogPosts(cat) ); diff --git a/apps/site/next-data/downloadSnippets.ts b/apps/site/next-data/downloadSnippets.ts index d371d07388c9e..ba2d596eaf062 100644 --- a/apps/site/next-data/downloadSnippets.ts +++ b/apps/site/next-data/downloadSnippets.ts @@ -2,9 +2,9 @@ import { ENABLE_STATIC_EXPORT, NEXT_DATA_URL, IS_NOT_VERCEL_RUNTIME_ENV, -} from '@/next.constants.mjs'; -import { availableLocaleCodes } from '@/next.locales.mjs'; -import type { DownloadSnippet } from '@/types'; +} from '#site/next.constants.mjs'; +import { availableLocaleCodes } from '#site/next.locales.mjs'; +import type { DownloadSnippet } from '#site/types'; export default async function getDownloadSnippets( lang: string @@ -21,7 +21,7 @@ export default async function getDownloadSnippets( // We use lazy-imports to prevent `provideBlogData` from executing on import if (ENABLE_STATIC_EXPORT || IS_NOT_VERCEL_RUNTIME_ENV) { const { default: provideDownloadSnippets } = await import( - '@/next-data/providers/downloadSnippets' + '#site/next-data/providers/downloadSnippets' ); return provideDownloadSnippets(lang)!; } diff --git a/apps/site/next-data/generators/__tests__/releaseData.test.mjs b/apps/site/next-data/generators/__tests__/releaseData.test.mjs index 2201969e1f962..43de9287c87b1 100644 --- a/apps/site/next-data/generators/__tests__/releaseData.test.mjs +++ b/apps/site/next-data/generators/__tests__/releaseData.test.mjs @@ -32,7 +32,7 @@ describe('generateReleaseData', () => { }); const { default: generateReleaseData } = await import( - '@/next-data/generators/releaseData.mjs' + '#site/next-data/generators/releaseData.mjs' ); const result = await generateReleaseData(); diff --git a/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs b/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs index 4e7f53413a9c1..3235698f649a2 100644 --- a/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs +++ b/apps/site/next-data/generators/__tests__/websiteFeeds.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import generateWebsiteFeeds from '@/next-data/generators/websiteFeeds.mjs'; +import generateWebsiteFeeds from '#site/next-data/generators/websiteFeeds.mjs'; import { BASE_URL, BASE_PATH } from '../../../next.constants.mjs'; import { siteConfig } from '../../../next.json.mjs'; diff --git a/apps/site/next-data/providers/blogData.ts b/apps/site/next-data/providers/blogData.ts index bf06a7891665e..de7d42c8f57a5 100644 --- a/apps/site/next-data/providers/blogData.ts +++ b/apps/site/next-data/providers/blogData.ts @@ -1,8 +1,8 @@ import { cache } from 'react'; -import generateBlogData from '@/next-data/generators/blogData.mjs'; -import { BLOG_POSTS_PER_PAGE } from '@/next.constants.mjs'; -import type { BlogCategory, BlogPostsRSC } from '@/types'; +import generateBlogData from '#site/next-data/generators/blogData.mjs'; +import { BLOG_POSTS_PER_PAGE } from '#site/next.constants.mjs'; +import type { BlogCategory, BlogPostsRSC } from '#site/types'; const { categories, posts } = await generateBlogData(); diff --git a/apps/site/next-data/providers/downloadSnippets.ts b/apps/site/next-data/providers/downloadSnippets.ts index 29b5ec7f62631..a7aa7ff7b3d9f 100644 --- a/apps/site/next-data/providers/downloadSnippets.ts +++ b/apps/site/next-data/providers/downloadSnippets.ts @@ -1,6 +1,6 @@ import { cache } from 'react'; -import generateDownloadSnippets from '@/next-data/generators/downloadSnippets.mjs'; +import generateDownloadSnippets from '#site/next-data/generators/downloadSnippets.mjs'; const downloadSnippets = await generateDownloadSnippets(); diff --git a/apps/site/next-data/providers/releaseData.ts b/apps/site/next-data/providers/releaseData.ts index 515be9c92f941..04f37ac05eeda 100644 --- a/apps/site/next-data/providers/releaseData.ts +++ b/apps/site/next-data/providers/releaseData.ts @@ -1,6 +1,6 @@ import { cache } from 'react'; -import generateReleaseData from '@/next-data/generators/releaseData.mjs'; +import generateReleaseData from '#site/next-data/generators/releaseData.mjs'; const releaseData = await generateReleaseData(); diff --git a/apps/site/next-data/providers/websiteFeeds.ts b/apps/site/next-data/providers/websiteFeeds.ts index 79f9ef404d81b..ca3b911d78cbe 100644 --- a/apps/site/next-data/providers/websiteFeeds.ts +++ b/apps/site/next-data/providers/websiteFeeds.ts @@ -1,7 +1,7 @@ import { cache } from 'react'; -import generateWebsiteFeeds from '@/next-data/generators/websiteFeeds.mjs'; -import { provideBlogPosts } from '@/next-data/providers/blogData'; +import generateWebsiteFeeds from '#site/next-data/generators/websiteFeeds.mjs'; +import { provideBlogPosts } from '#site/next-data/providers/blogData'; const websiteFeeds = generateWebsiteFeeds(provideBlogPosts('all')); diff --git a/apps/site/next-data/releaseData.ts b/apps/site/next-data/releaseData.ts index deafe804129a0..382a99cd08682 100644 --- a/apps/site/next-data/releaseData.ts +++ b/apps/site/next-data/releaseData.ts @@ -2,8 +2,8 @@ import { ENABLE_STATIC_EXPORT, NEXT_DATA_URL, IS_NOT_VERCEL_RUNTIME_ENV, -} from '@/next.constants.mjs'; -import type { NodeRelease } from '@/types'; +} from '#site/next.constants.mjs'; +import type { NodeRelease } from '#site/types'; const getReleaseData = (): Promise<Array<NodeRelease>> => { // When we're using Static Exports the Next.js Server is not running (during build-time) @@ -11,7 +11,7 @@ const getReleaseData = (): Promise<Array<NodeRelease>> => { // the data directly within the current thread, which will anyways be loaded only once // We use lazy-imports to prevent `provideBlogData` from executing on import if (ENABLE_STATIC_EXPORT || IS_NOT_VERCEL_RUNTIME_ENV) { - return import('@/next-data/providers/releaseData').then( + return import('#site/next-data/providers/releaseData').then( ({ default: provideReleaseData }) => provideReleaseData() ); } diff --git a/apps/site/package.json b/apps/site/package.json index 266b9d4093df6..f6ed05652d063 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -108,5 +108,16 @@ "typescript-eslint": "~8.31.1", "unified": "^11.0.5", "user-agent-data-types": "0.4.2" + }, + "imports": { + "#site/*": [ + "./*", + "./*.tsx", + "./*/index.tsx", + "./*.ts", + "./*/index.ts", + "./*.mjs", + "./*/index.mjs" + ] } } diff --git a/apps/site/providers/__tests__/matterProvider.test.jsx b/apps/site/providers/__tests__/matterProvider.test.jsx index a9248f3535231..c1e5cb3631074 100644 --- a/apps/site/providers/__tests__/matterProvider.test.jsx +++ b/apps/site/providers/__tests__/matterProvider.test.jsx @@ -3,7 +3,7 @@ import assert from 'node:assert/strict'; import { act, render } from '@testing-library/react'; -import { MatterProvider, MatterContext } from '@/providers/matterProvider'; +import { MatterProvider, MatterContext } from '#site/providers/matterProvider'; const mockContext = { frontmatter: {}, diff --git a/apps/site/providers/__tests__/navigationStateProvider.test.jsx b/apps/site/providers/__tests__/navigationStateProvider.test.jsx index b91e0615735d4..04b9ac8c19156 100644 --- a/apps/site/providers/__tests__/navigationStateProvider.test.jsx +++ b/apps/site/providers/__tests__/navigationStateProvider.test.jsx @@ -3,7 +3,7 @@ import assert from 'node:assert/strict'; import { render } from '@testing-library/react'; -import { NavigationStateProvider } from '@/providers/navigationStateProvider'; +import { NavigationStateProvider } from '#site/providers/navigationStateProvider'; describe('NavigationStateProvider', () => { it('should render without crashing', () => { diff --git a/apps/site/providers/__tests__/notificationProvider.test.jsx b/apps/site/providers/__tests__/notificationProvider.test.jsx index 98b6bb8a80708..9a95573ef7511 100644 --- a/apps/site/providers/__tests__/notificationProvider.test.jsx +++ b/apps/site/providers/__tests__/notificationProvider.test.jsx @@ -7,7 +7,7 @@ import userEvent from '@testing-library/user-event'; import { NotificationProvider, NotificationDispatch, -} from '@/providers/notificationProvider'; +} from '#site/providers/notificationProvider'; describe('NotificationProvider', () => { it('renders children and shows notification with the provided message', async t => { diff --git a/apps/site/providers/__tests__/releaseProvider.test.jsx b/apps/site/providers/__tests__/releaseProvider.test.jsx index ed3031bf24f7e..05e8aadff9e9a 100644 --- a/apps/site/providers/__tests__/releaseProvider.test.jsx +++ b/apps/site/providers/__tests__/releaseProvider.test.jsx @@ -3,7 +3,10 @@ import assert from 'node:assert/strict'; import { render } from '@testing-library/react'; -import { ReleaseProvider, ReleasesProvider } from '@/providers/releaseProvider'; +import { + ReleaseProvider, + ReleasesProvider, +} from '#site/providers/releaseProvider'; describe('ReleaseProvider', () => { it('should render without crashing', () => { diff --git a/apps/site/providers/__tests__/themeProvider.test.jsx b/apps/site/providers/__tests__/themeProvider.test.jsx index de0b4960ea5cd..e3103521b91a0 100644 --- a/apps/site/providers/__tests__/themeProvider.test.jsx +++ b/apps/site/providers/__tests__/themeProvider.test.jsx @@ -16,7 +16,7 @@ describe('ThemeProvider', () => { }, }); - const { ThemeProvider } = await import('@/providers/themeProvider'); + const { ThemeProvider } = await import('#site/providers/themeProvider'); const { container } = render( <ThemeProvider> diff --git a/apps/site/providers/matterProvider.tsx b/apps/site/providers/matterProvider.tsx index ba028bf3edccd..1e683d3e9d974 100644 --- a/apps/site/providers/matterProvider.tsx +++ b/apps/site/providers/matterProvider.tsx @@ -3,9 +3,9 @@ import { createContext } from 'react'; import type { FC, PropsWithChildren } from 'react'; -import { useDetectOS } from '@/hooks'; -import type { ClientSharedServerContext } from '@/types'; -import { assignClientContext } from '@/util/assignClientContext'; +import { useDetectOS } from '#site/hooks'; +import type { ClientSharedServerContext } from '#site/types'; +import { assignClientContext } from '#site/util/assignClientContext'; export const MatterContext = createContext<ClientSharedServerContext>( assignClientContext({}) diff --git a/apps/site/providers/releaseModalProvider.tsx b/apps/site/providers/releaseModalProvider.tsx index acbcb17cc8e5c..8f94aba9fe5ff 100644 --- a/apps/site/providers/releaseModalProvider.tsx +++ b/apps/site/providers/releaseModalProvider.tsx @@ -3,8 +3,8 @@ import { createContext, useState } from 'react'; import type { FC, PropsWithChildren } from 'react'; -import ReleaseModal from '@/components/Downloads/ReleaseModal'; -import type { NodeRelease } from '@/types'; +import ReleaseModal from '#site/components/Downloads/ReleaseModal'; +import type { NodeRelease } from '#site/types'; type ReleaseModalContextType = { activeRelease: NodeRelease | null; diff --git a/apps/site/providers/releaseProvider.tsx b/apps/site/providers/releaseProvider.tsx index 80105503d5aa4..61ee7a5ee17c0 100644 --- a/apps/site/providers/releaseProvider.tsx +++ b/apps/site/providers/releaseProvider.tsx @@ -9,9 +9,12 @@ import { useReducer, } from 'react'; -import reducer, { getActions, releaseState } from '@/reducers/releaseReducer'; -import type { NodeRelease } from '@/types'; -import type * as Types from '@/types/release'; +import reducer, { + getActions, + releaseState, +} from '#site/reducers/releaseReducer'; +import type { NodeRelease } from '#site/types'; +import type * as Types from '#site/types/release'; export const ReleasesContext = createContext<Types.ReleasesContextType>({ releases: [], diff --git a/apps/site/providers/themeProvider.tsx b/apps/site/providers/themeProvider.tsx index 1f11276f0b54d..252d7efd68ec4 100644 --- a/apps/site/providers/themeProvider.tsx +++ b/apps/site/providers/themeProvider.tsx @@ -3,7 +3,7 @@ import { ThemeProvider as NextThemeProvider } from 'next-themes'; import type { FC, PropsWithChildren } from 'react'; -import { THEME_STORAGE_KEY } from '@/next.constants.mjs'; +import { THEME_STORAGE_KEY } from '#site/next.constants.mjs'; export const ThemeProvider: FC<PropsWithChildren> = ({ children }) => ( <NextThemeProvider diff --git a/apps/site/reducers/__tests__/releaseReducer.test.mjs b/apps/site/reducers/__tests__/releaseReducer.test.mjs index 5b3b78190bba1..a319e12056526 100644 --- a/apps/site/reducers/__tests__/releaseReducer.test.mjs +++ b/apps/site/reducers/__tests__/releaseReducer.test.mjs @@ -1,7 +1,10 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import reducer, { releaseState, getActions } from '@/reducers/releaseReducer'; +import reducer, { + releaseState, + getActions, +} from '#site/reducers/releaseReducer'; describe('releaseReducer', () => { it('should return the initial state', () => { diff --git a/apps/site/reducers/releaseReducer.ts b/apps/site/reducers/releaseReducer.ts index 6b475f170e92c..3ad09f64e089c 100644 --- a/apps/site/reducers/releaseReducer.ts +++ b/apps/site/reducers/releaseReducer.ts @@ -1,6 +1,6 @@ import type { Dispatch } from 'react'; -import type * as Types from '@/types/release'; +import type * as Types from '#site/types/release'; export const releaseState: Types.ReleaseState = { // The selected Node.js version to be downloaded diff --git a/apps/site/tsconfig.json b/apps/site/tsconfig.json index aa0bedd8483c1..8b985a1ab27fc 100644 --- a/apps/site/tsconfig.json +++ b/apps/site/tsconfig.json @@ -14,10 +14,6 @@ "isolatedModules": true, "jsx": "preserve", "incremental": true, - "paths": { - "@/*": ["./*"], - "@node-core/ui-components/*": ["../../packages/ui-components/*"] - }, "plugins": [{ "name": "next" }], "baseUrl": "." }, diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index c06919cac9a8a..28f945f6cbd3a 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -1,6 +1,6 @@ -import type { DownloadSnippet } from '@/types/downloads'; -import type { NodeRelease } from '@/types/releases'; -import type { UserOS, UserPlatform } from '@/types/userOS'; +import type { DownloadSnippet } from '#site/types/downloads'; +import type { NodeRelease } from '#site/types/releases'; +import type { UserOS, UserPlatform } from '#site/types/userOS'; export type InstallationMethod = | 'NVM' diff --git a/apps/site/types/server.ts b/apps/site/types/server.ts index e668cf6636e0d..35736d36a16d8 100644 --- a/apps/site/types/server.ts +++ b/apps/site/types/server.ts @@ -1,8 +1,8 @@ import type { Heading } from '@vcarl/remark-headings'; import type { ReadTimeResults } from 'reading-time'; -import type { useDetectOS } from '@/hooks'; -import type { LegacyFrontMatter } from '@/types/frontmatter'; +import type { useDetectOS } from '#site/hooks'; +import type { LegacyFrontMatter } from '#site/types/frontmatter'; export interface ClientSharedServerContext extends ReturnType<typeof useDetectOS> { diff --git a/apps/site/util/__tests__/assignClientContext.test.mjs b/apps/site/util/__tests__/assignClientContext.test.mjs index 2712f5856381d..5768d13cb8c3b 100644 --- a/apps/site/util/__tests__/assignClientContext.test.mjs +++ b/apps/site/util/__tests__/assignClientContext.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { assignClientContext } from '@/util/assignClientContext'; +import { assignClientContext } from '#site/util/assignClientContext'; const mockContext = { frontmatter: { title: 'Sample Title' }, diff --git a/apps/site/util/__tests__/authorUtils.test.mjs b/apps/site/util/__tests__/authorUtils.test.mjs index 402a3033d6110..6a26617258a4d 100644 --- a/apps/site/util/__tests__/authorUtils.test.mjs +++ b/apps/site/util/__tests__/authorUtils.test.mjs @@ -6,7 +6,7 @@ import { getAuthorWithId, getAuthorWithName, getAuthors, -} from '@/util/authorUtils'; +} from '#site/util/authorUtils'; describe('mapAuthorToCardAuthors', () => { it('maps authors to card authors with default avatar source', () => { diff --git a/apps/site/util/__tests__/blogUtils.test.mjs b/apps/site/util/__tests__/blogUtils.test.mjs index 404d9622442fc..7142de43505fd 100644 --- a/apps/site/util/__tests__/blogUtils.test.mjs +++ b/apps/site/util/__tests__/blogUtils.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { mapBlogCategoryToPreviewType } from '@/util/blogUtils'; +import { mapBlogCategoryToPreviewType } from '#site/util/blogUtils'; describe('mapBlogCategoryToPreviewType', () => { it('returns the correct preview type for recognized categories', () => { diff --git a/apps/site/util/__tests__/dateUtils.test.mjs b/apps/site/util/__tests__/dateUtils.test.mjs index 754dfe3829ddc..f9dfe49d738da 100644 --- a/apps/site/util/__tests__/dateUtils.test.mjs +++ b/apps/site/util/__tests__/dateUtils.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { dateIsBetween } from '@/util/dateUtils'; +import { dateIsBetween } from '#site/util/dateUtils'; describe('dateIsBetween', () => { it('should return true when the current date is between start and end dates', () => { diff --git a/apps/site/util/__tests__/debounce.test.mjs b/apps/site/util/__tests__/debounce.test.mjs index b140d38332cd6..0632a3c153f2b 100644 --- a/apps/site/util/__tests__/debounce.test.mjs +++ b/apps/site/util/__tests__/debounce.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it, beforeEach } from 'node:test'; -import { debounce } from '@/util/debounce'; +import { debounce } from '#site/util/debounce'; describe('debounce', () => { beforeEach(t => { diff --git a/apps/site/util/__tests__/deepMerge.test.mjs b/apps/site/util/__tests__/deepMerge.test.mjs index 48c680e5c1ad5..c41a2d421e979 100644 --- a/apps/site/util/__tests__/deepMerge.test.mjs +++ b/apps/site/util/__tests__/deepMerge.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import deepMerge from '@/util/deepMerge'; +import deepMerge from '#site/util/deepMerge'; describe('deepMerge', () => { it('should merge nested objects', () => { diff --git a/apps/site/util/__tests__/detectOS.test.mjs b/apps/site/util/__tests__/detectOS.test.mjs index b4b5c61054c76..c056140aa714a 100644 --- a/apps/site/util/__tests__/detectOS.test.mjs +++ b/apps/site/util/__tests__/detectOS.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { detectOsInUserAgent, detectOS } from '@/util/detectOS'; +import { detectOsInUserAgent, detectOS } from '#site/util/detectOS'; const userAgentTestCases = [ [ diff --git a/apps/site/util/__tests__/downloadUtils.test.mjs b/apps/site/util/__tests__/downloadUtils.test.mjs index bbf2c839cdcd6..1f1e9a8bbb502 100644 --- a/apps/site/util/__tests__/downloadUtils.test.mjs +++ b/apps/site/util/__tests__/downloadUtils.test.mjs @@ -8,7 +8,7 @@ import { INSTALL_METHODS, PACKAGE_MANAGERS, PLATFORMS, -} from '@/util/downloadUtils'; +} from '#site/util/downloadUtils'; describe('parseCompat', () => { it('should handle all OS, install methods, and package managers', () => { diff --git a/apps/site/util/__tests__/getHighEntropyValues.test.mjs b/apps/site/util/__tests__/getHighEntropyValues.test.mjs index dab3e3b9288a2..6d789d3092a31 100644 --- a/apps/site/util/__tests__/getHighEntropyValues.test.mjs +++ b/apps/site/util/__tests__/getHighEntropyValues.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it, beforeEach } from 'node:test'; -import { getHighEntropyValues } from '@/util/getHighEntropyValues'; +import { getHighEntropyValues } from '#site/util/getHighEntropyValues'; const mock = () => Promise.resolve({ platform: 'Win32', architecture: 'x86' }); diff --git a/apps/site/util/__tests__/getLanguageDisplayName.test.mjs b/apps/site/util/__tests__/getLanguageDisplayName.test.mjs index f89094b75ab36..e70c4ecf5bc27 100644 --- a/apps/site/util/__tests__/getLanguageDisplayName.test.mjs +++ b/apps/site/util/__tests__/getLanguageDisplayName.test.mjs @@ -2,7 +2,7 @@ import assert from 'node:assert/strict'; import { it, describe, mock } from 'node:test'; describe('getLanguageDisplayName', async () => { - mock.module('@/shiki.config.mjs', { + mock.module('#site/shiki.config.mjs', { namedExports: { LANGUAGES: [ { name: 'javascript', aliases: ['js'], displayName: 'JavaScript' }, @@ -12,7 +12,7 @@ describe('getLanguageDisplayName', async () => { }); const { getLanguageDisplayName } = await import( - '@/util/getLanguageDisplayName' + '#site/util/getLanguageDisplayName' ); it('should return the display name for a known language', () => { diff --git a/apps/site/util/__tests__/getNodeApiLink.test.mjs b/apps/site/util/__tests__/getNodeApiLink.test.mjs index d9001247f47e4..1987405e325c3 100644 --- a/apps/site/util/__tests__/getNodeApiLink.test.mjs +++ b/apps/site/util/__tests__/getNodeApiLink.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { getNodeApiLink } from '@/util/getNodeApiLink'; +import { getNodeApiLink } from '#site/util/getNodeApiLink'; describe('getNodeApiLink', () => { it('should return the correct API link for versions >=0.3.1 and <0.5.1', () => { diff --git a/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs b/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs index 3f6828bcb74a2..8ec40abda7fb2 100644 --- a/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs +++ b/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { getNodeDownloadUrl } from '@/util/getNodeDownloadUrl'; +import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; const version = 'v18.16.0'; diff --git a/apps/site/util/__tests__/getUserPlatform.test.mjs b/apps/site/util/__tests__/getUserPlatform.test.mjs index 9d867ad551b15..15a0ac90958d1 100644 --- a/apps/site/util/__tests__/getUserPlatform.test.mjs +++ b/apps/site/util/__tests__/getUserPlatform.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { getUserPlatform } from '@/util/getUserPlatform'; +import { getUserPlatform } from '#site/util/getUserPlatform'; describe('getUserPlatform', () => { it('should return arm64 for arm + 64', () => { diff --git a/apps/site/util/__tests__/gitHubUtils.test.mjs b/apps/site/util/__tests__/gitHubUtils.test.mjs index 1bf9bddc87d78..5afc3e64b8c6a 100644 --- a/apps/site/util/__tests__/gitHubUtils.test.mjs +++ b/apps/site/util/__tests__/gitHubUtils.test.mjs @@ -10,7 +10,7 @@ const { createGitHubSlugger, getGitHubBlobUrl, getGitHubApiDocsUrl, -} = await import('@/util/gitHubUtils'); +} = await import('#site/util/gitHubUtils'); describe('gitHubUtils', () => { it('getGitHubAvatarUrl returns the correct URL', () => { diff --git a/apps/site/util/__tests__/hexToRGBA.test.mjs b/apps/site/util/__tests__/hexToRGBA.test.mjs index f14cba50e53b4..94bdd29fa4f83 100644 --- a/apps/site/util/__tests__/hexToRGBA.test.mjs +++ b/apps/site/util/__tests__/hexToRGBA.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { hexToRGBA } from '@/util/hexToRGBA'; +import { hexToRGBA } from '#site/util/hexToRGBA'; describe('hexToRGBA', () => { it('should convert a hex color to an rgba color', () => { diff --git a/apps/site/util/__tests__/imageUtils.test.mjs b/apps/site/util/__tests__/imageUtils.test.mjs index e4153e98cb498..76174a7b4e23e 100644 --- a/apps/site/util/__tests__/imageUtils.test.mjs +++ b/apps/site/util/__tests__/imageUtils.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { isSvgImage } from '@/util/imageUtils'; +import { isSvgImage } from '#site/util/imageUtils'; describe('isSvgImage', () => { const testCases = [ { diff --git a/apps/site/util/__tests__/stringUtils.test.mjs b/apps/site/util/__tests__/stringUtils.test.mjs index 8ffb7ec6b54ab..23429d185a32a 100644 --- a/apps/site/util/__tests__/stringUtils.test.mjs +++ b/apps/site/util/__tests__/stringUtils.test.mjs @@ -5,7 +5,7 @@ import { getAcronymFromString, parseRichTextIntoPlainText, dashToCamelCase, -} from '@/util/stringUtils'; +} from '#site/util/stringUtils'; describe('String utils', () => { it('getAcronymFromString returns the correct acronym', () => { diff --git a/apps/site/util/assignClientContext.ts b/apps/site/util/assignClientContext.ts index f9f2e3508ca78..43e50d519454f 100644 --- a/apps/site/util/assignClientContext.ts +++ b/apps/site/util/assignClientContext.ts @@ -1,4 +1,4 @@ -import type { ClientSharedServerContext } from '@/types'; +import type { ClientSharedServerContext } from '#site/types'; export const assignClientContext = <T extends ClientSharedServerContext>( props: Partial<T> diff --git a/apps/site/util/authorUtils.ts b/apps/site/util/authorUtils.ts index 5a346a80bad95..4a3cccc975ac5 100644 --- a/apps/site/util/authorUtils.ts +++ b/apps/site/util/authorUtils.ts @@ -1,7 +1,7 @@ -import { authors } from '@/next.json.mjs'; -import type { AuthorProps } from '@/types'; -import { getGitHubAvatarUrl } from '@/util/gitHubUtils'; -import { getAcronymFromString } from '@/util/stringUtils'; +import { authors } from '#site/next.json.mjs'; +import type { AuthorProps } from '#site/types'; +import { getGitHubAvatarUrl } from '#site/util/gitHubUtils'; +import { getAcronymFromString } from '#site/util/stringUtils'; export const mapAuthorToCardAuthors = (author: string) => { // Clears text in parentheses diff --git a/apps/site/util/blogUtils.ts b/apps/site/util/blogUtils.ts index 6f63355fbabd6..2ddf810e1aaf6 100644 --- a/apps/site/util/blogUtils.ts +++ b/apps/site/util/blogUtils.ts @@ -1,4 +1,4 @@ -import type { BlogPreviewType } from '@/types'; +import type { BlogPreviewType } from '#site/types'; export const mapBlogCategoryToPreviewType = (type: string): BlogPreviewType => { switch (type) { diff --git a/apps/site/util/detectOS.ts b/apps/site/util/detectOS.ts index 351eb1a9fe444..c7769c5237375 100644 --- a/apps/site/util/detectOS.ts +++ b/apps/site/util/detectOS.ts @@ -1,4 +1,4 @@ -import type { UserOS } from '@/types/userOS'; +import type { UserOS } from '#site/types/userOS'; export const detectOsInUserAgent = (userAgent: string | undefined): UserOS => { // Match OS names and convert to uppercase directly if there's a match diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx index f95e2a626e210..6536a3b6747ab 100644 --- a/apps/site/util/downloadUtils.tsx +++ b/apps/site/util/downloadUtils.tsx @@ -4,9 +4,9 @@ import * as OSIcons from '@node-core/ui-components/Icons/OperatingSystem'; import * as PackageManagerIcons from '@node-core/ui-components/Icons/PackageManager'; import satisfies from 'semver/functions/satisfies'; -import type { NodeReleaseStatus } from '@/types'; -import type * as Types from '@/types/release'; -import type { UserOS, UserPlatform } from '@/types/userOS'; +import type { NodeReleaseStatus } from '#site/types'; +import type * as Types from '#site/types/release'; +import type { UserOS, UserPlatform } from '#site/types/userOS'; // This is a manual list of OS's that do not support/have a way of being installed // with an executable installer. This is used to disable the installer button. diff --git a/apps/site/util/getHighlighter.ts b/apps/site/util/getHighlighter.ts index 2a7b3778e84e8..63aa6d1c0b0ba 100644 --- a/apps/site/util/getHighlighter.ts +++ b/apps/site/util/getHighlighter.ts @@ -1,7 +1,7 @@ import { createHighlighterCoreSync } from '@shikijs/core'; import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript'; -import { LANGUAGES, DEFAULT_THEME } from '@/shiki.config.mjs'; +import { LANGUAGES, DEFAULT_THEME } from '#site/shiki.config.mjs'; // This creates a memoized minimal Shikiji Syntax Highlighter export const shiki = createHighlighterCoreSync({ diff --git a/apps/site/util/getLanguageDisplayName.ts b/apps/site/util/getLanguageDisplayName.ts index 5b1f167ab7092..a62081bd93c4d 100644 --- a/apps/site/util/getLanguageDisplayName.ts +++ b/apps/site/util/getLanguageDisplayName.ts @@ -1,4 +1,4 @@ -import { LANGUAGES } from '@/shiki.config.mjs'; +import { LANGUAGES } from '#site/shiki.config.mjs'; export const getLanguageDisplayName = (language: string): string => { const languageByIdOrAlias = LANGUAGES.find( diff --git a/apps/site/util/getNodeApiLink.ts b/apps/site/util/getNodeApiLink.ts index 54286c83614b6..ec99cd89c543b 100644 --- a/apps/site/util/getNodeApiLink.ts +++ b/apps/site/util/getNodeApiLink.ts @@ -1,6 +1,6 @@ import semVer from 'semver'; -import { DOCS_URL, DIST_URL } from '@/next.constants.mjs'; +import { DOCS_URL, DIST_URL } from '#site/next.constants.mjs'; export const getNodeApiLink = (version: string) => { if (semVer.satisfies(version, '>=0.3.1 <0.5.1')) { diff --git a/apps/site/util/getNodeDownloadUrl.ts b/apps/site/util/getNodeDownloadUrl.ts index 6b4fc34935cd0..d5f2a8ef0c44d 100644 --- a/apps/site/util/getNodeDownloadUrl.ts +++ b/apps/site/util/getNodeDownloadUrl.ts @@ -1,5 +1,5 @@ -import { DIST_URL } from '@/next.constants.mjs'; -import type { UserOS, UserPlatform } from '@/types/userOS'; +import { DIST_URL } from '#site/next.constants.mjs'; +import type { UserOS, UserPlatform } from '#site/types/userOS'; export type DownloadKind = 'installer' | 'binary' | 'source'; diff --git a/apps/site/util/getUserPlatform.ts b/apps/site/util/getUserPlatform.ts index 3341cccca5286..496fe4dec2f24 100644 --- a/apps/site/util/getUserPlatform.ts +++ b/apps/site/util/getUserPlatform.ts @@ -1,4 +1,4 @@ -import type * as Types from '@/types/userOS'; +import type * as Types from '#site/types/userOS'; // This method is used to retrieve a User's platform based on their architecture and bitness. // Note: This is only used for automatic Platform detection for supported platforms by using `useDetectOS` diff --git a/package.json b/package.json index e52404ead05a8..1d3bf0f7bc8d9 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "storybook": "turbo run storybook", "storybook:build": "turbo run storybook:build", "test": "turbo test:unit", - "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout --test-reporter=spec --test-reporter-destination=stdout\" turbo test:unit" + "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout\" turbo test:unit" }, "dependencies": { "acorn": "^8.14.1", diff --git a/packages/i18n/lib/index.mjs b/packages/i18n/lib/index.mjs index 33a2602445a12..12956d80a643b 100644 --- a/packages/i18n/lib/index.mjs +++ b/packages/i18n/lib/index.mjs @@ -1,6 +1,6 @@ 'use strict'; -import localeConfig from '@node-core/website-i18n/config.json' with { type: 'json' }; +import localeConfig from '../config.json' with { type: 'json' }; /** * Imports a locale when exists from the locales directory diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json index 096873c40fd5e..9882c04e6ef66 100644 --- a/packages/i18n/tsconfig.json +++ b/packages/i18n/tsconfig.json @@ -12,7 +12,6 @@ "resolveJsonModule": true, "isolatedModules": true, "incremental": true, - "paths": { "@/*": ["./*"] }, "baseUrl": ".", "outDir": "dist", "rootDir": "." diff --git a/packages/ui-components/Common/AlertBox/index.stories.tsx b/packages/ui-components/Common/AlertBox/index.stories.tsx index 5329069af7b89..d26a407bdacc3 100644 --- a/packages/ui-components/Common/AlertBox/index.stories.tsx +++ b/packages/ui-components/Common/AlertBox/index.stories.tsx @@ -1,7 +1,7 @@ import { ExclamationCircleIcon } from '@heroicons/react/24/solid'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import AlertBox from '@node-core/ui-components/Common/AlertBox'; +import AlertBox from '#ui/Common/AlertBox'; type Story = StoryObj<typeof AlertBox>; type Meta = MetaObj<typeof AlertBox>; diff --git a/packages/ui-components/Common/AvatarGroup/Avatar/index.stories.tsx b/packages/ui-components/Common/AvatarGroup/Avatar/index.stories.tsx index b1520f9f3cf44..387ecaa02880e 100644 --- a/packages/ui-components/Common/AvatarGroup/Avatar/index.stories.tsx +++ b/packages/ui-components/Common/AvatarGroup/Avatar/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Avatar from '@node-core/ui-components/Common/AvatarGroup/Avatar'; +import Avatar from '#ui/Common/AvatarGroup/Avatar'; type Story = StoryObj<typeof Avatar>; type Meta = MetaObj<typeof Avatar>; diff --git a/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx b/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx index fcf15fc679599..666dca159918a 100644 --- a/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx +++ b/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx @@ -2,7 +2,7 @@ import classNames from 'classnames'; import type { HTMLAttributes, ElementType } from 'react'; import { forwardRef } from 'react'; -import type { LinkLike } from '@node-core/ui-components/types'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/AvatarGroup/Overlay/index.stories.tsx b/packages/ui-components/Common/AvatarGroup/Overlay/index.stories.tsx index 77dbb5b53bd57..ca9340dd39298 100644 --- a/packages/ui-components/Common/AvatarGroup/Overlay/index.stories.tsx +++ b/packages/ui-components/Common/AvatarGroup/Overlay/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import AvatarOverlay from '@node-core/ui-components/Common/AvatarGroup/Overlay'; +import AvatarOverlay from '#ui/Common/AvatarGroup/Overlay'; type Story = StoryObj<typeof AvatarOverlay>; type Meta = MetaObj<typeof AvatarOverlay>; diff --git a/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx b/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx index 9e74a9a34b85c..2b91a8bd21143 100644 --- a/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx +++ b/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx @@ -1,7 +1,7 @@ import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; import type { ComponentProps, FC } from 'react'; -import Avatar from '@node-core/ui-components/Common/AvatarGroup/Avatar'; +import Avatar from '#ui/Common/AvatarGroup/Avatar'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/AvatarGroup/index.stories.tsx b/packages/ui-components/Common/AvatarGroup/index.stories.tsx index 928f369286ddb..e2480b42754f1 100644 --- a/packages/ui-components/Common/AvatarGroup/index.stories.tsx +++ b/packages/ui-components/Common/AvatarGroup/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import AvatarGroup from '@node-core/ui-components/Common/AvatarGroup'; +import AvatarGroup from '#ui/Common/AvatarGroup'; type Story = StoryObj<typeof AvatarGroup>; type Meta = MetaObj<typeof AvatarGroup>; diff --git a/packages/ui-components/Common/AvatarGroup/index.tsx b/packages/ui-components/Common/AvatarGroup/index.tsx index 53bc0d6f61a03..51d08744f61b3 100644 --- a/packages/ui-components/Common/AvatarGroup/index.tsx +++ b/packages/ui-components/Common/AvatarGroup/index.tsx @@ -4,12 +4,12 @@ import classNames from 'classnames'; import type { FC, ElementType } from 'react'; import { useState, useMemo } from 'react'; -import type { AvatarProps } from '@node-core/ui-components/Common/AvatarGroup/Avatar'; -import Avatar from '@node-core/ui-components/Common/AvatarGroup/Avatar'; -import avatarstyles from '@node-core/ui-components/Common/AvatarGroup/Avatar/index.module.css'; -import AvatarOverlay from '@node-core/ui-components/Common/AvatarGroup/Overlay'; -import Tooltip from '@node-core/ui-components/Common/Tooltip'; -import type { LinkLike } from '@node-core/ui-components/types'; +import type { AvatarProps } from '#ui/Common/AvatarGroup/Avatar'; +import Avatar from '#ui/Common/AvatarGroup/Avatar'; +import avatarstyles from '#ui/Common/AvatarGroup/Avatar/index.module.css'; +import AvatarOverlay from '#ui/Common/AvatarGroup/Overlay'; +import Tooltip from '#ui/Common/Tooltip'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/Badge/index.stories.tsx b/packages/ui-components/Common/Badge/index.stories.tsx index 874ec97c26fd9..86df07062de4d 100644 --- a/packages/ui-components/Common/Badge/index.stories.tsx +++ b/packages/ui-components/Common/Badge/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Badge from '@node-core/ui-components/Common/Badge'; +import Badge from '#ui/Common/Badge'; type Story = StoryObj<typeof Badge>; type Meta = MetaObj<typeof Badge>; diff --git a/packages/ui-components/Common/BadgeGroup/index.stories.tsx b/packages/ui-components/Common/BadgeGroup/index.stories.tsx index ac2fe623dfdb5..ae100c07c653a 100644 --- a/packages/ui-components/Common/BadgeGroup/index.stories.tsx +++ b/packages/ui-components/Common/BadgeGroup/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import BadgeGroup from '@node-core/ui-components/Common/BadgeGroup'; +import BadgeGroup from '#ui/Common/BadgeGroup'; type Story = StoryObj<typeof BadgeGroup>; type Meta = MetaObj<typeof BadgeGroup>; diff --git a/packages/ui-components/Common/BadgeGroup/index.tsx b/packages/ui-components/Common/BadgeGroup/index.tsx index 761ca9e3aaec6..2975fc8fe3f9b 100644 --- a/packages/ui-components/Common/BadgeGroup/index.tsx +++ b/packages/ui-components/Common/BadgeGroup/index.tsx @@ -1,8 +1,8 @@ import ArrowRightIcon from '@heroicons/react/24/solid/ArrowRightIcon'; import type { ComponentProps, FC, PropsWithChildren } from 'react'; -import Badge from '@node-core/ui-components/Common/Badge'; -import type { LinkLike } from '@node-core/ui-components/types'; +import Badge from '#ui/Common/Badge'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/Banner/index.stories.tsx b/packages/ui-components/Common/Banner/index.stories.tsx index f893f3cab801e..b088f8106c377 100644 --- a/packages/ui-components/Common/Banner/index.stories.tsx +++ b/packages/ui-components/Common/Banner/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Banner from '@node-core/ui-components/Common/Banner'; +import Banner from '#ui/Common/Banner'; type Story = StoryObj<typeof Banner>; type Meta = MetaObj<typeof Banner>; diff --git a/packages/ui-components/Common/BaseActiveLink/index.tsx b/packages/ui-components/Common/BaseActiveLink/index.tsx index 40d85fd9c0db7..05a00af11e5fb 100644 --- a/packages/ui-components/Common/BaseActiveLink/index.tsx +++ b/packages/ui-components/Common/BaseActiveLink/index.tsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; import type { ComponentProps, FC } from 'react'; -import type { LinkLike } from '@node-core/ui-components/types'; +import type { LinkLike } from '#ui/types'; export type ActiveLocalizedLinkProps = ComponentProps<LinkLike> & { activeClassName?: string; diff --git a/packages/ui-components/Common/BaseButton/index.stories.tsx b/packages/ui-components/Common/BaseButton/index.stories.tsx index 6d0e741cc361a..36ffb058a914f 100644 --- a/packages/ui-components/Common/BaseButton/index.stories.tsx +++ b/packages/ui-components/Common/BaseButton/index.stories.tsx @@ -1,7 +1,7 @@ import { ArrowRightIcon } from '@heroicons/react/24/solid'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import BaseButton from '@node-core/ui-components/Common/BaseButton'; +import BaseButton from '#ui/Common/BaseButton'; type Story = StoryObj<typeof BaseButton>; type Meta = MetaObj<typeof BaseButton>; diff --git a/packages/ui-components/Common/BaseButton/index.tsx b/packages/ui-components/Common/BaseButton/index.tsx index 109b4988af78a..383c6f8d9dd53 100644 --- a/packages/ui-components/Common/BaseButton/index.tsx +++ b/packages/ui-components/Common/BaseButton/index.tsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; import type { FC, AnchorHTMLAttributes, ButtonHTMLAttributes } from 'react'; -import type { LinkLike } from '@node-core/ui-components/types'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/BaseCodeBox/index.stories.tsx b/packages/ui-components/Common/BaseCodeBox/index.stories.tsx index 003b6b2c2692d..d5ebd7aa65a3b 100644 --- a/packages/ui-components/Common/BaseCodeBox/index.stories.tsx +++ b/packages/ui-components/Common/BaseCodeBox/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import BaseCodeBox from '@node-core/ui-components/Common/BaseCodeBox'; +import BaseCodeBox from '#ui/Common/BaseCodeBox'; type Story = StoryObj<typeof BaseCodeBox>; type Meta = MetaObj<typeof BaseCodeBox>; diff --git a/packages/ui-components/Common/BaseCodeBox/index.tsx b/packages/ui-components/Common/BaseCodeBox/index.tsx index b51d89c67cf11..c35fd7347ad9d 100644 --- a/packages/ui-components/Common/BaseCodeBox/index.tsx +++ b/packages/ui-components/Common/BaseCodeBox/index.tsx @@ -8,8 +8,8 @@ import classNames from 'classnames'; import type { FC, PropsWithChildren, ReactElement, ReactNode } from 'react'; import { Fragment, isValidElement, useRef } from 'react'; -import BaseButton from '@node-core/ui-components/Common/BaseButton'; -import type { LinkLike } from '@node-core/ui-components/types'; +import BaseButton from '#ui/Common/BaseButton'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/BaseCrossLink/index.stories.tsx b/packages/ui-components/Common/BaseCrossLink/index.stories.tsx index e34f67cfa666a..2b5b6970bc034 100644 --- a/packages/ui-components/Common/BaseCrossLink/index.stories.tsx +++ b/packages/ui-components/Common/BaseCrossLink/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import BaseCrossLink from '@node-core/ui-components/Common/BaseCrossLink'; +import BaseCrossLink from '#ui/Common/BaseCrossLink'; type Story = StoryObj<typeof BaseCrossLink>; type Meta = MetaObj<typeof BaseCrossLink>; diff --git a/packages/ui-components/Common/BaseCrossLink/index.tsx b/packages/ui-components/Common/BaseCrossLink/index.tsx index 3c15a34c83c48..c9d069be70c8f 100644 --- a/packages/ui-components/Common/BaseCrossLink/index.tsx +++ b/packages/ui-components/Common/BaseCrossLink/index.tsx @@ -1,11 +1,8 @@ import classNames from 'classnames'; import type { FC } from 'react'; -import PrevNextArrow from '@node-core/ui-components/Common/BasePagination/PrevNextArrow'; -import type { - LinkLike, - FormattedMessage, -} from '@node-core/ui-components/types'; +import PrevNextArrow from '#ui/Common/BasePagination/PrevNextArrow'; +import type { LinkLike, FormattedMessage } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/BaseLinkTabs/index.stories.tsx b/packages/ui-components/Common/BaseLinkTabs/index.stories.tsx index 76bf7e499c3eb..49b7dc99e6121 100644 --- a/packages/ui-components/Common/BaseLinkTabs/index.stories.tsx +++ b/packages/ui-components/Common/BaseLinkTabs/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import BaseLinkTabs from '@node-core/ui-components/Common/BaseLinkTabs'; +import BaseLinkTabs from '#ui/Common/BaseLinkTabs'; type Story = StoryObj<typeof BaseLinkTabs>; type Meta = MetaObj<typeof BaseLinkTabs>; diff --git a/packages/ui-components/Common/BaseLinkTabs/index.tsx b/packages/ui-components/Common/BaseLinkTabs/index.tsx index 04578e0da7336..81ec353f178c7 100644 --- a/packages/ui-components/Common/BaseLinkTabs/index.tsx +++ b/packages/ui-components/Common/BaseLinkTabs/index.tsx @@ -1,7 +1,7 @@ import type { FC, PropsWithChildren } from 'react'; -import Select from '@node-core/ui-components/Common/Select'; -import type { LinkLike } from '@node-core/ui-components/types'; +import Select from '#ui/Common/Select'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/BasePagination/Ellipsis/index.stories.tsx b/packages/ui-components/Common/BasePagination/Ellipsis/index.stories.tsx index 916c1f6c9b802..66def59b3be0d 100644 --- a/packages/ui-components/Common/BasePagination/Ellipsis/index.stories.tsx +++ b/packages/ui-components/Common/BasePagination/Ellipsis/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Ellipsis from '@node-core/ui-components/Common/BasePagination/Ellipsis'; +import Ellipsis from '#ui/Common/BasePagination/Ellipsis'; type Story = StoryObj<typeof Ellipsis>; type Meta = MetaObj<typeof Ellipsis>; diff --git a/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx b/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx index 880454f3c6fbc..df825c250bdc4 100644 --- a/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx @@ -5,7 +5,7 @@ import { render, screen } from '@testing-library/react'; import { isVisible } from '../../../../../../tests/utilities.mjs'; -import PaginationListItem from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; +import PaginationListItem from '#ui/Common/BasePagination/PaginationListItem'; function renderPaginationListItem({ url, diff --git a/packages/ui-components/Common/BasePagination/PaginationListItem/index.stories.tsx b/packages/ui-components/Common/BasePagination/PaginationListItem/index.stories.tsx index 5a0934c9a39d9..b990e1b4339f9 100644 --- a/packages/ui-components/Common/BasePagination/PaginationListItem/index.stories.tsx +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import PaginationListItem from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; +import PaginationListItem from '#ui/Common/BasePagination/PaginationListItem'; type Story = StoryObj<typeof PaginationListItem>; type Meta = MetaObj<typeof PaginationListItem>; diff --git a/packages/ui-components/Common/BasePagination/PaginationListItem/index.tsx b/packages/ui-components/Common/BasePagination/PaginationListItem/index.tsx index 66543d4c8601a..fe5006b96fa78 100644 --- a/packages/ui-components/Common/BasePagination/PaginationListItem/index.tsx +++ b/packages/ui-components/Common/BasePagination/PaginationListItem/index.tsx @@ -1,6 +1,6 @@ import type { FC } from 'react'; -import type { LinkLike } from '@node-core/ui-components/types'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/BasePagination/__tests__/index.test.jsx b/packages/ui-components/Common/BasePagination/__tests__/index.test.jsx index b1721557806d2..a91013ac8bf21 100644 --- a/packages/ui-components/Common/BasePagination/__tests__/index.test.jsx +++ b/packages/ui-components/Common/BasePagination/__tests__/index.test.jsx @@ -5,7 +5,7 @@ import { render, screen } from '@testing-library/react'; import { isVisible } from '../../../../../tests/utilities.mjs'; -import BasePagination from '@node-core/ui-components/Common/BasePagination'; +import BasePagination from '#ui/Common/BasePagination'; const getPageLabel = number => number.toString(); const labels = { diff --git a/packages/ui-components/Common/BasePagination/index.stories.tsx b/packages/ui-components/Common/BasePagination/index.stories.tsx index 98fb6397da289..2a1e4c8247caa 100644 --- a/packages/ui-components/Common/BasePagination/index.stories.tsx +++ b/packages/ui-components/Common/BasePagination/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import BasePagination from '@node-core/ui-components/Common/BasePagination'; +import BasePagination from '#ui/Common/BasePagination'; type Story = StoryObj<typeof BasePagination>; type Meta = MetaObj<typeof BasePagination>; diff --git a/packages/ui-components/Common/BasePagination/index.tsx b/packages/ui-components/Common/BasePagination/index.tsx index 4cabe6e6e2683..e4b33a8ab16b9 100644 --- a/packages/ui-components/Common/BasePagination/index.tsx +++ b/packages/ui-components/Common/BasePagination/index.tsx @@ -1,9 +1,9 @@ import { ArrowRightIcon, ArrowLeftIcon } from '@heroicons/react/20/solid'; import type { FC } from 'react'; -import Button from '@node-core/ui-components/Common/BaseButton'; -import { useGetPageElements } from '@node-core/ui-components/Common/BasePagination/useGetPageElements'; -import type { LinkLike } from '@node-core/ui-components/types'; +import Button from '#ui/Common/BaseButton'; +import { useGetPageElements } from '#ui/Common/BasePagination/useGetPageElements'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/BasePagination/useGetPageElements.tsx b/packages/ui-components/Common/BasePagination/useGetPageElements.tsx index eabceb995c5ec..2cb159c994531 100644 --- a/packages/ui-components/Common/BasePagination/useGetPageElements.tsx +++ b/packages/ui-components/Common/BasePagination/useGetPageElements.tsx @@ -1,10 +1,10 @@ import type { ComponentProps } from 'react'; -import type BasePagination from '@node-core/ui-components/Common/BasePagination'; -import Ellipsis from '@node-core/ui-components/Common/BasePagination/Ellipsis'; -import type { PaginationListItemProps } from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; -import PaginationListItem from '@node-core/ui-components/Common/BasePagination/PaginationListItem'; -import type { LinkLike } from '@node-core/ui-components/types'; +import type BasePagination from '#ui/Common/BasePagination'; +import Ellipsis from '#ui/Common/BasePagination/Ellipsis'; +import type { PaginationListItemProps } from '#ui/Common/BasePagination/PaginationListItem'; +import PaginationListItem from '#ui/Common/BasePagination/PaginationListItem'; +import type { LinkLike } from '#ui/types'; const parsePages = ( pages: ComponentProps<typeof BasePagination>['pages'], diff --git a/packages/ui-components/Common/Blockquote/index.stories.tsx b/packages/ui-components/Common/Blockquote/index.stories.tsx index 7d0bb884f0d62..3e8fc0f0d42b0 100644 --- a/packages/ui-components/Common/Blockquote/index.stories.tsx +++ b/packages/ui-components/Common/Blockquote/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Blockquote from '@node-core/ui-components/Common/Blockquote'; +import Blockquote from '#ui/Common/Blockquote'; type Story = StoryObj<typeof Blockquote>; type Meta = MetaObj<typeof Blockquote>; diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx b/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx index c8ed33c1385ad..8faed3e1fb116 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx @@ -1,7 +1,7 @@ import HomeIcon from '@heroicons/react/24/outline/HomeIcon'; import type { ComponentProps, FC } from 'react'; -import BreadcrumbLink from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbLink'; +import BreadcrumbLink from '#ui/Common/Breadcrumbs/BreadcrumbLink'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.tsx b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.tsx index 61c7969f0dfea..ea52968dd9ce0 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbLink/index.tsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; import type { ComponentProps, FC } from 'react'; -import type { LinkLike } from '@node-core/ui-components/types'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx b/packages/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx index 5177da5a6ab01..00d0984c8389f 100644 --- a/packages/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx @@ -1,4 +1,4 @@ -import BreadcrumbItem from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbItem'; +import BreadcrumbItem from '#ui/Common/Breadcrumbs/BreadcrumbItem'; const BreadcrumbTruncatedItem = () => ( <BreadcrumbItem disableMicrodata> diff --git a/packages/ui-components/Common/Breadcrumbs/index.stories.tsx b/packages/ui-components/Common/Breadcrumbs/index.stories.tsx index 5829aecb3f41b..e4861a93193e7 100644 --- a/packages/ui-components/Common/Breadcrumbs/index.stories.tsx +++ b/packages/ui-components/Common/Breadcrumbs/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Breadcrumbs from '@node-core/ui-components/Common/Breadcrumbs'; +import Breadcrumbs from '#ui/Common/Breadcrumbs'; type Story = StoryObj<typeof Breadcrumbs>; type Meta = MetaObj<typeof Breadcrumbs>; diff --git a/packages/ui-components/Common/Breadcrumbs/index.tsx b/packages/ui-components/Common/Breadcrumbs/index.tsx index 1a3026af5e00c..708391341783a 100644 --- a/packages/ui-components/Common/Breadcrumbs/index.tsx +++ b/packages/ui-components/Common/Breadcrumbs/index.tsx @@ -1,15 +1,12 @@ import type { FC } from 'react'; import { useMemo } from 'react'; -import BreadcrumbHomeLink from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbHomeLink'; -import BreadcrumbItem from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbItem'; -import BreadcrumbLink from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbLink'; -import BreadcrumbRoot from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbRoot'; -import BreadcrumbTruncatedItem from '@node-core/ui-components/Common/Breadcrumbs/BreadcrumbTruncatedItem'; -import type { - FormattedMessage, - LinkLike, -} from '@node-core/ui-components/types'; +import BreadcrumbHomeLink from '#ui/Common/Breadcrumbs/BreadcrumbHomeLink'; +import BreadcrumbItem from '#ui/Common/Breadcrumbs/BreadcrumbItem'; +import BreadcrumbLink from '#ui/Common/Breadcrumbs/BreadcrumbLink'; +import BreadcrumbRoot from '#ui/Common/Breadcrumbs/BreadcrumbRoot'; +import BreadcrumbTruncatedItem from '#ui/Common/Breadcrumbs/BreadcrumbTruncatedItem'; +import type { FormattedMessage, LinkLike } from '#ui/types'; export type BreadcrumbLink = { label: FormattedMessage; diff --git a/packages/ui-components/Common/CodeTabs/index.stories.tsx b/packages/ui-components/Common/CodeTabs/index.stories.tsx index 0cd1d6c43eb36..55c6c43ac8974 100644 --- a/packages/ui-components/Common/CodeTabs/index.stories.tsx +++ b/packages/ui-components/Common/CodeTabs/index.stories.tsx @@ -2,8 +2,8 @@ import * as TabsPrimitive from '@radix-ui/react-tabs'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import type { FC } from 'react'; -import BaseCodeBox from '@node-core/ui-components/Common/BaseCodeBox'; -import CodeTabs from '@node-core/ui-components/Common/CodeTabs'; +import BaseCodeBox from '#ui/Common/BaseCodeBox'; +import CodeTabs from '#ui/Common/CodeTabs'; type Story = StoryObj<typeof CodeTabs>; type Meta = MetaObj<typeof CodeTabs>; diff --git a/packages/ui-components/Common/CodeTabs/index.tsx b/packages/ui-components/Common/CodeTabs/index.tsx index e56a19543cb0c..68c6cecc6925b 100644 --- a/packages/ui-components/Common/CodeTabs/index.tsx +++ b/packages/ui-components/Common/CodeTabs/index.tsx @@ -1,6 +1,6 @@ import type { ComponentProps, FC } from 'react'; -import Tabs from '@node-core/ui-components/Common/Tabs'; +import Tabs from '#ui/Common/Tabs'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/GlowingBackdrop/index.stories.tsx b/packages/ui-components/Common/GlowingBackdrop/index.stories.tsx index 6db52628da914..5bcd3667d08a9 100644 --- a/packages/ui-components/Common/GlowingBackdrop/index.stories.tsx +++ b/packages/ui-components/Common/GlowingBackdrop/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import GlowingBackdrop from '@node-core/ui-components/Common/GlowingBackdrop'; +import GlowingBackdrop from '#ui/Common/GlowingBackdrop'; type Story = StoryObj<typeof GlowingBackdrop>; type Meta = MetaObj<typeof GlowingBackdrop>; diff --git a/packages/ui-components/Common/GlowingBackdrop/index.tsx b/packages/ui-components/Common/GlowingBackdrop/index.tsx index bd774964e1500..ea498c396ce9f 100644 --- a/packages/ui-components/Common/GlowingBackdrop/index.tsx +++ b/packages/ui-components/Common/GlowingBackdrop/index.tsx @@ -1,6 +1,6 @@ import type { FC } from 'react'; -import HexagonGrid from '@node-core/ui-components/Icons/HexagonGrid'; +import HexagonGrid from '#ui/Icons/HexagonGrid'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/LanguageDropDown/index.stories.tsx b/packages/ui-components/Common/LanguageDropDown/index.stories.tsx index 200674881139d..97378c0d1726c 100644 --- a/packages/ui-components/Common/LanguageDropDown/index.stories.tsx +++ b/packages/ui-components/Common/LanguageDropDown/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import LanguageDropDown from '@node-core/ui-components/Common/LanguageDropDown'; +import LanguageDropDown from '#ui/Common/LanguageDropDown'; type Story = StoryObj<typeof LanguageDropDown>; type Meta = MetaObj<typeof LanguageDropDown>; diff --git a/packages/ui-components/Common/LanguageDropDown/index.tsx b/packages/ui-components/Common/LanguageDropDown/index.tsx index d9f845198b483..e55178333f431 100644 --- a/packages/ui-components/Common/LanguageDropDown/index.tsx +++ b/packages/ui-components/Common/LanguageDropDown/index.tsx @@ -3,7 +3,7 @@ import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; import classNames from 'classnames'; import type { FC } from 'react'; -import type { SimpleLocaleConfig } from '@node-core/ui-components/types'; +import type { SimpleLocaleConfig } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/Modal/index.stories.tsx b/packages/ui-components/Common/Modal/index.stories.tsx index 8b650418a2383..8040bbd63134e 100644 --- a/packages/ui-components/Common/Modal/index.stories.tsx +++ b/packages/ui-components/Common/Modal/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Modal from '@node-core/ui-components/Common/Modal'; +import Modal from '#ui/Common/Modal'; type Story = StoryObj<typeof Modal>; type Meta = MetaObj<typeof Modal>; diff --git a/packages/ui-components/Common/NodejsLogo/index.stories.tsx b/packages/ui-components/Common/NodejsLogo/index.stories.tsx index f8c739ef55a01..acaa659efbae6 100644 --- a/packages/ui-components/Common/NodejsLogo/index.stories.tsx +++ b/packages/ui-components/Common/NodejsLogo/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NodejsLogo from '@node-core/ui-components/Common/NodejsLogo'; +import NodejsLogo from '#ui/Common/NodejsLogo'; type Story = StoryObj<typeof NodejsLogo>; type Meta = MetaObj<typeof NodejsLogo>; diff --git a/packages/ui-components/Common/NodejsLogo/index.tsx b/packages/ui-components/Common/NodejsLogo/index.tsx index 38c0c995b0d58..21725e85d5ae0 100644 --- a/packages/ui-components/Common/NodejsLogo/index.tsx +++ b/packages/ui-components/Common/NodejsLogo/index.tsx @@ -1,7 +1,7 @@ import type { FC } from 'react'; -import NodejsIcon from '@node-core/ui-components/Icons/Logos/Nodejs'; -import type { LogoVariant } from '@node-core/ui-components/types'; +import NodejsIcon from '#ui/Icons/Logos/Nodejs'; +import type { LogoVariant } from '#ui/types'; import style from './index.module.css'; diff --git a/packages/ui-components/Common/Notification/index.stories.tsx b/packages/ui-components/Common/Notification/index.stories.tsx index 3bff7438edb61..e0ae660015a32 100644 --- a/packages/ui-components/Common/Notification/index.stories.tsx +++ b/packages/ui-components/Common/Notification/index.stories.tsx @@ -1,7 +1,7 @@ import { CodeBracketIcon } from '@heroicons/react/24/solid'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Notification from '@node-core/ui-components/Common/Notification'; +import Notification from '#ui/Common/Notification'; type Story = StoryObj<typeof Notification>; type Meta = MetaObj<typeof Notification>; diff --git a/packages/ui-components/Common/Preview/index.stories.tsx b/packages/ui-components/Common/Preview/index.stories.tsx index 92a606add2b11..0d9b2b7f500ee 100644 --- a/packages/ui-components/Common/Preview/index.stories.tsx +++ b/packages/ui-components/Common/Preview/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Preview from '@node-core/ui-components/Common/Preview'; +import Preview from '#ui/Common/Preview'; type Story = StoryObj<typeof Preview>; type Meta = MetaObj<typeof Preview>; diff --git a/packages/ui-components/Common/Preview/index.tsx b/packages/ui-components/Common/Preview/index.tsx index 16d06d039805e..9ea59cfb486cb 100644 --- a/packages/ui-components/Common/Preview/index.tsx +++ b/packages/ui-components/Common/Preview/index.tsx @@ -1,9 +1,9 @@ import classNames from 'classnames'; import type { FC } from 'react'; -import HexagonGrid from '@node-core/ui-components/Icons/HexagonGrid'; -import JsWhiteIcon from '@node-core/ui-components/Icons/Logos/JsWhite'; -import type { BlogPreviewType } from '@node-core/ui-components/types'; +import HexagonGrid from '#ui/Icons/HexagonGrid'; +import JsWhiteIcon from '#ui/Icons/Logos/JsWhite'; +import type { BlogPreviewType } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx index 20219c29e6528..e0c681ca9c75a 100644 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx +++ b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx @@ -1,10 +1,7 @@ import type { ComponentProps, FC } from 'react'; -import ProgressionSidebarItem from '@node-core/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem'; -import type { - FormattedMessage, - LinkLike, -} from '@node-core/ui-components/types'; +import ProgressionSidebarItem from '#ui/Common/ProgressionSidebar/ProgressionSidebarItem'; +import type { FormattedMessage, LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx index 1ffcb13dadea0..bfe313b8dbdce 100644 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx +++ b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx @@ -1,11 +1,8 @@ import type { FC } from 'react'; -import BaseActiveLink from '@node-core/ui-components/Common/BaseActiveLink'; -import ProgressionSidebarIcon from '@node-core/ui-components/Common/ProgressionSidebar/ProgressionSidebarIcon'; -import type { - FormattedMessage, - LinkLike, -} from '@node-core/ui-components/types'; +import BaseActiveLink from '#ui/Common/BaseActiveLink'; +import ProgressionSidebarIcon from '#ui/Common/ProgressionSidebar/ProgressionSidebarIcon'; +import type { FormattedMessage, LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx b/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx index f2594b1d82c75..f40b33b36f837 100644 --- a/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx +++ b/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import ProgressionSidebar from '@node-core/ui-components/Common/ProgressionSidebar'; +import ProgressionSidebar from '#ui/Common/ProgressionSidebar'; type Story = StoryObj<typeof ProgressionSidebar>; type Meta = MetaObj<typeof ProgressionSidebar>; diff --git a/packages/ui-components/Common/ProgressionSidebar/index.tsx b/packages/ui-components/Common/ProgressionSidebar/index.tsx index f571c850af269..0afab901b55f1 100644 --- a/packages/ui-components/Common/ProgressionSidebar/index.tsx +++ b/packages/ui-components/Common/ProgressionSidebar/index.tsx @@ -2,9 +2,9 @@ import { useRef, type ComponentProps, type FC } from 'react'; -import ProgressionSidebarGroup from '@node-core/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup'; -import Select from '@node-core/ui-components/Common/Select'; -import type { LinkLike } from '@node-core/ui-components/types'; +import ProgressionSidebarGroup from '#ui/Common/ProgressionSidebar/ProgressionSidebarGroup'; +import Select from '#ui/Common/Select'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/Select/index.stories.tsx b/packages/ui-components/Common/Select/index.stories.tsx index 7af58fe7c5bee..c3230f6857dde 100644 --- a/packages/ui-components/Common/Select/index.stories.tsx +++ b/packages/ui-components/Common/Select/index.stories.tsx @@ -1,7 +1,7 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Select from '@node-core/ui-components/Common/Select'; -import * as OSIcons from '@node-core/ui-components/Icons/OperatingSystem'; +import Select from '#ui/Common/Select'; +import * as OSIcons from '#ui/Icons/OperatingSystem'; type Story = StoryObj<typeof Select>; type Meta = MetaObj<typeof Select>; diff --git a/packages/ui-components/Common/Select/index.tsx b/packages/ui-components/Common/Select/index.tsx index 66060a782dbe1..efef75be7f0a9 100644 --- a/packages/ui-components/Common/Select/index.tsx +++ b/packages/ui-components/Common/Select/index.tsx @@ -6,8 +6,8 @@ import classNames from 'classnames'; import { useEffect, useId, useMemo, useState } from 'react'; import type { ReactElement, ReactNode } from 'react'; -import Skeleton from '@node-core/ui-components/Common/Skeleton'; -import type { FormattedMessage } from '@node-core/ui-components/types'; +import Skeleton from '#ui/Common/Skeleton'; +import type { FormattedMessage } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Common/Separator/index.stories.tsx b/packages/ui-components/Common/Separator/index.stories.tsx index 4fe7337c8b58c..96bb2674f059c 100644 --- a/packages/ui-components/Common/Separator/index.stories.tsx +++ b/packages/ui-components/Common/Separator/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Separator from '@node-core/ui-components/Common/Separator'; +import Separator from '#ui/Common/Separator'; type Story = StoryObj<typeof Separator>; type Meta = MetaObj<typeof Separator>; diff --git a/packages/ui-components/Common/Tabs/index.stories.tsx b/packages/ui-components/Common/Tabs/index.stories.tsx index 0325422768505..880879abb9194 100644 --- a/packages/ui-components/Common/Tabs/index.stories.tsx +++ b/packages/ui-components/Common/Tabs/index.stories.tsx @@ -2,7 +2,7 @@ import * as TabsPrimitive from '@radix-ui/react-tabs'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import type { ComponentProps } from 'react'; -import Tabs from '@node-core/ui-components/Common/Tabs'; +import Tabs from '#ui/Common/Tabs'; type Story = StoryObj<typeof Tabs>; type Meta = MetaObj<typeof Tabs>; diff --git a/packages/ui-components/Common/ThemeToggle/index.stories.tsx b/packages/ui-components/Common/ThemeToggle/index.stories.tsx index a09fe58a118c0..12762fc982974 100644 --- a/packages/ui-components/Common/ThemeToggle/index.stories.tsx +++ b/packages/ui-components/Common/ThemeToggle/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import ThemeToggle from '@node-core/ui-components/Common/ThemeToggle'; +import ThemeToggle from '#ui/Common/ThemeToggle'; type Story = StoryObj<typeof ThemeToggle>; type Meta = MetaObj<typeof ThemeToggle>; diff --git a/packages/ui-components/Common/Tooltip/index.stories.tsx b/packages/ui-components/Common/Tooltip/index.stories.tsx index bf4a087dc13b7..f48e069e03500 100644 --- a/packages/ui-components/Common/Tooltip/index.stories.tsx +++ b/packages/ui-components/Common/Tooltip/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Tooltip from '@node-core/ui-components/Common/Tooltip'; +import Tooltip from '#ui/Common/Tooltip'; type Story = StoryObj<typeof Tooltip>; type Meta = MetaObj<typeof Tooltip>; diff --git a/packages/ui-components/Containers/Footer/index.stories.tsx b/packages/ui-components/Containers/Footer/index.stories.tsx index 872a0bf48c1ff..4ab3ef251ffed 100644 --- a/packages/ui-components/Containers/Footer/index.stories.tsx +++ b/packages/ui-components/Containers/Footer/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Footer from '@node-core/ui-components/Containers/Footer'; +import Footer from '#ui/Containers/Footer'; type Story = StoryObj<typeof Footer>; type Meta = MetaObj<typeof Footer>; diff --git a/packages/ui-components/Containers/Footer/index.tsx b/packages/ui-components/Containers/Footer/index.tsx index d6a2dacbeb482..53a977ed33fc2 100644 --- a/packages/ui-components/Containers/Footer/index.tsx +++ b/packages/ui-components/Containers/Footer/index.tsx @@ -2,7 +2,7 @@ import type { FC, SVGProps } from 'react'; -import NavItem from '@node-core/ui-components/Containers/NavBar/NavItem'; +import NavItem from '#ui/Containers/NavBar/NavItem'; import { Bluesky, Discord, @@ -11,8 +11,8 @@ import { Mastodon, Slack, X, -} from '@node-core/ui-components/Icons/Social'; -import type { LinkLike } from '@node-core/ui-components/types'; +} from '#ui/Icons/Social'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Containers/MetaBar/index.stories.tsx b/packages/ui-components/Containers/MetaBar/index.stories.tsx index 9f70782713604..513d8a27267d2 100644 --- a/packages/ui-components/Containers/MetaBar/index.stories.tsx +++ b/packages/ui-components/Containers/MetaBar/index.stories.tsx @@ -1,8 +1,8 @@ import { CodeBracketIcon } from '@heroicons/react/24/outline'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import MetaBar from '@node-core/ui-components/Containers/MetaBar'; -import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; +import MetaBar from '#ui/Containers/MetaBar'; +import GitHubIcon from '#ui/Icons/Social/GitHub'; type Story = StoryObj<typeof MetaBar>; type Meta = MetaObj<typeof MetaBar>; diff --git a/packages/ui-components/Containers/MetaBar/index.tsx b/packages/ui-components/Containers/MetaBar/index.tsx index eaca311870cee..ad1e4cf4eda78 100644 --- a/packages/ui-components/Containers/MetaBar/index.tsx +++ b/packages/ui-components/Containers/MetaBar/index.tsx @@ -2,7 +2,7 @@ import type { Heading } from '@vcarl/remark-headings'; import { Fragment, useMemo } from 'react'; import type { FC } from 'react'; -import type { LinkLike } from '@node-core/ui-components/types'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Containers/NavBar/NavItem/index.stories.tsx b/packages/ui-components/Containers/NavBar/NavItem/index.stories.tsx index 3cfae44cdf8fd..9c819254f3973 100644 --- a/packages/ui-components/Containers/NavBar/NavItem/index.stories.tsx +++ b/packages/ui-components/Containers/NavBar/NavItem/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NavItem from '@node-core/ui-components/Containers/NavBar/NavItem'; +import NavItem from '#ui/Containers/NavBar/NavItem'; type Story = StoryObj<typeof NavItem>; type Meta = MetaObj<typeof NavItem>; diff --git a/packages/ui-components/Containers/NavBar/NavItem/index.tsx b/packages/ui-components/Containers/NavBar/NavItem/index.tsx index 2daaa4f8c6ce7..74607ce18134d 100644 --- a/packages/ui-components/Containers/NavBar/NavItem/index.tsx +++ b/packages/ui-components/Containers/NavBar/NavItem/index.tsx @@ -2,8 +2,8 @@ import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; import classNames from 'classnames'; import type { FC, HTMLAttributeAnchorTarget, PropsWithChildren } from 'react'; -import BaseActiveLink from '@node-core/ui-components/Common/BaseActiveLink'; -import type { LinkLike } from '@node-core/ui-components/types'; +import BaseActiveLink from '#ui/Common/BaseActiveLink'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Containers/NavBar/index.stories.tsx b/packages/ui-components/Containers/NavBar/index.stories.tsx index 665b574fa85aa..3a18f73b7a9ae 100644 --- a/packages/ui-components/Containers/NavBar/index.stories.tsx +++ b/packages/ui-components/Containers/NavBar/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NavBar from '@node-core/ui-components/Containers/NavBar'; +import NavBar from '#ui/Containers/NavBar'; type Story = StoryObj<typeof NavBar>; type Meta = MetaObj<typeof NavBar>; diff --git a/packages/ui-components/Containers/NavBar/index.tsx b/packages/ui-components/Containers/NavBar/index.tsx index d50309aaa2a17..1c89566be1c42 100644 --- a/packages/ui-components/Containers/NavBar/index.tsx +++ b/packages/ui-components/Containers/NavBar/index.tsx @@ -12,11 +12,8 @@ import type { ElementType, } from 'react'; -import NavItem from '@node-core/ui-components/Containers/NavBar/NavItem'; -import type { - FormattedMessage, - LinkLike, -} from '@node-core/ui-components/types'; +import NavItem from '#ui/Containers/NavBar/NavItem'; +import type { FormattedMessage, LinkLike } from '#ui/types'; import style from './index.module.css'; diff --git a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.stories.tsx b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.stories.tsx index 5fd052df21822..9bbd1dc8c64ad 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.stories.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import SidebarGroup from '@node-core/ui-components/Containers/Sidebar/SidebarGroup'; +import SidebarGroup from '#ui/Containers/Sidebar/SidebarGroup'; type Story = StoryObj<typeof SidebarGroup>; type Meta = MetaObj<typeof SidebarGroup>; diff --git a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx index e26183fe0e58e..821c3865eb9a2 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx @@ -1,10 +1,7 @@ import type { ComponentProps, FC } from 'react'; -import SidebarItem from '@node-core/ui-components/Containers/Sidebar/SidebarItem'; -import type { - FormattedMessage, - LinkLike, -} from '@node-core/ui-components/types'; +import SidebarItem from '#ui/Containers/Sidebar/SidebarItem'; +import type { FormattedMessage, LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Containers/Sidebar/SidebarItem/index.stories.tsx b/packages/ui-components/Containers/Sidebar/SidebarItem/index.stories.tsx index a8cb4c50fda36..cceee0d5ddf6c 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarItem/index.stories.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import SidebarItem from '@node-core/ui-components/Containers/Sidebar/SidebarItem'; +import SidebarItem from '#ui/Containers/Sidebar/SidebarItem'; type Story = StoryObj<typeof SidebarItem>; type Meta = MetaObj<typeof SidebarItem>; diff --git a/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx b/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx index 417cb0744f517..a15a370a7b2ce 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx @@ -1,11 +1,8 @@ import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; import type { FC } from 'react'; -import ActiveLink from '@node-core/ui-components/Common/BaseActiveLink'; -import type { - FormattedMessage, - LinkLike, -} from '@node-core/ui-components/types'; +import ActiveLink from '#ui/Common/BaseActiveLink'; +import type { FormattedMessage, LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Containers/Sidebar/index.stories.tsx b/packages/ui-components/Containers/Sidebar/index.stories.tsx index 4fcb32d9379fe..2443bf5b7d040 100644 --- a/packages/ui-components/Containers/Sidebar/index.stories.tsx +++ b/packages/ui-components/Containers/Sidebar/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Sidebar from '@node-core/ui-components/Containers/Sidebar'; +import Sidebar from '#ui/Containers/Sidebar'; type Story = StoryObj<typeof Sidebar>; type Meta = MetaObj<typeof Sidebar>; diff --git a/packages/ui-components/Containers/Sidebar/index.tsx b/packages/ui-components/Containers/Sidebar/index.tsx index d2756905294dc..8806b98e3525d 100644 --- a/packages/ui-components/Containers/Sidebar/index.tsx +++ b/packages/ui-components/Containers/Sidebar/index.tsx @@ -1,8 +1,8 @@ import type { ComponentProps, FC } from 'react'; -import Select from '@node-core/ui-components/Common/Select'; -import SidebarGroup from '@node-core/ui-components/Containers/Sidebar/SidebarGroup'; -import type { LinkLike } from '@node-core/ui-components/types'; +import Select from '#ui/Common/Select'; +import SidebarGroup from '#ui/Containers/Sidebar/SidebarGroup'; +import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; diff --git a/packages/ui-components/Icons/HexagonGrid.stories.tsx b/packages/ui-components/Icons/HexagonGrid.stories.tsx index c5d56a3674728..ecc0be09b73d2 100644 --- a/packages/ui-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 '@node-core/ui-components/Icons/HexagonGrid'; +import HexagonGrid from '#ui/Icons/HexagonGrid'; type Story = StoryObj<typeof HexagonGrid>; type Meta = MetaObj<typeof HexagonGrid>; diff --git a/packages/ui-components/Icons/InstallationMethod/index.ts b/packages/ui-components/Icons/InstallationMethod/index.ts index e85544bbaa928..ef8fbe9f60805 100644 --- a/packages/ui-components/Icons/InstallationMethod/index.ts +++ b/packages/ui-components/Icons/InstallationMethod/index.ts @@ -1,10 +1,10 @@ -import Choco from '@node-core/ui-components/Icons/InstallationMethod/Choco'; -import Devbox from '@node-core/ui-components/Icons/InstallationMethod/Devbox'; -import Docker from '@node-core/ui-components/Icons/InstallationMethod/Docker'; -import FNM from '@node-core/ui-components/Icons/InstallationMethod/FNM'; -import Homebrew from '@node-core/ui-components/Icons/InstallationMethod/Homebrew'; -import N from '@node-core/ui-components/Icons/InstallationMethod/N'; -import NVM from '@node-core/ui-components/Icons/InstallationMethod/NVM'; -import Volta from '@node-core/ui-components/Icons/InstallationMethod/Volta'; +import Choco from '#ui/Icons/InstallationMethod/Choco'; +import Devbox from '#ui/Icons/InstallationMethod/Devbox'; +import Docker from '#ui/Icons/InstallationMethod/Docker'; +import FNM from '#ui/Icons/InstallationMethod/FNM'; +import Homebrew from '#ui/Icons/InstallationMethod/Homebrew'; +import N from '#ui/Icons/InstallationMethod/N'; +import NVM from '#ui/Icons/InstallationMethod/NVM'; +import Volta from '#ui/Icons/InstallationMethod/Volta'; export { Choco, Devbox, Docker, FNM, Homebrew, N, NVM, Volta }; diff --git a/packages/ui-components/Icons/Logos/JsWhite.tsx b/packages/ui-components/Icons/Logos/JsWhite.tsx index 0f388784a11c6..76e8894b2df88 100644 --- a/packages/ui-components/Icons/Logos/JsWhite.tsx +++ b/packages/ui-components/Icons/Logos/JsWhite.tsx @@ -1,6 +1,6 @@ import type { FC } from 'react'; -import type { TailwindSVG } from '@node-core/ui-components/types'; +import type { TailwindSVG } from '#ui/types'; const JsWhiteIcon: FC<TailwindSVG> = props => ( <svg diff --git a/packages/ui-components/Icons/Logos/Nodejs.tsx b/packages/ui-components/Icons/Logos/Nodejs.tsx index c4c197126ddb9..71341be690cc8 100644 --- a/packages/ui-components/Icons/Logos/Nodejs.tsx +++ b/packages/ui-components/Icons/Logos/Nodejs.tsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; import type { FC, SVGProps } from 'react'; -import type { LogoVariant } from '@node-core/ui-components/types'; +import type { LogoVariant } from '#ui/types'; type NodeJsLogoProps = SVGProps<SVGSVGElement> & { variant?: LogoVariant; diff --git a/packages/ui-components/Icons/Logos/index.ts b/packages/ui-components/Icons/Logos/index.ts index de487f949bc23..d2762bf43e66e 100644 --- a/packages/ui-components/Icons/Logos/index.ts +++ b/packages/ui-components/Icons/Logos/index.ts @@ -1,10 +1,10 @@ -import JsGreen from '@node-core/ui-components/Icons/Logos/JsGreen'; -import JsWhite from '@node-core/ui-components/Icons/Logos/JsWhite'; -import Nodejs from '@node-core/ui-components/Icons/Logos/Nodejs'; -import NodejsStackedBlack from '@node-core/ui-components/Icons/Logos/NodejsStackedBlack'; -import NodejsStackedDark from '@node-core/ui-components/Icons/Logos/NodejsStackedDark'; -import NodejsStackedLight from '@node-core/ui-components/Icons/Logos/NodejsStackedLight'; -import NodejsStackedWhite from '@node-core/ui-components/Icons/Logos/NodejsStackedWhite'; +import JsGreen from '#ui/Icons/Logos/JsGreen'; +import JsWhite from '#ui/Icons/Logos/JsWhite'; +import Nodejs from '#ui/Icons/Logos/Nodejs'; +import NodejsStackedBlack from '#ui/Icons/Logos/NodejsStackedBlack'; +import NodejsStackedDark from '#ui/Icons/Logos/NodejsStackedDark'; +import NodejsStackedLight from '#ui/Icons/Logos/NodejsStackedLight'; +import NodejsStackedWhite from '#ui/Icons/Logos/NodejsStackedWhite'; export { JsGreen, diff --git a/packages/ui-components/Icons/OperatingSystem/index.ts b/packages/ui-components/Icons/OperatingSystem/index.ts index 161eba3f61f41..775fb3c8f32c5 100644 --- a/packages/ui-components/Icons/OperatingSystem/index.ts +++ b/packages/ui-components/Icons/OperatingSystem/index.ts @@ -1,6 +1,6 @@ -import AIX from '@node-core/ui-components/Icons/OperatingSystem/AIX'; -import Apple from '@node-core/ui-components/Icons/OperatingSystem/Apple'; -import Linux from '@node-core/ui-components/Icons/OperatingSystem/Linux'; -import Microsoft from '@node-core/ui-components/Icons/OperatingSystem/Microsoft'; +import AIX from '#ui/Icons/OperatingSystem/AIX'; +import Apple from '#ui/Icons/OperatingSystem/Apple'; +import Linux from '#ui/Icons/OperatingSystem/Linux'; +import Microsoft from '#ui/Icons/OperatingSystem/Microsoft'; export { AIX, Apple, Linux, Microsoft }; diff --git a/packages/ui-components/Icons/PackageManager/index.ts b/packages/ui-components/Icons/PackageManager/index.ts index 2bf58ab964c5a..554428be9e02f 100644 --- a/packages/ui-components/Icons/PackageManager/index.ts +++ b/packages/ui-components/Icons/PackageManager/index.ts @@ -1,5 +1,5 @@ -import NPM from '@node-core/ui-components/Icons/PackageManager/Npm'; -import PNPM from '@node-core/ui-components/Icons/PackageManager/Pnpm'; -import YARN from '@node-core/ui-components/Icons/PackageManager/Yarn'; +import NPM from '#ui/Icons/PackageManager/Npm'; +import PNPM from '#ui/Icons/PackageManager/Pnpm'; +import YARN from '#ui/Icons/PackageManager/Yarn'; export { NPM, PNPM, YARN }; diff --git a/packages/ui-components/Icons/Social/index.ts b/packages/ui-components/Icons/Social/index.ts index 4f9da6edd82f3..da4edf3064faf 100644 --- a/packages/ui-components/Icons/Social/index.ts +++ b/packages/ui-components/Icons/Social/index.ts @@ -1,9 +1,9 @@ -import Bluesky from '@node-core/ui-components/Icons/Social/Bluesky'; -import Discord from '@node-core/ui-components/Icons/Social/Discord'; -import GitHub from '@node-core/ui-components/Icons/Social/GitHub'; -import LinkedIn from '@node-core/ui-components/Icons/Social/LinkedIn'; -import Mastodon from '@node-core/ui-components/Icons/Social/Mastodon'; -import Slack from '@node-core/ui-components/Icons/Social/Slack'; -import X from '@node-core/ui-components/Icons/Social/X'; +import Bluesky from '#ui/Icons/Social/Bluesky'; +import Discord from '#ui/Icons/Social/Discord'; +import GitHub from '#ui/Icons/Social/GitHub'; +import LinkedIn from '#ui/Icons/Social/LinkedIn'; +import Mastodon from '#ui/Icons/Social/Mastodon'; +import Slack from '#ui/Icons/Social/Slack'; +import X from '#ui/Icons/Social/X'; export { Bluesky, Discord, GitHub, LinkedIn, Mastodon, Slack, X }; diff --git a/packages/ui-components/__design__/node-logos.stories.tsx b/packages/ui-components/__design__/node-logos.stories.tsx index 61abc86dc6ac5..543538c03f6cc 100644 --- a/packages/ui-components/__design__/node-logos.stories.tsx +++ b/packages/ui-components/__design__/node-logos.stories.tsx @@ -8,7 +8,7 @@ import { NodejsStackedDark, NodejsStackedLight, NodejsStackedWhite, -} from '@node-core/ui-components/Icons/Logos'; +} from '#ui/Icons/Logos'; export const HorizontalLogo: StoryObj = { render: () => <Nodejs width={267} height={80} />, diff --git a/packages/ui-components/__design__/platform-logos.stories.tsx b/packages/ui-components/__design__/platform-logos.stories.tsx index 9b311dda28b7f..541e7c4830f85 100644 --- a/packages/ui-components/__design__/platform-logos.stories.tsx +++ b/packages/ui-components/__design__/platform-logos.stories.tsx @@ -8,13 +8,8 @@ import { Choco, N, Volta, -} from '@node-core/ui-components/Icons/InstallationMethod'; -import { - Apple, - Linux, - Microsoft, - AIX, -} from '@node-core/ui-components/Icons/OperatingSystem'; +} from '#ui/Icons/InstallationMethod'; +import { Apple, Linux, Microsoft, AIX } from '#ui/Icons/OperatingSystem'; const osIcons = [Apple, Linux, Microsoft, AIX]; const installMethodIcons = [Docker, Homebrew, NVM, Devbox, Choco, N, Volta]; diff --git a/packages/ui-components/__design__/social-logos.stories.tsx b/packages/ui-components/__design__/social-logos.stories.tsx index ab7ddea04721c..f610752e2730c 100644 --- a/packages/ui-components/__design__/social-logos.stories.tsx +++ b/packages/ui-components/__design__/social-logos.stories.tsx @@ -8,7 +8,7 @@ import { Mastodon, Slack, X, -} from '@node-core/ui-components/Icons/Social'; +} from '#ui/Icons/Social'; const socialIcons = [ [GitHub, Mastodon, LinkedIn], diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index ee7a168c79620..ea4952e3d4738 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -2,15 +2,13 @@ "name": "@node-core/ui-components", "type": "module", "exports": { - "./Common/*": "./Common/*", - "./Common/*/*": "./Common/*/*", - "./Containers/*": "./Containers/*", - "./Containers/*/*": "./Containers/*/*", - "./Icons/*": "./Icons/*", - "./Icons/*/*": "./Icons/*/*", - "./styles/*": "./styles/*", - "./types": "./types.ts", - "./stylelint/*": "./stylelint/*" + "./*": [ + "./*", + "./*.tsx", + "./*/index.tsx", + "./*.ts", + "./*/index.ts" + ] }, "files": [ "Common", @@ -78,6 +76,15 @@ "typescript": "~5.8.2", "typescript-eslint": "~8.31.1" }, + "imports": { + "#ui/*": [ + "./*", + "./*.tsx", + "./*/index.tsx", + "./*.ts", + "./*/index.ts" + ] + }, "engines": { "node": ">=20" } diff --git a/packages/ui-components/tsconfig.json b/packages/ui-components/tsconfig.json index 70e9aa7cd51c2..1a335855bef01 100644 --- a/packages/ui-components/tsconfig.json +++ b/packages/ui-components/tsconfig.json @@ -14,7 +14,7 @@ "isolatedModules": true, "jsx": "preserve", "incremental": true, - "paths": { "@node-core/ui-components/*": ["./*"] } + "baseUrl": "." }, "include": [ "**/*.ts", From 91544e755679416f591a3f05147523bd6844b044 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Mon, 12 May 2025 11:02:57 -0400 Subject: [PATCH 0465/1385] feat(lint): use ESLint for linting snippets (#7720) --- apps/site/eslint.config.js | 5 +- apps/site/next.mdx.plugins.mjs | 4 - apps/site/package.json | 5 +- apps/site/pages/en/index.mdx | 5 +- .../asynchronous-flow-control.md | 2 - .../discover-promises-in-nodejs.md | 4 +- .../dont-block-the-event-loop.md | 50 +++++----- .../event-loop-timers-and-nexttick.md | 4 +- ...-asynchronous-programming-and-callbacks.md | 6 +- ...-read-environment-variables-from-nodejs.md | 6 +- .../diagnostics/memory/using-gc-traces.md | 16 +-- .../pages/en/learn/getting-started/fetch.md | 3 +- .../security-best-practices.md | 5 +- .../manipulating-files/nodejs-file-stats.md | 4 +- .../reading-files-with-nodejs.md | 2 +- .../modules/backpressuring-in-streams.md | 6 +- .../en/learn/modules/how-to-use-streams.md | 61 +----------- .../pages/en/learn/test-runner/mocking.md | 3 +- .../en/learn/test-runner/using-test-runner.md | 20 ++-- apps/site/pages/es/index.mdx | 5 +- apps/site/pages/fa/index.mdx | 5 +- apps/site/pages/fr/index.mdx | 5 +- apps/site/pages/id/index.mdx | 5 +- apps/site/pages/ja/index.mdx | 5 +- apps/site/pages/ko/index.mdx | 2 +- apps/site/pages/pt/index.mdx | 5 +- apps/site/pages/tr/index.mdx | 5 +- apps/site/pages/uk/index.mdx | 5 +- apps/site/pages/zh-cn/index.mdx | 5 +- apps/site/pages/zh-tw/index.mdx | 5 +- apps/site/scripts/lint-snippets/index.mjs | 98 ------------------- apps/site/turbo.json | 4 - package.json | 1 - pnpm-lock.yaml | 9 -- turbo.json | 2 - 35 files changed, 102 insertions(+), 275 deletions(-) delete mode 100755 apps/site/scripts/lint-snippets/index.mjs diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index 7550dce11e375..067acb4db1582 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -20,6 +20,7 @@ const compatConfig = compat.config({ export default tseslint.config( ...baseConfig, + { ignores: ['pages/en/blog/**/*.{md,mdx}/**'] }, { extends: [ react.configs.flat['jsx-runtime'], @@ -40,6 +41,7 @@ export default tseslint.config( { files: ['**/*.{md,mdx}'], extends: [mdx.flat], + processor: mdx.createRemarkProcessor({ lintCodeBlocks: true }), rules: { 'no-irregular-whitespace': 'off', '@next/next/no-img-element': 'off', @@ -77,5 +79,6 @@ export default tseslint.config( }, ], }, - } + }, + mdx.flatCodeBlocks ); diff --git a/apps/site/next.mdx.plugins.mjs b/apps/site/next.mdx.plugins.mjs index 2c7d02968f380..51a76ef0f7bcf 100644 --- a/apps/site/next.mdx.plugins.mjs +++ b/apps/site/next.mdx.plugins.mjs @@ -10,8 +10,6 @@ import rehypeShikiji from './next.mdx.shiki.mjs'; /** * Provides all our Rehype Plugins that are used within MDX - * - * @type {Array<import('unified').Plugin>} */ export const REHYPE_PLUGINS = [ // Generates `id` attributes for headings (H1, ...) @@ -25,8 +23,6 @@ export const REHYPE_PLUGINS = [ /** * Provides all our Remark Plugins that are used within MDX - * - * @type {Array<import('unified').Plugin>} */ export const REMARK_PLUGINS = [ // Support GFM syntax to be used within Markdown diff --git a/apps/site/package.json b/apps/site/package.json index f6ed05652d063..68aad453315f9 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -6,12 +6,11 @@ "check-types": "tsc --noEmit", "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true NODE_NO_WARNINGS=1 next build", "dev": "cross-env NODE_NO_WARNINGS=1 next dev", - "lint": "turbo run lint:md lint:snippets lint:js lint:css", + "lint": "turbo run lint:md lint:js lint:css", "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", "lint:fix": "turbo run lint:md lint:js lint:css --no-cache -- --fix", "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", "lint:md": "eslint \"**/*.md?(x)\" --cache --cache-strategy=content --cache-location=.eslintmdcache", - "lint:snippets": "node ./scripts/lint-snippets/index.mjs", "scripts:release-post": "cross-env NODE_NO_WARNINGS=1 node scripts/release-post/index.mjs", "serve": "pnpm dev", "start": "cross-env NODE_NO_WARNINGS=1 next start", @@ -97,7 +96,6 @@ "remark-lint-no-unused-definitions": "^4.0.2", "remark-lint-prohibited-strings": "^4.0.0", "remark-lint-unordered-list-marker-style": "^4.0.1", - "remark-parse": "11.0.0", "remark-preset-lint-node": "5.1.2", "stylelint": "16.19.1", "stylelint-config-standard": "38.0.0", @@ -106,7 +104,6 @@ "tsx": "^4.19.3", "typescript": "~5.8.2", "typescript-eslint": "~8.31.1", - "unified": "^11.0.5", "user-agent-data-types": "0.4.2" }, "imports": { diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index 7b9f1403e3c7b..95de44c70f2a1 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -96,13 +96,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/en/learn/asynchronous-work/asynchronous-flow-control.md b/apps/site/pages/en/learn/asynchronous-work/asynchronous-flow-control.md index 3fdaeebe8a2d7..6525d1ceab05f 100644 --- a/apps/site/pages/en/learn/asynchronous-work/asynchronous-flow-control.md +++ b/apps/site/pages/en/learn/asynchronous-work/asynchronous-flow-control.md @@ -114,7 +114,6 @@ function getSong() { let _song = ''; let i = 100; for (i; i > 0; i -= 1) { - /* eslint-disable no-loop-func */ setTimeout(function () { _song += `${i} beers on the wall, you take one down and pass it around, ${ i - 1 @@ -123,7 +122,6 @@ function getSong() { _song += "Hey let's get some more beer"; } }, 0); - /* eslint-enable no-loop-func */ } return _song; diff --git a/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md b/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md index 363a9fc1e935d..71a5c919b1ff0 100644 --- a/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md +++ b/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md @@ -31,7 +31,7 @@ The return value of the executor function is ignored: only `resolve` or `reject` ```js const myPromise = new Promise((resolve, reject) => { - let success = true; + const success = true; if (success) { resolve('Operation was successful!'); @@ -56,7 +56,7 @@ Once a Promise is created, you can handle the outcome by using the `.then()`, `. ```js const myPromise = new Promise((resolve, reject) => { - let success = true; + const success = true; if (success) { resolve('Operation was successful!'); diff --git a/apps/site/pages/en/learn/asynchronous-work/dont-block-the-event-loop.md b/apps/site/pages/en/learn/asynchronous-work/dont-block-the-event-loop.md index f3b32412d7ebb..12a93f01d5652 100644 --- a/apps/site/pages/en/learn/asynchronous-work/dont-block-the-event-loop.md +++ b/apps/site/pages/en/learn/asynchronous-work/dont-block-the-event-loop.md @@ -126,7 +126,7 @@ Example 2: An `O(n)` callback. This callback will run quickly for small `n` and ```js app.get('/countToN', (req, res) => { - let n = req.query.n; + const n = req.query.n; // n iterations before giving someone else a turn for (let i = 0; i < n; i++) { @@ -141,7 +141,7 @@ Example 3: An `O(n^2)` callback. This callback will still run quickly for small ```js app.get('/countToN2', (req, res) => { - let n = req.query.n; + const n = req.query.n; // n^2 iterations before giving someone else a turn for (let i = 0; i < n; i++) { @@ -193,7 +193,7 @@ Here is an example vulnerable regexp exposing its server to REDOS: ```js app.get('/redos-me', (req, res) => { - let filePath = req.query.filePath; + const filePath = req.query.filePath; // REDOS if (filePath.match(/(\/.+)+$/)) { @@ -272,28 +272,30 @@ Example: JSON blocking. We create an object `obj` of size 2^21 and `JSON.stringi ```js let obj = { a: 1 }; -let niter = 20; +const iterations = 20; -let before, str, pos, res, took; - -for (let i = 0; i < niter; i++) { - obj = { obj1: obj, obj2: obj }; // Doubles in size each iter +// Expand the object exponentially by nesting it +for (let i = 0; i < iterations; i++) { + obj = { obj1: obj, obj2: obj }; } -before = process.hrtime(); -str = JSON.stringify(obj); -took = process.hrtime(before); -console.log('JSON.stringify took ' + took); - -before = process.hrtime(); -pos = str.indexOf('nomatch'); -took = process.hrtime(before); -console.log('Pure indexof took ' + took); - -before = process.hrtime(); -res = JSON.parse(str); -took = process.hrtime(before); -console.log('JSON.parse took ' + took); +// Measure time to stringify the object +let start = process.hrtime(); +const jsonString = JSON.stringify(obj); +let duration = process.hrtime(start); +console.log('JSON.stringify took', duration); + +// Measure time to search a string within the JSON +start = process.hrtime(); +const index = jsonString.indexOf('nomatch'); // Always -1 +duration = process.hrtime(start); +console.log('String.indexOf took', duration); + +// Measure time to parse the JSON back to an object +start = process.hrtime(); +const parsed = JSON.parse(jsonString); +duration = process.hrtime(start); +console.log('JSON.parse took', duration); ``` There are npm modules that offer asynchronous JSON APIs. See for example: @@ -317,7 +319,7 @@ Example 1: Un-partitioned average, costs `O(n)` ```js for (let i = 0; i < n; i++) sum += i; -let avg = sum / n; +const avg = sum / n; console.log('avg: ' + avg); ``` @@ -341,7 +343,7 @@ function asyncAvg(n, avgCB) { // Start the helper, with CB to call avgCB. help(1, function (sum) { - let avg = sum / n; + const avg = sum / n; avgCB(avg); }); } diff --git a/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md b/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md index 1f6680e9464ab..a50114c04d8fd 100644 --- a/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md +++ b/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md @@ -338,7 +338,7 @@ This philosophy can lead to some potentially problematic situations. Take this snippet for example: ```js -let bar; +let bar = null; // this has an asynchronous signature, but calls callback synchronously function someAsyncApiCall(callback) { @@ -370,7 +370,7 @@ useful for the user to be alerted to an error before the event loop is allowed to continue. Here is the previous example using `process.nextTick()`: ```js -let bar; +let bar = null; function someAsyncApiCall(callback) { process.nextTick(callback); diff --git a/apps/site/pages/en/learn/asynchronous-work/javascript-asynchronous-programming-and-callbacks.md b/apps/site/pages/en/learn/asynchronous-work/javascript-asynchronous-programming-and-callbacks.md index 5e64b756cf9b5..11b7bda915516 100644 --- a/apps/site/pages/en/learn/asynchronous-work/javascript-asynchronous-programming-and-callbacks.md +++ b/apps/site/pages/en/learn/asynchronous-work/javascript-asynchronous-programming-and-callbacks.md @@ -79,7 +79,11 @@ XHR requests also accept a callback, in this example by assigning a function to const xhr = new XMLHttpRequest(); xhr.onreadystatechange = () => { if (xhr.readyState === 4) { - xhr.status === 200 ? console.log(xhr.responseText) : console.error('error'); + if (xhr.status === 200) { + console.log(xhr.responseText); + } else { + console.error('error'); + } } }; xhr.open('GET', 'https://yoursite.com'); diff --git a/apps/site/pages/en/learn/command-line/how-to-read-environment-variables-from-nodejs.md b/apps/site/pages/en/learn/command-line/how-to-read-environment-variables-from-nodejs.md index d4d84c6c2e04d..e5cd78eaddcaa 100644 --- a/apps/site/pages/en/learn/command-line/how-to-read-environment-variables-from-nodejs.md +++ b/apps/site/pages/en/learn/command-line/how-to-read-environment-variables-from-nodejs.md @@ -21,8 +21,8 @@ That will pass the user `USER_ID` as **239482** and the `USER_KEY` as **foobar** Here is an example that accesses the `USER_ID` and `USER_KEY` environment variables, which we set in above code. ```js -process.env.USER_ID; // "239482" -process.env.USER_KEY; // "foobar" +console.log(process.env.USER_ID); // "239482" +console.log(process.env.USER_KEY); // "foobar" ``` In the same way you can access any custom environment variable you set. @@ -39,7 +39,7 @@ PORT=3000 In your js file ```js -process.env.PORT; // "3000" +console.log(process.env.PORT); // "3000" ``` Run `app.js` file with environment variables set in `.env` file. diff --git a/apps/site/pages/en/learn/diagnostics/memory/using-gc-traces.md b/apps/site/pages/en/learn/diagnostics/memory/using-gc-traces.md index 465562d5db03e..19b1b66f97a8d 100644 --- a/apps/site/pages/en/learn/diagnostics/memory/using-gc-traces.md +++ b/apps/site/pages/en/learn/diagnostics/memory/using-gc-traces.md @@ -248,8 +248,8 @@ Let's modify our script a bit: ```mjs // script-fix.mjs -import os from 'node:os'; import fs from 'node:fs/promises'; +import os from 'node:os'; let len = 1_000_000; const fileName = `entries-${Date.now()}`; @@ -366,13 +366,13 @@ You can get GC statistics as [PerformanceEntry][] from the callback in For example: -```ts -PerformanceEntry { - name: 'gc', - entryType: 'gc', - startTime: 2820.567669, - duration: 1.315709, - kind: 1 +```json +{ + "name": "gc", + "entryType": "gc", + "startTime": 2820.567669, + "duration": 1.315709, + "kind": 1 } ``` diff --git a/apps/site/pages/en/learn/getting-started/fetch.md b/apps/site/pages/en/learn/getting-started/fetch.md index 3664e4fd34f9f..26cd99cd51f70 100644 --- a/apps/site/pages/en/learn/getting-started/fetch.md +++ b/apps/site/pages/en/learn/getting-started/fetch.md @@ -133,9 +133,10 @@ try { [Streams](https://nodejs.org/docs/v22.14.0/api/stream.html#stream) is a feature in Node.js that allows you to read and write chunks of data. ```js -import { stream } from 'undici'; import { Writable } from 'stream'; +import { stream } from 'undici'; + async function fetchGitHubRepos() { const url = 'https://api.github.com/users/nodejs/repos'; 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 03ce9976143fd..cd47ffdefe959 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 @@ -130,7 +130,7 @@ There are some mechanisms to control this behavior by defining a blocklist with `.npmignore`. Throughout these files, you can specify which files/folders should not be published. The [files property][] in `package.json` allows the inverse operation - -- allowed list. + \-- allowed list. - In case of an exposure, make sure to [unpublish the package][]. ### HTTP Request Smuggling (CWE-444) @@ -180,6 +180,7 @@ of requests. - The crypto API exposes a function `timingSafeEqual` to compare actual and expected sensitive values using a constant-time algorithm. + - For password comparison, you can use the [scrypt][] available also on the native crypto module. @@ -275,7 +276,6 @@ Monkey patching refers to the modification of properties in runtime aiming to change the existing behavior. Example: ```js -// eslint-disable-next-line no-extend-native Array.prototype.push = function (item) { // overriding the global [].push }; @@ -290,7 +290,6 @@ Therefore, the following snippet **will not** override the default behavior of `Array.prototype.push` ```js -// eslint-disable-next-line no-extend-native Array.prototype.push = function (item) { // overriding the global [].push }; diff --git a/apps/site/pages/en/learn/manipulating-files/nodejs-file-stats.md b/apps/site/pages/en/learn/manipulating-files/nodejs-file-stats.md index fb748a8a46424..2b196196d907d 100644 --- a/apps/site/pages/en/learn/manipulating-files/nodejs-file-stats.md +++ b/apps/site/pages/en/learn/manipulating-files/nodejs-file-stats.md @@ -92,7 +92,7 @@ fs.stat('/Users/joe/test.txt', (err, stats) => { stats.isFile(); // true stats.isDirectory(); // false stats.isSymbolicLink(); // false - stats.size; // 1024000 //= 1MB + console.log(stats.size); // 1024000 //= 1MB }); ``` @@ -123,7 +123,7 @@ try { stats.isFile(); // true stats.isDirectory(); // false stats.isSymbolicLink(); // false - stats.size; // 1024000 //= 1MB + console.log(stats.size); // 1024000 //= 1MB } catch (err) { console.log(err); } diff --git a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md index 260515e7477d0..24735b2f375c0 100644 --- a/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md +++ b/apps/site/pages/en/learn/manipulating-files/reading-files-with-nodejs.md @@ -91,8 +91,8 @@ In this case, a better option is to read the file content using streams. ```mjs import fs from 'fs'; -import path from 'path'; import { pipeline } from 'node:stream/promises'; +import path from 'path'; const fileUrl = 'https://www.gutenberg.org/files/2701/2701-0.txt'; const outputFilePath = path.join(process.cwd(), 'moby.md'); diff --git a/apps/site/pages/en/learn/modules/backpressuring-in-streams.md b/apps/site/pages/en/learn/modules/backpressuring-in-streams.md index 32346d6c67163..6d7f44869901c 100644 --- a/apps/site/pages/en/learn/modules/backpressuring-in-streams.md +++ b/apps/site/pages/en/learn/modules/backpressuring-in-streams.md @@ -94,8 +94,8 @@ inp.pipe(gzip).pipe(out); ``` ```mjs -import { createGzip } from 'node:zlib'; import { createReadStream, createWriteStream } from 'node:fs'; +import { createGzip } from 'node:zlib'; const gzip = createGzip(); @@ -147,8 +147,8 @@ pipeline( ``` ```mjs -import { pipeline } from 'node:stream'; import fs from 'node:fs'; +import { pipeline } from 'node:stream'; import zlib from 'node:zlib'; // Use the pipeline API to easily pipe a series of streams @@ -191,8 +191,8 @@ async function run() { ``` ```mjs -import { pipeline } from 'node:stream/promises'; import fs from 'node:fs'; +import { pipeline } from 'node:stream/promises'; import zlib from 'node:zlib'; async function run() { diff --git a/apps/site/pages/en/learn/modules/how-to-use-streams.md b/apps/site/pages/en/learn/modules/how-to-use-streams.md index 2eb59c87ed5ac..0e61b44c56152 100644 --- a/apps/site/pages/en/learn/modules/how-to-use-streams.md +++ b/apps/site/pages/en/learn/modules/how-to-use-streams.md @@ -80,29 +80,7 @@ A demonstration of the use of these events can be seen in the following sections Here's an example of a simple readable stream implementation that generates data dynamically: -```cjs -const { Readable } = require('node:stream'); - -class MyStream extends Readable { - #count = 0; - _read(size) { - this.push(':-)'); - if (++this.#count === 5) { - this.push(null); - } - } -} - -const stream = new MyStream(); - -stream.on('data', chunk => { - console.log(chunk.toString()); -}); -``` - -```mjs -import { Readable } from 'node:stream'; - +```js class MyStream extends Readable { #count = 0; _read(size) { @@ -126,22 +104,7 @@ In this code, the `MyStream` class extends Readable and overrides the [`_read`][ For even finer control over data flow, the readable event can be used. This event is more complex but provides better performance for certain applications by allowing explicit control over when data is read from the stream: -```cjs -const stream = new MyStream({ - highWaterMark: 1, -}); - -stream.on('readable', () => { - console.count('>> readable event'); - let chunk; - while ((chunk = stream.read()) !== null) { - console.log(chunk.toString()); // Process the chunk - } -}); -stream.on('end', () => console.log('>> end event')); -``` - -```mjs +```js const stream = new MyStream({ highWaterMark: 1, }); @@ -178,21 +141,7 @@ NOTE: You can try to run the code with `NODE_DEBUG=stream` to see that `emitRead If we want to see readable events called before each smiley, we can wrap `push` into a `setImmediate` or `process.nextTick` like this: -```cjs -class MyStream extends Readable { - #count = 0; - _read(size) { - setImmediate(() => { - this.push(':-)'); - if (++this.#count === 5) { - return this.push(null); - } - }); - } -} -``` - -```mjs +```js class MyStream extends Readable { #count = 0; _read(size) { @@ -269,8 +218,8 @@ main().catch(console.error); ``` ```mjs -import { Writable } from 'node:stream'; import { once } from 'node:events'; +import { Writable } from 'node:stream'; class MyStream extends Writable { constructor() { @@ -691,7 +640,7 @@ import { pipeline } from 'stream/promises'; await pipeline( fs.createReadStream(import.meta.filename), async function* (source) { - for await (let chunk of source) { + for await (const chunk of source) { yield chunk.toString().toUpperCase(); } }, diff --git a/apps/site/pages/en/learn/test-runner/mocking.md b/apps/site/pages/en/learn/test-runner/mocking.md index 61d58524abe84..62c08b4dcd8d6 100644 --- a/apps/site/pages/en/learn/test-runner/mocking.md +++ b/apps/site/pages/en/learn/test-runner/mocking.md @@ -150,7 +150,7 @@ import assert from 'node:assert/strict'; import { before, describe, it, mock } from 'node:test'; describe('foo', { concurrency: true }, () => { - let barMock = mock.fn(); + const barMock = mock.fn(); let foo; before(async () => { @@ -188,6 +188,7 @@ A little-known fact is that there is a builtin way to mock `fetch`. [`undici`](h ```mjs displayName="endpoints.spec.mjs" import assert from 'node:assert/strict'; import { beforeEach, describe, it } from 'node:test'; + import { MockAgent, setGlobalDispatcher } from 'undici'; import endpoints from './endpoints.mjs'; diff --git a/apps/site/pages/en/learn/test-runner/using-test-runner.md b/apps/site/pages/en/learn/test-runner/using-test-runner.md index 4d634b52b8c06..a73ab9382281b 100644 --- a/apps/site/pages/en/learn/test-runner/using-test-runner.md +++ b/apps/site/pages/en/learn/test-runner/using-test-runner.md @@ -269,7 +269,7 @@ function generateSnapshotPath(testFilePath) { The example below demonstrates snapshot testing with [testing library](https://testing-library.com/) for UI components; note the two different ways of accessing `assert.snapshot`): -```ts +```js import { describe, it } from 'node:test'; import { prettyDOM } from '@testing-library/dom'; @@ -277,16 +277,15 @@ import { render } from '@testing-library/react'; // Any framework (ex svelte) import { SomeComponent } from './SomeComponent.jsx'; - describe('<SomeComponent>', () => { // For people preferring "fat-arrow" syntax, the following is probably better for consistency - it('should render defaults when no props are provided', (t) => { + it('should render defaults when no props are provided', t => { const component = render(<SomeComponent />).container.firstChild; t.assert.snapshot(prettyDOM(component)); }); - it('should consume `foo` when provided', function() { + it('should consume `foo` when provided', function () { const component = render(<SomeComponent foo="bar" />).container.firstChild; this.assert.snapshot(prettyDOM(component)); @@ -384,7 +383,7 @@ function globalUIBeforeEach() { You can have 2 different levels of UI tests: a unit-like (wherein externals & dependencies are mocked) and a more end-to-end (where only externals like IndexedDb are mocked but the rest of the chain is real). The former is generally the purer option, and the latter is generally deferred to a fully end-to-end automated usability test via something like [Playwright](https://playwright.dev/) or [Puppeteer](https://pptr.dev/). Below is an example of the former. -```ts +```js import { before, describe, mock, it } from 'node:test'; import { screen } from '@testing-library/dom'; @@ -393,7 +392,6 @@ import { render } from '@testing-library/react'; // Any framework (ex svelte) // ⚠️ Note that SomeOtherComponent is NOT a static import; // this is necessary in order to facilitate mocking its own imports. - describe('<SomeOtherComponent>', () => { let SomeOtherComponent; let calcSomeValue; @@ -402,7 +400,9 @@ describe('<SomeOtherComponent>', () => { // ⚠️ Sequence matters: the mock must be set up BEFORE its consumer is imported. // Requires the `--experimental-test-module-mocks` be set. - calcSomeValue = mock.module('./calcSomeValue.js', { calcSomeValue: mock.fn() }); + calcSomeValue = mock.module('./calcSomeValue.js', { + calcSomeValue: mock.fn(), + }); ({ SomeOtherComponent } = await import('./SomeOtherComponent.jsx')); }); @@ -414,9 +414,11 @@ describe('<SomeOtherComponent>', () => { // (and the snapshot would need to be updated for no real value). it('should fail gracefully by displaying a pretty error', () => { - calcSomeValue.mockImplementation(function mock__calcSomeValue() { return null }); + calcSomeValue.mockImplementation(function mock__calcSomeValue() { + return null; + }); - render(<SomeOtherComponent>); + render(<SomeOtherComponent />); const errorMessage = screen.queryByText('unable'); diff --git a/apps/site/pages/es/index.mdx b/apps/site/pages/es/index.mdx index 7597663b63680..2d590f93c6251 100644 --- a/apps/site/pages/es/index.mdx +++ b/apps/site/pages/es/index.mdx @@ -97,13 +97,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/fa/index.mdx b/apps/site/pages/fa/index.mdx index ab1dc8d23fca3..d1fcd30f94bea 100644 --- a/apps/site/pages/fa/index.mdx +++ b/apps/site/pages/fa/index.mdx @@ -97,13 +97,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx index 2cd8a9da0ec2c..2b72207fc2c0f 100644 --- a/apps/site/pages/fr/index.mdx +++ b/apps/site/pages/fr/index.mdx @@ -95,13 +95,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/id/index.mdx b/apps/site/pages/id/index.mdx index f321063c28a4b..504b17b19c1a7 100644 --- a/apps/site/pages/id/index.mdx +++ b/apps/site/pages/id/index.mdx @@ -97,13 +97,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/ja/index.mdx b/apps/site/pages/ja/index.mdx index f99616a253d6c..ad52b8da6fe26 100644 --- a/apps/site/pages/ja/index.mdx +++ b/apps/site/pages/ja/index.mdx @@ -95,13 +95,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/ko/index.mdx b/apps/site/pages/ko/index.mdx index f392ffcbcb1bb..a4119867639ba 100644 --- a/apps/site/pages/ko/index.mdx +++ b/apps/site/pages/ko/index.mdx @@ -95,8 +95,8 @@ const fileHash = hasher.read(); ```js displayName="Streams Pipeline" // streams.mjs -import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; +import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! diff --git a/apps/site/pages/pt/index.mdx b/apps/site/pages/pt/index.mdx index af90aa6b5727e..aafd3aa3adbcf 100644 --- a/apps/site/pages/pt/index.mdx +++ b/apps/site/pages/pt/index.mdx @@ -97,13 +97,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/tr/index.mdx b/apps/site/pages/tr/index.mdx index 19d3aa83e7ede..7d4f9f71acba1 100644 --- a/apps/site/pages/tr/index.mdx +++ b/apps/site/pages/tr/index.mdx @@ -103,13 +103,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx index e7f678d14918c..3dc5d595ee0c7 100644 --- a/apps/site/pages/uk/index.mdx +++ b/apps/site/pages/uk/index.mdx @@ -96,13 +96,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/zh-cn/index.mdx b/apps/site/pages/zh-cn/index.mdx index 120fe32b48227..1a8db0b4cefa7 100644 --- a/apps/site/pages/zh-cn/index.mdx +++ b/apps/site/pages/zh-cn/index.mdx @@ -96,13 +96,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/pages/zh-tw/index.mdx b/apps/site/pages/zh-tw/index.mdx index 37766774fd1e3..ab67d2e2d9670 100644 --- a/apps/site/pages/zh-tw/index.mdx +++ b/apps/site/pages/zh-tw/index.mdx @@ -95,13 +95,12 @@ layout: home ```js displayName="Streams Pipeline" // streams.mjs - import { pipeline } from 'node:stream/promises'; import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; import { createGzip } from 'node:zlib'; // ensure you have a `package.json` file for this test! - await pipeline - ( + await pipeline( createReadStream('package.json'), createGzip(), createWriteStream('package.json.gz') diff --git a/apps/site/scripts/lint-snippets/index.mjs b/apps/site/scripts/lint-snippets/index.mjs deleted file mode 100755 index 266dba933555b..0000000000000 --- a/apps/site/scripts/lint-snippets/index.mjs +++ /dev/null @@ -1,98 +0,0 @@ -import { readFile } from 'node:fs/promises'; - -import { parse } from 'acorn'; -import { glob } from 'glob'; -import remarkParse from 'remark-parse'; -import { unified } from 'unified'; -import { visit } from 'unist-util-visit'; - -const SUPPORTED_LANGUAGES = ['js', 'mjs', 'cjs']; - -// Initialize the markdown parser -const markdownParser = unified().use(remarkParse); - -/** - * Parse JavaScript code using Acorn - * - * @param {string} code - The code to parse - * @param {string} language - The language identifier - * @returns {void} - * @throws {Error} If parsing fails - */ -function parseJavaScript(code, language) { - parse(code, { - ecmaVersion: 'latest', - sourceType: language === 'cjs' ? 'script' : 'module', - allowReturnOutsideFunction: true, - }); -} - -/** - * Validate code blocks in a markdown file - * - * @param {string} filePath - Path to the markdown file - * @returns {Array<{path: string, position: number, message: string}>} Array of errors - */ -async function validateFile(filePath) { - const errors = []; - - const content = await readFile(filePath, 'utf-8'); - const tree = markdownParser.parse(content); - - visit(tree, 'code', node => { - // TODO: Add TypeScript support - if (!SUPPORTED_LANGUAGES.includes(node.lang)) { - return; - } - - try { - parseJavaScript(node.value, node.lang); - } catch (err) { - errors.push({ - path: filePath, - position: node.position.start.line, - message: err.message, - }); - } - }); - - return errors; -} - -/** - * Print validation errors to console - * - * @param {Array<{path: string, position: number, message: string}>} errors - * @returns {void} - */ -function reportErrors(errors) { - if (errors.length === 0) { - return; - } - - console.error('Errors found in the following files:'); - errors.forEach(({ path, position, message }) => { - console.error(`- ${path}:${position}: ${message}`); - }); -} - -// Get all markdown files -const filePaths = await glob('**/*.md', { - root: process.cwd(), - cwd: 'pages/en/learn/', - absolute: true, -}); - -console.log(`Found ${filePaths.length} markdown files.`); - -// Validate all files and collect errors -const allErrors = await Promise.all(filePaths.map(validateFile)); - -// Flatten the array of errors -const flattenedErrors = allErrors.flat(); - -// Report errors if any -reportErrors(flattenedErrors); - -// Exit with appropriate code -process.exit(flattenedErrors.length > 0 ? 1 : 0); diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 98a1fb32f3bcc..f9c3d06612257 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -108,10 +108,6 @@ "inputs": ["{app,pages}/**/*.{md,mdx}", "*.{md,mdx}"], "outputs": [".eslintmdcache"] }, - "lint:snippets": { - "inputs": ["{app,pages}/**/*.{md,mdx}", "*.{md,mdx}"], - "outputs": [] - }, "lint:css": { "inputs": ["{app,components,layouts,pages,styles}/**/*.css"], "outputs": [".stylelintcache"] diff --git a/package.json b/package.json index 1d3bf0f7bc8d9..52ae6b9cadf16 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout\" turbo test:unit" }, "dependencies": { - "acorn": "^8.14.1", "husky": "9.1.7", "lint-staged": "15.5.1", "turbo": "2.5.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ffa15d561ac56..eb6a2fa7279a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,6 @@ importers: .: dependencies: - acorn: - specifier: ^8.14.1 - version: 8.14.1 husky: specifier: 9.1.7 version: 9.1.7 @@ -271,9 +268,6 @@ importers: remark-lint-unordered-list-marker-style: specifier: ^4.0.1 version: 4.0.1 - remark-parse: - specifier: 11.0.0 - version: 11.0.0 remark-preset-lint-node: specifier: 5.1.2 version: 5.1.2 @@ -298,9 +292,6 @@ importers: typescript-eslint: specifier: ~8.31.1 version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - unified: - specifier: ^11.0.5 - version: 11.0.5 user-agent-data-types: specifier: 0.4.2 version: 0.4.2 diff --git a/turbo.json b/turbo.json index 91a077be9babc..80bcb76f5f7ff 100644 --- a/turbo.json +++ b/turbo.json @@ -11,7 +11,6 @@ "lint": { "dependsOn": [ "@node-core/website#lint:md", - "@node-core/website#lint:snippets", "@node-core/website#lint:css", "lint:js" ] @@ -19,7 +18,6 @@ "lint:lint-staged": { "dependsOn": [ "@node-core/website#lint:md", - "@node-core/website#lint:snippets", "@node-core/website#lint:css", "@node-core/website#lint:js" ] From aef4d8f49f6e4dce06d817e0269ee2df97b39af4 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz <dario@cloudflare.com> Date: Mon, 12 May 2025 16:49:11 +0100 Subject: [PATCH 0466/1385] Make site work with the Cloudflare OpenNext adapter (#7383) make site work with the Cloudflare OpenNext adapter update the site application so that it can be build using the Cloudflare OpenNext adapter (`@opennextjs/cloudflare`) and thus deployed on Cloudflare Workers --- .gitignore | 8 + CONTRIBUTING.md | 37 + apps/site/.stylelintignore | 4 + .../blog-data/[category]/[page]/route.ts | 48 - apps/site/layouts/Blog.tsx | 6 +- apps/site/next-data/blogData.ts | 36 +- apps/site/next-data/providers/blogData.ts | 13 +- apps/site/next.dynamic.constants.mjs | 11 +- apps/site/next.json.mjs | 4 + apps/site/open-next.config.ts | 4 + apps/site/package.json | 16 +- apps/site/scripts/blog-data/generate.mjs | 11 + apps/site/turbo.json | 28 +- apps/site/wrangler.jsonc | 32 + eslint.config.js | 2 + package.json | 4 +- pnpm-lock.yaml | 5456 ++++++++++++++--- 17 files changed, 4746 insertions(+), 974 deletions(-) delete mode 100644 apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts create mode 100644 apps/site/open-next.config.ts create mode 100644 apps/site/scripts/blog-data/generate.mjs create mode 100644 apps/site/wrangler.jsonc diff --git a/.gitignore b/.gitignore index eab82e65d22fd..dd97ef0e64f2d 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,11 @@ cache tsconfig.tsbuildinfo dist/ + +# Ignore the blog-data json that we generate during dev and build +apps/site/public/blog-data.json + +# Cloudflare Build Output +apps/site/.open-next +apps/site/.wrangler + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 355888bda9302..47016c323f154 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,6 +7,7 @@ Thank you for your interest in contributing to the Node.js Website. Before you p - [Becoming a collaborator](#becoming-a-collaborator) - [Getting started](#getting-started) - [CLI Commands](#cli-commands) +- [Cloudflare Deployment](#cloudflare-deployment) - [Commit Guidelines](#commit-guidelines) - [Pull Request Policy](#pull-request-policy) - [Developer's Certificate of Origin 1.1](#developers-certificate-of-origin-11) @@ -165,6 +166,42 @@ This repository contains several scripts and commands for performing numerous ta </details> +## Cloudflare Deployment + +The Node.js Website can be deployed to the [Cloudflare](https://www.cloudflare.com) network using [Cloudflare Workers](https://www.cloudflare.com/en-gb/developer-platform/products/workers/) and the [OpenNext Cloudflare adapter](https://opennext.js.org/cloudflare). This section provides the necessary details for testing and deploying the website on Cloudflare. + +### Scripts + +Preview and deployment of the website targeting the Cloudflare network is implemented via the following two commands: + +- `pnpm cloudflare:preview` builds the website using the OpenNext Cloudflare adapter and runs the website locally in a server simulating the Cloudflare hosting (using the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/)) +- `pnpm cloudflare:deploy` builds the website using the OpenNext Cloudflare adapter and deploys the website to the Cloudflare network (using the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/)) + +### Configurations + +There are two key configuration files related to Cloudflare deployment. + +#### Wrangler Configuration + +This file defines the settings for the Cloudflare Worker, which serves the website. + +For more details, refer to the [Wrangler documentation](https://developers.cloudflare.com/workers/wrangler/configuration/). + +Key configurations include: + +- `main`: Points to the worker generated by the OpenNext adapter. +- `account_id`: Specifies the Cloudflare account ID. This is not required for local previews but is necessary for deployments. You can obtain an account ID for free by signing up at [dash.cloudflare.com](https://dash.cloudflare.com/login). +- `build`: Defines the build command to generate Node.js filesystem polyfills required for the application to run on Cloudflare Workers. This uses the [`@flarelabs/wrangler-build-time-fs-assets-polyfilling`](https://github.com/flarelabs-net/wrangler-build-time-fs-assets-polyfilling) package. +- `alias`: Maps aliases for the Node.js filesystem polyfills generated during the build process. +- `kv_namespaces`: Contains a single KV binding definition for `NEXT_CACHE_WORKERS_KV`. This is used to implement the Next.js incremental cache. For deployments, you can create a new KV namespace in the Cloudflare dashboard and update the binding ID accordingly. + +#### OpenNext Configuration + +This is the configuration for the OpenNext Cloudflare adapter, for more details on such configuration please refer to the [official OpenNext documentation](https://opennext.js.org/cloudflare/get-started#4-add-an-open-nextconfigts-file). + +The configuration present here is very standard and simply sets up incremental cache via the KV binding +defined in the wrangler configuration file. + ## Commit Guidelines This project follows the [Conventional Commits][] specification. diff --git a/apps/site/.stylelintignore b/apps/site/.stylelintignore index 23f68c634514e..82e0936e61013 100644 --- a/apps/site/.stylelintignore +++ b/apps/site/.stylelintignore @@ -13,3 +13,7 @@ lcov.info # Old Styles styles/old + +# Cloudflare Build Output +.open-next +.wrangler diff --git a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts b/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts deleted file mode 100644 index 11f5489084d88..0000000000000 --- a/apps/site/app/[locale]/next-data/blog-data/[category]/[page]/route.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { - provideBlogPosts, - providePaginatedBlogPosts, -} from '#site/next-data/providers/blogData'; -import { defaultLocale } from '#site/next.locales.mjs'; -import type { BlogCategory } from '#site/types'; - -type DynamicStaticPaths = { - locale: string; - category: BlogCategory; - page: string; -}; -type StaticParams = { params: Promise<DynamicStaticPaths> }; - -// This is the Route Handler for the `GET` method which handles the request -// for providing Blog Posts for Blog Categories and Pagination Metadata -// @see https://nextjs.org/docs/app/building-your-application/routing/router-handlers -export const GET = async (_: Request, props: StaticParams) => { - const params = await props.params; - - const requestedPage = Number(params.page); - - const data = - requestedPage >= 1 - ? // This allows us to blindly get all blog posts from a given category - // if the page number is 0 or something smaller than 1 - providePaginatedBlogPosts(params.category, requestedPage) - : provideBlogPosts(params.category); - - return Response.json(data, { status: data.posts.length ? 200 : 404 }); -}; - -// This function generates the static paths that come from the dynamic segments -// `[locale]/next-data/blog-data/[category]/[page]` this will return a default value as we don't want to -// statically generate this route as it is compute-expensive. -// Hence we generate a "fake" OG image during build just to satisfy Next.js requirements. -export const generateStaticParams = async () => [ - { locale: defaultLocale.code, category: 'all', page: '0' }, -]; - -// Enforces that this route is cached and static as much as possible -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic -export const dynamic = 'force-static'; - -// Ensures that this endpoint is invalidated and re-executed every X minutes -// so that when new deployments happen, the data is refreshed -// @see https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate -export const revalidate = 300; diff --git a/apps/site/layouts/Blog.tsx b/apps/site/layouts/Blog.tsx index 4d174cca68c98..154650d13c555 100644 --- a/apps/site/layouts/Blog.tsx +++ b/apps/site/layouts/Blog.tsx @@ -11,7 +11,7 @@ import type { BlogCategory } from '#site/types'; import styles from './layouts.module.css'; -const getBlogCategory = async (pathname: string) => { +const getBlogCategory = (pathname: string) => { // pathname format can either be: /en/blog/{category} // or /en/blog/{category}/page/{page} // hence we attempt to interpolate the full /en/blog/{category}/page/{page} @@ -19,7 +19,7 @@ const getBlogCategory = async (pathname: string) => { // note that malformed routes can't happen as they are all statically generated const [, , category = 'all', , page = 1] = pathname.split('/'); - const { posts, pagination } = await getBlogData( + const { posts, pagination } = getBlogData( category as BlogCategory, Number(page) ); @@ -38,7 +38,7 @@ const BlogLayout: FC = async () => { link: `/blog/${category}`, })); - const blogData = await getBlogCategory(pathname); + const blogData = getBlogCategory(pathname); return ( <> diff --git a/apps/site/next-data/blogData.ts b/apps/site/next-data/blogData.ts index 9536f5bf57ba9..74f068df3d929 100644 --- a/apps/site/next-data/blogData.ts +++ b/apps/site/next-data/blogData.ts @@ -1,32 +1,16 @@ -import { - ENABLE_STATIC_EXPORT, - NEXT_DATA_URL, - IS_NOT_VERCEL_RUNTIME_ENV, -} from '#site/next.constants.mjs'; import type { BlogCategory, BlogPostsRSC } from '#site/types'; -const getBlogData = ( - cat: BlogCategory, - page?: number -): Promise<BlogPostsRSC> => { - // When we're using Static Exports the Next.js Server is not running (during build-time) - // hence the self-ingestion APIs will not be available. In this case we want to load - // the data directly within the current thread, which will anyways be loaded only once - // We use lazy-imports to prevent `provideBlogData` from executing on import - if (ENABLE_STATIC_EXPORT || IS_NOT_VERCEL_RUNTIME_ENV) { - return import('#site/next-data/providers/blogData').then( - ({ provideBlogPosts, providePaginatedBlogPosts }) => - page ? providePaginatedBlogPosts(cat, page) : provideBlogPosts(cat) - ); - } - - const fetchURL = `${NEXT_DATA_URL}blog-data/${cat}/${page ?? 0}`; +import { + provideBlogPosts, + providePaginatedBlogPosts, +} from './providers/blogData'; - // 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(JSON.parse); +const getBlogData = (cat: BlogCategory, page?: number): BlogPostsRSC => { + return page && page >= 1 + ? // This allows us to blindly get all blog posts from a given category + // if the page number is 0 or something smaller than 1 + providePaginatedBlogPosts(cat, page) + : provideBlogPosts(cat); }; export default getBlogData; diff --git a/apps/site/next-data/providers/blogData.ts b/apps/site/next-data/providers/blogData.ts index de7d42c8f57a5..27f00e3f4e322 100644 --- a/apps/site/next-data/providers/blogData.ts +++ b/apps/site/next-data/providers/blogData.ts @@ -1,16 +1,19 @@ import { cache } from 'react'; -import generateBlogData from '#site/next-data/generators/blogData.mjs'; import { BLOG_POSTS_PER_PAGE } from '#site/next.constants.mjs'; +import { blogData } from '#site/next.json.mjs'; import type { BlogCategory, BlogPostsRSC } from '#site/types'; -const { categories, posts } = await generateBlogData(); - -export const provideBlogCategories = cache(() => categories); +const blogPosts = cache(() => + blogData.posts.map(post => ({ + ...post, + date: new Date(post.date), + })) +); export const provideBlogPosts = cache( (category: BlogCategory): BlogPostsRSC => { - const categoryPosts = posts + const categoryPosts = blogPosts() .filter(post => post.categories.includes(category)) .sort((a, b) => b.date.getTime() - a.date.getTime()); diff --git a/apps/site/next.dynamic.constants.mjs b/apps/site/next.dynamic.constants.mjs index 783b1758d102a..294344b09ea15 100644 --- a/apps/site/next.dynamic.constants.mjs +++ b/apps/site/next.dynamic.constants.mjs @@ -1,9 +1,8 @@ 'use strict'; -import { - provideBlogCategories, - provideBlogPosts, -} from './next-data/providers/blogData'; +import { blogData } from '#site/next.json.mjs'; + +import { provideBlogPosts } from './next-data/providers/blogData'; import { BASE_PATH, BASE_URL } from './next.constants.mjs'; import { siteConfig } from './next.json.mjs'; import { defaultLocale } from './next.locales.mjs'; @@ -31,9 +30,9 @@ export const IGNORED_ROUTES = [ */ export const DYNAMIC_ROUTES = new Map([ // Provides Routes for all Blog Categories - ...provideBlogCategories().map(c => [`blog/${c}`, 'blog-category']), + ...blogData.categories.map(c => [`blog/${c}`, 'blog-category']), // Provides Routes for all Blog Categories w/ Pagination - ...provideBlogCategories() + ...blogData.categories // retrieves the amount of pages for each blog category .map(c => [c, provideBlogPosts(c).pagination.pages]) // creates a numeric array for each page and define a pathname for diff --git a/apps/site/next.json.mjs b/apps/site/next.json.mjs index 3c49c9f4dd3f9..27fb92885f8a1 100644 --- a/apps/site/next.json.mjs +++ b/apps/site/next.json.mjs @@ -2,6 +2,7 @@ import _authors from './authors.json' with { type: 'json' }; import _siteNavigation from './navigation.json' with { type: 'json' }; +import _blogData from './public/blog-data.json' with { type: 'json' }; import _siteRedirects from './redirects.json' with { type: 'json' }; import _siteConfig from './site.json' with { type: 'json' }; @@ -16,3 +17,6 @@ export const siteRedirects = _siteRedirects; /** @type {import('./types').SiteConfig} */ export const siteConfig = _siteConfig; + +/** @type {import('./types').BlogData} */ +export const blogData = _blogData; diff --git a/apps/site/open-next.config.ts b/apps/site/open-next.config.ts new file mode 100644 index 0000000000000..ffadf39abafb6 --- /dev/null +++ b/apps/site/open-next.config.ts @@ -0,0 +1,4 @@ +import { defineCloudflareConfig } from '@opennextjs/cloudflare'; +import incrementalCache from '@opennextjs/cloudflare/overrides/incremental-cache/kv-incremental-cache'; + +export default defineCloudflareConfig({ incrementalCache }); diff --git a/apps/site/package.json b/apps/site/package.json index 68aad453315f9..fef3e1e59e307 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -2,9 +2,11 @@ "name": "@node-core/website", "type": "module", "scripts": { - "build": "cross-env NODE_NO_WARNINGS=1 next build --turbopack", + "prebuild": "pnpm build-blog-data", + "build": "cross-env NODE_NO_WARNINGS=1 next build", "check-types": "tsc --noEmit", "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true NODE_NO_WARNINGS=1 next build", + "predev": "pnpm build-blog-data", "dev": "cross-env NODE_NO_WARNINGS=1 next dev", "lint": "turbo run lint:md lint:js lint:css", "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", @@ -17,7 +19,12 @@ "sync-orama": "node ./scripts/orama-search/sync-orama-cloud.mjs", "test": "turbo test:unit", "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --experimental-test-module-mocks --enable-source-maps --import=global-jsdom/register --import=tsx --import=tests/setup.jsx --test **/*.test.*", - "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" pnpm test:unit" + "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" pnpm test:unit", + "build-blog-data": "node ./scripts/blog-data/generate.mjs", + "build-blog-data:watch": "node --watch --watch-path=pages/en/blog ./scripts/blog-data/generate.mjs", + "cloudflare:build:worker": "opennextjs-cloudflare build", + "cloudflare:preview": "pnpm run cloudflare:build:worker && wrangler dev", + "cloudflare:deploy": "pnpm run cloudflare:build:worker && wrangler deploy" }, "dependencies": { "@heroicons/react": "~2.2.0", @@ -75,7 +82,9 @@ "devDependencies": { "@eslint/compat": "~1.2.8", "@eslint/eslintrc": "~3.3.1", + "@flarelabs-net/wrangler-build-time-fs-assets-polyfilling": "^0.0.0", "@next/eslint-plugin-next": "15.3.1", + "@opennextjs/cloudflare": "^1.0.0-beta.4", "@testing-library/user-event": "~14.6.1", "@types/semver": "~7.7.0", "eslint-config-next": "15.3.1", @@ -104,7 +113,8 @@ "tsx": "^4.19.3", "typescript": "~5.8.2", "typescript-eslint": "~8.31.1", - "user-agent-data-types": "0.4.2" + "user-agent-data-types": "0.4.2", + "wrangler": "^4.13.0" }, "imports": { "#site/*": [ diff --git a/apps/site/scripts/blog-data/generate.mjs b/apps/site/scripts/blog-data/generate.mjs new file mode 100644 index 0000000000000..7916fd0c61f85 --- /dev/null +++ b/apps/site/scripts/blog-data/generate.mjs @@ -0,0 +1,11 @@ +import { writeFileSync } from 'node:fs'; + +import generateBlogData from '../../next-data/generators/blogData.mjs'; + +const blogData = await generateBlogData(); + +writeFileSync( + new URL(`../../public/blog-data.json`, import.meta.url), + JSON.stringify(blogData), + 'utf8' +); diff --git a/apps/site/turbo.json b/apps/site/turbo.json index f9c3d06612257..e8a826992df66 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -119,13 +119,39 @@ "cache": false }, "test:unit": { + "dependsOn": ["build-blog-data"], "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx,mjs}", "{app,components,layouts,pages,styles}/**/*.css", "{next-data,scripts,i18n}/**/*.{mjs,json}", "{app,pages}/**/*.{mdx,md}", "*.{md,mdx,json,ts,tsx,mjs,yml}" - ] + ], + "outputs": ["coverage/**", "junit.xml"] + }, + "build-blog-data": { + "inputs": ["{pages}/**/*.{mdx,md}"], + "outputs": ["public/blog-data.json"] + }, + "cloudflare:preview": { + "inputs": [ + "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", + "{app,components,layouts,pages,styles}/**/*.css", + "{next-data,scripts,i18n}/**/*.{mjs,json}", + "{app,pages}/**/*.{mdx,md}", + "*.{md,mdx,json,ts,tsx,mjs,yml}" + ], + "outputs": [".open-next/**"] + }, + "cloudflare:deploy": { + "inputs": [ + "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", + "{app,components,layouts,pages,styles}/**/*.css", + "{next-data,scripts,i18n}/**/*.{mjs,json}", + "{app,pages}/**/*.{mdx,md}", + "*.{md,mdx,json,ts,tsx,mjs,yml}" + ], + "outputs": [".open-next/**"] } } } diff --git a/apps/site/wrangler.jsonc b/apps/site/wrangler.jsonc new file mode 100644 index 0000000000000..65c4925c6f440 --- /dev/null +++ b/apps/site/wrangler.jsonc @@ -0,0 +1,32 @@ +{ + "main": ".open-next/worker.js", + "name": "nodejs-website", + "compatibility_date": "2024-11-07", + "compatibility_flags": ["nodejs_compat"], + "account_id": "8ed4d03ac99f77561d0e8c9cbcc76cb6", + "minify": true, + "keep_names": false, + "assets": { + "directory": ".open-next/assets", + "binding": "ASSETS", + }, + "observability": { + "enabled": true, + "head_sampling_rate": 1, + }, + "build": { + "command": "wrangler-build-time-fs-assets-polyfilling --assets pages --assets snippets --assets-output-dir .open-next/assets", + }, + "alias": { + "node:fs": "./.wrangler/fs-assets-polyfilling/polyfills/node/fs.ts", + "node:fs/promises": "./.wrangler/fs-assets-polyfilling/polyfills/node/fs/promises.ts", + "fs": "./.wrangler/fs-assets-polyfilling/polyfills/node/fs.ts", + "fs/promises": "./.wrangler/fs-assets-polyfilling/polyfills/node/fs/promises.ts", + }, + "kv_namespaces": [ + { + "binding": "NEXT_CACHE_WORKERS_KV", + "id": "32e8e26d2d2647fd96789baf83209fa9", + }, + ], +} diff --git a/eslint.config.js b/eslint.config.js index 0411c1b5193a0..c0cd4b7e032c0 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -14,6 +14,8 @@ export default [ 'global.d.ts', 'junit.xml', 'storybook-static/**', + '**/.wrangler', + '**/.open-next', ], }, { diff --git a/package.json b/package.json index 52ae6b9cadf16..808bcad2b1814 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,9 @@ "storybook": "turbo run storybook", "storybook:build": "turbo run storybook:build", "test": "turbo test:unit", - "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout\" turbo test:unit" + "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout\" turbo test:unit", + "cloudflare:preview": "turbo run cloudflare:preview", + "cloudflare:deploy": "turbo run cloudflare:deploy" }, "dependencies": { "husky": "9.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb6a2fa7279a2..3fe1dfb43b960 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -205,9 +205,15 @@ importers: '@eslint/eslintrc': specifier: ~3.3.1 version: 3.3.1 + '@flarelabs-net/wrangler-build-time-fs-assets-polyfilling': + specifier: ^0.0.0 + version: 0.0.0 '@next/eslint-plugin-next': specifier: 15.3.1 version: 15.3.1 + '@opennextjs/cloudflare': + specifier: ^1.0.0-beta.4 + version: 1.0.0-beta.4(wrangler@4.14.1) '@testing-library/user-event': specifier: ~14.6.1 version: 14.6.1(@testing-library/dom@10.4.0) @@ -295,6 +301,9 @@ importers: user-agent-data-types: specifier: 0.4.2 version: 0.4.2 + wrangler: + specifier: ^4.13.0 + version: 4.14.1 packages/i18n: devDependencies: @@ -466,6 +475,345 @@ packages: '@asamuzakjp/css-color@3.1.5': resolution: {integrity: sha512-w7AmVyTTiU41fNLsFDf+gA2Dwtbx2EJtn2pbJNAGSRAg50loXy1uLXA3hEpD8+eydcomTurw09tq5/AyceCaGg==} + '@ast-grep/napi-darwin-arm64@0.35.0': + resolution: {integrity: sha512-T+MN4Oinc+sXjXCIHzfxDDWY7r2pKgPxM6zVeVlkMTrJV2mJtyKYBIS+CABhRM6kflps2T2I6l4DGaKV/8Ym9w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@ast-grep/napi-darwin-x64@0.35.0': + resolution: {integrity: sha512-pEYiN6JI1HY2uWhMYJ9+3yIMyVYKuYdFzeD+dL7odA3qzK0o9N9AM3/NOt4ynU2EhufaWCJr0P5NoQ636qN6MQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@ast-grep/napi-linux-arm64-gnu@0.35.0': + resolution: {integrity: sha512-NBuzQngABGKz7lhG08IQb+7nPqUx81Ol37xmS3ZhVSdSgM0mtp93rCbgFTkJcAFE8IMfCHQSg7G4g0Iotz4ABQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@ast-grep/napi-linux-arm64-musl@0.35.0': + resolution: {integrity: sha512-1EcvHPwyWpCL/96LuItBYGfeI5FaMTRvL+dHbO/hL5q1npqbb5qn+ppJwtNOjTPz8tayvgggxVk9T4C2O7taYA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@ast-grep/napi-linux-x64-gnu@0.35.0': + resolution: {integrity: sha512-FDzNdlqmQnsiWXhnLxusw5AOfEcEM+5xtmrnAf3SBRFr86JyWD9qsynnFYC2pnP9hlMfifNH2TTmMpyGJW49Xw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@ast-grep/napi-linux-x64-musl@0.35.0': + resolution: {integrity: sha512-wlmndjfBafT8u5p4DBnoRQyoCSGNuVSz7rT3TqhvlHcPzUouRWMn95epU9B1LNLyjXvr9xHeRjSktyCN28w57Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@ast-grep/napi-win32-arm64-msvc@0.35.0': + resolution: {integrity: sha512-gkhJeYc4rrZLX2icLxalPikTLMR57DuIYLwLr9g+StHYXIsGHrbfrE6Nnbdd8Izfs34ArFCrcwdaMrGlvOPSeg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@ast-grep/napi-win32-ia32-msvc@0.35.0': + resolution: {integrity: sha512-OdUuRa3chHCZ65y+qALfkUjz0W0Eg21YZ9TyPquV5why07M6HAK38mmYGzLxFH6294SvRQhs+FA/rAfbKeH0jA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@ast-grep/napi-win32-x64-msvc@0.35.0': + resolution: {integrity: sha512-pcQRUHqbroTN1oQ56V982a7IZTUUySQYWa2KEyksiifHGuBuitlzcyzFGjT96ThcqD9XW0UVJMvpoF2Qjh006Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@ast-grep/napi@0.35.0': + resolution: {integrity: sha512-3ucaaSxV6fxXoqHrE/rxAvP1THnDdY5jNzGlnvx+JvnY9C/dSRKc0jlRMRz59N3El572+/yNRUUpAV1T9aBJug==} + engines: {node: '>= 10'} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/ie11-detection@3.0.0': + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@3.0.0': + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@3.0.0': + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@3.0.0': + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@3.0.0': + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-cloudfront@3.398.0': + resolution: {integrity: sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/client-dynamodb@3.803.0': + resolution: {integrity: sha512-rJPidxfyTQHz/1Naq3FukSoIt40GwXfv3npVR15bCBFpqx9TXEt7GoIUbiqm+Ftx8sx9hqJ6XNhf80FIa243gw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-lambda@3.803.0': + resolution: {integrity: sha512-7Mve1ol9yAElCXxruaS1y1Ffjy6CBYt4aYkxcrPctdmbVCzDh63ajBydkbldMQ7leR64l4/o26sec4vujuhFWw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-s3@3.803.0': + resolution: {integrity: sha512-Y8gw9Lun2qV5wU2diAqB1qEynV7wiz/oM9rtwhLagMvB6u9uO65+0qIN/gDInReCyI0XQ7sULqW8FjYhfSnWhQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sqs@3.803.0': + resolution: {integrity: sha512-os2AQZAzcEkxBuxfI4AldQECSsM0IK6+m8WDVJKUW2c2JDYsGA99cZhRItEytu0t2qnATZAFCSEfL1nW4nKZqA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.398.0': + resolution: {integrity: sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/client-sso@3.803.0': + resolution: {integrity: sha512-TT3BRD1yiL3IGXBKfq560vvEdyOJtJr8bp+R82dD6P0IoS8aFcNtF822BOJy7CqvxksOc3hQKLaPVzE82gE8Ow==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sts@3.398.0': + resolution: {integrity: sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/core@3.799.0': + resolution: {integrity: sha512-hkKF3Zpc6+H8GI1rlttYVRh9uEE77cqAzLmLpY3iu7sql8cZgPERRBfaFct8p1SaDyrksLNiboD1vKW58mbsYg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.398.0': + resolution: {integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-env@3.799.0': + resolution: {integrity: sha512-vT/SSWtbUIOW/U21qgEySmmO44SFWIA7WeQPX1OrI8WJ5n7OEI23JWLHjLvHTkYmuZK6z1rPcv7HzRgmuGRibA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.799.0': + resolution: {integrity: sha512-2CjBpOWmhaPAExOgHnIB5nOkS5ef+mfRlJ1JC4nsnjAx0nrK4tk0XRE0LYz11P3+ue+a86cU8WTmBo+qjnGxPQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.398.0': + resolution: {integrity: sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-ini@3.803.0': + resolution: {integrity: sha512-XtbFftJex18GobpRWJxg5V7stVwvmV2gdBYW+zRM0YW6NZAR4NP/4vcc9ktM3++BWW5OF4Kvl7Nu7N4mAzRHmw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.398.0': + resolution: {integrity: sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-node@3.803.0': + resolution: {integrity: sha512-lPdRYbjxwmv7gRqbaEe1Y1Yl5fD4c43AuK3P31eKjf1j41hZEQ0dg9a9KLk7i6ehEoVsxewnJrvbC2pVoYrCmQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.398.0': + resolution: {integrity: sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-process@3.799.0': + resolution: {integrity: sha512-g8jmNs2k98WNHMYcea1YKA+7ao2Ma4w0P42Dz4YpcI155pQHxHx25RwbOG+rsAKuo3bKwkW53HVE/ZTKhcWFgw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.398.0': + resolution: {integrity: sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-sso@3.803.0': + resolution: {integrity: sha512-HEAcxSHrHxVekGnZqjFrkqdYAf4jFiZIMhuh0jqiqY6A4udEyXy1V623HVcTz/XXj6UBRnyD+zmOmlbzBvkfQg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.398.0': + resolution: {integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.803.0': + resolution: {integrity: sha512-oChnEpwI25OW4GPvhI1VnXM3IQEkDhESGFZd5JHzJDHyvSF2NU58V86jkJyaa4H4X25IbGaThuulNI5xCOngjw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/endpoint-cache@3.723.0': + resolution: {integrity: sha512-2+a4WXRc+07uiPR+zJiPGKSOWaNJQNqitkks+6Hhm/haTLJqNVTgY2OWDh2PXvwMNpKB+AlGdhE65Oy6NzUgXg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-bucket-endpoint@3.775.0': + resolution: {integrity: sha512-qogMIpVChDYr4xiUNC19/RDSw/sKoHkAhouS6Skxiy6s27HBhow1L3Z1qVYXuBmOZGSWPU0xiyZCvOyWrv9s+Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-endpoint-discovery@3.775.0': + resolution: {integrity: sha512-L0PmjSg7t+wovRo/Lin1kpei3e7wBhrENWb1Bbccu3PWUIfxolGeWplOmNhSlXjuQe9GXjf3z8kJRYOGBMFOvw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-expect-continue@3.775.0': + resolution: {integrity: sha512-Apd3owkIeUW5dnk3au9np2IdW2N0zc9NjTjHiH+Mx3zqwSrc+m+ANgJVgk9mnQjMzU/vb7VuxJ0eqdEbp5gYsg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.799.0': + resolution: {integrity: sha512-vBIAdDl2neaFiUMxyr7dAtX7m9Iw5c0bz7OirD0JGW0nYn0mBcqKpFZEU75ewA5p2+Cm7RQDdt6099ne3gj0WA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.398.0': + resolution: {integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-host-header@3.775.0': + resolution: {integrity: sha512-tkSegM0Z6WMXpLB8oPys/d+umYIocvO298mGvcMCncpRl77L9XkvSLJIFzaHes+o7djAgIduYw8wKIMStFss2w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-location-constraint@3.775.0': + resolution: {integrity: sha512-8TMXEHZXZTFTckQLyBT5aEI8fX11HZcwZseRifvBKKpj0RZDk4F0EEYGxeNSPpUQ7n+PRWyfAEnnZNRdAj/1NQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.398.0': + resolution: {integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-logger@3.775.0': + resolution: {integrity: sha512-FaxO1xom4MAoUJsldmR92nT1G6uZxTdNYOFYtdHfd6N2wcNaTuxgjIvqzg5y7QIH9kn58XX/dzf1iTjgqUStZw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.398.0': + resolution: {integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.775.0': + resolution: {integrity: sha512-GLCzC8D0A0YDG5u3F5U03Vb9j5tcOEFhr8oc6PDk0k0vm5VwtZOE6LvK7hcCSoAB4HXyOUM0sQuXrbaAh9OwXA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.799.0': + resolution: {integrity: sha512-Zwdge5NArgcJwPuGZwgfXY6XXkWEBmMS9dqu5g3DcfHmZUuSjQUqmOsDdSZlE3RFHrDAEbuGQlrFUE8zuwdKQA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-sqs@3.798.0': + resolution: {integrity: sha512-vWIlwbgNuWJ4FvsEMCN5CLdwUzCvIU20QT4g0g05+y0CbXCD3FIhcRyQv3LF1tujZNSvQp9z7FZsfghm9oLFLw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-sts@3.398.0': + resolution: {integrity: sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-signing@3.398.0': + resolution: {integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-ssec@3.775.0': + resolution: {integrity: sha512-Iw1RHD8vfAWWPzBBIKaojO4GAvQkHOYIpKdAfis/EUSUmSa79QsnXnRqsdcE0mCB0Ylj23yi+ah4/0wh9FsekA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.398.0': + resolution: {integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-user-agent@3.799.0': + resolution: {integrity: sha512-TropQZanbOTxa+p+Nl4fWkzlRhgFwDfW+Wb6TR3jZN7IXHNlPpgGFpdrgvBExhW/RBhqr+94OsR8Ou58lp3hhA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.803.0': + resolution: {integrity: sha512-wiWiYaFQxK2u37G9IOXuWkHelEbU8ulLxdHpoPf0TSu/1boqLW7fcofuZATAvFcvigQx3oebwO8G4c/mmixTTw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.775.0': + resolution: {integrity: sha512-40iH3LJjrQS3LKUJAl7Wj0bln7RFPEvUYKFxtP8a+oKFDO0F65F52xZxIJbPn6sHkxWDAnZlGgdjZXM3p2g5wQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.803.0': + resolution: {integrity: sha512-9ZyjR68r5N6meBUSLwus7W+1ojYllD67WrrY8JOMQkiQLMoLty6VzlbFgQtRYaJxJx1IzNWvrdU+SgXRm+L5oQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.398.0': + resolution: {integrity: sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/token-providers@3.803.0': + resolution: {integrity: sha512-lDbMgVjWWEPT7a6lLaAEPPljwOeLTjPX2sJ7MoDICpQotg4Yd8cQfX3nqScSyLAGSc7Rq/21UPnPoij/E0K3lg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.398.0': + resolution: {integrity: sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/types@3.775.0': + resolution: {integrity: sha512-ZoGKwa4C9fC9Av6bdfqcW6Ix5ot05F/S4VxWR2nHuMv7hzfmAjTOcUiWT7UR4hM/U0whf84VhDtXN/DWAk52KA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-arn-parser@3.723.0': + resolution: {integrity: sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.398.0': + resolution: {integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/util-endpoints@3.787.0': + resolution: {integrity: sha512-fd3zkiOkwnbdbN0Xp9TsP5SWrmv0SpT70YEdbb8wAj2DWQwiCmFszaSs+YCvhoCdmlR3Wl9Spu0pGpSAGKeYvQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.723.0': + resolution: {integrity: sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.398.0': + resolution: {integrity: sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==} + + '@aws-sdk/util-user-agent-browser@3.775.0': + resolution: {integrity: sha512-txw2wkiJmZKVdDbscK7VBK+u+TJnRtlUjRTLei+elZg2ADhpQxfVAQl436FUeIv6AhB/oRHW6/K/EAGXUSWi0A==} + + '@aws-sdk/util-user-agent-node@3.398.0': + resolution: {integrity: sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-user-agent-node@3.799.0': + resolution: {integrity: sha512-iXBk38RbIWPF5Nq9O4AnktORAzXovSVqWYClvS1qbE7ILsnTLJbagU9HlU25O2iV5COVh1qZkwuP5NHQ2yTEyw==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@aws-sdk/xml-builder@3.310.0': + resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/xml-builder@3.775.0': + resolution: {integrity: sha512-b9NGO6FKJeLGYnV7Z1yvcP1TNU4dkD5jNsLWOF1/sygZoASaQhNOlaiJ/1OH331YQ1R1oWk38nBb0frsYkDsOQ==} + engines: {node: '>=18.0.0'} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -533,6 +881,53 @@ packages: resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} + '@cloudflare/kv-asset-handler@0.4.0': + resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} + engines: {node: '>=18.0.0'} + + '@cloudflare/unenv-preset@2.3.1': + resolution: {integrity: sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==} + peerDependencies: + unenv: 2.0.0-rc.15 + workerd: ^1.20250320.0 + peerDependenciesMeta: + workerd: + optional: true + + '@cloudflare/workerd-darwin-64@1.20250428.0': + resolution: {integrity: sha512-6nVe9oV4Hdec6ctzMtW80TiDvNTd2oFPi3VsKqSDVaJSJbL+4b6seyJ7G/UEPI+si6JhHBSLV2/9lNXNGLjClA==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + + '@cloudflare/workerd-darwin-arm64@1.20250428.0': + resolution: {integrity: sha512-/TB7bh7SIJ5f+6r4PHsAz7+9Qal/TK1cJuKFkUno1kqGlZbdrMwH0ATYwlWC/nBFeu2FB3NUolsTntEuy23hnQ==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + + '@cloudflare/workerd-linux-64@1.20250428.0': + resolution: {integrity: sha512-9eCbj+R3CKqpiXP6DfAA20DxKge+OTj7Hyw3ZewiEhWH9INIHiJwJQYybu4iq9kJEGjnGvxgguLFjSCWm26hgg==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + + '@cloudflare/workerd-linux-arm64@1.20250428.0': + resolution: {integrity: sha512-D9NRBnW46nl1EQsP13qfkYb5lbt4C6nxl38SBKY/NOcZAUoHzNB5K0GaK8LxvpkM7X/97ySojlMfR5jh5DNXYQ==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + + '@cloudflare/workerd-windows-64@1.20250428.0': + resolution: {integrity: sha512-RQCRj28eitjKD0tmei6iFOuWqMuHMHdNGEigRmbkmuTlpbWHNAoHikgCzZQ/dkKDdatA76TmcpbyECNf31oaTA==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} @@ -574,9 +969,19 @@ packages: peerDependencies: postcss-selector-parser: ^7.0.0 + '@dotenvx/dotenvx@1.31.0': + resolution: {integrity: sha512-GeDxvtjiRuoyWVU9nQneId879zIyNdL05bS7RKiqMkfBSKpHMWHLoRyRqjYWLaXmX/llKO1hTlqHDmatkQAjPA==} + hasBin: true + '@dual-bundle/import-meta-resolve@4.1.0': resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + '@ecies/ciphers@0.2.3': + resolution: {integrity: sha512-tapn6XhOueMwht3E2UzY0ZZjYokdaw9XtL9kEyjhQ/Fb9vL9xTFbOaI+fV0AWvTpYu4BNloC6getKW6NtSg4mA==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + peerDependencies: + '@noble/ciphers': ^1.0.0 + '@emnapi/core@1.4.3': resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} @@ -586,150 +991,432 @@ packages: '@emnapi/wasi-threads@1.0.2': resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + '@esbuild/aix-ppc64@0.25.2': + resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.25.3': resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.19.2': + resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.2': + resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.25.3': resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm@0.19.2': + resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.2': + resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.25.3': resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-x64@0.19.2': + resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.2': + resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.25.3': resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.19.2': + resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.2': + resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.25.3': resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.19.2': + resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.2': + resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.25.3': resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.3': - resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} - engines: {node: '>=18'} + '@esbuild/freebsd-arm64@0.19.2': + resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} + engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.3': - resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + '@esbuild/freebsd-arm64@0.25.2': + resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.3': + resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.2': + resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.2': + resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.3': + resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + engines: {node: '>=18'} + cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.19.2': + resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.2': + resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.25.3': resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.19.2': + resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.2': + resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.25.3': resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.19.2': + resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.2': + resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.25.3': resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.19.2': + resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.2': + resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.25.3': resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.19.2': + resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.2': + resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.25.3': resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.19.2': + resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.2': + resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.25.3': resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.19.2': + resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.2': + resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.25.3': resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.19.2': + resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.2': + resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.25.3': resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.19.2': + resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.2': + resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.25.3': resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/netbsd-arm64@0.25.2': + resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-arm64@0.25.3': resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.19.2': + resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.2': + resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.3': resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/openbsd-arm64@0.25.2': + resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-arm64@0.25.3': resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.19.2': + resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.2': + resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.3': resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/sunos-x64@0.19.2': + resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.2': + resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.25.3': resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.19.2': + resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.2': + resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.25.3': resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.19.2': + resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.2': + resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.25.3': resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.19.2': + resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.2': + resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.25.3': resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} engines: {node: '>=18'} @@ -787,6 +1474,10 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} + '@flarelabs-net/wrangler-build-time-fs-assets-polyfilling@0.0.0': + resolution: {integrity: sha512-8Nq96CtZD+NHRbHl9yooHIclCDhQx3Ayg+H6P4OlapdcalZq7NQ7YRN7BIF+UVNX/uFHZiE+IZwdKVr2gR+8mA==} + hasBin: true + '@floating-ui/core@1.7.0': resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==} @@ -845,33 +1536,65 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-arm64@0.34.1': resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + '@img/sharp-darwin-x64@0.34.1': resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.1.0': resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} cpu: [arm64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.1.0': resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linux-arm64@1.1.0': resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + '@img/sharp-libvips-linux-arm@1.1.0': resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} cpu: [arm] @@ -882,73 +1605,146 @@ packages: cpu: [ppc64] os: [linux] + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + '@img/sharp-libvips-linux-s390x@1.1.0': resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} cpu: [s390x] os: [linux] + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + '@img/sharp-libvips-linux-x64@1.1.0': resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} cpu: [x64] os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.1.0': resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} cpu: [x64] os: [linux] + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linux-arm64@0.34.1': resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + '@img/sharp-linux-arm@0.34.1': resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + '@img/sharp-linux-s390x@0.34.1': resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-linux-x64@0.34.1': resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linuxmusl-arm64@0.34.1': resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-linuxmusl-x64@0.34.1': resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + '@img/sharp-wasm32@0.34.1': resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + '@img/sharp-win32-ia32@0.34.1': resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@img/sharp-win32-x64@0.34.1': resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -980,6 +1776,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@keyv/serialize@1.0.3': resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} @@ -1058,10 +1857,30 @@ packages: cpu: [x64] os: [win32] + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.0': + resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} + engines: {node: ^14.21.3 || >=16} + '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} + '@node-minify/core@8.0.6': + resolution: {integrity: sha512-/vxN46ieWDLU67CmgbArEvOb41zlYFOkOtr9QW9CnTrBLuTyGgkyNWC2y5+khvRw3Br58p2B5ZVSx/PxCTru6g==} + engines: {node: '>=16.0.0'} + + '@node-minify/terser@8.0.6': + resolution: {integrity: sha512-grQ1ipham743ch2c3++C8Isk6toJnxJSyDiwUI/IWUCh4CZFD6aYVw6UAY40IpCnjrq5aXGwiv5OZJn6Pr0hvg==} + engines: {node: '>=16.0.0'} + + '@node-minify/utils@8.0.6': + resolution: {integrity: sha512-csY4qcR7jUwiZmkreNTJhcypQfts2aY2CK+a+rXgXUImZiZiySh0FvwHjRnlqWKvg+y6ae9lHFzDRjBTmqlTIQ==} + engines: {node: '>=16.0.0'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1108,6 +1927,16 @@ packages: resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} engines: {node: ^16.14.0 || >=18.0.0} + '@opennextjs/aws@3.5.7': + resolution: {integrity: sha512-YjyHJrkIHI7YwQRCp8GjDOudu86oOc1RiwxvBBpPHrplsS18H4ZmkzGggAKhK6B4myGsJQ/q9kNP2TraoZiNzg==} + hasBin: true + + '@opennextjs/cloudflare@1.0.0-beta.4': + resolution: {integrity: sha512-/nEFnjrn8oxfZgW03ZgMzwJvcQ/U/MuXCTIABYvIGnja1+KxFZEc46GFGSxjTwdz4Hmt2eutaEGpQOqC6uRR3w==} + hasBin: true + peerDependencies: + wrangler: ^4.7.0 + '@opentelemetry/api-logs@0.200.0': resolution: {integrity: sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==} engines: {node: '>=8.0.0'} @@ -1648,28 +2477,380 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@stencil/core@4.27.0': - resolution: {integrity: sha512-GOA+pvSpwL734yijTB8+LHesqPq3o/K6IaCrNoZybNVpe6lgVfvciDwPeP1XOj6JZpA/Lp8Uh3U9znoS8qgwOA==} - engines: {node: '>=16.0.0', npm: '>=7.10.0'} - hasBin: true + '@smithy/abort-controller@2.2.0': + resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} + engines: {node: '>=14.0.0'} - '@stencil/react-output-target@0.8.2': - resolution: {integrity: sha512-O7zRCfRbiPmxaW3oaPBB3RFOMQOuy1dfkcUUg+6en6NckrRzC2YEAzzo6iIkppDrPW34TJJRy/mqJUdlBPLJ1g==} - peerDependencies: - '@stencil/core': '>=3 || >= 4.0.0-beta.0 || >= 4.0.0' - react: ^18 || ^19 - react-dom: ^18 || ^19 + '@smithy/abort-controller@4.0.2': + resolution: {integrity: sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==} + engines: {node: '>=18.0.0'} - '@stencil/store@2.1.3': - resolution: {integrity: sha512-qeWJisbcafVcAhFZidiqK82ULlgBzPNEhlsm0PZ54FHkNTIomxns2MiI7IOGUvGPumK1WK7KzajRomHHc8SYag==} - engines: {node: '>=18.0.0', npm: '>=6.0.0'} - peerDependencies: - '@stencil/core': '>=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0' + '@smithy/chunked-blob-reader-native@4.0.0': + resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} + engines: {node: '>=18.0.0'} - '@storybook/addon-controls@8.6.12': - resolution: {integrity: sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==} - peerDependencies: - storybook: ^8.6.12 + '@smithy/chunked-blob-reader@5.0.0': + resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@2.2.0': + resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} + engines: {node: '>=14.0.0'} + + '@smithy/config-resolver@4.1.0': + resolution: {integrity: sha512-8smPlwhga22pwl23fM5ew4T9vfLUCeFXlcqNOCD5M5h8VmNPNUE9j6bQSuRXpDSV11L/E/SwEBQuW8hr6+nS1A==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.3.1': + resolution: {integrity: sha512-W7AppgQD3fP1aBmo8wWo0id5zeR2/aYRy067vZsDVaa6v/mdhkg6DxXwEVuSPjZl+ZnvWAQbUMCd5ckw38+tHQ==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@2.3.0': + resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} + engines: {node: '>=14.0.0'} + + '@smithy/credential-provider-imds@4.0.2': + resolution: {integrity: sha512-32lVig6jCaWBHnY+OEQ6e6Vnt5vDHaLiydGrwYMW9tPqO688hPGTYRamYJ1EptxEC2rAwJrHWmPoKRBl4iTa8w==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.0.2': + resolution: {integrity: sha512-p+f2kLSK7ZrXVfskU/f5dzksKTewZk8pJLPvER3aFHPt76C2MxD9vNatSfLzzQSQB4FNO96RK4PSXfhD1TTeMQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.0.2': + resolution: {integrity: sha512-CepZCDs2xgVUtH7ZZ7oDdZFH8e6Y2zOv8iiX6RhndH69nlojCALSKK+OXwZUgOtUZEUaZ5e1hULVCHYbCn7pug==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.1.0': + resolution: {integrity: sha512-1PI+WPZ5TWXrfj3CIoKyUycYynYJgZjuQo8U+sphneOtjsgrttYybdqESFReQrdWJ+LKt6NEdbYzmmfDBmjX2A==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.0.2': + resolution: {integrity: sha512-C5bJ/C6x9ENPMx2cFOirspnF9ZsBVnBMtP6BdPl/qYSuUawdGQ34Lq0dMcf42QTjUZgWGbUIZnz6+zLxJlb9aw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.0.2': + resolution: {integrity: sha512-St8h9JqzvnbB52FtckiHPN4U/cnXcarMniXRXTKn0r4b4XesZOGiAyUdj1aXbqqn1icSqBlzzUsCl6nPB018ng==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@2.5.0': + resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} + + '@smithy/fetch-http-handler@5.0.2': + resolution: {integrity: sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-blob-browser@4.0.2': + resolution: {integrity: sha512-3g188Z3DyhtzfBRxpZjU8R9PpOQuYsbNnyStc/ZVS+9nVX1f6XeNOa9IrAh35HwwIZg+XWk8bFVtNINVscBP+g==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@2.2.0': + resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} + engines: {node: '>=14.0.0'} + + '@smithy/hash-node@4.0.2': + resolution: {integrity: sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-stream-node@4.0.2': + resolution: {integrity: sha512-POWDuTznzbIwlEXEvvXoPMS10y0WKXK790soe57tFRfvf4zBHyzE529HpZMqmDdwG9MfFflnyzndUQ8j78ZdSg==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@2.2.0': + resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} + + '@smithy/invalid-dependency@4.0.2': + resolution: {integrity: sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} + + '@smithy/md5-js@4.0.2': + resolution: {integrity: sha512-Hc0R8EiuVunUewCse2syVgA2AfSRco3LyAv07B/zCOMa+jpXI9ll+Q21Nc6FAlYPcpNcAXqBzMhNs1CD/pP2bA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@2.2.0': + resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-content-length@4.0.2': + resolution: {integrity: sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@2.5.1': + resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-endpoint@4.1.2': + resolution: {integrity: sha512-EqOy3xaEGQpsKxLlzYstDRJ8eY90CbyBP4cl+w7r45mE60S8YliyL9AgWsdWcyNiB95E2PMqHBEv67nNl1zLfg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@2.3.1': + resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-retry@4.1.3': + resolution: {integrity: sha512-AsJtI9KiFoEGAhcEKZyzzPfrszAQGcf4HSYKmenz0WGx/6YNvoPPv4OSGfZTCsDmgPHv4pXzxE+7QV7jcGWNKw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@2.3.0': + resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-serde@4.0.3': + resolution: {integrity: sha512-rfgDVrgLEVMmMn0BI8O+8OVr6vXzjV7HZj57l0QxslhzbvVfikZbVfBVthjLHqib4BW44QhcIgJpvebHlRaC9A==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@2.2.0': + resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-stack@4.0.2': + resolution: {integrity: sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@2.3.0': + resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} + engines: {node: '>=14.0.0'} + + '@smithy/node-config-provider@4.0.2': + resolution: {integrity: sha512-WgCkILRZfJwJ4Da92a6t3ozN/zcvYyJGUTmfGbgS/FkCcoCjl7G4FJaCDN1ySdvLvemnQeo25FdkyMSTSwulsw==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@2.5.0': + resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} + engines: {node: '>=14.0.0'} + + '@smithy/node-http-handler@4.0.4': + resolution: {integrity: sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@2.2.0': + resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} + engines: {node: '>=14.0.0'} + + '@smithy/property-provider@4.0.2': + resolution: {integrity: sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@2.0.5': + resolution: {integrity: sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==} + engines: {node: '>=14.0.0'} + + '@smithy/protocol-http@3.3.0': + resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} + engines: {node: '>=14.0.0'} + + '@smithy/protocol-http@5.1.0': + resolution: {integrity: sha512-KxAOL1nUNw2JTYrtviRRjEnykIDhxc84qMBzxvu1MUfQfHTuBlCG7PA6EdVwqpJjH7glw7FqQoFxUJSyBQgu7g==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@2.2.0': + resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} + engines: {node: '>=14.0.0'} + + '@smithy/querystring-builder@4.0.2': + resolution: {integrity: sha512-NTOs0FwHw1vimmQM4ebh+wFQvOwkEf/kQL6bSM1Lock+Bv4I89B3hGYoUEPkmvYPkDKyp5UdXJYu+PoTQ3T31Q==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@2.2.0': + resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} + engines: {node: '>=14.0.0'} + + '@smithy/querystring-parser@4.0.2': + resolution: {integrity: sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@2.1.5': + resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} + engines: {node: '>=14.0.0'} + + '@smithy/service-error-classification@4.0.3': + resolution: {integrity: sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@2.4.0': + resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} + engines: {node: '>=14.0.0'} + + '@smithy/shared-ini-file-loader@4.0.2': + resolution: {integrity: sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@2.3.0': + resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} + engines: {node: '>=14.0.0'} + + '@smithy/signature-v4@5.1.0': + resolution: {integrity: sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@2.5.1': + resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} + engines: {node: '>=14.0.0'} + + '@smithy/smithy-client@4.2.2': + resolution: {integrity: sha512-3AnHfsMdq9Wg7+3BeR1HuLWI9+DMA/SoHVpCWq6xSsa52ikNd6nlF/wFzdpHyGtVa+Aji6lMgvwOF4sGcVA7SA==} + engines: {node: '>=18.0.0'} + + '@smithy/types@2.12.0': + resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} + engines: {node: '>=14.0.0'} + + '@smithy/types@4.2.0': + resolution: {integrity: sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@2.2.0': + resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} + + '@smithy/url-parser@4.0.2': + resolution: {integrity: sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@2.3.0': + resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@2.2.0': + resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} + + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@2.3.0': + resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@2.3.0': + resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} + engines: {node: '>=14.0.0'} + + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@2.2.1': + resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-browser@4.0.10': + resolution: {integrity: sha512-2k6fgUNOZ1Rn0gEjvGPGrDEINLG8qSBHsN7xlkkbO+fnHJ36BQPDzhFfMmYSDS8AgzoygqQiDOQ+6Hp2vBTUdA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@2.3.1': + resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@4.0.10': + resolution: {integrity: sha512-2XR1WRglLVmoIFts7bODUTgBdVyvkfKNkydHrlsI5VxW9q3s1hnJCuY+f1OHzvj5ue23q4vydM2fjrMjf2HSdQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.0.2': + resolution: {integrity: sha512-6QSutU5ZyrpNbnd51zRTL7goojlcnuOB55+F9VBD+j8JpRY50IGamsjlycrmpn8PQkmJucFW8A0LSfXj7jjtLQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@2.2.0': + resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} + engines: {node: '>=14.0.0'} + + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@2.2.0': + resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-middleware@4.0.2': + resolution: {integrity: sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@2.2.0': + resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} + engines: {node: '>= 14.0.0'} + + '@smithy/util-retry@4.0.3': + resolution: {integrity: sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@2.2.0': + resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-stream@4.2.0': + resolution: {integrity: sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@2.2.0': + resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@2.2.0': + resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-waiter@4.0.3': + resolution: {integrity: sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==} + engines: {node: '>=18.0.0'} + + '@stencil/core@4.27.0': + resolution: {integrity: sha512-GOA+pvSpwL734yijTB8+LHesqPq3o/K6IaCrNoZybNVpe6lgVfvciDwPeP1XOj6JZpA/Lp8Uh3U9znoS8qgwOA==} + engines: {node: '>=16.0.0', npm: '>=7.10.0'} + hasBin: true + + '@stencil/react-output-target@0.8.2': + resolution: {integrity: sha512-O7zRCfRbiPmxaW3oaPBB3RFOMQOuy1dfkcUUg+6en6NckrRzC2YEAzzo6iIkppDrPW34TJJRy/mqJUdlBPLJ1g==} + peerDependencies: + '@stencil/core': '>=3 || >= 4.0.0-beta.0 || >= 4.0.0' + react: ^18 || ^19 + react-dom: ^18 || ^19 + + '@stencil/store@2.1.3': + resolution: {integrity: sha512-qeWJisbcafVcAhFZidiqK82ULlgBzPNEhlsm0PZ54FHkNTIomxns2MiI7IOGUvGPumK1WK7KzajRomHHc8SYag==} + engines: {node: '>=18.0.0', npm: '>=6.0.0'} + peerDependencies: + '@stencil/core': '>=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0' + + '@storybook/addon-controls@8.6.12': + resolution: {integrity: sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==} + peerDependencies: + storybook: ^8.6.12 '@storybook/addon-interactions@8.6.12': resolution: {integrity: sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==} @@ -2014,6 +3195,9 @@ packages: '@ts-morph/common@0.23.0': resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==} + '@tsconfig/node18@1.0.3': + resolution: {integrity: sha512-RbwvSJQsuN9TB04AQbGULYfOGE/RnSFk/FLQ5b0NmDf5Kx2q/lABZbHQPKCO1vZ6Fiwkplu+yb9pGdLy1iGseQ==} + '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} @@ -2110,6 +3294,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + '@typescript-eslint/eslint-plugin@8.31.1': resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2396,6 +3583,15 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@8.14.1: resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} @@ -2429,6 +3625,10 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} @@ -2515,6 +3715,9 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + as-table@1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -2542,6 +3745,9 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + aws4fetch@1.0.20: + resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} + axe-core@4.10.3: resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} engines: {node: '>=4'} @@ -2570,6 +3776,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + blake3-wasm@2.1.5: + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} + body-parser@2.2.0: resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} engines: {node: '>=18'} @@ -2577,6 +3786,9 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -2735,6 +3947,10 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} @@ -2778,6 +3994,10 @@ packages: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -2853,6 +4073,9 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + data-uri-to-buffer@2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -2877,6 +4100,15 @@ packages: supports-color: optional: true + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -2926,6 +4158,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -2998,13 +4233,24 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + eciesjs@0.4.14: + resolution: {integrity: sha512-eJAgf9pdv214Hn98FlUzclRMYWF7WfoLlkS9nWMTm1qcCwn6Ad4EGD9lr9HXMBfSrZhYQujRE+p0adPRkctC6A==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -3034,6 +4280,10 @@ packages: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -3105,6 +4355,16 @@ packages: peerDependencies: esbuild: '>=0.12 <1' + esbuild@0.19.2: + resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.25.2: + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} + engines: {node: '>=18'} + hasBin: true + esbuild@0.25.3: resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} engines: {node: '>=18'} @@ -3346,20 +4606,35 @@ packages: resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} engines: {node: '>=18.0.0'} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} + express-rate-limit@7.5.0: resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} engines: {node: '>= 16'} peerDependencies: express: ^4.11 || 5 || ^5.0.0-beta.1 + express@5.0.1: + resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==} + engines: {node: '>= 18'} + express@5.1.0: resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} engines: {node: '>= 18'} + exsolve@1.0.5: + resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -3390,6 +4665,14 @@ packages: fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -3525,6 +4808,13 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-source@2.0.12: + resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -3563,6 +4853,10 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported + glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + global-jsdom@26.0.0: resolution: {integrity: sha512-BqXpTNZFjP40N+s4k8Bk9HS8GFVPJB/+TKtwcShM84wLv6C5dH9o1dydI3pL6potanhfDiIAVDbaaGj/uSdRSA==} engines: {node: '>=18'} @@ -3610,6 +4904,10 @@ packages: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -3739,6 +5037,10 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -3966,6 +5268,10 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4411,6 +5717,10 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -4539,6 +5849,15 @@ packages: resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} engines: {node: '>= 0.6'} + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -4551,13 +5870,22 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minimatch@10.0.1: + miniflare@4.20250428.1: + resolution: {integrity: sha512-M3qcJXjeAEimHrEeWXEhrJiC3YHB5M3QSqqK67pOTI+lHn0QyVG/2iFUjVJ/nv+i10uxeAEva8GRGeu+tKRCmQ==} + engines: {node: '>=18.0.0'} + hasBin: true + + minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -4565,15 +5893,27 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + mkdirp@3.0.1: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true + mnemonist@0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} + module-details-from-path@1.0.4: resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} @@ -4581,9 +5921,16 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -4679,6 +6026,10 @@ packages: resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} engines: {node: ^16.14.0 || >=18.0.0} + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4701,6 +6052,10 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + object-treeify@1.1.33: + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + engines: {node: '>= 10'} + object.assign@4.1.7: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} @@ -4724,6 +6079,12 @@ packages: objectorarray@1.0.5: resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} + obliterator@1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -4731,6 +6092,10 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -4841,6 +6206,9 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-to-regexp@8.2.0: resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} engines: {node: '>=16'} @@ -4849,6 +6217,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -5037,6 +6408,9 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + printable-characters@1.0.42: + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + proc-log@4.2.0: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5078,6 +6452,10 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + qs@6.14.0: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} @@ -5524,6 +6902,10 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.34.1: resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -5561,6 +6943,9 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -5627,10 +7012,17 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} + stacktracey@2.1.8: + resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + stoppable@1.1.0: + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} + storybook@8.6.12: resolution: {integrity: sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==} hasBin: true @@ -5709,6 +7101,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -5725,6 +7121,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strnum@1.1.2: + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + style-loader@3.3.4: resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} @@ -5857,6 +7256,11 @@ packages: uglify-js: optional: true + terser@5.16.9: + resolution: {integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==} + engines: {node: '>=10'} + hasBin: true + terser@5.39.0: resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} engines: {node: '>=10'} @@ -5919,6 +7323,9 @@ packages: ts-morph@22.0.0: resolution: {integrity: sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==} + ts-tqdm@0.8.6: + resolution: {integrity: sha512-3X3M1PZcHtgQbnwizL+xU8CAgbYbeLHrrDwL9xxcZZrV5J+e7loJm1XrXozHjSkl44J0Zg0SgA8rXbh83kCkcQ==} + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -5926,6 +7333,9 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -6022,6 +7432,9 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -6038,6 +7451,9 @@ packages: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} + unenv@2.0.0-rc.15: + resolution: {integrity: sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==} + unified-engine@11.2.2: resolution: {integrity: sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==} @@ -6119,6 +7535,9 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} + urlpattern-polyfill@10.0.0: + resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -6156,6 +7575,14 @@ packages: utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -6292,6 +7719,21 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + workerd@1.20250428.0: + resolution: {integrity: sha512-JJNWkHkwPQKQdvtM9UORijgYdcdJsihA4SfYjwh02IUQsdMyZ9jizV1sX9yWi9B9ptlohTW8UNHJEATuphGgdg==} + engines: {node: '>=16'} + hasBin: true + + wrangler@4.14.1: + resolution: {integrity: sha512-EU7IThP7i68TBftJJSveogvWZ5k/WRijcJh3UclDWiWWhDZTPbL6LOJEFhHKqFzHOaC4Y2Aewt48rfTz0e7oCw==} + engines: {node: '>=18.0.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20250428.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -6311,6 +7753,18 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.18.1: resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} engines: {node: '>=10.0.0'} @@ -6350,11 +7804,17 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + youch@3.3.4: + resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} + zod-to-json-schema@3.24.5: resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} peerDependencies: zod: ^3.24.1 + zod@3.22.3: + resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} + zod@3.24.3: resolution: {integrity: sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==} @@ -6396,1194 +7856,3079 @@ snapshots: '@csstools/css-tokenizer': 3.0.3 lru-cache: 10.4.3 - '@babel/code-frame@7.27.1': + '@ast-grep/napi-darwin-arm64@0.35.0': + optional: true + + '@ast-grep/napi-darwin-x64@0.35.0': + optional: true + + '@ast-grep/napi-linux-arm64-gnu@0.35.0': + optional: true + + '@ast-grep/napi-linux-arm64-musl@0.35.0': + optional: true + + '@ast-grep/napi-linux-x64-gnu@0.35.0': + optional: true + + '@ast-grep/napi-linux-x64-musl@0.35.0': + optional: true + + '@ast-grep/napi-win32-arm64-msvc@0.35.0': + optional: true + + '@ast-grep/napi-win32-ia32-msvc@0.35.0': + optional: true + + '@ast-grep/napi-win32-x64-msvc@0.35.0': + optional: true + + '@ast-grep/napi@0.35.0': + optionalDependencies: + '@ast-grep/napi-darwin-arm64': 0.35.0 + '@ast-grep/napi-darwin-x64': 0.35.0 + '@ast-grep/napi-linux-arm64-gnu': 0.35.0 + '@ast-grep/napi-linux-arm64-musl': 0.35.0 + '@ast-grep/napi-linux-x64-gnu': 0.35.0 + '@ast-grep/napi-linux-x64-musl': 0.35.0 + '@ast-grep/napi-win32-arm64-msvc': 0.35.0 + '@ast-grep/napi-win32-ia32-msvc': 0.35.0 + '@ast-grep/napi-win32-x64-msvc': 0.35.0 + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.775.0 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': dependencies: - '@babel/helper-validator-identifier': 7.27.1 - js-tokens: 4.0.0 - picocolors: 1.1.1 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.775.0 + tslib: 2.8.1 - '@babel/compat-data@7.27.1': {} + '@aws-crypto/ie11-detection@3.0.0': + dependencies: + tslib: 1.14.1 - '@babel/core@7.27.1': + '@aws-crypto/sha1-browser@5.2.0': dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 - '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) - '@babel/helpers': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/template': 7.27.1 - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-locate-window': 3.723.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 - '@babel/generator@7.27.1': + '@aws-crypto/sha256-browser@3.0.0': + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-locate-window': 3.723.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-locate-window': 3.723.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@3.0.0': dependencies: - '@babel/parser': 7.27.1 - '@babel/types': 7.27.1 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.775.0 + tslib: 1.14.1 - '@babel/helper-compilation-targets@7.27.1': + '@aws-crypto/sha256-js@5.2.0': dependencies: - '@babel/compat-data': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.24.5 - lru-cache: 5.1.1 - semver: 6.3.1 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.775.0 + tslib: 2.8.1 - '@babel/helper-module-imports@7.27.1': + '@aws-crypto/supports-web-crypto@3.0.0': dependencies: - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 - transitivePeerDependencies: - - supports-color + tslib: 1.14.1 - '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + '@aws-crypto/supports-web-crypto@5.2.0': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.1 - transitivePeerDependencies: - - supports-color + tslib: 2.8.1 - '@babel/helper-string-parser@7.27.1': {} + '@aws-crypto/util@3.0.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 - '@babel/helper-validator-identifier@7.27.1': {} + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 - '@babel/helper-validator-option@7.27.1': {} + '@aws-sdk/client-cloudfront@3.398.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.398.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@aws-sdk/xml-builder': 3.310.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-stream': 2.2.0 + '@smithy/util-utf8': 2.3.0 + '@smithy/util-waiter': 2.2.0 + fast-xml-parser: 4.2.5 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-dynamodb@3.803.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-node': 3.803.0 + '@aws-sdk/middleware-endpoint-discovery': 3.775.0 + '@aws-sdk/middleware-host-header': 3.775.0 + '@aws-sdk/middleware-logger': 3.775.0 + '@aws-sdk/middleware-recursion-detection': 3.775.0 + '@aws-sdk/middleware-user-agent': 3.799.0 + '@aws-sdk/region-config-resolver': 3.775.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-endpoints': 3.787.0 + '@aws-sdk/util-user-agent-browser': 3.775.0 + '@aws-sdk/util-user-agent-node': 3.799.0 + '@smithy/config-resolver': 4.1.0 + '@smithy/core': 3.3.1 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.2 + '@smithy/middleware-retry': 4.1.3 + '@smithy/middleware-serde': 4.0.3 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.10 + '@smithy/util-defaults-mode-node': 4.0.10 + '@smithy/util-endpoints': 3.0.2 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.3 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-lambda@3.803.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-node': 3.803.0 + '@aws-sdk/middleware-host-header': 3.775.0 + '@aws-sdk/middleware-logger': 3.775.0 + '@aws-sdk/middleware-recursion-detection': 3.775.0 + '@aws-sdk/middleware-user-agent': 3.799.0 + '@aws-sdk/region-config-resolver': 3.775.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-endpoints': 3.787.0 + '@aws-sdk/util-user-agent-browser': 3.775.0 + '@aws-sdk/util-user-agent-node': 3.799.0 + '@smithy/config-resolver': 4.1.0 + '@smithy/core': 3.3.1 + '@smithy/eventstream-serde-browser': 4.0.2 + '@smithy/eventstream-serde-config-resolver': 4.1.0 + '@smithy/eventstream-serde-node': 4.0.2 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.2 + '@smithy/middleware-retry': 4.1.3 + '@smithy/middleware-serde': 4.0.3 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.10 + '@smithy/util-defaults-mode-node': 4.0.10 + '@smithy/util-endpoints': 3.0.2 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-stream': 4.2.0 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.3 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-s3@3.803.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-node': 3.803.0 + '@aws-sdk/middleware-bucket-endpoint': 3.775.0 + '@aws-sdk/middleware-expect-continue': 3.775.0 + '@aws-sdk/middleware-flexible-checksums': 3.799.0 + '@aws-sdk/middleware-host-header': 3.775.0 + '@aws-sdk/middleware-location-constraint': 3.775.0 + '@aws-sdk/middleware-logger': 3.775.0 + '@aws-sdk/middleware-recursion-detection': 3.775.0 + '@aws-sdk/middleware-sdk-s3': 3.799.0 + '@aws-sdk/middleware-ssec': 3.775.0 + '@aws-sdk/middleware-user-agent': 3.799.0 + '@aws-sdk/region-config-resolver': 3.775.0 + '@aws-sdk/signature-v4-multi-region': 3.803.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-endpoints': 3.787.0 + '@aws-sdk/util-user-agent-browser': 3.775.0 + '@aws-sdk/util-user-agent-node': 3.799.0 + '@aws-sdk/xml-builder': 3.775.0 + '@smithy/config-resolver': 4.1.0 + '@smithy/core': 3.3.1 + '@smithy/eventstream-serde-browser': 4.0.2 + '@smithy/eventstream-serde-config-resolver': 4.1.0 + '@smithy/eventstream-serde-node': 4.0.2 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-blob-browser': 4.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/hash-stream-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/md5-js': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.2 + '@smithy/middleware-retry': 4.1.3 + '@smithy/middleware-serde': 4.0.3 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.10 + '@smithy/util-defaults-mode-node': 4.0.10 + '@smithy/util-endpoints': 3.0.2 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-stream': 4.2.0 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.3 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sqs@3.803.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-node': 3.803.0 + '@aws-sdk/middleware-host-header': 3.775.0 + '@aws-sdk/middleware-logger': 3.775.0 + '@aws-sdk/middleware-recursion-detection': 3.775.0 + '@aws-sdk/middleware-sdk-sqs': 3.798.0 + '@aws-sdk/middleware-user-agent': 3.799.0 + '@aws-sdk/region-config-resolver': 3.775.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-endpoints': 3.787.0 + '@aws-sdk/util-user-agent-browser': 3.775.0 + '@aws-sdk/util-user-agent-node': 3.799.0 + '@smithy/config-resolver': 4.1.0 + '@smithy/core': 3.3.1 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/md5-js': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.2 + '@smithy/middleware-retry': 4.1.3 + '@smithy/middleware-serde': 4.0.3 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.10 + '@smithy/util-defaults-mode-node': 4.0.10 + '@smithy/util-endpoints': 3.0.2 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.398.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.803.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/middleware-host-header': 3.775.0 + '@aws-sdk/middleware-logger': 3.775.0 + '@aws-sdk/middleware-recursion-detection': 3.775.0 + '@aws-sdk/middleware-user-agent': 3.799.0 + '@aws-sdk/region-config-resolver': 3.775.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-endpoints': 3.787.0 + '@aws-sdk/util-user-agent-browser': 3.775.0 + '@aws-sdk/util-user-agent-node': 3.799.0 + '@smithy/config-resolver': 4.1.0 + '@smithy/core': 3.3.1 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.2 + '@smithy/middleware-retry': 4.1.3 + '@smithy/middleware-serde': 4.0.3 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.10 + '@smithy/util-defaults-mode-node': 4.0.10 + '@smithy/util-endpoints': 3.0.2 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.398.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-sdk-sts': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + fast-xml-parser: 4.2.5 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.799.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/core': 3.3.1 + '@smithy/node-config-provider': 4.0.2 + '@smithy/property-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/signature-v4': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/util-middleware': 4.0.2 + fast-xml-parser: 4.4.1 + tslib: 2.8.1 - '@babel/helpers@7.27.1': + '@aws-sdk/credential-provider-env@3.398.0': dependencies: - '@babel/template': 7.27.1 - '@babel/types': 7.27.1 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@babel/parser@7.27.1': + '@aws-sdk/credential-provider-env@3.799.0': dependencies: - '@babel/types': 7.27.1 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/types': 3.775.0 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@babel/runtime@7.27.1': {} + '@aws-sdk/credential-provider-http@3.799.0': + dependencies: + '@aws-sdk/core': 3.799.0 + '@aws-sdk/types': 3.775.0 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/property-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/util-stream': 4.2.0 + tslib: 2.8.1 - '@babel/template@7.27.1': + '@aws-sdk/credential-provider-ini@3.398.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.398.0 + '@aws-sdk/credential-provider-process': 3.398.0 + '@aws-sdk/credential-provider-sso': 3.398.0 + '@aws-sdk/credential-provider-web-identity': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-ini@3.803.0': + dependencies: + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-env': 3.799.0 + '@aws-sdk/credential-provider-http': 3.799.0 + '@aws-sdk/credential-provider-process': 3.799.0 + '@aws-sdk/credential-provider-sso': 3.803.0 + '@aws-sdk/credential-provider-web-identity': 3.803.0 + '@aws-sdk/nested-clients': 3.803.0 + '@aws-sdk/types': 3.775.0 + '@smithy/credential-provider-imds': 4.0.2 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.398.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.398.0 + '@aws-sdk/credential-provider-ini': 3.398.0 + '@aws-sdk/credential-provider-process': 3.398.0 + '@aws-sdk/credential-provider-sso': 3.398.0 + '@aws-sdk/credential-provider-web-identity': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.803.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.799.0 + '@aws-sdk/credential-provider-http': 3.799.0 + '@aws-sdk/credential-provider-ini': 3.803.0 + '@aws-sdk/credential-provider-process': 3.799.0 + '@aws-sdk/credential-provider-sso': 3.803.0 + '@aws-sdk/credential-provider-web-identity': 3.803.0 + '@aws-sdk/types': 3.775.0 + '@smithy/credential-provider-imds': 4.0.2 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.398.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/types': 7.27.1 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@babel/traverse@7.27.1': + '@aws-sdk/credential-provider-process@3.799.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/template': 7.27.1 - '@babel/types': 7.27.1 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@aws-sdk/core': 3.799.0 + '@aws-sdk/types': 3.775.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@babel/types@7.27.1': + '@aws-sdk/credential-provider-sso@3.398.0': dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@aws-sdk/client-sso': 3.398.0 + '@aws-sdk/token-providers': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@csstools/color-helpers@5.0.2': {} + '@aws-sdk/credential-provider-sso@3.803.0': + dependencies: + '@aws-sdk/client-sso': 3.803.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/token-providers': 3.803.0 + '@aws-sdk/types': 3.775.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@aws-sdk/credential-provider-web-identity@3.398.0': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@aws-sdk/credential-provider-web-identity@3.803.0': dependencies: - '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/nested-clients': 3.803.0 + '@aws-sdk/types': 3.775.0 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@aws-sdk/endpoint-cache@3.723.0': dependencies: - '@csstools/css-tokenizer': 3.0.3 + mnemonist: 0.38.3 + tslib: 2.8.1 - '@csstools/css-tokenizer@3.0.3': {} + '@aws-sdk/middleware-bucket-endpoint@3.775.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-arn-parser': 3.723.0 + '@smithy/node-config-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-config-provider': 4.0.0 + tslib: 2.8.1 - '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@aws-sdk/middleware-endpoint-discovery@3.775.0': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@aws-sdk/endpoint-cache': 3.723.0 + '@aws-sdk/types': 3.775.0 + '@smithy/node-config-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + '@aws-sdk/middleware-expect-continue@3.775.0': dependencies: - postcss-selector-parser: 7.1.0 + '@aws-sdk/types': 3.775.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@dual-bundle/import-meta-resolve@4.1.0': {} + '@aws-sdk/middleware-flexible-checksums@3.799.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/types': 3.775.0 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/node-config-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-stream': 4.2.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 - '@emnapi/core@1.4.3': + '@aws-sdk/middleware-host-header@3.398.0': dependencies: - '@emnapi/wasi-threads': 1.0.2 + '@aws-sdk/types': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.4.3': + '@aws-sdk/middleware-host-header@3.775.0': dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 tslib: 2.8.1 - optional: true - '@emnapi/wasi-threads@1.0.2': + '@aws-sdk/middleware-location-constraint@3.775.0': dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/types': 4.2.0 tslib: 2.8.1 - optional: true - '@esbuild/aix-ppc64@0.25.3': - optional: true + '@aws-sdk/middleware-logger@3.398.0': + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@esbuild/android-arm64@0.25.3': - optional: true + '@aws-sdk/middleware-logger@3.775.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@esbuild/android-arm@0.25.3': - optional: true + '@aws-sdk/middleware-recursion-detection@3.398.0': + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@esbuild/android-x64@0.25.3': - optional: true - - '@esbuild/darwin-arm64@0.25.3': - optional: true + '@aws-sdk/middleware-recursion-detection@3.775.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@esbuild/darwin-x64@0.25.3': - optional: true + '@aws-sdk/middleware-sdk-s3@3.799.0': + dependencies: + '@aws-sdk/core': 3.799.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-arn-parser': 3.723.0 + '@smithy/core': 3.3.1 + '@smithy/node-config-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/signature-v4': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-stream': 4.2.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 - '@esbuild/freebsd-arm64@0.25.3': - optional: true + '@aws-sdk/middleware-sdk-sqs@3.798.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 - '@esbuild/freebsd-x64@0.25.3': - optional: true + '@aws-sdk/middleware-sdk-sts@3.398.0': + dependencies: + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@esbuild/linux-arm64@0.25.3': - optional: true + '@aws-sdk/middleware-signing@3.398.0': + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/signature-v4': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.8.1 - '@esbuild/linux-arm@0.25.3': - optional: true + '@aws-sdk/middleware-ssec@3.775.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@esbuild/linux-ia32@0.25.3': - optional: true + '@aws-sdk/middleware-user-agent@3.398.0': + dependencies: + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@esbuild/linux-loong64@0.25.3': - optional: true + '@aws-sdk/middleware-user-agent@3.799.0': + dependencies: + '@aws-sdk/core': 3.799.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-endpoints': 3.787.0 + '@smithy/core': 3.3.1 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@esbuild/linux-mips64el@0.25.3': - optional: true + '@aws-sdk/nested-clients@3.803.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/middleware-host-header': 3.775.0 + '@aws-sdk/middleware-logger': 3.775.0 + '@aws-sdk/middleware-recursion-detection': 3.775.0 + '@aws-sdk/middleware-user-agent': 3.799.0 + '@aws-sdk/region-config-resolver': 3.775.0 + '@aws-sdk/types': 3.775.0 + '@aws-sdk/util-endpoints': 3.787.0 + '@aws-sdk/util-user-agent-browser': 3.775.0 + '@aws-sdk/util-user-agent-node': 3.799.0 + '@smithy/config-resolver': 4.1.0 + '@smithy/core': 3.3.1 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.2 + '@smithy/middleware-retry': 4.1.3 + '@smithy/middleware-serde': 4.0.3 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.10 + '@smithy/util-defaults-mode-node': 4.0.10 + '@smithy/util-endpoints': 3.0.2 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@esbuild/linux-ppc64@0.25.3': - optional: true + '@aws-sdk/region-config-resolver@3.775.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/node-config-provider': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 - '@esbuild/linux-riscv64@0.25.3': - optional: true + '@aws-sdk/signature-v4-multi-region@3.803.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.799.0 + '@aws-sdk/types': 3.775.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/signature-v4': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@esbuild/linux-s390x@0.25.3': - optional: true + '@aws-sdk/token-providers@3.398.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@esbuild/linux-x64@0.25.3': - optional: true + '@aws-sdk/token-providers@3.803.0': + dependencies: + '@aws-sdk/nested-clients': 3.803.0 + '@aws-sdk/types': 3.775.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@esbuild/netbsd-arm64@0.25.3': - optional: true + '@aws-sdk/types@3.398.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@esbuild/netbsd-x64@0.25.3': - optional: true + '@aws-sdk/types@3.775.0': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@esbuild/openbsd-arm64@0.25.3': - optional: true + '@aws-sdk/util-arn-parser@3.723.0': + dependencies: + tslib: 2.8.1 - '@esbuild/openbsd-x64@0.25.3': - optional: true + '@aws-sdk/util-endpoints@3.398.0': + dependencies: + '@aws-sdk/types': 3.398.0 + tslib: 2.8.1 - '@esbuild/sunos-x64@0.25.3': - optional: true + '@aws-sdk/util-endpoints@3.787.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/types': 4.2.0 + '@smithy/util-endpoints': 3.0.2 + tslib: 2.8.1 - '@esbuild/win32-arm64@0.25.3': - optional: true + '@aws-sdk/util-locate-window@3.723.0': + dependencies: + tslib: 2.8.1 - '@esbuild/win32-ia32@0.25.3': - optional: true + '@aws-sdk/util-user-agent-browser@3.398.0': + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 + bowser: 2.11.0 + tslib: 2.8.1 - '@esbuild/win32-x64@0.25.3': - optional: true + '@aws-sdk/util-user-agent-browser@3.775.0': + dependencies: + '@aws-sdk/types': 3.775.0 + '@smithy/types': 4.2.0 + bowser: 2.11.0 + tslib: 2.8.1 - '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': + '@aws-sdk/util-user-agent-node@3.398.0': dependencies: - eslint: 9.26.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 + '@aws-sdk/types': 3.398.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@eslint-community/regexpp@4.12.1': {} + '@aws-sdk/util-user-agent-node@3.799.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.799.0 + '@aws-sdk/types': 3.775.0 + '@smithy/node-config-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@eslint/compat@1.2.9(eslint@9.26.0(jiti@2.4.2))': - optionalDependencies: - eslint: 9.26.0(jiti@2.4.2) + '@aws-sdk/util-utf8-browser@3.259.0': + dependencies: + tslib: 2.8.1 - '@eslint/config-array@0.20.0': + '@aws-sdk/xml-builder@3.310.0': dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + tslib: 2.8.1 - '@eslint/config-helpers@0.2.2': {} + '@aws-sdk/xml-builder@3.775.0': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@eslint/core@0.13.0': + '@babel/code-frame@7.27.1': dependencies: - '@types/json-schema': 7.0.15 + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 - '@eslint/eslintrc@3.3.1': + '@babel/compat-data@7.27.1': {} + + '@babel/core@7.27.1': dependencies: - ajv: 6.12.6 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.26.0': {} - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.2.8': + '@babel/generator@7.27.1': dependencies: - '@eslint/core': 0.13.0 - levn: 0.4.1 - - '@fastify/busboy@2.1.1': {} + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 - '@floating-ui/core@1.7.0': + '@babel/helper-compilation-targets@7.27.1': dependencies: - '@floating-ui/utils': 0.2.9 + '@babel/compat-data': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 - '@floating-ui/dom@1.7.0': + '@babel/helper-module-imports@7.27.1': dependencies: - '@floating-ui/core': 1.7.0 - '@floating-ui/utils': 0.2.9 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color - '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': dependencies: - '@floating-ui/dom': 1.7.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color - '@floating-ui/utils@0.2.9': {} + '@babel/helper-string-parser@7.27.1': {} - '@formatjs/ecma402-abstract@2.3.4': - dependencies: - '@formatjs/fast-memoize': 2.2.7 - '@formatjs/intl-localematcher': 0.6.1 - decimal.js: 10.5.0 - tslib: 2.8.1 + '@babel/helper-validator-identifier@7.27.1': {} - '@formatjs/fast-memoize@2.2.7': - dependencies: - tslib: 2.8.1 + '@babel/helper-validator-option@7.27.1': {} - '@formatjs/icu-messageformat-parser@2.11.2': + '@babel/helpers@7.27.1': dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/icu-skeleton-parser': 1.8.14 - tslib: 2.8.1 + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 - '@formatjs/icu-skeleton-parser@1.8.14': + '@babel/parser@7.27.1': dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - tslib: 2.8.1 + '@babel/types': 7.27.1 - '@formatjs/intl-localematcher@0.5.10': - dependencies: - tslib: 2.8.1 + '@babel/runtime@7.27.1': {} - '@formatjs/intl-localematcher@0.6.1': + '@babel/template@7.27.1': dependencies: - tslib: 2.8.1 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 - '@heroicons/react@2.2.0(react@19.1.0)': + '@babel/traverse@7.27.1': dependencies: - react: 19.1.0 - - '@humanfs/core@0.19.1': {} + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - '@humanfs/node@0.16.6': + '@babel/types@7.27.1': dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 - '@humanwhocodes/retry@0.4.2': {} + '@cloudflare/kv-asset-handler@0.4.0': + dependencies: + mime: 3.0.0 - '@img/sharp-darwin-arm64@0.34.1': + '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250428.0)': + dependencies: + unenv: 2.0.0-rc.15 optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.1.0 - optional: true + workerd: 1.20250428.0 - '@img/sharp-darwin-x64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.1.0 + '@cloudflare/workerd-darwin-64@1.20250428.0': optional: true - '@img/sharp-libvips-darwin-arm64@1.1.0': + '@cloudflare/workerd-darwin-arm64@1.20250428.0': optional: true - '@img/sharp-libvips-darwin-x64@1.1.0': + '@cloudflare/workerd-linux-64@1.20250428.0': optional: true - '@img/sharp-libvips-linux-arm64@1.1.0': + '@cloudflare/workerd-linux-arm64@1.20250428.0': optional: true - '@img/sharp-libvips-linux-arm@1.1.0': + '@cloudflare/workerd-windows-64@1.20250428.0': optional: true - '@img/sharp-libvips-linux-ppc64@1.1.0': - optional: true + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 - '@img/sharp-libvips-linux-s390x@1.1.0': + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + + '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@dotenvx/dotenvx@1.31.0': + dependencies: + commander: 11.1.0 + dotenv: 16.5.0 + eciesjs: 0.4.14 + execa: 5.1.1 + fdir: 6.4.4(picomatch@4.0.2) + ignore: 5.3.2 + object-treeify: 1.1.33 + picomatch: 4.0.2 + which: 4.0.0 + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@ecies/ciphers@0.2.3(@noble/ciphers@1.3.0)': + dependencies: + '@noble/ciphers': 1.3.0 + + '@emnapi/core@1.4.3': + dependencies: + '@emnapi/wasi-threads': 1.0.2 + tslib: 2.8.1 optional: true - '@img/sharp-libvips-linux-x64@1.1.0': + '@emnapi/runtime@1.4.3': + dependencies: + tslib: 2.8.1 optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + '@emnapi/wasi-threads@1.0.2': + dependencies: + tslib: 2.8.1 optional: true - '@img/sharp-libvips-linuxmusl-x64@1.1.0': + '@esbuild/aix-ppc64@0.25.2': optional: true - '@img/sharp-linux-arm64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.1.0 + '@esbuild/aix-ppc64@0.25.3': optional: true - '@img/sharp-linux-arm@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.1.0 + '@esbuild/android-arm64@0.19.2': optional: true - '@img/sharp-linux-s390x@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.1.0 + '@esbuild/android-arm64@0.25.2': optional: true - '@img/sharp-linux-x64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.1.0 + '@esbuild/android-arm64@0.25.3': optional: true - '@img/sharp-linuxmusl-arm64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + '@esbuild/android-arm@0.19.2': optional: true - '@img/sharp-linuxmusl-x64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + '@esbuild/android-arm@0.25.2': optional: true - '@img/sharp-wasm32@0.34.1': - dependencies: - '@emnapi/runtime': 1.4.3 + '@esbuild/android-arm@0.25.3': optional: true - '@img/sharp-win32-ia32@0.34.1': + '@esbuild/android-x64@0.19.2': optional: true - '@img/sharp-win32-x64@0.34.1': + '@esbuild/android-x64@0.25.2': optional: true - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + '@esbuild/android-x64@0.25.3': + optional: true - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@esbuild/darwin-arm64@0.19.2': + optional: true - '@jridgewell/resolve-uri@3.1.2': {} + '@esbuild/darwin-arm64@0.25.2': + optional: true - '@jridgewell/set-array@1.2.1': {} + '@esbuild/darwin-arm64@0.25.3': + optional: true - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@esbuild/darwin-x64@0.19.2': + optional: true - '@jridgewell/sourcemap-codec@1.5.0': {} + '@esbuild/darwin-x64@0.25.2': + optional: true - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@esbuild/darwin-x64@0.25.3': + optional: true - '@keyv/serialize@1.0.3': - dependencies: - buffer: 6.0.3 + '@esbuild/freebsd-arm64@0.19.2': + optional: true - '@lit-labs/ssr-dom-shim@1.3.0': {} + '@esbuild/freebsd-arm64@0.25.2': + optional: true - '@lit/react@1.0.7(@types/react@19.1.2)': - dependencies: - '@types/react': 19.1.2 + '@esbuild/freebsd-arm64@0.25.3': + optional: true - '@lit/reactive-element@2.1.0': - dependencies: - '@lit-labs/ssr-dom-shim': 1.3.0 + '@esbuild/freebsd-x64@0.19.2': + optional: true - '@mdx-js/mdx@3.1.0(acorn@8.14.1)': - dependencies: - '@types/estree': 1.0.7 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdx': 2.0.13 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.6 - markdown-extensions: 2.0.0 - recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.14.1) - recma-stringify: 1.0.0 - rehype-recma: 1.0.0 - remark-mdx: 3.1.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - source-map: 0.7.4 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - transitivePeerDependencies: - - acorn - - supports-color + '@esbuild/freebsd-x64@0.25.2': + optional: true - '@modelcontextprotocol/sdk@1.11.0': - dependencies: - content-type: 1.0.5 - cors: 2.8.5 - cross-spawn: 7.0.6 - eventsource: 3.0.6 - express: 5.1.0 - express-rate-limit: 7.5.0(express@5.1.0) - pkce-challenge: 5.0.0 - raw-body: 3.0.0 - zod: 3.24.3 - zod-to-json-schema: 3.24.5(zod@3.24.3) - transitivePeerDependencies: - - supports-color + '@esbuild/freebsd-x64@0.25.3': + optional: true - '@napi-rs/wasm-runtime@0.2.9': - dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.3 - '@tybys/wasm-util': 0.9.0 + '@esbuild/linux-arm64@0.19.2': optional: true - '@next/env@15.3.1': {} + '@esbuild/linux-arm64@0.25.2': + optional: true - '@next/eslint-plugin-next@15.3.1': - dependencies: - fast-glob: 3.3.1 + '@esbuild/linux-arm64@0.25.3': + optional: true - '@next/swc-darwin-arm64@15.3.1': + '@esbuild/linux-arm@0.19.2': optional: true - '@next/swc-darwin-x64@15.3.1': + '@esbuild/linux-arm@0.25.2': optional: true - '@next/swc-linux-arm64-gnu@15.3.1': + '@esbuild/linux-arm@0.25.3': optional: true - '@next/swc-linux-arm64-musl@15.3.1': + '@esbuild/linux-ia32@0.19.2': optional: true - '@next/swc-linux-x64-gnu@15.3.1': + '@esbuild/linux-ia32@0.25.2': optional: true - '@next/swc-linux-x64-musl@15.3.1': + '@esbuild/linux-ia32@0.25.3': optional: true - '@next/swc-win32-arm64-msvc@15.3.1': + '@esbuild/linux-loong64@0.19.2': optional: true - '@next/swc-win32-x64-msvc@15.3.1': + '@esbuild/linux-loong64@0.25.2': optional: true - '@noble/hashes@1.8.0': {} + '@esbuild/linux-loong64@0.25.3': + optional: true - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + '@esbuild/linux-mips64el@0.19.2': + optional: true - '@nodelib/fs.stat@2.0.5': {} + '@esbuild/linux-mips64el@0.25.2': + optional: true - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + '@esbuild/linux-mips64el@0.25.3': + optional: true - '@nodevu/core@0.3.0': - dependencies: - '@nodevu/parsefiles': 0.0.3 - luxon: 3.6.1 - semver: 7.7.1 + '@esbuild/linux-ppc64@0.19.2': + optional: true - '@nodevu/parsefiles@0.0.3': {} + '@esbuild/linux-ppc64@0.25.2': + optional: true - '@nolyfill/is-core-module@1.0.39': {} + '@esbuild/linux-ppc64@0.25.3': + optional: true - '@npmcli/config@8.3.4': - dependencies: - '@npmcli/map-workspaces': 3.0.6 - '@npmcli/package-json': 5.2.1 - ci-info: 4.2.0 - ini: 4.1.3 - nopt: 7.2.1 - proc-log: 4.2.0 - semver: 7.7.1 - walk-up-path: 3.0.1 - transitivePeerDependencies: - - bluebird + '@esbuild/linux-riscv64@0.19.2': + optional: true - '@npmcli/git@5.0.8': - dependencies: - '@npmcli/promise-spawn': 7.0.2 - ini: 4.1.3 - lru-cache: 10.4.3 - npm-pick-manifest: 9.1.0 - proc-log: 4.2.0 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.7.1 - which: 4.0.0 - transitivePeerDependencies: - - bluebird + '@esbuild/linux-riscv64@0.25.2': + optional: true - '@npmcli/map-workspaces@3.0.6': - dependencies: - '@npmcli/name-from-folder': 2.0.0 - glob: 10.4.5 - minimatch: 9.0.5 - read-package-json-fast: 3.0.2 + '@esbuild/linux-riscv64@0.25.3': + optional: true - '@npmcli/name-from-folder@2.0.0': {} + '@esbuild/linux-s390x@0.19.2': + optional: true - '@npmcli/package-json@5.2.1': - dependencies: - '@npmcli/git': 5.0.8 - glob: 10.4.5 - hosted-git-info: 7.0.2 - json-parse-even-better-errors: 3.0.2 - normalize-package-data: 6.0.2 - proc-log: 4.2.0 - semver: 7.7.1 - transitivePeerDependencies: - - bluebird + '@esbuild/linux-s390x@0.25.2': + optional: true - '@npmcli/promise-spawn@7.0.2': - dependencies: - which: 4.0.0 + '@esbuild/linux-s390x@0.25.3': + optional: true - '@opentelemetry/api-logs@0.200.0': - dependencies: - '@opentelemetry/api': 1.9.0 + '@esbuild/linux-x64@0.19.2': + optional: true - '@opentelemetry/api@1.9.0': {} + '@esbuild/linux-x64@0.25.2': + optional: true - '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.28.0 + '@esbuild/linux-x64@0.25.3': + optional: true - '@opentelemetry/core@2.0.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.32.0 + '@esbuild/netbsd-arm64@0.25.2': + optional: true - '@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.200.0 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.13.1 - require-in-the-middle: 7.5.2 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color + '@esbuild/netbsd-arm64@0.25.3': + optional: true - '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.28.0 + '@esbuild/netbsd-x64@0.19.2': + optional: true - '@opentelemetry/resources@2.0.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.32.0 + '@esbuild/netbsd-x64@0.25.2': + optional: true - '@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.200.0 - '@opentelemetry/core': 2.0.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.0(@opentelemetry/api@1.9.0) + '@esbuild/netbsd-x64@0.25.3': + optional: true - '@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@esbuild/openbsd-arm64@0.25.2': + optional: true - '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.28.0 + '@esbuild/openbsd-arm64@0.25.3': + optional: true - '@opentelemetry/semantic-conventions@1.28.0': {} + '@esbuild/openbsd-x64@0.19.2': + optional: true - '@opentelemetry/semantic-conventions@1.32.0': {} + '@esbuild/openbsd-x64@0.25.2': + optional: true - '@orama/core@0.1.5': - dependencies: - '@orama/cuid2': 2.2.3 - dedent: 1.5.3 - zod: 3.24.3 - zod-to-json-schema: 3.24.5(zod@3.24.3) - transitivePeerDependencies: - - babel-plugin-macros + '@esbuild/openbsd-x64@0.25.3': + optional: true - '@orama/cuid2@2.2.3': + '@esbuild/sunos-x64@0.19.2': + optional: true + + '@esbuild/sunos-x64@0.25.2': + optional: true + + '@esbuild/sunos-x64@0.25.3': + optional: true + + '@esbuild/win32-arm64@0.19.2': + optional: true + + '@esbuild/win32-arm64@0.25.2': + optional: true + + '@esbuild/win32-arm64@0.25.3': + optional: true + + '@esbuild/win32-ia32@0.19.2': + optional: true + + '@esbuild/win32-ia32@0.25.2': + optional: true + + '@esbuild/win32-ia32@0.25.3': + optional: true + + '@esbuild/win32-x64@0.19.2': + optional: true + + '@esbuild/win32-x64@0.25.2': + optional: true + + '@esbuild/win32-x64@0.25.3': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': dependencies: - '@noble/hashes': 1.8.0 + eslint: 9.26.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 - '@orama/highlight@0.1.9': {} + '@eslint-community/regexpp@4.12.1': {} - '@orama/orama@3.1.6': {} + '@eslint/compat@1.2.9(eslint@9.26.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.26.0(jiti@2.4.2) - '@orama/react-components@0.7.0(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@eslint/config-array@0.20.0': dependencies: - '@orama/wc-components': 0.7.0 - '@stencil/react-output-target': 0.8.2(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 transitivePeerDependencies: - - '@stencil/core' - - '@types/react' - - babel-plugin-macros + - supports-color - '@orama/switch@3.1.6(@orama/core@0.1.5)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4)': + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.13.0': dependencies: - '@orama/core': 0.1.5 - '@orama/orama': 3.1.6 - '@oramacloud/client': 2.1.4 + '@types/json-schema': 7.0.15 - '@orama/wc-components@0.7.0': + '@eslint/eslintrc@3.3.1': dependencies: - '@orama/core': 0.1.5 - '@orama/highlight': 0.1.9 - '@orama/orama': 3.1.6 - '@orama/switch': 3.1.6(@orama/core@0.1.5)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4) - '@oramacloud/client': 2.1.4 - '@phosphor-icons/webcomponents': 2.1.5 - '@stencil/core': 4.27.0 - '@stencil/store': 2.1.3(@stencil/core@4.27.0) - dompurify: 3.2.5 - highlight.js: 11.11.1 - markdown-it: 14.1.0 - marked: 13.0.3 - marked-highlight: 2.2.1(marked@13.0.3) - shiki: 1.29.2 - sse.js: 2.6.0 + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 transitivePeerDependencies: - - babel-plugin-macros + - supports-color - '@oramacloud/client@2.1.4': - dependencies: - '@orama/cuid2': 2.2.3 - '@orama/orama': 3.1.6 - lodash: 4.17.21 + '@eslint/js@9.26.0': {} - '@phosphor-icons/webcomponents@2.1.5': + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': dependencies: - lit: 3.3.0 + '@eslint/core': 0.13.0 + levn: 0.4.1 - '@pkgjs/parseargs@0.11.0': - optional: true + '@fastify/busboy@2.1.1': {} - '@pkgr/core@0.2.4': {} + '@flarelabs-net/wrangler-build-time-fs-assets-polyfilling@0.0.0': {} - '@radix-ui/number@1.1.1': {} + '@floating-ui/core@1.7.0': + dependencies: + '@floating-ui/utils': 0.2.9 - '@radix-ui/primitive@1.1.2': {} + '@floating-ui/dom@1.7.0': + dependencies: + '@floating-ui/core': 1.7.0 + '@floating-ui/utils': 0.2.9 - '@radix-ui/react-arrow@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@floating-ui/dom': 1.7.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - '@radix-ui/react-collection@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/utils@0.2.9': {} + + '@formatjs/ecma402-abstract@2.3.4': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/intl-localematcher': 0.6.1 + decimal.js: 10.5.0 + tslib: 2.8.1 - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.2)(react@19.1.0)': + '@formatjs/fast-memoize@2.2.7': dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + tslib: 2.8.1 - '@radix-ui/react-context@1.1.2(@types/react@19.1.2)(react@19.1.0)': + '@formatjs/icu-messageformat-parser@2.11.2': dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/icu-skeleton-parser': 1.8.14 + tslib: 2.8.1 - '@radix-ui/react-dialog@1.1.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@formatjs/icu-skeleton-parser@1.8.14': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@formatjs/ecma402-abstract': 2.3.4 + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.5.10': + dependencies: + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.6.1': + dependencies: + tslib: 2.8.1 + + '@heroicons/react@2.2.0(react@19.1.0)': + dependencies: + react: 19.1.0 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.1.0 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.1.0 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-arm@1.1.0': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.1.0': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.1.0': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.1.0': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.1.0 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-arm@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.1.0 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-s390x@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.1.0 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.1.0 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.4.3 + optional: true + + '@img/sharp-wasm32@0.34.1': + dependencies: + '@emnapi/runtime': 1.4.3 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-ia32@0.34.1': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.34.1': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@keyv/serialize@1.0.3': + dependencies: + buffer: 6.0.3 + + '@lit-labs/ssr-dom-shim@1.3.0': {} + + '@lit/react@1.0.7(@types/react@19.1.2)': + dependencies: + '@types/react': 19.1.2 + + '@lit/reactive-element@2.1.0': + dependencies: + '@lit-labs/ssr-dom-shim': 1.3.0 + + '@mdx-js/mdx@3.1.0(acorn@8.14.1)': + dependencies: + '@types/estree': 1.0.7 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.0(acorn@8.14.1) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.4 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - acorn + - supports-color + + '@modelcontextprotocol/sdk@1.11.0': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.6 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.24.3 + zod-to-json-schema: 3.24.5(zod@3.24.3) + transitivePeerDependencies: + - supports-color + + '@napi-rs/wasm-runtime@0.2.9': + dependencies: + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 + '@tybys/wasm-util': 0.9.0 + optional: true + + '@next/env@15.3.1': {} + + '@next/eslint-plugin-next@15.3.1': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@15.3.1': + optional: true + + '@next/swc-darwin-x64@15.3.1': + optional: true + + '@next/swc-linux-arm64-gnu@15.3.1': + optional: true + + '@next/swc-linux-arm64-musl@15.3.1': + optional: true + + '@next/swc-linux-x64-gnu@15.3.1': + optional: true + + '@next/swc-linux-x64-musl@15.3.1': + optional: true + + '@next/swc-win32-arm64-msvc@15.3.1': + optional: true + + '@next/swc-win32-x64-msvc@15.3.1': + optional: true + + '@noble/ciphers@1.3.0': {} + + '@noble/curves@1.9.0': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.8.0': {} + + '@node-minify/core@8.0.6': + dependencies: + '@node-minify/utils': 8.0.6 + glob: 9.3.5 + mkdirp: 1.0.4 + + '@node-minify/terser@8.0.6': + dependencies: + '@node-minify/utils': 8.0.6 + terser: 5.16.9 + + '@node-minify/utils@8.0.6': + dependencies: + gzip-size: 6.0.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@nodevu/core@0.3.0': + dependencies: + '@nodevu/parsefiles': 0.0.3 + luxon: 3.6.1 + semver: 7.7.1 + + '@nodevu/parsefiles@0.0.3': {} + + '@nolyfill/is-core-module@1.0.39': {} + + '@npmcli/config@8.3.4': + dependencies: + '@npmcli/map-workspaces': 3.0.6 + '@npmcli/package-json': 5.2.1 + ci-info: 4.2.0 + ini: 4.1.3 + nopt: 7.2.1 + proc-log: 4.2.0 + semver: 7.7.1 + walk-up-path: 3.0.1 + transitivePeerDependencies: + - bluebird + + '@npmcli/git@5.0.8': + dependencies: + '@npmcli/promise-spawn': 7.0.2 + ini: 4.1.3 + lru-cache: 10.4.3 + npm-pick-manifest: 9.1.0 + proc-log: 4.2.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.7.1 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + + '@npmcli/map-workspaces@3.0.6': + dependencies: + '@npmcli/name-from-folder': 2.0.0 + glob: 10.4.5 + minimatch: 9.0.5 + read-package-json-fast: 3.0.2 + + '@npmcli/name-from-folder@2.0.0': {} + + '@npmcli/package-json@5.2.1': + dependencies: + '@npmcli/git': 5.0.8 + glob: 10.4.5 + hosted-git-info: 7.0.2 + json-parse-even-better-errors: 3.0.2 + normalize-package-data: 6.0.2 + proc-log: 4.2.0 + semver: 7.7.1 + transitivePeerDependencies: + - bluebird + + '@npmcli/promise-spawn@7.0.2': + dependencies: + which: 4.0.0 + + '@opennextjs/aws@3.5.7': + dependencies: + '@ast-grep/napi': 0.35.0 + '@aws-sdk/client-cloudfront': 3.398.0 + '@aws-sdk/client-dynamodb': 3.803.0 + '@aws-sdk/client-lambda': 3.803.0 + '@aws-sdk/client-s3': 3.803.0 + '@aws-sdk/client-sqs': 3.803.0 + '@node-minify/core': 8.0.6 + '@node-minify/terser': 8.0.6 + '@tsconfig/node18': 1.0.3 + aws4fetch: 1.0.20 + chalk: 5.4.1 + esbuild: 0.19.2 + express: 5.0.1 + path-to-regexp: 6.3.0 + urlpattern-polyfill: 10.0.0 + yaml: 2.7.1 + transitivePeerDependencies: + - aws-crt + - supports-color + + '@opennextjs/cloudflare@1.0.0-beta.4(wrangler@4.14.1)': + dependencies: + '@dotenvx/dotenvx': 1.31.0 + '@opennextjs/aws': 3.5.7 + enquirer: 2.4.1 + glob: 11.0.2 + ts-tqdm: 0.8.6 + wrangler: 4.14.1 + transitivePeerDependencies: + - aws-crt + - supports-color + + '@opentelemetry/api-logs@0.200.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/core@2.0.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.32.0 + + '@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.200.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.13.1 + require-in-the-middle: 7.5.2 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/resources@2.0.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.32.0 + + '@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.200.0 + '@opentelemetry/core': 2.0.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/semantic-conventions@1.28.0': {} + + '@opentelemetry/semantic-conventions@1.32.0': {} + + '@orama/core@0.1.5': + dependencies: + '@orama/cuid2': 2.2.3 + dedent: 1.5.3 + zod: 3.24.3 + zod-to-json-schema: 3.24.5(zod@3.24.3) + transitivePeerDependencies: + - babel-plugin-macros + + '@orama/cuid2@2.2.3': + dependencies: + '@noble/hashes': 1.8.0 + + '@orama/highlight@0.1.9': {} + + '@orama/orama@3.1.6': {} + + '@orama/react-components@0.7.0(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@orama/wc-components': 0.7.0 + '@stencil/react-output-target': 0.8.2(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + transitivePeerDependencies: + - '@stencil/core' + - '@types/react' + - babel-plugin-macros + + '@orama/switch@3.1.6(@orama/core@0.1.5)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4)': + dependencies: + '@orama/core': 0.1.5 + '@orama/orama': 3.1.6 + '@oramacloud/client': 2.1.4 + + '@orama/wc-components@0.7.0': + dependencies: + '@orama/core': 0.1.5 + '@orama/highlight': 0.1.9 + '@orama/orama': 3.1.6 + '@orama/switch': 3.1.6(@orama/core@0.1.5)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4) + '@oramacloud/client': 2.1.4 + '@phosphor-icons/webcomponents': 2.1.5 + '@stencil/core': 4.27.0 + '@stencil/store': 2.1.3(@stencil/core@4.27.0) + dompurify: 3.2.5 + highlight.js: 11.11.1 + markdown-it: 14.1.0 + marked: 13.0.3 + marked-highlight: 2.2.1(marked@13.0.3) + shiki: 1.29.2 + sse.js: 2.6.0 + transitivePeerDependencies: + - babel-plugin-macros + + '@oramacloud/client@2.1.4': + dependencies: + '@orama/cuid2': 2.2.3 + '@orama/orama': 3.1.6 + lodash: 4.17.21 + + '@phosphor-icons/webcomponents@2.1.5': + dependencies: + lit: 3.3.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.2.4': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-arrow@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-collection@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-context@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dialog@1.1.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + aria-hidden: 1.2.4 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-direction@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dismissable-layer@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dropdown-menu@2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-menu': 2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-focus-scope@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-id@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-label@2.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-menu@2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + aria-hidden: 1.2.4 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-popper@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-portal@1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-presence@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-primitive@2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-roving-focus@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-select@2.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + aria-hidden: 1.2.4 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-separator@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-slot@1.2.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-tabs@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-toast@1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-tooltip@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - aria-hidden: 1.2.4 + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-visually-hidden@1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-direction@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/rect@1.1.1': {} + + '@reporters/github@1.7.2': + dependencies: + '@actions/core': 1.11.1 + stack-utils: 2.0.6 + + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.11.0': {} + + '@schummar/icu-type-parser@1.21.5': {} + + '@shikijs/core@1.29.2': + dependencies: + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/core@3.3.0': + dependencies: + '@shikijs/types': 3.3.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 2.3.0 + + '@shikijs/engine-javascript@3.3.0': + dependencies: + '@shikijs/types': 3.3.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.3 + + '@shikijs/engine-oniguruma@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/engine-oniguruma@3.3.0': + dependencies: + '@shikijs/types': 3.3.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/langs@3.3.0': + dependencies: + '@shikijs/types': 3.3.0 + + '@shikijs/themes@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/themes@3.3.0': + dependencies: + '@shikijs/types': 3.3.0 + + '@shikijs/types@1.29.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/types@3.3.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@smithy/abort-controller@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/abort-controller@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader-native@4.0.0': + dependencies: + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader@5.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/config-resolver@2.2.0': + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.8.1 + + '@smithy/config-resolver@4.1.0': + dependencies: + '@smithy/node-config-provider': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 + + '@smithy/core@3.3.1': + dependencies: + '@smithy/middleware-serde': 4.0.3 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-stream': 4.2.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@2.3.0': + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.0.2': + dependencies: + '@smithy/node-config-provider': 4.0.2 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.0.2': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.2.0 + '@smithy/util-hex-encoding': 4.0.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.0.2': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.1.0': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.0.2': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.0.2': + dependencies: + '@smithy/eventstream-codec': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@2.5.0': + dependencies: + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.0.2': + dependencies: + '@smithy/protocol-http': 5.1.0 + '@smithy/querystring-builder': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/hash-blob-browser@4.0.2': + dependencies: + '@smithy/chunked-blob-reader': 5.0.0 + '@smithy/chunked-blob-reader-native': 4.0.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/hash-node@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/hash-stream-node@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/md5-js@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/middleware-content-length@2.2.0': + dependencies: + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.0.2': + dependencies: + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@2.5.1': + dependencies: + '@smithy/middleware-serde': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.1.2': + dependencies: + '@smithy/core': 3.3.1 + '@smithy/middleware-serde': 4.0.3 + '@smithy/node-config-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 + + '@smithy/middleware-retry@2.3.1': + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/middleware-retry@4.1.3': + dependencies: + '@smithy/node-config-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/service-error-classification': 4.0.3 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/middleware-serde@2.3.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.0.3': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@2.3.0': + dependencies: + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.0.2': + dependencies: + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@2.5.0': + dependencies: + '@smithy/abort-controller': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.0.4': + dependencies: + '@smithy/abort-controller': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/querystring-builder': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/property-provider@2.2.0': dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@radix-ui/react-dismissable-layer@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/property-provider@4.0.2': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@radix-ui/react-dropdown-menu@2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/protocol-http@2.0.5': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-menu': 2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.2)(react@19.1.0)': + '@smithy/protocol-http@3.3.0': dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@radix-ui/react-focus-scope@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/protocol-http@5.1.0': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@radix-ui/react-id@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@smithy/querystring-builder@2.2.0': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 2.12.0 + '@smithy/util-uri-escape': 2.2.0 + tslib: 2.8.1 - '@radix-ui/react-label@2.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/querystring-builder@4.0.2': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 4.2.0 + '@smithy/util-uri-escape': 4.0.0 + tslib: 2.8.1 - '@radix-ui/react-menu@2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/querystring-parser@2.2.0': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - aria-hidden: 1.2.4 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@radix-ui/react-popper@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/querystring-parser@4.0.2': dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/rect': 1.1.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@radix-ui/react-portal@1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/service-error-classification@2.1.5': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 2.12.0 - '@radix-ui/react-presence@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/service-error-classification@4.0.3': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 4.2.0 - '@radix-ui/react-primitive@2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/shared-ini-file-loader@2.4.0': dependencies: - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@radix-ui/react-roving-focus@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/shared-ini-file-loader@4.0.2': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@radix-ui/react-select@2.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/signature-v4@2.3.0': dependencies: - '@radix-ui/number': 1.1.1 - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - aria-hidden: 1.2.4 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/is-array-buffer': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-uri-escape': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 - '@radix-ui/react-separator@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/signature-v4@5.1.0': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 - '@radix-ui/react-slot@1.2.0(@types/react@19.1.2)(react@19.1.0)': + '@smithy/smithy-client@2.5.1': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-stack': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.8.1 - '@radix-ui/react-tabs@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/smithy-client@4.2.2': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/core': 3.3.1 + '@smithy/middleware-endpoint': 4.1.2 + '@smithy/middleware-stack': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-stream': 4.2.0 + tslib: 2.8.1 - '@radix-ui/react-toast@1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/types@2.12.0': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + tslib: 2.8.1 - '@radix-ui/react-tooltip@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/types@4.2.0': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + tslib: 2.8.1 - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@smithy/url-parser@2.2.0': dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/querystring-parser': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.2)(react@19.1.0)': + '@smithy/url-parser@4.0.2': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/querystring-parser': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.2)(react@19.1.0)': + '@smithy/util-base64@2.3.0': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@smithy/util-base64@4.0.0': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@2.3.0': + dependencies: + tslib: 2.8.1 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@smithy/util-body-length-node@4.0.0': dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + tslib: 2.8.1 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@smithy/util-buffer-from@2.2.0': dependencies: - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@smithy/util-buffer-from@4.0.0': dependencies: - '@radix-ui/rect': 1.1.1 - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + '@smithy/is-array-buffer': 4.0.0 + tslib: 2.8.1 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@smithy/util-config-provider@2.3.0': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 + tslib: 2.8.1 - '@radix-ui/react-visually-hidden@1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@smithy/util-config-provider@4.0.0': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 + tslib: 2.8.1 - '@radix-ui/rect@1.1.1': {} + '@smithy/util-defaults-mode-browser@2.2.1': + dependencies: + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + bowser: 2.11.0 + tslib: 2.8.1 - '@reporters/github@1.7.2': + '@smithy/util-defaults-mode-browser@4.0.10': dependencies: - '@actions/core': 1.11.1 - stack-utils: 2.0.6 + '@smithy/property-provider': 4.0.2 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + bowser: 2.11.0 + tslib: 2.8.1 - '@rtsao/scc@1.1.0': {} + '@smithy/util-defaults-mode-node@2.3.1': + dependencies: + '@smithy/config-resolver': 2.2.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@rushstack/eslint-patch@1.11.0': {} + '@smithy/util-defaults-mode-node@4.0.10': + dependencies: + '@smithy/config-resolver': 4.1.0 + '@smithy/credential-provider-imds': 4.0.2 + '@smithy/node-config-provider': 4.0.2 + '@smithy/property-provider': 4.0.2 + '@smithy/smithy-client': 4.2.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@schummar/icu-type-parser@1.21.5': {} + '@smithy/util-endpoints@3.0.2': + dependencies: + '@smithy/node-config-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@shikijs/core@1.29.2': + '@smithy/util-hex-encoding@2.2.0': dependencies: - '@shikijs/engine-javascript': 1.29.2 - '@shikijs/engine-oniguruma': 1.29.2 - '@shikijs/types': 1.29.2 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.5 + tslib: 2.8.1 - '@shikijs/core@3.3.0': + '@smithy/util-hex-encoding@4.0.0': dependencies: - '@shikijs/types': 3.3.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.5 + tslib: 2.8.1 - '@shikijs/engine-javascript@1.29.2': + '@smithy/util-middleware@2.2.0': dependencies: - '@shikijs/types': 1.29.2 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 2.3.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@shikijs/engine-javascript@3.3.0': + '@smithy/util-middleware@4.0.2': dependencies: - '@shikijs/types': 3.3.0 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.3 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@shikijs/engine-oniguruma@1.29.2': + '@smithy/util-retry@2.2.0': dependencies: - '@shikijs/types': 1.29.2 - '@shikijs/vscode-textmate': 10.0.2 + '@smithy/service-error-classification': 2.1.5 + '@smithy/types': 2.12.0 + tslib: 2.8.1 - '@shikijs/engine-oniguruma@3.3.0': + '@smithy/util-retry@4.0.3': dependencies: - '@shikijs/types': 3.3.0 - '@shikijs/vscode-textmate': 10.0.2 + '@smithy/service-error-classification': 4.0.3 + '@smithy/types': 4.2.0 + tslib: 2.8.1 - '@shikijs/langs@1.29.2': + '@smithy/util-stream@2.2.0': dependencies: - '@shikijs/types': 1.29.2 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 - '@shikijs/langs@3.3.0': + '@smithy/util-stream@4.2.0': dependencies: - '@shikijs/types': 3.3.0 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/types': 4.2.0 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 - '@shikijs/themes@1.29.2': + '@smithy/util-uri-escape@2.2.0': dependencies: - '@shikijs/types': 1.29.2 + tslib: 2.8.1 - '@shikijs/themes@3.3.0': + '@smithy/util-uri-escape@4.0.0': dependencies: - '@shikijs/types': 3.3.0 + tslib: 2.8.1 - '@shikijs/types@1.29.2': + '@smithy/util-utf8@2.3.0': dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 - '@shikijs/types@3.3.0': + '@smithy/util-utf8@4.0.0': dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@smithy/util-buffer-from': 4.0.0 + tslib: 2.8.1 - '@shikijs/vscode-textmate@10.0.2': {} + '@smithy/util-waiter@2.2.0': + dependencies: + '@smithy/abort-controller': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/util-waiter@4.0.3': + dependencies: + '@smithy/abort-controller': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 '@stencil/core@4.27.0': {} @@ -7996,6 +11341,8 @@ snapshots: mkdirp: 3.0.1 path-browserify: 1.0.1 + '@tsconfig/node18@1.0.3': {} + '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 @@ -8098,6 +11445,8 @@ snapshots: '@types/unist@3.0.3': {} + '@types/uuid@9.0.8': {} + '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -8382,6 +11731,10 @@ snapshots: dependencies: acorn: 8.14.1 + acorn-walk@8.3.2: {} + + acorn@8.14.0: {} + acorn@8.14.1: {} agent-base@7.1.3: {} @@ -8413,6 +11766,8 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-colors@4.1.3: {} + ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -8519,6 +11874,10 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + as-table@1.0.55: + dependencies: + printable-characters: 1.0.42 + assertion-error@2.0.1: {} ast-types-flow@0.0.8: {} @@ -8537,6 +11896,8 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 + aws4fetch@1.0.20: {} + axe-core@4.10.3: {} axobject-query@4.1.0: {} @@ -8555,6 +11916,8 @@ snapshots: binary-extensions@2.3.0: {} + blake3-wasm@2.1.5: {} + body-parser@2.2.0: dependencies: bytes: 3.1.2 @@ -8571,6 +11934,8 @@ snapshots: boolbase@1.0.0: {} + bowser@2.11.0: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -8734,6 +12099,8 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@11.1.0: {} + commander@13.1.0: {} commander@2.20.3: {} @@ -8765,6 +12132,8 @@ snapshots: cookie-signature@1.2.2: {} + cookie@0.7.1: {} + cookie@0.7.2: {} cors@2.8.5: @@ -8842,6 +12211,8 @@ snapshots: damerau-levenshtein@1.0.8: {} + data-uri-to-buffer@2.0.2: {} + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -8869,6 +12240,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.3.6: + dependencies: + ms: 2.1.2 + debug@4.4.0: dependencies: ms: 2.1.3 @@ -8903,6 +12278,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.4: {} + depd@2.0.0: {} dequal@2.0.3: {} @@ -8980,14 +12357,25 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + dotenv@16.5.0: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 + duplexer@0.1.2: {} + eastasianwidth@0.2.0: {} + eciesjs@0.4.14: + dependencies: + '@ecies/ciphers': 0.2.3(@noble/ciphers@1.3.0) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + ee-first@1.1.1: {} electron-to-chromium@1.5.149: {} @@ -9013,6 +12401,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + entities@2.2.0: {} entities@4.5.0: {} @@ -9150,6 +12543,59 @@ snapshots: transitivePeerDependencies: - supports-color + esbuild@0.19.2: + optionalDependencies: + '@esbuild/android-arm': 0.19.2 + '@esbuild/android-arm64': 0.19.2 + '@esbuild/android-x64': 0.19.2 + '@esbuild/darwin-arm64': 0.19.2 + '@esbuild/darwin-x64': 0.19.2 + '@esbuild/freebsd-arm64': 0.19.2 + '@esbuild/freebsd-x64': 0.19.2 + '@esbuild/linux-arm': 0.19.2 + '@esbuild/linux-arm64': 0.19.2 + '@esbuild/linux-ia32': 0.19.2 + '@esbuild/linux-loong64': 0.19.2 + '@esbuild/linux-mips64el': 0.19.2 + '@esbuild/linux-ppc64': 0.19.2 + '@esbuild/linux-riscv64': 0.19.2 + '@esbuild/linux-s390x': 0.19.2 + '@esbuild/linux-x64': 0.19.2 + '@esbuild/netbsd-x64': 0.19.2 + '@esbuild/openbsd-x64': 0.19.2 + '@esbuild/sunos-x64': 0.19.2 + '@esbuild/win32-arm64': 0.19.2 + '@esbuild/win32-ia32': 0.19.2 + '@esbuild/win32-x64': 0.19.2 + + esbuild@0.25.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.2 + '@esbuild/android-arm': 0.25.2 + '@esbuild/android-arm64': 0.25.2 + '@esbuild/android-x64': 0.25.2 + '@esbuild/darwin-arm64': 0.25.2 + '@esbuild/darwin-x64': 0.25.2 + '@esbuild/freebsd-arm64': 0.25.2 + '@esbuild/freebsd-x64': 0.25.2 + '@esbuild/linux-arm': 0.25.2 + '@esbuild/linux-arm64': 0.25.2 + '@esbuild/linux-ia32': 0.25.2 + '@esbuild/linux-loong64': 0.25.2 + '@esbuild/linux-mips64el': 0.25.2 + '@esbuild/linux-ppc64': 0.25.2 + '@esbuild/linux-riscv64': 0.25.2 + '@esbuild/linux-s390x': 0.25.2 + '@esbuild/linux-x64': 0.25.2 + '@esbuild/netbsd-arm64': 0.25.2 + '@esbuild/netbsd-x64': 0.25.2 + '@esbuild/openbsd-arm64': 0.25.2 + '@esbuild/openbsd-x64': 0.25.2 + '@esbuild/sunos-x64': 0.25.2 + '@esbuild/win32-arm64': 0.25.2 + '@esbuild/win32-ia32': 0.25.2 + '@esbuild/win32-x64': 0.25.2 + esbuild@0.25.3: optionalDependencies: '@esbuild/aix-ppc64': 0.25.3 @@ -9533,6 +12979,18 @@ snapshots: dependencies: eventsource-parser: 3.0.1 + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -9545,10 +13003,49 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + exit-hook@2.2.1: {} + express-rate-limit@7.5.0(express@5.1.0): dependencies: express: 5.1.0 + express@5.0.1: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.2.2 + debug: 4.3.6 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + methods: 1.1.2 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + router: 2.2.0 + safe-buffer: 5.2.1 + send: 1.2.0 + serve-static: 2.2.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + express@5.1.0: dependencies: accepts: 2.0.0 @@ -9581,6 +13078,8 @@ snapshots: transitivePeerDependencies: - supports-color + exsolve@1.0.5: {} + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -9613,6 +13112,14 @@ snapshots: fast-uri@3.0.6: {} + fast-xml-parser@4.2.5: + dependencies: + strnum: 1.1.2 + + fast-xml-parser@4.4.1: + dependencies: + strnum: 1.1.2 + fastest-levenshtein@1.0.16: {} fastq@1.19.1: @@ -9771,6 +13278,13 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-source@2.0.12: + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 + + get-stream@6.0.1: {} + get-stream@8.0.1: {} get-symbol-description@1.1.0: @@ -9822,6 +13336,13 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + glob@9.3.5: + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.11.1 + global-jsdom@26.0.0(jsdom@26.1.0): dependencies: jsdom: 26.1.0 @@ -9869,6 +13390,10 @@ snapshots: section-matter: 1.0.0 strip-bom-string: 1.0.0 + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -10062,6 +13587,8 @@ snapshots: transitivePeerDependencies: - supports-color + human-signals@2.1.0: {} + human-signals@5.0.0: {} husky@9.1.7: {} @@ -10262,6 +13789,8 @@ snapshots: dependencies: call-bound: 1.0.4 + is-stream@2.0.1: {} + is-stream@3.0.0: {} is-string@1.1.1: @@ -10835,6 +14364,8 @@ snapshots: merge2@1.4.1: {} + methods@1.1.2: {} + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.1.0 @@ -11123,12 +14654,33 @@ snapshots: dependencies: mime-db: 1.54.0 + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} min-indent@1.0.1: {} + miniflare@4.20250428.1: + dependencies: + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.14.0 + acorn-walk: 8.3.2 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + stoppable: 1.1.0 + undici: 5.29.0 + workerd: 1.20250428.0 + ws: 8.18.0 + youch: 3.3.4 + zod: 3.22.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + minimatch@10.0.1: dependencies: brace-expansion: 2.0.1 @@ -11137,22 +14689,38 @@ snapshots: dependencies: brace-expansion: 1.1.11 + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.1 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 minimist@1.2.8: {} + minipass@4.2.8: {} + minipass@7.1.2: {} + mkdirp@1.0.4: {} + mkdirp@3.0.1: {} + mnemonist@0.38.3: + dependencies: + obliterator: 1.6.1 + module-details-from-path@1.0.4: {} mri@1.2.0: {} + ms@2.1.2: {} + ms@2.1.3: {} + mustache@4.2.0: {} + nanoid@3.3.11: {} napi-postinstall@0.2.3: {} @@ -11245,6 +14813,10 @@ snapshots: npm-package-arg: 11.0.3 semver: 7.7.1 + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -11261,6 +14833,8 @@ snapshots: object-keys@1.1.1: {} + object-treeify@1.1.33: {} + object.assign@4.1.7: dependencies: call-bind: 1.0.8 @@ -11299,6 +14873,10 @@ snapshots: objectorarray@1.0.5: {} + obliterator@1.6.1: {} + + ohash@2.0.11: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -11307,6 +14885,10 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -11437,10 +15019,14 @@ snapshots: lru-cache: 11.1.0 minipass: 7.1.2 + path-to-regexp@6.3.0: {} + path-to-regexp@8.2.0: {} path-type@4.0.0: {} + pathe@2.0.3: {} + pathval@2.0.0: {} picocolors@1.1.1: {} @@ -11568,6 +15154,8 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + printable-characters@1.0.42: {} + proc-log@4.2.0: {} process@0.11.10: {} @@ -11598,6 +15186,10 @@ snapshots: punycode@2.3.1: {} + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + qs@6.14.0: dependencies: side-channel: 1.1.0 @@ -12470,6 +16062,33 @@ snapshots: setprototypeof@1.2.0: {} + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.4 + semver: 7.7.1 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + sharp@0.34.1: dependencies: color: 4.2.3 @@ -12556,6 +16175,8 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} simple-swizzle@0.2.2: @@ -12618,8 +16239,15 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 + stacktracey@2.1.8: + dependencies: + as-table: 1.0.55 + get-source: 2.0.12 + statuses@2.0.1: {} + stoppable@1.1.0: {} + storybook@8.6.12(prettier@3.5.3): dependencies: '@storybook/core': 8.6.12(prettier@3.5.3)(storybook@8.6.12(prettier@3.5.3)) @@ -12729,6 +16357,8 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} strip-indent@3.0.0: @@ -12741,6 +16371,8 @@ snapshots: strip-json-comments@3.1.1: {} + strnum@1.1.2: {} + style-loader@3.3.4(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): dependencies: webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) @@ -12902,6 +16534,13 @@ snapshots: webpack: 5.99.7 optional: true + terser@5.16.9: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + terser@5.39.0: dependencies: '@jridgewell/source-map': 0.3.6 @@ -12955,6 +16594,8 @@ snapshots: '@ts-morph/common': 0.23.0 code-block-writer: 13.0.3 + ts-tqdm@0.8.6: {} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -12968,6 +16609,8 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.14.1: {} + tslib@2.8.1: {} tsx@4.19.4: @@ -13069,6 +16712,8 @@ snapshots: uc.micro@2.1.0: {} + ufo@1.6.1: {} + uglify-js@3.19.3: optional: true @@ -13085,6 +16730,14 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 + unenv@2.0.0-rc.15: + dependencies: + defu: 6.1.4 + exsolve: 1.0.5 + ohash: 2.0.11 + pathe: 2.0.3 + ufo: 1.6.1 + unified-engine@11.2.2: dependencies: '@types/concat-stream': 2.0.3 @@ -13259,6 +16912,8 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 + urlpattern-polyfill@10.0.0: {} + use-callback-ref@1.3.3(@types/react@19.1.2)(react@19.1.0): dependencies: react: 19.1.0 @@ -13295,6 +16950,10 @@ snapshots: utila@0.4.0: {} + utils-merge@1.0.1: {} + + uuid@9.0.1: {} + uvu@0.5.6: dependencies: dequal: 2.0.3 @@ -13528,6 +17187,31 @@ snapshots: wordwrap@1.0.0: {} + workerd@1.20250428.0: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20250428.0 + '@cloudflare/workerd-darwin-arm64': 1.20250428.0 + '@cloudflare/workerd-linux-64': 1.20250428.0 + '@cloudflare/workerd-linux-arm64': 1.20250428.0 + '@cloudflare/workerd-windows-64': 1.20250428.0 + + wrangler@4.14.1: + dependencies: + '@cloudflare/kv-asset-handler': 0.4.0 + '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250428.0) + blake3-wasm: 2.1.5 + esbuild: 0.25.2 + miniflare: 4.20250428.1 + path-to-regexp: 6.3.0 + unenv: 2.0.0-rc.15 + workerd: 1.20250428.0 + optionalDependencies: + fsevents: 2.3.3 + sharp: 0.33.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -13553,6 +17237,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + ws@8.18.0: {} + ws@8.18.1: {} xml-js@1.6.11: @@ -13571,10 +17257,18 @@ snapshots: yocto-queue@0.1.0: {} + youch@3.3.4: + dependencies: + cookie: 0.7.2 + mustache: 4.2.0 + stacktracey: 2.1.8 + zod-to-json-schema@3.24.5(zod@3.24.3): dependencies: zod: 3.24.3 + zod@3.22.3: {} + zod@3.24.3: {} zwitch@2.0.4: {} From 957fe3f453d9e7bb5f4f143c7188b3fa04ac31cc Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Wed, 14 May 2025 13:51:49 -0400 Subject: [PATCH 0467/1385] chore(pnpm): use installed dependencies for pre-commit hook (#7741) * chore(pnpm): use installed dependencies * Update pre-commit Co-authored-by: Matt Cowley <me@mattcowley.co.uk> Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Matt Cowley <me@mattcowley.co.uk> --- .husky/pre-commit | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 640452465f02e..013b90be9aed3 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,5 @@ # lint and format staged files -pnpm dlx lint-staged +pnpm exec lint-staged -# verify typescript staged files -pnpm --package=typescript dlx tsc --build apps/site +# verify typescript fully +pnpm check-types From 2f8da07dd57dc45c78dca8816af6edd777168b87 Mon Sep 17 00:00:00 2001 From: Han Li <aooohan@gmail.com> Date: Thu, 15 May 2025 01:57:30 +0800 Subject: [PATCH 0468/1385] fix: update `vfox` domain (#7746) update vfox domain Signed-off-by: Han Li <aooohan@gmail.com> --- apps/site/pages/en/download/package-manager/all.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/download/package-manager/all.md b/apps/site/pages/en/download/package-manager/all.md index cc58af56998eb..20b56fa8fd845 100644 --- a/apps/site/pages/en/download/package-manager/all.md +++ b/apps/site/pages/en/download/package-manager/all.md @@ -348,7 +348,7 @@ It allows you to **different versions for different projects**, **different vers It support all popular shells (Bash, Zsh, Fish, PowerShell, Clink, Cmder). -See the [Quick Start](https://vfox.lhan.me/guides/quick-start.html) for quickly using vfox, and all the usage details. +See the [Quick Start](https://vfox.dev/guides/quick-start.html) for quickly using vfox, and all the usage details. ## Void Linux From 092d168c056be8a2dfd8b74fa288028de01d5882 Mon Sep 17 00:00:00 2001 From: Carlos Menezes <carlos-menezes212@hotmail.com> Date: Wed, 14 May 2025 20:25:04 +0100 Subject: [PATCH 0469/1385] fix(learn): minor typo in "Discover Promises in Node.js" (#7747) fix(learn): minor typo in Discover Promises in Node.js ```diff -When you order the pizza, You're in the pending state +When you order the pizza, you're in the pending state ``` Signed-off-by: Carlos Menezes <carlos-menezes212@hotmail.com> --- .../en/learn/asynchronous-work/discover-promises-in-nodejs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md b/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md index 71a5c919b1ff0..fedde3f62a228 100644 --- a/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md +++ b/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md @@ -18,7 +18,7 @@ A Promise can be in one of three states: - **Fulfilled**: The operation completed successfully, and the Promise is now resolved with a value. - **Rejected**: The operation failed, and the Promise is settled with a reason (usually an error). -When you order the pizza, You're in the pending state, hungry and hopeful. If the pizza arrives hot and cheesy, you've entered the fulfilled state. But if the restaurant calls to say they've dropped your pizza on floor, you're in the rejected state. +When you order the pizza, you're in the pending state, hungry and hopeful. If the pizza arrives hot and cheesy, you've entered the fulfilled state. But if the restaurant calls to say they've dropped your pizza on floor, you're in the rejected state. Regardless of whether your dinner ends in joy or disappointment, once there's a final outcome, the Promise is considered **settled**. From 479f73b43344550422306212bad848605e94c9b7 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Wed, 14 May 2025 18:31:44 -0300 Subject: [PATCH 0470/1385] Blog: add Node.js May 25 Security Releases (#7748) * Blog: post release announcement May security releases * Blog: v20.19.2 release post Refs: https://github.com/nodejs-private/node-private/pull/711 * Blog: v22.15.1 release post Refs: https://github.com/nodejs-private/node-private/pull/712 * Blog: v23.11.1 release post Refs: https://github.com/nodejs-private/node-private/pull/708 * Blog: v24.0.2 release post Refs: https://github.com/nodejs-private/node-private/pull/714 * Update apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md --- apps/site/pages/en/blog/release/v20.19.2.md | 109 ++++++++++++++++++ apps/site/pages/en/blog/release/v22.15.1.md | 104 +++++++++++++++++ apps/site/pages/en/blog/release/v23.11.1.md | 95 +++++++++++++++ apps/site/pages/en/blog/release/v24.0.2.md | 89 ++++++++++++++ .../may-2025-security-releases.md | 50 +++++++- apps/site/site.json | 6 +- 6 files changed, 449 insertions(+), 4 deletions(-) create mode 100644 apps/site/pages/en/blog/release/v20.19.2.md create mode 100644 apps/site/pages/en/blog/release/v22.15.1.md create mode 100644 apps/site/pages/en/blog/release/v23.11.1.md create mode 100644 apps/site/pages/en/blog/release/v24.0.2.md diff --git a/apps/site/pages/en/blog/release/v20.19.2.md b/apps/site/pages/en/blog/release/v20.19.2.md new file mode 100644 index 0000000000000..9d9b984ef6778 --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.19.2.md @@ -0,0 +1,109 @@ +--- +date: '2025-05-14T21:14:45.406Z' +category: release +title: Node v20.19.2 (LTS) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-05-14, Version 20.19.2 'Iron' (LTS), @RafaelGSS + +This is a security release. + +### Notable Changes + +- (CVE-2025-23166) fix error handling on async crypto operation +- (CVE-2025-23167) (SEMVER-MAJOR) update llhttp to 9.2.0 +- (CVE-2025-23165) add missing call to uv_fs_req_cleanup + +### Commits + +- \[[`eb25047b1b`](https://github.com/nodejs/node/commit/eb25047b1b)] - **deps**: update llhttp to 9.2.0 (Node.js GitHub Bot) [#51719](https://github.com/nodejs/node/pull/51719) +- \[[`12dcd8db08`](https://github.com/nodejs/node/commit/12dcd8db08)] - **deps**: update llhttp to 9.1.3 (Node.js GitHub Bot) [#50080](https://github.com/nodejs/node/pull/50080) +- \[[`190e45a291`](https://github.com/nodejs/node/commit/190e45a291)] - **(SEMVER-MAJOR)** **(CVE-2025-23167)** **deps**: update llhttp to 9.1.2 (Paolo Insogna) [#48981](https://github.com/nodejs/node/pull/48981) +- \[[`fc68c44e6a`](https://github.com/nodejs/node/commit/fc68c44e6a)] - **fs**: added test for missing call to uv_fs_req_cleanup (Justin Nietzel) [#57811](https://github.com/nodejs/node/pull/57811) +- \[[`9e13bf0a81`](https://github.com/nodejs/node/commit/9e13bf0a81)] - **(CVE-2025-23165)** **fs**: add missing call to uv_fs_req_cleanup (Justin Nietzel) [#57811](https://github.com/nodejs/node/pull/57811) +- \[[`bd0aa5d44c`](https://github.com/nodejs/node/commit/bd0aa5d44c)] - **(CVE-2024-27982)** **http**: do not allow OBS fold in headers by default (Paolo Insogna) [nodejs-private/node-private#556](https://github.com/nodejs-private/node-private/pull/556) +- \[[`6c57465920`](https://github.com/nodejs/node/commit/6c57465920)] - **(CVE-2025-23166)** **src**: fix error handling on async crypto operations (RafaelGSS) [nodejs-private/node-private#710](https://github.com/nodejs-private/node-private/pull/710) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.19.2/node-v20.19.2-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.19.2/node-v20.19.2-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.19.2/node-v20.19.2-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.19.2/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.19.2/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.19.2/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.19.2/node-v20.19.2.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.19.2/node-v20.19.2-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.19.2/node-v20.19.2-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.19.2/node-v20.19.2-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.19.2/node-v20.19.2-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.19.2/node-v20.19.2-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.19.2/node-v20.19.2-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.19.2/node-v20.19.2-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.19.2/node-v20.19.2-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.19.2/node-v20.19.2.tar.gz \ +Other release files: https://nodejs.org/dist/v20.19.2/ \ +Documentation: https://nodejs.org/docs/v20.19.2/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +4ba1a64cd4e2d1bdbc38afbf230c6171ed62fca7c38c83497f839c3911d8d13d node-v20.19.2-aix-ppc64.tar.gz +ceeb1753eb6bdaf0d5dada97e807a88ef29d0ce49fa989a84339bc39987956d4 node-v20.19.2-arm64.msi +5f96c725cd2be1151f08b25c05bf5a21866a2dc7db3803d351a6ea19fcc53665 node-v20.19.2-darwin-arm64.tar.gz +51344f84c3867756a381d1f1ac437b9877ef7ee98683cd38aca32133a33e4986 node-v20.19.2-darwin-arm64.tar.xz +29f91e05992a7d81498ab1d04938a184313cb4aaccab95bb4636e30e6424eae3 node-v20.19.2-darwin-x64.tar.gz +eee1053719e234060c39822cc7defcb9322e14a1e6e5046dbbf48dcf68750aa7 node-v20.19.2-darwin-x64.tar.xz +37e920f860aaa3155bf8a276d20a5473fcea9eefa31f8b09eb18dc5e65c9abd7 node-v20.19.2-headers.tar.gz +398d95ff730743659a596b9753c7e619501571ae2beedbe16077d3213cd91e0e node-v20.19.2-headers.tar.xz +24c3090d4e8c3667cd57482263291ca4f562c2e0773d5e618a0c6ba32d21b39f node-v20.19.2-linux-arm64.tar.gz +0d0c4a1c3a5aa657b76873eaa962936c7dc7a45047bd3957322544967713dc72 node-v20.19.2-linux-arm64.tar.xz +aed2de774737d76a81254cbcd12ae5e9239f24efec0456b9608f150d27d58fe7 node-v20.19.2-linux-armv7l.tar.gz +43adc6c3f57582f0ed206b8401816d1846c39996793f02ccf61e905294bfdc58 node-v20.19.2-linux-armv7l.tar.xz +9fced2e270fb0879709f7fa19b358551244b2d6c8cbf39d6a860221dcc12181b node-v20.19.2-linux-ppc64le.tar.gz +1391fe00183bef0da0b478f636527d8270e43563877312d251a468746d338c74 node-v20.19.2-linux-ppc64le.tar.xz +94023e739c98ce55a057fbf5e86589253458e92af1990a2712dab8c6421cfe2f node-v20.19.2-linux-s390x.tar.gz +ffbf836e20738f283cbe342ce92881d81d3f14651cabd2cf93cdb91152bcae3c node-v20.19.2-linux-s390x.tar.xz +eec2c7b9c6ac72e42885a42edfc0503c0e4ee455f855c4a17a6cbcf026656dd5 node-v20.19.2-linux-x64.tar.gz +cbe59620b21732313774df4428586f7222a84af29e556f848abf624ba41caf90 node-v20.19.2-linux-x64.tar.xz +3a19f4949b422309a2806083580528c2c87e8169755f31fb7521d5f7b5fdba22 node-v20.19.2-win-arm64.7z +b155826b6abe8383b88f7de42bc7c2601cabd3b0d6e52cce1cf4cd4936e6441b node-v20.19.2-win-arm64.zip +eb6bde3d812ee065a94fc81e39dc16a56ec41f3039e6a27022326b3b59ee895b node-v20.19.2-win-x64.7z +8735c9940b97548f6d9d4dda7cf5fd4471c062f15f44c2b890c9b0b430460feb node-v20.19.2-win-x64.zip +6e56ea449e6581e8d7251b1960585d4e4cd53d99df34363483099fe864de1023 node-v20.19.2-win-x86.7z +c052c2b4e7ed147f9714b4e81bef4a1c5e04b33162c7300100c547747a2a34f3 node-v20.19.2-win-x86.zip +fcc217f3af52f8ecab1e5d016df6f543cb2d903d57e26f53ac48f7ea837dfab2 node-v20.19.2-x64.msi +2a5c4f9a2a563ba73b866dbdade0157ab042568b49a8b8ec0efa72150843ed17 node-v20.19.2-x86.msi +87f1d17df2fbbd775a4813d8936ece9120135d942eae6d308d2328616eed3103 node-v20.19.2.pkg +eaf8800608ffbcae7665beb4776d8e9d8484055fbb840ef44e346044f9b08ad5 node-v20.19.2.tar.gz +4a7ff611d5180f4e420204fa6f22f9f9deb2ac5e98619dd9a4de87edf5b03b6e node-v20.19.2.tar.xz +c36cb4961a50d2ac05a72d78b6a5b21cb9ac31ca6545a4a438b287f9d0eea9ba win-arm64/node.exe +db56ef1b250e24a698ee3a21f4f055a1f60319f273fa7bcab84212cdf9498bf1 win-arm64/node.lib +b754b00df640e352b663f7907f0e11240258aa5f5059d9c503ce455d2500d92f win-arm64/node_pdb.7z +2b6f70f82b6bbe178556f0b49290011e83c51e63584488d75e7dd9b94560345c win-arm64/node_pdb.zip +5793a3bf18d75c2bc5cb2b65ba8975b30057d7bf443141db4cf970d54fd8ddc6 win-x64/node.exe +21b9f76d6ec91f6510dc5adb891dbd52893c7d242549b5cf6084803d3be91665 win-x64/node.lib +2b7de888145be4086c70866417a0742a87ec50472d8b04e1850701ca2f7bfe4e win-x64/node_pdb.7z +d5493643b36531bb02591c3f855c77e2070bb972be1a51ea313e6b25f3e29556 win-x64/node_pdb.zip +c5505d7f22b1f6bfc56f4fe16f472c3b6428e74f48062028e6cc2a4b646a72cc win-x86/node.exe +4f7899d5cf286aad56624539952c087088e6e90f010f55d1f9145deb45524152 win-x86/node.lib +3b2de193ae323416b1c340777f9c2ff010f337d6dbdbd711a3de4a485315e1b5 win-x86/node_pdb.7z +79647764e20eb5002ca2a27e5d2f115cd5db462661521722a002a1eb0f79cd76 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmglBRIACgkQi+q0389V +XvTuQwv/TK0ElOiurObaWA4Vhya6aXm7zQfNqGVLGo6aBr2vvh5vvUkfA4EjFKGd +HtEygdrrqBxxHSJEtykLwF1Uq0HlO36Jrwrk4qJOQasyKs99qHnXiT1frPlpQv6u +yfuCC6bVSDt80v6OcRcDCitpBgTZY2ig8VAAIhpRDLcZNX/cvhoC5iw2BXbGtWIh +zLshwamTqyJFhP7lSFp2Qka92isinNhJQHEr/E1i7PSOI3hFnF2un5WaYdLOlwJN +uIALWR+Y4HfZy1qRc46znbV0M/xuwjRLGWwnQ3CrKi4G9nLnf57MRID+lgb+82iK +d2nFkDmdjeyN6BV+SJBBTc0KH7iONeHsEJit3Zv+C9j23deXBpNIH5IA4m3BWZV/ +iDshOkSBXRRfjT4DJhNK2cdu51Z8GRhlEgkJ4KOL5wwW7zTWKyGPOyJYRzqy6Lbz +1LLGbxeI65fEKKL7QCZP76p5icvq/CQJZexzk2O8LQoxNDXXOWJEagc8aUYH1AkG +isCM12ol +=m+8y +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v22.15.1.md b/apps/site/pages/en/blog/release/v22.15.1.md new file mode 100644 index 0000000000000..892f9b1467a9b --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.15.1.md @@ -0,0 +1,104 @@ +--- +date: '2025-05-14T21:15:50.538Z' +category: release +title: Node v22.15.1 (LTS) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-05-14, Version 22.15.1 'Jod' (LTS), @RafaelGSS + +This is a security release. + +### Notable Changes + +- (CVE-2025-23166) fix error handling on async crypto operation +- (CVE-2025-23165) add missing call to uv_fs_req_cleanup + +### Commits + +- \[[`edaf54da00`](https://github.com/nodejs/node/commit/edaf54da00)] - **fs**: added test for missing call to uv_fs_req_cleanup (Justin Nietzel) [#57811](https://github.com/nodejs/node/pull/57811) +- \[[`9f403e98ef`](https://github.com/nodejs/node/commit/9f403e98ef)] - **(CVE-2025-23165)** **fs**: add missing call to uv_fs_req_cleanup (Justin Nietzel) [#57811](https://github.com/nodejs/node/pull/57811) +- \[[`f4494d38f1`](https://github.com/nodejs/node/commit/f4494d38f1)] - **(CVE-2025-23166)** **src**: fix error handling on async crypto operations (RafaelGSS) [nodejs-private/node-private#709](https://github.com/nodejs-private/node-private/pull/709) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.15.1/node-v22.15.1-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.15.1/node-v22.15.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.15.1/node-v22.15.1-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.15.1/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.15.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.15.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.15.1/node-v22.15.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.15.1/node-v22.15.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.15.1/node-v22.15.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.15.1/node-v22.15.1-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.15.1/node-v22.15.1.tar.gz \ +Other release files: https://nodejs.org/dist/v22.15.1/ \ +Documentation: https://nodejs.org/docs/v22.15.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +2fe635ed920633a890fd594860e5fe35f5ca1ef6da3cda62c6692c39cfefb894 node-v22.15.1-aix-ppc64.tar.gz +3242884a544d8d7e4c1e7ee04ee82e48ae9820723b46589284e86441610f04fa node-v22.15.1-arm64.msi +d2689b86b17e1b51e76f801ffe2d9acca4225e76eda4b843c3d8438d4a7cd6fe node-v22.15.1-darwin-arm64.tar.gz +da2ce4f4616f5adae82de433481e00af86c7e6624a07e5a3c3fdaa1d8a6028fa node-v22.15.1-darwin-arm64.tar.xz +1c722d0dd6d3f60e8b0be014ea01b8a59f5088f4419197a1b37544854d61cc6f node-v22.15.1-darwin-x64.tar.gz +4f7f6dd674ffa4935dba358fe503a396347d918603e3c9657ce586280c702f61 node-v22.15.1-darwin-x64.tar.xz +7410efd260c92faa736cfa56f5cbc41cbb672e20d007d19353992ef9a96c2449 node-v22.15.1-headers.tar.gz +4b625fb4a7c7da9f04f9e897c7ec87a3d9c170504506f184e66d93f4604d2a5b node-v22.15.1-headers.tar.xz +eb3f232b83dfe83397b98395ec77a973e888e8959c978b3e4eeb551b8845b74f node-v22.15.1-linux-arm64.tar.gz +f4ae8ddf7487dfaf7da92fef463ee55cc29d8772d62891361dc3fc8b8e469205 node-v22.15.1-linux-arm64.tar.xz +346426e2bca62c98fb12213c39e80b0e349d7620238f74b7208d12e18fde87fd node-v22.15.1-linux-armv7l.tar.gz +6947386b4c8373b625c6a49b5571bf2226dac7c7b560a9a561a1f81bf71a25ef node-v22.15.1-linux-armv7l.tar.xz +156518af6901fb134ddde5f4b7ee39e047c4154480c3dd93030912a5d3f87097 node-v22.15.1-linux-ppc64le.tar.gz +da07858c6404dbe7c627bd7baea33c7825640652ad24468a6feb23c770cf7ce4 node-v22.15.1-linux-ppc64le.tar.xz +6b5a9615b66e553189578a4be33099f70add96c3b00bf38b7dcd91825ea1672f node-v22.15.1-linux-s390x.tar.gz +7a6206af04399c090aaa7b3d568b1540e127b50931f5022ff2eaf680fc32a9c6 node-v22.15.1-linux-s390x.tar.xz +f4b8eec683708acb1a2a73c7182ba2de5466a5dd5f705934a0830903df28821c node-v22.15.1-linux-x64.tar.gz +7dca2ab34ec817aa4781e2e99dfd34d349eff9be86e5d5fbaa7e96cae8ee3179 node-v22.15.1-linux-x64.tar.xz +2cafb8c5ee545d387409b6dab34b3552c90e247b7d2bd3964a68f42b26b3e8bf node-v22.15.1-win-arm64.7z +dec85d230d45a6319130cbc844e8ecf8767b150bfeddd340f6b7c4a2e8c3ccb8 node-v22.15.1-win-arm64.zip +3abcca34447dace08cecd2bfd7b6521b22bfa89cff7bd70e7cde777218c84d6a node-v22.15.1-win-x64.7z +7c7997d6ef2efd9525a54b033fc0be6f22549a5905f5da6573a41e61a436a1b5 node-v22.15.1-win-x64.zip +7b9999b5da0933f677ffff2a9ab211aebdcf23b1ed0f2e1db573cea757944103 node-v22.15.1-win-x86.7z +dd432043e8c90b7f221bd3ba8e6443fb69e7b8273049fad0669a3a7d66939985 node-v22.15.1-win-x86.zip +facb02bdf67cb9a7519c192b504fbfdbf47d8a67f36696d7d91a069b69904398 node-v22.15.1-x64.msi +89ef1c6181749a7739f6df58a73aa2127d0c7d6afe0236f5998d69ec98ec2154 node-v22.15.1-x86.msi +839f599498d36fabc3f7c940cabbaf14844e6380ba97a91299f7378b69e675c6 node-v22.15.1.pkg +38aea029f8818f7783f273fbc70dcf930f9ef54bdd49c5f90c0152caec7a57be node-v22.15.1.tar.gz +c19f0177d21c621746625e5f37590bd0d79a72043b77b53784cba5f145e7263e node-v22.15.1.tar.xz +e9e669cf7e9772406e3a59cb4b9b606e75eb1d9f454b675e1c78a6aaa542b31d win-arm64/node.exe +6c43922c747e0c07fcc4ceb64f08e98854a5c1b31665764076f5783556973d16 win-arm64/node.lib +957076a2623c6f9355a21aba2031a7248d411a6f40950e7b710fbf76a666f5e9 win-arm64/node_pdb.7z +5ac29419b5aaa475ba0606a021ed5cea77b18df74b5e42d57a706011004f6be4 win-arm64/node_pdb.zip +b3191cc083480282f1edaa3324002c320704a00d7564cf1f7c48b610d1c060b6 win-x64/node.exe +e731ad9af05eabe6bd941442b19dd6037f559a19a2fa8df2a8297ccb46ed7577 win-x64/node.lib +84eec3bf646e04287fef10dc110a7aa82a4304ddcbd0b148aa90c0d44b08ea1d win-x64/node_pdb.7z +b8b3364ad0735d45c25fb19c8b49f4c5e0c72a94f5d8fa44abddd80c15715538 win-x64/node_pdb.zip +ddd0ef952950dcaa7f705bdde5f4fd0c8a78a7c6db6dad32f8e13e3b120ad5e4 win-x86/node.exe +5f66397542e27adb288e1742720cedbeaba8a2034ebd58397306b2905f4acd2d win-x86/node.lib +e5bd0ae9dc388aa4fd72067e3239333537c42329746124437c32b81ff2291ef4 win-x86/node_pdb.7z +b5e39e2168abe7c9418f2cebcd813db9c1a0841274b1405aeffe13ffef74c264 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmglBa4ACgkQi+q0389V +XvTAhQv8DzNseoHxhjMLTvSh8qGz8rV3dp8TpeFfJUgseZEoeq6DykvS9bA18ilB +od5YkHPQap/xWO89UJ0nq50HVySuCsTSOFDrDShzumVkgEtzCUFuFS4ZyQHJpYwi +56Fk+sea5QbzjbG/Fg/L2bgyNXmpdmjYejw6fw5AkVLk8p5OgLHDGFrGrezQ2NWO +qH1V0R5m6XBtJyNIep9l7PJ+XPTxg7KMSG8u5gXzvlHsg8aaIY1ejCnAlPgzs/hD +Qu1fGcG5vFpdOMGctu+WjgaULyOJidDxbvvuYl18ZXcLeQw5pRTsik7GBsWBcTZo +5ccsUDNqx9noSrZImwZW4L1jR12yV6Tb9pwdbX698mplZLPNUVMWNcdAgdVgmpuh +pISSOw3m3VpUt7n/l+OmKOVavY22zn8GkOYQsk2js3+ltREFbdI+XfcU/Grx/K0k +tBu86dVM0UojHB3tcR44/ZCB4YctQYBjznUgaM9TMvL8E0rfwXLtXhBS64jziNw4 +QO0+Nrm3 +=scbF +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v23.11.1.md b/apps/site/pages/en/blog/release/v23.11.1.md new file mode 100644 index 0000000000000..eb16be6d81c5d --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.11.1.md @@ -0,0 +1,95 @@ +--- +date: '2025-05-14T21:16:29.248Z' +category: release +title: Node v23.11.1 (Current) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-05-14, Version 23.11.1 (Current), @RafaelGSS + +This is a security release. + +### Notable Changes + +src: + +- (CVE-2025-23166) fix error handling on async crypto operation + +### Commits + +- \[[`a271810ce2`](https://github.com/nodejs/node/commit/a271810ce2)] - **deps**: update c-ares to v1.34.5 (Node.js GitHub Bot) [#57792](https://github.com/nodejs/node/pull/57792) +- \[[`a12107f0dd`](https://github.com/nodejs/node/commit/a12107f0dd)] - **(CVE-2025-23166)** **src**: fix error handling on async crypto operations (RafaelGSS) [nodejs-private/node-private#688](https://github.com/nodejs-private/node-private/pull/688) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.11.1/node-v23.11.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.11.1/node-v23.11.1-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.11.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.11.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.11.1/node-v23.11.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.11.1/node-v23.11.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.11.1/node-v23.11.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.11.1/node-v23.11.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.11.1/node-v23.11.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.11.1/node-v23.11.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.11.1/node-v23.11.1-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.11.1/node-v23.11.1-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.11.1/node-v23.11.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.11.1/node-v23.11.1.tar.gz \ +Other release files: https://nodejs.org/dist/v23.11.1/ \ +Documentation: https://nodejs.org/docs/v23.11.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +b8e4e7f8940f4d4f1dbce5099708ef7038c41f38176524ac3b4c14e7e7324201 node-v23.11.1-aix-ppc64.tar.gz +e6c7a1e4749173876ee72b06e28ef16d5e5c6271bde3dd1a80ef01db30c8f607 node-v23.11.1-arm64.msi +255509d2c4fe8e1d6fefb950ad8db285ed75ba543e18744d83dc139f978e404d node-v23.11.1-darwin-arm64.tar.gz +de9f09318dc13d492c09a8d11b12ffc153a8a22e79f8dc95d925b8e26cce9ba5 node-v23.11.1-darwin-arm64.tar.xz +7e384a0cfa8b44ee4833b3823485baad78bf258e54f47020d2d2b4b75e9275d3 node-v23.11.1-darwin-x64.tar.gz +f8b42dbb326553790f41311eb6d6947adc09eecff942d65a256ddbbfd78c2dae node-v23.11.1-darwin-x64.tar.xz +04c112339bb2562c0763b19658aa9a392bc4509a0869d78dd7ca1501bdfc78ae node-v23.11.1-headers.tar.gz +fc95283750460af25c0507a6fb85357a08bfc180392218d28725564d197cf4d8 node-v23.11.1-headers.tar.xz +277316a0b0ae3f50eb2cd57b74fa8a07f4d17fe0433468a790e6e47da297a9f6 node-v23.11.1-linux-arm64.tar.gz +3a0297c7f177d0fc06ea35c71909fbca6cdd891074c265a432c84971ebad4f7b node-v23.11.1-linux-arm64.tar.xz +ead02a21e6f7144f588150f4684268502e467d9f76017ec5befb983caad9d0dd node-v23.11.1-linux-armv7l.tar.gz +4dd49f33d9f2f9f18fea549ceabb33a15101f0435692c477cff4381f5c23a554 node-v23.11.1-linux-armv7l.tar.xz +1ba6e2e20c4602adbf58180254ac85a8b65d14c7f1e4c8558e7c425635d462ca node-v23.11.1-linux-ppc64le.tar.gz +1717d673d294aca7ca4fb2ba43172113a65040ddbc4ca199302f76700508b3a8 node-v23.11.1-linux-ppc64le.tar.xz +2c1dc5f4c9e1b4926391fae71a05f58bd7eb1eb0cf1af75bf21248988d86cc50 node-v23.11.1-linux-s390x.tar.gz +f58f5e729be7b0bf5c842a0621bea208bcbc6226c3a774d75e7286dc768897a2 node-v23.11.1-linux-s390x.tar.xz +a2029c2b0cb05d10248e887c5df3f8547b7ab4aaa4e63b8e4da03e72f478140e node-v23.11.1-linux-x64.tar.gz +64220ef391e74bb8feafe51a17764eff908f0cfd7f6c2c184fe8361fb8520a44 node-v23.11.1-linux-x64.tar.xz +d9bc16d509b336b88757487f256528ef4a8b0478cdeae0765b8a8bf50c4a81f5 node-v23.11.1-win-arm64.7z +5a8e3026657a6bb08156e9205f5f0b5a501df53b62804ad72b8352ca62ea5c4f node-v23.11.1-win-arm64.zip +95f42a20db24f977fcf4317502c18dffb3b011b5ed1cb912f9571d49f2b7d7f0 node-v23.11.1-win-x64.7z +d22640060e1911efaede4ecc5820f94b613bc196868289cd34f56d46e4709b71 node-v23.11.1-win-x64.zip +5d096e1405e07e995f0dd017dd3575b4e16c8d3e1f583f67b945f55997baf5ad node-v23.11.1-x64.msi +a58f531b6a97375acd1e1c8083c2f5b33ad9589ad6d8c26d5e802ca0f306ba9e node-v23.11.1.pkg +75509306732090bfa99b004d097909315f7789badb4a495e82b5f17b6329247a node-v23.11.1.tar.gz +aef6c67395c328376b665bceefc9d17a06a2961f9a92b93019dff39854d5b2ef node-v23.11.1.tar.xz +3c736067409c824f7af47e92b220fa23bddecf33a118dc24b86eee38f52827a8 win-arm64/node.exe +580c1c53c658fd1f8ae51351c1f23d028ea85383c34bed5de6a890e90953b081 win-arm64/node.lib +520d2e6614b495997e699ff9dfbbfbbb4a9c6c42043f0336e3de20c0b2e7f6ed win-arm64/node_pdb.7z +f6440d2308f8841a3e7bf0f7e34810eb75f1eafc460353592b0bd517c6e23f4e win-arm64/node_pdb.zip +d84556784656e4f47eb086fa00af01c032a88b086492eb3cf1e9fab5029eb94a win-x64/node.exe +acc6e547ada98361b3647b52ff4f9bca7bab82885988d4b25aa6e037ceaaa91f win-x64/node.lib +77855cce7f5c6367bf7356f5bc5fc19add9a2def6adbc5f4d7df6487a3c82ca1 win-x64/node_pdb.7z +c439f964cf5a30ea077a980a922d2d93c29fef6883d428d2172aa1c0272b88ed win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmglBiYACgkQi+q0389V +XvR9UAv/T6XScEYGm2jh3dsIi2AVRUgwo0prZvDZm5ayar+cxtHCDbQk6EFxoP4o +UMTld6DIPzZF8mc0olzfpyWRppY/BmQDRDLO5qteFGgtY29+Cz2yRSW1I3lR1f9l +5Z+NOhmFvhLT40XXl6aNIf8qRrFr5Iu3QwT/ZTFv4JIyDEfiy0/ozxjYE/Bi3gka +tWPJgzURxBjG/ifZMvlP5NQB0ClR0AOJ+PC651xez9DUI/OUlQb8bVakbG51OPvH +AyCreSwO4B0oLSaYIwUdF/9JH6kynACdys4b3XX77SBSUiiG468zepC15fSGu5rB ++1BFA7/4AfyFdj5ucKgEIeoX97TF9/FOyBm4bHDr9RZHmPxHQz9mk7z9TnoGJ3pr +ruxghqlvUql0xMiJ5UgQq79BxzbNrRKE1/60e1yzZ5BwH4tp6Q3j7ipxHhyCrOBE +HwA+2sUQLD8byiBVeKyQRQriiHQ5zBmFYTPHrfceYEvqLxgLp0trEoZYBqz1I0Bp +enFA/qnU +=w5qU +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v24.0.2.md b/apps/site/pages/en/blog/release/v24.0.2.md new file mode 100644 index 0000000000000..47f6f60b4a327 --- /dev/null +++ b/apps/site/pages/en/blog/release/v24.0.2.md @@ -0,0 +1,89 @@ +--- +date: '2025-05-14T21:17:11.440Z' +category: release +title: Node v24.0.2 (Current) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-05-14, Version 24.0.2 (Current), @RafaelGSS + +This is a security release. + +### Notable Changes + +- (CVE-2025-23166) fix error handling on async crypto operation + +### Commits + +- \[[`7d0c17b2ad`](https://github.com/nodejs/node/commit/7d0c17b2ad)] - **(CVE-2025-23166)** **src**: fix error handling on async crypto operations (RafaelGSS) [nodejs-private/node-private#688](https://github.com/nodejs-private/node-private/pull/688) + +Windows 64-bit Installer: https://nodejs.org/dist/v24.0.2/node-v24.0.2-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.0.2/node-v24.0.2-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v24.0.2/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.0.2/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v24.0.2/node-v24.0.2.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.0.2/node-v24.0.2-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.0.2/node-v24.0.2-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v24.0.2/node-v24.0.2-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.0.2/node-v24.0.2-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.0.2/node-v24.0.2-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v24.0.2/node-v24.0.2-aix-ppc64.tar.gz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v24.0.2/node-v24.0.2-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v24.0.2/node-v24.0.2.tar.gz \ +Other release files: https://nodejs.org/dist/v24.0.2/ \ +Documentation: https://nodejs.org/docs/v24.0.2/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +ed574442f7a98dc5f88bf58d6a58d83a0a30243d51136000e42e5fb81becd2ab node-v24.0.2-aix-ppc64.tar.gz +4abbed05a2390a11f457a9e427bc9212ee0db110bcf00284f0b4096d740c5ce5 node-v24.0.2-arm64.msi +dbd43bc96d7754eff03c241888c2cbc1e879bcbbf2f0961fb8e00e9cd3a21526 node-v24.0.2-darwin-arm64.tar.gz +d70813109d5ddf729367567c412370775143b7bed5579d6166b028db26cd8d64 node-v24.0.2-darwin-arm64.tar.xz +b408d41f8e322bcc71fd4d595156b34d4ad03ef149fba26386030c4cf7e2c1e9 node-v24.0.2-darwin-x64.tar.gz +ea5494fb9b8028b9d733c97ee491e3b860000009edaf50165fd16594f3d3c082 node-v24.0.2-darwin-x64.tar.xz +38499a8b9dc93c1e42f8b8ff21b5b19c859fb41639b014cbcf1196294bc07edb node-v24.0.2-headers.tar.gz +b2f0f5f4ffc8983134cdd1c1d9f0fd804bcb2f91ae4770126e7f5ffdbcd1a9b8 node-v24.0.2-headers.tar.xz +78e02e66ea58612b6c84e349c9879333a3a83f51d8127f2593550a4d9a5c5c1a node-v24.0.2-linux-arm64.tar.gz +16426a7dae665cb87abe8399737248eb9661dd57e5dc99fcf6ded6e36c524525 node-v24.0.2-linux-arm64.tar.xz +4dca6cffc15d1e67b43db342d6562f21918f281bc8a4c26b6d637cfcecf76153 node-v24.0.2-linux-ppc64le.tar.gz +8fae7a9cc4d909a5dee961ea032336240fcb4902463e5448367862b87daec9b2 node-v24.0.2-linux-ppc64le.tar.xz +11bb07d9dfd5b0c11ff9ae240d1bb25e6c2f1eeec49d09157b1d262f8e97afa3 node-v24.0.2-linux-s390x.tar.gz +0c0b781ac4edbab98c3146de0b645107a275f07ba93b899f469db41268ef0742 node-v24.0.2-linux-s390x.tar.xz +0a44c1982b14ad2c67ae0d8ec26934d99e43a55c11880459f44a76757775c8fa node-v24.0.2-linux-x64.tar.gz +a5da53c8c184111afd324e1ed818c0fb23fe6f0a7d4583d47f41390dd389a027 node-v24.0.2-linux-x64.tar.xz +33cdb2171eb91be8380f666b5d8270f18accbccc4e108db438cfdc2973d2b944 node-v24.0.2-win-arm64.7z +33f0afdfe5fac6e2380025af09faef7d4152a1b12e374597b7006a85f8d6b746 node-v24.0.2-win-arm64.zip +46fa65be8aad5f761d9d40c7ba7b25f916b28bfd5a06600a97859960588b11d7 node-v24.0.2-win-x64.7z +259ca89fced60a5673548b57d0ed8cf813b9f310827b5fdfe042b4a105217b81 node-v24.0.2-win-x64.zip +053d291586491c2bf6b188e1441a93f724f6412477b85dccb3ef467cd3893a83 node-v24.0.2-x64.msi +aabe0e196bd7afecafb8fc41d77c6e9edefb4a673201f5d2867e67e58981d3d5 node-v24.0.2.pkg +db699b535192419b02f35668aadd48f4d80e99b8ef807997df159bcf15a5e6b9 node-v24.0.2.tar.gz +1597075afc06e5c6145d0bfbd77e2072c2ec0ab71ac4950cf008b2641374cd71 node-v24.0.2.tar.xz +4fe574d78a6d1e3c1f4935e0a1b56cb61cb9d4518f19f5d361b758fdbeca0ab3 win-arm64/node.exe +6809fc156673d10cca7dff0e54f28309bb111d235c54493a4a0ca401c2113be7 win-arm64/node.lib +deb49b68a7054e7e67a4e0521fdabb2b0009b6aa3918cd974b5db959a95d88ca win-arm64/node_pdb.7z +1f5dd8db749eb818ef5fb50e842bc2f2eff1f6ef8417c1b8d3f5d8febea32916 win-arm64/node_pdb.zip +99713814015e536bb05675e2d41dbc36b1715a92db0e71a6876d4cd2865ba573 win-x64/node.exe +34882ca2bb450431047f2dd3bae1c3b8c1cd2b4cffd5c1a0bf079948846d2b83 win-x64/node.lib +6b5df16680cfc9d53a0ed7d245de211914fd44f0a8b83a4915e3f9dd054ce470 win-x64/node_pdb.7z +56efcf3ceee83f7dda7098da5c6864b22b4516e9a119f9e78e10b5c96de81d05 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmglBusACgkQi+q0389V +XvSW6Av+PSuZPVqzRzX4a8vuXxUapAgestbIQjcDtZNJDNnLUXKP7wmfTVcxAVr+ +ZzxIMXWPvScAjAIccSkdXWEY1cSdX0pcHqx++GhX62FJshVtMuTjB3sTRAoIYYGg +ewOcsiqM5/wmYCl2K9KlrwPfeCLdX0mJ0X9K1yc7DVwv2RSU1dR5JFegJzGgigx8 +MkFM73tTrHQ6t0C6MFX1d6iSH6MxyEpfGwVTxHNAUeywT/e0v9YfDEKs7Nl8MRVH +Cvv3bPlo22SlWTaTVvQ6s03f/HPsOKsxBg76L3Jih6/ahgJ2/GbgpuBM98b4Nprb +5jotbC386yeai/mYDTPD4FAzbQMboIBJG83Y2Gdxz6lYTV8cG+cC3rGNMixW95fS +y1VbwtuJxD9CRMqgQ3t+PnnTAhTBhcXiCGYRM1+APtkf9j27J9d2c+fsFhgBDPCa +rt/j+vkl1ZcOXkB7mW7d0+aak3D18po4LV5WxuuQKDbqSh5uFKxSi5p7uI0y8BLB +OAtNaq0H +=iXZN +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md index bc9e63667c6e1..fecae391f6a01 100644 --- a/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md +++ b/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md @@ -1,5 +1,5 @@ --- -date: 2025-05-08T03:00:00.000Z +date: 2025-05-14T03:00:00.000Z category: vulnerability title: Wednesday, May 14, 2025 Security Releases slug: may-2025-security-releases @@ -7,6 +7,54 @@ layout: blog-post author: The Node.js Project --- +## Security releases available + +Updates are now available for the 24.x, 23.x, 22.x, 20.x Node.js release lines for the +following issues. + +## Improper error handling in async cryptographic operations crashes process (CVE-2025-23166) - (high) + +The C++ method `SignTraits::DeriveBits()` may incorrectly call `ThrowException()` +based on user-supplied inputs when executing in a background thread, crashing the Node.js process. +Such cryptographic operations are commonly applied to untrusted inputs. Thus, this mechanism +potentially allows an adversary to remotely crash a Node.js runtime. + +Impact: + +- This vulnerability affects all users in active release lines: 20.x, 22.x, 23.x, 24.x + +Thank you, @panva and @tniessen, for reporting and fixing this vulnerability. + +## Improper HTTP header block termination in llhttp (CVE-2025-23167) - (medium) + +A flaw in Node.js 20's HTTP parser allows improper termination of HTTP/1 headers using `\r\n\rX` instead of the required `\r\n\r\n`. +This inconsistency enables request smuggling, allowing attackers to bypass proxy-based access controls and submit unauthorized requests. + +The issue was resolved by upgrading `llhttp` to version 9, which enforces correct header termination. + +Impact: + +- This vulnerability affects only Node.js 20.x users prior to the `llhttp` v9 upgrade. + +Thank you, to kenballus for reporting this vulnerability and thank you RafaelGSS for fixing it. + +## Corrupted pointer in `node::fs::ReadFileUtf8(const FunctionCallbackInfo<Value>& args)` when `args[0]` is a string. (CVE-2025-23165) - (low) + +In Node.js, the `ReadFileUtf8` internal binding leaks memory due to a corrupted pointer in `uv_fs_s.file`: a UTF-16 path buffer is allocated but subsequently overwritten when the file descriptor is set. This results in an unrecoverable memory leak on every call. Repeated use can cause unbounded memory growth, leading to a denial of service. + +Impact: + +- This vulnerability affects APIs relying on `ReadFileUtf8` on Node.js release lines: v20 and v22. + +Thank you, to Justin Nietzel for reporting and fixing this vulnerability. + +## Downloads and release details + +- [Node.js v20.19.2](/blog/release/v20.19.2/) +- [Node.js v22.15.1](/blog/release/v22.15.1/) +- [Node.js v23.11.1](/blog/release/v23.11.1/) +- [Node.js v24.0.2](/blog/release/v24.0.2) + # Summary The Node.js project will release new versions of the 24.x, 23.x, 22.x, 20.x diff --git a/apps/site/site.json b/apps/site/site.json index 062038f70e93d..776f63fdeecae 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -28,9 +28,9 @@ ], "websiteBanners": { "index": { - "startDate": "2025-05-08T03:00:00.000Z", - "endDate": "2025-05-15T03:00:00.000Z", - "text": "New security releases to be made available Wednesday, May 14, 2025", + "startDate": "2025-05-14T03:00:00.000Z", + "endDate": "2025-05-21T03:00:00.000Z", + "text": "May Security Release is available", "link": "https://nodejs.org/en/blog/vulnerability/may-2025-security-releases", "type": "warning" } From 946448fa5efc040d2f7bf68e608389656d8e6184 Mon Sep 17 00:00:00 2001 From: Shashank RM <ugs22047_ece.shashank@cbit.org.in> Date: Thu, 15 May 2025 16:08:11 +0530 Subject: [PATCH 0471/1385] fix: Ensure links maintain green color within bold text (#7744) * fix: ensure links maintain green color within bold text * fix(markdown): ensure links inside bold text retain correct green color - Remove color styling from `strong` so it only applies font weight, not color. - Restore color styling for headings only. - Remove unnecessary selectors and \!important overrides for link color. - This allows links within bold text to inherit the correct green color naturally, resolving the previous override issue. * test(storybook): add story for bold text and links to cover markdown edge cases - Adds a story to the text stories. - Demonstrates bold text, a link inside bold, and bold inside a link. - Ensures CSS changes are visually tested for all relevant markdown scenarios. --- .../ui-components/__design__/text.stories.tsx | 20 +++++++++++++++++++ packages/ui-components/styles/markdown.css | 14 +++++-------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/packages/ui-components/__design__/text.stories.tsx b/packages/ui-components/__design__/text.stories.tsx index 6b49a6757148a..163d6fdb86974 100644 --- a/packages/ui-components/__design__/text.stories.tsx +++ b/packages/ui-components/__design__/text.stories.tsx @@ -77,4 +77,24 @@ export const HeadingsWithLinks: StoryObj = { ), }; +export const BoldAndLinks: StoryObj = { + render: () => ( + <main> + <p> + <strong>Bold text (should inherit normal text color)</strong> + </p> + <p> + <strong> + <a href="#">Bold green link (link inside bold)</a> + </strong> + </p> + <p> + <a href="#"> + <strong>Bold green link (bold inside link)</strong> + </a> + </p> + </main> + ), +}; + export default { title: 'Design System' } as MetaObj; diff --git a/packages/ui-components/styles/markdown.css b/packages/ui-components/styles/markdown.css index f1c91f056fc84..862cd6450f05e 100644 --- a/packages/ui-components/styles/markdown.css +++ b/packages/ui-components/styles/markdown.css @@ -40,22 +40,18 @@ main { h4, h5, h6 { + @apply font-semibold + text-neutral-900 + dark:text-white; + &[id] a { @apply text-neutral-900 dark:text-white; } } - h1, - h2, - h3, - h4, - h5, - h6, strong { - @apply font-semibold - text-neutral-900 - dark:text-white; + @apply font-semibold; } code { From fd87584e2ab9ff37f7de1604639eadca487924d9 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz <dario.piotrowicz@gmail.com> Date: Thu, 15 May 2025 11:38:24 +0100 Subject: [PATCH 0472/1385] Add CI check for Cloudflare Worker build (#7743) * chore: remove Cloudflare related pre-scripts in favour of turbo `dependsOn` configs * chore: add workflow to test Cloudflare Worker build on PRs and pushes * fixup! chore: add workflow to test Cloudflare Worker build on PRs and pushes remove windows since the OpenNext adapter is not compatible with it * fixup! chore: remove Cloudflare related pre-scripts in favour of turbo `dependsOn` configs add back `prebuild` script as that is needed for the vercel deployment * fixup! chore: add workflow to test Cloudflare Worker build on PRs and pushes Apply suggestions from code review Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Dario Piotrowicz <dario.piotrowicz@gmail.com> * fixup! chore: add workflow to test Cloudflare Worker build on PRs and pushes remove unnecessary filter * fixup! chore: add workflow to test Cloudflare Worker build on PRs and pushes update incorrect `pull_request_target` to `pull_request` * Apply suggestions from code review Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Dario Piotrowicz <dario.piotrowicz@gmail.com> --------- Signed-off-by: Dario Piotrowicz <dario.piotrowicz@gmail.com> Co-authored-by: Aviv Keller <me@aviv.sh> --- .../workflows/cloudflare-open-next-build.yml | 62 +++++++++++++++++++ apps/site/package.json | 5 +- apps/site/turbo.json | 16 ++++- 3 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/cloudflare-open-next-build.yml diff --git a/.github/workflows/cloudflare-open-next-build.yml b/.github/workflows/cloudflare-open-next-build.yml new file mode 100644 index 0000000000000..67df12fd7103c --- /dev/null +++ b/.github/workflows/cloudflare-open-next-build.yml @@ -0,0 +1,62 @@ +# Security Notes +# Only selected Actions are allowed within this repository. Please refer to (https://github.com/nodejs/nodejs.org/settings/actions) +# for the full list of available actions. If you want to add a new one, please reach out a maintainer with Admin permissions. +# REVIEWERS, please always double-check security practices before merging a PR that contains Workflow changes!! +# AUTHORS, please only use actions with explicit SHA references, and avoid using `@master` or `@main` references or `@version` tags. + +name: Cloudflare OpenNext Build + +on: + push: + branches: + - main + pull_request: + branches: + - main + +defaults: + run: + # This ensures that the working directory is the root of the repository + working-directory: ./ + +permissions: + contents: read + actions: read + +env: + # See https://turbo.build/repo/docs/reference/command-line-reference/run#--cache-dir + TURBO_ARGS: --cache-dir=.turbo/cache + # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force + TURBO_FORCE: true + +jobs: + build-cloudflare-worker: + name: Build Cloudflare Worker + runs-on: ubuntu-latest + + steps: + - name: Harden Runner + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 + with: + egress-policy: audit + + - name: Git Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + cache: true + + - name: Set up Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + # We want to ensure that the Node.js version running here respects our supported versions + node-version-file: '.nvmrc' + cache: 'pnpm' + + - name: Install packages + run: pnpm install --frozen-lockfile + + - name: Build Cloudflare Worker + run: pnpm exec turbo run cloudflare:build:worker ${{ env.TURBO_ARGS }} diff --git a/apps/site/package.json b/apps/site/package.json index fef3e1e59e307..a840c139bb22f 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -6,7 +6,6 @@ "build": "cross-env NODE_NO_WARNINGS=1 next build", "check-types": "tsc --noEmit", "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true NODE_NO_WARNINGS=1 next build", - "predev": "pnpm build-blog-data", "dev": "cross-env NODE_NO_WARNINGS=1 next dev", "lint": "turbo run lint:md lint:js lint:css", "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", @@ -23,8 +22,8 @@ "build-blog-data": "node ./scripts/blog-data/generate.mjs", "build-blog-data:watch": "node --watch --watch-path=pages/en/blog ./scripts/blog-data/generate.mjs", "cloudflare:build:worker": "opennextjs-cloudflare build", - "cloudflare:preview": "pnpm run cloudflare:build:worker && wrangler dev", - "cloudflare:deploy": "pnpm run cloudflare:build:worker && wrangler deploy" + "cloudflare:preview": "wrangler dev", + "cloudflare:deploy": "wrangler deploy" }, "dependencies": { "@heroicons/react": "~2.2.0", diff --git a/apps/site/turbo.json b/apps/site/turbo.json index e8a826992df66..c7cbeb7bb7025 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -4,6 +4,7 @@ "globalEnv": ["NODE_ENV"], "tasks": { "dev": { + "dependsOn": ["build-blog-data"], "cache": false, "persistent": true, "env": [ @@ -24,7 +25,7 @@ ] }, "build": { - "dependsOn": ["^build"], + "dependsOn": ["build-blog-data", "^build"], "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", "{app,components,layouts,pages,styles}/**/*.css", @@ -133,7 +134,19 @@ "inputs": ["{pages}/**/*.{mdx,md}"], "outputs": ["public/blog-data.json"] }, + "cloudflare:build:worker": { + "dependsOn": ["build-blog-data"], + "inputs": [ + "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", + "{app,components,layouts,pages,styles}/**/*.css", + "{next-data,scripts,i18n}/**/*.{mjs,json}", + "{app,pages}/**/*.{mdx,md}", + "*.{md,mdx,json,ts,tsx,mjs,yml}" + ], + "outputs": [".open-next/**"] + }, "cloudflare:preview": { + "dependsOn": ["cloudflare:build:worker"], "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", "{app,components,layouts,pages,styles}/**/*.css", @@ -144,6 +157,7 @@ "outputs": [".open-next/**"] }, "cloudflare:deploy": { + "dependsOn": ["cloudflare:build:worker"], "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", "{app,components,layouts,pages,styles}/**/*.css", From c35378059c2722b96c3070a34b4b007e52e431e0 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 17 May 2025 09:19:39 -0400 Subject: [PATCH 0473/1385] chore: resolve some todos (#7751) --- apps/site/components/MDX/Image/index.tsx | 16 +- apps/site/components/withAvatarGroup.tsx | 2 - apps/site/next.config.mjs | 1 + apps/site/util/__tests__/imageUtils.test.mjs | 56 ------- apps/site/util/imageUtils.ts | 19 --- .../Common/AvatarGroup/Avatar/index.tsx | 41 ++---- .../Common/AvatarGroup/Overlay/index.tsx | 2 - .../Common/AvatarGroup/index.tsx | 7 +- packages/ui-components/package.json | 1 + pnpm-lock.yaml | 137 +++++++++++++++++- 10 files changed, 154 insertions(+), 128 deletions(-) delete mode 100644 apps/site/util/__tests__/imageUtils.test.mjs delete mode 100644 apps/site/util/imageUtils.ts diff --git a/apps/site/components/MDX/Image/index.tsx b/apps/site/components/MDX/Image/index.tsx index 844a9596acf0b..e2e39f1727213 100644 --- a/apps/site/components/MDX/Image/index.tsx +++ b/apps/site/components/MDX/Image/index.tsx @@ -2,11 +2,7 @@ import type { ImageProps } from 'next/image'; import Image from 'next/image'; import type { FC } from 'react'; -import { isSvgImage } from '#site/util/imageUtils'; - const MDXImage: FC<ImageProps> = ({ width, height, alt, src, ...props }) => { - const isUnoptimizedImage = isSvgImage(src.toString()); - if (!width || !height) { // Since `width` and `height` are not provided in the Markdown image format, // we provide the height and width automatically. @@ -15,7 +11,6 @@ const MDXImage: FC<ImageProps> = ({ width, height, alt, src, ...props }) => { <Image {...props} src={src} - unoptimized={isUnoptimizedImage} alt={alt} width={0} height={0} @@ -25,16 +20,7 @@ const MDXImage: FC<ImageProps> = ({ width, height, alt, src, ...props }) => { ); } - return ( - <Image - {...props} - alt={alt} - width={width} - height={height} - src={src} - unoptimized={isUnoptimizedImage} - /> - ); + return <Image {...props} alt={alt} width={width} height={height} src={src} />; }; export default MDXImage; diff --git a/apps/site/components/withAvatarGroup.tsx b/apps/site/components/withAvatarGroup.tsx index 0c82aabe74c07..fc0569877c50f 100644 --- a/apps/site/components/withAvatarGroup.tsx +++ b/apps/site/components/withAvatarGroup.tsx @@ -1,7 +1,6 @@ 'use client'; import AvatarGroup from '@node-core/ui-components/Common/AvatarGroup'; -import Image from 'next/image'; import type { ComponentProps, FC } from 'react'; import Link from '#site/components/Link'; @@ -27,7 +26,6 @@ const WithAvatarGroup: FC<WithAvatarGroupProps> = ({ clickable: clickable, })} as={Link} - img={Image} {...props} /> ); diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index ce4f056acb9f5..d3a0778633722 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -88,6 +88,7 @@ const nextConfig = { '@radix-ui/react-tabs', '@radix-ui/react-toast', '@radix-ui/react-tooltip', + '@radix-ui/react-avatar', '@orama/highlight', '@orama/react-components', '@heroicons/react', diff --git a/apps/site/util/__tests__/imageUtils.test.mjs b/apps/site/util/__tests__/imageUtils.test.mjs deleted file mode 100644 index 76174a7b4e23e..0000000000000 --- a/apps/site/util/__tests__/imageUtils.test.mjs +++ /dev/null @@ -1,56 +0,0 @@ -import assert from 'node:assert/strict'; -import { describe, it } from 'node:test'; - -import { isSvgImage } from '#site/util/imageUtils'; -describe('isSvgImage', () => { - const testCases = [ - { - description: 'should return true for a valid .svg URL', - input: 'https://nodejs.org/image.svg', - expected: true, - }, - { - description: 'should return true for a URL with query params', - input: 'https://nodejs.org/image.svg?query=param', - expected: true, - }, - { - description: 'should return false for a URL without a .svg extension', - input: 'https://nodejs.org/image', - expected: false, - }, - { - description: - 'should return false for a URL containing ".svg" but not ending with it', - input: 'https://nodejs.org/image.svg.png', - expected: false, - }, - { - description: 'should return false for an empty string', - input: '', - expected: false, - }, - { - description: 'should return false for a non-URL string', - input: 'not-a-url', - expected: false, - }, - ]; - - testCases.forEach(({ description, input, expected }) => { - it(description, () => { - assert.equal(isSvgImage(input), expected); - }); - }); -}); - -describe('imageUtils', () => { - describe('isSvgImage', () => { - it('should detect .svg extension properly', () => { - assert.equal(isSvgImage('icon.svg'), true); - }); - it('should return false for non-svg source', () => { - assert.equal(isSvgImage('logo.png'), false); - }); - }); -}); diff --git a/apps/site/util/imageUtils.ts b/apps/site/util/imageUtils.ts deleted file mode 100644 index d75193e8c561b..0000000000000 --- a/apps/site/util/imageUtils.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * This is a temporary workaround that can be removed once Next.js is upgraded. - * See https://github.com/vercel/next.js/pull/72970 - * - * Checks if the given source string points to an SVG image. - * - * This function examines the base part of the provided string (ignoring query parameters) - * to determine if it ends with the `.svg` extension. - * - * @param src - The URL or string representing the source of the image. - * @returns `true` if the source points to an SVG image, otherwise `false`. - */ -export const isSvgImage = (src: string): boolean => { - // Split the source string at the '?' character to separate the main path from query parameters - const [image] = src.split('?'); - - // Check if the base path (before any query parameters) ends with '.svg' - return image.endsWith('.svg'); -}; diff --git a/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx b/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx index 666dca159918a..46f0ac699c4f0 100644 --- a/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx +++ b/packages/ui-components/Common/AvatarGroup/Avatar/index.tsx @@ -1,5 +1,6 @@ +import * as RadixAvatar from '@radix-ui/react-avatar'; import classNames from 'classnames'; -import type { HTMLAttributes, ElementType } from 'react'; +import type { HTMLAttributes } from 'react'; import { forwardRef } from 'react'; import type { LinkLike } from '#ui/types'; @@ -14,12 +15,8 @@ export type AvatarProps = { size?: 'small' | 'medium'; url?: string; as?: LinkLike | 'div'; - img?: ElementType | 'img'; }; -// @TODO: We temporarily removed the Avatar Radix UI primitive, since it was causing flashing -// during initial load and not being able to render nicely when images are already cached. -// @see https://github.com/radix-ui/primitives/pull/3008 const Avatar = forwardRef< HTMLSpanElement, HTMLAttributes<HTMLSpanElement> & AvatarProps @@ -33,14 +30,13 @@ const Avatar = forwardRef< url, size = 'small', as: Component = 'a', - img: Image = 'img', ...props }, ref ) => { if (!url) Component = 'div'; return ( - <span + <RadixAvatar.Root {...props} ref={ref} className={classNames(styles.avatar, styles[size], props.className)} @@ -50,25 +46,20 @@ const Avatar = forwardRef< target={url ? '_blank' : undefined} className={styles.wrapper} > - {image && ( - <Image - width={40} - height={40} - loading="lazy" - decoding="async" - src={image} - alt={name || nickname} - className={styles.item} - /> - )} - - {!image && ( - <span className={classNames(styles.item, styles[size])}> - {fallback} - </span> - )} + <RadixAvatar.Image + loading="lazy" + decoding="async" + src={image} + alt={name || nickname} + className={styles.item} + /> + <RadixAvatar.Fallback + className={classNames(styles.item, styles[size])} + > + {fallback} + </RadixAvatar.Fallback> </Component> - </span> + </RadixAvatar.Root> ); } ); diff --git a/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx b/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx index 2b91a8bd21143..a281e1cdf18e1 100644 --- a/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx +++ b/packages/ui-components/Common/AvatarGroup/Overlay/index.tsx @@ -16,7 +16,6 @@ const AvatarOverlay: FC<AvatarOverlayProps> = ({ fallback, url, as: Component = 'a', - img, }) => ( <Component className={styles.overlay} href={url} target="_blank"> <Avatar @@ -25,7 +24,6 @@ const AvatarOverlay: FC<AvatarOverlayProps> = ({ nickname={nickname} fallback={fallback} size="medium" - img={img} /> <div className={styles.user}> diff --git a/packages/ui-components/Common/AvatarGroup/index.tsx b/packages/ui-components/Common/AvatarGroup/index.tsx index 51d08744f61b3..53bc368393bb7 100644 --- a/packages/ui-components/Common/AvatarGroup/index.tsx +++ b/packages/ui-components/Common/AvatarGroup/index.tsx @@ -1,7 +1,7 @@ 'use client'; import classNames from 'classnames'; -import type { FC, ElementType } from 'react'; +import type { FC } from 'react'; import { useState, useMemo } from 'react'; import type { AvatarProps } from '#ui/Common/AvatarGroup/Avatar'; @@ -20,7 +20,6 @@ type AvatarGroupProps = { size?: AvatarProps['size']; container?: HTMLElement; as?: LinkLike; - img?: ElementType | 'img'; }; const AvatarGroup: FC<AvatarGroupProps> = ({ @@ -30,7 +29,6 @@ const AvatarGroup: FC<AvatarGroupProps> = ({ size = 'small', container, as, - img, }) => { const [showMore, setShowMore] = useState(false); @@ -54,7 +52,7 @@ const AvatarGroup: FC<AvatarGroupProps> = ({ key={avatar.nickname} asChild container={container} - content={<AvatarOverlay {...avatar} as={as} img={img} />} + content={<AvatarOverlay {...avatar} as={as} />} > <Avatar {...avatar} @@ -64,7 +62,6 @@ const AvatarGroup: FC<AvatarGroupProps> = ({ 'pointer-events-none': !avatar.url, })} as={as} - img={img} /> </Tooltip> ))} diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index ea4952e3d4738..1a4d7ca65fa5c 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -32,6 +32,7 @@ }, "dependencies": { "@heroicons/react": "^2.2.0", + "@radix-ui/react-avatar": "^1.1.9", "@radix-ui/react-dialog": "^1.1.7", "@radix-ui/react-dropdown-menu": "~2.1.6", "@radix-ui/react-label": "~2.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3fe1dfb43b960..4bef89954622a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -322,6 +322,9 @@ importers: '@heroicons/react': specifier: ^2.2.0 version: 2.2.0(react@19.1.0) + '@radix-ui/react-avatar': + specifier: ^1.1.9 + version: 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-dialog': specifier: ^1.1.7 version: 1.1.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -2063,6 +2066,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-avatar@1.1.9': + resolution: {integrity: sha512-10tQokfvZdFvnvDkcOJPjm2pWiP8A0R4T83MoD7tb15bC/k2GU7B1YBuzJi8lNQ8V1QqhP8ocNqp27ByZaNagQ==} + 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 + '@radix-ui/react-collection@1.1.4': resolution: {integrity: sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg==} peerDependencies: @@ -2251,6 +2267,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-primitive@2.1.2': + resolution: {integrity: sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==} + 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 + '@radix-ui/react-roving-focus@1.1.7': resolution: {integrity: sha512-C6oAg451/fQT3EGbWHbCQjYTtbyjNO1uzQgMzwyivcHT3GKNEmu1q3UuREhN+HzHAVtv3ivMVK08QlC+PkYw9Q==} peerDependencies: @@ -2299,6 +2328,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-slot@1.2.2': + resolution: {integrity: sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-tabs@1.1.9': resolution: {integrity: sha512-KIjtwciYvquiW/wAFkELZCVnaNLBsYNhTNcvl+zfMAbMhRkcvNuCLXDDd22L0j7tagpzVh/QwbFpwAATg7ILPw==} peerDependencies: @@ -2374,6 +2412,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-is-hydrated@0.1.0': + resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-layout-effect@1.1.1': resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: @@ -7563,6 +7610,11 @@ packages: '@types/react': optional: true + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + user-agent-data-types@0.4.2: resolution: {integrity: sha512-jXep3kO/dGNmDOkbDa8ccp4QArgxR4I76m3QVcJ1aOF0B9toc+YtSXtX5gLdDTZXyWlpQYQrABr6L1L2GZOghw==} @@ -9941,6 +9993,18 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 + '@radix-ui/react-avatar@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@radix-ui/react-collection@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) @@ -10116,6 +10180,14 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 + '@radix-ui/react-primitive@2.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-slot': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@radix-ui/react-roving-focus@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 @@ -10175,6 +10247,13 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 + '@radix-ui/react-slot@1.2.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + '@radix-ui/react-tabs@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 @@ -10256,6 +10335,13 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + use-sync-external-store: 1.5.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.2)(react@19.1.0)': dependencies: react: 19.1.0 @@ -12688,7 +12774,7 @@ snapshots: tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-import-x: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -12716,17 +12802,28 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): + dependencies: + debug: 3.2.7 + optionalDependencies: + eslint: 9.26.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + optional: true + eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) @@ -12756,7 +12853,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12774,6 +12871,34 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.26.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + optional: true + eslint-plugin-jsx-a11y@6.10.2(eslint@9.26.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 @@ -16936,6 +17061,10 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 + use-sync-external-store@1.5.0(react@19.1.0): + dependencies: + react: 19.1.0 + user-agent-data-types@0.4.2: {} util-deprecate@1.0.2: {} From 663fad95788c9e0b398423c86b608f3410c998d8 Mon Sep 17 00:00:00 2001 From: Vishal <93390689+Vishal-K-988@users.noreply.github.com> Date: Sun, 18 May 2025 00:30:41 +0530 Subject: [PATCH 0474/1385] feat(download): externalize labels and constants to JSON file (#7750) chore(download): extract constants to JSON Co-authored-by: Aviv Keller <me@aviv.sh> --- .../Release/PrebuiltDownloadButtons.tsx | 2 +- apps/site/types/userOS.ts | 23 +- apps/site/util/downloadUtils.tsx | 323 ------------------ apps/site/util/downloadUtils/constants.json | 226 ++++++++++++ apps/site/util/downloadUtils/index.tsx | 151 ++++++++ 5 files changed, 389 insertions(+), 336 deletions(-) delete mode 100644 apps/site/util/downloadUtils.tsx create mode 100644 apps/site/util/downloadUtils/constants.json create mode 100644 apps/site/util/downloadUtils/index.tsx diff --git a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx index 6b23dd1ed508e..ca037f6a443c2 100644 --- a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx +++ b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx @@ -9,8 +9,8 @@ import type { FC } from 'react'; import Button from '#site/components/Common/Button'; import { ReleaseContext } from '#site/providers/releaseProvider'; import { - OperatingSystemLabel, OS_NOT_SUPPORTING_INSTALLERS, + OperatingSystemLabel, } from '#site/util/downloadUtils'; import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; diff --git a/apps/site/types/userOS.ts b/apps/site/types/userOS.ts index 39a3911e55b0e..76bd462f345e5 100644 --- a/apps/site/types/userOS.ts +++ b/apps/site/types/userOS.ts @@ -1,15 +1,14 @@ -export type UserOS = 'MAC' | 'WIN' | 'LINUX' | 'AIX' | 'OTHER'; +import type constants from '../util/downloadUtils/constants.json'; -export type UserBitness = '64' | '32'; +// Extract OS key type from the systems object +export type UserOS = keyof typeof constants.systems; -export type UserArchitecture = 'arm' | 'x86'; +// Derive the union type of UserPlatform from the userOptions +export type UserPlatform = (typeof constants.userOptions.platforms)[number]; -export type UserPlatform = - | 'arm64' - | 'armv7l' - | 'ppc64le' - | 'ppc64' - | 's390x' - | 'ppc64' - | 'x64' - | 'x86'; +// Derive the union type of UserBitness from the userOptions +export type UserBitness = (typeof constants.userOptions.bitness)[number]; + +// Derive the union type of UserArchitecture from the userOptions +export type UserArchitecture = + (typeof constants.userOptions.architecture)[number]; diff --git a/apps/site/util/downloadUtils.tsx b/apps/site/util/downloadUtils.tsx deleted file mode 100644 index 6536a3b6747ab..0000000000000 --- a/apps/site/util/downloadUtils.tsx +++ /dev/null @@ -1,323 +0,0 @@ -import type { SelectValue } from '@node-core/ui-components/Common/Select'; -import * as InstallMethodIcons from '@node-core/ui-components/Icons/InstallationMethod'; -import * as OSIcons from '@node-core/ui-components/Icons/OperatingSystem'; -import * as PackageManagerIcons from '@node-core/ui-components/Icons/PackageManager'; -import satisfies from 'semver/functions/satisfies'; - -import type { NodeReleaseStatus } from '#site/types'; -import type * as Types from '#site/types/release'; -import type { UserOS, UserPlatform } from '#site/types/userOS'; - -// This is a manual list of OS's that do not support/have a way of being installed -// with an executable installer. This is used to disable the installer button. -// Note: Windows has one tiny exception for x64 on Node.js versions < 4.0.0 -export const OS_NOT_SUPPORTING_INSTALLERS: Array<UserOS | 'LOADING'> = [ - 'LINUX', - 'AIX', - 'OTHER', - 'LOADING', -]; - -export enum OperatingSystemLabel { - WIN = 'Windows', - MAC = 'macOS', - LINUX = 'Linux', - AIX = 'AIX', - OTHER = 'Other', - LOADING = 'N/A', -} - -export enum InstallationMethodLabel { - NVM = 'nvm', - FNM = 'fnm', - BREW = 'Brew', - CHOCO = 'Chocolatey', - DEVBOX = 'Devbox', - DOCKER = 'Docker', - N = 'n', - VOLTA = 'Volta', -} - -export enum PackageManagerLabel { - NPM = 'npm', - YARN = 'Yarn', - PNPM = 'pnpm', -} - -type DownloadCompatibility = { - os: Array<UserOS | 'LOADING'>; - installMethod: Array<Types.InstallationMethod | ''>; - platform: Array<UserPlatform | ''>; - semver: Array<string>; - releases: Array<NodeReleaseStatus>; -}; - -// Defines the Type definition for a Release Dropdown Item -type DownloadDropdownItem<T extends string> = { - // A label to be used within the Dropdown message - label: string; - // A flag that indicates if the item is recommended or not (official or community based) - recommended?: boolean; - // A URL pointing to the docs or support page for the item - url?: string; - // A bottom info that provides additional information about the item - info?: IntlMessageKeys; - // A compatibility object that defines the compatibility of the item with the current Release Context - compatibility: Partial<DownloadCompatibility>; -} & Omit<SelectValue<T>, 'label'>; - -// This function is used to get the next item in the dropdown -// when the current item is disabeld/excluded/not valid -// And this is useful when a parent release value (i.e. OS) is changed -// and requires the current dropdown (i.e. Platform) to be updated -export const nextItem = <T extends string>( - current: T, - items: Array<DownloadDropdownItem<T>> -): T => { - const item = items.find(({ value }) => String(value) === String(current)); - - const isDisabledOrExcluded = !item || item.disabled; - - if (isDisabledOrExcluded) { - const nextItem = items.find(({ disabled }) => !disabled); - - if (nextItem) { - return nextItem.value; - } - } - - return current; -}; - -// This function is used to parse the compatibility of the dropdown items -// In a nice and static way that allows a lot of abstraction and flexibility -export const parseCompat = < - K extends string, - T extends DownloadDropdownItem<K>, ->( - items: Array<T>, - { os, installMethod, platform, version, release }: Types.ReleaseContextType -): Array<T> => { - const satisfiesSemver = (semver: string) => satisfies(version, semver); - - const supportsOS = (i: T['compatibility']) => i.os?.includes(os) ?? true; - - const supportsInstallMethod = (i: T['compatibility']) => - i.installMethod?.includes(installMethod) ?? true; - - const supportsPlatform = (i: T['compatibility']) => - i.platform?.includes(platform) ?? true; - - const supportsVersion = (i: T['compatibility']) => - i.semver?.some(satisfiesSemver) ?? true; - - const supportsRelease = (i: T['compatibility']) => - i.releases?.includes(release.status) ?? true; - - return items.map(item => ({ - ...item, - disabled: - !supportsOS(item.compatibility) || - !supportsInstallMethod(item.compatibility) || - !supportsPlatform(item.compatibility) || - !supportsVersion(item.compatibility) || - !supportsRelease(item.compatibility), - })); -}; - -export const OPERATING_SYSTEMS: Array<DownloadDropdownItem<UserOS>> = [ - { - label: OperatingSystemLabel.WIN, - value: 'WIN', - compatibility: {}, - iconImage: <OSIcons.Microsoft width={16} height={16} />, - }, - { - label: OperatingSystemLabel.MAC, - value: 'MAC', - compatibility: {}, - iconImage: <OSIcons.Apple width={16} height={16} />, - }, - { - label: OperatingSystemLabel.LINUX, - value: 'LINUX', - compatibility: {}, - iconImage: <OSIcons.Linux width={16} height={16} />, - }, - { - label: OperatingSystemLabel.AIX, - value: 'AIX', - compatibility: { installMethod: [''], semver: ['>= 6.7.0'] }, - iconImage: <OSIcons.AIX width={16} height={16} />, - }, -]; - -export const INSTALL_METHODS: Array< - DownloadDropdownItem<Types.InstallationMethod> & - // Since the ReleaseCodeBox requires an info key to be provided, we force this - // to be mandatory for install methods - Required< - Pick<DownloadDropdownItem<Types.InstallationMethod>, 'info' | 'url'> - > -> = [ - { - label: InstallationMethodLabel.NVM, - value: 'NVM', - compatibility: { os: ['MAC', 'LINUX', 'OTHER'] }, - iconImage: <InstallMethodIcons.NVM width={16} height={16} />, - recommended: true, - url: 'https://github.com/nvm-sh/nvm', - info: 'layouts.download.codeBox.platformInfo.nvm', - }, - { - label: InstallationMethodLabel.FNM, - value: 'FNM', - compatibility: { os: ['MAC', 'LINUX', 'WIN'] }, - iconImage: <InstallMethodIcons.FNM width={16} height={16} />, - recommended: true, - url: 'https://github.com/Schniz/fnm', - info: 'layouts.download.codeBox.platformInfo.fnm', - }, - { - label: InstallationMethodLabel.BREW, - value: 'BREW', - compatibility: { os: ['MAC', 'LINUX'], releases: ['Current', 'LTS'] }, - iconImage: <InstallMethodIcons.Homebrew width={16} height={16} />, - url: 'https://brew.sh/', - info: 'layouts.download.codeBox.platformInfo.brew', - }, - { - label: InstallationMethodLabel.DEVBOX, - value: 'DEVBOX', - compatibility: { os: ['MAC', 'LINUX'] }, - iconImage: <InstallMethodIcons.Devbox width={16} height={16} />, - url: 'https://jetify.com/devbox/', - info: 'layouts.download.codeBox.platformInfo.devbox', - }, - { - label: InstallationMethodLabel.CHOCO, - value: 'CHOCO', - compatibility: { os: ['WIN'] }, - iconImage: <InstallMethodIcons.Choco width={16} height={16} />, - url: 'https://chocolatey.org/', - info: 'layouts.download.codeBox.platformInfo.choco', - }, - { - label: InstallationMethodLabel.DOCKER, - value: 'DOCKER', - compatibility: { os: ['WIN', 'MAC', 'LINUX'] }, - iconImage: <InstallMethodIcons.Docker width={16} height={16} />, - recommended: true, - url: 'https://docs.docker.com/get-started/get-docker/', - info: 'layouts.download.codeBox.platformInfo.docker', - }, - { - label: InstallationMethodLabel.N, - value: 'N', - compatibility: { os: ['MAC', 'LINUX'] }, - iconImage: <InstallMethodIcons.N width={16} height={16} />, - url: 'https://github.com/tj/n', - info: 'layouts.download.codeBox.platformInfo.n', - }, - { - label: InstallationMethodLabel.VOLTA, - value: 'VOLTA', - compatibility: { os: ['WIN', 'MAC', 'LINUX'] }, - iconImage: <InstallMethodIcons.Volta width={16} height={16} />, - url: 'https://docs.volta.sh/guide/getting-started', - info: 'layouts.download.codeBox.platformInfo.volta', - }, -]; - -export const PACKAGE_MANAGERS: Array< - DownloadDropdownItem<Types.PackageManager> -> = [ - { - label: PackageManagerLabel.NPM, - value: 'NPM', - compatibility: {}, - iconImage: <PackageManagerIcons.NPM width={16} height={16} />, - }, - { - label: PackageManagerLabel.YARN, - value: 'YARN', - compatibility: { semver: ['>= v14.19.0', '>= v16.9.0'] }, - iconImage: <PackageManagerIcons.YARN width={16} height={16} />, - }, - { - label: PackageManagerLabel.PNPM, - value: 'PNPM', - compatibility: { semver: ['>= v14.19.0', '>= v16.9.0'] }, - iconImage: <PackageManagerIcons.PNPM width={16} height={16} />, - }, -]; - -export const PLATFORMS: Record< - UserOS, - Array<DownloadDropdownItem<UserPlatform>> -> = { - WIN: [ - { - label: 'x64', - value: 'x64', - compatibility: {}, - }, - { - label: 'x86', - value: 'x86', - compatibility: { semver: ['< 23.0.0'] }, - }, - { - label: 'ARM64', - value: 'arm64', - compatibility: { semver: ['>= 19.9.0'] }, - }, - ], - MAC: [ - { - label: 'x64', - value: 'x64', - compatibility: {}, - }, - { - label: 'ARM64', - value: 'arm64', - compatibility: {}, - }, - ], - LINUX: [ - { - label: 'x64', - value: 'x64', - compatibility: {}, - }, - { - label: 'ARMv7', - value: 'armv7l', - compatibility: { semver: ['>= 4.0.0'] }, - }, - { - label: 'ARM64', - value: 'arm64', - compatibility: { semver: ['>= 4.0.0'] }, - }, - { - label: 'Power LE', - value: 'ppc64le', - compatibility: { semver: ['>= 4.4.0'] }, - }, - { - label: 'System Z', - value: 's390x', - compatibility: { semver: ['>= 6.6.0'] }, - }, - ], - AIX: [ - { - label: 'Power', - value: 'ppc64', - compatibility: { semver: ['>= 6.7.0'] }, - }, - ], - OTHER: [], -}; diff --git a/apps/site/util/downloadUtils/constants.json b/apps/site/util/downloadUtils/constants.json new file mode 100644 index 0000000000000..526e738fb0357 --- /dev/null +++ b/apps/site/util/downloadUtils/constants.json @@ -0,0 +1,226 @@ +{ + "systems": { + "WIN": { + "name": "Windows", + "icon": "Microsoft", + "supportsInstallers": true, + "compatibility": {}, + "platforms": [ + { + "label": "x64", + "value": "x64" + }, + { + "label": "x86", + "value": "x86", + "compatibility": { + "semver": ["< 23.0.0"] + } + }, + { + "label": "ARM64", + "value": "arm64", + "compatibility": { + "semver": [">= 19.9.0"] + } + } + ] + }, + "MAC": { + "name": "macOS", + "icon": "Apple", + "supportsInstallers": true, + "compatibility": {}, + "platforms": [ + { + "label": "x64", + "value": "x64" + }, + { + "label": "ARM64", + "value": "arm64", + "compatibility": { + "semver": [">= 19.9.0"] + } + } + ] + }, + "LINUX": { + "name": "Linux", + "icon": "Linux", + "supportsInstallers": false, + "compatibility": {}, + "platforms": [ + { + "label": "x64", + "value": "x64" + }, + { + "label": "ARMv7", + "value": "armv7l", + "compatibility": { + "semver": [">= 4.0.0"] + } + }, + { + "label": "ARM64", + "value": "arm64", + "compatibility": { + "semver": [">= 4.0.0"] + } + }, + { + "label": "Power LE", + "value": "ppc64le", + "compatibility": { + "semver": [">= 4.4.0"] + } + }, + { + "label": "System Z", + "value": "s390x", + "compatibility": { + "semver": [">= 6.6.0"] + } + } + ] + }, + "AIX": { + "name": "AIX", + "icon": "AIX", + "supportsInstallers": false, + "compatibility": { + "semver": [">= 6.7.0"] + }, + "platforms": [ + { + "label": "Power", + "value": "ppc64", + "compatibility": { + "semver": [">= 6.7.0"] + } + } + ] + }, + "OTHER": { + "name": "Other", + "supportsInstallers": false, + "platforms": [] + }, + "LOADING": { + "name": "N/A", + "supportsInstallers": false, + "platforms": [] + } + }, + "installMethods": [ + { + "id": "NVM", + "icon": "NVM", + "name": "nvm", + "compatibility": { + "os": ["MAC", "LINUX", "OTHER"] + }, + "recommended": true, + "url": "https://github.com/nvm-sh/nvm", + "info": "layouts.download.codeBox.platformInfo.nvm" + }, + { + "id": "FNM", + "icon": "NVM", + "name": "fnm", + "compatibility": { + "os": ["MAC", "LINUX", "WIN"] + }, + "recommended": true, + "url": "https://github.com/Schniz/fnm", + "info": "layouts.download.codeBox.platformInfo.fnm" + }, + { + "id": "BREW", + "icon": "Homebrew", + "name": "Brew", + "compatibility": { + "os": ["MAC", "LINUX"], + "releases": ["Current", "LTS"] + }, + "url": "https://brew.sh/", + "info": "layouts.download.codeBox.platformInfo.brew" + }, + { + "id": "DEVBOX", + "icon": "Devbox", + "name": "Devbox", + "compatibility": { + "os": ["MAC", "LINUX"] + }, + "url": "https://jetify.com/devbox/", + "info": "layouts.download.codeBox.platformInfo.devbox" + }, + { + "id": "CHOCO", + "icon": "Choco", + "name": "Chocolatey", + "compatibility": { + "os": ["WIN"] + }, + "url": "https://chocolatey.org/", + "info": "layouts.download.codeBox.platformInfo.choco" + }, + { + "id": "DOCKER", + "icon": "Docker", + "name": "Docker", + "compatibility": { + "os": ["WIN", "MAC", "LINUX"] + }, + "recommended": true, + "url": "https://docs.docker.com/get-started/get-docker/", + "info": "layouts.download.codeBox.platformInfo.docker" + }, + { + "id": "N", + "icon": "N", + "name": "n", + "compatibility": { + "os": ["MAC", "LINUX"] + }, + "url": "https://github.com/tj/n", + "info": "layouts.download.codeBox.platformInfo.n" + }, + { + "id": "VOLTA", + "icon": "Volta", + "name": "Volta", + "compatibility": { + "os": ["WIN", "MAC", "LINUX"] + }, + "url": "https://docs.volta.sh/guide/getting-started", + "info": "layouts.download.codeBox.platformInfo.volta" + } + ], + "packageManagers": [ + { + "id": "NPM", + "name": "npm", + "compatibility": {} + }, + { + "id": "YARN", + "name": "Yarn", + "compatibility": { + "semver": [">= v14.19.0", ">= v16.9.0"] + } + }, + { + "id": "PNPM", + "name": "pnpm", + "compatibility": {} + } + ], + "userOptions": { + "platforms": ["arm64", "armv7l", "ppc64le", "ppc64", "s390x", "x64", "x86"], + "bitness": ["64", "32"], + "architecture": ["arm", "x86"] + } +} diff --git a/apps/site/util/downloadUtils/index.tsx b/apps/site/util/downloadUtils/index.tsx new file mode 100644 index 0000000000000..2ecfeb77bdea0 --- /dev/null +++ b/apps/site/util/downloadUtils/index.tsx @@ -0,0 +1,151 @@ +import type { SelectValue } from '@node-core/ui-components/Common/Select'; +import * as InstallMethodIcons from '@node-core/ui-components/Icons/InstallationMethod'; +import * as OSIcons from '@node-core/ui-components/Icons/OperatingSystem'; +import * as PackageManagerIcons from '@node-core/ui-components/Icons/PackageManager'; +import type { ElementType } from 'react'; +import satisfies from 'semver/functions/satisfies'; + +import type { NodeReleaseStatus } from '#site/types'; +import type * as Types from '#site/types/release'; +import type { UserOS, UserPlatform } from '#site/types/userOS'; + +import constants from './constants.json'; + +const { systems, installMethods, packageManagers } = constants; + +// Extract the non-installer supporting OSes +export const OS_NOT_SUPPORTING_INSTALLERS = Object.entries(systems) + .filter(([, data]) => !data.supportsInstallers) + .map(([key]) => key); + +// Create OS label mapping for backward compatibility +export const OperatingSystemLabel = Object.fromEntries( + Object.entries(systems).map(([key, data]) => [key, data.name]) +); + +// Base types for dropdown functionality +type DownloadCompatibility = { + os?: Array<UserOS | 'LOADING'>; + installMethod?: Array<string>; + platform?: Array<UserPlatform | ''>; + semver?: Array<string>; + releases?: Array<NodeReleaseStatus>; +}; + +type DownloadDropdownItem<T extends string> = { + label: string; + recommended?: boolean; + url?: string; + info?: string; + compatibility: DownloadCompatibility; +} & Omit<SelectValue<T>, 'label'>; + +/** + * Gets the next valid item when current item is disabled/excluded + */ +export const nextItem = <T extends string>( + current: T, + items: Array<DownloadDropdownItem<T>> +): T => { + const currentItem = items.find( + ({ value }) => String(value) === String(current) + ); + return currentItem && !currentItem.disabled + ? current + : items.find(({ disabled }) => !disabled)?.value || current; +}; + +/** + * Parses compatibility of dropdown items based on context + */ +export const parseCompat = < + K extends string, + T extends DownloadDropdownItem<K>, +>( + items: Array<T>, + { os, installMethod, platform, version, release }: Types.ReleaseContextType +): Array<T> => { + const checkCompatibility = (compatibility: T['compatibility']) => { + const checks = [ + !compatibility.os || compatibility.os.includes(os), + !compatibility.installMethod || + compatibility.installMethod.includes(installMethod), + !compatibility.platform || compatibility.platform.includes(platform), + !compatibility.semver || + compatibility.semver.some(semver => satisfies(version, semver)), + !compatibility.releases || + compatibility.releases.includes(release.status), + ]; + + return checks.every(Boolean); + }; + + return items.map(item => ({ + ...item, + disabled: !checkCompatibility(item.compatibility), + })); +}; + +/** + * Creates an icon element for a component + */ +const createIcon = ( + IconModule: Record<string, ElementType>, + iconName: string +) => { + const IconComponent = IconModule[iconName]; + return <IconComponent width={16} height={16} />; +}; + +// Operating System dropdown items +type ActualSystems = Omit<typeof systems, 'OTHER' | 'LOADING'>; +export const OPERATING_SYSTEMS = Object.entries(systems as ActualSystems) + .filter(([key]) => key !== 'LOADING' && key !== 'OTHER') + .map(([key, data]) => ({ + label: data.name, + value: key as UserOS, + compatibility: data.compatibility, + iconImage: createIcon(OSIcons, data.icon), + })); + +// Installation Method dropdown items +export const INSTALL_METHODS = installMethods.map(method => ({ + key: method.id, + value: method.id as Types.InstallationMethod, + label: method.name, + iconImage: createIcon(InstallMethodIcons, method.icon), + recommended: method.recommended, + url: method.url, + info: method.info, + compatibility: { + ...method.compatibility, + os: method.compatibility?.os?.map(os => os as UserOS), + releases: method.compatibility?.releases?.map( + release => release as NodeReleaseStatus + ), + }, +})); + +// Package Manager dropdown items +export const PACKAGE_MANAGERS = packageManagers.map(manager => ({ + key: manager.id, + value: manager.id as Types.PackageManager, + label: manager.name, + iconImage: createIcon(PackageManagerIcons, manager.id), + compatibility: { + ...manager.compatibility, + semver: manager.compatibility?.semver, + }, +})); + +// Platform-specific dropdown items +export const PLATFORMS = Object.fromEntries( + Object.entries(systems).map(([key, data]) => [ + key, + data.platforms.map(platform => ({ + label: platform.label, + value: platform.value as UserPlatform, + compatibility: platform.compatibility || {}, + })), + ]) +) as Record<UserOS | 'LOADING', Array<DownloadDropdownItem<UserPlatform>>>; From 232e7f1c4a30bb61565f9636ff5e14d2ce226fd8 Mon Sep 17 00:00:00 2001 From: Gilad Hoshmand <gilad.hoshmand@sage.com> Date: Tue, 20 May 2025 15:24:30 +0300 Subject: [PATCH 0475/1385] fix(learn): fix link text in coverage article (#7761) Update collecting-code-coverage.md Signed-off-by: Gilad Hoshmand <gilad.hoshmand@sage.com> --- .../site/pages/en/learn/test-runner/collecting-code-coverage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md b/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md index 03d5e99c9afcf..91361d666e2c8 100644 --- a/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md +++ b/apps/site/pages/en/learn/test-runner/collecting-code-coverage.md @@ -6,7 +6,7 @@ authors: avivkeller # Collecting code coverage in Node.js -Node.js provides built-in support for code coverage through its test runner, which can be enabled using the [`--experimental-code-coverage`](https://nodejs.org/api/cli.html#--experimental-test-coverage) flag. +Node.js provides built-in support for code coverage through its test runner, which can be enabled using the [`--experimental-test-coverage`](https://nodejs.org/api/cli.html#--experimental-test-coverage) flag. If using the `run()` API, the `coverage` option must be set to `true`. For more information on the `run()` API, see [the `node:test` documentation](https://nodejs.org/docs/latest/api/test.html#runoptions). From 3725137b32c2bf5d24ecc7a265b53df99c698bdc Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 20 May 2025 16:57:02 -0400 Subject: [PATCH 0476/1385] chore(deps): update css-loader, remove redundant deps (#7739) * chore(deps): update css-loader, remove redundant deps * resolve conflicts --- apps/site/package.json | 2 - packages/ui-components/.storybook/main.ts | 15 +-- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 135 +++++----------------- 4 files changed, 37 insertions(+), 117 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index a840c139bb22f..87ec48f918f5f 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -60,9 +60,7 @@ "next": "15.3.1", "next-intl": "~4.1.0", "next-themes": "~0.4.6", - "postcss": "~8.5.3", "postcss-calc": "~10.1.1", - "postcss-loader": "~8.1.1", "react": "^19.1.0", "react-dom": "^19.1.0", "reading-time": "~1.5.0", diff --git a/packages/ui-components/.storybook/main.ts b/packages/ui-components/.storybook/main.ts index 7910011320c8e..1ac7275cd2df8 100644 --- a/packages/ui-components/.storybook/main.ts +++ b/packages/ui-components/.storybook/main.ts @@ -1,9 +1,5 @@ -import { createRequire } from 'node:module'; - import type { StorybookConfig } from '@storybook/react-webpack5'; -const require = createRequire(import.meta.url); - const config: StorybookConfig = { stories: ['../**/*.stories.tsx'], logLevel: 'error', @@ -28,13 +24,12 @@ const config: StorybookConfig = { 'style-loader', { loader: 'css-loader', - options: { importLoaders: 1 }, - }, - { - // Gets options from `postcss.config.js` in your project root - loader: 'postcss-loader', - options: { implementation: require.resolve('postcss') }, + options: { + esModule: false, + importLoaders: 1, + }, }, + 'postcss-loader', ], }, ], diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 1a4d7ca65fa5c..83dea8a3b919d 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -61,7 +61,7 @@ "@types/node": "22.15.3", "@types/react": "^19.1.0", "cross-env": "^7.0.3", - "css-loader": "~6.11.0", + "css-loader": "~7.1.2", "eslint-plugin-react": "~7.37.4", "eslint-plugin-storybook": "~0.12.0", "global-jsdom": "^26.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4bef89954622a..9c542267cee0b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -147,15 +147,9 @@ importers: next-themes: specifier: ~0.4.6 version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - postcss: - specifier: ~8.5.3 - version: 8.5.3 postcss-calc: specifier: ~10.1.1 version: 10.1.1(postcss@8.5.3) - postcss-loader: - specifier: ~8.1.1 - version: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.7) react: specifier: ^19.1.0 version: 19.1.0 @@ -405,8 +399,8 @@ importers: specifier: ^7.0.3 version: 7.0.3 css-loader: - specifier: ~6.11.0 - version: 6.11.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + specifier: ~7.1.2 + version: 7.1.2(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) eslint-plugin-react: specifier: ~7.37.4 version: 7.37.5(eslint@9.26.0(jiti@2.4.2)) @@ -4091,6 +4085,18 @@ packages: webpack: optional: true + css-loader@7.1.2: + resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.27.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} @@ -12269,6 +12275,19 @@ snapshots: optionalDependencies: webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + css-loader@7.1.2(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) + postcss-modules-scope: 3.2.1(postcss@8.5.3) + postcss-modules-values: 4.0.0(postcss@8.5.3) + postcss-value-parser: 4.2.0 + semver: 7.7.1 + optionalDependencies: + webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) + css-select@4.3.0: dependencies: boolbase: 1.0.0 @@ -12774,7 +12793,7 @@ snapshots: tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-import-x: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -12802,27 +12821,16 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): - dependencies: - debug: 3.2.7 - optionalDependencies: - eslint: 9.26.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - optional: true eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: @@ -12853,7 +12861,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12871,34 +12879,6 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.26.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - optional: true - eslint-plugin-jsx-a11y@6.10.2(eslint@9.26.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 @@ -15199,17 +15179,6 @@ snapshots: transitivePeerDependencies: - typescript - postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.7): - dependencies: - cosmiconfig: 9.0.0(typescript@5.8.3) - jiti: 1.21.7 - postcss: 8.5.3 - semver: 7.7.1 - optionalDependencies: - webpack: 5.99.7 - transitivePeerDependencies: - - typescript - postcss-modules-extract-imports@3.1.0(postcss@8.5.3): dependencies: postcss: 8.5.3 @@ -16649,16 +16618,6 @@ snapshots: '@swc/core': 1.11.24 esbuild: 0.25.3 - terser-webpack-plugin@5.3.14(webpack@5.99.7): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.2 - serialize-javascript: 6.0.2 - terser: 5.39.0 - webpack: 5.99.7 - optional: true - terser@5.16.9: dependencies: '@jridgewell/source-map': 0.3.6 @@ -17185,38 +17144,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.99.7: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.7 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.1 - browserslist: 4.24.5 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.1 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(webpack@5.99.7) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - optional: true - webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3): dependencies: '@types/eslint-scope': 3.7.7 From 3d50b07054f283ae2b66b5550113ac5866b5c5c1 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 20 May 2025 23:08:22 -0400 Subject: [PATCH 0477/1385] fix(crowdin): workflow improvements (#7755) * fix(crowdin): workflow improvements * fixup! fix(crowdin): workflow improvements * fixup! fixup! fix(crowdin): workflow improvements * fixup! fixup! fixup! fix(crowdin): workflow improvements * [automated]: Crowdin Translations Sync (#7756) chore: sync translations from crowdin Signed-off-by: nodejs-crowdin <nodejs-crowdin@users.noreply.github.com> Co-authored-by: nodejs-crowdin <nodejs-crowdin@users.noreply.github.com> * Update translations-sync.yml Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: nodejs-crowdin <nodejs-crowdin@users.noreply.github.com> Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Node.js Crowdin Bot <148437438+nodejs-crowdin@users.noreply.github.com> Co-authored-by: nodejs-crowdin <nodejs-crowdin@users.noreply.github.com> --- .github/workflows/translations-sync.yml | 25 +++--- apps/site/pages/uk/about/index.mdx | 38 ++++++++ .../site/pages/uk/about/previous-releases.mdx | 32 +++++-- apps/site/pages/zh-tw/about/branding.mdx | 87 +++++++++++-------- packages/i18n/locales/uk.json | 29 ++++++- packages/i18n/locales/zh-tw.json | 29 ++++++- 6 files changed, 174 insertions(+), 66 deletions(-) diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index 5e3cd42ce7b37..d6674614e56a0 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -18,12 +18,12 @@ concurrency: permissions: contents: read +env: + BRANCH_NAME: chore/crowdin + jobs: synchronize-with-crowdin: runs-on: ubuntu-latest - outputs: - pull_request_number: ${{ steps.crowdin_pr.outputs.pull_request_number }} - steps: - name: Harden Runner uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 @@ -38,14 +38,13 @@ jobs: # see all the options at https://github.com/crowdin/github-action - name: Crowdin PR uses: crowdin/github-action@b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2 # v2.7.0 - id: crowdin_pr 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 + localization_branch_name: ${{ env.BRANCH_NAME }} 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)' @@ -74,8 +73,7 @@ jobs: - name: Git Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: - # Use the number from the output of crowdin/github-action - ref: refs/pull/${{ needs.synchronize-with-crowdin.outputs.pull_request_number }}/head + ref: ${{ env.BRANCH_NAME }} token: ${{ secrets.CROWDIN_GITHUB_BOT_TOKEN }} - name: Restore Lint Cache @@ -109,15 +107,12 @@ jobs: - name: Install packages run: pnpm install --frozen-lockfile - - name: Run `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: pnpm exec eslint "apps/site/pages/**/*.md?(x)" --fix --cache --cache-strategy=metadata --cache-file=apps/site/.eslintmdcache --config=apps/site/eslint.config.js + - name: Run ESLint + working-directory: apps/site + run: pnpm lint:md --fix - - name: Run `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: pnpm exec prettier "apps/site/{pages,i18n}/**/*.{json,md,mdx}" --check --write --cache --cache-strategy=metadata --cache-location=apps/site/.prettiercache + - name: Run Prettier + run: pnpm prettier:fix - name: Push Changes back to Pull Request uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0 diff --git a/apps/site/pages/uk/about/index.mdx b/apps/site/pages/uk/about/index.mdx index 11a83ab918c7f..a6ee2409318fb 100644 --- a/apps/site/pages/uk/about/index.mdx +++ b/apps/site/pages/uk/about/index.mdx @@ -53,3 +53,41 @@ Node.js надихався системами [Event Machine](https://github.com HTTP є повноцінною частиною Node.js, розроблений з урахуванням потокової передачі даних і низької затримки. Це робить Node.js ідеальним варіантом для створення основи для веббібліотеки або фреймворку. Те, що Node.js спроєктований без використання потоків, не означає, що ви не можете використовувати багато ядер у своєму середовищі. Дочірні процеси можна створити за допомогою нашого API [`child_process.fork()`](https://nodejs.org/api/child_process.html). Вони спроєктовані так, що з ними можна легко взаємодіяти. Модуль [`cluster`](https://nodejs.org/api/cluster.html) побудований на такому самому інтерфейсі, що дозволяє ділити сокети на багато процесів, аби збалансувати навантаження на ядра. + +## Офіційні ресурси Node.js + +Щоб забезпечити автентичність та безпеку під час роботи з Node.js, завжди використовуйте офіційні джерела. Не довіряйте електронним листам, бінарним файлам та завантаженням із неофіційних джерел. + +### Офіційні домени Node.js + +Для завантаження бінарних файлів Node.js та використання офіційної документації використовуйте лише ці домени: + +- [nodejs.org](https://nodejs.org) +- [nodejs.dev](https://nodejs.dev) _(Перенаправляє на https://nodejs.org)_ +- [iojs.org](https://iojs.org) _(Перенаправляє на https://nodejs.org)_ + +### Офіційні пакети npm + +Команда Node.js підтримує такі офіційні простори імен в npm: + +- [`@node-core`](https://npmjs.com/~node-core) +- [`@pkgjs`](https://npmjs.com/~pkgjs) + +Крім того, команда Node.js супроводжує пакети, опубліковані обліковим записом npm [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation). Інші пакети, які стосуються Node.js (як‑от [`undici`](https://www.npmjs.com/package/undici)), також можуть супроводжуватися учасниками з близькими зв'язками з проєктом. + +Використання пакетів команди Node.js гарантує, що ви працюватимете з офіційно підтримуваними компонентами Node.js. + +### Офіційні організації GitHub + +Node.js та інші проєкти супроводжуються під цими офіційними організаціями GitHub: + +- [nodejs](https://github.com/nodejs) +- [pkgjs](https://github.com/pkgjs) + +### Офіційні канали зв'язку + +Node.js та OpenJS Foundation комунікують через різні офіційні та спільнотні канали. Деталі, як долучитися до них, можна знайти на сторінці [Долучитися](https://nodejs.org/en/about/get-involved). + +### Повідомлення про проблеми й неполадки сайту + +Якщо ви помітите проблеми з вебсайтом Node.js, повідомте про них на [репозиторії вебсайту](https://github.com/nodejs/nodejs.org/issues). Щоб отримати дані про неполадки в реальному часі, відвідайте [сторінку статусу Node.js](https://status.nodejs.org). diff --git a/apps/site/pages/uk/about/previous-releases.mdx b/apps/site/pages/uk/about/previous-releases.mdx index c50df72d0f0b5..17b1240d727a8 100644 --- a/apps/site/pages/uk/about/previous-releases.mdx +++ b/apps/site/pages/uk/about/previous-releases.mdx @@ -26,14 +26,28 @@ layout: about ## Офіційні та спільнотні методи установки -Вебсайт Node.js пропонує різні методи установки, з якими можна встановити Node.js неінтерактивно. Наприклад, за допомогою інтерфейсів командного рядка, менеджерів пакетів ОС (як-от `apt`) або менеджерів версій Node.js (як-от `nvm`). +Вебсайт Node.js пропонує кілька неінтерактивних методів установки, як-от інтерфейси командного рядка (CLI), менеджери пакетів ОС (напр. `brew`) та менеджери версій Node.js (напр. `nvm`). -Аби популяризувати та прорекламувати внески спільноти, проєкт Node.js представив нову сторінку завантажень, яка містить і офіційні, і спільнотні методи установки, що надає більше гнучкості та опцій для користувачів. -Разом з цим ми представили концепцію «офіційних» та «спільнотних» методів установки. Щоб метод уважався «офіційним», він повинний відповідати наступним вимогам: +Аби показати та просувати внески спільноти, проєкт Node.js представляє нову сторінку завантажень, яка поділяє методи установки на «офіційні» та «спільнотні». Це надає користувачам більше гнучкості та вибору, а для зрозумілості ми створили критерії для кожної категорії. -| Вимоги | -| ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Нові релізи Node.js повинні бути доступні одразу після офіційного релізу | -| Супроводжувачі проєкту повинні мати близькі зв'язки з Node.js, у тому числі пряме спілкування | -| Метод установки завантажує офіційні бінарні файли, зібрані проєктом Node.js | -| Метод установки **не** повинний будувати з вихідного коду, коли доступні бінарні файли, та не повинний змінювати офіційні бінарні файли, надані Node.js | +### Офіційні методи установки + +«Офіційні» методи установки повинні виконувати наступні вимоги: + +| Вимоги до офіційних методів установки | +| :------------------------------------------------------------------------------------------------------------------------------------------------- | +| Нові релізи Node.js повинні бути доступні одразу після офіційного релізу. | +| Супроводжувачі проєкту повинні мати близькі зв'язки з проєктом Node.js, у тому числі й пряме спілкування. | +| Метод установки повинний завантажувати офіційні бінарні файли, зібрані проєктом Node.js. | +| Метод установки не повинний будувати з вихідного коду, коли доступні вже збудовані бінарні файли, а також не має змінювати офіційні бінарні файли. | + +### Спільнотні методи установки + +Спільнотні методи установки, які містяться на самообслуговуваній сторінці завантажень (/download), також мають відповідати мінімальному набору критеріїв: + +- **Підтримка версій:** Повинні підтримувати всі версії Node.js, які не мають статусу End-of-Life (EOL). +- **Сумісність ОС:** Повинні працювати на принаймні одній офіційно підтримуваній операційній системі (ОС). +- **Широка підтримка ОС:** Не можуть обмежуватися лише кількома дистрибутивами чи версіями ОС. + - Наприклад, якщо метод установки заявляє, що підтримує «Windows», він повинний працювати на «Windows 10», «Windows 11» та всіх їхніх випусках (включно із серверними версіями). + - Схожим чином, якщо метод установки заявляє, що підтримує «Linux», він повинний працювати на всіх великих дистрибутивах Linux, а не лише на конкретних. Також він не може покладатися на менеджери пакетів, специфічних для деяких дистрибутивів, як-от `apt` чи `dnf`. +- **Вільність і відкритість вихідного коду:** Повинні бути вільними для використання та мати відкритий вихідний код, не можуть продаватися як комерційний продукт та не можуть бути платним сервісом. diff --git a/apps/site/pages/zh-tw/about/branding.mdx b/apps/site/pages/zh-tw/about/branding.mdx index 11beabae534cb..b67baa381f398 100644 --- a/apps/site/pages/zh-tw/about/branding.mdx +++ b/apps/site/pages/zh-tw/about/branding.mdx @@ -3,12 +3,14 @@ title: Node.js 的品牌形象 layout: about --- -Node.js 的品牌形象 +# Node.js 的品牌形象 請閱讀[商標政策](https://trademark-policy.openjsf.org/)以取得 Node.js® 商標與標誌的使用權資訊。 ## Node.js 吉祥物 +感謝 [Angela Angelini](https://www.linkedin.com/in/angeliningl/) 設計及貢獻了 Rocket Turtle。 + <img alt="Node.js 吉祥物" src="/static/images/node-mascot.svg" @@ -22,51 +24,60 @@ Node.js 的品牌形象 ### Node.js® 橫向標誌 <table> -<tr> - <td> - <img alt="Node.js® 暗色橫向標誌" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> - </td> - - <td> - <img alt="Node.js® 亮色橫向標誌" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> - </td> -</tr> + <tbody> + <tr> + <td> + <img alt="Node.js® 暗色橫向標誌" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" /> + </td> + + <td> + <img alt="Node.js® 亮色橫向標誌" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" /> + </td> + </tr> + + </tbody> </table> ### Node.js® 堆疊標誌 <table> -<tr> - <td> - <img alt="Node.js® 暗色堆疊標誌" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> - </td> - - <td> - <img alt="Node.js® 亮色堆疊標誌" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> - </td> -</tr> - -<tr> - <td> - <img alt="Node.js® 黑色堆疊標誌" src="/static/logos/nodejsStackedBlack.svg" /> - </td> - - <td> - <img alt="Node.js® 白色堆疊標誌" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> - </td> -</tr> + <tbody> + <tr> + <td> + <img alt="Node.js® 暗色堆疊標誌" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" /> + </td> + + <td> + <img alt="Node.js® 亮色堆疊標誌" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + </td> + </tr> + + <tr> + <td> + <img alt="Node.js® 黑色堆疊標誌" src="/static/logos/nodejsStackedBlack.svg" /> + </td> + + <td> + <img alt="Node.js® 白色堆疊標誌" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> + </td> + </tr> + + </tbody> </table> ### JS 圖示 <table> -<tr> - <td> - <img alt="綠色 JS 圖示" src="/static/logos/jsIconGreen.sv" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> - </td> - - <td> - <img alt="白色 JS 圖示" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> - </td> -</tr> + <tbody> + <tr> + <td> + <img alt="綠色 JS 圖示" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" /> + </td> + + <td> + <img alt="白色 JS 圖示" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + </td> + </tr> + + </tbody> </table> diff --git a/packages/i18n/locales/uk.json b/packages/i18n/locales/uk.json index c6e1d1ce2b21a..a54075b6997d5 100644 --- a/packages/i18n/locales/uk.json +++ b/packages/i18n/locales/uk.json @@ -61,6 +61,7 @@ "links": { "asynchronousWork": "Асинхронна робота", "asynchronousFlowControl": "Асинхронне управління потоком", + "discoverPromisesInNodejs": "Проміси в Node.js", "overviewOfBlockingVsNonBlocking": "Огляд блокувальних і неблокувальних викликів", "javascriptAsynchronousProgrammingAndCallbacks": "Асинхронне програмування і функції зворотного виклику в JavaScript", "discoverJavascriptTimers": "Таймери JavaScript", @@ -108,6 +109,7 @@ "links": { "diagnostics": "Діагностика", "userJourney": "Шлях користувача", + "understandingAndTuningMemory": "Розуміння та налаштування пам'яті", "memory": "Пам’ять", "liveDebugging": "Налагодження в реальному часі", "poorPerformance": "Низька продуктивність", @@ -147,15 +149,38 @@ "downloadReleasesTable": { "version": "Node.js", "nApiVersion": "N-API", - "npmVersion": "npm", "codename": "Кодова назва", "releaseDate": "Опубліковано", + "firstReleased": "Уперше випущено", + "lastUpdated": "Востаннє оновлено", + "status": "Статус", + "details": "Деталі" + }, + "releaseModal": { + "title": "Node.js {version} ({codename})", + "titleWithoutCodename": "Node.js {version}", + "overview": "Огляд", + "minorVersions": "Мінорні версії", + "releaseAnnouncement": "Оголошення релізу", + "unsupportedVersionWarning": "Ця версія більше не супроводжується. Будь ласка, використовуйте підтримувану версію." + }, + "minorReleasesTable": { + "version": "Версія", + "links": "Посилання", "actions": { + "release": "Реліз", "changelog": "Список змін", - "releases": "Релізи", "docs": "Документація" } }, + "releaseOverview": { + "firstReleased": "Уперше випущено", + "lastUpdated": "Востаннє оновлено", + "minorVersions": "Мінорних версій", + "nApiVersion": "Версія N-API", + "npmVersion": "Версія npm", + "v8Version": "Версія V8" + }, "pagination": { "next": "Далі", "previous": "Назад" diff --git a/packages/i18n/locales/zh-tw.json b/packages/i18n/locales/zh-tw.json index 32400f7c9c2fc..d13e02455eb97 100644 --- a/packages/i18n/locales/zh-tw.json +++ b/packages/i18n/locales/zh-tw.json @@ -61,6 +61,7 @@ "links": { "asynchronousWork": "非同步工作", "asynchronousFlowControl": "非同步流程控制", + "discoverPromisesInNodejs": "探索 Node.js 中的 Promise", "overviewOfBlockingVsNonBlocking": "阻塞與非阻塞概述", "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript 中的非同步程式與回呼函式", "discoverJavascriptTimers": "探索 JavaScript 計時器", @@ -108,6 +109,7 @@ "links": { "diagnostics": "診斷訊息", "userJourney": "使用者旅程", + "understandingAndTuningMemory": "深入瞭解並調教記憶體", "memory": "記憶體", "liveDebugging": "即時偵錯", "poorPerformance": "低效能", @@ -147,15 +149,38 @@ "downloadReleasesTable": { "version": "Node.js", "nApiVersion": "N-API", - "npmVersion": "npm", "codename": "代號", "releaseDate": "發佈於", + "firstReleased": "首次釋出於", + "lastUpdated": "上次更新於", + "status": "狀態", + "details": "詳細資訊" + }, + "releaseModal": { + "title": "Node.js {version} ({codename})", + "titleWithoutCodename": "Node.js {version}", + "overview": "概覽", + "minorVersions": "小版本", + "releaseAnnouncement": "發行公告", + "unsupportedVersionWarning": "此版本已不再維護。請使用現正支援的版本。" + }, + "minorReleasesTable": { + "version": "版本", + "links": "連結", "actions": { + "release": "發行版本", "changelog": "更新紀錄", - "releases": "發行版本", "docs": "文件" } }, + "releaseOverview": { + "firstReleased": "首次釋出於", + "lastUpdated": "上次更新於", + "minorVersions": "小版本", + "nApiVersion": "N-API 版本", + "npmVersion": "npm 版本", + "v8Version": "V8 版本" + }, "pagination": { "next": "下一頁", "previous": "上一頁" From 259db02acd9a0f594a7179ada740608689a2a6a4 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Wed, 21 May 2025 06:47:02 -0400 Subject: [PATCH 0478/1385] chore(monorepo): `rehype-shiki` (#7760) * chore(monorepo): `rehype-shiki` * fixup! * add build to turbo --- .github/workflows/lint-and-tests.yml | 4 +- .../Downloads/Release/ReleaseCodeBox.tsx | 2 +- apps/site/components/MDX/CodeBox/index.tsx | 2 +- apps/site/next.mdx.plugins.mjs | 3 +- apps/site/package.json | 6 +-- apps/site/util/getHighlighter.ts | 23 --------- apps/site/util/getLanguageDisplayName.ts | 11 ----- packages/rehype-shiki/eslint.config.js | 17 +++++++ packages/rehype-shiki/package.json | 18 +++++++ .../src/__tests__/languages.test.mjs | 22 ++++----- packages/rehype-shiki/src/highlighter.mjs | 47 +++++++++++++++++++ packages/rehype-shiki/src/index.mjs | 5 ++ .../rehype-shiki/src/languages.mjs | 15 ++++++ .../rehype-shiki/src/plugin.mjs | 4 +- packages/rehype-shiki/turbo.json | 13 +++++ pnpm-lock.yaml | 41 +++++++++------- 16 files changed, 157 insertions(+), 76 deletions(-) delete mode 100644 apps/site/util/getHighlighter.ts delete mode 100644 apps/site/util/getLanguageDisplayName.ts create mode 100644 packages/rehype-shiki/eslint.config.js create mode 100644 packages/rehype-shiki/package.json rename apps/site/util/__tests__/getLanguageDisplayName.test.mjs => packages/rehype-shiki/src/__tests__/languages.test.mjs (62%) create mode 100644 packages/rehype-shiki/src/highlighter.mjs create mode 100644 packages/rehype-shiki/src/index.mjs rename apps/site/shiki.config.mjs => packages/rehype-shiki/src/languages.mjs (77%) rename apps/site/next.mdx.shiki.mjs => packages/rehype-shiki/src/plugin.mjs (98%) create mode 100644 packages/rehype-shiki/turbo.json diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 368edb118c53b..3ce3ffc34d5e4 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -149,10 +149,10 @@ jobs: if: ${{ !cancelled() && github.event_name != 'merge_group' }} uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2 with: - files: ./apps/site/lcov.info,./packages/ui-components/lcov.info + files: ./apps/site/lcov.info,./packages/*/lcov.info - name: Upload test results to Codecov if: ${{ !cancelled() && github.event_name != 'merge_group' }} uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0 with: - files: ./apps/site/junit.xml,./packages/ui-components/junit.xml + files: ./apps/site/junit.xml,./packages/*/junit.xml diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 1ee5e6303d0c0..0497ca0d234a9 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -1,5 +1,6 @@ 'use client'; +import { highlightToHtml } from '@node-core/rehype-shiki'; import AlertBox from '@node-core/ui-components/Common/AlertBox'; import Skeleton from '@node-core/ui-components/Common/Skeleton'; import { useTranslations } from 'next-intl'; @@ -16,7 +17,6 @@ import { } from '#site/providers/releaseProvider'; import type { ReleaseContextType } from '#site/types/release'; import { INSTALL_METHODS } from '#site/util/downloadUtils'; -import { highlightToHtml } from '#site/util/getHighlighter'; // Creates a minimal JavaScript interpreter for parsing the JavaScript code from the snippets // Note: that the code runs inside a sandboxed environment and cannot interact with any code outside of the sandbox diff --git a/apps/site/components/MDX/CodeBox/index.tsx b/apps/site/components/MDX/CodeBox/index.tsx index 8aa1367993b20..ef0b977a1a995 100644 --- a/apps/site/components/MDX/CodeBox/index.tsx +++ b/apps/site/components/MDX/CodeBox/index.tsx @@ -1,7 +1,7 @@ +import { getLanguageDisplayName } from '@node-core/rehype-shiki'; import type { FC, PropsWithChildren } from 'react'; import CodeBox from '#site/components/Common/CodeBox'; -import { getLanguageDisplayName } from '#site/util/getLanguageDisplayName'; type CodeBoxProps = { className?: string; showCopyButton?: string }; diff --git a/apps/site/next.mdx.plugins.mjs b/apps/site/next.mdx.plugins.mjs index 51a76ef0f7bcf..016407b360422 100644 --- a/apps/site/next.mdx.plugins.mjs +++ b/apps/site/next.mdx.plugins.mjs @@ -1,13 +1,12 @@ 'use strict'; +import rehypeShikiji from '@node-core/rehype-shiki'; import remarkHeadings from '@vcarl/remark-headings'; import rehypeAutolinkHeadings from 'rehype-autolink-headings'; import rehypeSlug from 'rehype-slug'; import remarkGfm from 'remark-gfm'; import readingTime from 'remark-reading-time'; -import rehypeShikiji from './next.mdx.shiki.mjs'; - /** * Provides all our Rehype Plugins that are used within MDX */ diff --git a/apps/site/package.json b/apps/site/package.json index 87ec48f918f5f..9a8833fe12747 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -28,6 +28,7 @@ "dependencies": { "@heroicons/react": "~2.2.0", "@mdx-js/mdx": "^3.1.0", + "@node-core/rehype-shiki": "workspace:*", "@node-core/ui-components": "workspace:*", "@node-core/website-i18n": "workspace:*", "@nodevu/core": "0.3.0", @@ -41,8 +42,6 @@ "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", "@radix-ui/react-tooltip": "^1.2.4", - "@shikijs/core": "^3.2.2", - "@shikijs/engine-javascript": "^3.2.2", "@tailwindcss/postcss": "~4.1.5", "@types/node": "22.15.3", "@types/react": "^19.1.0", @@ -56,7 +55,6 @@ "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", - "hast-util-to-string": "~3.0.1", "next": "15.3.1", "next-intl": "~4.1.0", "next-themes": "~0.4.6", @@ -69,10 +67,8 @@ "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.1", "semver": "~7.7.1", - "shiki": "~3.3.0", "sval": "^0.6.3", "tailwindcss": "~4.0.17", - "unist-util-visit": "~5.0.0", "vfile": "~6.0.3", "vfile-matter": "~5.0.1" }, diff --git a/apps/site/util/getHighlighter.ts b/apps/site/util/getHighlighter.ts deleted file mode 100644 index 63aa6d1c0b0ba..0000000000000 --- a/apps/site/util/getHighlighter.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { createHighlighterCoreSync } from '@shikijs/core'; -import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript'; - -import { LANGUAGES, DEFAULT_THEME } from '#site/shiki.config.mjs'; - -// This creates a memoized minimal Shikiji Syntax Highlighter -export const shiki = createHighlighterCoreSync({ - themes: [DEFAULT_THEME], - langs: LANGUAGES, - // Let's use Shiki's new Experimental JavaScript-based regex engine! - engine: createJavaScriptRegexEngine(), -}); - -export const highlightToHtml = (code: string, language: string) => - shiki - .codeToHtml(code, { lang: language, theme: DEFAULT_THEME }) - // Shiki will always return the Highlighted code encapsulated in a <pre> and <code> tag - // since our own CodeBox component handles the <code> tag, we just want to extract - // the inner highlighted code to the CodeBox - .match(/<code>(.+?)<\/code>/s)![1]; - -export const highlightToHast = (code: string, language: string) => - shiki.codeToHast(code, { lang: language, theme: DEFAULT_THEME }); diff --git a/apps/site/util/getLanguageDisplayName.ts b/apps/site/util/getLanguageDisplayName.ts deleted file mode 100644 index a62081bd93c4d..0000000000000 --- a/apps/site/util/getLanguageDisplayName.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { LANGUAGES } from '#site/shiki.config.mjs'; - -export const getLanguageDisplayName = (language: string): string => { - const languageByIdOrAlias = LANGUAGES.find( - ({ name, aliases }) => - name.toLowerCase() === language.toLowerCase() || - (aliases !== undefined && aliases.includes(language.toLowerCase())) - ); - - return languageByIdOrAlias?.displayName ?? language; -}; diff --git a/packages/rehype-shiki/eslint.config.js b/packages/rehype-shiki/eslint.config.js new file mode 100644 index 0000000000000..a6d556fefa8f3 --- /dev/null +++ b/packages/rehype-shiki/eslint.config.js @@ -0,0 +1,17 @@ +import baseConfig from '../../eslint.config.js'; + +export default [ + ...baseConfig, + { + languageOptions: { + parserOptions: { + // Allow nullish syntax (i.e. "?." or "??") + ecmaVersion: 2020, + }, + }, + rules: { + // Shiki's export isn't named, it's a re-export + 'import-x/named': 'off', + }, + }, +]; diff --git a/packages/rehype-shiki/package.json b/packages/rehype-shiki/package.json new file mode 100644 index 0000000000000..ed32e84e52e9e --- /dev/null +++ b/packages/rehype-shiki/package.json @@ -0,0 +1,18 @@ +{ + "name": "@node-core/rehype-shiki", + "type": "module", + "main": "./src/index.mjs", + "module": "./src/index.mjs", + "scripts": { + "lint:js": "eslint \"**/*.mjs\"", + "test": "node --test" + }, + "dependencies": { + "@shikijs/core": "^3.3.0", + "@shikijs/engine-javascript": "^3.3.0", + "classnames": "~2.5.1", + "hast-util-to-string": "^3.0.1", + "shiki": "~3.3.0", + "unist-util-visit": "^5.0.0" + } +} diff --git a/apps/site/util/__tests__/getLanguageDisplayName.test.mjs b/packages/rehype-shiki/src/__tests__/languages.test.mjs similarity index 62% rename from apps/site/util/__tests__/getLanguageDisplayName.test.mjs rename to packages/rehype-shiki/src/__tests__/languages.test.mjs index e70c4ecf5bc27..0900f25ff365b 100644 --- a/apps/site/util/__tests__/getLanguageDisplayName.test.mjs +++ b/packages/rehype-shiki/src/__tests__/languages.test.mjs @@ -1,20 +1,16 @@ import assert from 'node:assert/strict'; -import { it, describe, mock } from 'node:test'; +import { it, describe } from 'node:test'; -describe('getLanguageDisplayName', async () => { - mock.module('#site/shiki.config.mjs', { - namedExports: { - LANGUAGES: [ - { name: 'javascript', aliases: ['js'], displayName: 'JavaScript' }, - { name: 'typescript', aliases: ['ts'], displayName: 'TypeScript' }, - ], - }, - }); +import { getLanguageDisplayName, LANGUAGES } from '../languages.mjs'; - const { getLanguageDisplayName } = await import( - '#site/util/getLanguageDisplayName' - ); +LANGUAGES.splice( + 0, + LANGUAGES.length, + { name: 'javascript', aliases: ['js'], displayName: 'JavaScript' }, + { name: 'typescript', aliases: ['ts'], displayName: 'TypeScript' } +); +describe('getLanguageDisplayName', async () => { it('should return the display name for a known language', () => { assert.equal(getLanguageDisplayName('javascript'), 'JavaScript'); assert.equal(getLanguageDisplayName('js'), 'JavaScript'); diff --git a/packages/rehype-shiki/src/highlighter.mjs b/packages/rehype-shiki/src/highlighter.mjs new file mode 100644 index 0000000000000..a31fda8da7300 --- /dev/null +++ b/packages/rehype-shiki/src/highlighter.mjs @@ -0,0 +1,47 @@ +import { createHighlighterCoreSync } from '@shikijs/core'; +import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript'; + +import { LANGUAGES, DEFAULT_THEME } from './languages.mjs'; + +let _shiki; + +/** + * Lazy-load and memoize the minimal Shikiji Syntax Highlighter + * @returns {import('@shikijs/core').HighlighterCore} + */ +export const getShiki = () => { + if (!_shiki) { + _shiki = createHighlighterCoreSync({ + themes: [DEFAULT_THEME], + langs: LANGUAGES, + // Let's use Shiki's new Experimental JavaScript-based regex engine! + engine: createJavaScriptRegexEngine(), + }); + } + return _shiki; +}; + +/** + * Highlights code and returns the inner HTML inside the <code> tag + * + * @param {string} code - The code to highlight + * @param {string} language - The programming language to use for highlighting + * @returns {string} The inner HTML of the highlighted code + */ +export const highlightToHtml = (code, language) => + getShiki() + .codeToHtml(code, { lang: language, theme: DEFAULT_THEME }) + // Shiki will always return the Highlighted code encapsulated in a <pre> and <code> tag + // since our own CodeBox component handles the <code> tag, we just want to extract + // the inner highlighted code to the CodeBox + .match(/<code>(.+?)<\/code>/s)[1]; + +/** + * Highlights code and returns a HAST tree + * + * @param {string} code - The code to highlight + * @param {string} language - The programming language to use for highlighting + * @returns {import('hast').Element} The HAST representation of the highlighted code + */ +export const highlightToHast = (code, language) => + getShiki().codeToHast(code, { lang: language, theme: DEFAULT_THEME }); diff --git a/packages/rehype-shiki/src/index.mjs b/packages/rehype-shiki/src/index.mjs new file mode 100644 index 0000000000000..68cfc211ea64c --- /dev/null +++ b/packages/rehype-shiki/src/index.mjs @@ -0,0 +1,5 @@ +import { rehypeShikiji } from './plugin.mjs'; +export * from './highlighter.mjs'; +export * from './languages.mjs'; + +export default rehypeShikiji; diff --git a/apps/site/shiki.config.mjs b/packages/rehype-shiki/src/languages.mjs similarity index 77% rename from apps/site/shiki.config.mjs rename to packages/rehype-shiki/src/languages.mjs index f940a9311d686..d9764697ff335 100644 --- a/apps/site/shiki.config.mjs +++ b/packages/rehype-shiki/src/languages.mjs @@ -43,3 +43,18 @@ export const DEFAULT_THEME = { colorReplacements: { '#616e88': '#707e99' }, ...shikiNordTheme, }; + +/** + * Get the display name of a given language + * @param {string} language The language ID + * @returns {string} The display name of the language, or the input as a fallback + */ +export const getLanguageDisplayName = language => { + const languageByIdOrAlias = LANGUAGES.find( + ({ name, aliases }) => + name.toLowerCase() === language.toLowerCase() || + (aliases !== undefined && aliases.includes(language.toLowerCase())) + ); + + return languageByIdOrAlias?.displayName ?? language; +}; diff --git a/apps/site/next.mdx.shiki.mjs b/packages/rehype-shiki/src/plugin.mjs similarity index 98% rename from apps/site/next.mdx.shiki.mjs rename to packages/rehype-shiki/src/plugin.mjs index 9b8c0edbb94d4..d486615296c40 100644 --- a/apps/site/next.mdx.shiki.mjs +++ b/packages/rehype-shiki/src/plugin.mjs @@ -4,7 +4,7 @@ import classNames from 'classnames'; import { toString } from 'hast-util-to-string'; import { SKIP, visit } from 'unist-util-visit'; -import { highlightToHast } from './util/getHighlighter'; +import { highlightToHast } from './highlighter.mjs'; // This is what Remark will use as prefix within a <pre> className // to attribute the current language of the <pre> element @@ -53,7 +53,7 @@ function isCodeBlock(node) { ); } -export default function rehypeShikiji() { +export function rehypeShikiji() { return function (tree) { visit(tree, 'element', (_, index, parent) => { const languages = []; diff --git a/packages/rehype-shiki/turbo.json b/packages/rehype-shiki/turbo.json new file mode 100644 index 0000000000000..aa0ce04f53ac8 --- /dev/null +++ b/packages/rehype-shiki/turbo.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"], + "tasks": { + "build": {}, + "lint:js": { + "inputs": ["src/**/*.mjs"] + }, + "test": { + "inputs": ["src/**/*.mjs"] + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c542267cee0b..75aae31ba9fdd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,6 +51,9 @@ importers: '@mdx-js/mdx': specifier: ^3.1.0 version: 3.1.0(acorn@8.14.1) + '@node-core/rehype-shiki': + specifier: workspace:* + version: link:../../packages/rehype-shiki '@node-core/ui-components': specifier: workspace:* version: link:../../packages/ui-components @@ -80,7 +83,7 @@ importers: version: 2.1.4 '@radix-ui/react-slot': specifier: ^1.1.2 - version: 1.2.0(@types/react@19.1.2)(react@19.1.0) + version: 1.2.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-tabs': specifier: ^1.1.3 version: 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -90,12 +93,6 @@ importers: '@radix-ui/react-tooltip': specifier: ^1.2.4 version: 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@shikijs/core': - specifier: ^3.2.2 - version: 3.3.0 - '@shikijs/engine-javascript': - specifier: ^3.2.2 - version: 3.3.0 '@tailwindcss/postcss': specifier: ~4.1.5 version: 4.1.5 @@ -135,9 +132,6 @@ importers: gray-matter: specifier: ~4.0.3 version: 4.0.3 - hast-util-to-string: - specifier: ~3.0.1 - version: 3.0.1 next: specifier: 15.3.1 version: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -174,18 +168,12 @@ importers: semver: specifier: ~7.7.1 version: 7.7.1 - shiki: - specifier: ~3.3.0 - version: 3.3.0 sval: specifier: ^0.6.3 version: 0.6.7 tailwindcss: specifier: ~4.0.17 version: 4.0.17 - unist-util-visit: - specifier: ~5.0.0 - version: 5.0.0 vfile: specifier: ~6.0.3 version: 6.0.3 @@ -311,6 +299,27 @@ importers: specifier: ~8.31.1 version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + packages/rehype-shiki: + dependencies: + '@shikijs/core': + specifier: ^3.3.0 + version: 3.3.0 + '@shikijs/engine-javascript': + specifier: ^3.3.0 + version: 3.3.0 + classnames: + specifier: ~2.5.1 + version: 2.5.1 + hast-util-to-string: + specifier: ^3.0.1 + version: 3.0.1 + shiki: + specifier: ~3.3.0 + version: 3.3.0 + unist-util-visit: + specifier: ^5.0.0 + version: 5.0.0 + packages/ui-components: dependencies: '@heroicons/react': From 87b101664891170b0e5ff14416331fbe3248b24d Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Wed, 21 May 2025 17:43:24 +0200 Subject: [PATCH 0479/1385] Blog: v22.16.0 and v24.1.0 release posts (#7768) Refs: https://github.com/nodejs/node/pull/58388 Refs: https://github.com/nodejs/node/pull/58406 --- apps/site/pages/en/blog/release/v22.16.0.md | 313 ++++++++++++++++++++ apps/site/pages/en/blog/release/v24.1.0.md | 168 +++++++++++ 2 files changed, 481 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v22.16.0.md create mode 100644 apps/site/pages/en/blog/release/v24.1.0.md diff --git a/apps/site/pages/en/blog/release/v22.16.0.md b/apps/site/pages/en/blog/release/v22.16.0.md new file mode 100644 index 0000000000000..5d3e65cfaaca8 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.16.0.md @@ -0,0 +1,313 @@ +--- +date: '2025-05-21T15:31:48.705Z' +category: release +title: Node v22.16.0 (LTS) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-05-21, Version 22.16.0 'Jod' (LTS), @aduh95 + +### Notable Changes + +- \[[`c3ceaebb7a`](https://github.com/nodejs/node/commit/c3ceaebb7a)] - **deps**: update timezone to 2025b (Node.js GitHub Bot) [#57857](https://github.com/nodejs/node/pull/57857) +- \[[`5059a746ec`](https://github.com/nodejs/node/commit/5059a746ec)] - **doc**: add dario-piotrowicz to collaborators (Dario Piotrowicz) [#58102](https://github.com/nodejs/node/pull/58102) +- \[[`c8ceaaf397`](https://github.com/nodejs/node/commit/c8ceaaf397)] - **(SEMVER-MINOR)** **doc**: graduate multiple experimental apis (James M Snell) [#57765](https://github.com/nodejs/node/pull/57765) +- \[[`e21b37d9df`](https://github.com/nodejs/node/commit/e21b37d9df)] - **(SEMVER-MINOR)** **esm**: graduate import.meta properties (James M Snell) [#58011](https://github.com/nodejs/node/pull/58011) +- \[[`832640c35e`](https://github.com/nodejs/node/commit/832640c35e)] - **(SEMVER-MINOR)** **esm**: support top-level Wasm without package type (Guy Bedford) [#57610](https://github.com/nodejs/node/pull/57610) +- \[[`c510391d2f`](https://github.com/nodejs/node/commit/c510391d2f)] - **(SEMVER-MINOR)** **sqlite**: add StatementSync.prototype.columns() (Colin Ihrig) [#57490](https://github.com/nodejs/node/pull/57490) +- \[[`5d1230bec0`](https://github.com/nodejs/node/commit/5d1230bec0)] - **(SEMVER-MINOR)** **src**: set default config as `node.config.json` (Marco Ippolito) [#57171](https://github.com/nodejs/node/pull/57171) +- \[[`30bb1ccbb0`](https://github.com/nodejs/node/commit/30bb1ccbb0)] - **(SEMVER-MINOR)** **src**: create `THROW_ERR_OPTIONS_BEFORE_BOOTSTRAPPING` (Marco Ippolito) [#57016](https://github.com/nodejs/node/pull/57016) +- \[[`0350c6f478`](https://github.com/nodejs/node/commit/0350c6f478)] - **(SEMVER-MINOR)** **src**: add config file support (Marco Ippolito) [#57016](https://github.com/nodejs/node/pull/57016) +- \[[`e1d3a9e192`](https://github.com/nodejs/node/commit/e1d3a9e192)] - **(SEMVER-MINOR)** **src**: add ExecutionAsyncId getter for any Context (Attila Szegedi) [#57820](https://github.com/nodejs/node/pull/57820) +- \[[`0ec912f452`](https://github.com/nodejs/node/commit/0ec912f452)] - **(SEMVER-MINOR)** **stream**: preserve AsyncLocalStorage context in finished() (Gürgün Dayıoğlu) [#57865](https://github.com/nodejs/node/pull/57865) +- \[[`43490c8797`](https://github.com/nodejs/node/commit/43490c8797)] - **(SEMVER-MINOR)** **util**: add `types.isFloat16Array()` (Livia Medeiros) [#57879](https://github.com/nodejs/node/pull/57879) +- \[[`dda6ca9172`](https://github.com/nodejs/node/commit/dda6ca9172)] - **(SEMVER-MINOR)** **worker**: add worker.getHeapStatistics() (Matteo Collina) [#57888](https://github.com/nodejs/node/pull/57888) + +### Commits + +- \[[`4252dc798c`](https://github.com/nodejs/node/commit/4252dc798c)] - **assert**: support `Float16Array` in loose deep equality checks (Livia Medeiros) [#57881](https://github.com/nodejs/node/pull/57881) +- \[[`1c7396b078`](https://github.com/nodejs/node/commit/1c7396b078)] - **assert,util**: fix constructor lookup in deep equal comparison (Ruben Bridgewater) [#57876](https://github.com/nodejs/node/pull/57876) +- \[[`1ded5f25c8`](https://github.com/nodejs/node/commit/1ded5f25c8)] - **assert,util**: improve deep object comparison performance (Ruben Bridgewater) [#57648](https://github.com/nodejs/node/pull/57648) +- \[[`696b5f85ca`](https://github.com/nodejs/node/commit/696b5f85ca)] - **assert,util**: improve unequal number comparison performance (Ruben Bridgewater) [#57619](https://github.com/nodejs/node/pull/57619) +- \[[`775ee4d40f`](https://github.com/nodejs/node/commit/775ee4d40f)] - **assert,util**: improve array comparison (Ruben Bridgewater) [#57619](https://github.com/nodejs/node/pull/57619) +- \[[`3766992ba4`](https://github.com/nodejs/node/commit/3766992ba4)] - **benchmark**: add sqlite prepare select get (Vinícius Lourenço) [#58040](https://github.com/nodejs/node/pull/58040) +- \[[`8390276be3`](https://github.com/nodejs/node/commit/8390276be3)] - **benchmark**: add sqlite prepare select all (Vinícius Lourenço) [#58040](https://github.com/nodejs/node/pull/58040) +- \[[`6a9b79e5c1`](https://github.com/nodejs/node/commit/6a9b79e5c1)] - **benchmark**: add sqlite is transaction (Vinícius Lourenço) [#58040](https://github.com/nodejs/node/pull/58040) +- \[[`f689f98344`](https://github.com/nodejs/node/commit/f689f98344)] - **benchmark**: add sqlite prepare insert (Vinícius Lourenço) [#58040](https://github.com/nodejs/node/pull/58040) +- \[[`14a82804d7`](https://github.com/nodejs/node/commit/14a82804d7)] - **benchmark**: disambiguate `filename` and `dirname` read perf (Antoine du Hamel) [#58056](https://github.com/nodejs/node/pull/58056) +- \[[`e7e8256d35`](https://github.com/nodejs/node/commit/e7e8256d35)] - **buffer**: avoid creating unnecessary environment (Yagiz Nizipli) [#58053](https://github.com/nodejs/node/pull/58053) +- \[[`d7d8e8e994`](https://github.com/nodejs/node/commit/d7d8e8e994)] - **buffer**: define global v8::CFunction objects as const (Mert Can Altin) [#57676](https://github.com/nodejs/node/pull/57676) +- \[[`f37633e85a`](https://github.com/nodejs/node/commit/f37633e85a)] - **build**: use `$(BUILDTYPE)` when cleaning coverage files (Aviv Keller) [#57995](https://github.com/nodejs/node/pull/57995) +- \[[`e5bf67fe77`](https://github.com/nodejs/node/commit/e5bf67fe77)] - **build**: define python when generating `out/Makefile` (Aviv Keller) [#57970](https://github.com/nodejs/node/pull/57970) +- \[[`718f874ae0`](https://github.com/nodejs/node/commit/718f874ae0)] - **build**: fix zstd libname (Antoine du Hamel) [#57999](https://github.com/nodejs/node/pull/57999) +- \[[`53c5fdcae1`](https://github.com/nodejs/node/commit/53c5fdcae1)] - **crypto**: fix cross-realm `SharedArrayBuffer` validation (Antoine du Hamel) [#57974](https://github.com/nodejs/node/pull/57974) +- \[[`78f4ffee5d`](https://github.com/nodejs/node/commit/78f4ffee5d)] - **crypto**: fix cross-realm check of `ArrayBuffer` (Felipe Forbeck) [#57828](https://github.com/nodejs/node/pull/57828) +- \[[`f606352b63`](https://github.com/nodejs/node/commit/f606352b63)] - **crypto**: forbid passing `Float16Array` to `getRandomValues()` (Livia Medeiros) [#57880](https://github.com/nodejs/node/pull/57880) +- \[[`23c4e941c2`](https://github.com/nodejs/node/commit/23c4e941c2)] - **crypto**: remove BoringSSL dh-primes addition (Shelley Vohr) [#57023](https://github.com/nodejs/node/pull/57023) +- \[[`8339d9bc14`](https://github.com/nodejs/node/commit/8339d9bc14)] - **deps**: V8: cherry-pick f915fa4c9f41 (Chengzhong Wu) [#55484](https://github.com/nodejs/node/pull/55484) +- \[[`c2111dd126`](https://github.com/nodejs/node/commit/c2111dd126)] - **deps**: V8: backport e5dbbbadcbff (Darshan Sen) [#58120](https://github.com/nodejs/node/pull/58120) +- \[[`4cc49be951`](https://github.com/nodejs/node/commit/4cc49be951)] - **deps**: update zstd to 1.5.7 (Node.js GitHub Bot) [#57940](https://github.com/nodejs/node/pull/57940) +- \[[`c956d37c84`](https://github.com/nodejs/node/commit/c956d37c84)] - **deps**: update zlib to 1.3.0.1-motley-780819f (Node.js GitHub Bot) [#57768](https://github.com/nodejs/node/pull/57768) +- \[[`c3ceaebb7a`](https://github.com/nodejs/node/commit/c3ceaebb7a)] - **deps**: update timezone to 2025b (Node.js GitHub Bot) [#57857](https://github.com/nodejs/node/pull/57857) +- \[[`b5cd0eb590`](https://github.com/nodejs/node/commit/b5cd0eb590)] - **deps**: update simdutf to 6.4.2 (Node.js GitHub Bot) [#57855](https://github.com/nodejs/node/pull/57855) +- \[[`3eb6b814e9`](https://github.com/nodejs/node/commit/3eb6b814e9)] - **deps**: update simdutf to 6.4.0 (Node.js GitHub Bot) [#56764](https://github.com/nodejs/node/pull/56764) +- \[[`0be9fa3218`](https://github.com/nodejs/node/commit/0be9fa3218)] - **deps**: update icu to 77.1 (Node.js GitHub Bot) [#57455](https://github.com/nodejs/node/pull/57455) +- \[[`d5cf4254fb`](https://github.com/nodejs/node/commit/d5cf4254fb)] - **doc**: add HBSPS as triager (Wiyeong Seo) [#57980](https://github.com/nodejs/node/pull/57980) +- \[[`ad0861dba0`](https://github.com/nodejs/node/commit/ad0861dba0)] - **doc**: add ambassaor message (Brian Muenzenmeyer) [#57600](https://github.com/nodejs/node/pull/57600) +- \[[`0d3ec1aafe`](https://github.com/nodejs/node/commit/0d3ec1aafe)] - **doc**: fix misaligned options in vm.compileFunction() (Jimmy Leung) [#58145](https://github.com/nodejs/node/pull/58145) +- \[[`1f70baf3b0`](https://github.com/nodejs/node/commit/1f70baf3b0)] - **doc**: add missing options.signal to readlinePromises.createInterface() (Jimmy Leung) [#55456](https://github.com/nodejs/node/pull/55456) +- \[[`ec6a48621f`](https://github.com/nodejs/node/commit/ec6a48621f)] - **doc**: fix typo of file `zlib.md` (yusheng chen) [#58093](https://github.com/nodejs/node/pull/58093) +- \[[`37e360e386`](https://github.com/nodejs/node/commit/37e360e386)] - **doc**: make stability labels more consistent (Antoine du Hamel) [#57516](https://github.com/nodejs/node/pull/57516) +- \[[`2b5d63d36e`](https://github.com/nodejs/node/commit/2b5d63d36e)] - **doc**: allow the $schema property in node.config.json (Remco Haszing) [#57560](https://github.com/nodejs/node/pull/57560) +- \[[`a2063638e2`](https://github.com/nodejs/node/commit/a2063638e2)] - **doc**: fix `AsyncLocalStorage` example response changes after node v18 (Naor Tedgi (Abu Emma)) [#57969](https://github.com/nodejs/node/pull/57969) +- \[[`474c2b14c3`](https://github.com/nodejs/node/commit/474c2b14c3)] - **doc**: mark Node.js 18 as End-of-Life (Richard Lau) [#58084](https://github.com/nodejs/node/pull/58084) +- \[[`5059a746ec`](https://github.com/nodejs/node/commit/5059a746ec)] - **doc**: add dario-piotrowicz to collaborators (Dario Piotrowicz) [#58102](https://github.com/nodejs/node/pull/58102) +- \[[`1eec170fc3`](https://github.com/nodejs/node/commit/1eec170fc3)] - **doc**: fix formatting of `import.meta.filename` section (Antoine du Hamel) [#58079](https://github.com/nodejs/node/pull/58079) +- \[[`7f108de525`](https://github.com/nodejs/node/commit/7f108de525)] - **doc**: fix env variable name in `util.styleText` (Antoine du Hamel) [#58072](https://github.com/nodejs/node/pull/58072) +- \[[`54b3f7fffc`](https://github.com/nodejs/node/commit/54b3f7fffc)] - **doc**: add returns for https.get (Eng Zer Jun) [#58025](https://github.com/nodejs/node/pull/58025) +- \[[`66f2c605a8`](https://github.com/nodejs/node/commit/66f2c605a8)] - **doc**: fix typo in `buffer.md` (chocolateboy) [#58052](https://github.com/nodejs/node/pull/58052) +- \[[`b0256dd42b`](https://github.com/nodejs/node/commit/b0256dd42b)] - **doc**: correct deprecation type of `assert.CallTracker` (René) [#57997](https://github.com/nodejs/node/pull/57997) +- \[[`581439c9e6`](https://github.com/nodejs/node/commit/581439c9e6)] - **doc**: mark devtools integration section as active development (Chengzhong Wu) [#57886](https://github.com/nodejs/node/pull/57886) +- \[[`a2a2a2f027`](https://github.com/nodejs/node/commit/a2a2a2f027)] - **doc**: fix typo in `module.md` (Alex Schwartz) [#57889](https://github.com/nodejs/node/pull/57889) +- \[[`c0ec4e2935`](https://github.com/nodejs/node/commit/c0ec4e2935)] - **doc**: increase z-index of header element (Dario Piotrowicz) [#57851](https://github.com/nodejs/node/pull/57851) +- \[[`93d19ec6cd`](https://github.com/nodejs/node/commit/93d19ec6cd)] - **doc**: add missing TS formats for `load` hooks (Antoine du Hamel) [#57837](https://github.com/nodejs/node/pull/57837) +- \[[`f5ea06c61f`](https://github.com/nodejs/node/commit/f5ea06c61f)] - **doc**: clarify the multi REPL example (Dario Piotrowicz) [#57759](https://github.com/nodejs/node/pull/57759) +- \[[`80c4fe1b70`](https://github.com/nodejs/node/commit/80c4fe1b70)] - **doc**: fix deprecation type for `DEP0148` (Livia Medeiros) [#57785](https://github.com/nodejs/node/pull/57785) +- \[[`01cad99da0`](https://github.com/nodejs/node/commit/01cad99da0)] - **doc**: list DOMException as a potential error raised by Node.js (Chengzhong Wu) [#57783](https://github.com/nodejs/node/pull/57783) +- \[[`a08b714a46`](https://github.com/nodejs/node/commit/a08b714a46)] - **doc**: add missing v0.x changelog entries (Antoine du Hamel) [#57779](https://github.com/nodejs/node/pull/57779) +- \[[`d0b48350fd`](https://github.com/nodejs/node/commit/d0b48350fd)] - **doc**: fix typo in writing-docs (Sebastian Beltran) [#57776](https://github.com/nodejs/node/pull/57776) +- \[[`bde3725f8b`](https://github.com/nodejs/node/commit/bde3725f8b)] - **doc**: clarify examples section in REPL doc (Dario Piotrowicz) [#57762](https://github.com/nodejs/node/pull/57762) +- \[[`c8ceaaf397`](https://github.com/nodejs/node/commit/c8ceaaf397)] - **(SEMVER-MINOR)** **doc**: graduate multiple experimental apis (James M Snell) [#57765](https://github.com/nodejs/node/pull/57765) +- \[[`92428c2609`](https://github.com/nodejs/node/commit/92428c2609)] - **doc**: explicitly state that corepack will be removed in v25+ (Trivikram Kamat) [#57747](https://github.com/nodejs/node/pull/57747) +- \[[`298969e1dd`](https://github.com/nodejs/node/commit/298969e1dd)] - **doc**: update position type to integer | null in fs (Yukihiro Hasegawa) [#57745](https://github.com/nodejs/node/pull/57745) +- \[[`a9d28e27c9`](https://github.com/nodejs/node/commit/a9d28e27c9)] - **doc**: update CI instructions (Antoine du Hamel) [#57743](https://github.com/nodejs/node/pull/57743) +- \[[`133d2878a1`](https://github.com/nodejs/node/commit/133d2878a1)] - **doc**: update example of using `await` in REPL (Dario Piotrowicz) [#57653](https://github.com/nodejs/node/pull/57653) +- \[[`fc5f126629`](https://github.com/nodejs/node/commit/fc5f126629)] - **doc**: add back mention of visa fees to onboarding doc (Darshan Sen) [#57730](https://github.com/nodejs/node/pull/57730) +- \[[`945f4ac538`](https://github.com/nodejs/node/commit/945f4ac538)] - **doc**: process.execve is only unavailable for Windows (Yaksh Bariya) [#57726](https://github.com/nodejs/node/pull/57726) +- \[[`f3b885bb5e`](https://github.com/nodejs/node/commit/f3b885bb5e)] - **doc**: clarify `unhandledRejection` events behaviors in process doc (Dario Piotrowicz) [#57654](https://github.com/nodejs/node/pull/57654) +- \[[`7326dda5b0`](https://github.com/nodejs/node/commit/7326dda5b0)] - **doc**: improved fetch docs (Alessandro Miliucci) [#57296](https://github.com/nodejs/node/pull/57296) +- \[[`6906c5eb1f`](https://github.com/nodejs/node/commit/6906c5eb1f)] - **doc**: document REPL custom eval arguments (Dario Piotrowicz) [#57690](https://github.com/nodejs/node/pull/57690) +- \[[`47a7564e8f`](https://github.com/nodejs/node/commit/47a7564e8f)] - **doc**: classify Chrome DevTools Protocol as tier 2 (Chengzhong Wu) [#57634](https://github.com/nodejs/node/pull/57634) +- \[[`e274cc1310`](https://github.com/nodejs/node/commit/e274cc1310)] - **doc**: replace NOTE that does not render properly (Colin Ihrig) [#57484](https://github.com/nodejs/node/pull/57484) +- \[[`bef06b11df`](https://github.com/nodejs/node/commit/bef06b11df)] - **esm**: avoid `import.meta` setup costs for unused properties (Antoine du Hamel) [#57286](https://github.com/nodejs/node/pull/57286) +- \[[`e21b37d9df`](https://github.com/nodejs/node/commit/e21b37d9df)] - **(SEMVER-MINOR)** **esm**: graduate import.meta properties (James M Snell) [#58011](https://github.com/nodejs/node/pull/58011) +- \[[`832640c35e`](https://github.com/nodejs/node/commit/832640c35e)] - **(SEMVER-MINOR)** **esm**: support top-level Wasm without package type (Guy Bedford) [#57610](https://github.com/nodejs/node/pull/57610) +- \[[`8f643471ef`](https://github.com/nodejs/node/commit/8f643471ef)] - **fs**: improve globSync performance (Rich Trott) [#57725](https://github.com/nodejs/node/pull/57725) +- \[[`bf9e17ecc6`](https://github.com/nodejs/node/commit/bf9e17ecc6)] - **http2**: use args.This() instead of args.Holder() (Joyee Cheung) [#58004](https://github.com/nodejs/node/pull/58004) +- \[[`137717354f`](https://github.com/nodejs/node/commit/137717354f)] - **http2**: fix graceful session close (Kushagra Pandey) [#57808](https://github.com/nodejs/node/pull/57808) +- \[[`9baf580269`](https://github.com/nodejs/node/commit/9baf580269)] - **http2**: fix check for `frame->hd.type` (hanguanqiang) [#57644](https://github.com/nodejs/node/pull/57644) +- \[[`b8189242b2`](https://github.com/nodejs/node/commit/b8189242b2)] - **http2**: skip writeHead if stream is closed (Shima Ryuhei) [#57686](https://github.com/nodejs/node/pull/57686) +- \[[`4e02a1650a`](https://github.com/nodejs/node/commit/4e02a1650a)] - **lib**: remove unused file `fetch_module` (Michaël Zasso) [#55880](https://github.com/nodejs/node/pull/55880) +- \[[`d9700fef26`](https://github.com/nodejs/node/commit/d9700fef26)] - **lib**: avoid StackOverflow on `serializeError` (Chengzhong Wu) [#58075](https://github.com/nodejs/node/pull/58075) +- \[[`f3a16b6d9c`](https://github.com/nodejs/node/commit/f3a16b6d9c)] - **lib**: resolve the issue of not adhering to the specified buffer size (0hm☘️🏳️‍⚧️) [#55896](https://github.com/nodejs/node/pull/55896) +- \[[`d4fc282f73`](https://github.com/nodejs/node/commit/d4fc282f73)] - **lib**: fix AbortSignal.any() with timeout signals (Gürgün Dayıoğlu) [#57867](https://github.com/nodejs/node/pull/57867) +- \[[`f7e2902861`](https://github.com/nodejs/node/commit/f7e2902861)] - **lib**: use Map primordial for ActiveAsyncContextFrame (Gürgün Dayıoğlu) [#57670](https://github.com/nodejs/node/pull/57670) +- \[[`8652b0e168`](https://github.com/nodejs/node/commit/8652b0e168)] - **meta**: set nodejs/config as codeowner (Marco Ippolito) [#57237](https://github.com/nodejs/node/pull/57237) +- \[[`e98504ed95`](https://github.com/nodejs/node/commit/e98504ed95)] - **meta**: allow penetration testing on live system with prior authorization (Matteo Collina) [#57966](https://github.com/nodejs/node/pull/57966) +- \[[`340731bea0`](https://github.com/nodejs/node/commit/340731bea0)] - **meta**: fix subsystem in commit title (Luigi Pinca) [#57945](https://github.com/nodejs/node/pull/57945) +- \[[`d767cbffcf`](https://github.com/nodejs/node/commit/d767cbffcf)] - **meta**: bump Mozilla-Actions/sccache-action from 0.0.8 to 0.0.9 (dependabot\[bot]) [#57720](https://github.com/nodejs/node/pull/57720) +- \[[`575f904b13`](https://github.com/nodejs/node/commit/575f904b13)] - **meta**: bump actions/download-artifact from 4.1.9 to 4.2.1 (dependabot\[bot]) [#57719](https://github.com/nodejs/node/pull/57719) +- \[[`acd323c069`](https://github.com/nodejs/node/commit/acd323c069)] - **meta**: bump actions/setup-python from 5.4.0 to 5.5.0 (dependabot\[bot]) [#57718](https://github.com/nodejs/node/pull/57718) +- \[[`21246fec20`](https://github.com/nodejs/node/commit/21246fec20)] - **meta**: bump peter-evans/create-pull-request from 7.0.7 to 7.0.8 (dependabot\[bot]) [#57717](https://github.com/nodejs/node/pull/57717) +- \[[`97f32d5849`](https://github.com/nodejs/node/commit/97f32d5849)] - **meta**: bump github/codeql-action from 3.28.10 to 3.28.13 (dependabot\[bot]) [#57716](https://github.com/nodejs/node/pull/57716) +- \[[`90ddbb8cfa`](https://github.com/nodejs/node/commit/90ddbb8cfa)] - **meta**: bump actions/cache from 4.2.2 to 4.2.3 (dependabot\[bot]) [#57715](https://github.com/nodejs/node/pull/57715) +- \[[`728425d03e`](https://github.com/nodejs/node/commit/728425d03e)] - **meta**: bump actions/setup-node from 4.2.0 to 4.3.0 (dependabot\[bot]) [#57714](https://github.com/nodejs/node/pull/57714) +- \[[`1f799140e0`](https://github.com/nodejs/node/commit/1f799140e0)] - **meta**: bump actions/upload-artifact from 4.6.1 to 4.6.2 (dependabot\[bot]) [#57713](https://github.com/nodejs/node/pull/57713) +- \[[`021b174a1f`](https://github.com/nodejs/node/commit/021b174a1f)] - **module**: tidy code string concat → string templates (Jacob Smith) [#55820](https://github.com/nodejs/node/pull/55820) +- \[[`44c5718476`](https://github.com/nodejs/node/commit/44c5718476)] - **module**: fix incorrect formatting in require(esm) cycle error message (haykam821) [#57453](https://github.com/nodejs/node/pull/57453) +- \[[`bb09b4d4ae`](https://github.com/nodejs/node/commit/bb09b4d4ae)] - **module**: improve `getPackageType` performance (Dario Piotrowicz) [#57599](https://github.com/nodejs/node/pull/57599) +- \[[`9e6054e715`](https://github.com/nodejs/node/commit/9e6054e715)] - **module**: remove unnecessary `readPackage` function (Dario Piotrowicz) [#57596](https://github.com/nodejs/node/pull/57596) +- \[[`4a8db273ba`](https://github.com/nodejs/node/commit/4a8db273ba)] - **node-api**: add nested object wrap and napi_ref test (Chengzhong Wu) [#57981](https://github.com/nodejs/node/pull/57981) +- \[[`3c65058f20`](https://github.com/nodejs/node/commit/3c65058f20)] - **node-api**: convert NewEnv to node_napi_env\_\_::New (Vladimir Morozov) [#57834](https://github.com/nodejs/node/pull/57834) +- \[[`a4105db1f7`](https://github.com/nodejs/node/commit/a4105db1f7)] - **os**: fix netmask format check condition in getCIDR function (Wiyeong Seo) [#57324](https://github.com/nodejs/node/pull/57324) +- \[[`248c938139`](https://github.com/nodejs/node/commit/248c938139)] - **process**: disable building execve on IBM i (Abdirahim Musse) [#57883](https://github.com/nodejs/node/pull/57883) +- \[[`972275697a`](https://github.com/nodejs/node/commit/972275697a)] - **repl**: deprecate `repl.builtinModules` (Dario Piotrowicz) [#57508](https://github.com/nodejs/node/pull/57508) +- \[[`7485309d7e`](https://github.com/nodejs/node/commit/7485309d7e)] - **sqlite**: add location method (Edy Silva) [#57860](https://github.com/nodejs/node/pull/57860) +- \[[`c12cd2a190`](https://github.com/nodejs/node/commit/c12cd2a190)] - **sqlite**: add timeout options to DatabaseSync (Edy Silva) [#57752](https://github.com/nodejs/node/pull/57752) +- \[[`5e0503a967`](https://github.com/nodejs/node/commit/5e0503a967)] - **sqlite**: add setReturnArrays method to StatementSync (Gürgün Dayıoğlu) [#57542](https://github.com/nodejs/node/pull/57542) +- \[[`ed9d2fd51a`](https://github.com/nodejs/node/commit/ed9d2fd51a)] - **sqlite**: enable common flags (Edy Silva) [#57621](https://github.com/nodejs/node/pull/57621) +- \[[`06dcb318bc`](https://github.com/nodejs/node/commit/06dcb318bc)] - **sqlite**: refactor prepared statement iterator (Colin Ihrig) [#57569](https://github.com/nodejs/node/pull/57569) +- \[[`c510391d2f`](https://github.com/nodejs/node/commit/c510391d2f)] - **(SEMVER-MINOR)** **sqlite**: add StatementSync.prototype.columns() (Colin Ihrig) [#57490](https://github.com/nodejs/node/pull/57490) +- \[[`4e24456a1a`](https://github.com/nodejs/node/commit/4e24456a1a)] - **sqlite**: reset statement immediately in run() (Colin Ihrig) [#57350](https://github.com/nodejs/node/pull/57350) +- \[[`a9a6891b0b`](https://github.com/nodejs/node/commit/a9a6891b0b)] - **sqlite**: fix coverity warnings related to backup() (Colin Ihrig) [#56961](https://github.com/nodejs/node/pull/56961) +- \[[`d2e1bcf3d4`](https://github.com/nodejs/node/commit/d2e1bcf3d4)] - **sqlite**: fix use-after-free in StatementSync due to premature GC (Divy Srivastava) [#56840](https://github.com/nodejs/node/pull/56840) +- \[[`cfe15ca7b4`](https://github.com/nodejs/node/commit/cfe15ca7b4)] - **sqlite**: handle conflicting SQLite and JS errors (Colin Ihrig) [#56787](https://github.com/nodejs/node/pull/56787) +- \[[`0e999eb65f`](https://github.com/nodejs/node/commit/0e999eb65f)] - **sqlite**: add getter to detect transactions (Colin Ihrig) [#57925](https://github.com/nodejs/node/pull/57925) +- \[[`20b27331c0`](https://github.com/nodejs/node/commit/20b27331c0)] - **sqlite, test**: expose sqlite online backup api (Edy Silva) [#56253](https://github.com/nodejs/node/pull/56253) +- \[[`8856712171`](https://github.com/nodejs/node/commit/8856712171)] - **sqlite,doc,test**: add aggregate function (Edy Silva) [#56600](https://github.com/nodejs/node/pull/56600) +- \[[`120050db97`](https://github.com/nodejs/node/commit/120050db97)] - **sqlite,src**: refactor sqlite value conversion (Edy Silva) [#57571](https://github.com/nodejs/node/pull/57571) +- \[[`4c5555d558`](https://github.com/nodejs/node/commit/4c5555d558)] - **src**: initialize privateSymbols for per_context (Jason Zhang) [#57479](https://github.com/nodejs/node/pull/57479) +- \[[`d2ce9023b1`](https://github.com/nodejs/node/commit/d2ce9023b1)] - **src**: ensure primordials are initialized exactly once (Chengzhong Wu) [#57519](https://github.com/nodejs/node/pull/57519) +- \[[`06179be6ca`](https://github.com/nodejs/node/commit/06179be6ca)] - **src**: disable abseil deadlock detection (Chengzhong Wu) [#57582](https://github.com/nodejs/node/pull/57582) +- \[[`5121c47990`](https://github.com/nodejs/node/commit/5121c47990)] - **src**: fix node_config_file.h compilation error in GN build (Cheng) [#57210](https://github.com/nodejs/node/pull/57210) +- \[[`5d1230bec0`](https://github.com/nodejs/node/commit/5d1230bec0)] - **(SEMVER-MINOR)** **src**: set default config as `node.config.json` (Marco Ippolito) [#57171](https://github.com/nodejs/node/pull/57171) +- \[[`ccee741c43`](https://github.com/nodejs/node/commit/ccee741c43)] - **src**: namespace config file flags (Marco Ippolito) [#57170](https://github.com/nodejs/node/pull/57170) +- \[[`30bb1ccbb0`](https://github.com/nodejs/node/commit/30bb1ccbb0)] - **(SEMVER-MINOR)** **src**: create `THROW_ERR_OPTIONS_BEFORE_BOOTSTRAPPING` (Marco Ippolito) [#57016](https://github.com/nodejs/node/pull/57016) +- \[[`0350c6f478`](https://github.com/nodejs/node/commit/0350c6f478)] - **(SEMVER-MINOR)** **src**: add config file support (Marco Ippolito) [#57016](https://github.com/nodejs/node/pull/57016) +- \[[`eef37d00cb`](https://github.com/nodejs/node/commit/eef37d00cb)] - **src**: add more debug logs and comments in NodePlatform (Joyee Cheung) [#58047](https://github.com/nodejs/node/pull/58047) +- \[[`678e8f57c0`](https://github.com/nodejs/node/commit/678e8f57c0)] - **src**: add dcheck_eq for Object::New constructor calls (Jonas) [#57943](https://github.com/nodejs/node/pull/57943) +- \[[`aee45e2036`](https://github.com/nodejs/node/commit/aee45e2036)] - **src**: move windows specific fns to `_WIN32` (Yagiz Nizipli) [#57951](https://github.com/nodejs/node/pull/57951) +- \[[`6206a8edbc`](https://github.com/nodejs/node/commit/6206a8edbc)] - **src**: improve thread safety of TaskQueue (Shelley Vohr) [#57910](https://github.com/nodejs/node/pull/57910) +- \[[`03936f31c1`](https://github.com/nodejs/node/commit/03936f31c1)] - **src**: fixup errorhandling more in various places (James M Snell) [#57852](https://github.com/nodejs/node/pull/57852) +- \[[`010dd91a19`](https://github.com/nodejs/node/commit/010dd91a19)] - **src**: fix typo in comments (Edy Silva) [#57868](https://github.com/nodejs/node/pull/57868) +- \[[`e00c1ecbd2`](https://github.com/nodejs/node/commit/e00c1ecbd2)] - **src**: add BaseObjectPtr nullptr operations (Chengzhong Wu) [#56585](https://github.com/nodejs/node/pull/56585) +- \[[`648ad252e1`](https://github.com/nodejs/node/commit/648ad252e1)] - **src**: remove `void*` -> `char*` -> `void*` casts (Tobias Nießen) [#57791](https://github.com/nodejs/node/pull/57791) +- \[[`680b434a62`](https://github.com/nodejs/node/commit/680b434a62)] - **src**: improve error handing in node_messaging (James M Snell) [#57760](https://github.com/nodejs/node/pull/57760) +- \[[`18f5301747`](https://github.com/nodejs/node/commit/18f5301747)] - **src**: remove unused detachArrayBuffer method (Yagiz Nizipli) [#58055](https://github.com/nodejs/node/pull/58055) +- \[[`065e8cd670`](https://github.com/nodejs/node/commit/065e8cd670)] - **src**: use macros to reduce code duplication is cares_wrap (James M Snell) [#57937](https://github.com/nodejs/node/pull/57937) +- \[[`39af5d678f`](https://github.com/nodejs/node/commit/39af5d678f)] - **src**: improve error handling in cares_wrap (James M Snell) [#57937](https://github.com/nodejs/node/pull/57937) +- \[[`ca020fdc4e`](https://github.com/nodejs/node/commit/ca020fdc4e)] - **src**: fix -Wunreachable-code-return in node_sea (Shelley Vohr) [#57664](https://github.com/nodejs/node/pull/57664) +- \[[`32b6e7094a`](https://github.com/nodejs/node/commit/32b6e7094a)] - **src**: change DCHECK to CHECK (Wuli Zuo) [#57948](https://github.com/nodejs/node/pull/57948) +- \[[`e1d3a9e192`](https://github.com/nodejs/node/commit/e1d3a9e192)] - **(SEMVER-MINOR)** **src**: add ExecutionAsyncId getter for any Context (Attila Szegedi) [#57820](https://github.com/nodejs/node/pull/57820) +- \[[`96243a723a`](https://github.com/nodejs/node/commit/96243a723a)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#57646](https://github.com/nodejs/node/pull/57646) +- \[[`0f2cbc17c7`](https://github.com/nodejs/node/commit/0f2cbc17c7)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#57642](https://github.com/nodejs/node/pull/57642) +- \[[`d1c6f861d5`](https://github.com/nodejs/node/commit/d1c6f861d5)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#57578](https://github.com/nodejs/node/pull/57578) +- \[[`ab0d3a38db`](https://github.com/nodejs/node/commit/ab0d3a38db)] - **src**: improve error message for invalid child stdio type in spawn_sync (Dario Piotrowicz) [#57589](https://github.com/nodejs/node/pull/57589) +- \[[`24b182e7b3`](https://github.com/nodejs/node/commit/24b182e7b3)] - **src**: implement util.types fast API calls (Ruben Bridgewater) [#57819](https://github.com/nodejs/node/pull/57819) +- \[[`dda6423be9`](https://github.com/nodejs/node/commit/dda6423be9)] - **src**: enter and lock isolate properly in json parser (Joyee Cheung) [#57823](https://github.com/nodejs/node/pull/57823) +- \[[`4754c693f8`](https://github.com/nodejs/node/commit/4754c693f8)] - **src**: improve error handling in `node_env_var.cc` (Antoine du Hamel) [#57767](https://github.com/nodejs/node/pull/57767) +- \[[`db483bbe63`](https://github.com/nodejs/node/commit/db483bbe63)] - **src**: improve error handling in node_http2 (James M Snell) [#57764](https://github.com/nodejs/node/pull/57764) +- \[[`b0277700d6`](https://github.com/nodejs/node/commit/b0277700d6)] - **src**: improve error handling in crypto_x509 (James M Snell) [#57757](https://github.com/nodejs/node/pull/57757) +- \[[`353587f984`](https://github.com/nodejs/node/commit/353587f984)] - **src**: improve error handling in callback.cc (James M Snell) [#57758](https://github.com/nodejs/node/pull/57758) +- \[[`bec053ab20`](https://github.com/nodejs/node/commit/bec053ab20)] - **src**: remove unused variable in crypto_x509.cc (Michaël Zasso) [#57754](https://github.com/nodejs/node/pull/57754) +- \[[`38a329a857`](https://github.com/nodejs/node/commit/38a329a857)] - **src**: fix kill signal 0 on Windows (Stefan Stojanovic) [#57695](https://github.com/nodejs/node/pull/57695) +- \[[`70bb387f82`](https://github.com/nodejs/node/commit/70bb387f82)] - **src**: fix inefficient usage of v8_inspector::StringView (Simon Zünd) [#52372](https://github.com/nodejs/node/pull/52372) +- \[[`be038f0273`](https://github.com/nodejs/node/commit/be038f0273)] - **src,permission**: make ERR_ACCESS_DENIED more descriptive (Rafael Gonzaga) [#57585](https://github.com/nodejs/node/pull/57585) +- \[[`0ec912f452`](https://github.com/nodejs/node/commit/0ec912f452)] - **(SEMVER-MINOR)** **stream**: preserve AsyncLocalStorage context in finished() (Gürgün Dayıoğlu) [#57865](https://github.com/nodejs/node/pull/57865) +- \[[`6ffb66f82f`](https://github.com/nodejs/node/commit/6ffb66f82f)] - **test**: fix permission fixtures lint (Rafael Gonzaga) [#55819](https://github.com/nodejs/node/pull/55819) +- \[[`fd37891186`](https://github.com/nodejs/node/commit/fd37891186)] - **test**: add repl preview timeout test (Chengzhong Wu) [#55484](https://github.com/nodejs/node/pull/55484) +- \[[`1be5a8c1b4`](https://github.com/nodejs/node/commit/1be5a8c1b4)] - **test**: skip `test-config-json-schema` with quic (Richard Lau) [#57225](https://github.com/nodejs/node/pull/57225) +- \[[`e90583b657`](https://github.com/nodejs/node/commit/e90583b657)] - **test**: add more coverage to `node_config_file` (Marco Ippolito) [#57170](https://github.com/nodejs/node/pull/57170) +- \[[`df2a36bfcc`](https://github.com/nodejs/node/commit/df2a36bfcc)] - **test**: remove deadlock workaround (Joyee Cheung) [#58047](https://github.com/nodejs/node/pull/58047) +- \[[`103034b051`](https://github.com/nodejs/node/commit/103034b051)] - **test**: prevent extraneous HOSTNAME substitution in test-runner-output (René) [#58076](https://github.com/nodejs/node/pull/58076) +- \[[`3e58f81a38`](https://github.com/nodejs/node/commit/3e58f81a38)] - **test**: update WPT for WebCryptoAPI to b48efd681e (Node.js GitHub Bot) [#58044](https://github.com/nodejs/node/pull/58044) +- \[[`2f4e4164a3`](https://github.com/nodejs/node/commit/2f4e4164a3)] - **test**: add missing newlines to repl .exit writes (Dario Piotrowicz) [#58041](https://github.com/nodejs/node/pull/58041) +- \[[`b40769292e`](https://github.com/nodejs/node/commit/b40769292e)] - **test**: add fast api tests for getLibuvNow() (Yagiz Nizipli) [#58022](https://github.com/nodejs/node/pull/58022) +- \[[`cbd5768d47`](https://github.com/nodejs/node/commit/cbd5768d47)] - **test**: add ALS test using http agent keep alive (Gerhard Stöbich) [#58017](https://github.com/nodejs/node/pull/58017) +- \[[`9e31ab502a`](https://github.com/nodejs/node/commit/9e31ab502a)] - **test**: deflake test-http2-options-max-headers-block-length (Luigi Pinca) [#57959](https://github.com/nodejs/node/pull/57959) +- \[[`13f8f9cc12`](https://github.com/nodejs/node/commit/13f8f9cc12)] - **test**: rename to getCallSites (Wuli Zuo) [#57948](https://github.com/nodejs/node/pull/57948) +- \[[`92dce6ed6b`](https://github.com/nodejs/node/commit/92dce6ed6b)] - **test**: force GC in test-file-write-stream4 (Luigi Pinca) [#57930](https://github.com/nodejs/node/pull/57930) +- \[[`aa755d3acf`](https://github.com/nodejs/node/commit/aa755d3acf)] - **test**: enable skipped colorize test (Shima Ryuhei) [#57887](https://github.com/nodejs/node/pull/57887) +- \[[`331f44c78c`](https://github.com/nodejs/node/commit/331f44c78c)] - **test**: update WPT for WebCryptoAPI to 164426ace2 (Node.js GitHub Bot) [#57854](https://github.com/nodejs/node/pull/57854) +- \[[`4aaa8438b4`](https://github.com/nodejs/node/commit/4aaa8438b4)] - **test**: add test for frame count being 0.5 (Jake Yuesong Li) [#57732](https://github.com/nodejs/node/pull/57732) +- \[[`fb51d3a0c5`](https://github.com/nodejs/node/commit/fb51d3a0c5)] - **test**: fix the decimal fractions explaination (Jake Yuesong Li) [#57732](https://github.com/nodejs/node/pull/57732) +- \[[`c6a45a9087`](https://github.com/nodejs/node/commit/c6a45a9087)] - _**Revert**_ "**test**: add tests for REPL custom evals" (Tobias Nießen) [#57793](https://github.com/nodejs/node/pull/57793) +- \[[`f3a4d03963`](https://github.com/nodejs/node/commit/f3a4d03963)] - **test**: add tests for REPL custom evals (Dario Piotrowicz) [#57691](https://github.com/nodejs/node/pull/57691) +- \[[`a3be0df337`](https://github.com/nodejs/node/commit/a3be0df337)] - **test**: update expected error message for macOS (Antoine du Hamel) [#57742](https://github.com/nodejs/node/pull/57742) +- \[[`a7e73a0a74`](https://github.com/nodejs/node/commit/a7e73a0a74)] - **test**: fix dangling promise in test_runner no isolation test setup (Jacob Smith) [#57595](https://github.com/nodejs/node/pull/57595) +- \[[`edb7dd1ec7`](https://github.com/nodejs/node/commit/edb7dd1ec7)] - **test_runner**: match minimum file column to 'all files' (Shima Ryuhei) [#57848](https://github.com/nodejs/node/pull/57848) +- \[[`c56f495e83`](https://github.com/nodejs/node/commit/c56f495e83)] - **tools**: extract target abseil to abseil.gyp (Chengzhong Wu) [#57289](https://github.com/nodejs/node/pull/57289) +- \[[`1b37161a27`](https://github.com/nodejs/node/commit/1b37161a27)] - **tools**: ignore V8 tests in CodeQL scans (Rich Trott) [#58081](https://github.com/nodejs/node/pull/58081) +- \[[`23386308dd`](https://github.com/nodejs/node/commit/23386308dd)] - **tools**: enable CodeQL config file (Rich Trott) [#58036](https://github.com/nodejs/node/pull/58036) +- \[[`9c21abc169`](https://github.com/nodejs/node/commit/9c21abc169)] - **tools**: ignore test directory in CodeQL scans (Rich Trott) [#57978](https://github.com/nodejs/node/pull/57978) +- \[[`f210a1530d`](https://github.com/nodejs/node/commit/f210a1530d)] - **tools**: add semver-major release support to release-lint (Antoine du Hamel) [#57892](https://github.com/nodejs/node/pull/57892) +- \[[`234c417e98`](https://github.com/nodejs/node/commit/234c417e98)] - **tools**: add codeql nightly (Rafael Gonzaga) [#57788](https://github.com/nodejs/node/pull/57788) +- \[[`938f1532da`](https://github.com/nodejs/node/commit/938f1532da)] - **tools**: edit create-release-proposal workflow to handle pr body length (Elves Vieira) [#57841](https://github.com/nodejs/node/pull/57841) +- \[[`b362339f72`](https://github.com/nodejs/node/commit/b362339f72)] - **tools**: add zstd updater to workflow (KASEYA\yahor.siarheyenka) [#57831](https://github.com/nodejs/node/pull/57831) +- \[[`61180db9c0`](https://github.com/nodejs/node/commit/61180db9c0)] - **tools**: remove unused `osx-pkg-postinstall.sh` (Antoine du Hamel) [#57667](https://github.com/nodejs/node/pull/57667) +- \[[`3ae04c94eb`](https://github.com/nodejs/node/commit/3ae04c94eb)] - **tools**: do not use temp files when merging PRs (Antoine du Hamel) [#57790](https://github.com/nodejs/node/pull/57790) +- \[[`d623c2c2b4`](https://github.com/nodejs/node/commit/d623c2c2b4)] - **tools**: update gyp-next to 0.20.0 (Node.js GitHub Bot) [#57683](https://github.com/nodejs/node/pull/57683) +- \[[`43ea4c532a`](https://github.com/nodejs/node/commit/43ea4c532a)] - **tools**: bump the eslint group in /tools/eslint with 4 updates (dependabot\[bot]) [#57721](https://github.com/nodejs/node/pull/57721) +- \[[`5703147470`](https://github.com/nodejs/node/commit/5703147470)] - **tools**: enable linter in `test/fixtures/source-map/output` (Antoine du Hamel) [#57700](https://github.com/nodejs/node/pull/57700) +- \[[`80d58c372d`](https://github.com/nodejs/node/commit/80d58c372d)] - **tools**: enable linter in `test/fixtures/errors` (Antoine du Hamel) [#57701](https://github.com/nodejs/node/pull/57701) +- \[[`ef5275b7be`](https://github.com/nodejs/node/commit/ef5275b7be)] - **tools**: enable linter in `test/fixtures/test-runner/output` (Antoine du Hamel) [#57698](https://github.com/nodejs/node/pull/57698) +- \[[`631733e41f`](https://github.com/nodejs/node/commit/631733e41f)] - **tools**: enable linter in `test/fixtures/eval` (Antoine du Hamel) [#57699](https://github.com/nodejs/node/pull/57699) +- \[[`6d0128695f`](https://github.com/nodejs/node/commit/6d0128695f)] - **tools**: enable linter on some fixtures file (Antoine du Hamel) [#57674](https://github.com/nodejs/node/pull/57674) +- \[[`f4d7cbae89`](https://github.com/nodejs/node/commit/f4d7cbae89)] - **tools**: update ESLint to 9.23 (Antoine du Hamel) [#57673](https://github.com/nodejs/node/pull/57673) +- \[[`5a39a24cd1`](https://github.com/nodejs/node/commit/5a39a24cd1)] - **typings**: fix `ModulesBinding` types (Antoine du Hamel) [#55549](https://github.com/nodejs/node/pull/55549) +- \[[`2df7ce9ebd`](https://github.com/nodejs/node/commit/2df7ce9ebd)] - **util**: fix parseEnv handling of invalid lines (Augustin Mauroy) [#57798](https://github.com/nodejs/node/pull/57798) +- \[[`416052a9f2`](https://github.com/nodejs/node/commit/416052a9f2)] - **util**: fix formatting of objects with built-in Symbol.toPrimitive (Shima Ryuhei) [#57832](https://github.com/nodejs/node/pull/57832) +- \[[`43490c8797`](https://github.com/nodejs/node/commit/43490c8797)] - **(SEMVER-MINOR)** **util**: add `types.isFloat16Array()` (Livia Medeiros) [#57879](https://github.com/nodejs/node/pull/57879) +- \[[`30060e13d3`](https://github.com/nodejs/node/commit/30060e13d3)] - **util**: preserve `length` of deprecated functions (Livia Medeiros) [#57806](https://github.com/nodejs/node/pull/57806) +- \[[`9837e08a84`](https://github.com/nodejs/node/commit/9837e08a84)] - **util**: fix parseEnv incorrectly splitting multiple ‘=‘ in value (HEESEUNG) [#57421](https://github.com/nodejs/node/pull/57421) +- \[[`af41dd3c07`](https://github.com/nodejs/node/commit/af41dd3c07)] - **watch**: clarify completion/failure watch mode messages (Dario Piotrowicz) [#57926](https://github.com/nodejs/node/pull/57926) +- \[[`7229a29b47`](https://github.com/nodejs/node/commit/7229a29b47)] - **watch**: check parent and child path properly (Jason Zhang) [#57425](https://github.com/nodejs/node/pull/57425) +- \[[`1b5a7c6dc8`](https://github.com/nodejs/node/commit/1b5a7c6dc8)] - **win**: fix SIGQUIT on ClangCL (Stefan Stojanovic) [#57659](https://github.com/nodejs/node/pull/57659) +- \[[`e935c3c6f2`](https://github.com/nodejs/node/commit/e935c3c6f2)] - **worker**: add ESM version examples to worker docs (fisker Cheung) [#57645](https://github.com/nodejs/node/pull/57645) +- \[[`dda6ca9172`](https://github.com/nodejs/node/commit/dda6ca9172)] - **(SEMVER-MINOR)** **worker**: add worker.getHeapStatistics() (Matteo Collina) [#57888](https://github.com/nodejs/node/pull/57888) +- \[[`f2159f2a44`](https://github.com/nodejs/node/commit/f2159f2a44)] - **zlib**: fix pointer alignment (jhofstee) [#57727](https://github.com/nodejs/node/pull/57727) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.16.0/node-v22.16.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.16.0/node-v22.16.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.16.0/node-v22.16.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.16.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.16.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.16.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.16.0/node-v22.16.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.16.0/node-v22.16.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.16.0/node-v22.16.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.16.0/node-v22.16.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.16.0/node-v22.16.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.16.0/node-v22.16.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.16.0/node-v22.16.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.16.0/node-v22.16.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.16.0/node-v22.16.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.16.0/node-v22.16.0.tar.gz \ +Other release files: https://nodejs.org/dist/v22.16.0/ \ +Documentation: https://nodejs.org/docs/v22.16.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +17d4038360f2322e6c3b9f82e7115163ca039da470b59933ab708a4844c5e936 node-v22.16.0-aix-ppc64.tar.gz +d31f0e4a2fbc1fa16bc3f8c12580e0639d875bb9093dd667842ab90c20268e82 node-v22.16.0-arm64.msi +1d7f34ec4c03e12d8b33481e5c4560432d7dc31a0ef3ff5a4d9a8ada7cf6ecc9 node-v22.16.0-darwin-arm64.tar.gz +aaf7fc3c936f1b359bc312b63638e41f258689ac2303966ad932cda18c54ea00 node-v22.16.0-darwin-arm64.tar.xz +838d400f7e66c804e5d11e2ecb61d6e9e878611146baff69d6a2def3cc23f4ac node-v22.16.0-darwin-x64.tar.gz +5c34638f2c0e3f3aaa7b3a94b58304765a169730da1896ebba8515ea4d987a9c node-v22.16.0-darwin-x64.tar.xz +a60e5a543fab5e5105525948c596d4974c617f39606cef76eb94c3bf1df9a06c node-v22.16.0-headers.tar.gz +9820194181a18fbfc6f3c9323a7edc5b587ad1753287bdf41466b89d8f4eaed9 node-v22.16.0-headers.tar.xz +1725602e9fb150eb8b8220a899085190e1c04d1a5f3862b01c3dc1dfce0157f9 node-v22.16.0-linux-arm64.tar.gz +eab80cb88f8fda1e65f5e8d0420c9809bdb320b03fd34976ab7161b6e703b910 node-v22.16.0-linux-arm64.tar.xz +d4c3d8b6862208f0e0d6e20726a8dc5fb019cba8333c72dfd97b34ceed8d22a4 node-v22.16.0-linux-armv7l.tar.gz +a3d42085f034be76e8e6f40d4e534e57036818f523fbbd0da90d51165b1f2c10 node-v22.16.0-linux-armv7l.tar.xz +b4eec15ffd2d738ae34566057a6928e789e02a0f47176f4af8520f1248c63aab node-v22.16.0-linux-ppc64le.tar.gz +02b082697a4f73dcd02e89d185e004af69a8462c13fa62caf403e7f717b79754 node-v22.16.0-linux-ppc64le.tar.xz +668a5c65ade42f08d921c48a1c14437d10d026291e381d2541c2b0a585724567 node-v22.16.0-linux-s390x.tar.gz +b3603dcbea7b1ef87cfd3bf986ff9697609359356d82334de6217838d3cce640 node-v22.16.0-linux-s390x.tar.xz +fb870226119d47378fa9c92c4535389c72dae14fcc7b47e6fdcc82c43de5a547 node-v22.16.0-linux-x64.tar.gz +f4cb75bb036f0d0eddf6b79d9596df1aaab9ddccd6a20bf489be5abe9467e84e node-v22.16.0-linux-x64.tar.xz +030da05e79e596a7076894d8fefac3821d25f0e164bb01edf0302f49b7dafcd0 node-v22.16.0-win-arm64.7z +31e885dcd06355f67b4be8cca86464270d83d0f5b8d4e3d4369c16ed22a5f4fa node-v22.16.0-win-arm64.zip +03ff95bfb2c256017db9688921d2669edf6f05a3b0b8491d17c387d870360f40 node-v22.16.0-win-x64.7z +21c2d9735c80b8f86dab19305aa6a9f6f59bbc808f68de3eef09d5832e3bfbbd node-v22.16.0-win-x64.zip +fb6de1694575df82c0f681cd88f0b62a40f714b84330f1b612a294eeefb6ba67 node-v22.16.0-win-x86.7z +c23e16ffddd95ef45272549675a8f87480b3a0a900bebb94c277ff11ba99ec06 node-v22.16.0-win-x86.zip +e2f2802202513e1bf41f7c00307635f6c6fe31c0275c1e03d269d45a76e5fc2e node-v22.16.0-x64.msi +715979e8e36b7128a2d8edf18aca7bbde6b86de92824608c1c1a5a2bb54548fc node-v22.16.0-x86.msi +b59ca7c71fef10f1b13e51c628e3e64f0df466feebbc528589f4e0566e6bbede node-v22.16.0.pkg +108f250ff79cc103b464b3ef41fa60f4866e4e6c962117171adaac7325ebdab2 node-v22.16.0.tar.gz +720894f323e5c1ac24968eb2676660c90730d715cb7f090be71a668662a17c37 node-v22.16.0.tar.xz +1944e0635b3c353a1e728a782f0984cccbb4864a461a429d86878b273dafe368 win-arm64/node.exe +344c1d69f0b008da7318c29397d552c6ad8d9d6b94c115a35c6eaf278e87d24c win-arm64/node.lib +b407648861647a7f763d3465d713aec40fd1a127a2d9c07c582c3c37c589962b win-arm64/node_pdb.7z +d7582350d9c9aa282286b4e7893bbe42f17a5acc95167c2eacdcb38c78b42137 win-arm64/node_pdb.zip +c5ff4c736112dd483c750fd4149d30c8a116db1a49b8b3ec88be4b65e6c86c19 win-x64/node.exe +a3498bf1b8eebb3a07b1c7e9e28703fed4f1ce0b520d5f6898ae607862178cd2 win-x64/node.lib +c50424250b220e2b6e0aec2c3d9c2f3f6d69263614319d5272e01711362eab26 win-x64/node_pdb.7z +4a01fc48450741afd67c5b45c45cf1ad7871775ad97ff69858057e79241987b3 win-x64/node_pdb.zip +249e0e1afb8fcce9cd88e0f45b92c8e00191c36256260b622a3ad1433dc63b1d win-x86/node.exe +4ca7aae3eab9f5a18dae49b2b1fcc5fccfffcf47f3c3c2f2d644d28bf92a69a3 win-x86/node.lib +329e771115f6a8dfd0f22e2f2db32048e41b601b45b63d32a86e080ae465ba5f win-x86/node_pdb.7z +aaeb68e8b86a1bf9f0dda53fdeebd8f573897fdb75bc624cdf5a6736e3d8e921 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmgt8EoACgkQIdkA/9sj +N1YXBA/9G4lgCoJb4TxVI/YPH/bZKjfMLt2s5UHgRcI1rMYHhcQoqSDYWtJpBiMr ++8/ZEEzYEDDHLhb0Rj/vFp+jYmSOn5d96gYdQhV6hIOx58ScxoVRhxTO/KtZ/Z0g +bEcR1uG8s22lQR8X8KWOqpNg/bP9i9vUg0z9weazZsepPc79rW548vf5I6TFizA/ +bignuL2L9gaFhYIDGi9FkUX9zC6vsrjIjrAcZzo32l5p8fhvJ5QQFFJlJsqwear9 +xHfT4GE2VSHWXMBV4XGeaP9+3AR6+zHMW4W6s4D4zlJ5jSdHSPKL3MsWl5YyNtX3 +9OcbIayeiTBz7GSoQ3La1r9myslsOZNecxvEmKVMzLAgYqbKRi3Fssk+MCWdbJQV +FzUvWH+fH+nBR9UCL7Buwy1RF5ZG0gakeda+odj+p/UB3h5y+rgCOoauJRFOzvcn +NHOEoLCiPFxWrjBThEbId8hSs4ZQNgnOwBlKiBCcPiCj9TJ82n9D3HVhgN6o3Y4Y +fTkSSySevICcRReg6AECZz7znN66PhHWTAnzCleZGgxh78RF5ateKtlyRK8vH+MC +wjQu/0Eh7dR9HedqQiPk1nATk3NmT1wFR2IWZZAIt/ldixlec0Ee4vHQKvkTesJi +wz7XxEHufmHjaqJwCNFDIRgTGuQXn/+cvebjotO2yYdXddfp2dw= +=XYjr +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v24.1.0.md b/apps/site/pages/en/blog/release/v24.1.0.md new file mode 100644 index 0000000000000..a48ecff92fc17 --- /dev/null +++ b/apps/site/pages/en/blog/release/v24.1.0.md @@ -0,0 +1,168 @@ +--- +date: '2025-05-21T15:31:30.747Z' +category: release +title: Node v24.1.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-05-21, Version 24.1.0 (Current), @aduh95 + +### Notable Changes + +- \[[`9d35b4ce95`](https://github.com/nodejs/node/commit/9d35b4ce95)] - **doc**: add JonasBa to collaborators (Jonas Badalic) [#58355](https://github.com/nodejs/node/pull/58355) +- \[[`b7d1bfa7b4`](https://github.com/nodejs/node/commit/b7d1bfa7b4)] - **doc**: add puskin to collaborators (Giovanni Bucci) [#58308](https://github.com/nodejs/node/pull/58308) +- \[[`fcead7c28e`](https://github.com/nodejs/node/commit/fcead7c28e)] - **(SEMVER-MINOR)** **fs**: add to `Dir` support for explicit resource management (Antoine du Hamel) [#58206](https://github.com/nodejs/node/pull/58206) +- \[[`f7041b9369`](https://github.com/nodejs/node/commit/f7041b9369)] - _**Revert**_ "**test_runner**: change ts default glob" (Théo LUDWIG) [#58202](https://github.com/nodejs/node/pull/58202) + +### Commits + +- \[[`b33e8d2a71`](https://github.com/nodejs/node/commit/b33e8d2a71)] - **async_hooks**: ensure AsyncLocalStore instances work isolated (Gerhard Stöbich) [#58149](https://github.com/nodejs/node/pull/58149) +- \[[`a1b078b18c`](https://github.com/nodejs/node/commit/a1b078b18c)] - **buffer**: give names to `Buffer.prototype.*Write()` functions (Livia Medeiros) [#58258](https://github.com/nodejs/node/pull/58258) +- \[[`4c967b73c3`](https://github.com/nodejs/node/commit/4c967b73c3)] - **buffer**: use constexpr where possible (Yagiz Nizipli) [#58141](https://github.com/nodejs/node/pull/58141) +- \[[`327095a928`](https://github.com/nodejs/node/commit/327095a928)] - **build**: fix uvwasi pkgname (Antoine du Hamel) [#58270](https://github.com/nodejs/node/pull/58270) +- \[[`2e54653d3d`](https://github.com/nodejs/node/commit/2e54653d3d)] - **build**: use FILE_OFFSET_BITS=64 esp. on 32-bit arch (RafaelGSS) [#58090](https://github.com/nodejs/node/pull/58090) +- \[[`7e4453fe93`](https://github.com/nodejs/node/commit/7e4453fe93)] - **build**: escape > metachar in vcbuild (Gerhard Stöbich) [#58157](https://github.com/nodejs/node/pull/58157) +- \[[`7dabf079b1`](https://github.com/nodejs/node/commit/7dabf079b1)] - **child_process**: give names to promisified `exec()` and `execFile()` (LiviaMedeiros) [#57916](https://github.com/nodejs/node/pull/57916) +- \[[`a896eff1f2`](https://github.com/nodejs/node/commit/a896eff1f2)] - **crypto**: handle missing OPENSSL_TLS_SECURITY_LEVEL (Shelley Vohr) [#58103](https://github.com/nodejs/node/pull/58103) +- \[[`6403aa458f`](https://github.com/nodejs/node/commit/6403aa458f)] - **crypto**: merge CipherBase.initiv into constructor (Tobias Nießen) [#58166](https://github.com/nodejs/node/pull/58166) +- \[[`30897d915c`](https://github.com/nodejs/node/commit/30897d915c)] - **deps**: V8: backport 1d3362c55396 (Shu-yu Guo) [#58230](https://github.com/nodejs/node/pull/58230) +- \[[`63f5d69d2b`](https://github.com/nodejs/node/commit/63f5d69d2b)] - **deps**: V8: cherry-pick 4f38995c8295 (Shu-yu Guo) [#58230](https://github.com/nodejs/node/pull/58230) +- \[[`5a5f6bb1d4`](https://github.com/nodejs/node/commit/5a5f6bb1d4)] - **deps**: V8: cherry-pick 044b9b6f589d (Rezvan Mahdavi Hezaveh) [#58230](https://github.com/nodejs/node/pull/58230) +- \[[`db57f0a4c0`](https://github.com/nodejs/node/commit/db57f0a4c0)] - **deps**: patch V8 to 13.6.233.10 (Michaël Zasso) [#58230](https://github.com/nodejs/node/pull/58230) +- \[[`f54a7a44ab`](https://github.com/nodejs/node/commit/f54a7a44ab)] - _**Revert**_ "**deps**: patch V8 to support compilation with MSVC" (Michaël Zasso) [#58187](https://github.com/nodejs/node/pull/58187) +- \[[`e3193eeca4`](https://github.com/nodejs/node/commit/e3193eeca4)] - _**Revert**_ "**deps**: always define V8_EXPORT_PRIVATE as no-op" (Michaël Zasso) [#58187](https://github.com/nodejs/node/pull/58187) +- \[[`e75ecf8ad1`](https://github.com/nodejs/node/commit/e75ecf8ad1)] - _**Revert**_ "**deps**: disable V8 concurrent sparkplug compilation" (Michaël Zasso) [#58187](https://github.com/nodejs/node/pull/58187) +- \[[`a0ca15558d`](https://github.com/nodejs/node/commit/a0ca15558d)] - **deps**: update llhttp to 9.3.0 (Fedor Indutny) [#58144](https://github.com/nodejs/node/pull/58144) +- \[[`90d4c11992`](https://github.com/nodejs/node/commit/90d4c11992)] - **deps**: update amaro to 0.5.3 (Node.js GitHub Bot) [#58174](https://github.com/nodejs/node/pull/58174) +- \[[`9d35b4ce95`](https://github.com/nodejs/node/commit/9d35b4ce95)] - **doc**: add JonasBa to collaborators (Jonas Badalic) [#58355](https://github.com/nodejs/node/pull/58355) +- \[[`2676ca0cf5`](https://github.com/nodejs/node/commit/2676ca0cf5)] - **doc**: add latest security release steward (Rafael Gonzaga) [#58339](https://github.com/nodejs/node/pull/58339) +- \[[`c35cc1bdd9`](https://github.com/nodejs/node/commit/c35cc1bdd9)] - **doc**: document default test-reporter change (Nico Jansen) [#58302](https://github.com/nodejs/node/pull/58302) +- \[[`2bb433d4a5`](https://github.com/nodejs/node/commit/2bb433d4a5)] - **doc**: fix CryptoKey.algorithm type and other interfaces in webcrypto.md (Filip Skokan) [#58294](https://github.com/nodejs/node/pull/58294) +- \[[`f04f09d783`](https://github.com/nodejs/node/commit/f04f09d783)] - **doc**: mark the callback argument of crypto.generatePrime as mandatory (Allon Murienik) [#58299](https://github.com/nodejs/node/pull/58299) +- \[[`3b9b010844`](https://github.com/nodejs/node/commit/3b9b010844)] - **doc**: remove comma delimiter mention on permissions doc (Rafael Gonzaga) [#58297](https://github.com/nodejs/node/pull/58297) +- \[[`f0cf1a028d`](https://github.com/nodejs/node/commit/f0cf1a028d)] - **doc**: make Stability labels not sticky in Stability index (Livia Medeiros) [#58291](https://github.com/nodejs/node/pull/58291) +- \[[`a1b937bdee`](https://github.com/nodejs/node/commit/a1b937bdee)] - **doc**: update commit-queue documentation (Dario Piotrowicz) [#58275](https://github.com/nodejs/node/pull/58275) +- \[[`b7d1bfa7b4`](https://github.com/nodejs/node/commit/b7d1bfa7b4)] - **doc**: add puskin to collaborators (Giovanni Bucci) [#58308](https://github.com/nodejs/node/pull/58308) +- \[[`fc30cdd8d2`](https://github.com/nodejs/node/commit/fc30cdd8d2)] - **doc**: update stability status for diagnostics_channel to experimental (Idan Goshen) [#58261](https://github.com/nodejs/node/pull/58261) +- \[[`290a5ab8ca`](https://github.com/nodejs/node/commit/290a5ab8ca)] - **doc**: clarify napi_get_value_string\_\* for bufsize 0 (Tobias Nießen) [#58158](https://github.com/nodejs/node/pull/58158) +- \[[`c26863a683`](https://github.com/nodejs/node/commit/c26863a683)] - **doc**: fix typo of file `http.md`, `outgoingMessage.setTimeout` section (yusheng chen) [#58188](https://github.com/nodejs/node/pull/58188) +- \[[`62dbd36dcb`](https://github.com/nodejs/node/commit/62dbd36dcb)] - **doc**: update return types for eventNames method in EventEmitter (Yukihiro Hasegawa) [#58083](https://github.com/nodejs/node/pull/58083) +- \[[`130c135f38`](https://github.com/nodejs/node/commit/130c135f38)] - **fs**: add support for `URL` for `fs.glob`'s `cwd` option (Antoine du Hamel) [#58182](https://github.com/nodejs/node/pull/58182) +- \[[`fcead7c28e`](https://github.com/nodejs/node/commit/fcead7c28e)] - **(SEMVER-MINOR)** **fs**: add to `Dir` support for explicit resource management (Antoine du Hamel) [#58206](https://github.com/nodejs/node/pull/58206) +- \[[`655326ba9f`](https://github.com/nodejs/node/commit/655326ba9f)] - **fs**: glob is stable, so should not emit experimental warnings (Théo LUDWIG) [#58236](https://github.com/nodejs/node/pull/58236) +- \[[`6ebcce7625`](https://github.com/nodejs/node/commit/6ebcce7625)] - **fs**: ensure `dir.read()` does not throw synchronously (Antoine du Hamel) [#58228](https://github.com/nodejs/node/pull/58228) +- \[[`7715722323`](https://github.com/nodejs/node/commit/7715722323)] - **http**: remove unused functions and add todos (Yagiz Nizipli) [#58143](https://github.com/nodejs/node/pull/58143) +- \[[`74a807e31f`](https://github.com/nodejs/node/commit/74a807e31f)] - **http,https**: give names to anonymous or misnamed functions (Livia Medeiros) [#58180](https://github.com/nodejs/node/pull/58180) +- \[[`24a9aefb08`](https://github.com/nodejs/node/commit/24a9aefb08)] - **http2**: add diagnostics channel 'http2.client.stream.start' (Darshan Sen) [#58292](https://github.com/nodejs/node/pull/58292) +- \[[`2cb86a3cd6`](https://github.com/nodejs/node/commit/2cb86a3cd6)] - **http2**: add diagnostics channel 'http2.client.stream.created' (Darshan Sen) [#58246](https://github.com/nodejs/node/pull/58246) +- \[[`8f1aee90d9`](https://github.com/nodejs/node/commit/8f1aee90d9)] - **http2**: give name to promisified `connect()` (LiviaMedeiros) [#57916](https://github.com/nodejs/node/pull/57916) +- \[[`b66f1b0be6`](https://github.com/nodejs/node/commit/b66f1b0be6)] - **inspector**: support for worker inspection in chrome devtools (Shima Ryuhei) [#56759](https://github.com/nodejs/node/pull/56759) +- \[[`868e72e367`](https://github.com/nodejs/node/commit/868e72e367)] - **lib**: fix sourcemaps with ts module mocking (Marco Ippolito) [#58193](https://github.com/nodejs/node/pull/58193) +- \[[`570cb6f6b6`](https://github.com/nodejs/node/commit/570cb6f6b6)] - **meta**: ignore mailmap changes in linux ci (Jonas Badalic) [#58356](https://github.com/nodejs/node/pull/58356) +- \[[`b94f63b865`](https://github.com/nodejs/node/commit/b94f63b865)] - **module**: handle instantiated async module jobs in require(esm) (Joyee Cheung) [#58067](https://github.com/nodejs/node/pull/58067) +- \[[`714b706f2e`](https://github.com/nodejs/node/commit/714b706f2e)] - **repl**: add proper vertical cursor movements (Giovanni Bucci) [#58003](https://github.com/nodejs/node/pull/58003) +- \[[`629a954477`](https://github.com/nodejs/node/commit/629a954477)] - **repl**: add possibility to edit multiline commands while adding them (Giovanni Bucci) [#58003](https://github.com/nodejs/node/pull/58003) +- \[[`17746129f3`](https://github.com/nodejs/node/commit/17746129f3)] - **sqlite**: set `name` and `length` on `sqlite.backup()` (Livia Medeiros) [#58251](https://github.com/nodejs/node/pull/58251) +- \[[`908782b1c0`](https://github.com/nodejs/node/commit/908782b1c0)] - **sqlite**: add build option to build without sqlite (Michael Dawson) [#58122](https://github.com/nodejs/node/pull/58122) +- \[[`a92a4074e4`](https://github.com/nodejs/node/commit/a92a4074e4)] - **src**: remove unused `internalVerifyIntegrity` internal binding (Dario Piotrowicz) [#58285](https://github.com/nodejs/node/pull/58285) +- \[[`e0355b71ba`](https://github.com/nodejs/node/commit/e0355b71ba)] - **src**: add a variant of ToV8Value() for primitive arrays (Aditi) [#57576](https://github.com/nodejs/node/pull/57576) +- \[[`cb24fc71c4`](https://github.com/nodejs/node/commit/cb24fc71c4)] - **src**: remove unused `checkMessagePort` internal binding (Dario Piotrowicz) [#58267](https://github.com/nodejs/node/pull/58267) +- \[[`4db5d0bc49`](https://github.com/nodejs/node/commit/4db5d0bc49)] - **src**: remove unused `shouldRetryAsESM` internal binding (Dario Piotrowicz) [#58265](https://github.com/nodejs/node/pull/58265) +- \[[`3b8d4e32ca`](https://github.com/nodejs/node/commit/3b8d4e32ca)] - **src**: add a couple fast apis in node_os (James M Snell) [#58210](https://github.com/nodejs/node/pull/58210) +- \[[`a135c0aea3`](https://github.com/nodejs/node/commit/a135c0aea3)] - **src**: remove unneeded explicit V8 flags (Michaël Zasso) [#58230](https://github.com/nodejs/node/pull/58230) +- \[[`abeb5c4cdc`](https://github.com/nodejs/node/commit/abeb5c4cdc)] - **src**: fix module buffer allocation (X-BW) [#57738](https://github.com/nodejs/node/pull/57738) +- \[[`9ca4b46eb3`](https://github.com/nodejs/node/commit/9ca4b46eb3)] - **src**: use String::WriteV2() in TwoByteValue (Tobias Nießen) [#58164](https://github.com/nodejs/node/pull/58164) +- \[[`bb28e2bfd7`](https://github.com/nodejs/node/commit/bb28e2bfd7)] - **src**: remove overzealous tcsetattr error check (Ben Noordhuis) [#58200](https://github.com/nodejs/node/pull/58200) +- \[[`329e008e73`](https://github.com/nodejs/node/commit/329e008e73)] - **src**: refactor WriteUCS2 and remove flags argument (Tobias Nießen) [#58163](https://github.com/nodejs/node/pull/58163) +- \[[`c815f29d61`](https://github.com/nodejs/node/commit/c815f29d61)] - **src**: remove NonCopyableMaybe (Tobias Nießen) [#58168](https://github.com/nodejs/node/pull/58168) +- \[[`685d137dec`](https://github.com/nodejs/node/commit/685d137dec)] - **test**: reduce iteration count in test-child-process-stdout-flush-exit (Antoine du Hamel) [#58273](https://github.com/nodejs/node/pull/58273) +- \[[`40dc092e25`](https://github.com/nodejs/node/commit/40dc092e25)] - **test**: remove unnecessary `console.log` from test-repl-null-thrown (Dario Piotrowicz) [#58281](https://github.com/nodejs/node/pull/58281) +- \[[`a3af644dda`](https://github.com/nodejs/node/commit/a3af644dda)] - **test**: allow `tmpDir.path` to be modified (Aviv Keller) [#58173](https://github.com/nodejs/node/pull/58173) +- \[[`97f80374a6`](https://github.com/nodejs/node/commit/97f80374a6)] - **test**: add `Float16Array` to `common.getArrayBufferViews()` (Livia Medeiros) [#58233](https://github.com/nodejs/node/pull/58233) +- \[[`65683735ab`](https://github.com/nodejs/node/commit/65683735ab)] - **test**: fix executable flags (Livia Medeiros) [#58250](https://github.com/nodejs/node/pull/58250) +- \[[`ebb82aa1c3`](https://github.com/nodejs/node/commit/ebb82aa1c3)] - **test**: deflake test-http2-client-socket-destroy (Luigi Pinca) [#58212](https://github.com/nodejs/node/pull/58212) +- \[[`eb4f130b17`](https://github.com/nodejs/node/commit/eb4f130b17)] - **test**: remove Float16Array flag (Livia Medeiros) [#58184](https://github.com/nodejs/node/pull/58184) +- \[[`09a85fdeb1`](https://github.com/nodejs/node/commit/09a85fdeb1)] - **test**: skip test-buffer-tostring-rangeerror when low on memory (Ruben Bridgewater) [#58142](https://github.com/nodejs/node/pull/58142) +- \[[`65446632b1`](https://github.com/nodejs/node/commit/65446632b1)] - **test**: reduce flakiness in test-heapdump-http2 (Joyee Cheung) [#58148](https://github.com/nodejs/node/pull/58148) +- \[[`f7041b9369`](https://github.com/nodejs/node/commit/f7041b9369)] - _**Revert**_ "**test_runner**: change ts default glob" (Théo LUDWIG) [#58202](https://github.com/nodejs/node/pull/58202) +- \[[`287454298d`](https://github.com/nodejs/node/commit/287454298d)] - **test_runner**: unify --require and --import behavior when isolation none (Pietro Marchini) [#57924](https://github.com/nodejs/node/pull/57924) +- \[[`6301b003f7`](https://github.com/nodejs/node/commit/6301b003f7)] - **tools**: ignore `deps/` and `benchmark/` for CodeQL (Rafael Gonzaga) [#58254](https://github.com/nodejs/node/pull/58254) +- \[[`2d5de7e309`](https://github.com/nodejs/node/commit/2d5de7e309)] - **tools**: add read permission to workflows that read contents (Antoine du Hamel) [#58255](https://github.com/nodejs/node/pull/58255) +- \[[`b8d4715527`](https://github.com/nodejs/node/commit/b8d4715527)] - **tools**: support environment variables via comments (Pietro Marchini) [#58186](https://github.com/nodejs/node/pull/58186) +- \[[`d8e88f2c17`](https://github.com/nodejs/node/commit/d8e88f2c17)] - **typings**: add missing typings for `TypedArray` (Jason Zhang) [#58248](https://github.com/nodejs/node/pull/58248) +- \[[`4c6f73c5d5`](https://github.com/nodejs/node/commit/4c6f73c5d5)] - **url**: improve performance of the format function (Giovanni Bucci) [#57099](https://github.com/nodejs/node/pull/57099) +- \[[`94c720c4ee`](https://github.com/nodejs/node/commit/94c720c4ee)] - **util**: add internal `assignFunctionName()` function (LiviaMedeiros) [#57916](https://github.com/nodejs/node/pull/57916) +- \[[`3ed159afd1`](https://github.com/nodejs/node/commit/3ed159afd1)] - **watch**: fix watch args not being properly filtered (Dario Piotrowicz) [#58279](https://github.com/nodejs/node/pull/58279) + +Windows 64-bit Installer: https://nodejs.org/dist/v24.1.0/node-v24.1.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.1.0/node-v24.1.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v24.1.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.1.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v24.1.0/node-v24.1.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.1.0/node-v24.1.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.1.0/node-v24.1.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v24.1.0/node-v24.1.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.1.0/node-v24.1.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.1.0/node-v24.1.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v24.1.0/node-v24.1.0-aix-ppc64.tar.gz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v24.1.0/node-v24.1.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v24.1.0/node-v24.1.0.tar.gz \ +Other release files: https://nodejs.org/dist/v24.1.0/ \ +Documentation: https://nodejs.org/docs/v24.1.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +363a6826fa1ca6bec5028bc4e061b9dcf2f8e163ca4963e8c3d346c03b1ebff1 node-v24.1.0-aix-ppc64.tar.gz +f77a0cc7424d1853f0c3d3911b6f414d84fa4e5e3c71fbd30e909e3a546378b8 node-v24.1.0-arm64.msi +d474192c55b9f54ead37310dfab54431b9ba841fb8abdf8ca800e7a227afc1fb node-v24.1.0-darwin-arm64.tar.gz +c107305437e41a111f11de52e87b06edf3b462fd1a4178d553704ef96c296f7f node-v24.1.0-darwin-arm64.tar.xz +cdb47a43209c2fa4b6d9ccf7b71e59096448d172d0034aa213284f8931ef0946 node-v24.1.0-darwin-x64.tar.gz +24972a36e5468bba55fba413c2a09454a3c1e4daa1f8421da9b6c51fc0f4b0f8 node-v24.1.0-darwin-x64.tar.xz +058b49221a7e440209380b744aa5b69e3d08c10fee209e0c0acff818f68f7711 node-v24.1.0-headers.tar.gz +537af3811e044007bf6d7a9c43ae97504b41a20f706cdd61c29c8330b8c815e9 node-v24.1.0-headers.tar.xz +4ed15737d3781baa7d69b6a2e576507666229208fd25c83d58abf8d95b6a56f3 node-v24.1.0-linux-arm64.tar.gz +ff5a3a68781794a473f59a727f35314723785eff6f48aaf983361fadf0eadf36 node-v24.1.0-linux-arm64.tar.xz +62777e5245ec46c151409111172adb7f30f2ef9d006ff5ba11c7cae76b9e91ee node-v24.1.0-linux-ppc64le.tar.gz +04fa3da93d7e81151ad604b402068d5fc4e8b330c2b65514b86065fccd910f83 node-v24.1.0-linux-ppc64le.tar.xz +83fcab77f7feafa235da6d9d8496adb4c6411b7a9468538447ea27f078decf31 node-v24.1.0-linux-s390x.tar.gz +f01c53d1ba0e7f39ad170a4bb5be3be428e732a27753bb7049e9bde0b058ff35 node-v24.1.0-linux-s390x.tar.xz +4d2beaa55d962c1b31d6a4663cc831087f79f83f304a066963b65c8f4495843f node-v24.1.0-linux-x64.tar.gz +76b77c43f97a7c4cf60917e24c5e212faaf8ca664e433759ef98d12f268b6b49 node-v24.1.0-linux-x64.tar.xz +8a6addad626179ddb07b566d5d2ca60a979577b5b6d87e4668988b759f6a0b38 node-v24.1.0-win-arm64.7z +aa304f30f1420b4ba0067fe18949b67c56a7e88ceb86a7a76dcde24b63a295f3 node-v24.1.0-win-arm64.zip +987cd5f8edb7c687b722d364b698d277c85c377caae3bb97a8ea56a67892bb94 node-v24.1.0-win-x64.7z +81d6774f5c1581c7ddd32fb25cf6138f68755dfbb245025d05a249aafa35ea9d node-v24.1.0-win-x64.zip +082fb5a7fbd4eff935aa39d9d3ba4973e5fe0ceb30f500f0d49a7151b7d3dd28 node-v24.1.0-x64.msi +623b7a5fd6886dcfff8aa360b268a7f5031ec1a8a363b30173c0033c96948100 node-v24.1.0.pkg +b565cba1dd8f2eb3db7c95e0c3a87ecc5e77f079611ea6a3688531511383ec72 node-v24.1.0.tar.gz +c8171b2aeccb28c8c5347f273a25adae172fb2a65bc8c975bc22ec58949d0eaf node-v24.1.0.tar.xz +65cc840ad2b1c4ace2e5896396bef1c0cded8cc4fa1a52eeaf2a3076be90ca87 win-arm64/node.exe +6809fc156673d10cca7dff0e54f28309bb111d235c54493a4a0ca401c2113be7 win-arm64/node.lib +ee9ef6133f31a858fd7d5a25acc707d6a1e0676b33a60ca899fd14296e8b16df win-arm64/node_pdb.7z +7650ee0c93704e14194f737d6cb2592269069a960c87ccc0f2807ae177e43e1e win-arm64/node_pdb.zip +586ba24429b718a548ca76cef2414fc64a4755987ac907b5e98ca8d897edbb5d win-x64/node.exe +34882ca2bb450431047f2dd3bae1c3b8c1cd2b4cffd5c1a0bf079948846d2b83 win-x64/node.lib +e4ecb727402d18544e876d7fdbca16e67b76e8f352c6014b8d05da5ed3bb8163 win-x64/node_pdb.7z +975e384f09ef4516c6c7f0b663a8164592b59a30719b987620c66e098f27d8bf win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmgt8UwACgkQIdkA/9sj +N1ZJIQ//d0qk4XuEG5KdhYnBdjqGX0hsoogtQ5p5bR7hofmj0YrnzEUKqyUmOFqR +au0lfEVjmb6pJvxKalGivtWuFQRmrrtKwWn9rmtC1q5T0TxRRBYCAk+lh1BeEQ3L +TZNsG8j15rWOHyiue2PPWMIMxd2rkiXyGVEZHr5/hth4Aw/QlZ0ZT6MM3GhVogfJ +l/LLFo8HMrOPhWjMumbkqM4wgyAN7vPAiERAbD1whJrOhv+VO5ZyhhQvCH8pmKMb +0ZuE36cqEQ5AA0F3exJLMGR7oMRXO6tjsIwPOuZOHji8xvwStggxLYNM+C0dnNuv ++yyYmL0VpxmX2fdG/yI19L3jTT6F3BdaTugVfEnE6E63hh17yg2jRaipto4gdifZ +5Ugm/C1tPnApYkOdfyy7oGfpRDJdor8t3wB4uM5oisLgMBMFDUcFf+JfISU+G6H8 +U5akqXSuZmnDuvK7ofhDt18Nyvwu+q2nMNPCVRORve4s3eKp/fk8/xjDnSTc89dx +YOTfR1etQ6+T3fFnLM44+INbfRMcs0zGZhmyi1DNQLTh+g8ydy9UfOruEkUAI0Bh +iQ7PWjggGxoYav3PSqnt4yfj1NoGgkclXZm86GCAnqu2rfBsR1tNe+aDQ7q8yusB +gyrr1jjLryugV7E2/KdYM9tpGqwylWR+XyOh5QNWCa4GK2xz6pU= +=yqwo +-----END PGP SIGNATURE----- +``` From 8161d6df5c8fb10ad0e2be56026a77ce14758ee4 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 22 May 2025 04:34:20 -0400 Subject: [PATCH 0480/1385] chore(ui): move `ArticleLayout` to `ui-components` (#7762) * chore(ui): move `ArticleLayout` to `ui-components` * fixup! chore(ui): move `ArticleLayout` to `ui-components` * add story --- apps/site/layouts/About.tsx | 6 +- apps/site/layouts/ArticlePage.tsx | 6 +- apps/site/layouts/Default.tsx | 6 +- apps/site/layouts/Learn.tsx | 6 +- apps/site/layouts/layouts.module.css | 69 ------------------ .../Containers/Article/index.module.css | 70 +++++++++++++++++++ .../Containers/Article/index.stories.tsx | 39 +++++++++++ .../Containers/Article/index.tsx | 2 +- 8 files changed, 122 insertions(+), 82 deletions(-) create mode 100644 packages/ui-components/Containers/Article/index.module.css create mode 100644 packages/ui-components/Containers/Article/index.stories.tsx rename apps/site/layouts/Article.tsx => packages/ui-components/Containers/Article/index.tsx (83%) diff --git a/apps/site/layouts/About.tsx b/apps/site/layouts/About.tsx index f37d797c8a852..b6f2fecae5419 100644 --- a/apps/site/layouts/About.tsx +++ b/apps/site/layouts/About.tsx @@ -1,3 +1,4 @@ +import Article from '@node-core/ui-components/Containers/Article'; import type { FC, PropsWithChildren } from 'react'; import WithBreadcrumbs from '#site/components/withBreadcrumbs'; @@ -5,14 +6,13 @@ import WithFooter from '#site/components/withFooter'; import WithMetaBar from '#site/components/withMetaBar'; import WithNavBar from '#site/components/withNavBar'; import WithSidebar from '#site/components/withSidebar'; -import ArticleLayout from '#site/layouts/Article'; import { ReleaseModalProvider } from '#site/providers/releaseModalProvider'; const AboutLayout: FC<PropsWithChildren> = ({ children }) => ( <ReleaseModalProvider> <WithNavBar /> - <ArticleLayout> + <Article> <WithSidebar navKeys={['about', 'getInvolved']} /> <div> @@ -22,7 +22,7 @@ const AboutLayout: FC<PropsWithChildren> = ({ children }) => ( </div> <WithBreadcrumbs navKeys={['about', 'getInvolved']} /> - </ArticleLayout> + </Article> <WithFooter /> </ReleaseModalProvider> diff --git a/apps/site/layouts/ArticlePage.tsx b/apps/site/layouts/ArticlePage.tsx index 02c2cbb412c46..c33c3f4fe3998 100644 --- a/apps/site/layouts/ArticlePage.tsx +++ b/apps/site/layouts/ArticlePage.tsx @@ -1,15 +1,15 @@ +import Article from '@node-core/ui-components/Containers/Article'; import type { FC, PropsWithChildren } from 'react'; import WithMetaBar from '#site/components/withMetaBar'; import WithNavBar from '#site/components/withNavBar'; import WithSidebar from '#site/components/withSidebar'; -import ArticleLayout from '#site/layouts/Article'; const ArticlePageLayout: FC<PropsWithChildren> = ({ children }) => ( <> <WithNavBar /> - <ArticleLayout> + <Article> <WithSidebar navKeys={[]} /> <div> @@ -17,7 +17,7 @@ const ArticlePageLayout: FC<PropsWithChildren> = ({ children }) => ( <WithMetaBar /> </div> - </ArticleLayout> + </Article> </> ); diff --git a/apps/site/layouts/Default.tsx b/apps/site/layouts/Default.tsx index dc459c28fa7c4..972b6d1fbfb48 100644 --- a/apps/site/layouts/Default.tsx +++ b/apps/site/layouts/Default.tsx @@ -1,21 +1,21 @@ +import Article from '@node-core/ui-components/Containers/Article'; import type { FC, PropsWithChildren } from 'react'; import WithFooter from '#site/components/withFooter'; import WithNavBar from '#site/components/withNavBar'; import WithSidebar from '#site/components/withSidebar'; -import ArticleLayout from '#site/layouts/Article'; const DefaultLayout: FC<PropsWithChildren> = ({ children }) => ( <> <WithNavBar /> - <ArticleLayout> + <Article> <WithSidebar navKeys={[]} /> <div> <main>{children}</main> </div> - </ArticleLayout> + </Article> <WithFooter /> </> diff --git a/apps/site/layouts/Learn.tsx b/apps/site/layouts/Learn.tsx index e795495ac64a1..19927fd1c2d03 100644 --- a/apps/site/layouts/Learn.tsx +++ b/apps/site/layouts/Learn.tsx @@ -1,3 +1,4 @@ +import Article from '@node-core/ui-components/Containers/Article'; import type { FC, PropsWithChildren } from 'react'; import WithBreadcrumbs from '#site/components/withBreadcrumbs'; @@ -6,13 +7,12 @@ import WithMetaBar from '#site/components/withMetaBar'; import WithNavBar from '#site/components/withNavBar'; import WithProgressionSidebar from '#site/components/withProgressionSidebar'; import WithSidebarCrossLinks from '#site/components/withSidebarCrossLinks'; -import ArticleLayout from '#site/layouts/Article'; const LearnLayout: FC<PropsWithChildren> = ({ children }) => ( <> <WithNavBar /> - <ArticleLayout> + <Article> <WithProgressionSidebar navKey="learn" /> <div> @@ -26,7 +26,7 @@ const LearnLayout: FC<PropsWithChildren> = ({ children }) => ( </div> <WithBreadcrumbs navKeys={['learn']} /> - </ArticleLayout> + </Article> <WithFooter /> </> diff --git a/apps/site/layouts/layouts.module.css b/apps/site/layouts/layouts.module.css index f974a59063a40..09cff10300de0 100644 --- a/apps/site/layouts/layouts.module.css +++ b/apps/site/layouts/layouts.module.css @@ -9,75 +9,6 @@ grid-rows-[auto_1fr_auto]; } -.articleLayout { - @apply max-w-8xl - mx-auto - block - w-full - sm:grid - sm:grid-cols-[theme(spacing.52)_1fr] - sm:grid-rows-[1fr] - sm:overflow-visible - sm:[grid-template-areas:'sidebar_main''sidebar_footer'] - md:grid-cols-[theme(spacing.64)_1fr] - lg:grid-cols-[theme(spacing.52)_1fr_theme(spacing.52)] - lg:[grid-template-areas:'sidebar_main_metabar''sidebar_footer_metabar'] - xl:grid-cols-[theme(spacing.80)_1fr_theme(spacing.80)]; - - > *:nth-child(1) { - @apply [grid-area:sidebar] - lg:sticky - lg:top-0 - lg:h-[100vh] - lg:overflow-y-auto; - } - - > *:nth-child(2) { - @apply contents - sm:max-lg:block; - - > *:first-child { - @apply sm:bg-gradient-subtle - sm:dark:bg-gradient-subtle-dark - xl:px-18 - p-4 - [grid-area:main] - motion-safe:scroll-smooth - sm:bg-fixed - sm:p-12; - } - - > *:last-child { - @apply mt-8 - border-t - [grid-area:metabar] - sm:mt-0 - lg:sticky - lg:top-0 - lg:max-w-xs - lg:border-l - lg:border-t-0; - } - } - - > *:nth-child(3) { - @apply sticky - bottom-0 - flex - w-full - flex-col - items-center - self-stretch - border-t - border-t-neutral-200 - bg-white - py-4 - [grid-area:footer] - dark:border-t-neutral-900 - dark:bg-neutral-950; - } -} - .centeredLayout { @apply flex w-full diff --git a/packages/ui-components/Containers/Article/index.module.css b/packages/ui-components/Containers/Article/index.module.css new file mode 100644 index 0000000000000..3073bf8f91e7c --- /dev/null +++ b/packages/ui-components/Containers/Article/index.module.css @@ -0,0 +1,70 @@ +@reference "../../styles/index.css"; + +.articleLayout { + @apply max-w-8xl + mx-auto + block + w-full + sm:grid + sm:grid-cols-[theme(spacing.52)_1fr] + sm:grid-rows-[1fr] + sm:overflow-visible + sm:[grid-template-areas:'sidebar_main''sidebar_footer'] + md:grid-cols-[theme(spacing.64)_1fr] + lg:grid-cols-[theme(spacing.52)_1fr_theme(spacing.52)] + lg:[grid-template-areas:'sidebar_main_metabar''sidebar_footer_metabar'] + xl:grid-cols-[theme(spacing.80)_1fr_theme(spacing.80)]; + + > *:nth-child(1) { + @apply [grid-area:sidebar] + lg:sticky + lg:top-0 + lg:h-[100vh] + lg:overflow-y-auto; + } + + > *:nth-child(2) { + @apply contents + sm:max-lg:block; + + > *:first-child { + @apply sm:bg-gradient-subtle + sm:dark:bg-gradient-subtle-dark + xl:px-18 + p-4 + [grid-area:main] + motion-safe:scroll-smooth + sm:bg-fixed + sm:p-12; + } + + > *:last-child { + @apply mt-8 + border-t + [grid-area:metabar] + sm:mt-0 + lg:sticky + lg:top-0 + lg:max-w-xs + lg:border-l + lg:border-t-0; + } + } + + > *:nth-child(3) { + @apply sticky + bottom-0 + flex + w-full + flex-col + items-center + self-stretch + border-t + border-t-neutral-200 + bg-white + py-4 + [grid-area:footer] + dark:border-t-neutral-900 + dark:bg-neutral-950; + } +} diff --git a/packages/ui-components/Containers/Article/index.stories.tsx b/packages/ui-components/Containers/Article/index.stories.tsx new file mode 100644 index 0000000000000..8aa0cfabf65e9 --- /dev/null +++ b/packages/ui-components/Containers/Article/index.stories.tsx @@ -0,0 +1,39 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import Article from '.'; + +type Story = StoryObj<typeof Article>; +type Meta = MetaObj<typeof Article>; + +const Sidebar = () => ( + <div className="text-center"> + <h3>Sidebar</h3> + <ul> + <li>Navigation Item 1</li> + <li>Navigation Item 2</li> + <li>Navigation Item 3</li> + <li>Navigation Item 4</li> + </ul> + </div> +); + +export const Default: Story = { + args: { + children: ( + <> + <Sidebar /> + <div> + <main> + <p> + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. + </p> + </main> + <Sidebar /> + </div> + </> + ), + }, +}; + +export default { component: Article } as Meta; diff --git a/apps/site/layouts/Article.tsx b/packages/ui-components/Containers/Article/index.tsx similarity index 83% rename from apps/site/layouts/Article.tsx rename to packages/ui-components/Containers/Article/index.tsx index 03bc91c793b0a..7b31c225a914f 100644 --- a/apps/site/layouts/Article.tsx +++ b/packages/ui-components/Containers/Article/index.tsx @@ -1,6 +1,6 @@ import type { FC, PropsWithChildren } from 'react'; -import styles from './layouts.module.css'; +import styles from './index.module.css'; const ArticleLayout: FC<PropsWithChildren> = ({ children }) => ( <div className={styles.articleLayout}>{children}</div> From 3eb8f8c4a838c699a3fdda4a24f1689a791abe0e Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 23 May 2025 04:34:54 -0400 Subject: [PATCH 0481/1385] feat(test): add playwright tests (#7749) * feat(test): add playwright tests * use roles when possible * Update general-behavior.spec.ts Signed-off-by: Aviv Keller <me@aviv.sh> * add browsers back Signed-off-by: Aviv Keller <me@aviv.sh> * use locator --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/playwright.yml | 107 ++++++++++++ .gitignore | 5 +- COLLABORATOR_GUIDE.md | 18 ++ apps/site/.stylelintignore | 4 + apps/site/components/withNavBar.tsx | 2 +- apps/site/package.json | 2 + apps/site/playwright.config.ts | 32 ++++ apps/site/tests/e2e/general-behavior.spec.ts | 159 ++++++++++++++++++ eslint.config.js | 2 + packages/i18n/lib/index.mjs | 4 +- .../Common/ThemeToggle/index.tsx | 19 +-- .../ui-components/Containers/NavBar/index.tsx | 2 + pnpm-lock.yaml | 61 +++++-- 13 files changed, 387 insertions(+), 30 deletions(-) create mode 100644 .github/workflows/playwright.yml create mode 100644 apps/site/playwright.config.ts create mode 100644 apps/site/tests/e2e/general-behavior.spec.ts diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 0000000000000..bbc1cb3353d53 --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,107 @@ +# Security Notes +# Only selected Actions are allowed within this repository. Please refer to (https://github.com/nodejs/nodejs.org/settings/actions) +# for the full list of available actions. If you want to add a new one, please reach out a maintainer with Admin permissions. +# REVIEWERS, please always double-check security practices before merging a PR that contains Workflow changes!! +# AUTHORS, please only use actions with explicit SHA references, and avoid using `@master` or `@main` references or `@version` tags. +# MERGE QUEUE NOTE: This Workflow does not run on `merge_group` trigger, as this Workflow is not required for Merge Queue's + +name: Playwright Tests + +on: + pull_request: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + actions: read + +jobs: + get-vercel-preview: + name: Get Vercel Preview + runs-on: ubuntu-latest + outputs: + deployment_found: ${{ steps.set_outputs.outputs.deployment_found }} + url: ${{ steps.set_outputs.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 + + playwright: + needs: get-vercel-preview + if: needs.get-vercel-preview.outputs.deployment_found == 'true' + name: Playwright Tests + runs-on: ubuntu-latest + + steps: + - name: Harden Runner + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 + with: + egress-policy: audit + + - name: Git Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + cache: true + + - name: Set up Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + # We want to ensure that the Node.js version running here respects our supported versions + node-version-file: '.nvmrc' + cache: 'pnpm' + + - name: Install packages + run: pnpm install --frozen-lockfile + + - name: Get Playwright version + id: playwright-version + working-directory: apps/site + run: echo "version=$(pnpm exec playwright --version | awk '{print $2}')" >> $GITHUB_OUTPUT + + - name: Cache Playwright browsers + id: playwright-cache + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + with: + path: ~/.cache/ms-playwright + key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }} + + - name: Install Playwright Browsers + working-directory: apps/site + run: pnpm exec playwright install --with-deps + + - name: Run Playwright tests + working-directory: apps/site + run: pnpm playwright + env: + VERCEL_PREVIEW_URL: ${{ needs.get-vercel-preview.outputs.url }} + + - name: Upload Playwright test results + if: always() + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: playwright-report + path: apps/site/playwright-report/ diff --git a/.gitignore b/.gitignore index dd97ef0e64f2d..2c2edea1406ac 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,6 @@ cache # TypeScript tsconfig.tsbuildinfo - dist/ # Ignore the blog-data json that we generate during dev and build @@ -43,3 +42,7 @@ apps/site/public/blog-data.json apps/site/.open-next apps/site/.wrangler + +## Playwright +test-results +playwright-report diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 6dcd3f49d5de2..857efecd5c037 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -18,6 +18,7 @@ - [Adding a Download Package Manager](#adding-a-download-package-manager) - [Unit Tests and Storybooks](#unit-tests-and-storybooks) - [General Guidelines for Unit Tests](#general-guidelines-for-unit-tests) + - [General Guidelines for Playwright E2E Tests](#general-guidelines-for-playwright-e2e-tests) - [General Guidelines for Storybooks](#general-guidelines-for-storybooks) - [Remarks on Technologies used](#remarks-on-technologies-used) - [Seeking additional clarification](#seeking-additional-clarification) @@ -437,6 +438,23 @@ Unit Tests are fundamental to ensure that code changes do not disrupt the functi - Common Providers and Contexts from the lifecycle of our App, such as [`next-intl`][] should not be mocked but given an empty or fake context whenever possible. - We recommend reading previous unit tests from the codebase for inspiration and code guidelines. +### General Guidelines for Playwright E2E Tests + +End-to-end (E2E) tests are essential for ensuring that the entire application works correctly from a user's perspective: + +- E2E tests are located in the `apps/site/tests/e2e` directory. +- We use [Playwright](https://playwright.dev/) as our E2E testing framework. +- E2E tests should focus on user flows and critical paths through the application. +- Tests should be written to be resilient to minor UI changes and should prioritize testing functionality over exact visual appearance. +- When writing E2E tests: + - Use meaningful test descriptions that clearly indicate what is being tested. + - Group related tests using Playwright's test grouping features. + - Use page objects or similar patterns to keep tests maintainable. + - Minimize test interdependencies to prevent cascading failures. +- Tests should run against the built application to accurately reflect the production environment. +- We recommend reviewing existing E2E tests in the codebase for patterns and best practices. +- If your feature involves complex user interactions or spans multiple pages, consider adding E2E tests to verify the complete flow. + ### General Guidelines for Storybooks Storybooks are an essential part of our development process. They help us to document our components and to ensure that the components are working as expected. diff --git a/apps/site/.stylelintignore b/apps/site/.stylelintignore index 82e0936e61013..bb4f97f4cd44d 100644 --- a/apps/site/.stylelintignore +++ b/apps/site/.stylelintignore @@ -17,3 +17,7 @@ styles/old # Cloudflare Build Output .open-next .wrangler + +# Playwright +test-results +playwright-report diff --git a/apps/site/components/withNavBar.tsx b/apps/site/components/withNavBar.tsx index 882d98bcef78f..4d575157cc276 100644 --- a/apps/site/components/withNavBar.tsx +++ b/apps/site/components/withNavBar.tsx @@ -63,7 +63,7 @@ const WithNavBar: FC = () => { <ThemeToggle onClick={toggleCurrentTheme} - ariaLabel={t('components.common.themeToggle.label')} + aria-label={t('components.common.themeToggle.label')} /> <LanguageDropdown diff --git a/apps/site/package.json b/apps/site/package.json index 9a8833fe12747..e61c670b06f42 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -12,6 +12,7 @@ "lint:fix": "turbo run lint:md lint:js lint:css --no-cache -- --fix", "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", "lint:md": "eslint \"**/*.md?(x)\" --cache --cache-strategy=content --cache-location=.eslintmdcache", + "playwright": "playwright test", "scripts:release-post": "cross-env NODE_NO_WARNINGS=1 node scripts/release-post/index.mjs", "serve": "pnpm dev", "start": "cross-env NODE_NO_WARNINGS=1 next start", @@ -78,6 +79,7 @@ "@flarelabs-net/wrangler-build-time-fs-assets-polyfilling": "^0.0.0", "@next/eslint-plugin-next": "15.3.1", "@opennextjs/cloudflare": "^1.0.0-beta.4", + "@playwright/test": "^1.52.0", "@testing-library/user-event": "~14.6.1", "@types/semver": "~7.7.0", "eslint-config-next": "15.3.1", diff --git a/apps/site/playwright.config.ts b/apps/site/playwright.config.ts new file mode 100644 index 0000000000000..da8afcedde794 --- /dev/null +++ b/apps/site/playwright.config.ts @@ -0,0 +1,32 @@ +import { defineConfig, devices } from '@playwright/test'; + +const isCI = !!process.env.CI; + +// https://playwright.dev/docs/test-configuration +export default defineConfig({ + testDir: './tests/e2e', + fullyParallel: true, + forbidOnly: isCI, + retries: isCI ? 2 : 0, + workers: isCI ? 1 : undefined, + reporter: isCI ? [['html'], ['github']] : [['html']], + use: { + baseURL: process.env.VERCEL_PREVIEW_URL || 'http://127.0.0.1:3000', + trace: 'on-first-retry', + }, + + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + ], +}); diff --git a/apps/site/tests/e2e/general-behavior.spec.ts b/apps/site/tests/e2e/general-behavior.spec.ts new file mode 100644 index 0000000000000..b3607453b58d2 --- /dev/null +++ b/apps/site/tests/e2e/general-behavior.spec.ts @@ -0,0 +1,159 @@ +import { importLocale } from '@node-core/website-i18n'; +import { test, expect, type Page } from '@playwright/test'; + +const englishLocale = await importLocale('en'); + +// TODO(@avivkeller): It would be ideal for all the Test IDs to not exist in the +// ui-components package, and instead be passed as props. +const locators = { + // Navigation elements + mobileMenuToggleName: + englishLocale.components.containers.navBar.controls.toggle, + navLinksLocator: `[aria-label="${englishLocale.components.containers.navBar.controls.toggle}"] + div`, + // Global UI controls + languageDropdownName: englishLocale.components.common.languageDropdown.label, + themeToggleName: englishLocale.components.common.themeToggle.label, + + // Search components (from Orama library) + searchButtonTag: 'orama-button', + searchInputTag: 'orama-input', + searchResultsTag: 'orama-search-results', +}; + +const getTheme = (page: Page) => + page.evaluate(() => document.documentElement.dataset.theme); + +const openLanguageMenu = async (page: Page) => { + const button = page.getByRole('button', { + name: locators.languageDropdownName, + }); + const selector = `[aria-labelledby=${await button.getAttribute('id')}]`; + await button.click(); + + await page.waitForSelector(selector); + return page.locator(selector); +}; + +const verifyTranslation = async ( + page: Page, + locale: string | Record<string, unknown> +) => { + // Load locale data if string code provided (e.g., 'es', 'fr') + const localeData = + typeof locale === 'string' ? await importLocale(locale) : locale; + + // Get navigation links and expected translations + const links = await page + .locator(locators.navLinksLocator) + .locator('a > span') + .all(); + const expectedTexts = Object.values( + localeData.components.containers.navBar.links + ); + + // Verify each navigation link text matches an expected translation + for (const link of links) { + const linkText = await link.textContent(); + expect(expectedTexts).toContain(linkText!.trim()); + } +}; + +test.describe('Node.js Website', () => { + // Start each test from the English homepage + test.beforeEach(async ({ page }) => { + await page.goto('/en'); + }); + + test.describe('Theme', () => { + test('should toggle between light/dark themes', async ({ page }) => { + const themeToggle = page.getByRole('button', { + name: locators.themeToggleName, + }); + await expect(themeToggle).toBeVisible(); + + const initialTheme = await getTheme(page); + await themeToggle.click(); + + const newTheme = await getTheme(page); + expect(newTheme).not.toEqual(initialTheme); + expect(['light', 'dark']).toContain(newTheme); + }); + + test('should persist theme across page navigation', async ({ page }) => { + const themeToggle = page.getByRole('button', { + name: locators.themeToggleName, + }); + await themeToggle.click(); + const selectedTheme = await getTheme(page); + + await page.reload(); + expect(await getTheme(page)).toBe(selectedTheme); + }); + + test('should respect system preference initially', async ({ browser }) => { + const context = await browser.newContext({ colorScheme: 'dark' }); + const page = await context.newPage(); + + await page.goto('/en'); + expect(await getTheme(page)).toBe('dark'); + + await context.close(); + }); + }); + + test.describe('Language', () => { + test('should correctly translate UI elements according to language files', async ({ + page, + }) => { + await verifyTranslation(page, englishLocale); + + // Change to Spanish and verify translations + const menu = await openLanguageMenu(page); + await menu.getByText(/español/i).click(); + await page.waitForURL(/\/es$/); + + await verifyTranslation(page, 'es'); + }); + }); + + test.describe('Search', () => { + test('should show and operate search functionality', async ({ page }) => { + // Open search dialog + await page.locator(locators.searchButtonTag).click(); + + // Verify search input is visible and enter a search term + const searchInput = page.locator(locators.searchInputTag); + await expect(searchInput).toBeVisible(); + await searchInput.pressSequentially('express'); + + // Verify search results appear + const searchResults = page.locator(locators.searchResultsTag); + await expect(searchResults).toBeVisible(); + }); + }); + + test.describe('Navigation', () => { + test('should have functioning mobile menu on small screens', async ({ + page, + }) => { + // Set mobile viewport size + await page.setViewportSize({ width: 375, height: 667 }); + + // Locate mobile menu toggle button and verify it's visible + const mobileToggle = page.getByRole('button', { + name: locators.mobileMenuToggleName, + }); + await expect(mobileToggle).toBeVisible(); + + const navLinks = page.locator(locators.navLinksLocator); + + // Toggle menu open and verify it's visible + await mobileToggle.click(); + await expect(navLinks.first()).toBeVisible(); + + // Toggle menu closed and verify it's hidden + await mobileToggle.click(); + await expect(navLinks.first()).not.toBeVisible(); + }); + }); +}); diff --git a/eslint.config.js b/eslint.config.js index c0cd4b7e032c0..4359c1ca31f3e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -16,6 +16,8 @@ export default [ 'storybook-static/**', '**/.wrangler', '**/.open-next', + 'test-results', + 'playwright-report', ], }, { diff --git a/packages/i18n/lib/index.mjs b/packages/i18n/lib/index.mjs index 12956d80a643b..25336fe7330a4 100644 --- a/packages/i18n/lib/index.mjs +++ b/packages/i18n/lib/index.mjs @@ -9,7 +9,9 @@ import localeConfig from '../config.json' with { type: 'json' }; * @returns {Promise<Record<string, any>>} The imported locale */ export const importLocale = async locale => { - return import(`../locales/${locale}.json`).then(f => f.default); + return import(`../locales/${locale}.json`, { with: { type: 'json' } }).then( + f => f.default + ); }; /** diff --git a/packages/ui-components/Common/ThemeToggle/index.tsx b/packages/ui-components/Common/ThemeToggle/index.tsx index 01ada3d2765be..326338e75912b 100644 --- a/packages/ui-components/Common/ThemeToggle/index.tsx +++ b/packages/ui-components/Common/ThemeToggle/index.tsx @@ -1,24 +1,11 @@ import { MoonIcon, SunIcon } from '@heroicons/react/24/outline'; -import type { FC, MouseEvent } from 'react'; +import type { FC, ButtonHTMLAttributes } from 'react'; import styles from './index.module.css'; -type ThemeToggleProps = { - onClick?: (event: MouseEvent<HTMLButtonElement>) => void; - ariaLabel: string; -}; - -const ThemeToggle: FC<ThemeToggleProps> = ({ - onClick = () => {}, - ariaLabel, -}) => { +const ThemeToggle: FC<ButtonHTMLAttributes<HTMLButtonElement>> = props => { return ( - <button - type="button" - onClick={onClick} - className={styles.themeToggle} - aria-label={ariaLabel} - > + <button type="button" className={styles.themeToggle} {...props}> <MoonIcon className="block dark:hidden" height="20" /> <SunIcon className="hidden dark:block" height="20" /> </button> diff --git a/packages/ui-components/Containers/NavBar/index.tsx b/packages/ui-components/Containers/NavBar/index.tsx index 1c89566be1c42..6fcc1fd05b35d 100644 --- a/packages/ui-components/Containers/NavBar/index.tsx +++ b/packages/ui-components/Containers/NavBar/index.tsx @@ -54,6 +54,8 @@ const NavBar: FC<PropsWithChildren<NavbarProps>> = ({ <Label.Root className={style.sidebarItemTogglerLabel} htmlFor="sidebarItemToggler" + role="button" + aria-label={sidebarItemTogglerAriaLabel} > {navInteractionIcons[isMenuOpen ? 'close' : 'show']} </Label.Root> diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 75aae31ba9fdd..569f860aff5ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,13 +107,13 @@ importers: version: 0.1.0 '@vercel/analytics': specifier: ~1.5.0 - version: 1.5.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 1.5.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) '@vercel/otel': specifier: ~1.11.0 version: 1.11.0(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) '@vercel/speed-insights': specifier: ~1.2.0 - version: 1.2.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 1.2.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) classnames: specifier: ~2.5.1 version: 2.5.1 @@ -134,10 +134,10 @@ importers: version: 4.0.3 next: specifier: 15.3.1 - version: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-intl: specifier: ~4.1.0 - version: 4.1.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 4.1.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) next-themes: specifier: ~0.4.6 version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -196,6 +196,9 @@ importers: '@opennextjs/cloudflare': specifier: ^1.0.0-beta.4 version: 1.0.0-beta.4(wrangler@4.14.1) + '@playwright/test': + specifier: ^1.52.0 + version: 1.52.0 '@testing-library/user-event': specifier: ~14.6.1 version: 14.6.1(@testing-library/dom@10.4.0) @@ -2050,6 +2053,11 @@ packages: resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@playwright/test@1.52.0': + resolution: {integrity: sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==} + engines: {node: '>=18'} + hasBin: true + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -4835,6 +4843,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -6310,6 +6323,16 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + playwright-core@1.52.0: + resolution: {integrity: sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.52.0: + resolution: {integrity: sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==} + engines: {node: '>=18'} + hasBin: true + pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -9996,6 +10019,10 @@ snapshots: '@pkgr/core@0.2.4': {} + '@playwright/test@1.52.0': + dependencies: + playwright: 1.52.0 + '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.2': {} @@ -11685,9 +11712,9 @@ snapshots: mdast-util-to-string: 3.2.0 unist-util-visit: 4.1.2 - '@vercel/analytics@1.5.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@vercel/analytics@1.5.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': optionalDependencies: - next: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 '@vercel/otel@1.11.0(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': @@ -11700,9 +11727,9 @@ snapshots: '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@vercel/speed-insights@1.2.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@vercel/speed-insights@1.2.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': optionalDependencies: - next: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 '@vitest/expect@2.0.5': @@ -13352,6 +13379,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -14845,11 +14875,11 @@ snapshots: neo-async@2.6.2: {} - next-intl@4.1.0(next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + next-intl@4.1.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0 - next: 15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 use-intl: 4.1.0(react@19.1.0) optionalDependencies: @@ -14860,7 +14890,7 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@next/env': 15.3.1 '@swc/counter': 0.1.3 @@ -14881,6 +14911,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.3.1 '@next/swc-win32-x64-msvc': 15.3.1 '@opentelemetry/api': 1.9.0 + '@playwright/test': 1.52.0 sharp: 0.34.1 transitivePeerDependencies: - '@babel/core' @@ -15157,6 +15188,14 @@ snapshots: dependencies: find-up: 4.1.0 + playwright-core@1.52.0: {} + + playwright@1.52.0: + dependencies: + playwright-core: 1.52.0 + optionalDependencies: + fsevents: 2.3.2 + pluralize@8.0.0: {} polished@4.3.1: From 9882094554e5729daaae29c4f1534678a3ec54a0 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 23 May 2025 06:37:33 -0400 Subject: [PATCH 0482/1385] chore(ui): don't depend on pnpm syntax (#7771) --- packages/ui-components/package.json | 1 - packages/ui-components/types.ts | 10 +++++----- pnpm-lock.yaml | 3 --- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 83dea8a3b919d..a61f6c129f9a2 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -48,7 +48,6 @@ "tailwindcss": "~4.0.17" }, "devDependencies": { - "@node-core/website-i18n": "workspace:*", "@storybook/addon-controls": "^8.6.12", "@storybook/addon-interactions": "^8.6.12", "@storybook/addon-styling-webpack": "^1.0.1", diff --git a/packages/ui-components/types.ts b/packages/ui-components/types.ts index 319b3be22d6e4..86088827f76e8 100644 --- a/packages/ui-components/types.ts +++ b/packages/ui-components/types.ts @@ -1,4 +1,3 @@ -import type { LocaleConfig } from '@node-core/website-i18n/types'; import type { SVGProps, AnchorHTMLAttributes, @@ -19,7 +18,8 @@ export type FormattedMessage = | ReactElement<HTMLElement, string | JSXElementConstructor<HTMLElement>> | ReadonlyArray<ReactNode>; -export type SimpleLocaleConfig = Pick< - LocaleConfig, - 'name' | 'code' | 'localName' ->; +export type SimpleLocaleConfig = { + code: string; + localName: string; + name: string; +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 569f860aff5ea..4527ae25e4222 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -371,9 +371,6 @@ importers: specifier: ~4.0.17 version: 4.0.17 devDependencies: - '@node-core/website-i18n': - specifier: workspace:* - version: link:../i18n '@storybook/addon-controls': specifier: ^8.6.12 version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) From 634567e31763e4d94fe0238a374b99858378aec6 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 23 May 2025 06:44:22 -0400 Subject: [PATCH 0483/1385] chore(download): remove windows instructions from fnm (#7769) --- apps/site/util/downloadUtils/constants.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/util/downloadUtils/constants.json b/apps/site/util/downloadUtils/constants.json index 526e738fb0357..a04695ee3dd40 100644 --- a/apps/site/util/downloadUtils/constants.json +++ b/apps/site/util/downloadUtils/constants.json @@ -127,10 +127,10 @@ }, { "id": "FNM", - "icon": "NVM", + "icon": "FNM", "name": "fnm", "compatibility": { - "os": ["MAC", "LINUX", "WIN"] + "os": ["MAC", "LINUX"] }, "recommended": true, "url": "https://github.com/Schniz/fnm", From d27573c900eb83f08f1e0c73a963be5d5e456f4e Mon Sep 17 00:00:00 2001 From: Vishal Kumar Gupta <groupsvkg@gmail.com> Date: Fri, 23 May 2025 11:46:08 +0100 Subject: [PATCH 0484/1385] learn(promises): update `fs/promises` example (#7763) * Update discover-promises-in-nodejs.md Signed-off-by: Vishal Kumar Gupta <groupsvkg@gmail.com> * Update discover-promises-in-nodejs.md Signed-off-by: Vishal Kumar Gupta <groupsvkg@gmail.com> --------- Signed-off-by: Vishal Kumar Gupta <groupsvkg@gmail.com> --- .../en/learn/asynchronous-work/discover-promises-in-nodejs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md b/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md index fedde3f62a228..55119614f2bec 100644 --- a/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md +++ b/apps/site/pages/en/learn/asynchronous-work/discover-promises-in-nodejs.md @@ -175,7 +175,7 @@ async function readFile() { readFile(); ``` -In this example, `fs.promises.readFile()` returns a Promise, which we handle using `async/await` syntax to read the contents of a file asynchronously. +In this example, `fs.readFile()` returns a Promise, which we handle using `async/await` syntax to read the contents of a file asynchronously. ## Advanced Promise Methods From 39e3ae1c99699bcd8c04ca2a5f212d0ba1a2fe20 Mon Sep 17 00:00:00 2001 From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Date: Fri, 23 May 2025 13:07:48 +0200 Subject: [PATCH 0485/1385] feat(learn/userland-migrations): add intro (#7764) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(learn/userland-migrations): add intro * fixup!: prettier * fixup!: english → american Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: add nav & labels * Update introduction.md Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: clarify wording * fixup!: remove CLI prompt from code block Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> * fixup!: add `@nodejs/userland-migrations` to CODEOWNERS * Revert "fixup!: add `@nodejs/userland-migrations` to CODEOWNERS" This reverts commit 3655407c67b958f2872821e6b58342288147b771. --------- Signed-off-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Aviv Keller <me@aviv.sh> Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> --- apps/site/navigation.json | 9 ++++++ .../pages/en/learn/migrations/introduction.md | 28 +++++++++++++++++++ packages/i18n/locales/en.json | 6 ++++ 3 files changed, 43 insertions(+) create mode 100644 apps/site/pages/en/learn/migrations/introduction.md diff --git a/apps/site/navigation.json b/apps/site/navigation.json index f18d7fb9a25af..f3cfb8cd9fa7c 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -332,6 +332,15 @@ } } }, + "migrations": { + "label": "components.navigation.learn.migrations.links.migrations", + "items": { + "introduction": { + "link": "/learn/migrations/introduction", + "label": "components.navigation.learn.migrations.links.introduction" + } + } + }, "modules": { "label": "components.navigation.learn.modules.links.modules", "items": { diff --git a/apps/site/pages/en/learn/migrations/introduction.md b/apps/site/pages/en/learn/migrations/introduction.md new file mode 100644 index 0000000000000..40c45a25259f5 --- /dev/null +++ b/apps/site/pages/en/learn/migrations/introduction.md @@ -0,0 +1,28 @@ +--- +title: Userland Migrations +layout: learn +authors: JakobJingleheimer +--- + +# Userland Migrations + +Node.js provides migrations for "userland" (what you write vs node's own) source-code to facilitate adoption of new features and upgrading source-code affected by breaking changes. These are done in collaboration with [`codemod`](https://www.codemod.com), who also work with other major projects like Next.js, React, and Tailwind. Node.js's migrations live in the [`nodejs/userland-migrations`](https://github.com/nodejs/userland-migrations) repository and are overseen by the [`@nodejs/userland-migrations`](https://github.com/orgs/nodejs/teams/userland-migrations) team. + +Official migrations are published under the `@nodejs` namespace within the [codemod registry](https://codemod.com/registry?framework=node.js). These have been reviewed and/or authored by Node.js members. There are also unofficial migrations available which have not been reviewed by Node.js. + +A migration alters a project's source-code to apply a new design pattern, like: + +```console +cd path/to/your/project +npx codemod@latest @nodejs/correct-ts-specifiers +``` + +The cited migration transforms legacy typescript imports to standards-compliant specifiers like: + +```ts displayName="before" +import Foo from './foo'; +``` + +```ts displayName="after" +import type Foo from './foo/index.ts'; +``` diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 156804a86cf2e..aa91e44a3ad9e 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -94,6 +94,12 @@ "acceptInputFromTheCommandLineInNodejs": "Accept input from the command line in Node.js" } }, + "migrations": { + "links": { + "migrations": "Userland Migrations", + "introduction": "Introduction to Userland Migrations" + } + }, "modules": { "links": { "modules": "Modules", From 62622100fe89bac04c21f78a1c4a6c9bb8d24150 Mon Sep 17 00:00:00 2001 From: Joyee Cheung <joyeec9h3@gmail.com> Date: Sat, 24 May 2025 01:02:46 +0200 Subject: [PATCH 0486/1385] content(blog/events): add trip report of 2025 Paris summit (#7772) * content(blog/events): add trip report of 2025 Paris summit * Update apps/site/pages/en/blog/events/collab-summit-2025-paris.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com> * Update apps/site/pages/en/blog/events/collab-summit-2025-paris.md Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com> * update * remove whitespace * correct author * add legendecas to the author list --------- Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> --- apps/site/authors.json | 5 + .../blog/events/collab-summit-2025-paris.md | 96 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 apps/site/pages/en/blog/events/collab-summit-2025-paris.md diff --git a/apps/site/authors.json b/apps/site/authors.json index f3dcd7fa4e86f..cd266914cba64 100644 --- a/apps/site/authors.json +++ b/apps/site/authors.json @@ -49,6 +49,11 @@ "name": "Charlie Robbins", "website": "https://github.com/indexzero" }, + "Chengzhong Wu": { + "id": "legendecas", + "name": "Chengzhong Wu", + "website": "https://github.com/legendecas" + }, "Claudio Wunder": { "id": "ovflowd", "name": "Claudio Wunder", diff --git a/apps/site/pages/en/blog/events/collab-summit-2025-paris.md b/apps/site/pages/en/blog/events/collab-summit-2025-paris.md new file mode 100644 index 0000000000000..9bd77541e405f --- /dev/null +++ b/apps/site/pages/en/blog/events/collab-summit-2025-paris.md @@ -0,0 +1,96 @@ +--- +date: '2025-05-22T00:00:00.000Z' +category: events +title: 'Trip report: Node.js collaboration summit (2025 Paris)' +layout: blog-post +author: Joyee Cheung, Chengzhong Wu +--- + +About twice per year, Node.js contributors and community members get together in an unconference called [the Node.js collaboration summit](https://nodejs.org/en/about/get-involved/collab-summit). At the summit, we share knowledge about the project and the ecosystem, brainstorm solutions to technical and non-technical issues, make progress in decision-making discussions, and push forward new initiatives. + +This April, the first collaboration summit of 2025 was hosted by [Datadog](https://www.datadoghq.com) in Paris. In this edition, we welcomed almost 40 in-person participants, and around a dozen more joined remotely. + +Here is a recap of what happened at the summit. + +## CI reliability and security + +Before the collaboration summit, a [security incident](https://nodejs.org/en/blog/vulnerability/march-2025-ci-incident) happened in the CI infrastructure. While it only had a limited impact on the development process and did not affect any of the releases, it prompted us to take another look into our CI infrastructure management and the state of CI reliability. Richard Lau provided a walkthrough of the CI automation, and Joyee Cheung did an introduction to the current state of CI flake detection in order to spread the knowledge to more contributors. + +## Lightning talks + +We took advantage of the free time before the discussion-focused sessions to share more knowledge about new work-in-progress in the code base. + +### Experimental WASM Modules + +Chengzhong Wu gave an introduction to the experimental WASM modules (`import wasm`) and the plan to [unflag it](https://github.com/nodejs/node/pull/57038) in the next Node.js releases soon. The timing of unflagging needs some coordination with the browsers, and the general agreement in the room is that it can land as semver-minor when it's ready and does not have to be bound by major release cycles. + +### Cppgc integration + +Joyee Cheung showcased the initial integration with V8's [Oilpan library](https://v8.dev/blog/oilpan-library) and the planned migration work that aims to improve memory safety and garbage collection throughput by managing native embedder objects in the V8 heap. + +## Mentorship + +Jacob Smith facilitated a session about mentorship in the project. We reviewed ongoing informal mentorship efforts and past efforts like [nodejs/mentorship](https://github.com/nodejs/mentorship), how we can improve sharing knowledge about niche parts of the code base, and the expectations about mentees. The next step is to collect feedback from collaborators, and update in the Next-10 initiative. + +## Improving Collaborator Experience + +Jean Burellier facilitated a session using a retrospective board to gather feedback about contributor experience in Node.js core. Many brought up the flaky CI as a significant pain point. One of the main sources of flakes is a [deadlock issue](https://github.com/nodejs/node/issues/54918) - fortunately, after the summit it was alleviated by a [workaround](https://github.com/nodejs/node/pull/58047). + +Another issue that many brought up came from the extreme cases of consensus seeking. In Node.js, decision-making is based on the consensus from the 100+ collaborators. When collaborators cannot reach a consensus, the disagreement can be escalated to the TSC, and a vote can be initiated to break the standstill. But often the vote can be started too late, after the conversations have become exhausting, and those summoned to vote may also have a hard time digesting all of the debates. We brainstormed about ideas to improve the process, for example, using emoji votes to test the temperature, using AI to help summarize the arguments, or setting a deadline for conclusions, though the benefits of these ideas are not conclusive. + +Some mentioned that finding information about niche components in the codebase can be challenging. We could do better at linking and promoting [CONTRIBUTING.md](https://github.com/nodejs/node/blob/main/CONTRIBUTING.md) and various [internal documentation](https://github.com/nodejs/node/tree/main/doc/contributing). Building a tool using AI services that takes the codebase and documentation as context may also help answer contributors' queries. + +We also discussed how to handle stale pull requests and prevent beginner pull requests from getting stalled and closed. Ideas include adding more automation or better pull request templates. + +## Bring AsyncLocalStorage to the Web + +Chengzhong Wu gave the audience an overview of the efforts to bring the Node.js [AsyncLocalStorage](https://nodejs.org/api/async_context.html#class-asynclocalstorage) into JavaScript as a language feature that's also available to the Web - the [AsyncContext](https://github.com/tc39/proposal-async-context) proposal, which is currently at stage 2 in the TC39 process. We were joined by TC39 delegates Nicolò Ribaudo and Andreu Botella to discuss the APIs that should propagate the contexts, and how to fill the gap from use cases that require using an `enterWith()`-like escape-hatch. + +AsyncLocalStorage and its akin APIs have been adopted not only in Node.js and JavaScript runtimes like Deno and Bun, but also in major programming language runtimes like .NET, Python, Go, and more. It is one of the key features that observability libraries like OpenTelemetry need to instrument a user application. + +The main challenge of the AsyncContext proposal is the complexity it would bring to Web platforms. Web platforms define a different security model compared to Node.js, and the proposal has to prove that it does not open up unintended behavior through implicit context propagation. Additionally, the proposal requires efforts on the Web APIs to propagate the contexts across asynchronous boundaries. This needs specification and test facilities like [Web Platform Tests](https://github.com/web-platform-tests/wpt) to align all browsers implementing the feature uniformly. + +We recognize that the `enterWith()` might be essential to certain use cases, and the proposal does not close the door to future extensions. However, it is also recognized that `enterWith()` is not perfect and can often lead to mistakes if not used with caution. There is a follow-up TC39 proposal [Disposable AsyncContext](https://github.com/tc39/proposal-async-context-disposable) to integrate AsyncContext with the `using` declaration syntax, addressing the use cases of `enterWith()`. + +We also discussed that there are [alternatives](https://github.com/tc39/proposal-async-context/blob/master/CONTINUATION.md) to the AsyncLocalStorage data flow. Considering that the current AsyncLocalStorage data flow is a key model to APM vendors and OpenTelemetry, it is important to prioritize the existing model that has also been widely adopted so that the users at large can benefit from the feature being available on the Web. + +## Single Executable Applications + +We were joined remotely by Darshan Sen (champion of the SEA initiative). Luke Karrys went through the current outstanding feature requests and issues of the SEA (Single Executable Application) feature, including: + +- ESM support +- Injecting CLI flags +- Sourceless code cache +- JS APIs +- streamlining toolchain +- Virtual file system + +Most of the issues are addressable - we spent some time discussing streamlining the toolchain in core, which may be possible, but needs investigation into the binary size increase from bundling more of postject in core. The most important blocker to the progress of the SEA initiative remains the lack of volunteers or funding to gain momentum. We discussed setting up a team vs. a working group and how to resume more work. + +## Embedding Undici + +Matteo chaired a session about next steps in improving user experience when they need more from Undici. We reviewed the issues with existing http builtins, whose status change as legacy was discussed, and how to prevent these issues with Undici once users need more powerful customizations. For now, exposing the dispatcher configuration from the bundled undici would help with most use cases, though it still requires stabilizing the dispatcher API, and the documentation needs more work. We discussed participating in WinterTC to standardize agent support, though it's unclear how much effort it would take to match the existing solutions with a standard and where the funding would come from. + +There is still interest in finishing [Milo](https://github.com/milojs/milo), and the plan is to integrate it only via WASM and not through native bindings. + +To support newer protocols, we discussed advertising HTTP/2 via ALPN for HTTPS and auto‑upgrade if the server agrees, which can be opt-in by 24 as semver-minor and become a default in future major releases. Work on QUIC will resume once OpenSSL 3.5 upgrade is in. + +## Node.js integration with Chrome DevTools + +In this session we were joined remotely by Simon Zünd and Danil Somsikov from the Chrome DevTools team. Chengzhong Wu went through the concept of Chrome DevTools Frontend and Chrome DevTools Protocol. Node.js implements Chrome DevTools Protocol via V8, providing essential JavaScript debugging features, and extends the protocol to provide additional functionality like performance tracing, Network inspection, and automatic discovery of worker thread targets. + +The support for network inspection is still in active development. We discussed collaborative efforts to add side-effect-free observability diagnostic channels to both the `http` built-in module and Undici to support inspecting network traffic sent by `http.request` and `fetch` APIs. Additionally, there are plans to support WebSocket traffic inspection. + +Node.js supports debugging worker threads, but people are often confused because Chrome DevTools frontend can not automatically connect to a worker thread spawned in an inspected Node.js process. There is an open work to add experimental target discovery to Node.js Chrome DevTools Protocol implementation. + +## Next 10 Survey + +In this session, Marco Ippolito started an on-site review of the questions that would be asked in [Next-10 survey for 2025](https://github.com/nodejs/next-10/pull/331), including suggestions to existing questions, questions/options to add and to remove. It was a productive session and the results of the discussions had been incorporated into the survey, which would be open until the end of May - submit your response [here](https://linuxfoundation.research.net/r/2025nodenext10). + +## Module customization & instrumentation + +We combined two topics about modules into one session block. + +Joyee Cheung gave a status update on the module loader hooks and what's next for `module.registerHooks()`. The consensus in the room was that we can make the internal module loading paths synchronous for better performance and reduce quirks/bugs, then implement `module.register()` as a helper on top of `module.registerHooks()` for those who want out-of-the-box worker orchestration and compatibility of the older API. For those who wish to run asynchronous code from `module.registerHooks()`, we can provide a utility similar to [everysync](https://www.npmjs.com/package/everysync). For the upcoming [evaluate hook](https://github.com/nodejs/node/pull/57139), we think that it could land with the current naming, so that it can make at least part of the lives of module customizers easier, even though it won't cover all evaluation edges due to JS spec constraints. + +Bryan English introduced a new mechanism to instrument ESM - instead of patching module exports externally, which can run into issues with live binding of exports that are lazily initialized, patch the exports internally by parsing, analysing, and rewriting the AST of the target exports to inject tracing channels. This rust-based instrumentation library has now been open-sourced on [GitHub](https://github.com/DataDog/orchestrion-js). We discussed what Node.js core can provide to make instrumentation like this more streamlined, and how to integrate AsyncContext with it to improve handling of edge cases like constructors with `super()`. While it's still in development and there are still some open issues to solve, hopefully this can be a breeding ground for adding official tracing channel support in libraries for observability without rewritting the AST in a third-party tool. From d261c9f4942aac5f48e115669103b40f68bf9a01 Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Sat, 24 May 2025 23:03:47 +0200 Subject: [PATCH 0487/1385] [automated]: crowdin sync (#7774) * 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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- .../pages/fr/download/package-manager/all.md | 2 +- apps/site/pages/id/about/branding.mdx | 6 +-- .../site/pages/id/about/get-involved/index.md | 34 +++++++++++++ apps/site/pages/id/about/index.mdx | 40 +++++++++++++++ .../site/pages/id/about/previous-releases.mdx | 34 +++++++++---- apps/site/pages/id/download/current.mdx | 4 +- apps/site/pages/id/download/index.mdx | 4 +- .../pages/id/download/package-manager/all.md | 2 +- .../pages/ja/download/package-manager/all.md | 2 +- .../pages/uk/download/package-manager/all.md | 2 +- apps/site/snippets/id/download/n.bash | 8 +++ apps/site/snippets/id/download/nvm.bash | 5 +- apps/site/snippets/id/download/volta.bash | 11 +++++ packages/i18n/locales/id.json | 49 ++++++++++++++++--- 14 files changed, 174 insertions(+), 29 deletions(-) create mode 100644 apps/site/pages/id/about/get-involved/index.md create mode 100644 apps/site/snippets/id/download/n.bash create mode 100644 apps/site/snippets/id/download/volta.bash diff --git a/apps/site/pages/fr/download/package-manager/all.md b/apps/site/pages/fr/download/package-manager/all.md index e3cc8139496c1..ccd48904d03b7 100644 --- a/apps/site/pages/fr/download/package-manager/all.md +++ b/apps/site/pages/fr/download/package-manager/all.md @@ -348,7 +348,7 @@ Il vous permet de **différentes versions pour différents projets**, **différe Il supporte tous les shells populaires (Bash, Zsh, Fish, PowerShell, Clink, Cmder). -Voir le [Démarrage rapide](https://vfox.lhan.me/guides/quick-start.html) pour une utilisation rapide de vfox, et tous les détails d'utilisation. +Voir le [Démarrage rapide](https://vfox.dev/guides/quick-start.html) pour une utilisation rapide de vfox, et tous les détails d'utilisation. ## Void Linux diff --git a/apps/site/pages/id/about/branding.mdx b/apps/site/pages/id/about/branding.mdx index c190541460ed9..494a3e1c404e6 100644 --- a/apps/site/pages/id/about/branding.mdx +++ b/apps/site/pages/id/about/branding.mdx @@ -48,7 +48,7 @@ Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) a </td> <td> - <img alt="Logo Terang Bertumpuk Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> + <img alt="Logo Terang Bertumpuk Node.js®" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" /> </td> </tr> @@ -58,7 +58,7 @@ Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) a </td> <td> - <img alt="Logo Bertumpuk Putih Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded bg-neutral-950 p-2 dark:bg-transparent" /> + <img alt="Logo Bertumpuk Putih Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" /> </td> </tr> @@ -75,7 +75,7 @@ Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) a </td> <td> - <img alt="Ikon JS Putih" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> + <img alt="Ikon JS Putih" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" /> </td> </tr> diff --git a/apps/site/pages/id/about/get-involved/index.md b/apps/site/pages/id/about/get-involved/index.md new file mode 100644 index 0000000000000..993edfcbac829 --- /dev/null +++ b/apps/site/pages/id/about/get-involved/index.md @@ -0,0 +1,34 @@ +--- +title: Mari Berpartisipasi +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, dengan banyak cara untuk berkontribusi, selain hanya menulis kode. + +## Diskusi Komunitas + +- [Repositori GitHub `nodejs/node`](https://github.com/nodejs/node/issues) adalah tempat diskusi fitur utama Node.js dan melaporkan isu. +- [Repositori GitHub `nodejs/help`](https://github.com/nodejs/help/issues) adalah tempat resmi untuk mengajukan pertanyaan tentang Node.js. +- [Discord server resmi](/discord) Node.js adalah tempat berbincang dengan orang pengembang Node.js lain dan mendapatkan kabar resmi dari proyek Node.js. +- [Kalendar proyek](https://nodejs.org/calendar) Node.js dengan semua pertemuan publik tim Node.js. + +## Materi Pembelajaran + +Jika kamu ingin mempelajari lebih lanjut tentang Node.js, ada banyak sumber daya yang tersedia untuk mu. + +- [Materi belajar resmi](https://nodejs.org/en/learn/) Node.js. +- [Dokumentasi referensi resmi API](https://nodejs.org/api/) Node.js. +- [NodeSchool.io](https://nodeschool.io/) mengajarkan konsep Node.js melalui game baris perintah interaktif. +- [Label Node.js di StackOverflow](https://stackoverflow.com/questions/tagged/node.js) berisi banyak utas dengan sumber daya yang bermanfaat. +- [Label Node.js DEV Community](https://dev.to/t/node) berisi artikel dan konten terkait Node.js. + +## Area Diskusi Tidak Resmi + +Terdapat beberapa forum diskusi tidak resmi jika kamu mencari tempat yang lebih informal untuk membahas Node.js. +Perlu diperhatikan bahwa proyek Node.js tidak secara resmi mendukung forum-forum ini. Harap patuhi aturan dan kode etik masing-masing forum. + +- [Node Slackers](https://www.nodeslackers.com/) adalah komunitas Slack yang berfokus pada Node.js. +- [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)_ +- 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/index.mdx b/apps/site/pages/id/about/index.mdx index 7b95f5b35d3e7..c6c65c0a133ed 100644 --- a/apps/site/pages/id/about/index.mdx +++ b/apps/site/pages/id/about/index.mdx @@ -65,3 +65,43 @@ latensi dalam pikiran. Ini membuat Node.js sangat cocok untuk fondasi web perpustakaan atau kerangka kerja. Node.js dirancang tanpa thread bukan berarti Anda tidak dapat memanfaatkan banyak inti di lingkungan Anda. Proses anak dapat dihasilkan dengan menggunakan API [`child_process.fork()`](https://nodejs.org/api/child_process.html) kami, dan dirancang agar mudah untuk berkomunikasi. Dibangun di atas antarmuka yang sama adalah modul [`cluster`](https://nodejs.org/api/cluster.html), yang memungkinkan Anda berbagi soket antar proses untuk mengaktifkan penyeimbangan beban pada inti Anda. + +## Sumber Daya Resmi Node.js + +Untuk memastikan keaslian dan keamanan saat bekerja dengan Node.js, selalu gunakan sumber resmi. Hindari mempercayai email, biner, atau unduhan dari sumber yang tidak resmi. + +### Website Node.js Resmi + +Untuk mengunduh biner Node.js dan mengakses dokumentasi resmi gunakan website resmi kami: + +- [nodejs.org](https://nodejs.org) +- [nodejs.dev](https://nodejs.dev) _(Dialihkan ke https://nodejs.org)_ +- [iojs.org](https://iojs.org) _(Dialihkan ke https://nodejs.org)_ + +### Pakages (Paket) npm resmi + +Tim Node.js memelihara cakupan paket npm resmi berikut: + +- [`@node-core`](https://npmjs.com/~node-core) +- [`@pkgjs`](https://npmjs.com/~pkgjs) + +Selain itu, tim Node.js mengelola paket yang diterbitkan oleh akun npm [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation), +meskipun paket terkait Node.js lainnya (seperti [`undici`](https://www.npmjs.com/package/undici)) juga dapat dikelola oleh kontributor yang terkait erat dengan proyek. + +Menggunakan paket dari tim Node.js menjamin bahwa Anda bekerja dengan komponen Node.js yang didukung secara resmi. + +### Org GitHub Resmi + +Node.js dan proyek terkait dikelola di bawah organisasi GitHub resmi berikut: + +- [nodejs](https://github.com/nodejs) +- [pkgjs](https://github.com/pkgjs) + +### Saluran Komunikasi Resmi + +Node.js dan OpenJS Foundation berkomunikasi melalui berbagai saluran resmi dan yang didukung komunitas. Anda dapat menemukan detail tentang cara terlibat di halaman [Berpartisipasi](https://nodejs.org/id/about/get-involved). + +### Melaporkan Masalah Situs Web dan downtimenya + +Jika kamu mengalami masalah dengan situs web Node.js, laporkan di [repositori situs web Node.js](https://github.com/nodejs/nodejs.org/issues). +Untuk pembaruan terkini tentang gangguan, kunjungi [Cek Status Web Node.js](https://status.nodejs.org)._"Note: Dukungan hanya tersedia dalam bahasa Inggris Mohon Sesuaikan dengan Format yang diberikan"_ diff --git a/apps/site/pages/id/about/previous-releases.mdx b/apps/site/pages/id/about/previous-releases.mdx index 4aee5571c3262..834aab1490e88 100644 --- a/apps/site/pages/id/about/previous-releases.mdx +++ b/apps/site/pages/id/about/previous-releases.mdx @@ -21,16 +21,30 @@ Dukungan komersial untuk versi yang melewati fase Pemeliharaan tersedia melalui <DownloadReleasesTable /> -## Resmi vs Komunitas +## Metode Instalasi Resmi vs. Komunitas -Situs web Node.js menawarkan sejumlah metode instalasi yang memungkinkan Node.js diinstal dengan cara non-interaktif, misalnya, melalui CLI, pengelola paket OS (seperti `apt`), atau pengelola versi Node.js (seperti `nvm`). +Situs web Node.js menyediakan beberapa metode instalasi non-interaktif, termasuk antarmuka baris perintah (CLI), manajer paket sistem operasi (OS) (misalnya, `brew`), dan manajer versi Node.js (misalnya, `nvm`). -Proyek Node.js, dalam upaya untuk mempopulerkan dan mengiklankan upaya komunitas, telah memperkenalkan halaman Unduhan baru yang mencantumkan metode instalasi Resmi dan Komunitas, yang menyediakan lebih banyak fleksibilitas dan opsi bagi pengguna. -Dengan perubahan ini, kami memperkenalkan konsep metode instalasi "Resmi" dan "Komunitas". Agar dianggap "Resmi", metode instalasi harus memenuhi persyaratan berikut: +Untuk menyoroti dan mempromosikan kontribusi komunitas, proyek Node.js memperkenalkan halaman Unduhan yang telah direvisi yang mengkategorikan metode instalasi sebagai "Resmi" atau "Komunitas." Hal ini memberikan fleksibilitas dan pilihan yang lebih besar kepada pengguna. Untuk memastikan kejelasan, kami telah menetapkan kriteria untuk setiap kategori. -| Persyaratan | -| ------------------------------------------------------------------------------------------------------------------------------ | -| Rilis Node.js baru harus tersedia secara bersamaan setelah rilis resmi | -| Pengelola proyek memiliki hubungan dekat dengan Node.js, termasuk komunikasi langsung | -| Metode instalasi mengunduh biner resmi yang dibundel oleh proyek Node.js | -| Metode instalasi **tidak** membangun dari sumber ketika biner tersedia, atau mengubah biner resmi yang disediakan oleh Node.js | +### Metode Instalasi Resmi + +Metode instalasi yang ditetapkan sebagai “Resmi” harus memenuhi persyaratan berikut: + +| Persyaratan (Metode Instalasi Resmi) | +| :----------------------------------------------------------------------------------------------------------------------------------- | +| Rilis Node.js baru harus tersedia bersamaan dengan rilis resmi. | +| Pengelola proyek harus memiliki hubungan dekat dengan proyek Node.js, termasuk saluran komunikasi langsung. | +| Metode instalasi harus unduhan biner resmi yang dibundel oleh proyek Node.js. | +| Metode instalasi tidak boleh dibuild dari sumber, jika biner yang telah dibuild tersedia, dan tidak boleh pula mengubah biner resmi. | + +### Metode Instalasi Komunitas + +Metode instalasi komunitas yang disertakan pada halaman unduhan swalayan (/download) juga harus mematuhi serangkaian kriteria minimum: + +- **Dukungan Versi:** Harus mendukung semua versi Node.js yang saat ini didukung, bukan versi End-of-Life (EOL). +- **Kompatibilitas OS:** Harus berfungsi pada setidaknya satu Sistem Operasi (OS) yang didukung secara resmi. +- **Dukungan OS yang Luas:** Tidak dapat dibatasi pada sebagian distribusi atau versi OS. + - Misalnya, metode instalasi yang mengklaim kompatibilitas dengan “Windows” harus berfungsi pada “Windows 10”, “Windows 11”, dan semua edisinya (termasuk versi server). + - Demikian pula, metode instalasi yang mengklaim kompatibilitas dengan "Linux" harus dapat diinstal pada semua distribusi Linux utama, bukan hanya sebagian kecil saja. Metode ini tidak dapat bergantung pada pengelola paket khusus distribusi seperti `apt` atau `dnf`. +- **Gratis dan Sumber Terbuka:** Harus gratis digunakan dan bersumber terbuka, tidak boleh dijual sebagai produk komersial, dan tidak boleh menjadi layanan berbayar. diff --git a/apps/site/pages/id/download/current.mdx b/apps/site/pages/id/download/current.mdx index fb8fa3cf72115..ef3c3a90b4e36 100644 --- a/apps/site/pages/id/download/current.mdx +++ b/apps/site/pages/id/download/current.mdx @@ -17,9 +17,9 @@ title: Unduh Node.js® </section> <section> - Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. + Baca <Release.ChangelogLink>Log Perubahan</Release.ChangelogLink> atau <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. +Pelajari selengkapnya tentang [rilis Node.js](/tentang/rilis-sebelumnya), termasuk jadwal rilis dan status LTS. Pelajari cara <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">memverifikasi</LinkWithArrow> yang ditandatangani SHASUMS. diff --git a/apps/site/pages/id/download/index.mdx b/apps/site/pages/id/download/index.mdx index fb8fa3cf72115..ef3c3a90b4e36 100644 --- a/apps/site/pages/id/download/index.mdx +++ b/apps/site/pages/id/download/index.mdx @@ -17,9 +17,9 @@ title: Unduh Node.js® </section> <section> - Baca <Release.ChangelogLink>changelog</Release.ChangelogLink> untuk versi ini. + Baca <Release.ChangelogLink>Log Perubahan</Release.ChangelogLink> atau <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. -Baca <Release.BlogPostLink>postingan blog</Release.BlogPostLink> untuk versi ini. +Pelajari selengkapnya tentang [rilis Node.js](/tentang/rilis-sebelumnya), termasuk jadwal rilis dan status LTS. Pelajari cara <LinkWithArrow href="https://github.com/nodejs/node#verifying-binaries">memverifikasi</LinkWithArrow> yang ditandatangani SHASUMS. diff --git a/apps/site/pages/id/download/package-manager/all.md b/apps/site/pages/id/download/package-manager/all.md index 892c7d0f1e9c9..8c1d2aac77db7 100644 --- a/apps/site/pages/id/download/package-manager/all.md +++ b/apps/site/pages/id/download/package-manager/all.md @@ -345,7 +345,7 @@ Ini memungkinkan Anda untuk **versi yang berbeda untuk proyek yang berbeda**, ** Dukung semua shell populer (Bash, Zsh, Fish, PowerShell, Clink, Cmder). -Lihat [Panduan Memulai Cepat](https://vfox.lhan.me/guides/quick-start.html) untuk menggunakan vfox dengan cepat, dan semua detail penggunaannya. +Lihat [Panduan Memulai Cepat](https://vfox.dev/guides/quick-start.html) untuk menggunakan vfox dengan cepat, dan semua detail penggunaannya. ## Void Linux diff --git a/apps/site/pages/ja/download/package-manager/all.md b/apps/site/pages/ja/download/package-manager/all.md index 168ae91fd4f2e..d85a6c32f8a3d 100644 --- a/apps/site/pages/ja/download/package-manager/all.md +++ b/apps/site/pages/ja/download/package-manager/all.md @@ -337,7 +337,7 @@ sudo eopkg install nodejs 主要なシェル環境(Bash、Zsh、Fish、PowerShell、Clink、Cmder)をサポートしています。 -vfoxを迅速に使用するための[クイックスタート](https://vfox.lhan.me/guides/quick-start.html)を参照し、すべての使用詳細を確認してください。 +[クイックスタート](https://vfox.dev/guides/quick-start.html)や詳しい使い方を確認してください。 ## Void Linux diff --git a/apps/site/pages/uk/download/package-manager/all.md b/apps/site/pages/uk/download/package-manager/all.md index 7f04165a5f93a..1a5c908a7b6fd 100644 --- a/apps/site/pages/uk/download/package-manager/all.md +++ b/apps/site/pages/uk/download/package-manager/all.md @@ -341,7 +341,7 @@ sudo eopkg install nodejs Підтримує всі популярні оболонки (Bash, Zsh, Fish, PowerShell, Clink, Cmder). -Перегляньте [швидкий старт](https://vfox.lhan.me/guides/quick-start.html), щоб почати використовувати vfox та дізнатися всі деталі його використання. +Перегляньте [швидкий старт](https://vfox.dev/guides/quick-start.html), щоб почати використовувати vfox та дізнатися всі деталі його використання. ## Void Linux diff --git a/apps/site/snippets/id/download/n.bash b/apps/site/snippets/id/download/n.bash new file mode 100644 index 0000000000000..fda70d6d7cd1f --- /dev/null +++ b/apps/site/snippets/id/download/n.bash @@ -0,0 +1,8 @@ +# Unduh dan pasang n dan Node.js: +curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s ${props.release.major} + +# Node.js sudah terpasang ketika n-install, tapi kamu juga bisa memasang secara manual: +# n install ${props.release.major} + +# Verifikasi versi Node.js: +node -v # Harus mencetak "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/id/download/nvm.bash b/apps/site/snippets/id/download/nvm.bash index 65c8c6e3f7f15..dfeeae88e0866 100644 --- a/apps/site/snippets/id/download/nvm.bash +++ b/apps/site/snippets/id/download/nvm.bash @@ -1,5 +1,8 @@ # Unduh dan pasang nvm: -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash + +# sebagai pengganti memulai ulang shell +\. "$HOME/.nvm/nvm.sh" # Unduh dan pasang Node.js: nvm install ${props.release.major} diff --git a/apps/site/snippets/id/download/volta.bash b/apps/site/snippets/id/download/volta.bash new file mode 100644 index 0000000000000..aa08a96b6b54b --- /dev/null +++ b/apps/site/snippets/id/download/volta.bash @@ -0,0 +1,11 @@ +# Di sebagian besar sistem Unix termasuk macOS, kamu dapat memasang dengan satu perintah: +${props.os === 'WIN' ? + 'winget install Volta.Volta' : + 'curl https://get.volta.sh | bash' +} + +# Unduh dan pasang Node.js: +volta install node@${props.release.major} + +# Verifikasi versi Node.js: +node -v # Harusnya mencetak "${props.release.versionWithPrefix}". diff --git a/packages/i18n/locales/id.json b/packages/i18n/locales/id.json index b9874247b1924..5482a004f42ba 100644 --- a/packages/i18n/locales/id.json +++ b/packages/i18n/locales/id.json @@ -11,6 +11,9 @@ } }, "navBar": { + "controls": { + "toggle": "Beralih menu navigasi" + }, "links": { "about": "Tentang", "download": "Unduh", @@ -39,6 +42,8 @@ "nodejsWithWebassembly": "Node.js dengan WebAssembly", "debugging": "Men-debug Node.js", "profiling": "Profilisasi Aplikasi Node.js", + "fetch": "Pengambilan data dengan Node.js", + "websocket": "Klien WebSocket dengan Node.js", "securityBestPractices": "Praktik Keamanan Terbaik" } }, @@ -48,13 +53,15 @@ "introduction": "Pengantar TypeScript", "transpile": "Menjalankan kode TypeScript menggunakan transpilasi", "run": "Menjalankan TypeScript dengan runner", - "runNatively": "Menjalankan TypeScript Secara Native" + "runNatively": "Menjalankan TypeScript Secara Native", + "publishingTSPackage": "Menerbitkan package TypeScript" } }, "asynchronousWork": { "links": { "asynchronousWork": "Pekerjaan Asinkron", "asynchronousFlowControl": "Pengendalian alur asinkron", + "discoverPromisesInNodejs": "Memahami Promise di Node.js", "overviewOfBlockingVsNonBlocking": "Ringkasan Pemblokiran vs Non-Pemblokiran", "javascriptAsynchronousProgrammingAndCallbacks": "Pemrograman dan Panggilan Balik Asinkron JavaScript", "discoverJavascriptTimers": "Jelajahi Pengatur Waktu JavaScript", @@ -102,6 +109,7 @@ "links": { "diagnostics": "Diagnostik", "userJourney": "Jurnal Pengguna", + "understandingAndTuningMemory": "Pemahaman dan Penyetelan Memori", "memory": "Memori", "liveDebugging": "Pemecahan Masalah Langsung", "poorPerformance": "Performa Buruk", @@ -113,7 +121,8 @@ "testRunner": "Test Runner", "introduction": "Jelajahi Node.js test runner", "usingTestRunner": "Menggunakan Node.js's test runner", - "mocking": "Mengejek dalam pengujian" + "mocking": "Mengejek dalam pengujian", + "collectingCodeCoverage": "Pengumpulan cakupan kode di Node.js" } } }, @@ -140,15 +149,38 @@ "downloadReleasesTable": { "version": "Node.js", "nApiVersion": "N-API", - "npmVersion": "npm", "codename": "Kode nama", "releaseDate": "Dirilis pada", + "firstReleased": "Perilisan Pertama", + "lastUpdated": "Pembaruan Terakhir", + "status": "Status", + "details": "Rincian" + }, + "releaseModal": { + "title": "Node.js {version} ({codename})", + "titleWithoutCodename": "Node.js {version}", + "overview": "Ringkasan", + "minorVersions": "Versi minor", + "releaseAnnouncement": "Pengumuman Perilisan", + "unsupportedVersionWarning": "Versi ini sudah tidak dalam tahap pemeliharaan. Harap gunakan versi yang saat ini didukung." + }, + "minorReleasesTable": { + "version": "Versi", + "links": "Tautan", "actions": { + "release": "Rilis", "changelog": "Log Perubahan", - "releases": "Rilis", - "docs": "Dokumen" + "docs": "Dokumentasi" } }, + "releaseOverview": { + "firstReleased": "Perilisan Pertama", + "lastUpdated": "Pembaruan Terakhir", + "minorVersions": "Versi minor", + "nApiVersion": "Versi N-API", + "npmVersion": "versi npm", + "v8Version": "V8 versi" + }, "pagination": { "next": "Berikutnya", "previous": "Sebelumnya" @@ -280,9 +312,12 @@ "brew": "Homebrew adalah manajer paket untuk macOS dan Linux.", "choco": "Chocolatey adalah manajer paket untuk Windows.", "devbox": "Devbox menciptakan lingkungan pengembangan yang terisolasi dan dapat direproduksi.", - "docker": "Docker adalah platform kontainerisasi." + "docker": "Docker adalah platform kontainerisasi.", + "n": "\"n\" adalah manajer versi Node.js lintas-platform.", + "volta": "\"Volta\" adalah manajer versi Node.js lintas-platform." } } - } + }, + "logo": "Logo Node.js" } } From 3783f9fdd86b59e58b6da93672ae11b6045d9fd1 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Mon, 26 May 2025 12:32:15 -0400 Subject: [PATCH 0488/1385] feat(meta): publish @node-core/* packages (#7776) * feat(meta): publish @node-core/* packages * add slack notif, add doc * _always_ verify commit * fixup --- .github/workflows/publish-packages.yml | 149 +++++++++++++++++++++++++ COLLABORATOR_GUIDE.md | 13 +++ 2 files changed, 162 insertions(+) create mode 100644 .github/workflows/publish-packages.yml diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml new file mode 100644 index 0000000000000..d16686d63d995 --- /dev/null +++ b/.github/workflows/publish-packages.yml @@ -0,0 +1,149 @@ +name: Publish Packages + +# This workflow publishes packages to NPM when changes are merged to main branch or when manually triggered. +# It runs automatically after successful tests or can be run manually for specific packages. + +on: + workflow_run: + # Only run after linting and tests have passed on main branch + workflows: ['Linting and Tests'] + types: [completed] + # For security reasons, this should never be set to anything but `main` + branches: [main] + workflow_dispatch: + inputs: + package: + description: 'Specific package to publish (leave empty for all packages)' + required: false + type: string + +permissions: + contents: read + +env: + # Use the SHA from the workflow run that triggered this or the current SHA for manual runs + COMMIT_SHA: ${{ github.event.workflow_run.head_sha || github.sha }} + +jobs: + prepare-packages: + runs-on: ubuntu-latest + # Only run if manually triggered or if the triggering workflow succeeded from a push event + if: github.event_name == 'workflow_dispatch' || ( + github.event.workflow_run.conclusion == 'success' && + github.event.workflow_run.event == 'push' && + github.repository == 'nodejs/nodejs.org') + outputs: + # Output the matrix of packages to publish for use in the publish job + matrix: ${{ steps.generate-matrix.outputs.matrix }} + steps: + - name: Harden Runner + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 + with: + egress-policy: audit + + - name: Verify commit authenticity + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Get commit data from GitHub API to verify its authenticity + COMMIT_DATA=$(gh api repos/${{ github.repository }}/commits/$COMMIT_SHA) + # Check if commit signature is verified (GPG signed) + VERIFIED=$(echo "$COMMIT_DATA" | jq -r '.commit.verification.verified') + # Check if commit was made through GitHub's web interface (merge queue) + COMMITTER=$(echo "$COMMIT_DATA" | jq -r '.commit.committer.email') + + # Security checks to ensure we only publish from verified and trusted sources + if [[ "$VERIFIED" != "true" ]]; then + echo "❌ Unverified commit! Aborting." + exit 1 + fi + + if [[ "$COMMITTER" != "noreply@github.com" ]]; then + echo "❌ Not merged with the merge queue! Aborting." + exit 1 + fi + + echo "✅ Commit is verified and trusted." + + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 2 # Need at least 2 commits to detect changes between commits + + - name: Generate package matrix + id: generate-matrix + env: + PACKAGE: ${{ github.event.inputs.package }} + EVENT_NAME: ${{ github.event_name }} + run: | + if [ -n "$PACKAGE" ]; then + # If a specific package is requested via workflow_dispatch, just publish that one + echo "matrix={\"package\":[\"$PACKAGE\"]}" >> $GITHUB_OUTPUT + else + # Otherwise, identify all packages with changes since the last commit + CHANGED_PACKAGES=() + for pkg in $(ls -d packages/*); do + PKG_NAME=$(basename "$pkg") + # For manual runs, include all packages. For automatic runs, only include packages with changes + if [ "$EVENT_NAME" == "workflow_dispatch" ] || ! git diff --quiet $COMMIT_SHA~1 $COMMIT_SHA -- "$pkg/"; then + CHANGED_PACKAGES+=("$PKG_NAME") + fi + done + + # Format the output for GitHub Actions matrix using jq + PACKAGES_JSON=$(jq -n '$ARGS.positional' --args "${CHANGED_PACKAGES[@]}" -c) + echo "matrix={\"package\":$PACKAGES_JSON}" >> $GITHUB_OUTPUT + fi + + publish: + needs: prepare-packages + runs-on: ubuntu-latest + # Use the dynamic matrix from prepare-packages job to create parallel jobs for each package + strategy: + matrix: ${{ fromJson(needs.prepare-packages.outputs.matrix) }} + fail-fast: false # Continue publishing other packages even if one fails + steps: + - name: Harden Runner + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 + with: + egress-policy: audit + + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + cache: true + + - name: Setup Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version-file: '.nvmrc' + registry-url: 'https://registry.npmjs.org' + cache: pnpm + + - name: Publish + working-directory: packages/${{ matrix.package }} + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + # Create a unique version using the commit SHA as a prerelease identifier + # This ensures we can publish multiple times from the same codebase with unique versions + npm version --no-git-tag-version 0.0.0-$COMMIT_SHA + # Publish the package to the npm registry with public access flag + pnpm publish --access public + + - name: Notify on Manual Release + if: ${{ github.event_name == 'workflow_dispatch' }} + uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # 2.3.3 + env: + SLACK_COLOR: '#43853D' + SLACK_ICON: https://github.com/nodejs.png?size=48 + SLACK_TITLE: ':rocket: Package Published: ${{ matrix.package }}' + SLACK_MESSAGE: | + :package: *Package*: `${{ matrix.package }}` (<https://www.npmjs.com/package/${{ steps.package-info.outputs.name }}|View on npm>) + :bust_in_silhouette: *Published by*: ${{ github.triggering_actor }} + :octocat: *Commit*: <https://github.com/${{ github.repository }}/commit/${{ env.COMMIT_SHA }}|${{ env.COMMIT_SHA }}> + SLACK_USERNAME: nodejs-bot + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 857efecd5c037..3a00478db6656 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -20,6 +20,7 @@ - [General Guidelines for Unit Tests](#general-guidelines-for-unit-tests) - [General Guidelines for Playwright E2E Tests](#general-guidelines-for-playwright-e2e-tests) - [General Guidelines for Storybooks](#general-guidelines-for-storybooks) +- [Publishing Packages](#publishing-packages) - [Remarks on Technologies used](#remarks-on-technologies-used) - [Seeking additional clarification](#seeking-additional-clarification) @@ -487,6 +488,18 @@ export default { component: NameOfComponent } as Meta; - We recommend reading previous Storybooks from the codebase for inspiration and code guidelines. - If you need to decorate/wrap your Component/Story with a Container/Provider, please use [Storybook Decorators](https://storybook.js.org/docs/react/writing-stories/decorators) +## Publishing Packages + +The Node.js Website uses a multi-package workspace architecture where individual packages are published to the npm registry. This section outlines the process for publishing packages and the best practices to follow. + +The package publishing process is automated through GitHub Actions and can be triggered in two ways: + +1. **Automatically after successful tests**: + When changes are merged to the main branch, the "Publish Packages" workflow runs after the "Linting and Tests" workflow completes successfully. Commits must come through GitHub's merge queue (committer must be verified from noreply@github.com) + +2. **Manually via workflow dispatch**: + You can manually trigger publishing for specific packages through the GitHub Actions interface. When manually triggering publishing, ensure the commit hasn't already been published and is safe to do so. In the event of a manual trigger, a Slack notification will be sent to `#nodejs-website`. + ## Remarks on Technologies Used The Node.js Website is a somewhat complex application and at times non-trivial solutions have been implemented to solve certain technical challenges. From 1815fa769361b836fa52cfab9c5bd4991f571c95 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Mon, 26 May 2025 13:40:58 -0400 Subject: [PATCH 0489/1385] chore(publish): fix publishing (#7780) * chore(publish): test publishing Signed-off-by: Aviv Keller <me@aviv.sh> * testing * testing * testing * fixup * fixup! * fixup! --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/publish-packages.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml index d16686d63d995..1ec60e60c6af9 100644 --- a/.github/workflows/publish-packages.yml +++ b/.github/workflows/publish-packages.yml @@ -126,13 +126,13 @@ jobs: - name: Publish working-directory: packages/${{ matrix.package }} env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | # Create a unique version using the commit SHA as a prerelease identifier # This ensures we can publish multiple times from the same codebase with unique versions - npm version --no-git-tag-version 0.0.0-$COMMIT_SHA + npm version --no-git-tag-version 1.0.1-$COMMIT_SHA # Publish the package to the npm registry with public access flag - pnpm publish --access public + pnpm publish --access public --no-git-checks - name: Notify on Manual Release if: ${{ github.event_name == 'workflow_dispatch' }} @@ -142,7 +142,7 @@ jobs: SLACK_ICON: https://github.com/nodejs.png?size=48 SLACK_TITLE: ':rocket: Package Published: ${{ matrix.package }}' SLACK_MESSAGE: | - :package: *Package*: `${{ matrix.package }}` (<https://www.npmjs.com/package/${{ steps.package-info.outputs.name }}|View on npm>) + :package: *Package*: `${{ matrix.package }}` (<https://www.npmjs.com/package/@node-core/${{ matrix.package }}|View on npm>) :bust_in_silhouette: *Published by*: ${{ github.triggering_actor }} :octocat: *Commit*: <https://github.com/${{ github.repository }}/commit/${{ env.COMMIT_SHA }}|${{ env.COMMIT_SHA }}> SLACK_USERNAME: nodejs-bot From d122e5842f71d4dcb102c57f4e9a0d141dec265c Mon Sep 17 00:00:00 2001 From: Colin Ihrig <cjihrig@gmail.com> Date: Mon, 26 May 2025 13:48:11 -0400 Subject: [PATCH 0490/1385] fix(learn): correct mocking example (#7779) Update mocking.md Signed-off-by: Colin Ihrig <cjihrig@gmail.com> --- apps/site/pages/en/learn/test-runner/mocking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/test-runner/mocking.md b/apps/site/pages/en/learn/test-runner/mocking.md index 62c08b4dcd8d6..fc7fc1c8b645d 100644 --- a/apps/site/pages/en/learn/test-runner/mocking.md +++ b/apps/site/pages/en/learn/test-runner/mocking.md @@ -172,7 +172,7 @@ describe('foo', { concurrency: true }, () => { }); it('should do the thing', () => { - barMock.mockImplementationOnce(function bar_mock() { + barMock.mock.mockImplementationOnce(function bar_mock() { /* … */ }); From fdcc6689ac0bedbd0d29cb09ca10c6a5260fef37 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Wed, 28 May 2025 07:11:17 -0400 Subject: [PATCH 0491/1385] chore(ESP): use campaign link for HeroDevs (#7778) Signed-off-by: Aviv Keller <me@aviv.sh> --- apps/site/pages/en/about/previous-releases.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/about/previous-releases.mdx b/apps/site/pages/en/about/previous-releases.mdx index c18e7f3d7087c..8ef856f11261a 100644 --- a/apps/site/pages/en/about/previous-releases.mdx +++ b/apps/site/pages/en/about/previous-releases.mdx @@ -18,7 +18,7 @@ Full details regarding the Node.js release schedule are available [on GitHub](ht ### Commercial Support -Commercial support for versions past the Maintenance phase is available through our OpenJS Ecosystem Sustainability Program partner [HeroDevs](https://herodevs.com/). +Commercial support for versions past the Maintenance phase is available through our OpenJS Ecosystem Sustainability Program partner [HeroDevs](https://www.herodevs.com/support/node-nes?utm_source=NodeJS+&utm_medium=Link&utm_campaign=Version_support_page). ## Looking for the latest release of a version branch? From f349d7e1aeb03ea35fd3eca134fd48e02e7bf717 Mon Sep 17 00:00:00 2001 From: Utkarsh <63429238+utkarsh125@users.noreply.github.com> Date: Wed, 28 May 2025 16:57:14 +0530 Subject: [PATCH 0492/1385] fix: Allow ToC to scroll independently of page content (#7754) * ToC Fix * Fix: replaced raw css with tailwind * Restored packages/ui-components/Containers/MetaBar/index.tsx * Replaced display:none with @apply hidden * Fix: not all elements were being rendered * Removed the redundant scrollbar styles * fix: metabar no longer has a short length * fix: metabar length fix * fix: chromatic diff * fix: removed the added padding * fix: removed the additional p-4 * added global variable for height --- .../Containers/MetaBar/index.module.css | 15 +++++++++++---- packages/ui-components/styles/index.css | 4 ++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/ui-components/Containers/MetaBar/index.module.css b/packages/ui-components/Containers/MetaBar/index.module.css index 6b404cd0185ec..1a75f08a1ef44 100644 --- a/packages/ui-components/Containers/MetaBar/index.module.css +++ b/packages/ui-components/Containers/MetaBar/index.module.css @@ -6,20 +6,26 @@ flex-col items-start gap-8 - overflow-y-auto border-neutral-200 px-4 py-6 [overflow-wrap:anywhere] lg:sticky lg:top-0 - lg:h-max - lg:min-h-screen + lg:max-h-screen lg:px-6 dark:border-neutral-900; dl { - @apply w-full; + @apply flex + w-full + flex-col + gap-1.5 + pb-12 + [scrollbar-width:none] + lg:max-h-[calc(100vh-var(--header-height))] + lg:overflow-y-auto + [&::-webkit-scrollbar]:hidden; } dt { @@ -55,6 +61,7 @@ ol { @apply flex + w-full list-none flex-col gap-1.5 diff --git a/packages/ui-components/styles/index.css b/packages/ui-components/styles/index.css index 4999c381e2b43..a5d636800e1ef 100644 --- a/packages/ui-components/styles/index.css +++ b/packages/ui-components/styles/index.css @@ -22,6 +22,10 @@ color utility to any element that depends on these defaults. */ @layer base { + :root { + --header-height: calc(var(--spacing, 0.25rem) * 16); + } + *, ::after, ::before, From 878bfafaae59c410e40b20c270fa7d94a602b739 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Wed, 28 May 2025 08:14:18 -0400 Subject: [PATCH 0493/1385] chore(i18n): improve type safety (#7781) * chore(i18n): improve type safety * fixup! Signed-off-by: Aviv Keller <me@aviv.sh> * improve casting --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- apps/site/global.d.ts | 32 +++---------------- .../hooks/react-generic/useSiteNavigation.ts | 1 + apps/site/tests/e2e/general-behavior.spec.ts | 6 ++-- apps/site/types/blog.ts | 2 ++ apps/site/types/i18n.ts | 23 +++++++++++++ apps/site/types/navigation.ts | 2 ++ apps/site/util/downloadUtils/index.tsx | 14 ++++---- packages/i18n/lib/index.mjs | 2 +- packages/i18n/types.d.ts | 4 +++ 9 files changed, 47 insertions(+), 39 deletions(-) diff --git a/apps/site/global.d.ts b/apps/site/global.d.ts index 8959340122443..aceb9aee665e9 100644 --- a/apps/site/global.d.ts +++ b/apps/site/global.d.ts @@ -1,29 +1,7 @@ -import type baseMessages from '@node-core/website-i18n/locales/en.json'; -import type { MessageKeys, NestedValueOf, NestedKeyOf } from 'next-intl'; +import { Locale } from '@node-core/website-i18n/types'; -declare global { - // Defines a type for all the IntlMessage shape (which is used internall by next-intl) - // @see https://next-intl.dev/docs/workflows/typescript - type IntlMessages = typeof baseMessages; - - // Defines a generic type for all available i18n translation keys, by default not using any namespace - type IntlMessageKeys< - NestedKey extends NamespaceKeys< - IntlMessages, - NestedKeyOf<IntlMessages> - > = never, - > = MessageKeys< - NestedValueOf< - { '!': IntlMessages }, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - >, - NestedKeyOf< - NestedValueOf< - { '!': IntlMessages }, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - > - > - >; +declare module 'next-intl' { + interface AppConfig { + Messages: Locale; + } } - -export {}; diff --git a/apps/site/hooks/react-generic/useSiteNavigation.ts b/apps/site/hooks/react-generic/useSiteNavigation.ts index 768092b72f31b..edf49a5fc765e 100644 --- a/apps/site/hooks/react-generic/useSiteNavigation.ts +++ b/apps/site/hooks/react-generic/useSiteNavigation.ts @@ -5,6 +5,7 @@ import type { HTMLAttributeAnchorTarget } from 'react'; import { siteNavigation } from '#site/next.json.mjs'; import type { FormattedMessage, + IntlMessageKeys, NavigationEntry, NavigationKeys, } from '#site/types'; diff --git a/apps/site/tests/e2e/general-behavior.spec.ts b/apps/site/tests/e2e/general-behavior.spec.ts index b3607453b58d2..78d455b81e411 100644 --- a/apps/site/tests/e2e/general-behavior.spec.ts +++ b/apps/site/tests/e2e/general-behavior.spec.ts @@ -1,4 +1,5 @@ import { importLocale } from '@node-core/website-i18n'; +import type { Locale } from '@node-core/website-i18n/types'; import { test, expect, type Page } from '@playwright/test'; const englishLocale = await importLocale('en'); @@ -34,10 +35,7 @@ const openLanguageMenu = async (page: Page) => { return page.locator(selector); }; -const verifyTranslation = async ( - page: Page, - locale: string | Record<string, unknown> -) => { +const verifyTranslation = async (page: Page, locale: Locale | string) => { // Load locale data if string code provided (e.g., 'es', 'fr') const localeData = typeof locale === 'string' ? await importLocale(locale) : locale; diff --git a/apps/site/types/blog.ts b/apps/site/types/blog.ts index 33e917c19a761..79db83ad1ed97 100644 --- a/apps/site/types/blog.ts +++ b/apps/site/types/blog.ts @@ -1,3 +1,5 @@ +import type { IntlMessageKeys } from './i18n'; + export type BlogPreviewType = 'announcements' | 'release' | 'vulnerability'; export type BlogCategory = IntlMessageKeys<'layouts.blog.categories'>; diff --git a/apps/site/types/i18n.ts b/apps/site/types/i18n.ts index c3666688c6ec9..71ac2b3abd2d0 100644 --- a/apps/site/types/i18n.ts +++ b/apps/site/types/i18n.ts @@ -1,6 +1,29 @@ +import type { Locale } from '@node-core/website-i18n/types'; +import type { + NamespaceKeys, + MessageKeys, + NestedValueOf, + NestedKeyOf, +} from 'next-intl'; import type { JSXElementConstructor, ReactElement, ReactNode } from 'react'; export type FormattedMessage = | string | ReactElement<HTMLElement, string | JSXElementConstructor<HTMLElement>> | ReadonlyArray<ReactNode>; + +// Defines a generic type for all available i18n translation keys, by default not using any namespace +export type IntlMessageKeys< + NestedKey extends NamespaceKeys<Locale, NestedKeyOf<Locale>> = never, +> = MessageKeys< + NestedValueOf< + { '!': Locale }, + [NestedKey] extends [never] ? '!' : `!.${NestedKey}` + >, + NestedKeyOf< + NestedValueOf< + { '!': Locale }, + [NestedKey] extends [never] ? '!' : `!.${NestedKey}` + > + > +>; diff --git a/apps/site/types/navigation.ts b/apps/site/types/navigation.ts index b45d233bbb890..44618de780706 100644 --- a/apps/site/types/navigation.ts +++ b/apps/site/types/navigation.ts @@ -1,5 +1,7 @@ import type { HTMLAttributeAnchorTarget } from 'react'; +import type { IntlMessageKeys } from './i18n'; + export interface FooterConfig { text: IntlMessageKeys; link: string; diff --git a/apps/site/util/downloadUtils/index.tsx b/apps/site/util/downloadUtils/index.tsx index 2ecfeb77bdea0..b7fa11d3dca8b 100644 --- a/apps/site/util/downloadUtils/index.tsx +++ b/apps/site/util/downloadUtils/index.tsx @@ -5,7 +5,7 @@ import * as PackageManagerIcons from '@node-core/ui-components/Icons/PackageMana import type { ElementType } from 'react'; import satisfies from 'semver/functions/satisfies'; -import type { NodeReleaseStatus } from '#site/types'; +import type { IntlMessageKeys, NodeReleaseStatus } from '#site/types'; import type * as Types from '#site/types/release'; import type { UserOS, UserPlatform } from '#site/types/userOS'; @@ -33,10 +33,10 @@ type DownloadCompatibility = { }; type DownloadDropdownItem<T extends string> = { - label: string; + label: IntlMessageKeys; recommended?: boolean; url?: string; - info?: string; + info?: IntlMessageKeys; compatibility: DownloadCompatibility; } & Omit<SelectValue<T>, 'label'>; @@ -102,7 +102,7 @@ type ActualSystems = Omit<typeof systems, 'OTHER' | 'LOADING'>; export const OPERATING_SYSTEMS = Object.entries(systems as ActualSystems) .filter(([key]) => key !== 'LOADING' && key !== 'OTHER') .map(([key, data]) => ({ - label: data.name, + label: data.name as IntlMessageKeys, value: key as UserOS, compatibility: data.compatibility, iconImage: createIcon(OSIcons, data.icon), @@ -112,11 +112,11 @@ export const OPERATING_SYSTEMS = Object.entries(systems as ActualSystems) export const INSTALL_METHODS = installMethods.map(method => ({ key: method.id, value: method.id as Types.InstallationMethod, - label: method.name, + label: method.name as IntlMessageKeys, iconImage: createIcon(InstallMethodIcons, method.icon), recommended: method.recommended, url: method.url, - info: method.info, + info: method.info as IntlMessageKeys, compatibility: { ...method.compatibility, os: method.compatibility?.os?.map(os => os as UserOS), @@ -130,7 +130,7 @@ export const INSTALL_METHODS = installMethods.map(method => ({ export const PACKAGE_MANAGERS = packageManagers.map(manager => ({ key: manager.id, value: manager.id as Types.PackageManager, - label: manager.name, + label: manager.name as IntlMessageKeys, iconImage: createIcon(PackageManagerIcons, manager.id), compatibility: { ...manager.compatibility, diff --git a/packages/i18n/lib/index.mjs b/packages/i18n/lib/index.mjs index 25336fe7330a4..acd86ce74653c 100644 --- a/packages/i18n/lib/index.mjs +++ b/packages/i18n/lib/index.mjs @@ -6,7 +6,7 @@ import localeConfig from '../config.json' with { type: 'json' }; * Imports a locale when exists from the locales directory * * @param {string} locale The locale code to import - * @returns {Promise<Record<string, any>>} The imported locale + * @returns {Promise<import('../types').Locale>} The imported locale */ export const importLocale = async locale => { return import(`../locales/${locale}.json`, { with: { type: 'json' } }).then( diff --git a/packages/i18n/types.d.ts b/packages/i18n/types.d.ts index 7e0a501af9810..d091091106255 100644 --- a/packages/i18n/types.d.ts +++ b/packages/i18n/types.d.ts @@ -1,3 +1,5 @@ +import type EnglishMessages from './locales/en.json'; + export interface LocaleConfig { code: string; localName: string; @@ -8,3 +10,5 @@ export interface LocaleConfig { enabled: boolean; default: boolean; } + +export type Locale = typeof EnglishMessages; From dffae0837ab18463aa22c639e75ca8315886d284 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Wed, 28 May 2025 16:20:17 -0300 Subject: [PATCH 0494/1385] Blog: update affected os may 25 sec release (#7786) * Blog: update affected os may 25 sec release Refs: https://github.com/nodejs-private/security-release/pull/61 * Update apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> --------- Signed-off-by: Rafael Gonzaga <rafael.nunu@hotmail.com> Co-authored-by: Aviv Keller <me@aviv.sh> --- .../pages/en/blog/vulnerability/may-2025-security-releases.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md index fecae391f6a01..db604516f5267 100644 --- a/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md +++ b/apps/site/pages/en/blog/vulnerability/may-2025-security-releases.md @@ -44,7 +44,7 @@ In Node.js, the `ReadFileUtf8` internal binding leaks memory due to a corrupted Impact: -- This vulnerability affects APIs relying on `ReadFileUtf8` on Node.js release lines: v20 and v22. +- This vulnerability affects Windows systems relying on the `ReadFileUtf8` API on Node.js release lines: v20 and v22. Thank you, to Justin Nietzel for reporting and fixing this vulnerability. From 1f9c6e454e171aebd46979b007c4833e62b22e76 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 29 May 2025 06:52:17 -0400 Subject: [PATCH 0495/1385] feat(meta): require collaborators to be active (#7775) * feat(meta): require collaborators to me active * fixup! * Update .github/workflows/find-inactive-collaborators.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller <me@aviv.sh> * store workflow in .github * use local list * remove unused tests * use more lenient matching Signed-off-by: Aviv Keller <me@aviv.sh> * fixup! * code review --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../scripts/report-inactive-collaborators.mjs | 121 ++++++++++++++++++ .../workflows/find-inactive-collaborators.yml | 31 +++++ CONTRIBUTING.md | 15 ++- GOVERNANCE.md | 40 +++++- 4 files changed, 205 insertions(+), 2 deletions(-) create mode 100644 .github/scripts/report-inactive-collaborators.mjs create mode 100644 .github/workflows/find-inactive-collaborators.yml diff --git a/.github/scripts/report-inactive-collaborators.mjs b/.github/scripts/report-inactive-collaborators.mjs new file mode 100644 index 0000000000000..5f441474e2ce3 --- /dev/null +++ b/.github/scripts/report-inactive-collaborators.mjs @@ -0,0 +1,121 @@ +import { readFile } from 'node:fs/promises'; + +const CONFIG = { + GOVERNANCE_FILE: 'GOVERNANCE.md', + CURRENT_MEMBERS_HEADER: '#### Current Members', + INACTIVE_MONTHS: 12, + ISSUE_TITLE: 'Inactive Collaborator Report', + ISSUE_LABELS: ['meta', 'inactive-collaborator-report'], +}; + +// Get date N months ago in YYYY-MM-DD format +const getDateMonthsAgo = (months = CONFIG.INACTIVE_MONTHS) => { + const date = new Date(); + date.setMonth(date.getMonth() - months); + return date.toISOString().split('T')[0]; +}; + +// Parse collaborator usernames from governance file +async function parseCollaborators() { + const content = await readFile(CONFIG.GOVERNANCE_FILE, 'utf8'); + const lines = content.split('\n'); + const collaborators = []; + + const startIndex = + lines.findIndex(l => l.startsWith(CONFIG.CURRENT_MEMBERS_HEADER)) + 1; + if (startIndex <= 0) return collaborators; + + for (let i = startIndex; i < lines.length; i++) { + const line = lines[i]; + if (line.startsWith('#')) break; + + const match = line.match(/^\s*-\s*\[([^\]]+)\]/); + if (match) collaborators.push(match[1]); + } + + return collaborators; +} + +// Check if users have been active since cutoff date +async function getInactiveUsers(github, usernames, repo, cutoffDate) { + const inactiveUsers = []; + + for (const username of usernames) { + const { data } = await github.rest.search.commits({ + q: `author:${username} repo:${repo} committer-date:>=${cutoffDate}`, + per_page: 1, + }); + + if (data.total_count === 0) { + inactiveUsers.push(username); + } + } + + return inactiveUsers; +} + +// Generate report for inactive members +function formatReport(inactiveMembers, cutoffDate) { + if (!inactiveMembers.length) return null; + + const today = getDateMonthsAgo(0); + return `# Inactive Collaborators Report + +Last updated: ${today} +Checking for inactivity since: ${cutoffDate} + +## Inactive Collaborators (${inactiveMembers.length}) + +| Login | +| ----- | +${inactiveMembers.map(m => `| @${m} |`).join('\n')} + +## What happens next? + +@nodejs/nodejs-website should review this list and contact inactive collaborators to confirm their continued interest in participating in the project.`; +} + +async function createOrUpdateIssue(github, context, report) { + if (!report) return; + + const { owner, repo } = context.repo; + const { data: issues } = await github.rest.issues.listForRepo({ + owner, + repo, + state: 'open', + labels: CONFIG.ISSUE_LABELS[1], + per_page: 1, + }); + + if (issues.total_count > 0) { + await github.rest.issues.update({ + owner, + repo, + issue_number: issues.items[0].number, + body: report, + }); + } else { + await github.rest.issues.create({ + owner, + repo, + title: CONFIG.ISSUE_TITLE, + body: report, + labels: CONFIG.ISSUE_LABELS, + }); + } +} + +export default async function (github, context) { + const cutoffDate = getDateMonthsAgo(); + const collaborators = await parseCollaborators(); + + const inactiveMembers = await getInactiveUsers( + github, + collaborators, + `${context.repo.owner}/${context.repo.repo}`, + cutoffDate + ); + const report = formatReport(inactiveMembers, cutoffDate); + + await createOrUpdateIssue(github, context, report); +} diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml new file mode 100644 index 0000000000000..70d9ae441c90e --- /dev/null +++ b/.github/workflows/find-inactive-collaborators.yml @@ -0,0 +1,31 @@ +name: Find inactive collaborators + +on: + schedule: + # Run every Monday at 4:05 AM UTC. + - cron: 5 4 * * 1 + + workflow_dispatch: + +permissions: {} + +jobs: + find: + if: github.repository == 'nodejs/nodejs.org' + runs-on: ubuntu-latest + + steps: + - name: Harden Runner + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Report inactive collaborators + id: inactive + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const report = await import("${{github.workspace}}/.github/scripts/report-inactive-collaborators.mjs"); + report(github, exec); diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 47016c323f154..e1c5ce1bb82c0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,8 @@ Thank you for your interest in contributing to the Node.js Website. Before you p - [Code of Conduct](https://github.com/nodejs/node/blob/HEAD/CODE_OF_CONDUCT.md) - [Contributing](#contributing) - - [Becoming a collaborator](#becoming-a-collaborator) + - [Becoming a Collaborator](#becoming-a-collaborator) + - [Maintaining Collaborator Status](#maintaining-collaborator-status) - [Getting started](#getting-started) - [CLI Commands](#cli-commands) - [Cloudflare Deployment](#cloudflare-deployment) @@ -54,6 +55,18 @@ If you're an active contributor seeking to become a member, we recommend you con </details> +### Maintaining Collaborator Status + +Once you become a collaborator, you are expected to uphold certain responsibilities and standards to maintain your status: + +- **Adhere to Policies**: Collaborators must abide by the [Node.js Moderation Policy](https://github.com/nodejs/admin/blob/HEAD/Moderation-Policy.md) and [Code of Conduct](https://github.com/nodejs/node/blob/HEAD/CODE_OF_CONDUCT.md) at all times. + +- **Remain Active**: Collaborators are expected to author commits at least once in the past twelve months. + +If a collaborator becomes inactive for more than twelve months, they may be removed from the active collaborators list. They can be reinstated upon returning to active participation by going through the full nomination process again. + +Violations of the Code of Conduct or Moderation Policy may result in immediate removal of collaborator status, depending on the severity of the violation and the decision of the Technical Steering Committee and/or the OpenJS Foundation. + ## Getting started The steps below will give you a general idea of how to prepare your local environment for the Node.js Website and general steps diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 6f6d463030dbc..247bb3eeb7bc7 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -15,7 +15,45 @@ The Node.js Website Team is responsible for the day-to-day technical development The maintainers on the Node.js Website Team are responsible for steering the technical direction of the Node.js Website, and reserve the right to make final decisions on any issues or pull requests, in line with the Contribution Guidelines, Collaborator Guidelines, the Code of Conduct and the overall Governance premises of the Node.js project. -Members of this team are nominated through the guidelines provided in the Collaborator Guidelines within this repository. +Members of this team are nominated through the guidelines provided in the [Contributing Guidelines](https://github.com/nodejs/nodejs.org/blob/main/CONTRIBUTING.md#becoming-a-collaborator) within this repository. After a passed nomination, members should submit a PR to add themselves to the list of current members, shown below. + +#### Current Members + +- [araujogui](https://github.com/araujogui) - **Guilherme Araújo** (he/him) + +- [AugustinMauroy](https://github.com/AugustinMauroy) - **Augustin Mauroy** (he/him) + +- [avivkeller](https://github.com/avivkeller) - **Aviv Keller** (he/him) + +- [aymen94](https://github.com/aymen94) - **Aymen Naghmouchi** + +- [benhalverson](https://github.com/benhalverson) - **Ben Halverson** (he/him) + +- [bjohansebas](https://github.com/bjohansebas) - **Sebastian Beltran** + +- [bmuenzenmeyer](https://github.com/bmuenzenmeyer) - **Brian Muenzenmeyer** (he/him) + +- [bnb](https://github.com/bnb) - **Tierney Cyren** (they/them) + +- [canerakdas](https://github.com/canerakdas) - **Caner Akdas** + +- [dario-piotrowicz](https://github.com/dario-piotrowicz) - **Dario Piotrowicz** + +- [Harkunwar](https://github.com/Harkunwar) - **Harkunwar Kochar** (he/him) + +- [HinataKah0](https://github.com/HinataKah0) - **HinataKah0** (he/him) + +- [manishprivet](https://github.com/manishprivet) - **Manish Kumar** (he/him) + +- [mikeesto](https://github.com/mikeesto) - **Michael Esteban** (he/him) + +- [ovflowd](https://github.com/ovflowd) - **Claudio Wunder** (they/them) + +- [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov** + +- [SEWeiTung](https://github.com/SEWeiTung) - **Wei Tung** + +- [shanpriyan](https://github.com/shanpriyan) - **Shanmughapriyan S** ### Node.js Web Infra Team (`@nodejs/web-infra`) From fefbf4994f671bcece0d3e308d81ec2ab58ea75e Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 29 May 2025 06:53:16 -0400 Subject: [PATCH 0496/1385] chore(ci): only run when certain files are changed (#7783) --- .github/workflows/publish-packages.yml | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml index 1ec60e60c6af9..57c766d89d909 100644 --- a/.github/workflows/publish-packages.yml +++ b/.github/workflows/publish-packages.yml @@ -1,13 +1,11 @@ name: Publish Packages -# This workflow publishes packages to NPM when changes are merged to main branch or when manually triggered. -# It runs automatically after successful tests or can be run manually for specific packages. +# This workflow publishes packages to npm when changes are merged to main branch or when manually triggered. on: - workflow_run: - # Only run after linting and tests have passed on main branch - workflows: ['Linting and Tests'] - types: [completed] + push: + paths: + - 'packages/**' # For security reasons, this should never be set to anything but `main` branches: [main] workflow_dispatch: @@ -21,17 +19,11 @@ permissions: contents: read env: - # Use the SHA from the workflow run that triggered this or the current SHA for manual runs - COMMIT_SHA: ${{ github.event.workflow_run.head_sha || github.sha }} + COMMIT_SHA: ${{ github.sha }} jobs: prepare-packages: runs-on: ubuntu-latest - # Only run if manually triggered or if the triggering workflow succeeded from a push event - if: github.event_name == 'workflow_dispatch' || ( - github.event.workflow_run.conclusion == 'success' && - github.event.workflow_run.event == 'push' && - github.repository == 'nodejs/nodejs.org') outputs: # Output the matrix of packages to publish for use in the publish job matrix: ${{ steps.generate-matrix.outputs.matrix }} From 1d00bd8479b9238140c767b7be7101f39ce029bd Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 29 May 2025 07:27:17 -0400 Subject: [PATCH 0497/1385] fix(ci): use correct import syntax (#7788) * fix(ci): use correct import syntax Signed-off-by: Aviv Keller <me@aviv.sh> * Update find-inactive-collaborators.yml * Update find-inactive-collaborators.yml * Update find-inactive-collaborators.yml --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/find-inactive-collaborators.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index 70d9ae441c90e..d537b4d425bbb 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -7,7 +7,9 @@ on: workflow_dispatch: -permissions: {} +permissions: + contents: read + issues: write jobs: find: @@ -27,5 +29,5 @@ jobs: uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | - const report = await import("${{github.workspace}}/.github/scripts/report-inactive-collaborators.mjs"); - report(github, exec); + const { default: report } = await import("${{github.workspace}}/.github/scripts/report-inactive-collaborators.mjs"); + report(github, context); From c49af25ce5c275b0c9e8a0d1a66748b02c903324 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 29 May 2025 18:57:41 -0400 Subject: [PATCH 0498/1385] chore(meta): remove @rodion-arr from web team (#7790) --- GOVERNANCE.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 247bb3eeb7bc7..555217dc82a23 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -49,8 +49,6 @@ Members of this team are nominated through the guidelines provided in the [Contr - [ovflowd](https://github.com/ovflowd) - **Claudio Wunder** (they/them) -- [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov** - - [SEWeiTung](https://github.com/SEWeiTung) - **Wei Tung** - [shanpriyan](https://github.com/shanpriyan) - **Shanmughapriyan S** From 3ecfbcb265e7f5874f506106af7cdf634df1cad7 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 30 May 2025 06:55:10 -0400 Subject: [PATCH 0499/1385] chore(chromatic): only run on `ui-components` changes (#7785) * chore(chromatic): only run on `ui-components` changes and merge groups Signed-off-by: Aviv Keller <me@aviv.sh> * Update .github/workflows/chromatic.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/chromatic.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index cd9ae12686231..35bf1207fe33e 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -11,9 +11,13 @@ on: push: branches: - main + paths: + - packages/ui-components/** pull_request_target: branches: - main + paths: + - packages/ui-components/** types: - labeled workflow_dispatch: From 6cb8b0a0c75c24f5ccc84bb07a1ea9b4b810abd2 Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Sat, 31 May 2025 18:04:30 +0300 Subject: [PATCH 0500/1385] fix(ui): skeleton animation (#7795) fix: skeleton animation --- packages/ui-components/Common/Skeleton/index.module.css | 1 + packages/ui-components/styles/animations.css | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/ui-components/Common/Skeleton/index.module.css b/packages/ui-components/Common/Skeleton/index.module.css index cd97ce9320c9c..ef6b74afe7141 100644 --- a/packages/ui-components/Common/Skeleton/index.module.css +++ b/packages/ui-components/Common/Skeleton/index.module.css @@ -2,6 +2,7 @@ .skeleton { @apply outline-hidden + dark:animate-pulse-dark pointer-events-none animate-pulse cursor-default diff --git a/packages/ui-components/styles/animations.css b/packages/ui-components/styles/animations.css index d0dc42003d2fe..37fcd6996f2e1 100644 --- a/packages/ui-components/styles/animations.css +++ b/packages/ui-components/styles/animations.css @@ -1,4 +1,4 @@ -@theme { +@theme inline { --animate-surf: surf 1s infinite ease-in-out; --animate-pulse: pulse 500ms infinite alternate-reverse; --animate-pulse-dark: pulse-dark 500ms infinite alternate-reverse; From 601b74e6d7dfc706eb99e854fc96120bea42f03a Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 31 May 2025 11:15:03 -0400 Subject: [PATCH 0501/1385] chore(shiki): only send required langs to client, and support more on server (#7787) * chore(shiki): add languages used in core * chore(shiki): only send required langs to client * fixup! chore(shiki): only send required langs to client * fix unit tests * fixup! fix unit tests * Update packages/rehype-shiki/src/highlighter.mjs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller <me@aviv.sh> * Update packages/rehype-shiki/src/highlighter.mjs Co-authored-by: Claudio W. <cwunder@gnome.org> Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Claudio W. <cwunder@gnome.org> --- .../Downloads/Release/ReleaseCodeBox.tsx | 2 +- apps/site/next.mdx.plugins.mjs | 2 +- packages/rehype-shiki/package.json | 9 +- .../src/__tests__/highlighter.test.mjs | 75 ++++++++++++++ .../src/__tests__/languages.test.mjs | 27 ----- .../src/__tests__/plugin.test.mjs | 67 +++++++++++++ packages/rehype-shiki/src/highlighter.mjs | 98 +++++++++++-------- packages/rehype-shiki/src/index.mjs | 46 ++++++++- packages/rehype-shiki/src/languages.mjs | 60 ------------ packages/rehype-shiki/src/minimal.mjs | 11 +++ packages/rehype-shiki/src/plugin.mjs | 4 +- packages/rehype-shiki/turbo.json | 2 +- 12 files changed, 265 insertions(+), 138 deletions(-) create mode 100644 packages/rehype-shiki/src/__tests__/highlighter.test.mjs delete mode 100644 packages/rehype-shiki/src/__tests__/languages.test.mjs create mode 100644 packages/rehype-shiki/src/__tests__/plugin.test.mjs delete mode 100644 packages/rehype-shiki/src/languages.mjs create mode 100644 packages/rehype-shiki/src/minimal.mjs diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 0497ca0d234a9..7e18a7bea4b9b 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -1,6 +1,6 @@ 'use client'; -import { highlightToHtml } from '@node-core/rehype-shiki'; +import { highlightToHtml } from '@node-core/rehype-shiki/minimal'; import AlertBox from '@node-core/ui-components/Common/AlertBox'; import Skeleton from '@node-core/ui-components/Common/Skeleton'; import { useTranslations } from 'next-intl'; diff --git a/apps/site/next.mdx.plugins.mjs b/apps/site/next.mdx.plugins.mjs index 016407b360422..a857a298de193 100644 --- a/apps/site/next.mdx.plugins.mjs +++ b/apps/site/next.mdx.plugins.mjs @@ -1,6 +1,6 @@ 'use strict'; -import rehypeShikiji from '@node-core/rehype-shiki'; +import rehypeShikiji from '@node-core/rehype-shiki/plugin'; import remarkHeadings from '@vcarl/remark-headings'; import rehypeAutolinkHeadings from 'rehype-autolink-headings'; import rehypeSlug from 'rehype-slug'; diff --git a/packages/rehype-shiki/package.json b/packages/rehype-shiki/package.json index ed32e84e52e9e..09a03b003e373 100644 --- a/packages/rehype-shiki/package.json +++ b/packages/rehype-shiki/package.json @@ -1,11 +1,14 @@ { "name": "@node-core/rehype-shiki", "type": "module", - "main": "./src/index.mjs", - "module": "./src/index.mjs", + "exports": { + ".": "./src/index.mjs", + "./*": "./src/*.mjs" + }, "scripts": { "lint:js": "eslint \"**/*.mjs\"", - "test": "node --test" + "test": "turbo test:unit", + "test:unit": "node --experimental-test-coverage --experimental-test-module-mocks --test \"**/*.test.mjs\"" }, "dependencies": { "@shikijs/core": "^3.3.0", diff --git a/packages/rehype-shiki/src/__tests__/highlighter.test.mjs b/packages/rehype-shiki/src/__tests__/highlighter.test.mjs new file mode 100644 index 0000000000000..7ab0fcaa6e1b0 --- /dev/null +++ b/packages/rehype-shiki/src/__tests__/highlighter.test.mjs @@ -0,0 +1,75 @@ +import assert from 'node:assert/strict'; +import { describe, it, mock } from 'node:test'; + +// Mock dependencies +const mockShiki = { + codeToHtml: mock.fn(() => '<pre><code>highlighted code</code></pre>'), + codeToHast: mock.fn(() => ({ type: 'element', tagName: 'pre' })), +}; + +mock.module('@shikijs/core', { + namedExports: { createHighlighterCoreSync: () => mockShiki }, +}); + +mock.module('@shikijs/engine-javascript', { + namedExports: { createJavaScriptRegexEngine: () => ({}) }, +}); + +mock.module('shiki/themes/nord.mjs', { + defaultExport: { name: 'nord', colors: { 'editor.background': '#2e3440' } }, +}); + +describe('createHighlighter', async () => { + const { createHighlighter } = await import('../highlighter.mjs'); + + describe('getLanguageDisplayName', () => { + it('returns display name for known languages', () => { + const langs = [ + { name: 'javascript', displayName: 'JavaScript', aliases: ['js'] }, + ]; + const highlighter = createHighlighter({ langs }); + + assert.strictEqual( + highlighter.getLanguageDisplayName('javascript'), + 'JavaScript' + ); + assert.strictEqual( + highlighter.getLanguageDisplayName('js'), + 'JavaScript' + ); + }); + + it('returns original name for unknown languages', () => { + const highlighter = createHighlighter({ langs: [] }); + assert.strictEqual( + highlighter.getLanguageDisplayName('unknown'), + 'unknown' + ); + }); + }); + + describe('highlightToHtml', () => { + it('extracts inner HTML from code tag', () => { + mockShiki.codeToHtml.mock.mockImplementationOnce( + () => '<pre><code>const x = 1;</code></pre>' + ); + + const highlighter = createHighlighter({}); + const result = highlighter.highlightToHtml('const x = 1;', 'javascript'); + + assert.strictEqual(result, 'const x = 1;'); + }); + }); + + describe('highlightToHast', () => { + it('returns HAST tree from shiki', () => { + const expectedHast = { type: 'element', tagName: 'pre' }; + mockShiki.codeToHast.mock.mockImplementationOnce(() => expectedHast); + + const highlighter = createHighlighter({}); + const result = highlighter.highlightToHast('code', 'javascript'); + + assert.deepStrictEqual(result, expectedHast); + }); + }); +}); diff --git a/packages/rehype-shiki/src/__tests__/languages.test.mjs b/packages/rehype-shiki/src/__tests__/languages.test.mjs deleted file mode 100644 index 0900f25ff365b..0000000000000 --- a/packages/rehype-shiki/src/__tests__/languages.test.mjs +++ /dev/null @@ -1,27 +0,0 @@ -import assert from 'node:assert/strict'; -import { it, describe } from 'node:test'; - -import { getLanguageDisplayName, LANGUAGES } from '../languages.mjs'; - -LANGUAGES.splice( - 0, - LANGUAGES.length, - { name: 'javascript', aliases: ['js'], displayName: 'JavaScript' }, - { name: 'typescript', aliases: ['ts'], displayName: 'TypeScript' } -); - -describe('getLanguageDisplayName', async () => { - it('should return the display name for a known language', () => { - assert.equal(getLanguageDisplayName('javascript'), 'JavaScript'); - assert.equal(getLanguageDisplayName('js'), 'JavaScript'); - }); - - it('should return the display name for another known language', () => { - assert.equal(getLanguageDisplayName('typescript'), 'TypeScript'); - assert.equal(getLanguageDisplayName('ts'), 'TypeScript'); - }); - - it('should return the input language if it is not known', () => { - assert.equal(getLanguageDisplayName('unknown'), 'unknown'); - }); -}); diff --git a/packages/rehype-shiki/src/__tests__/plugin.test.mjs b/packages/rehype-shiki/src/__tests__/plugin.test.mjs new file mode 100644 index 0000000000000..11f545ad28ba3 --- /dev/null +++ b/packages/rehype-shiki/src/__tests__/plugin.test.mjs @@ -0,0 +1,67 @@ +import assert from 'node:assert/strict'; +import { describe, it, mock } from 'node:test'; + +// Simplified mocks - only mock what's actually needed +mock.module('../index.mjs', { + namedExports: { highlightToHast: mock.fn(() => ({ children: [] })) }, +}); + +mock.module('classnames', { + defaultExport: (...args) => args.filter(Boolean).join(' '), +}); + +mock.module('hast-util-to-string', { + namedExports: { toString: () => 'code' }, +}); + +const mockVisit = mock.fn(); +mock.module('unist-util-visit', { + namedExports: { visit: mockVisit, SKIP: Symbol() }, +}); + +describe('rehypeShikiji', async () => { + const { default: rehypeShikiji } = await import('../plugin.mjs'); + const mockTree = { type: 'root', children: [] }; + + it('calls visit twice', () => { + mockVisit.mock.resetCalls(); + rehypeShikiji()(mockTree); + assert.strictEqual(mockVisit.mock.calls.length, 2); + }); + + it('creates CodeTabs for multiple code blocks', () => { + const parent = { + children: [ + { + tagName: 'pre', + children: [ + { + tagName: 'code', + data: { meta: 'displayName="JS"' }, + properties: { className: ['language-js'] }, + }, + ], + }, + { + tagName: 'pre', + children: [ + { + tagName: 'code', + data: { meta: 'displayName="TS"' }, + properties: { className: ['language-ts'] }, + }, + ], + }, + ], + }; + + mockVisit.mock.mockImplementation((tree, selector, visitor) => { + if (selector === 'element') { + visitor(parent.children[0], 0, parent); + } + }); + + rehypeShikiji()(mockTree); + assert.ok(parent.children.some(child => child.tagName === 'CodeTabs')); + }); +}); diff --git a/packages/rehype-shiki/src/highlighter.mjs b/packages/rehype-shiki/src/highlighter.mjs index a31fda8da7300..9f37e26ae179e 100644 --- a/packages/rehype-shiki/src/highlighter.mjs +++ b/packages/rehype-shiki/src/highlighter.mjs @@ -1,47 +1,67 @@ import { createHighlighterCoreSync } from '@shikijs/core'; import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript'; +import shikiNordTheme from 'shiki/themes/nord.mjs'; -import { LANGUAGES, DEFAULT_THEME } from './languages.mjs'; - -let _shiki; - -/** - * Lazy-load and memoize the minimal Shikiji Syntax Highlighter - * @returns {import('@shikijs/core').HighlighterCore} - */ -export const getShiki = () => { - if (!_shiki) { - _shiki = createHighlighterCoreSync({ - themes: [DEFAULT_THEME], - langs: LANGUAGES, - // Let's use Shiki's new Experimental JavaScript-based regex engine! - engine: createJavaScriptRegexEngine(), - }); - } - return _shiki; +const DEFAULT_THEME = { + // We are updating this color because the background color and comment text color + // in the Codebox component do not comply with accessibility standards + // @see https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html + colorReplacements: { '#616e88': '#707e99' }, + ...shikiNordTheme, }; /** - * Highlights code and returns the inner HTML inside the <code> tag - * - * @param {string} code - The code to highlight - * @param {string} language - The programming language to use for highlighting - * @returns {string} The inner HTML of the highlighted code + * Creates a syntax highlighter with utility functions + * @param {import('@shikijs/core').HighlighterCoreOptions} options - Configuration options for the highlighter */ -export const highlightToHtml = (code, language) => - getShiki() - .codeToHtml(code, { lang: language, theme: DEFAULT_THEME }) - // Shiki will always return the Highlighted code encapsulated in a <pre> and <code> tag - // since our own CodeBox component handles the <code> tag, we just want to extract - // the inner highlighted code to the CodeBox - .match(/<code>(.+?)<\/code>/s)[1]; +export const createHighlighter = options => { + const shiki = createHighlighterCoreSync({ + themes: [DEFAULT_THEME], + engine: createJavaScriptRegexEngine(), + ...options, + }); -/** - * Highlights code and returns a HAST tree - * - * @param {string} code - The code to highlight - * @param {string} language - The programming language to use for highlighting - * @returns {import('hast').Element} The HAST representation of the highlighted code - */ -export const highlightToHast = (code, language) => - getShiki().codeToHast(code, { lang: language, theme: DEFAULT_THEME }); + const theme = options.themes?.[0] ?? DEFAULT_THEME; + const langs = options.langs ?? []; + + const getLanguageDisplayName = language => { + const languageByIdOrAlias = langs.find( + ({ name, aliases }) => + name.toLowerCase() === language.toLowerCase() || + (aliases !== undefined && aliases.includes(language.toLowerCase())) + ); + + return languageByIdOrAlias?.displayName ?? language; + }; + + /** + * Highlights code and returns the inner HTML inside the <code> tag + * + * @param {string} code - The code to highlight + * @param {string} language - The programming language to use for highlighting + * @returns {string} The inner HTML of the highlighted code + */ + const highlightToHtml = (code, language) => + shiki + .codeToHtml(code, { lang: language, theme }) + // Shiki will always return the Highlighted code encapsulated in a <pre> and <code> tag + // since our own CodeBox component handles the <code> tag, we just want to extract + // the inner highlighted code to the CodeBox + .match(/<code>(.+?)<\/code>/s)[1]; + + /** + * Highlights code and returns a HAST tree + * + * @param {string} code - The code to highlight + * @param {string} language - The programming language to use for highlighting + */ + const highlightToHast = (code, language) => + shiki.codeToHast(code, { lang: language, theme }); + + return { + shiki, + getLanguageDisplayName, + highlightToHtml, + highlightToHast, + }; +}; diff --git a/packages/rehype-shiki/src/index.mjs b/packages/rehype-shiki/src/index.mjs index 68cfc211ea64c..1a7e144a46719 100644 --- a/packages/rehype-shiki/src/index.mjs +++ b/packages/rehype-shiki/src/index.mjs @@ -1,5 +1,43 @@ -import { rehypeShikiji } from './plugin.mjs'; -export * from './highlighter.mjs'; -export * from './languages.mjs'; +import cLanguage from 'shiki/langs/c.mjs'; +import coffeeScriptLanguage from 'shiki/langs/coffeescript.mjs'; +import cPlusPlusLanguage from 'shiki/langs/cpp.mjs'; +import diffLanguage from 'shiki/langs/diff.mjs'; +import dockerLanguage from 'shiki/langs/docker.mjs'; +import httpLanguage from 'shiki/langs/http.mjs'; +import iniLanguage from 'shiki/langs/ini.mjs'; +import javaScriptLanguage from 'shiki/langs/javascript.mjs'; +import jsonLanguage from 'shiki/langs/json.mjs'; +import powershellLanguage from 'shiki/langs/powershell.mjs'; +import shellScriptLanguage from 'shiki/langs/shellscript.mjs'; +import shellSessionLanguage from 'shiki/langs/shellsession.mjs'; +import typeScriptLanguage from 'shiki/langs/typescript.mjs'; +import yamlLanguage from 'shiki/langs/yaml.mjs'; -export default rehypeShikiji; +import { createHighlighter } from './highlighter.mjs'; + +const { shiki, getLanguageDisplayName, highlightToHast, highlightToHtml } = + createHighlighter({ + langs: [ + ...cLanguage, + ...coffeeScriptLanguage, + ...cPlusPlusLanguage, + ...diffLanguage, + ...dockerLanguage, + ...httpLanguage, + ...iniLanguage, + { + ...javaScriptLanguage[0], + // We patch the JavaScript language to include the CommonJS and ES Module aliases + // that are commonly used (non-standard aliases) within our API docs and Blog posts + aliases: javaScriptLanguage[0].aliases.concat('cjs', 'mjs'), + }, + ...jsonLanguage, + ...powershellLanguage, + ...shellScriptLanguage, + ...shellSessionLanguage, + ...typeScriptLanguage, + ...yamlLanguage, + ], + }); + +export { shiki, getLanguageDisplayName, highlightToHast, highlightToHtml }; diff --git a/packages/rehype-shiki/src/languages.mjs b/packages/rehype-shiki/src/languages.mjs deleted file mode 100644 index d9764697ff335..0000000000000 --- a/packages/rehype-shiki/src/languages.mjs +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -import diffLanguage from 'shiki/langs/diff.mjs'; -import dockerLanguage from 'shiki/langs/docker.mjs'; -import iniLanguage from 'shiki/langs/ini.mjs'; -import javaScriptLanguage from 'shiki/langs/javascript.mjs'; -import jsonLanguage from 'shiki/langs/json.mjs'; -import powershellLanguage from 'shiki/langs/powershell.mjs'; -import shellScriptLanguage from 'shiki/langs/shellscript.mjs'; -import shellSessionLanguage from 'shiki/langs/shellsession.mjs'; -import typeScriptLanguage from 'shiki/langs/typescript.mjs'; -import yamlLanguage from 'shiki/langs/yaml.mjs'; -import shikiNordTheme from 'shiki/themes/nord.mjs'; - -/** - * All languages needed within the Node.js website for syntax highlighting. - * - * @type {Array<import('shiki').LanguageRegistration>} - */ -export const LANGUAGES = [ - { - ...javaScriptLanguage[0], - // We path the JavaScript language to include the CommonJS and ES Module aliases - // that are commonly used (non-standard aliases) within our API docs and Blog posts - aliases: javaScriptLanguage[0].aliases.concat('cjs', 'mjs'), - }, - ...iniLanguage, - ...jsonLanguage, - ...typeScriptLanguage, - ...shellScriptLanguage, - ...powershellLanguage, - ...shellSessionLanguage, - ...dockerLanguage, - ...diffLanguage, - ...yamlLanguage, -]; - -// This is the default theme we use for our Shiki Syntax Highlighter -export const DEFAULT_THEME = { - // We updating this color because the background color and comment text color - // in the Codebox component do not comply with accessibility standards - // @see https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html - colorReplacements: { '#616e88': '#707e99' }, - ...shikiNordTheme, -}; - -/** - * Get the display name of a given language - * @param {string} language The language ID - * @returns {string} The display name of the language, or the input as a fallback - */ -export const getLanguageDisplayName = language => { - const languageByIdOrAlias = LANGUAGES.find( - ({ name, aliases }) => - name.toLowerCase() === language.toLowerCase() || - (aliases !== undefined && aliases.includes(language.toLowerCase())) - ); - - return languageByIdOrAlias?.displayName ?? language; -}; diff --git a/packages/rehype-shiki/src/minimal.mjs b/packages/rehype-shiki/src/minimal.mjs new file mode 100644 index 0000000000000..cdbb5c8f2ca9c --- /dev/null +++ b/packages/rehype-shiki/src/minimal.mjs @@ -0,0 +1,11 @@ +import powershellLanguage from 'shiki/langs/powershell.mjs'; +import shellScriptLanguage from 'shiki/langs/shellscript.mjs'; + +import { createHighlighter } from './highlighter.mjs'; + +const { shiki, getLanguageDisplayName, highlightToHast, highlightToHtml } = + createHighlighter({ + langs: [...powershellLanguage, ...shellScriptLanguage], + }); + +export { shiki, getLanguageDisplayName, highlightToHast, highlightToHtml }; diff --git a/packages/rehype-shiki/src/plugin.mjs b/packages/rehype-shiki/src/plugin.mjs index d486615296c40..c07416a4db326 100644 --- a/packages/rehype-shiki/src/plugin.mjs +++ b/packages/rehype-shiki/src/plugin.mjs @@ -4,7 +4,7 @@ import classNames from 'classnames'; import { toString } from 'hast-util-to-string'; import { SKIP, visit } from 'unist-util-visit'; -import { highlightToHast } from './highlighter.mjs'; +import { highlightToHast } from './index.mjs'; // This is what Remark will use as prefix within a <pre> className // to attribute the current language of the <pre> element @@ -53,7 +53,7 @@ function isCodeBlock(node) { ); } -export function rehypeShikiji() { +export default function rehypeShikiji() { return function (tree) { visit(tree, 'element', (_, index, parent) => { const languages = []; diff --git a/packages/rehype-shiki/turbo.json b/packages/rehype-shiki/turbo.json index aa0ce04f53ac8..1dd6dce7da26a 100644 --- a/packages/rehype-shiki/turbo.json +++ b/packages/rehype-shiki/turbo.json @@ -6,7 +6,7 @@ "lint:js": { "inputs": ["src/**/*.mjs"] }, - "test": { + "test:unit": { "inputs": ["src/**/*.mjs"] } } From df203d0fe21ee5d80d258c60dc821e8ac0601ce4 Mon Sep 17 00:00:00 2001 From: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> Date: Sat, 31 May 2025 16:09:15 -0700 Subject: [PATCH 0502/1385] fix(ui): Fix tabs component overflow issue (#7798) * fix(Tabs): Fix tabs component overflow issue Signed-off-by: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> * fix(ui): Fix tabs component. Signed-off-by: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> --------- Signed-off-by: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> --- packages/ui-components/Common/Tabs/index.module.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/ui-components/Common/Tabs/index.module.css b/packages/ui-components/Common/Tabs/index.module.css index e4604bc25d20c..8ca9744bca766 100644 --- a/packages/ui-components/Common/Tabs/index.module.css +++ b/packages/ui-components/Common/Tabs/index.module.css @@ -1,7 +1,8 @@ @reference "../../styles/index.css"; .tabsRoot { - @apply max-w-full; + @apply grid + max-w-full; .tabsList { @apply font-open-sans From 5b2c9fb3a8999a0db525667fe5f1a3cb1cb51ea0 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz <dario@cloudflare.com> Date: Sun, 1 Jun 2025 02:38:13 +0100 Subject: [PATCH 0503/1385] feat(test): replace cloudflare open-next build test with playwright tests (#7782) * feat(test): replace cloudflare open-next build test with playwright tests * fixup! feat(test): replace cloudflare open-next build test with playwright tests simplify logic as suggested * fixup! feat(test): replace cloudflare open-next build test with playwright tests update forgotten env variable name in playwright.yml * fixup! feat(test): replace cloudflare open-next build test with playwright tests still accept VERCEL_PREVIEW_URL to make PR go green * fixup! feat(test): replace cloudflare open-next build test with playwright tests remove VERCEL_PREVIEW_URL * fixup! feat(test): replace cloudflare open-next build test with playwright tests avoid running a script taken from process.env * fixup! feat(test): replace cloudflare open-next build test with playwright tests add new getWebServerConfig function instead of using a ternary * assert that the cloudflare:preview script is defined --- ...ml => playwright-cloudflare-open-next.yml} | 50 +++++++++++++------ .github/workflows/playwright.yml | 2 +- apps/site/playwright.config.ts | 26 ++++++++-- 3 files changed, 59 insertions(+), 19 deletions(-) rename .github/workflows/{cloudflare-open-next-build.yml => playwright-cloudflare-open-next.yml} (53%) diff --git a/.github/workflows/cloudflare-open-next-build.yml b/.github/workflows/playwright-cloudflare-open-next.yml similarity index 53% rename from .github/workflows/cloudflare-open-next-build.yml rename to .github/workflows/playwright-cloudflare-open-next.yml index 67df12fd7103c..4c8ebb70659c0 100644 --- a/.github/workflows/cloudflare-open-next-build.yml +++ b/.github/workflows/playwright-cloudflare-open-next.yml @@ -4,7 +4,7 @@ # REVIEWERS, please always double-check security practices before merging a PR that contains Workflow changes!! # AUTHORS, please only use actions with explicit SHA references, and avoid using `@master` or `@main` references or `@version` tags. -name: Cloudflare OpenNext Build +name: Playwright Tests on Cloudflare Open-Next on: push: @@ -14,24 +14,17 @@ on: branches: - main -defaults: - run: - # This ensures that the working directory is the root of the repository - working-directory: ./ +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true permissions: contents: read actions: read -env: - # See https://turbo.build/repo/docs/reference/command-line-reference/run#--cache-dir - TURBO_ARGS: --cache-dir=.turbo/cache - # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force - TURBO_FORCE: true - jobs: - build-cloudflare-worker: - name: Build Cloudflare Worker + playwright: + name: Playwright Tests runs-on: ubuntu-latest steps: @@ -58,5 +51,32 @@ jobs: - name: Install packages run: pnpm install --frozen-lockfile - - name: Build Cloudflare Worker - run: pnpm exec turbo run cloudflare:build:worker ${{ env.TURBO_ARGS }} + - name: Get Playwright version + id: playwright-version + working-directory: apps/site + run: echo "version=$(pnpm exec playwright --version | awk '{print $2}')" >> $GITHUB_OUTPUT + + - name: Cache Playwright browsers + id: playwright-cache + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + with: + path: ~/.cache/ms-playwright + key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }} + + - name: Install Playwright Browsers + working-directory: apps/site + run: pnpm exec playwright install --with-deps + + - name: Run Playwright tests + working-directory: apps/site + run: pnpm playwright + env: + PLAYWRIGHT_RUN_CLOUDFLARE_PREVIEW: true + PLAYWRIGHT_BASE_URL: http://127.0.0.1:8787 + + - name: Upload Playwright test results + if: always() + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: playwright-report + path: apps/site/playwright-report/ diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index bbc1cb3353d53..c7bb1bd13be8a 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -97,7 +97,7 @@ jobs: working-directory: apps/site run: pnpm playwright env: - VERCEL_PREVIEW_URL: ${{ needs.get-vercel-preview.outputs.url }} + PLAYWRIGHT_BASE_URL: ${{ needs.get-vercel-preview.outputs.url }} - name: Upload Playwright test results if: always() diff --git a/apps/site/playwright.config.ts b/apps/site/playwright.config.ts index da8afcedde794..fa3790f8d58cb 100644 --- a/apps/site/playwright.config.ts +++ b/apps/site/playwright.config.ts @@ -1,4 +1,6 @@ -import { defineConfig, devices } from '@playwright/test'; +import { defineConfig, devices, type Config } from '@playwright/test'; + +import json from './package.json' with { type: 'json' }; const isCI = !!process.env.CI; @@ -10,11 +12,11 @@ export default defineConfig({ retries: isCI ? 2 : 0, workers: isCI ? 1 : undefined, reporter: isCI ? [['html'], ['github']] : [['html']], + ...getWebServerConfig(), use: { - baseURL: process.env.VERCEL_PREVIEW_URL || 'http://127.0.0.1:3000', + baseURL: process.env.PLAYWRIGHT_BASE_URL || 'http://127.0.0.1:3000', trace: 'on-first-retry', }, - projects: [ { name: 'chromium', @@ -30,3 +32,21 @@ export default defineConfig({ }, ], }); + +function getWebServerConfig(): Pick<Config, 'webServer'> { + if (!json.scripts['cloudflare:preview']) { + throw new Error('cloudflare:preview script not defined'); + } + + if (process.env.PLAYWRIGHT_RUN_CLOUDFLARE_PREVIEW) { + return { + webServer: { + command: 'pnpm turbo run cloudflare:preview', + url: process.env.PLAYWRIGHT_BASE_URL || 'http://127.0.0.1:3000', + timeout: 60_000 * 3, + }, + }; + } + + return {}; +} From 708e04e3ca783c9e9a4d4a6f0990dd2922921004 Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Sun, 1 Jun 2025 04:04:04 +0200 Subject: [PATCH 0504/1385] [automated]: crowdin sync (#7792) * 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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- apps/site/pages/ja/about/previous-releases.mdx | 2 +- packages/i18n/locales/fr.json | 6 ++++++ packages/i18n/locales/ja.json | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/site/pages/ja/about/previous-releases.mdx b/apps/site/pages/ja/about/previous-releases.mdx index 0ce3693f94f0e..afbd03ce87b87 100644 --- a/apps/site/pages/ja/about/previous-releases.mdx +++ b/apps/site/pages/ja/about/previous-releases.mdx @@ -15,7 +15,7 @@ Node.jsのリリーススケジュールに関する詳しい情報は[GitHub](h ### 商用サポート -メンテナンス期間を終了したバージョンの商用サポートは私たちのOpenJSエコシステム持続可能性プログラムのパートナーである[HeroDevs](https://herodevs.com/)を通して利用可能です。 +私たちのOpenJSエコシステム持続可能性プログラムのパートナーである[HeroDevs](https://www.herodevs.com/support/node-nes?utm_source=NodeJS+&utm_medium=Link&utm_campaign=Version_support_page)からメンテナンスを終了したバージョンの商用サポートを受けることができます。 ## 各バージョンの最新のリリース diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index 24935c15e22d1..f33ad358c39d6 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -94,6 +94,12 @@ "acceptInputFromTheCommandLineInNodejs": "Accepter des données provenant de la ligne de commande dans Node.js" } }, + "migrations": { + "links": { + "migrations": "Migrations des zones d'utilisation", + "introduction": "Introduction aux migrations des zones d'utilisation" + } + }, "modules": { "links": { "modules": "Modules", diff --git a/packages/i18n/locales/ja.json b/packages/i18n/locales/ja.json index 4e2d528fba27c..e023a8322f432 100644 --- a/packages/i18n/locales/ja.json +++ b/packages/i18n/locales/ja.json @@ -94,6 +94,12 @@ "acceptInputFromTheCommandLineInNodejs": "Node.jsでコマンドラインからの入力を受け取る" } }, + "migrations": { + "links": { + "migrations": "ユーザーランドの移行", + "introduction": "ユーザーランドの移行入門" + } + }, "modules": { "links": { "modules": "モジュール", From a6881bd4dc4de3d196b66d41c28aa5ea71773d6d Mon Sep 17 00:00:00 2001 From: Shubham2552 <73851276+Shubham2552@users.noreply.github.com> Date: Sun, 1 Jun 2025 07:46:41 +0530 Subject: [PATCH 0505/1385] chore(jsconf): re-add badge (#7784) * add back JSConf Badge * Update site.json Co-authored-by: Tierney Cyren <accounts@bnb.im> Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Aviv Keller <me@aviv.sh> Co-authored-by: Tierney Cyren <accounts@bnb.im> --- apps/site/site.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/site/site.json b/apps/site/site.json index 776f63fdeecae..03f162b12cb49 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -37,12 +37,12 @@ }, "websiteBadges": { "index": { - "startDate": "2025-05-06", - "endDate": "2025-05-31", + "startDate": "2025-04-01T00:00:00.000Z", + "endDate": "2025-07-01T00:00:00.000Z", "kind": "default", - "title": "Next-10 Survey", - "text": "We need your feedback to help us shape Node.js", - "link": "https://linuxfoundation.research.net/r/2025nodenext10" + "title": "JSConf", + "text": "Get your tickets now!", + "link": "https://events.linuxfoundation.org/jsconf-north-america" } } } From e9ec33a60f54512653a136fe677cd7e04d47c7dc Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 1 Jun 2025 06:18:10 -0400 Subject: [PATCH 0506/1385] chore(ui): simplify CodeBox-like UI components (#7793) * chore(ui): simplify CodeBox-like UI components * Apply suggestions from code review Co-authored-by: Claudio W. <cwunder@gnome.org> Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Claudio W. <cwunder@gnome.org> --- apps/site/components/Common/CodeBox.tsx | 21 ++++++-- apps/site/next.mdx.use.client.mjs | 2 +- .../Common/BaseCodeBox/index.module.css | 6 --- .../Common/BaseCodeBox/index.tsx | 25 +++------- .../Common/CodeTabs/index.stories.tsx | 3 +- .../ui-components/MDX/CodeTabs.tsx | 3 +- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 49 +++++++++++++++++-- 8 files changed, 72 insertions(+), 39 deletions(-) rename apps/site/components/MDX/CodeTabs/index.tsx => packages/ui-components/MDX/CodeTabs.tsx (94%) diff --git a/apps/site/components/Common/CodeBox.tsx b/apps/site/components/Common/CodeBox.tsx index 4b050cf5f9c8d..5d494fe825f3c 100644 --- a/apps/site/components/Common/CodeBox.tsx +++ b/apps/site/components/Common/CodeBox.tsx @@ -1,8 +1,10 @@ 'use client'; +import { CodeBracketIcon } from '@heroicons/react/24/outline'; import BaseCodeBox from '@node-core/ui-components/Common/BaseCodeBox'; +import styles from '@node-core/ui-components/Common/BaseCodeBox/index.module.css'; import { useTranslations } from 'next-intl'; -import type { FC, PropsWithChildren, ReactNode } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import Link from '#site/components/Link'; import { useCopyToClipboard, useNotification } from '#site/hooks'; @@ -18,17 +20,26 @@ const CodeBox: FC<PropsWithChildren<CodeBoxProps>> = props => { const notify = useNotification(); const t = useTranslations(); - const onCopy = (text: string, message: ReactNode) => { + const onCopy = (text: string) => { copyToClipboard(text); - notify({ duration: 300, message }); + + notify({ + duration: 300, + message: ( + <div className="flex items-center gap-3"> + <CodeBracketIcon className={styles.icon} /> + {t('components.common.codebox.copied')} + </div> + ), + }); }; + return ( <BaseCodeBox as={Link} onCopy={onCopy} {...props} - copyText={t('components.common.codebox.copy')} - copiedText={t('components.common.codebox.copied')} + buttonText={t('components.common.codebox.copy')} /> ); }; diff --git a/apps/site/next.mdx.use.client.mjs b/apps/site/next.mdx.use.client.mjs index ca3f20882f805..b9e0f64d0daa1 100644 --- a/apps/site/next.mdx.use.client.mjs +++ b/apps/site/next.mdx.use.client.mjs @@ -1,6 +1,7 @@ 'use strict'; import Blockquote from '@node-core/ui-components/Common/Blockquote'; +import MDXCodeTabs from '@node-core/ui-components/MDX/CodeTabs'; import Button from './components/Common/Button'; import DownloadButton from './components/Downloads/DownloadButton'; @@ -18,7 +19,6 @@ import ReleaseVersionDropdown from './components/Downloads/Release/VersionDropdo import Link from './components/Link'; import LinkWithArrow from './components/LinkWithArrow'; import MDXCodeBox from './components/MDX/CodeBox'; -import MDXCodeTabs from './components/MDX/CodeTabs'; import MDXImage from './components/MDX/Image'; import { ReleaseProvider } from './providers/releaseProvider'; diff --git a/packages/ui-components/Common/BaseCodeBox/index.module.css b/packages/ui-components/Common/BaseCodeBox/index.module.css index ab65233e66182..81be3797f71de 100644 --- a/packages/ui-components/Common/BaseCodeBox/index.module.css +++ b/packages/ui-components/Common/BaseCodeBox/index.module.css @@ -73,12 +73,6 @@ } } -.notification { - @apply flex - items-center - gap-3; -} - .icon { @apply size-4; } diff --git a/packages/ui-components/Common/BaseCodeBox/index.tsx b/packages/ui-components/Common/BaseCodeBox/index.tsx index c35fd7347ad9d..d6960aedc2d24 100644 --- a/packages/ui-components/Common/BaseCodeBox/index.tsx +++ b/packages/ui-components/Common/BaseCodeBox/index.tsx @@ -1,11 +1,8 @@ 'use client'; -import { - DocumentDuplicateIcon, - CodeBracketIcon, -} from '@heroicons/react/24/outline'; +import { DocumentDuplicateIcon } from '@heroicons/react/24/outline'; import classNames from 'classnames'; -import type { FC, PropsWithChildren, ReactElement, ReactNode } from 'react'; +import type { FC, PropsWithChildren, ReactElement } from 'react'; import { Fragment, isValidElement, useRef } from 'react'; import BaseButton from '#ui/Common/BaseButton'; @@ -69,10 +66,9 @@ const transformCode = <T extends ReactElement<PropsWithChildren>>( interface CodeBoxProps { language: string; className?: string; - onCopy: (text: string, message: ReactNode) => void; + onCopy: (text: string) => void; as?: LinkLike; - copyText: string; - copiedText: string; + buttonText: string; showCopyButton?: boolean; } @@ -81,8 +77,7 @@ const BaseCodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ language, className, onCopy, - copiedText, - copyText, + buttonText, as = 'a', showCopyButton = true, }: PropsWithChildren<CodeBoxProps>) => { @@ -91,13 +86,7 @@ const BaseCodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ const handleCopy = (): void => { const text = containerRef.current?.textContent; if (text) { - onCopy( - text, - <div className={styles.notification}> - <CodeBracketIcon className={styles.icon} /> - {copiedText} - </div> - ); + onCopy(text); } }; @@ -121,7 +110,7 @@ const BaseCodeBox: FC<PropsWithChildren<CodeBoxProps>> = ({ onClick={handleCopy} > <DocumentDuplicateIcon className={styles.icon} /> - {copyText} + {buttonText} </BaseButton> )} </div> diff --git a/packages/ui-components/Common/CodeTabs/index.stories.tsx b/packages/ui-components/Common/CodeTabs/index.stories.tsx index 55c6c43ac8974..bf96dcb28ea8a 100644 --- a/packages/ui-components/Common/CodeTabs/index.stories.tsx +++ b/packages/ui-components/Common/CodeTabs/index.stories.tsx @@ -40,8 +40,7 @@ server.listen(port, hostname, () => { const boxProps = { onCopy: console.log, - copyText: '[Copy Text]', - copiedText: '[Copied Text]', + buttonText: '[Button Text]', }; const TabsContent: FC = () => ( diff --git a/apps/site/components/MDX/CodeTabs/index.tsx b/packages/ui-components/MDX/CodeTabs.tsx similarity index 94% rename from apps/site/components/MDX/CodeTabs/index.tsx rename to packages/ui-components/MDX/CodeTabs.tsx index cebf603d2b37a..8728b460119f3 100644 --- a/apps/site/components/MDX/CodeTabs/index.tsx +++ b/packages/ui-components/MDX/CodeTabs.tsx @@ -1,7 +1,8 @@ -import CodeTabs from '@node-core/ui-components/Common/CodeTabs'; import * as TabsPrimitive from '@radix-ui/react-tabs'; import type { FC, ReactElement } from 'react'; +import CodeTabs from '#ui/Common/CodeTabs'; + type MDXCodeTabsProps = { children: Array<ReactElement<unknown>>; languages: string; diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index a61f6c129f9a2..fb0e2f1899731 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -38,7 +38,7 @@ "@radix-ui/react-label": "~2.1.2", "@radix-ui/react-select": "~2.2.2", "@radix-ui/react-separator": "~1.1.3", - "@radix-ui/react-tabs": "~1.1.3", + "@radix-ui/react-tabs": "~1.1.9", "@radix-ui/react-toast": "~1.2.6", "@radix-ui/react-tooltip": "~1.2.4", "@tailwindcss/postcss": "~4.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4527ae25e4222..1586b5a1e2322 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -347,7 +347,7 @@ importers: specifier: ~1.1.3 version: 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tabs': - specifier: ~1.1.3 + specifier: ~1.1.9 version: 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-toast': specifier: ~1.2.6 @@ -12826,7 +12826,7 @@ snapshots: tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-import-x: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -12854,17 +12854,28 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): + dependencies: + debug: 3.2.7 + optionalDependencies: + eslint: 9.26.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + optional: true + eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) @@ -12894,7 +12905,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12912,6 +12923,34 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.26.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + optional: true + eslint-plugin-jsx-a11y@6.10.2(eslint@9.26.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 From 345c7d19144bec7138956e6ae7f5b20cfa2e2450 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 1 Jun 2025 09:37:01 -0400 Subject: [PATCH 0507/1385] fix(ui): publish `MDX` components (#7802) Signed-off-by: Aviv Keller <me@aviv.sh> --- packages/ui-components/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index fb0e2f1899731..6923013847eea 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -13,6 +13,7 @@ "files": [ "Common", "Containers", + "MDX", "Icons", "styles", "types.ts", From 73ed14dd5ecc3132c62cfbd328f6209343807d93 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 1 Jun 2025 09:37:55 -0400 Subject: [PATCH 0508/1385] chore(codecov): remove checks (#7796) Signed-off-by: Aviv Keller <me@aviv.sh> --- codecov.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 codecov.yml diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000000000..35cde5cd5e854 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,4 @@ +coverage: + status: + project: off + patch: off From 79dc76991a4c35cbd47e62c12e8d3507e3d9a7c4 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 1 Jun 2025 09:46:10 -0400 Subject: [PATCH 0509/1385] feat(ui): add `DataTag` (#7797) * feat(ui): add CircularIcon * tw in story * Apply suggestions from code review Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Aviv Keller <me@aviv.sh> * fixup! * rename * code review * code review --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Caner Akdas <canerakdas@gmail.com> --- .../Common/DataTag/index.module.css | 52 +++++++++++++++++++ .../Common/DataTag/index.stories.tsx | 31 +++++++++++ .../ui-components/Common/DataTag/index.tsx | 37 +++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 packages/ui-components/Common/DataTag/index.module.css create mode 100644 packages/ui-components/Common/DataTag/index.stories.tsx create mode 100644 packages/ui-components/Common/DataTag/index.tsx diff --git a/packages/ui-components/Common/DataTag/index.module.css b/packages/ui-components/Common/DataTag/index.module.css new file mode 100644 index 0000000000000..1cf2a76d0d094 --- /dev/null +++ b/packages/ui-components/Common/DataTag/index.module.css @@ -0,0 +1,52 @@ +@reference "../../styles/index.css"; + +.dataTag { + @apply flex + items-center + justify-center + rounded-full + font-semibold + text-white; + + &.lg { + @apply size-12 + text-2xl; + } + + &.md { + @apply size-10 + text-xl; + } + + &.sm { + @apply size-8; + } + + &.event { + @apply bg-accent1-600; + } + + &.method { + @apply bg-info-600; + } + + &.property { + @apply bg-green-600; + } + + &.class { + @apply bg-warning-600; + } + + &.module { + @apply bg-red-600; + } + + &.classMethod { + @apply bg-blue-600; + } + + &.ctor { + @apply bg-accent2-600; + } +} diff --git a/packages/ui-components/Common/DataTag/index.stories.tsx b/packages/ui-components/Common/DataTag/index.stories.tsx new file mode 100644 index 0000000000000..2cbbf3f7f4364 --- /dev/null +++ b/packages/ui-components/Common/DataTag/index.stories.tsx @@ -0,0 +1,31 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import DataTag, { type DataTagProps } from '#ui/Common/DataTag'; + +type Story = StoryObj<typeof DataTag>; +type Meta = MetaObj<typeof DataTag>; + +export const DataTags: Story = { + render: () => ( + <div className="grid grid-cols-3 gap-6 p-6"> + {['event', 'method', 'property', 'class', 'module', 'classMethod', 'ctor'] + .map(kind => + ['sm', 'md', 'lg'].map(size => ( + <div + key={`${kind}-${size}`} + className="flex justify-center" + title={kind} + > + <DataTag + kind={kind as DataTagProps['kind']} + size={size as DataTagProps['size']} + /> + </div> + )) + ) + .flat()} + </div> + ), +}; + +export default { component: DataTag } as Meta; diff --git a/packages/ui-components/Common/DataTag/index.tsx b/packages/ui-components/Common/DataTag/index.tsx new file mode 100644 index 0000000000000..ad616fe9009e7 --- /dev/null +++ b/packages/ui-components/Common/DataTag/index.tsx @@ -0,0 +1,37 @@ +import classNames from 'classnames'; +import type { FC } from 'react'; + +import styles from './index.module.css'; + +export type DataTagProps = { + kind: + | 'event' + | 'method' + | 'property' + | 'class' + | 'module' + | 'classMethod' + | 'ctor'; + size?: 'lg' | 'md' | 'sm'; +}; + +// These symbols match up with the types used in +// node core, and the ones defined at +// https://github.com/nodejs/api-docs-tooling/blob/main/src/types.d.ts#L22 (`HeadingMetadataEntry['type']`) +const symbolMap = { + event: 'E', + method: 'M', + property: 'P', + class: 'C', + module: 'M', + classMethod: 'S', + ctor: 'C', +} as const; + +const DataTag: FC<DataTagProps> = ({ kind, size = 'md' }) => ( + <div className={classNames(styles.dataTag, styles[size], styles[kind])}> + <span>{symbolMap[kind]}</span> + </div> +); + +export default DataTag; From 71be0843d06de0924837b94fc6f55f1cb3cd4d1d Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 1 Jun 2025 10:21:04 -0400 Subject: [PATCH 0510/1385] fix(DataTag): add global (#7804) --- .../ui-components/Common/DataTag/index.module.css | 4 ++++ .../ui-components/Common/DataTag/index.stories.tsx | 11 ++++++++++- packages/ui-components/Common/DataTag/index.tsx | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/ui-components/Common/DataTag/index.module.css b/packages/ui-components/Common/DataTag/index.module.css index 1cf2a76d0d094..0cd6589553f77 100644 --- a/packages/ui-components/Common/DataTag/index.module.css +++ b/packages/ui-components/Common/DataTag/index.module.css @@ -49,4 +49,8 @@ &.ctor { @apply bg-accent2-600; } + + &.global { + @apply bg-amber-600; + } } diff --git a/packages/ui-components/Common/DataTag/index.stories.tsx b/packages/ui-components/Common/DataTag/index.stories.tsx index 2cbbf3f7f4364..6ccf3aecb72f1 100644 --- a/packages/ui-components/Common/DataTag/index.stories.tsx +++ b/packages/ui-components/Common/DataTag/index.stories.tsx @@ -8,7 +8,16 @@ type Meta = MetaObj<typeof DataTag>; export const DataTags: Story = { render: () => ( <div className="grid grid-cols-3 gap-6 p-6"> - {['event', 'method', 'property', 'class', 'module', 'classMethod', 'ctor'] + {[ + 'event', + 'method', + 'property', + 'class', + 'module', + 'classMethod', + 'ctor', + 'global', + ] .map(kind => ['sm', 'md', 'lg'].map(size => ( <div diff --git a/packages/ui-components/Common/DataTag/index.tsx b/packages/ui-components/Common/DataTag/index.tsx index ad616fe9009e7..be212e8378022 100644 --- a/packages/ui-components/Common/DataTag/index.tsx +++ b/packages/ui-components/Common/DataTag/index.tsx @@ -11,6 +11,7 @@ export type DataTagProps = { | 'class' | 'module' | 'classMethod' + | 'global' | 'ctor'; size?: 'lg' | 'md' | 'sm'; }; @@ -25,6 +26,7 @@ const symbolMap = { class: 'C', module: 'M', classMethod: 'S', + global: 'G', ctor: 'C', } as const; From c11af004c16d8d69811e071bc26dd7d3594dee4c Mon Sep 17 00:00:00 2001 From: Matt Cowley <me@mattcowley.co.uk> Date: Sun, 1 Jun 2025 21:11:49 +0100 Subject: [PATCH 0511/1385] fix(meta): downgrade pnpm to 10.8.1 (#7822) --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 808bcad2b1814..066ddf67256a0 100644 --- a/package.json +++ b/package.json @@ -47,14 +47,14 @@ "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.11" }, - "packageManager": "pnpm@10.10.0", + "packageManager": "pnpm@10.8.1", "engines": { "node": "v22" }, "devEngines": { "packageManager": { "name": "pnpm", - "version": "10.10.0" + "version": "10.8.1" } } } From 8e5d403dbd8a489b1fe9a277405138515c1d14a9 Mon Sep 17 00:00:00 2001 From: Matt Cowley <me@mattcowley.co.uk> Date: Mon, 2 Jun 2025 15:58:51 +0100 Subject: [PATCH 0512/1385] chore(meta): upgrade pnpm to 10.11.1 (#7828) --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 066ddf67256a0..836482bcc2d5e 100644 --- a/package.json +++ b/package.json @@ -47,14 +47,14 @@ "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.11" }, - "packageManager": "pnpm@10.8.1", + "packageManager": "pnpm@10.11.1", "engines": { "node": "v22" }, "devEngines": { "packageManager": { "name": "pnpm", - "version": "10.8.1" + "version": "10.11.1" } } } From b486a5a4b94b5e6f5c9790c0006b7baa9017d232 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Mon, 2 Jun 2025 12:36:57 -0400 Subject: [PATCH 0513/1385] chore(orama): translate search box (#7799) * chore(orama): translate search box * Apply suggestions from code review Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> --- apps/site/components/Common/Search/index.tsx | 9 +- apps/site/components/Common/Search/utils.ts | 17 +++ apps/site/package.json | 2 +- packages/i18n/locales/en.json | 17 ++- pnpm-lock.yaml | 125 +++++++++++++++---- 5 files changed, 137 insertions(+), 33 deletions(-) diff --git a/apps/site/components/Common/Search/index.tsx b/apps/site/components/Common/Search/index.tsx index 14a01db46a60d..0c12664b61826 100644 --- a/apps/site/components/Common/Search/index.tsx +++ b/apps/site/components/Common/Search/index.tsx @@ -21,7 +21,7 @@ type ResultMapDescription = { type ResultMapPath = { path: string; siteSection: string }; -import { themeConfig } from './utils'; +import { themeConfig, translationKeys } from './utils'; const uppercaseFirst = (word: string) => word.charAt(0).toUpperCase() + word.slice(1); @@ -63,9 +63,9 @@ const SearchButton: FC = () => { style={{ flexGrow: 1 }} colorScheme={colorScheme} themeConfig={themeConfig} - aria-label={t('components.search.searchBox.placeholder')} + aria-label={t('components.search.searchPlaceholder')} > - {t('components.search.searchBox.placeholder')} + {t('components.search.searchPlaceholder')} </OramaSearchButton> <OramaSearchBox @@ -82,6 +82,9 @@ const SearchButton: FC = () => { HTMLTag: 'b', CSSClass: 'font-bold', }} + dictionary={Object.fromEntries( + translationKeys.map(key => [key, t(`components.search.${key}`)]) + )} searchParams={DEFAULT_ORAMA_QUERY_PARAMS} suggestions={DEFAULT_ORAMA_SUGGESTIONS} chatMarkdownLinkHref={({ href }) => { diff --git a/apps/site/components/Common/Search/utils.ts b/apps/site/components/Common/Search/utils.ts index b2bcc8d802725..dca1281ad7154 100644 --- a/apps/site/components/Common/Search/utils.ts +++ b/apps/site/components/Common/Search/utils.ts @@ -41,3 +41,20 @@ export const themeConfig = { }, }, }; + +export const translationKeys = [ + 'searchPlaceholder', + 'chatPlaceholder', + 'noResultsFoundFor', + 'suggestions', + 'seeAll', + 'addMore', + 'clearChat', + 'errorMessage', + 'disclaimer', + 'startYourSearch', + 'initErrorSearch', + 'initErrorChat', + 'chatButtonLabel', + 'searchButtonLabel', +] as const; diff --git a/apps/site/package.json b/apps/site/package.json index e61c670b06f42..f8c1a98ffc694 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -37,7 +37,7 @@ "@opentelemetry/instrumentation": "~0.200.0", "@opentelemetry/resources": "~1.30.1", "@opentelemetry/sdk-logs": "~0.200.0", - "@orama/react-components": "^0.7.0", + "@orama/react-components": "^0.8.0", "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index aa91e44a3ad9e..446608b40ef35 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -238,9 +238,20 @@ "tableOfContents": "Table of Contents" }, "search": { - "searchBox": { - "placeholder": "Start typing..." - } + "searchPlaceholder": "Start typing...", + "chatPlaceholder": "Ask me anything", + "noResultsFoundFor": "No results found for", + "suggestions": "Suggestions", + "seeAll": "See all", + "addMore": "Add more", + "clearChat": "Clear chat", + "errorMessage": "An error occurred while trying to search. Please try again.", + "disclaimer": "AI summaries can make mistakes. Please verify the information.", + "startYourSearch": "Start your search", + "initErrorSearch": "Unable to initialize search service", + "initErrorChat": "Unable to initialize chat service", + "chatButtonLabel": "Get an AI summary", + "searchButtonLabel": "Search" }, "blog": { "blogHeader": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1586b5a1e2322..a0d57b888c104 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,8 +76,8 @@ importers: specifier: ~0.200.0 version: 0.200.0(@opentelemetry/api@1.9.0) '@orama/react-components': - specifier: ^0.7.0 - version: 0.7.0(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^0.8.0 + version: 0.8.0(@stencil/core@4.30.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@oramacloud/client': specifier: ^2.1.4 version: 2.1.4 @@ -2007,8 +2007,8 @@ packages: resolution: {integrity: sha512-s0OpmpQFSfMrmedAn9Lhg4KWJELHCU6uU9dtIJ28N8UGhf9Y55im5X8fEzwhwDwiSqN+ZPSNrDJF7ivf/AuRPQ==} engines: {node: '>=14'} - '@orama/core@0.1.5': - resolution: {integrity: sha512-BbRwGSR/rrlsF09sQ931Ee3IH5re3El23VplfmgZUKjiEqd0fjPdSbpybzEMybWDNp/0/UCG3OUs0HIiiFTWEg==} + '@orama/core@0.1.8': + resolution: {integrity: sha512-dVzUZsEJ/nnHyX+JjNO6KxTVY9bXV6YuEd+nJ5vDNn12S+cIobK3fSHdA4t2gI+2jVP9N67Ia5Uwxa8GNB743A==} '@orama/cuid2@2.2.3': resolution: {integrity: sha512-Lcak3chblMejdlSHgYU2lS2cdOhDpU6vkfIJH4m+YKvqQyLqs1bB8+w6NT1MG5bO12NUK2GFc34Mn2xshMIQ1g==} @@ -2020,8 +2020,8 @@ packages: resolution: {integrity: sha512-qtSrqCqRU93SjEBedz987tvWao1YQSELjBhGkHYGVP7Dg0lBWP6d+uZEIt5gxTAYio/YWWlhivmRABvRfPLmnQ==} engines: {node: '>= 16.0.0'} - '@orama/react-components@0.7.0': - resolution: {integrity: sha512-YAUkFwqKqYdL2Lh0VhQM+bQOx3vfZwxUurOX9+fS85/k+KIGPG18l5iDjWMAsA4WC96SEvV1xfSA67XMXEgwrA==} + '@orama/react-components@0.8.0': + resolution: {integrity: sha512-TVqjHS/Oa7EIe6srqu64DbkJshmotH0m+uGubV7hcUWHiABI8yQdYp1OhdLhsFNPnL+QnaaAh71yM5amBsJPNg==} peerDependencies: react: '>=17.0.0 <20.0.0' react-dom: '>=17.0.0 <20.0.0' @@ -2033,8 +2033,8 @@ packages: '@orama/orama': 3.1.6 '@oramacloud/client': ^2.1.1 - '@orama/wc-components@0.7.0': - resolution: {integrity: sha512-PuDxF4evv8al91lFLVDHC9i+ow4m4+p69WGEzCa/UhV5c7sifV4Bd4d7A0yATuyEJTuaQUtEtn4kM3EEfK994g==} + '@orama/wc-components@0.8.0': + resolution: {integrity: sha512-G0PUACezU7atmD8BlydqqUtIznOSfZ2rzf2oJ9jDfTtx4Nrzuo4mWdAOTqcsEZRxzIOjzgZkjLPJLFsOugfjqQ==} '@oramacloud/client@2.1.4': resolution: {integrity: sha512-uNPFs4wq/iOPbggCwTkVNbIr64Vfd7ZS/h+cricXVnzXWocjDTfJ3wLL4lr0qiSu41g8z+eCAGBqJ30RO2O4AA==} @@ -2484,6 +2484,46 @@ packages: '@reporters/github@1.7.2': resolution: {integrity: sha512-8mvTyKUxxDXkNIWfzv3FsHVwjr8JCwVtwidQws2neV6YgrsJW6OwTOBBhd01RKrDMXPxgpMQuFEfN9hRuUZGuA==} + '@rollup/rollup-darwin-arm64@4.34.9': + resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.34.9': + resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm64-gnu@4.34.9': + resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.34.9': + resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.34.9': + resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.34.9': + resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.34.9': + resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.34.9': + resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==} + cpu: [x64] + os: [win32] + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} @@ -2884,8 +2924,8 @@ packages: resolution: {integrity: sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==} engines: {node: '>=18.0.0'} - '@stencil/core@4.27.0': - resolution: {integrity: sha512-GOA+pvSpwL734yijTB8+LHesqPq3o/K6IaCrNoZybNVpe6lgVfvciDwPeP1XOj6JZpA/Lp8Uh3U9znoS8qgwOA==} + '@stencil/core@4.30.0': + resolution: {integrity: sha512-rInn2BaN3ISgtz+yfOeiTvAvY+xjz8g5v9hDtQMIP6uefjO6JHXGhUJw2CujnuEOWjYeVR/BYdZJTi0dWN9/vQ==} engines: {node: '>=16.0.0', npm: '>=7.10.0'} hasBin: true @@ -9947,7 +9987,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.32.0': {} - '@orama/core@0.1.5': + '@orama/core@0.1.8': dependencies: '@orama/cuid2': 2.2.3 dedent: 1.5.3 @@ -9964,10 +10004,10 @@ snapshots: '@orama/orama@3.1.6': {} - '@orama/react-components@0.7.0(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@orama/react-components@0.8.0(@stencil/core@4.30.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@orama/wc-components': 0.7.0 - '@stencil/react-output-target': 0.8.2(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@orama/wc-components': 0.8.0 + '@stencil/react-output-target': 0.8.2(@stencil/core@4.30.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -9975,22 +10015,22 @@ snapshots: - '@types/react' - babel-plugin-macros - '@orama/switch@3.1.6(@orama/core@0.1.5)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4)': + '@orama/switch@3.1.6(@orama/core@0.1.8)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4)': dependencies: - '@orama/core': 0.1.5 + '@orama/core': 0.1.8 '@orama/orama': 3.1.6 '@oramacloud/client': 2.1.4 - '@orama/wc-components@0.7.0': + '@orama/wc-components@0.8.0': dependencies: - '@orama/core': 0.1.5 + '@orama/core': 0.1.8 '@orama/highlight': 0.1.9 '@orama/orama': 3.1.6 - '@orama/switch': 3.1.6(@orama/core@0.1.5)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4) + '@orama/switch': 3.1.6(@orama/core@0.1.8)(@orama/orama@3.1.6)(@oramacloud/client@2.1.4) '@oramacloud/client': 2.1.4 '@phosphor-icons/webcomponents': 2.1.5 - '@stencil/core': 4.27.0 - '@stencil/store': 2.1.3(@stencil/core@4.27.0) + '@stencil/core': 4.30.0 + '@stencil/store': 2.1.3(@stencil/core@4.30.0) dompurify: 3.2.5 highlight.js: 11.11.1 markdown-it: 14.1.0 @@ -10422,6 +10462,30 @@ snapshots: '@actions/core': 1.11.1 stack-utils: 2.0.6 + '@rollup/rollup-darwin-arm64@4.34.9': + optional: true + + '@rollup/rollup-darwin-x64@4.34.9': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.34.9': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-x64-musl@4.34.9': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.34.9': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.34.9': + optional: true + '@rtsao/scc@1.1.0': {} '@rushstack/eslint-patch@1.11.0': {} @@ -11055,12 +11119,21 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 - '@stencil/core@4.27.0': {} + '@stencil/core@4.30.0': + optionalDependencies: + '@rollup/rollup-darwin-arm64': 4.34.9 + '@rollup/rollup-darwin-x64': 4.34.9 + '@rollup/rollup-linux-arm64-gnu': 4.34.9 + '@rollup/rollup-linux-arm64-musl': 4.34.9 + '@rollup/rollup-linux-x64-gnu': 4.34.9 + '@rollup/rollup-linux-x64-musl': 4.34.9 + '@rollup/rollup-win32-arm64-msvc': 4.34.9 + '@rollup/rollup-win32-x64-msvc': 4.34.9 - '@stencil/react-output-target@0.8.2(@stencil/core@4.27.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@stencil/react-output-target@0.8.2(@stencil/core@4.30.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@lit/react': 1.0.7(@types/react@19.1.2) - '@stencil/core': 4.27.0 + '@stencil/core': 4.30.0 html-react-parser: 5.2.3(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -11069,9 +11142,9 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@stencil/store@2.1.3(@stencil/core@4.27.0)': + '@stencil/store@2.1.3(@stencil/core@4.30.0)': dependencies: - '@stencil/core': 4.27.0 + '@stencil/core': 4.30.0 '@storybook/addon-controls@8.6.12(storybook@8.6.12(prettier@3.5.3))': dependencies: From e2d9739771fa283a05b58547e5f27d6053cd8386 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 3 Jun 2025 06:05:25 -0400 Subject: [PATCH 0514/1385] chore(chromatic): run on workflow changes (#7823) Signed-off-by: Aviv Keller <me@aviv.sh> --- .github/workflows/chromatic.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 35bf1207fe33e..e7f001ca8cccb 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -13,11 +13,13 @@ on: - main paths: - packages/ui-components/** + - .github/workflows/chromatic.yml pull_request_target: branches: - main paths: - packages/ui-components/** + - .github/workflows/chromatic.yml types: - labeled workflow_dispatch: From 65aa1da9dbc615439e60e1292c9ba6440562ee2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 06:05:36 -0400 Subject: [PATCH 0515/1385] meta: bump feed from 4.2.2 to 5.1.0 (#7821) Bumps [feed](https://github.com/jpmonette/feed) from 4.2.2 to 5.1.0. - [Release notes](https://github.com/jpmonette/feed/releases) - [Commits](https://github.com/jpmonette/feed/compare/4.2.2...5.1.0) --- updated-dependencies: - dependency-name: feed dependency-version: 5.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- pnpm-lock.yaml | 59 +++++++----------------------------------- 2 files changed, 11 insertions(+), 50 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index f8c1a98ffc694..d3c653376b89f 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -52,7 +52,7 @@ "@vercel/speed-insights": "~1.2.0", "classnames": "~2.5.1", "cross-env": "7.0.3", - "feed": "~4.2.2", + "feed": "~5.1.0", "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0d57b888c104..89514ddfc9bd8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -121,8 +121,8 @@ importers: specifier: 7.0.3 version: 7.0.3 feed: - specifier: ~4.2.2 - version: 4.2.2 + specifier: ~5.1.0 + version: 5.1.0 github-slugger: specifier: ~2.0.0 version: 2.0.0 @@ -4798,9 +4798,9 @@ packages: picomatch: optional: true - feed@4.2.2: - resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} - engines: {node: '>=0.4.0'} + feed@5.1.0: + resolution: {integrity: sha512-qGNhgYygnefSkAHHrNHqC7p3R8J0/xQDS/cYUud8er/qD9EFGWyCdUDfULHTJQN1d3H3WprzVwMc9MfB4J50Wg==} + engines: {node: '>=20', pnpm: '>=10'} file-entry-cache@10.0.8: resolution: {integrity: sha512-FGXHpfmI4XyzbLd3HQ8cbUcsFGohJpZtmQRHr8z8FxxtCe2PcpgIlVLwIgunqjvRmXypBETvwhV4ptJizA+Y1Q==} @@ -12899,7 +12899,7 @@ snapshots: tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-import-x: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -12927,27 +12927,16 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): - dependencies: - debug: 3.2.7 - optionalDependencies: - eslint: 9.26.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - optional: true eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: @@ -12978,7 +12967,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12996,34 +12985,6 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.26.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - optional: true - eslint-plugin-jsx-a11y@6.10.2(eslint@9.26.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 @@ -13384,7 +13345,7 @@ snapshots: optionalDependencies: picomatch: 4.0.2 - feed@4.2.2: + feed@5.1.0: dependencies: xml-js: 1.6.11 From 1ccb8ae3260e261531c3f44674b8a98ff8918c30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 10:06:21 +0000 Subject: [PATCH 0516/1385] meta: bump the mdx group with 4 updates (#7813) Bumps the mdx group with 4 updates: [@shikijs/core](https://github.com/shikijs/shiki/tree/HEAD/packages/core), [@shikijs/engine-javascript](https://github.com/shikijs/shiki/tree/HEAD/packages/engine-javascript), [shiki](https://github.com/shikijs/shiki/tree/HEAD/packages/shiki) and [remark-reading-time](https://github.com/mattjennings/remark-reading-time). Updates `@shikijs/core` from 3.3.0 to 3.4.2 - [Release notes](https://github.com/shikijs/shiki/releases) - [Commits](https://github.com/shikijs/shiki/commits/v3.4.2/packages/core) Updates `@shikijs/engine-javascript` from 3.3.0 to 3.4.2 - [Release notes](https://github.com/shikijs/shiki/releases) - [Commits](https://github.com/shikijs/shiki/commits/v3.4.2/packages/engine-javascript) Updates `shiki` from 3.3.0 to 3.4.2 - [Release notes](https://github.com/shikijs/shiki/releases) - [Commits](https://github.com/shikijs/shiki/commits/v3.4.2/packages/shiki) Updates `remark-reading-time` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/mattjennings/remark-reading-time/releases) - [Commits](https://github.com/mattjennings/remark-reading-time/compare/2.0.1...2.0.2) --- updated-dependencies: - dependency-name: "@shikijs/core" dependency-version: 3.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mdx - dependency-name: "@shikijs/engine-javascript" dependency-version: 3.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mdx - dependency-name: shiki dependency-version: 3.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mdx - dependency-name: remark-reading-time dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: mdx ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- packages/rehype-shiki/package.json | 6 +- pnpm-lock.yaml | 110 ++++++++++++++--------------- 3 files changed, 58 insertions(+), 60 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index d3c653376b89f..b818bc6a36572 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -66,7 +66,7 @@ "rehype-autolink-headings": "~7.1.0", "rehype-slug": "~6.0.0", "remark-gfm": "~4.0.1", - "remark-reading-time": "~2.0.1", + "remark-reading-time": "~2.0.2", "semver": "~7.7.1", "sval": "^0.6.3", "tailwindcss": "~4.0.17", diff --git a/packages/rehype-shiki/package.json b/packages/rehype-shiki/package.json index 09a03b003e373..ff94faba04cb9 100644 --- a/packages/rehype-shiki/package.json +++ b/packages/rehype-shiki/package.json @@ -11,11 +11,11 @@ "test:unit": "node --experimental-test-coverage --experimental-test-module-mocks --test \"**/*.test.mjs\"" }, "dependencies": { - "@shikijs/core": "^3.3.0", - "@shikijs/engine-javascript": "^3.3.0", + "@shikijs/core": "^3.4.2", + "@shikijs/engine-javascript": "^3.4.2", "classnames": "~2.5.1", "hast-util-to-string": "^3.0.1", - "shiki": "~3.3.0", + "shiki": "~3.4.2", "unist-util-visit": "^5.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89514ddfc9bd8..8c8d560a659b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,8 +163,8 @@ importers: specifier: ~4.0.1 version: 4.0.1 remark-reading-time: - specifier: ~2.0.1 - version: 2.0.1 + specifier: ~2.0.2 + version: 2.0.2 semver: specifier: ~7.7.1 version: 7.7.1 @@ -305,11 +305,11 @@ importers: packages/rehype-shiki: dependencies: '@shikijs/core': - specifier: ^3.3.0 - version: 3.3.0 + specifier: ^3.4.2 + version: 3.4.2 '@shikijs/engine-javascript': - specifier: ^3.3.0 - version: 3.3.0 + specifier: ^3.4.2 + version: 3.4.2 classnames: specifier: ~2.5.1 version: 2.5.1 @@ -317,8 +317,8 @@ importers: specifier: ^3.0.1 version: 3.0.1 shiki: - specifier: ~3.3.0 - version: 3.3.0 + specifier: ~3.4.2 + version: 3.4.2 unist-util-visit: specifier: ^5.0.0 version: 5.0.0 @@ -2536,38 +2536,38 @@ packages: '@shikijs/core@1.29.2': resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} - '@shikijs/core@3.3.0': - resolution: {integrity: sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ==} + '@shikijs/core@3.4.2': + resolution: {integrity: sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ==} '@shikijs/engine-javascript@1.29.2': resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} - '@shikijs/engine-javascript@3.3.0': - resolution: {integrity: sha512-XlhnFGv0glq7pfsoN0KyBCz9FJU678LZdQ2LqlIdAj6JKsg5xpYKay3DkazXWExp3DTJJK9rMOuGzU2911pg7Q==} + '@shikijs/engine-javascript@3.4.2': + resolution: {integrity: sha512-1/adJbSMBOkpScCE/SB6XkjJU17ANln3Wky7lOmrnpl+zBdQ1qXUJg2GXTYVHRq+2j3hd1DesmElTXYDgtfSOQ==} '@shikijs/engine-oniguruma@1.29.2': resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} - '@shikijs/engine-oniguruma@3.3.0': - resolution: {integrity: sha512-l0vIw+GxeNU7uGnsu6B+Crpeqf+WTQ2Va71cHb5ZYWEVEPdfYwY5kXwYqRJwHrxz9WH+pjSpXQz+TJgAsrkA5A==} + '@shikijs/engine-oniguruma@3.4.2': + resolution: {integrity: sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==} '@shikijs/langs@1.29.2': resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} - '@shikijs/langs@3.3.0': - resolution: {integrity: sha512-zt6Kf/7XpBQKSI9eqku+arLkAcDQ3NHJO6zFjiChI8w0Oz6Jjjay7pToottjQGjSDCFk++R85643WbyINcuL+g==} + '@shikijs/langs@3.4.2': + resolution: {integrity: sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==} '@shikijs/themes@1.29.2': resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} - '@shikijs/themes@3.3.0': - resolution: {integrity: sha512-tXeCvLXBnqq34B0YZUEaAD1lD4lmN6TOHAhnHacj4Owh7Ptb/rf5XCDeROZt2rEOk5yuka3OOW2zLqClV7/SOg==} + '@shikijs/themes@3.4.2': + resolution: {integrity: sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==} '@shikijs/types@1.29.2': resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} - '@shikijs/types@3.3.0': - resolution: {integrity: sha512-KPCGnHG6k06QG/2pnYGbFtFvpVJmC3uIpXrAiPrawETifujPBv0Se2oUxm5qYgjCvGJS9InKvjytOdN+bGuX+Q==} + '@shikijs/types@3.4.2': + resolution: {integrity: sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -4680,9 +4680,8 @@ packages: estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - estree-util-value-to-estree@1.3.0: - resolution: {integrity: sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==} - engines: {node: '>=12.0.0'} + estree-util-value-to-estree@3.4.0: + resolution: {integrity: sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==} estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} @@ -5350,10 +5349,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -6559,6 +6554,9 @@ packages: property-information@7.0.0: resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -6875,8 +6873,8 @@ packages: remark-preset-lint-recommended@7.0.1: resolution: {integrity: sha512-j1CY5u48PtZl872BQ40uWSQMT3R4gXKp0FUgevMu5gW7hFMtvaCiDq+BfhzeR8XKKiW9nIMZGfIMZHostz5X4g==} - remark-reading-time@2.0.1: - resolution: {integrity: sha512-fy4BKy9SRhtYbEHvp6AItbRTnrhiDGbqLQTSYVbQPGuRCncU1ubSsh9p/W5QZSxtYcUXv8KGL0xBgPLyNJA1xw==} + remark-reading-time@2.0.2: + resolution: {integrity: sha512-ILjIuR0dQQ8pELPgaFvz7ralcSN62rD/L1pTUJgWb4gfua3ZwYEI8mnKGxEQCbrXSUF/OvycTkcUbifGOtOn5A==} remark-rehype@11.1.2: resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} @@ -7043,8 +7041,8 @@ packages: shiki@1.29.2: resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} - shiki@3.3.0: - resolution: {integrity: sha512-j0Z1tG5vlOFGW8JVj0Cpuatzvshes7VJy5ncDmmMaYcmnGW0Js1N81TOW98ivTFNZfKRn9uwEg/aIm638o368g==} + shiki@3.4.2: + resolution: {integrity: sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -10501,9 +10499,9 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/core@3.3.0': + '@shikijs/core@3.4.2': dependencies: - '@shikijs/types': 3.3.0 + '@shikijs/types': 3.4.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 @@ -10514,9 +10512,9 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 2.3.0 - '@shikijs/engine-javascript@3.3.0': + '@shikijs/engine-javascript@3.4.2': dependencies: - '@shikijs/types': 3.3.0 + '@shikijs/types': 3.4.2 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 @@ -10525,33 +10523,33 @@ snapshots: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.3.0': + '@shikijs/engine-oniguruma@3.4.2': dependencies: - '@shikijs/types': 3.3.0 + '@shikijs/types': 3.4.2 '@shikijs/vscode-textmate': 10.0.2 '@shikijs/langs@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/langs@3.3.0': + '@shikijs/langs@3.4.2': dependencies: - '@shikijs/types': 3.3.0 + '@shikijs/types': 3.4.2 '@shikijs/themes@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/themes@3.3.0': + '@shikijs/themes@3.4.2': dependencies: - '@shikijs/types': 3.3.0 + '@shikijs/types': 3.4.2 '@shikijs/types@1.29.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.3.0': + '@shikijs/types@3.4.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -13163,9 +13161,9 @@ snapshots: astring: 1.9.0 source-map: 0.7.4 - estree-util-value-to-estree@1.3.0: + estree-util-value-to-estree@3.4.0: dependencies: - is-plain-obj: 3.0.0 + '@types/estree': 1.0.7 estree-util-visit@2.0.0: dependencies: @@ -13677,7 +13675,7 @@ snapshots: hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.0 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 @@ -13980,8 +13978,6 @@ snapshots: is-number@7.0.0: {} - is-plain-obj@3.0.0: {} - is-plain-obj@4.1.0: {} is-plain-object@5.0.0: {} @@ -15387,6 +15383,8 @@ snapshots: property-information@7.0.0: {} + property-information@7.1.0: {} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -16076,10 +16074,10 @@ snapshots: transitivePeerDependencies: - supports-color - remark-reading-time@2.0.1: + remark-reading-time@2.0.2: dependencies: estree-util-is-identifier-name: 2.1.0 - estree-util-value-to-estree: 1.3.0 + estree-util-value-to-estree: 3.4.0 reading-time: 1.5.0 unist-util-visit: 3.1.0 @@ -16346,14 +16344,14 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shiki@3.3.0: + shiki@3.4.2: dependencies: - '@shikijs/core': 3.3.0 - '@shikijs/engine-javascript': 3.3.0 - '@shikijs/engine-oniguruma': 3.3.0 - '@shikijs/langs': 3.3.0 - '@shikijs/themes': 3.3.0 - '@shikijs/types': 3.3.0 + '@shikijs/core': 3.4.2 + '@shikijs/engine-javascript': 3.4.2 + '@shikijs/engine-oniguruma': 3.4.2 + '@shikijs/langs': 3.4.2 + '@shikijs/themes': 3.4.2 + '@shikijs/types': 3.4.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 From 8d40ab18244525be54e73968c130884191ec178a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 10:06:59 +0000 Subject: [PATCH 0517/1385] meta: bump the storybook group with 7 updates (#7817) * meta: bump the storybook group with 7 updates Bumps the storybook group with 7 updates: | Package | From | To | | --- | --- | --- | | [@storybook/addon-controls](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/controls) | `8.6.12` | `9.0.3` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.6.12` | `8.6.14` | | [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `8.6.12` | `8.6.14` | | [@storybook/addon-viewport](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/viewports) | `8.6.12` | `8.6.14` | | [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/code/renderers/react) | `8.6.12` | `8.6.14` | | [@storybook/react-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-webpack5) | `8.6.12` | `8.6.14` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core) | `8.6.12` | `8.6.14` | Updates `@storybook/addon-controls` from 8.6.12 to 9.0.3 - [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/v9.0.3/code/addons/controls) Updates `@storybook/addon-interactions` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.14/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/addons/interactions) Updates `@storybook/addon-themes` from 8.6.12 to 8.6.14 - [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.6.14/code/addons/themes) Updates `@storybook/addon-viewport` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/addons/viewports) Updates `@storybook/react` from 8.6.12 to 8.6.14 - [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.6.14/code/renderers/react) Updates `@storybook/react-webpack5` from 8.6.12 to 8.6.14 - [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.6.14/code/frameworks/react-webpack5) Updates `storybook` from 8.6.12 to 8.6.14 - [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.6.14/code/core) --- updated-dependencies: - dependency-name: "@storybook/addon-controls" dependency-version: 9.0.3 dependency-type: direct:development update-type: version-update:semver-major dependency-group: storybook - dependency-name: "@storybook/addon-interactions" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-themes" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-viewport" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/react" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/react-webpack5" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: storybook dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook ... Signed-off-by: dependabot[bot] <support@github.com> * update storybook to v9 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: avivkeller <me@aviv.sh> --- packages/ui-components/.storybook/main.ts | 3 - packages/ui-components/.storybook/preview.tsx | 5 +- packages/ui-components/package.json | 13 +- pnpm-lock.yaml | 478 ++++-------------- 4 files changed, 117 insertions(+), 382 deletions(-) diff --git a/packages/ui-components/.storybook/main.ts b/packages/ui-components/.storybook/main.ts index 1ac7275cd2df8..5580f40838c5b 100644 --- a/packages/ui-components/.storybook/main.ts +++ b/packages/ui-components/.storybook/main.ts @@ -9,10 +9,7 @@ const config: StorybookConfig = { 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: { diff --git a/packages/ui-components/.storybook/preview.tsx b/packages/ui-components/.storybook/preview.tsx index 09aae8acad918..895f14998d3f5 100644 --- a/packages/ui-components/.storybook/preview.tsx +++ b/packages/ui-components/.storybook/preview.tsx @@ -23,7 +23,10 @@ const preview: Preview = { defaultTheme: 'light', attributeName: 'data-theme', }), - ], + // TODO(@avivkeller): Once storybook fixes their types + // this can be removed, since `withThemeByDataAttribute` + // will return the same type that is accepted by `Preview` + ] as Preview['decorators'], }; export default preview; diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 6923013847eea..5d8a9c21d4230 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -49,25 +49,22 @@ "tailwindcss": "~4.0.17" }, "devDependencies": { - "@storybook/addon-controls": "^8.6.12", - "@storybook/addon-interactions": "^8.6.12", + "@storybook/addon-themes": "^9.0.3", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.12", - "@storybook/addon-viewport": "^8.6.12", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", - "@storybook/react": "^8.6.12", - "@storybook/react-webpack5": "^8.6.12", + "@storybook/react": "^9.0.3", + "@storybook/react-webpack5": "^9.0.3", "@testing-library/user-event": "~14.6.1", "@types/node": "22.15.3", "@types/react": "^19.1.0", "cross-env": "^7.0.3", "css-loader": "~7.1.2", "eslint-plugin-react": "~7.37.4", - "eslint-plugin-storybook": "~0.12.0", + "eslint-plugin-storybook": "~9.0.3", "global-jsdom": "^26.0.0", "postcss-loader": "~8.1.1", "react": "^19.1.0", - "storybook": "^8.6.11", + "storybook": "^9.0.3", "style-loader": "~4.0.0", "stylelint": "^16.19.1", "stylelint-config-standard": "^38.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c8d560a659b1..fc4fca01df1ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -371,30 +371,21 @@ importers: specifier: ~4.0.17 version: 4.0.17 devDependencies: - '@storybook/addon-controls': - specifier: ^8.6.12 - version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) - '@storybook/addon-interactions': - specifier: ^8.6.12 - version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) '@storybook/addon-styling-webpack': specifier: ^1.0.1 - version: 1.0.1(storybook@8.6.12(prettier@3.5.3))(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) + version: 1.0.1(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) '@storybook/addon-themes': - specifier: ^8.6.12 - version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) - '@storybook/addon-viewport': - specifier: ^8.6.12 - version: 8.6.12(storybook@8.6.12(prettier@3.5.3)) + specifier: ^9.0.3 + version: 9.0.3(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3)) '@storybook/addon-webpack5-compiler-swc': specifier: ^3.0.0 version: 3.0.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) '@storybook/react': - specifier: ^8.6.12 - version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + specifier: ^9.0.3 + version: 9.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) '@storybook/react-webpack5': - specifier: ^8.6.12 - version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + specifier: ^9.0.3 + version: 9.0.3(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) '@testing-library/user-event': specifier: ~14.6.1 version: 14.6.1(@testing-library/dom@10.4.0) @@ -414,8 +405,8 @@ importers: specifier: ~7.37.4 version: 7.37.5(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-storybook: - specifier: ~0.12.0 - version: 0.12.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~9.0.3 + version: 9.0.3(eslint@9.26.0(jiti@2.4.2))(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) global-jsdom: specifier: ^26.0.0 version: 26.0.0(jsdom@26.1.0) @@ -426,8 +417,8 @@ importers: specifier: ^19.1.0 version: 19.1.0 storybook: - specifier: ^8.6.11 - version: 8.6.12(prettier@3.5.3) + specifier: ^9.0.3 + version: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) style-loader: specifier: ~4.0.0 version: 4.0.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) @@ -2942,150 +2933,91 @@ packages: peerDependencies: '@stencil/core': '>=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0' - '@storybook/addon-controls@8.6.12': - resolution: {integrity: sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-interactions@8.6.12': - resolution: {integrity: sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==} - peerDependencies: - storybook: ^8.6.12 - '@storybook/addon-styling-webpack@1.0.1': resolution: {integrity: sha512-5n+SXPfMTc4m7sWaJWPWjoHYWc6/B111M2Ia55toQ3GV4ON4vVlTgH9FX+EgCkDticElj99HLTMDJkHRj2yvkg==} peerDependencies: webpack: ^5.0.0 - '@storybook/addon-themes@8.6.12': - resolution: {integrity: sha512-eqE40MUKTz9lLEOusXjRuDC7DwCSIwlgEnlbvhhEEme8IeKf2di6yvlhenY4nn5QfkUwY1POnZxfJ2OpXj0gqQ==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-viewport@8.6.12': - resolution: {integrity: sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==} + '@storybook/addon-themes@9.0.3': + resolution: {integrity: sha512-uOpNqGiVfPUBMZTeEyBQ0y18OVtHmpQpg12ARImXMUb+bEOhSao34kcHZalYk4PTWADv1hMATkxSAuYrCqXgHQ==} peerDependencies: - storybook: ^8.6.12 + storybook: ^9.0.3 '@storybook/addon-webpack5-compiler-swc@3.0.0': resolution: {integrity: sha512-qkQwQEvHlxwPCHz/xakGfXJusEa1gKMw7enELh6QGopblfN3rMiV084boqiIqBReqWTasSwHOqvuElAu0NQ+8w==} engines: {node: '>=18'} - '@storybook/builder-webpack5@8.6.12': - resolution: {integrity: sha512-Z7RsQ/1+HbxdbM69JrEFcTL+pnVKUTMmeURMn5/eOvYTGjBtM18vbQTj0LjCUDIjC+v9U+uX8ZJEUVxFbGcxBw==} + '@storybook/builder-webpack5@9.0.3': + resolution: {integrity: sha512-R+UPZBTjYwSt0jqkew93basRbYwiRdD41NbM9Y1USvUbSFWr8/WmhiQuoriOrb2MF3IoPfbTrhsZ7fq3yyRnEg==} peerDependencies: - storybook: ^8.6.12 + storybook: ^9.0.3 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@storybook/components@8.6.12': - resolution: {integrity: sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==} + '@storybook/core-webpack@9.0.3': + resolution: {integrity: sha512-ze/rdV/UD60csk9Ofk+HFdiEPyjI8CKx+XBraEZ5aFzoISK7rn/oVyDqGkJzwJj9tZUeJgrYcVXDFB1DvW6grA==} peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/core-webpack@8.6.12': - resolution: {integrity: sha512-TiE+KOm0hxb/p0JxeGHKxqTNX+xnTOFsBh6uloCSuvodutJ5pR/XpxKVxwo1gtSc0Uq3qpgbMhW6qYlYQetnKA==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/core@8.6.12': - resolution: {integrity: sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==} - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - - '@storybook/csf@0.1.13': - resolution: {integrity: sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==} + storybook: ^9.0.3 '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/instrumenter@8.6.12': - resolution: {integrity: sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/manager-api@8.6.12': - resolution: {integrity: sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==} + '@storybook/node-logger@8.6.14': + resolution: {integrity: sha512-/H67NMvc9hDOaNgVragsHaeXQ5JzwAQfyx1QeL4vlx2SPGoWXmxpoRXZTpOJRaNOhKlYh6sDj/3Lx2xOH5IxnQ==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/node-logger@8.6.12': - resolution: {integrity: sha512-Jk7mQWsu60BptBwYJAd69kMmsEqBAbGDuA/fqban+8vfNiSKgR3PRkhis0DsGEk53bpAEfbkCcyvYRCrrq4M3Q==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/preset-react-webpack@8.6.12': - resolution: {integrity: sha512-aCCHjR/jsVPVThRH7nK70wS0Od44M6hqkkakg3xr7LETZZGj99heen6t4VHvz8gcQYT9l6R/oZwCl7f/PQ3ZBQ==} - engines: {node: '>=18.0.0'} + '@storybook/preset-react-webpack@9.0.3': + resolution: {integrity: sha512-RaGbJl06VsmjxwyeRCLgQTbA12+cLPSyFBYLmRghxh8rZP/6ZhIFpOumiQWMygiPv+sZFfofZWCqNRK4bItiWQ==} + engines: {node: '>=20.0.0'} 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.6.12 + storybook: ^9.0.3 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@storybook/preview-api@8.6.12': - resolution: {integrity: sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} peerDependencies: typescript: '>= 4.x' webpack: '>= 4' - '@storybook/react-dom-shim@8.6.12': - resolution: {integrity: sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==} + '@storybook/react-dom-shim@9.0.3': + resolution: {integrity: sha512-Vp7dlKcuRmLgIrEsG1fG1qu2WWk8WMUC9C769CqzuBzJpGhTxXrujlnwIEHpXMP2sz6fqE7udhmMhLePXq7DTg==} 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.6.12 + storybook: ^9.0.3 - '@storybook/react-webpack5@8.6.12': - resolution: {integrity: sha512-wZOjPQ00gu85iQoKgwz5uvM3+bhXrQDVR0ppVAj7vVy6cvLEsJXmqNLHbXPCZuKPmvwzYr1QkslMLCIkF8OGdA==} - engines: {node: '>=18.0.0'} + '@storybook/react-webpack5@9.0.3': + resolution: {integrity: sha512-Vc3wsMFjdZqTFOZNHC6Lmoxv4cpcRmEFJcG1yQUZQONG4mp1qYkWxD3M+gXFEYiVtDFFlN1BxrxQV00Qga0Q5g==} + engines: {node: '>=20.0.0'} 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.6.12 - typescript: '>= 4.2.x' + storybook: ^9.0.3 + typescript: '>= 4.9.x' peerDependenciesMeta: typescript: optional: true - '@storybook/react@8.6.12': - resolution: {integrity: sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==} - engines: {node: '>=18.0.0'} + '@storybook/react@9.0.3': + resolution: {integrity: sha512-zdPqc+zdnrrzQxJWAOTgwfS8GYgEGOjQrgNiLHn+LzlMblf1gGWwBXGpRSPIHRCu3smjwRHTBUIcplJJsZjKYw==} + engines: {node: '>=20.0.0'} peerDependencies: - '@storybook/test': 8.6.12 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.6.12 - typescript: '>= 4.2.x' + storybook: ^9.0.3 + typescript: '>= 4.9.x' peerDependenciesMeta: - '@storybook/test': - optional: true typescript: optional: true - '@storybook/test@8.6.12': - resolution: {integrity: sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/theming@8.6.12': - resolution: {integrity: sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@swc/core-darwin-arm64@1.11.24': resolution: {integrity: sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA==} engines: {node: '>=10'} @@ -3256,8 +3188,8 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.5.0': - resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + '@testing-library/jest-dom@6.6.3': + resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@testing-library/react@16.3.0': @@ -3275,12 +3207,6 @@ packages: '@types/react-dom': optional: true - '@testing-library/user-event@14.5.2': - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - '@testing-library/user-event@14.6.1': resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} engines: {node: '>=12', npm: '>=6'} @@ -3591,23 +3517,17 @@ packages: vue-router: optional: true - '@vitest/expect@2.0.5': - resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + '@vitest/expect@3.0.9': + resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} - '@vitest/pretty-format@2.0.5': - resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + '@vitest/pretty-format@3.0.9': + resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} - '@vitest/pretty-format@2.1.9': - resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + '@vitest/spy@3.0.9': + resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} - '@vitest/spy@2.0.5': - resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - - '@vitest/utils@2.0.5': - resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - - '@vitest/utils@2.1.9': - resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + '@vitest/utils@3.0.9': + resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -3894,9 +3814,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browser-assert@1.2.1: - resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - browserslist@4.24.5: resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -4071,9 +3988,6 @@ packages: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - content-disposition@1.0.0: resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} engines: {node: '>= 0.6'} @@ -4605,11 +4519,12 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-storybook@0.12.0: - resolution: {integrity: sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==} - engines: {node: '>= 18'} + eslint-plugin-storybook@9.0.3: + resolution: {integrity: sha512-O71l6X5x/moGzq81Ka0280Ukz5WU8FtmtCXB4H0eXfW8m2mmy0DJmrVtvs9rbzXQkW8MNoHbCj3yffVMDWWNiw==} + engines: {node: '>=20.0.0'} peerDependencies: eslint: '>=8' + storybook: ^9.0.3 eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} @@ -5238,10 +5153,6 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-arguments@1.2.0: - resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} - engines: {node: '>= 0.4'} - is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -5455,10 +5366,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} - engines: {node: '>=12.0.0'} - jsdom@26.1.0: resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} engines: {node: '>=18'} @@ -5698,9 +5605,6 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -5806,9 +5710,6 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} @@ -6369,10 +6270,6 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} - possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -6532,10 +6429,6 @@ packages: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -6565,9 +6458,6 @@ packages: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -7143,8 +7033,8 @@ packages: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} - storybook@8.6.12: - resolution: {integrity: sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==} + storybook@9.0.3: + resolution: {integrity: sha512-AAWWN4FjKUCausMJKPieQTY85McFHU8MQbnWFySRASzmMN8vqD+/IaCiO2dPwaH1D2DQokYXgzPzQtoLKaEPMA==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -7393,8 +7283,8 @@ packages: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} tinyspy@3.0.2: @@ -7506,10 +7396,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - type-fest@3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} @@ -7651,10 +7537,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - urlpattern-polyfill@10.0.0: resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} @@ -7694,9 +7576,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} @@ -11144,39 +11023,18 @@ snapshots: dependencies: '@stencil/core': 4.30.0 - '@storybook/addon-controls@8.6.12(storybook@8.6.12(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - dequal: 2.0.3 - storybook: 8.6.12(prettier@3.5.3) - ts-dedent: 2.2.0 - - '@storybook/addon-interactions@8.6.12(storybook@8.6.12(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.12(storybook@8.6.12(prettier@3.5.3)) - '@storybook/test': 8.6.12(storybook@8.6.12(prettier@3.5.3)) - polished: 4.3.1 - storybook: 8.6.12(prettier@3.5.3) - ts-dedent: 2.2.0 - - '@storybook/addon-styling-webpack@1.0.1(storybook@8.6.12(prettier@3.5.3))(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3))': + '@storybook/addon-styling-webpack@1.0.1(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3))': dependencies: - '@storybook/node-logger': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/node-logger': 8.6.14(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3)) webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) transitivePeerDependencies: - storybook - '@storybook/addon-themes@8.6.12(storybook@8.6.12(prettier@3.5.3))': + '@storybook/addon-themes@9.0.3(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))': dependencies: - storybook: 8.6.12(prettier@3.5.3) + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-viewport@8.6.12(storybook@8.6.12(prettier@3.5.3))': - dependencies: - memoizerific: 1.11.3 - storybook: 8.6.12(prettier@3.5.3) - '@storybook/addon-webpack5-compiler-swc@3.0.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3))': dependencies: '@swc/core': 1.11.24 @@ -11185,29 +11043,20 @@ snapshots: - '@swc/helpers' - webpack - '@storybook/builder-webpack5@8.6.12(@swc/core@1.11.24)(esbuild@0.25.3)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/builder-webpack5@9.0.3(@swc/core@1.11.24)(esbuild@0.25.3)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)': dependencies: - '@storybook/core-webpack': 8.6.12(storybook@8.6.12(prettier@3.5.3)) - '@types/semver': 7.7.0 - browser-assert: 1.2.1 + '@storybook/core-webpack': 9.0.3(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3)) case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.3 - constants-browserify: 1.0.0 css-loader: 6.11.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) es-module-lexer: 1.7.0 fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) html-webpack-plugin: 5.6.3(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) magic-string: 0.30.17 - path-browserify: 1.0.1 - process: 0.11.10 - semver: 7.7.1 - storybook: 8.6.12(prettier@3.5.3) + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) style-loader: 3.3.4(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) terser-webpack-plugin: 5.3.14(@swc/core@1.11.24)(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) ts-dedent: 2.2.0 - url: 0.11.4 - util: 0.12.5 - util-deprecate: 1.0.2 webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) webpack-dev-middleware: 6.1.3(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) webpack-hot-middleware: 2.26.1 @@ -11221,60 +11070,20 @@ snapshots: - uglify-js - webpack-cli - '@storybook/components@8.6.12(storybook@8.6.12(prettier@3.5.3))': - dependencies: - storybook: 8.6.12(prettier@3.5.3) - - '@storybook/core-webpack@8.6.12(storybook@8.6.12(prettier@3.5.3))': + '@storybook/core-webpack@9.0.3(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))': dependencies: - storybook: 8.6.12(prettier@3.5.3) + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/core@8.6.12(prettier@3.5.3)(storybook@8.6.12(prettier@3.5.3))': - dependencies: - '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@3.5.3)) - better-opn: 3.0.2 - browser-assert: 1.2.1 - esbuild: 0.25.3 - esbuild-register: 3.6.0(esbuild@0.25.3) - jsdoc-type-pratt-parser: 4.1.0 - process: 0.11.10 - recast: 0.23.11 - semver: 7.7.1 - util: 0.12.5 - ws: 8.18.1 - optionalDependencies: - prettier: 3.5.3 - transitivePeerDependencies: - - bufferutil - - storybook - - supports-color - - utf-8-validate - - '@storybook/csf@0.1.13': - dependencies: - type-fest: 2.19.0 - '@storybook/global@5.0.0': {} - '@storybook/instrumenter@8.6.12(storybook@8.6.12(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.9 - storybook: 8.6.12(prettier@3.5.3) - - '@storybook/manager-api@8.6.12(storybook@8.6.12(prettier@3.5.3))': + '@storybook/node-logger@8.6.14(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))': dependencies: - storybook: 8.6.12(prettier@3.5.3) + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) - '@storybook/node-logger@8.6.12(storybook@8.6.12(prettier@3.5.3))': + '@storybook/preset-react-webpack@9.0.3(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)': dependencies: - storybook: 8.6.12(prettier@3.5.3) - - '@storybook/preset-react-webpack@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': - dependencies: - '@storybook/core-webpack': 8.6.12(storybook@8.6.12(prettier@3.5.3)) - '@storybook/react': 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + '@storybook/core-webpack': 9.0.3(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3)) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) '@types/semver': 7.7.0 find-up: 5.0.0 @@ -11284,23 +11093,18 @@ snapshots: react-dom: 19.1.0(react@19.1.0) resolve: 1.22.10 semver: 7.7.1 - storybook: 8.6.12(prettier@3.5.3) + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) tsconfig-paths: 4.2.0 webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: - - '@storybook/test' - '@swc/core' - esbuild - supports-color - uglify-js - webpack-cli - '@storybook/preview-api@8.6.12(storybook@8.6.12(prettier@3.5.3))': - dependencies: - storybook: 8.6.12(prettier@3.5.3) - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3))': dependencies: debug: 4.4.0 @@ -11315,61 +11119,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))': + '@storybook/react-dom-shim@9.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))': dependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 8.6.12(prettier@3.5.3) + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) - '@storybook/react-webpack5@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/react-webpack5@9.0.3(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)': dependencies: - '@storybook/builder-webpack5': 8.6.12(@swc/core@1.11.24)(esbuild@0.25.3)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) - '@storybook/preset-react-webpack': 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) - '@storybook/react': 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + '@storybook/builder-webpack5': 9.0.3(@swc/core@1.11.24)(esbuild@0.25.3)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) + '@storybook/preset-react-webpack': 9.0.3(@swc/core@1.11.24)(esbuild@0.25.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) + '@storybook/react': 9.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 8.6.12(prettier@3.5.3) + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: - '@rspack/core' - - '@storybook/test' - '@swc/core' - esbuild - supports-color - uglify-js - webpack-cli - '@storybook/react@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/react@9.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)': dependencies: - '@storybook/components': 8.6.12(storybook@8.6.12(prettier@3.5.3)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.12(storybook@8.6.12(prettier@3.5.3)) - '@storybook/preview-api': 8.6.12(storybook@8.6.12(prettier@3.5.3)) - '@storybook/react-dom-shim': 8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@3.5.3)) - '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/react-dom-shim': 9.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3)) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 8.6.12(prettier@3.5.3) + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) optionalDependencies: - '@storybook/test': 8.6.12(storybook@8.6.12(prettier@3.5.3)) typescript: 5.8.3 - '@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.12(storybook@8.6.12(prettier@3.5.3)) - '@testing-library/dom': 10.4.0 - '@testing-library/jest-dom': 6.5.0 - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) - '@vitest/expect': 2.0.5 - '@vitest/spy': 2.0.5 - storybook: 8.6.12(prettier@3.5.3) - - '@storybook/theming@8.6.12(storybook@8.6.12(prettier@3.5.3))': - dependencies: - storybook: 8.6.12(prettier@3.5.3) - '@swc/core-darwin-arm64@1.11.24': optional: true @@ -11503,7 +11286,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.5.0': + '@testing-library/jest-dom@6.6.3': dependencies: '@adobe/css-tools': 4.4.2 aria-query: 5.3.2 @@ -11522,10 +11305,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': - dependencies: - '@testing-library/dom': 10.4.0 - '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': dependencies: '@testing-library/dom': 10.4.0 @@ -11800,37 +11579,26 @@ snapshots: next: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 - '@vitest/expect@2.0.5': + '@vitest/expect@3.0.9': dependencies: - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 chai: 5.2.0 - tinyrainbow: 1.2.0 - - '@vitest/pretty-format@2.0.5': - dependencies: - tinyrainbow: 1.2.0 + tinyrainbow: 2.0.0 - '@vitest/pretty-format@2.1.9': + '@vitest/pretty-format@3.0.9': dependencies: - tinyrainbow: 1.2.0 + tinyrainbow: 2.0.0 - '@vitest/spy@2.0.5': + '@vitest/spy@3.0.9': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.0.5': - dependencies: - '@vitest/pretty-format': 2.0.5 - estree-walker: 3.0.3 - loupe: 3.1.3 - tinyrainbow: 1.2.0 - - '@vitest/utils@2.1.9': + '@vitest/utils@3.0.9': dependencies: - '@vitest/pretty-format': 2.1.9 + '@vitest/pretty-format': 3.0.9 loupe: 3.1.3 - tinyrainbow: 1.2.0 + tinyrainbow: 2.0.0 '@webassemblyjs/ast@1.14.1': dependencies: @@ -12145,8 +11913,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browser-assert@1.2.1: {} - browserslist@4.24.5: dependencies: caniuse-lite: 1.0.30001716 @@ -12316,8 +12082,6 @@ snapshots: readable-stream: 3.6.2 typedarray: 0.0.6 - constants-browserify@1.0.0: {} - content-disposition@1.0.0: dependencies: safe-buffer: 5.2.1 @@ -13047,12 +12811,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-storybook@0.12.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): + eslint-plugin-storybook@9.0.3(eslint@9.26.0(jiti@2.4.2))(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3): dependencies: - '@storybook/csf': 0.1.13 '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.26.0(jiti@2.4.2) - ts-dedent: 2.2.0 + storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) transitivePeerDependencies: - supports-color - typescript @@ -13874,11 +13637,6 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-arguments@1.2.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -14079,8 +13837,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsdoc-type-pratt-parser@4.1.0: {} - jsdom@26.1.0: dependencies: cssstyle: 4.3.1 @@ -14324,8 +14080,6 @@ snapshots: dependencies: semver: 6.3.1 - map-or-similar@1.5.0: {} - markdown-extensions@2.0.0: {} markdown-it@14.1.0: @@ -14562,10 +14316,6 @@ snapshots: dependencies: fs-monkey: 1.0.6 - memoizerific@1.11.3: - dependencies: - map-or-similar: 1.5.0 - meow@13.2.0: {} merge-descriptors@2.0.0: {} @@ -15264,10 +15014,6 @@ snapshots: pluralize@8.0.0: {} - polished@4.3.1: - dependencies: - '@babel/runtime': 7.27.1 - possible-typed-array-names@1.1.0: {} postcss-bem-linter@4.0.1(postcss@8.5.3): @@ -15366,8 +15112,6 @@ snapshots: proc-log@4.2.0: {} - process@0.11.10: {} - promise-inflight@1.0.1: {} promise-retry@2.0.1: @@ -15392,8 +15136,6 @@ snapshots: punycode.js@2.3.1: {} - punycode@1.4.1: {} - punycode@2.3.1: {} qs@6.13.0: @@ -16458,12 +16200,23 @@ snapshots: stoppable@1.1.0: {} - storybook@8.6.12(prettier@3.5.3): + storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3): dependencies: - '@storybook/core': 8.6.12(prettier@3.5.3)(storybook@8.6.12(prettier@3.5.3)) + '@storybook/global': 5.0.0 + '@testing-library/jest-dom': 6.6.3 + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) + '@vitest/expect': 3.0.9 + '@vitest/spy': 3.0.9 + better-opn: 3.0.2 + esbuild: 0.25.3 + esbuild-register: 3.6.0(esbuild@0.25.3) + recast: 0.23.11 + semver: 7.7.1 + ws: 8.18.1 optionalDependencies: prettier: 3.5.3 transitivePeerDependencies: + - '@testing-library/dom' - bufferutil - supports-color - utf-8-validate @@ -16755,7 +16508,7 @@ snapshots: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 - tinyrainbow@1.2.0: {} + tinyrainbow@2.0.0: {} tinyspy@3.0.2: {} @@ -16853,8 +16606,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@2.19.0: {} - type-fest@3.13.1: {} type-is@2.0.1: @@ -17107,11 +16858,6 @@ snapshots: dependencies: punycode: 2.3.1 - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.14.0 - urlpattern-polyfill@10.0.0: {} use-callback-ref@1.3.3(@types/react@19.1.2)(react@19.1.0): @@ -17144,14 +16890,6 @@ snapshots: util-deprecate@1.0.2: {} - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.2.0 - is-generator-function: 1.1.0 - is-typed-array: 1.1.15 - which-typed-array: 1.1.19 - utila@0.4.0: {} utils-merge@1.0.1: {} From 31c31c9e3d61d76150eae83e7d2385b86cfdef71 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 06:14:21 -0400 Subject: [PATCH 0518/1385] meta: bump the radix group with 10 updates (#7815) Bumps the radix group with 10 updates: | Package | From | To | | --- | --- | --- | | [@radix-ui/react-avatar](https://github.com/radix-ui/primitives) | `1.1.9` | `1.1.10` | | [@radix-ui/react-dialog](https://github.com/radix-ui/primitives) | `1.1.11` | `1.1.14` | | [@radix-ui/react-dropdown-menu](https://github.com/radix-ui/primitives) | `2.1.12` | `2.1.15` | | [@radix-ui/react-label](https://github.com/radix-ui/primitives) | `2.1.4` | `2.1.7` | | [@radix-ui/react-select](https://github.com/radix-ui/primitives) | `2.2.2` | `2.2.5` | | [@radix-ui/react-separator](https://github.com/radix-ui/primitives) | `1.1.4` | `1.1.7` | | [@radix-ui/react-tabs](https://github.com/radix-ui/primitives) | `1.1.9` | `1.1.12` | | [@radix-ui/react-toast](https://github.com/radix-ui/primitives) | `1.2.11` | `1.2.14` | | [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives) | `1.2.4` | `1.2.7` | | [@radix-ui/react-slot](https://github.com/radix-ui/primitives) | `1.2.2` | `1.2.3` | Updates `@radix-ui/react-avatar` from 1.1.9 to 1.1.10 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-dialog` from 1.1.11 to 1.1.14 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-dropdown-menu` from 2.1.12 to 2.1.15 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-label` from 2.1.4 to 2.1.7 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-select` from 2.2.2 to 2.2.5 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-separator` from 1.1.4 to 1.1.7 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-tabs` from 1.1.9 to 1.1.12 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-toast` from 1.2.11 to 1.2.14 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-tooltip` from 1.2.4 to 1.2.7 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-slot` from 1.2.2 to 1.2.3 - [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-avatar" dependency-version: 1.1.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-dialog" dependency-version: 1.1.14 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-dropdown-menu" dependency-version: 2.1.15 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-label" dependency-version: 2.1.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-select" dependency-version: 2.2.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-separator" dependency-version: 1.1.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-tabs" dependency-version: 1.1.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-toast" dependency-version: 1.2.14 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-tooltip" dependency-version: 1.2.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix - dependency-name: "@radix-ui/react-slot" dependency-version: 1.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: radix ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 8 +- packages/ui-components/package.json | 18 +- pnpm-lock.yaml | 359 +++++++++++++--------------- 3 files changed, 174 insertions(+), 211 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index b818bc6a36572..977f580818684 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -39,10 +39,10 @@ "@opentelemetry/sdk-logs": "~0.200.0", "@orama/react-components": "^0.8.0", "@oramacloud/client": "^2.1.4", - "@radix-ui/react-slot": "^1.1.2", - "@radix-ui/react-tabs": "^1.1.3", - "@radix-ui/react-toast": "^1.2.6", - "@radix-ui/react-tooltip": "^1.2.4", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tabs": "^1.1.12", + "@radix-ui/react-toast": "^1.2.14", + "@radix-ui/react-tooltip": "^1.2.7", "@tailwindcss/postcss": "~4.1.5", "@types/node": "22.15.3", "@types/react": "^19.1.0", diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 5d8a9c21d4230..77aa520cbe706 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -33,15 +33,15 @@ }, "dependencies": { "@heroicons/react": "^2.2.0", - "@radix-ui/react-avatar": "^1.1.9", - "@radix-ui/react-dialog": "^1.1.7", - "@radix-ui/react-dropdown-menu": "~2.1.6", - "@radix-ui/react-label": "~2.1.2", - "@radix-ui/react-select": "~2.2.2", - "@radix-ui/react-separator": "~1.1.3", - "@radix-ui/react-tabs": "~1.1.9", - "@radix-ui/react-toast": "~1.2.6", - "@radix-ui/react-tooltip": "~1.2.4", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-dropdown-menu": "~2.1.15", + "@radix-ui/react-label": "~2.1.7", + "@radix-ui/react-select": "~2.2.5", + "@radix-ui/react-separator": "~1.1.7", + "@radix-ui/react-tabs": "~1.1.12", + "@radix-ui/react-toast": "~1.2.14", + "@radix-ui/react-tooltip": "~1.2.7", "@tailwindcss/postcss": "~4.1.5", "@vcarl/remark-headings": "~0.1.0", "classnames": "~2.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc4fca01df1ee..f443b21bba9dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -82,17 +82,17 @@ importers: specifier: ^2.1.4 version: 2.1.4 '@radix-ui/react-slot': - specifier: ^1.1.2 - version: 1.2.2(@types/react@19.1.2)(react@19.1.0) + specifier: ^1.2.3 + version: 1.2.3(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-tabs': - specifier: ^1.1.3 - version: 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.1.12 + version: 1.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-toast': - specifier: ^1.2.6 - version: 1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.2.14 + version: 1.2.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tooltip': - specifier: ^1.2.4 - version: 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.2.7 + version: 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tailwindcss/postcss': specifier: ~4.1.5 version: 4.1.5 @@ -329,32 +329,32 @@ importers: specifier: ^2.2.0 version: 2.2.0(react@19.1.0) '@radix-ui/react-avatar': - specifier: ^1.1.9 - version: 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.1.10 + version: 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-dialog': - specifier: ^1.1.7 - version: 1.1.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.1.14 + version: 1.1.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-dropdown-menu': - specifier: ~2.1.6 - version: 2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~2.1.15 + version: 2.1.15(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-label': - specifier: ~2.1.2 - version: 2.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~2.1.7 + version: 2.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-select': - specifier: ~2.2.2 - version: 2.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~2.2.5 + version: 2.2.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-separator': - specifier: ~1.1.3 - version: 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~1.1.7 + version: 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tabs': - specifier: ~1.1.9 - version: 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~1.1.12 + version: 1.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-toast': - specifier: ~1.2.6 - version: 1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~1.2.14 + version: 1.2.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tooltip': - specifier: ~1.2.4 - version: 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ~1.2.7 + version: 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tailwindcss/postcss': specifier: ~4.1.5 version: 4.1.5 @@ -1475,14 +1475,14 @@ packages: resolution: {integrity: sha512-8Nq96CtZD+NHRbHl9yooHIclCDhQx3Ayg+H6P4OlapdcalZq7NQ7YRN7BIF+UVNX/uFHZiE+IZwdKVr2gR+8mA==} hasBin: true - '@floating-ui/core@1.7.0': - resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==} + '@floating-ui/core@1.7.1': + resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==} - '@floating-ui/dom@1.7.0': - resolution: {integrity: sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==} + '@floating-ui/dom@1.7.1': + resolution: {integrity: sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==} - '@floating-ui/react-dom@2.1.2': - resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + '@floating-ui/react-dom@2.1.3': + resolution: {integrity: sha512-huMBfiU9UnQ2oBwIhgzyIiSpVgvlDstU8CX0AF+wS+KzmYMs0J2a3GwuFHV1Lz+jlrQGeC1fF+Nv0QoumyV0bA==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -2052,8 +2052,8 @@ packages: '@radix-ui/primitive@1.1.2': resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} - '@radix-ui/react-arrow@1.1.4': - resolution: {integrity: sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==} + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2065,8 +2065,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-avatar@1.1.9': - resolution: {integrity: sha512-10tQokfvZdFvnvDkcOJPjm2pWiP8A0R4T83MoD7tb15bC/k2GU7B1YBuzJi8lNQ8V1QqhP8ocNqp27ByZaNagQ==} + '@radix-ui/react-avatar@1.1.10': + resolution: {integrity: sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2078,8 +2078,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collection@1.1.4': - resolution: {integrity: sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg==} + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2109,8 +2109,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.1.11': - resolution: {integrity: sha512-yI7S1ipkP5/+99qhSI6nthfo/tR6bL6Zgxi/+1UO6qPa6UeM6nlafWcQ65vB4rU2XjgjMfMhI3k9Y5MztA62VQ==} + '@radix-ui/react-dialog@1.1.14': + resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2131,8 +2131,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.7': - resolution: {integrity: sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==} + '@radix-ui/react-dismissable-layer@1.1.10': + resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2144,8 +2144,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-dropdown-menu@2.1.12': - resolution: {integrity: sha512-VJoMs+BWWE7YhzEQyVwvF9n22Eiyr83HotCVrMQzla/OwRovXCgah7AcaEr4hMNj4gJxSdtIbcHGvmJXOoJVHA==} + '@radix-ui/react-dropdown-menu@2.1.15': + resolution: {integrity: sha512-mIBnOjgwo9AH3FyKaSWoSu/dYj6VdhJ7frEPiGTeXCdUFHjl9h3mFh2wwhEtINOmYXWhdpf1rY2minFsmaNgVQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2166,8 +2166,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-scope@1.1.4': - resolution: {integrity: sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==} + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2188,8 +2188,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-label@2.1.4': - resolution: {integrity: sha512-wy3dqizZnZVV4ja0FNnUhIWNwWdoldXrneEyUcVtLYDAt8ovGS4ridtMAOGgXBBIfggL4BOveVWsjXDORdGEQg==} + '@radix-ui/react-label@2.1.7': + resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2201,8 +2201,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-menu@2.1.12': - resolution: {integrity: sha512-+qYq6LfbiGo97Zz9fioX83HCiIYYFNs8zAsVCMQrIakoNYylIzWuoD/anAD3UzvvR6cnswmfRFJFq/zYYq/k7Q==} + '@radix-ui/react-menu@2.1.15': + resolution: {integrity: sha512-tVlmA3Vb9n8SZSd+YSbuFR66l87Wiy4du+YE+0hzKQEANA+7cWKH1WgqcEX4pXqxUFQKrWQGHdvEfw00TjFiew==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2214,8 +2214,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.4': - resolution: {integrity: sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==} + '@radix-ui/react-popper@1.2.7': + resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2227,8 +2227,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.1.6': - resolution: {integrity: sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==} + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2253,8 +2253,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.1.0': - resolution: {integrity: sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==} + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2266,8 +2266,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.1.2': - resolution: {integrity: sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==} + '@radix-ui/react-roving-focus@1.1.10': + resolution: {integrity: sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2279,8 +2279,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.7': - resolution: {integrity: sha512-C6oAg451/fQT3EGbWHbCQjYTtbyjNO1uzQgMzwyivcHT3GKNEmu1q3UuREhN+HzHAVtv3ivMVK08QlC+PkYw9Q==} + '@radix-ui/react-select@2.2.5': + resolution: {integrity: sha512-HnMTdXEVuuyzx63ME0ut4+sEMYW6oouHWNGUZc7ddvUWIcfCva/AMoqEW/3wnEllriMWBa0RHspCYnfCWJQYmA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2292,8 +2292,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-select@2.2.2': - resolution: {integrity: sha512-HjkVHtBkuq+r3zUAZ/CvNWUGKPfuicGDbgtZgiQuFmNcV5F+Tgy24ep2nsAW2nFgvhGPJVqeBZa6KyVN0EyrBA==} + '@radix-ui/react-separator@1.1.7': + resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2305,30 +2305,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-separator@1.1.4': - resolution: {integrity: sha512-2fTm6PSiUm8YPq9W0E4reYuv01EE3aFSzt8edBiXqPHshF8N9+Kymt/k0/R+F3dkY5lQyB/zPtrP82phskLi7w==} - 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 - - '@radix-ui/react-slot@1.2.0': - resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-slot@1.2.2': - resolution: {integrity: sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==} + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2336,8 +2314,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-tabs@1.1.9': - resolution: {integrity: sha512-KIjtwciYvquiW/wAFkELZCVnaNLBsYNhTNcvl+zfMAbMhRkcvNuCLXDDd22L0j7tagpzVh/QwbFpwAATg7ILPw==} + '@radix-ui/react-tabs@1.1.12': + resolution: {integrity: sha512-GTVAlRVrQrSw3cEARM0nAx73ixrWDPNZAruETn3oHCNP6SbZ/hNxdxp+u7VkIEv3/sFoLq1PfcHrl7Pnp0CDpw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2349,8 +2327,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toast@1.2.11': - resolution: {integrity: sha512-Ed2mlOmT+tktOsu2NZBK1bCSHh/uqULu1vWOkpQTVq53EoOuZUZw7FInQoDB3uil5wZc2oe0XN9a7uVZB7/6AQ==} + '@radix-ui/react-toast@1.2.14': + resolution: {integrity: sha512-nAP5FBxBJGQ/YfUB+r+O6USFVkWq3gAInkxyEnmvEV5jtSbfDhfa4hwX8CraCnbjMLsE7XSf/K75l9xXY7joWg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2362,8 +2340,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.2.4': - resolution: {integrity: sha512-DyW8VVeeMSSLFvAmnVnCwvI3H+1tpJFHT50r+tdOoMse9XqYDBCcyux8u3G2y+LOpt7fPQ6KKH0mhs+ce1+Z5w==} + '@radix-ui/react-tooltip@1.2.7': + resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2456,8 +2434,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-visually-hidden@1.2.0': - resolution: {integrity: sha512-rQj0aAWOpCdCMRbI6pLQm8r7S2BM3YhTa0SzOYD55k+hJA8oo9J+H+9wLM9oMlZWOX/wJWPTzfDfmZkf7LvCfg==} + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3683,8 +3661,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} aria-query@5.3.0: @@ -6520,8 +6498,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.6.3: - resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + react-remove-scroll@2.7.1: + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} engines: {node: '>=10'} peerDependencies: '@types/react': '*' @@ -9321,18 +9299,18 @@ snapshots: '@flarelabs-net/wrangler-build-time-fs-assets-polyfilling@0.0.0': {} - '@floating-ui/core@1.7.0': + '@floating-ui/core@1.7.1': dependencies: '@floating-ui/utils': 0.2.9 - '@floating-ui/dom@1.7.0': + '@floating-ui/dom@1.7.1': dependencies: - '@floating-ui/core': 1.7.0 + '@floating-ui/core': 1.7.1 '@floating-ui/utils': 0.2.9 - '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react-dom@2.1.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@floating-ui/dom': 1.7.0 + '@floating-ui/dom': 1.7.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -9941,18 +9919,18 @@ snapshots: '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-arrow@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-arrow@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-avatar@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-avatar@1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) @@ -9961,12 +9939,12 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-collection@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: @@ -9984,24 +9962,24 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-dialog@1.1.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dialog@1.1.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - aria-hidden: 1.2.4 + aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.2)(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 @@ -10011,11 +9989,11 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-dismissable-layer@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 @@ -10023,14 +10001,14 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-dropdown-menu@2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dropdown-menu@2.1.15(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-menu': 2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-menu': 2.1.15(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -10043,10 +10021,10 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-focus-scope@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -10060,46 +10038,46 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-label@2.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-label@2.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-menu@2.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-menu@2.1.15(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - aria-hidden: 1.2.4 + aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.2)(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-popper@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-popper@1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@floating-ui/react-dom': 2.1.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0) @@ -10110,9 +10088,9 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-portal@1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -10128,31 +10106,23 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-primitive@2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-primitive@2.1.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/react-slot': 1.2.2(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - optionalDependencies: - '@types/react': 19.1.2 - - '@radix-ui/react-roving-focus@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-roving-focus@1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 @@ -10160,104 +10130,97 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-select@2.2.2(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-select@2.2.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - aria-hidden: 1.2.4 + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.2)(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-separator@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-separator@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-slot@1.2.0(@types/react@19.1.2)(react@19.1.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - react: 19.1.0 - optionalDependencies: - '@types/react': 19.1.2 - - '@radix-ui/react-slot@1.2.2(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-slot@1.2.3(@types/react@19.1.2)(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-tabs@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tabs@1.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-toast@1.2.11(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toast@1.2.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-tooltip@1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tooltip@1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.6(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: @@ -10324,9 +10287,9 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - '@radix-ui/react-visually-hidden@1.2.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: @@ -11761,7 +11724,7 @@ snapshots: argparse@2.0.1: {} - aria-hidden@1.2.4: + aria-hidden@1.2.6: dependencies: tslib: 2.8.1 @@ -15201,7 +15164,7 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - react-remove-scroll@2.6.3(@types/react@19.1.2)(react@19.1.0): + react-remove-scroll@2.7.1(@types/react@19.1.2)(react@19.1.0): dependencies: react: 19.1.0 react-remove-scroll-bar: 2.3.8(@types/react@19.1.2)(react@19.1.0) From 02b3e5a5bccb6e0af17a114ceb4d0639b4f163f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 06:20:09 -0400 Subject: [PATCH 0519/1385] meta: bump semver from 7.7.1 to 7.7.2 (#7820) Bumps [semver](https://github.com/npm/node-semver) from 7.7.1 to 7.7.2. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v7.7.1...v7.7.2) --- updated-dependencies: - dependency-name: semver dependency-version: 7.7.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- pnpm-lock.yaml | 58 +++++++++++++++++++++++------------------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 977f580818684..a371fde4e8dd0 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -67,7 +67,7 @@ "rehype-slug": "~6.0.0", "remark-gfm": "~4.0.1", "remark-reading-time": "~2.0.2", - "semver": "~7.7.1", + "semver": "~7.7.2", "sval": "^0.6.3", "tailwindcss": "~4.0.17", "vfile": "~6.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f443b21bba9dc..34e2f74bb8417 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -166,8 +166,8 @@ importers: specifier: ~2.0.2 version: 2.0.2 semver: - specifier: ~7.7.1 - version: 7.7.1 + specifier: ~7.7.2 + version: 7.7.2 sval: specifier: ^0.6.3 version: 0.6.7 @@ -866,6 +866,10 @@ packages: resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.27.4': + resolution: {integrity: sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.1': resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==} engines: {node: '>=6.9.0'} @@ -6859,8 +6863,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true @@ -8916,6 +8920,8 @@ snapshots: '@babel/runtime@7.27.1': {} + '@babel/runtime@7.27.4': {} + '@babel/template@7.27.1': dependencies: '@babel/code-frame': 7.27.1 @@ -9687,7 +9693,7 @@ snapshots: dependencies: '@nodevu/parsefiles': 0.0.3 luxon: 3.6.1 - semver: 7.7.1 + semver: 7.7.2 '@nodevu/parsefiles@0.0.3': {} @@ -9701,7 +9707,7 @@ snapshots: ini: 4.1.3 nopt: 7.2.1 proc-log: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 walk-up-path: 3.0.1 transitivePeerDependencies: - bluebird @@ -9715,7 +9721,7 @@ snapshots: proc-log: 4.2.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 which: 4.0.0 transitivePeerDependencies: - bluebird @@ -9737,7 +9743,7 @@ snapshots: json-parse-even-better-errors: 3.0.2 normalize-package-data: 6.0.2 proc-log: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - bluebird @@ -11055,7 +11061,7 @@ snapshots: react-docgen: 7.1.1 react-dom: 19.1.0(react@19.1.0) resolve: 1.22.10 - semver: 7.7.1 + semver: 7.7.2 storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) tsconfig-paths: 4.2.0 webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) @@ -11241,7 +11247,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.27.4 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -11440,7 +11446,7 @@ snapshots: fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.1 + semver: 7.7.2 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -12102,7 +12108,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.3) postcss-modules-values: 4.0.0(postcss@8.5.3) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) @@ -12115,7 +12121,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.3) postcss-modules-values: 4.0.0(postcss@8.5.3) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) @@ -12673,7 +12679,7 @@ snapshots: get-tsconfig: 4.10.0 is-glob: 4.0.3 minimatch: 10.0.1 - semver: 7.7.1 + semver: 7.7.2 stable-hash: 0.0.5 tslib: 2.8.1 unrs-resolver: 1.7.2 @@ -13152,7 +13158,7 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.7.1 + semver: 7.7.2 tapable: 2.2.1 typescript: 5.8.3 webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) @@ -13636,7 +13642,7 @@ snapshots: is-bun-module@2.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 is-callable@1.2.7: {} @@ -14712,14 +14718,14 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} npm-install-checks@6.3.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 npm-normalize-package-bin@3.0.1: {} @@ -14727,7 +14733,7 @@ snapshots: dependencies: hosted-git-info: 7.0.2 proc-log: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-name: 5.0.1 npm-pick-manifest@9.1.0: @@ -14735,7 +14741,7 @@ snapshots: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 11.0.3 - semver: 7.7.1 + semver: 7.7.2 npm-run-path@4.0.1: dependencies: @@ -14996,7 +15002,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.7(@swc/core@1.11.24)(esbuild@0.25.3) transitivePeerDependencies: @@ -15753,7 +15759,7 @@ snapshots: remark-lint-table-pipes: 5.0.1 remark-lint-unordered-list-marker-style: 4.0.1 remark-preset-lint-recommended: 7.0.1 - semver: 7.7.1 + semver: 7.7.2 unified-lint-rule: 3.0.1 unist-util-visit: 5.0.0 transitivePeerDependencies: @@ -15922,7 +15928,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.1: {} + semver@7.7.2: {} send@1.2.0: dependencies: @@ -15981,7 +15987,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.4 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -16008,7 +16014,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.4 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.1 '@img/sharp-darwin-x64': 0.34.1 @@ -16174,7 +16180,7 @@ snapshots: esbuild: 0.25.3 esbuild-register: 3.6.0(esbuild@0.25.3) recast: 0.23.11 - semver: 7.7.1 + semver: 7.7.2 ws: 8.18.1 optionalDependencies: prettier: 3.5.3 From 23f195d7d72e3651ff23da791e2f997015a34433 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 06:36:15 -0400 Subject: [PATCH 0520/1385] meta: bump the styling group with 2 updates (#7818) Bumps the styling group with 2 updates: [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) and [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss). Updates `prettier-plugin-tailwindcss` from 0.6.11 to 0.6.12 - [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.11...v0.6.12) Updates `@tailwindcss/postcss` from 4.1.5 to 4.1.8 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.8/packages/@tailwindcss-postcss) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-version: 0.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: styling - dependency-name: "@tailwindcss/postcss" dependency-version: 4.1.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: styling ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- package.json | 2 +- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 340 +++++++++++++++++----------- 4 files changed, 217 insertions(+), 129 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index a371fde4e8dd0..c96dfc5326955 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -43,7 +43,7 @@ "@radix-ui/react-tabs": "^1.1.12", "@radix-ui/react-toast": "^1.2.14", "@radix-ui/react-tooltip": "^1.2.7", - "@tailwindcss/postcss": "~4.1.5", + "@tailwindcss/postcss": "~4.1.8", "@types/node": "22.15.3", "@types/react": "^19.1.0", "@vcarl/remark-headings": "~0.1.0", diff --git a/package.json b/package.json index 836482bcc2d5e..77c2891901886 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "~9.26.0", "eslint-plugin-import-x": "~4.11.0", "prettier": "3.5.3", - "prettier-plugin-tailwindcss": "0.6.11" + "prettier-plugin-tailwindcss": "0.6.12" }, "packageManager": "pnpm@10.11.1", "engines": { diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 77aa520cbe706..33d8ace3f13ee 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -42,7 +42,7 @@ "@radix-ui/react-tabs": "~1.1.12", "@radix-ui/react-toast": "~1.2.14", "@radix-ui/react-tooltip": "~1.2.7", - "@tailwindcss/postcss": "~4.1.5", + "@tailwindcss/postcss": "~4.1.8", "@vcarl/remark-headings": "~0.1.0", "classnames": "~2.5.1", "postcss-calc": "^10.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34e2f74bb8417..694e730b587e1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,8 +40,8 @@ importers: specifier: 3.5.3 version: 3.5.3 prettier-plugin-tailwindcss: - specifier: 0.6.11 - version: 0.6.11(prettier@3.5.3) + specifier: 0.6.12 + version: 0.6.12(prettier@3.5.3) apps/site: dependencies: @@ -94,8 +94,8 @@ importers: specifier: ^1.2.7 version: 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tailwindcss/postcss': - specifier: ~4.1.5 - version: 4.1.5 + specifier: ~4.1.8 + version: 4.1.8 '@types/node': specifier: 22.15.3 version: 22.15.3 @@ -356,8 +356,8 @@ importers: specifier: ~1.2.7 version: 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tailwindcss/postcss': - specifier: ~4.1.5 - version: 4.1.5 + specifier: ~4.1.8 + version: 4.1.8 '@vcarl/remark-headings': specifier: ~0.1.0 version: 0.1.0 @@ -1756,6 +1756,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -3078,65 +3082,65 @@ packages: '@swc/types@0.1.21': resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} - '@tailwindcss/node@4.1.5': - resolution: {integrity: sha512-CBhSWo0vLnWhXIvpD0qsPephiaUYfHUX3U9anwDaHZAeuGpTiB3XmsxPAN6qX7bFhipyGBqOa1QYQVVhkOUGxg==} + '@tailwindcss/node@4.1.8': + resolution: {integrity: sha512-OWwBsbC9BFAJelmnNcrKuf+bka2ZxCE2A4Ft53Tkg4uoiE67r/PMEYwCsourC26E+kmxfwE0hVzMdxqeW+xu7Q==} - '@tailwindcss/oxide-android-arm64@4.1.5': - resolution: {integrity: sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw==} + '@tailwindcss/oxide-android-arm64@4.1.8': + resolution: {integrity: sha512-Fbz7qni62uKYceWYvUjRqhGfZKwhZDQhlrJKGtnZfuNtHFqa8wmr+Wn74CTWERiW2hn3mN5gTpOoxWKk0jRxjg==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.5': - resolution: {integrity: sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==} + '@tailwindcss/oxide-darwin-arm64@4.1.8': + resolution: {integrity: sha512-RdRvedGsT0vwVVDztvyXhKpsU2ark/BjgG0huo4+2BluxdXo8NDgzl77qh0T1nUxmM11eXwR8jA39ibvSTbi7A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.5': - resolution: {integrity: sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q==} + '@tailwindcss/oxide-darwin-x64@4.1.8': + resolution: {integrity: sha512-t6PgxjEMLp5Ovf7uMb2OFmb3kqzVTPPakWpBIFzppk4JE4ix0yEtbtSjPbU8+PZETpaYMtXvss2Sdkx8Vs4XRw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.5': - resolution: {integrity: sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg==} + '@tailwindcss/oxide-freebsd-x64@4.1.8': + resolution: {integrity: sha512-g8C8eGEyhHTqwPStSwZNSrOlyx0bhK/V/+zX0Y+n7DoRUzyS8eMbVshVOLJTDDC+Qn9IJnilYbIKzpB9n4aBsg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5': - resolution: {integrity: sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': + resolution: {integrity: sha512-Jmzr3FA4S2tHhaC6yCjac3rGf7hG9R6Gf2z9i9JFcuyy0u79HfQsh/thifbYTF2ic82KJovKKkIB6Z9TdNhCXQ==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.5': - resolution: {integrity: sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': + resolution: {integrity: sha512-qq7jXtO1+UEtCmCeBBIRDrPFIVI4ilEQ97qgBGdwXAARrUqSn/L9fUrkb1XP/mvVtoVeR2bt/0L77xx53bPZ/Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.1.5': - resolution: {integrity: sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.8': + resolution: {integrity: sha512-O6b8QesPbJCRshsNApsOIpzKt3ztG35gfX9tEf4arD7mwNinsoCKxkj8TgEE0YRjmjtO3r9FlJnT/ENd9EVefQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.1.5': - resolution: {integrity: sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.8': + resolution: {integrity: sha512-32iEXX/pXwikshNOGnERAFwFSfiltmijMIAbUhnNyjFr3tmWmMJWQKU2vNcFX0DACSXJ3ZWcSkzNbaKTdngH6g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.1.5': - resolution: {integrity: sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g==} + '@tailwindcss/oxide-linux-x64-musl@4.1.8': + resolution: {integrity: sha512-s+VSSD+TfZeMEsCaFaHTaY5YNj3Dri8rST09gMvYQKwPphacRG7wbuQ5ZJMIJXN/puxPcg/nU+ucvWguPpvBDg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.1.5': - resolution: {integrity: sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ==} + '@tailwindcss/oxide-wasm32-wasi@4.1.8': + resolution: {integrity: sha512-CXBPVFkpDjM67sS1psWohZ6g/2/cd+cq56vPxK4JeawelxwK4YECgl9Y9TjkE2qfF+9/s1tHHJqrC4SS6cVvSg==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -3147,24 +3151,24 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.5': - resolution: {integrity: sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA==} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': + resolution: {integrity: sha512-7GmYk1n28teDHUjPlIx4Z6Z4hHEgvP5ZW2QS9ygnDAdI/myh3HTHjDqtSqgu1BpRoI4OiLx+fThAyA1JePoENA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.5': - resolution: {integrity: sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.8': + resolution: {integrity: sha512-fou+U20j+Jl0EHwK92spoWISON2OBnCazIc038Xj2TdweYV33ZRkS9nwqiUi2d/Wba5xg5UoHfvynnb/UB49cQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.5': - resolution: {integrity: sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA==} + '@tailwindcss/oxide@4.1.8': + resolution: {integrity: sha512-d7qvv9PsM5N3VNKhwVUhpK6r4h9wtLkJ6lz9ZY9aeZgrUWk1Z8VPyqyDT9MZlem7GTGseRQHkeB1j3tC7W1P+A==} engines: {node: '>= 10'} - '@tailwindcss/postcss@4.1.5': - resolution: {integrity: sha512-5lAC2/pzuyfhsFgk6I58HcNy6vPK3dV/PoPxSDuOTVbDvCddYHzHiJZZInGIY0venvzzfrTEUAXJFULAfFmObg==} + '@tailwindcss/postcss@4.1.8': + resolution: {integrity: sha512-vB/vlf7rIky+w94aWMw34bWW1ka6g6C3xIOdICKX2GC0VcLtL6fhlLiafF0DVIwa9V6EHz8kbWMkS2s2QvvNlw==} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} @@ -3883,6 +3887,10 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -5425,68 +5433,68 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lightningcss-darwin-arm64@1.29.2: - resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.29.2: - resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.29.2: - resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.29.2: - resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.29.2: - resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.29.2: - resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.29.2: - resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.29.2: - resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.29.2: - resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.29.2: - resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.29.2: - resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} lilconfig@3.1.3: @@ -5891,6 +5899,10 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -6333,12 +6345,16 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-tailwindcss@0.6.11: - resolution: {integrity: sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==} + prettier-plugin-tailwindcss@0.6.12: + resolution: {integrity: sha512-OuTQKoqNwV7RnxTPwXWzOFXy6Jc4z8oeRZYGuMpRyG3WbuR3jjXdQFK8qFBMBx8UHWdHrddARz2fgUenild6aw==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' @@ -7225,13 +7241,21 @@ packages: tailwindcss@4.0.17: resolution: {integrity: sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==} - tailwindcss@4.1.5: - resolution: {integrity: sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==} + tailwindcss@4.1.8: + resolution: {integrity: sha512-kjeW8gjdxasbmFKpVGrGd5T4i40mV5J2Rasw48QARfYeQ8YS9x02ON9SFWax3Qf616rt4Cp3nVNIj6Hd1mP3og==} tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + terser-webpack-plugin@5.3.14: resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} engines: {node: '>= 10.13.0'} @@ -7777,6 +7801,10 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -9531,6 +9559,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -11178,71 +11210,77 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tailwindcss/node@4.1.5': + '@tailwindcss/node@4.1.8': dependencies: + '@ampproject/remapping': 2.3.0 enhanced-resolve: 5.18.1 jiti: 2.4.2 - lightningcss: 1.29.2 - tailwindcss: 4.1.5 + lightningcss: 1.30.1 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.8 - '@tailwindcss/oxide-android-arm64@4.1.5': + '@tailwindcss/oxide-android-arm64@4.1.8': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.5': + '@tailwindcss/oxide-darwin-arm64@4.1.8': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.5': + '@tailwindcss/oxide-darwin-x64@4.1.8': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.5': + '@tailwindcss/oxide-freebsd-x64@4.1.8': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.5': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.5': + '@tailwindcss/oxide-linux-arm64-musl@4.1.8': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.5': + '@tailwindcss/oxide-linux-x64-gnu@4.1.8': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.5': + '@tailwindcss/oxide-linux-x64-musl@4.1.8': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.5': + '@tailwindcss/oxide-wasm32-wasi@4.1.8': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.5': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.5': + '@tailwindcss/oxide-win32-x64-msvc@4.1.8': optional: true - '@tailwindcss/oxide@4.1.5': + '@tailwindcss/oxide@4.1.8': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.5 - '@tailwindcss/oxide-darwin-arm64': 4.1.5 - '@tailwindcss/oxide-darwin-x64': 4.1.5 - '@tailwindcss/oxide-freebsd-x64': 4.1.5 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.5 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.5 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.5 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.5 - '@tailwindcss/oxide-linux-x64-musl': 4.1.5 - '@tailwindcss/oxide-wasm32-wasi': 4.1.5 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.5 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.5 - - '@tailwindcss/postcss@4.1.5': + '@tailwindcss/oxide-android-arm64': 4.1.8 + '@tailwindcss/oxide-darwin-arm64': 4.1.8 + '@tailwindcss/oxide-darwin-x64': 4.1.8 + '@tailwindcss/oxide-freebsd-x64': 4.1.8 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.8 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.8 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.8 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.8 + '@tailwindcss/oxide-linux-x64-musl': 4.1.8 + '@tailwindcss/oxide-wasm32-wasi': 4.1.8 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.8 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.8 + + '@tailwindcss/postcss@4.1.8': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.1.5 - '@tailwindcss/oxide': 4.1.5 - postcss: 8.5.3 - tailwindcss: 4.1.5 + '@tailwindcss/node': 4.1.8 + '@tailwindcss/oxide': 4.1.8 + postcss: 8.5.4 + tailwindcss: 4.1.8 '@testing-library/dom@10.4.0': dependencies: @@ -11979,6 +12017,8 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chownr@3.0.0: {} + chrome-trace-event@1.0.4: {} ci-info@4.2.0: {} @@ -12101,12 +12141,12 @@ snapshots: css-loader@6.11.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) - postcss-modules-scope: 3.2.1(postcss@8.5.3) - postcss-modules-values: 4.0.0(postcss@8.5.3) + icss-utils: 5.1.0(postcss@8.5.4) + postcss: 8.5.4 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.4) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.4) + postcss-modules-scope: 3.2.1(postcss@8.5.4) + postcss-modules-values: 4.0.0(postcss@8.5.4) postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: @@ -12341,7 +12381,7 @@ snapshots: enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.2.2 enquirer@2.4.1: dependencies: @@ -13545,6 +13585,10 @@ snapshots: dependencies: postcss: 8.5.3 + icss-utils@5.1.0(postcss@8.5.4): + dependencies: + postcss: 8.5.4 + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -13891,50 +13935,50 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lightningcss-darwin-arm64@1.29.2: + lightningcss-darwin-arm64@1.30.1: optional: true - lightningcss-darwin-x64@1.29.2: + lightningcss-darwin-x64@1.30.1: optional: true - lightningcss-freebsd-x64@1.29.2: + lightningcss-freebsd-x64@1.30.1: optional: true - lightningcss-linux-arm-gnueabihf@1.29.2: + lightningcss-linux-arm-gnueabihf@1.30.1: optional: true - lightningcss-linux-arm64-gnu@1.29.2: + lightningcss-linux-arm64-gnu@1.30.1: optional: true - lightningcss-linux-arm64-musl@1.29.2: + lightningcss-linux-arm64-musl@1.30.1: optional: true - lightningcss-linux-x64-gnu@1.29.2: + lightningcss-linux-x64-gnu@1.30.1: optional: true - lightningcss-linux-x64-musl@1.29.2: + lightningcss-linux-x64-musl@1.30.1: optional: true - lightningcss-win32-arm64-msvc@1.29.2: + lightningcss-win32-arm64-msvc@1.30.1: optional: true - lightningcss-win32-x64-msvc@1.29.2: + lightningcss-win32-x64-msvc@1.30.1: optional: true - lightningcss@1.29.2: + lightningcss@1.30.1: dependencies: detect-libc: 2.0.4 optionalDependencies: - lightningcss-darwin-arm64: 1.29.2 - lightningcss-darwin-x64: 1.29.2 - lightningcss-freebsd-x64: 1.29.2 - lightningcss-linux-arm-gnueabihf: 1.29.2 - lightningcss-linux-arm64-gnu: 1.29.2 - lightningcss-linux-arm64-musl: 1.29.2 - lightningcss-linux-x64-gnu: 1.29.2 - lightningcss-linux-x64-musl: 1.29.2 - lightningcss-win32-arm64-msvc: 1.29.2 - lightningcss-win32-x64-msvc: 1.29.2 + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 lilconfig@3.1.3: {} @@ -14632,6 +14676,10 @@ snapshots: minipass@7.1.2: {} + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + mkdirp@1.0.4: {} mkdirp@3.0.1: {} @@ -15012,6 +15060,10 @@ snapshots: dependencies: postcss: 8.5.3 + postcss-modules-extract-imports@3.1.0(postcss@8.5.4): + dependencies: + postcss: 8.5.4 + postcss-modules-local-by-default@4.2.0(postcss@8.5.3): dependencies: icss-utils: 5.1.0(postcss@8.5.3) @@ -15019,16 +15071,33 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 + postcss-modules-local-by-default@4.2.0(postcss@8.5.4): + dependencies: + icss-utils: 5.1.0(postcss@8.5.4) + postcss: 8.5.4 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + postcss-modules-scope@3.2.1(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-selector-parser: 7.1.0 + postcss-modules-scope@3.2.1(postcss@8.5.4): + dependencies: + postcss: 8.5.4 + postcss-selector-parser: 7.1.0 + postcss-modules-values@4.0.0(postcss@8.5.3): dependencies: icss-utils: 5.1.0(postcss@8.5.3) postcss: 8.5.3 + postcss-modules-values@4.0.0(postcss@8.5.4): + dependencies: + icss-utils: 5.1.0(postcss@8.5.4) + postcss: 8.5.4 + postcss-resolve-nested-selector@0.1.6: {} postcss-safe-parser@7.0.1(postcss@8.5.3): @@ -15058,9 +15127,15 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prelude-ls@1.2.1: {} - prettier-plugin-tailwindcss@0.6.11(prettier@3.5.3): + prettier-plugin-tailwindcss@0.6.12(prettier@3.5.3): dependencies: prettier: 3.5.3 @@ -16440,10 +16515,21 @@ snapshots: tailwindcss@4.0.17: {} - tailwindcss@4.1.5: {} + tailwindcss@4.1.8: {} tapable@2.2.1: {} + tapable@2.2.2: {} + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + terser-webpack-plugin@5.3.14(@swc/core@1.11.24)(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -17130,6 +17216,8 @@ snapshots: yallist@3.1.1: {} + yallist@5.0.0: {} + yaml@1.10.2: {} yaml@2.7.1: {} From 1d5a7f279720e5e4da66f43d06a6a9a14cb7c2d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 06:50:14 -0400 Subject: [PATCH 0521/1385] meta: bump @types/react from 19.1.2 to 19.1.6 in the react group (#7816) Bumps the react group with 1 update: [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). Updates `@types/react` from 19.1.2 to 19.1.6 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-version: 19.1.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: react ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- packages/ui-components/package.json | 2 +- pnpm-lock.yaml | 494 ++++++++++++++-------------- 3 files changed, 249 insertions(+), 249 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index c96dfc5326955..fb9eb30427784 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -45,7 +45,7 @@ "@radix-ui/react-tooltip": "^1.2.7", "@tailwindcss/postcss": "~4.1.8", "@types/node": "22.15.3", - "@types/react": "^19.1.0", + "@types/react": "^19.1.6", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", "@vercel/otel": "~1.11.0", diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 33d8ace3f13ee..c8e7ec0b459d5 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -56,7 +56,7 @@ "@storybook/react-webpack5": "^9.0.3", "@testing-library/user-event": "~14.6.1", "@types/node": "22.15.3", - "@types/react": "^19.1.0", + "@types/react": "^19.1.6", "cross-env": "^7.0.3", "css-loader": "~7.1.2", "eslint-plugin-react": "~7.37.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 694e730b587e1..72975a391e8db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,7 +26,7 @@ importers: version: 1.7.2 '@testing-library/react': specifier: ~16.3.0 - version: 16.3.0(@testing-library/dom@10.4.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -77,22 +77,22 @@ importers: version: 0.200.0(@opentelemetry/api@1.9.0) '@orama/react-components': specifier: ^0.8.0 - version: 0.8.0(@stencil/core@4.30.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 0.8.0(@stencil/core@4.30.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@oramacloud/client': specifier: ^2.1.4 version: 2.1.4 '@radix-ui/react-slot': specifier: ^1.2.3 - version: 1.2.3(@types/react@19.1.2)(react@19.1.0) + version: 1.2.3(@types/react@19.1.6)(react@19.1.0) '@radix-ui/react-tabs': specifier: ^1.1.12 - version: 1.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.12(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-toast': specifier: ^1.2.14 - version: 1.2.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.2.14(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tooltip': specifier: ^1.2.7 - version: 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.2.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tailwindcss/postcss': specifier: ~4.1.8 version: 4.1.8 @@ -100,8 +100,8 @@ importers: specifier: 22.15.3 version: 22.15.3 '@types/react': - specifier: ^19.1.0 - version: 19.1.2 + specifier: ^19.1.6 + version: 19.1.6 '@vcarl/remark-headings': specifier: ~0.1.0 version: 0.1.0 @@ -330,31 +330,31 @@ importers: version: 2.2.0(react@19.1.0) '@radix-ui/react-avatar': specifier: ^1.1.10 - version: 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-dialog': specifier: ^1.1.14 - version: 1.1.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.14(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-dropdown-menu': specifier: ~2.1.15 - version: 2.1.15(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.1.15(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-label': specifier: ~2.1.7 - version: 2.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-select': specifier: ~2.2.5 - version: 2.2.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.2.5(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-separator': specifier: ~1.1.7 - version: 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tabs': specifier: ~1.1.12 - version: 1.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.12(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-toast': specifier: ~1.2.14 - version: 1.2.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.2.14(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tooltip': specifier: ~1.2.7 - version: 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.2.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tailwindcss/postcss': specifier: ~4.1.8 version: 4.1.8 @@ -393,8 +393,8 @@ importers: specifier: 22.15.3 version: 22.15.3 '@types/react': - specifier: ^19.1.0 - version: 19.1.2 + specifier: ^19.1.6 + version: 19.1.6 cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -3277,8 +3277,8 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@types/react@19.1.2': - resolution: {integrity: sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==} + '@types/react@19.1.6': + resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==} '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -9596,9 +9596,9 @@ snapshots: '@lit-labs/ssr-dom-shim@1.3.0': {} - '@lit/react@1.0.7(@types/react@19.1.2)': + '@lit/react@1.0.7(@types/react@19.1.6)': dependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 '@lit/reactive-element@2.1.0': dependencies: @@ -9897,10 +9897,10 @@ snapshots: '@orama/orama@3.1.6': {} - '@orama/react-components@0.8.0(@stencil/core@4.30.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@orama/react-components@0.8.0(@stencil/core@4.30.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@orama/wc-components': 0.8.0 - '@stencil/react-output-target': 0.8.2(@stencil/core@4.30.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@stencil/react-output-target': 0.8.2(@stencil/core@4.30.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -9957,381 +9957,381 @@ snapshots: '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-arrow@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-arrow@1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-avatar@1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-avatar@1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-collection@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.6)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-context@1.1.2(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-context@1.1.2(@types/react@19.1.6)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-dialog@1.1.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dialog@1.1.14(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.6)(react@19.1.0) aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.1(@types/react@19.1.2)(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.6)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-direction@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-direction@1.1.1(@types/react@19.1.6)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-dismissable-layer@1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-dropdown-menu@2.1.15(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dropdown-menu@2.1.15(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-menu': 2.1.15(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-menu': 2.1.15(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.6)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-focus-scope@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-id@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.1.6)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-label@2.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-label@2.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-menu@2.1.15(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-menu@2.1.15(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.1(@types/react@19.1.2)(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.6)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-popper@1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-popper@1.2.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@floating-ui/react-dom': 2.1.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-arrow': 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.6)(react@19.1.0) '@radix-ui/rect': 1.1.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-portal@1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.9(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-presence@1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.1.4(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-primitive@2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-roving-focus@1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-roving-focus@1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-select@2.2.5(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-select@2.2.5(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.1(@types/react@19.1.2)(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.6)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-separator@1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-separator@1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-slot@1.2.3(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-slot@1.2.3(@types/react@19.1.6)(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-tabs@1.1.12(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tabs@1.1.12(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-toast@1.2.14(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toast@1.2.14(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-tooltip@1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tooltip@1.2.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-popper': 1.2.7(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.6)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.6)(react@19.1.0)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.2)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.6)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.6)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.6)(react@19.1.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.6)(react@19.1.0)': dependencies: react: 19.1.0 use-sync-external-store: 1.5.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.6)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.6)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.6)(react@19.1.0)': dependencies: '@radix-ui/rect': 1.1.1 react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.2)(react@19.1.0)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.6)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - '@radix-ui/react-visually-hidden@1.2.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 '@radix-ui/rect@1.1.1': {} @@ -11008,11 +11008,11 @@ snapshots: '@rollup/rollup-win32-arm64-msvc': 4.34.9 '@rollup/rollup-win32-x64-msvc': 4.34.9 - '@stencil/react-output-target@0.8.2(@stencil/core@4.30.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@stencil/react-output-target@0.8.2(@stencil/core@4.30.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@lit/react': 1.0.7(@types/react@19.1.2) + '@lit/react': 1.0.7(@types/react@19.1.6) '@stencil/core': 4.30.0 - html-react-parser: 5.2.3(@types/react@19.1.2)(react@19.1.0) + html-react-parser: 5.2.3(@types/react@19.1.6)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) style-object-to-css-string: 1.1.3 @@ -11303,14 +11303,14 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 '@testing-library/dom': 10.4.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': dependencies: @@ -11409,7 +11409,7 @@ snapshots: '@types/parse-json@4.0.2': {} - '@types/react@19.1.2': + '@types/react@19.1.6': dependencies: csstype: 3.1.3 @@ -13511,7 +13511,7 @@ snapshots: relateurl: 0.2.7 terser: 5.39.0 - html-react-parser@5.2.3(@types/react@19.1.2)(react@19.1.0): + html-react-parser@5.2.3(@types/react@19.1.6)(react@19.1.0): dependencies: domhandler: 5.0.3 html-dom-parser: 5.0.13 @@ -13519,7 +13519,7 @@ snapshots: react-property: 2.0.2 style-to-js: 1.1.16 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 html-tags@3.3.1: {} @@ -15237,32 +15237,32 @@ snapshots: react-property@2.0.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.1.2)(react@19.1.0): + react-remove-scroll-bar@2.3.8(@types/react@19.1.6)(react@19.1.0): dependencies: react: 19.1.0 - react-style-singleton: 2.2.3(@types/react@19.1.2)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.6)(react@19.1.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - react-remove-scroll@2.7.1(@types/react@19.1.2)(react@19.1.0): + react-remove-scroll@2.7.1(@types/react@19.1.6)(react@19.1.0): dependencies: react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.1.2)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.1.2)(react@19.1.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.1.6)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.6)(react@19.1.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.1.2)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.1.2)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.1.6)(react@19.1.0) + use-sidecar: 1.1.3(@types/react@19.1.6)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 - react-style-singleton@2.2.3(@types/react@19.1.2)(react@19.1.0): + react-style-singleton@2.2.3(@types/react@19.1.6)(react@19.1.0): dependencies: get-nonce: 1.0.1 react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 react@19.1.0: {} @@ -16915,12 +16915,12 @@ snapshots: urlpattern-polyfill@10.0.0: {} - use-callback-ref@1.3.3(@types/react@19.1.2)(react@19.1.0): + use-callback-ref@1.3.3(@types/react@19.1.6)(react@19.1.0): dependencies: react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 use-intl@4.1.0(react@19.1.0): dependencies: @@ -16929,13 +16929,13 @@ snapshots: intl-messageformat: 10.7.16 react: 19.1.0 - use-sidecar@1.1.3(@types/react@19.1.2)(react@19.1.0): + use-sidecar@1.1.3(@types/react@19.1.6)(react@19.1.0): dependencies: detect-node-es: 1.1.0 react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.2 + '@types/react': 19.1.6 use-sync-external-store@1.5.0(react@19.1.0): dependencies: From e29253b0dfb9a9c0dfb12af0c58e741d7de6074d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 07:21:48 -0400 Subject: [PATCH 0522/1385] meta: bump the vercel group with 7 updates (#7819) Bumps the vercel group with 7 updates: | Package | From | To | | --- | --- | --- | | [turbo](https://github.com/vercel/turborepo) | `2.5.2` | `2.5.4` | | [@opentelemetry/api-logs](https://github.com/open-telemetry/opentelemetry-js) | `0.200.0` | `0.201.1` | | [@opentelemetry/instrumentation](https://github.com/open-telemetry/opentelemetry-js) | `0.200.0` | `0.201.1` | | [@opentelemetry/sdk-logs](https://github.com/open-telemetry/opentelemetry-js) | `0.200.0` | `0.201.1` | | [@vercel/otel](https://github.com/vercel/otel) | `1.11.0` | `1.12.0` | | [next](https://github.com/vercel/next.js) | `15.3.1` | `15.3.3` | | [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) | `15.3.1` | `15.3.3` | Updates `turbo` from 2.5.2 to 2.5.4 - [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.5.2...v2.5.4) Updates `@opentelemetry/api-logs` from 0.200.0 to 0.201.1 - [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.200.0...experimental/v0.201.1) Updates `@opentelemetry/instrumentation` from 0.200.0 to 0.201.1 - [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.200.0...experimental/v0.201.1) Updates `@opentelemetry/sdk-logs` from 0.200.0 to 0.201.1 - [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.200.0...experimental/v0.201.1) Updates `@vercel/otel` from 1.11.0 to 1.12.0 - [Release notes](https://github.com/vercel/otel/releases) - [Commits](https://github.com/vercel/otel/compare/@vercel/otel@1.11.0...@vercel/otel@1.12.0) Updates `next` from 15.3.1 to 15.3.3 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v15.3.1...v15.3.3) Updates `@next/eslint-plugin-next` from 15.3.1 to 15.3.3 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v15.3.3/packages/eslint-plugin-next) --- updated-dependencies: - dependency-name: turbo dependency-version: 2.5.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: vercel - dependency-name: "@opentelemetry/api-logs" dependency-version: 0.201.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: vercel - dependency-name: "@opentelemetry/instrumentation" dependency-version: 0.201.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: vercel - dependency-name: "@opentelemetry/sdk-logs" dependency-version: 0.201.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: vercel - dependency-name: "@vercel/otel" dependency-version: 1.12.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: vercel - dependency-name: next dependency-version: 15.3.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: vercel - dependency-name: "@next/eslint-plugin-next" dependency-version: 15.3.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: vercel ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 12 +- package.json | 2 +- pnpm-lock.yaml | 420 +++++++++++++++++++++-------------------- 3 files changed, 226 insertions(+), 208 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index fb9eb30427784..2631f112bd048 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -33,10 +33,10 @@ "@node-core/ui-components": "workspace:*", "@node-core/website-i18n": "workspace:*", "@nodevu/core": "0.3.0", - "@opentelemetry/api-logs": "~0.200.0", - "@opentelemetry/instrumentation": "~0.200.0", + "@opentelemetry/api-logs": "~0.202.0", + "@opentelemetry/instrumentation": "~0.202.0", "@opentelemetry/resources": "~1.30.1", - "@opentelemetry/sdk-logs": "~0.200.0", + "@opentelemetry/sdk-logs": "~0.202.0", "@orama/react-components": "^0.8.0", "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.2.3", @@ -48,7 +48,7 @@ "@types/react": "^19.1.6", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.5.0", - "@vercel/otel": "~1.11.0", + "@vercel/otel": "~1.12.0", "@vercel/speed-insights": "~1.2.0", "classnames": "~2.5.1", "cross-env": "7.0.3", @@ -56,7 +56,7 @@ "github-slugger": "~2.0.0", "glob": "~11.0.1", "gray-matter": "~4.0.3", - "next": "15.3.1", + "next": "15.3.3", "next-intl": "~4.1.0", "next-themes": "~0.4.6", "postcss-calc": "~10.1.1", @@ -77,7 +77,7 @@ "@eslint/compat": "~1.2.8", "@eslint/eslintrc": "~3.3.1", "@flarelabs-net/wrangler-build-time-fs-assets-polyfilling": "^0.0.0", - "@next/eslint-plugin-next": "15.3.1", + "@next/eslint-plugin-next": "15.3.3", "@opennextjs/cloudflare": "^1.0.0-beta.4", "@playwright/test": "^1.52.0", "@testing-library/user-event": "~14.6.1", diff --git a/package.json b/package.json index 77c2891901886..b51eb1bfaa2a1 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "dependencies": { "husky": "9.1.7", "lint-staged": "15.5.1", - "turbo": "2.5.2" + "turbo": "2.5.4" }, "devDependencies": { "@eslint/js": "~9.26.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72975a391e8db..7a3288d9c697d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: 15.5.1 version: 15.5.1 turbo: - specifier: 2.5.2 - version: 2.5.2 + specifier: 2.5.4 + version: 2.5.4 devDependencies: '@eslint/js': specifier: ~9.26.0 @@ -64,17 +64,17 @@ importers: specifier: 0.3.0 version: 0.3.0 '@opentelemetry/api-logs': - specifier: ~0.200.0 - version: 0.200.0 + specifier: ~0.202.0 + version: 0.202.0 '@opentelemetry/instrumentation': - specifier: ~0.200.0 - version: 0.200.0(@opentelemetry/api@1.9.0) + specifier: ~0.202.0 + version: 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': specifier: ~1.30.1 version: 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-logs': - specifier: ~0.200.0 - version: 0.200.0(@opentelemetry/api@1.9.0) + specifier: ~0.202.0 + version: 0.202.0(@opentelemetry/api@1.9.0) '@orama/react-components': specifier: ^0.8.0 version: 0.8.0(@stencil/core@4.30.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -107,13 +107,13 @@ importers: version: 0.1.0 '@vercel/analytics': specifier: ~1.5.0 - version: 1.5.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 1.5.0(next@15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) '@vercel/otel': - specifier: ~1.11.0 - version: 1.11.0(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + specifier: ~1.12.0 + version: 1.12.0(@opentelemetry/api-logs@0.202.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) '@vercel/speed-insights': specifier: ~1.2.0 - version: 1.2.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 1.2.0(next@15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) classnames: specifier: ~2.5.1 version: 2.5.1 @@ -133,11 +133,11 @@ importers: specifier: ~4.0.3 version: 4.0.3 next: - specifier: 15.3.1 - version: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.3.3 + version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-intl: specifier: ~4.1.0 - version: 4.1.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 4.1.0(next@15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) next-themes: specifier: ~0.4.6 version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -191,8 +191,8 @@ importers: specifier: ^0.0.0 version: 0.0.0 '@next/eslint-plugin-next': - specifier: 15.3.1 - version: 15.3.1 + specifier: 15.3.3 + version: 15.3.3 '@opennextjs/cloudflare': specifier: ^1.0.0-beta.4 version: 1.0.0-beta.4(wrangler@4.14.1) @@ -1543,8 +1543,8 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-darwin-arm64@0.34.1': - resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==} + '@img/sharp-darwin-arm64@0.34.2': + resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] @@ -1555,8 +1555,8 @@ packages: cpu: [x64] os: [darwin] - '@img/sharp-darwin-x64@0.34.1': - resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==} + '@img/sharp-darwin-x64@0.34.2': + resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] @@ -1652,8 +1652,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-linux-arm64@0.34.1': - resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==} + '@img/sharp-linux-arm64@0.34.2': + resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] @@ -1664,8 +1664,8 @@ packages: cpu: [arm] os: [linux] - '@img/sharp-linux-arm@0.34.1': - resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==} + '@img/sharp-linux-arm@0.34.2': + resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] @@ -1676,8 +1676,8 @@ packages: cpu: [s390x] os: [linux] - '@img/sharp-linux-s390x@0.34.1': - resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==} + '@img/sharp-linux-s390x@0.34.2': + resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] @@ -1688,8 +1688,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-linux-x64@0.34.1': - resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==} + '@img/sharp-linux-x64@0.34.2': + resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] @@ -1700,8 +1700,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.1': - resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==} + '@img/sharp-linuxmusl-arm64@0.34.2': + resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] @@ -1712,8 +1712,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.1': - resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==} + '@img/sharp-linuxmusl-x64@0.34.2': + resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] @@ -1723,19 +1723,25 @@ packages: engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-wasm32@0.34.1': - resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==} + '@img/sharp-wasm32@0.34.2': + resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] + '@img/sharp-win32-arm64@0.34.2': + resolution: {integrity: sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + '@img/sharp-win32-ia32@0.33.5': resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-ia32@0.34.1': - resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==} + '@img/sharp-win32-ia32@0.34.2': + resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] @@ -1746,8 +1752,8 @@ packages: cpu: [x64] os: [win32] - '@img/sharp-win32-x64@0.34.1': - resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==} + '@img/sharp-win32-x64@0.34.2': + resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -1808,56 +1814,59 @@ packages: '@napi-rs/wasm-runtime@0.2.9': resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} - '@next/env@15.3.1': - resolution: {integrity: sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==} + '@next/env@15.3.3': + resolution: {integrity: sha512-OdiMrzCl2Xi0VTjiQQUK0Xh7bJHnOuET2s+3V+Y40WJBAXrJeGA3f+I8MZJ/YQ3mVGi5XGR1L66oFlgqXhQ4Vw==} '@next/eslint-plugin-next@15.3.1': resolution: {integrity: sha512-oEs4dsfM6iyER3jTzMm4kDSbrQJq8wZw5fmT6fg2V3SMo+kgG+cShzLfEV20senZzv8VF+puNLheiGPlBGsv2A==} - '@next/swc-darwin-arm64@15.3.1': - resolution: {integrity: sha512-hjDw4f4/nla+6wysBL07z52Gs55Gttp5Bsk5/8AncQLJoisvTBP0pRIBK/B16/KqQyH+uN4Ww8KkcAqJODYH3w==} + '@next/eslint-plugin-next@15.3.3': + resolution: {integrity: sha512-VKZJEiEdpKkfBmcokGjHu0vGDG+8CehGs90tBEy/IDoDDKGngeyIStt2MmE5FYNyU9BhgR7tybNWTAJY/30u+Q==} + + '@next/swc-darwin-arm64@15.3.3': + resolution: {integrity: sha512-WRJERLuH+O3oYB4yZNVahSVFmtxRNjNF1I1c34tYMoJb0Pve+7/RaLAJJizyYiFhjYNGHRAE1Ri2Fd23zgDqhg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.3.1': - resolution: {integrity: sha512-q+aw+cJ2ooVYdCEqZVk+T4Ni10jF6Fo5DfpEV51OupMaV5XL6pf3GCzrk6kSSZBsMKZtVC1Zm/xaNBFpA6bJ2g==} + '@next/swc-darwin-x64@15.3.3': + resolution: {integrity: sha512-XHdzH/yBc55lu78k/XwtuFR/ZXUTcflpRXcsu0nKmF45U96jt1tsOZhVrn5YH+paw66zOANpOnFQ9i6/j+UYvw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.3.1': - resolution: {integrity: sha512-wBQ+jGUI3N0QZyWmmvRHjXjTWFy8o+zPFLSOyAyGFI94oJi+kK/LIZFJXeykvgXUk1NLDAEFDZw/NVINhdk9FQ==} + '@next/swc-linux-arm64-gnu@15.3.3': + resolution: {integrity: sha512-VZ3sYL2LXB8znNGcjhocikEkag/8xiLgnvQts41tq6i+wql63SMS1Q6N8RVXHw5pEUjiof+II3HkDd7GFcgkzw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.3.1': - resolution: {integrity: sha512-IIxXEXRti/AulO9lWRHiCpUUR8AR/ZYLPALgiIg/9ENzMzLn3l0NSxVdva7R/VDcuSEBo0eGVCe3evSIHNz0Hg==} + '@next/swc-linux-arm64-musl@15.3.3': + resolution: {integrity: sha512-h6Y1fLU4RWAp1HPNJWDYBQ+e3G7sLckyBXhmH9ajn8l/RSMnhbuPBV/fXmy3muMcVwoJdHL+UtzRzs0nXOf9SA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.3.1': - resolution: {integrity: sha512-bfI4AMhySJbyXQIKH5rmLJ5/BP7bPwuxauTvVEiJ/ADoddaA9fgyNNCcsbu9SlqfHDoZmfI6g2EjzLwbsVTr5A==} + '@next/swc-linux-x64-gnu@15.3.3': + resolution: {integrity: sha512-jJ8HRiF3N8Zw6hGlytCj5BiHyG/K+fnTKVDEKvUCyiQ/0r5tgwO7OgaRiOjjRoIx2vwLR+Rz8hQoPrnmFbJdfw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.3.1': - resolution: {integrity: sha512-FeAbR7FYMWR+Z+M5iSGytVryKHiAsc0x3Nc3J+FD5NVbD5Mqz7fTSy8CYliXinn7T26nDMbpExRUI/4ekTvoiA==} + '@next/swc-linux-x64-musl@15.3.3': + resolution: {integrity: sha512-HrUcTr4N+RgiiGn3jjeT6Oo208UT/7BuTr7K0mdKRBtTbT4v9zJqCDKO97DUqqoBK1qyzP1RwvrWTvU6EPh/Cw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.3.1': - resolution: {integrity: sha512-yP7FueWjphQEPpJQ2oKmshk/ppOt+0/bB8JC8svPUZNy0Pi3KbPx2Llkzv1p8CoQa+D2wknINlJpHf3vtChVBw==} + '@next/swc-win32-arm64-msvc@15.3.3': + resolution: {integrity: sha512-SxorONgi6K7ZUysMtRF3mIeHC5aA3IQLmKFQzU0OuhuUYwpOBc1ypaLJLP5Bf3M9k53KUUUj4vTPwzGvl/NwlQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.1': - resolution: {integrity: sha512-3PMvF2zRJAifcRNni9uMk/gulWfWS+qVI/pagd+4yLF5bcXPZPPH2xlYRYOsUjmCJOXSTAC2PjRzbhsRzR2fDQ==} + '@next/swc-win32-x64-msvc@15.3.3': + resolution: {integrity: sha512-4QZG6F8enl9/S2+yIiOiju0iCTFd93d8VC1q9LZS4p/Xuk81W2QDjCFeoogmrWWkAD59z8ZxepBQap2dKS5ruw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1942,8 +1951,8 @@ packages: peerDependencies: wrangler: ^4.7.0 - '@opentelemetry/api-logs@0.200.0': - resolution: {integrity: sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==} + '@opentelemetry/api-logs@0.202.0': + resolution: {integrity: sha512-fTBjMqKCfotFWfLzaKyhjLvyEyq5vDKTTFfBmx21btv3gvy8Lq6N5Dh2OzqeuN4DjtpSvNT1uNVfg08eD2Rfxw==} engines: {node: '>=8.0.0'} '@opentelemetry/api@1.9.0': @@ -1956,14 +1965,14 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.0.0': - resolution: {integrity: sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==} + '@opentelemetry/core@2.0.1': + resolution: {integrity: sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/instrumentation@0.200.0': - resolution: {integrity: sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==} + '@opentelemetry/instrumentation@0.202.0': + resolution: {integrity: sha512-Uz3BxZWPgDwgHM2+vCKEQRh0R8WKrd/q6Tus1vThRClhlPO39Dyz7mDrOr6KuqGXAlBQ1e5Tnymzri4RMZNaWA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -1974,14 +1983,14 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resources@2.0.0': - resolution: {integrity: sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==} + '@opentelemetry/resources@2.0.1': + resolution: {integrity: sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-logs@0.200.0': - resolution: {integrity: sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==} + '@opentelemetry/sdk-logs@0.202.0': + resolution: {integrity: sha512-pv8QiQLQzk4X909YKm0lnW4hpuQg4zHwJ4XBd5bZiXcd9urvrJNoNVKnxGHPiDVX/GiLFvr5DMYsDBQbZCypRQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.4.0 <1.10.0' @@ -2002,8 +2011,8 @@ packages: resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} engines: {node: '>=14'} - '@opentelemetry/semantic-conventions@1.32.0': - resolution: {integrity: sha512-s0OpmpQFSfMrmedAn9Lhg4KWJELHCU6uU9dtIJ28N8UGhf9Y55im5X8fEzwhwDwiSqN+ZPSNrDJF7ivf/AuRPQ==} + '@opentelemetry/semantic-conventions@1.34.0': + resolution: {integrity: sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==} engines: {node: '>=14'} '@orama/core@0.1.8': @@ -3286,9 +3295,6 @@ packages: '@types/semver@7.7.0': resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} - '@types/shimmer@1.2.0': - resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} - '@types/supports-color@8.1.3': resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} @@ -3468,8 +3474,8 @@ packages: vue-router: optional: true - '@vercel/otel@1.11.0': - resolution: {integrity: sha512-cS+Yq2qfkkGyoRKhdKd81J5pVPo7ulLnqeQsISITJVynRNuun8+1FfY+DHcPT2drj9Bl/7LpG0BosULrv7yyqg==} + '@vercel/otel@1.12.0': + resolution: {integrity: sha512-KiTlMvJf6tjxcJUlpU1u7o1YpTddhx+aLhJ6Obn9dExr3ykVp5Lzi4ACET029TCzJ63NBzcF641rGMZly6x4aw==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.7.0 @@ -3841,8 +3847,8 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - caniuse-lite@1.0.30001716: - resolution: {integrity: sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==} + caniuse-lite@1.0.30001720: + resolution: {integrity: sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==} case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} @@ -4129,6 +4135,15 @@ packages: supports-color: optional: true + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decimal.js@10.5.0: resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} @@ -5095,8 +5110,8 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-in-the-middle@1.13.1: - resolution: {integrity: sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==} + import-in-the-middle@1.14.0: + resolution: {integrity: sha512-g5zLT0HaztRJWysayWYiUq/7E5H825QIiecMD2pI5QO7Wzr847l6GDvPvmZaDIdrDtS2w7qRczywxiK6SL5vRw==} import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -5969,8 +5984,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.3.1: - resolution: {integrity: sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==} + next@15.3.3: + resolution: {integrity: sha512-JqNj29hHNmCLtNvd090SyRbXJiivQ+58XjCcrC50Crb5g5u2zi7Y2YivbsEfzk6AtVI80akdOQbaMZwWB1Hthw==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -6914,8 +6929,8 @@ packages: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.34.1: - resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==} + sharp@0.34.2: + resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: @@ -6932,9 +6947,6 @@ packages: shiki@3.4.2: resolution: {integrity: sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ==} - shimmer@1.2.1: - resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} - side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -7364,38 +7376,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.5.2: - resolution: {integrity: sha512-2aIl0Sx230nLk+Cg2qSVxvPOBWCZpwKNuAMKoROTvWKif6VMpkWWiR9XEPoz7sHeLmCOed4GYGMjL1bqAiIS/g==} + turbo-darwin-64@2.5.4: + resolution: {integrity: sha512-ah6YnH2dErojhFooxEzmvsoZQTMImaruZhFPfMKPBq8sb+hALRdvBNLqfc8NWlZq576FkfRZ/MSi4SHvVFT9PQ==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.2: - resolution: {integrity: sha512-MrFYhK/jYu8N6QlqZtqSHi3e4QVxlzqU3ANHTKn3/tThuwTLbNHEvzBPWSj5W7nZcM58dCqi6gYrfRz6bJZyAA==} + turbo-darwin-arm64@2.5.4: + resolution: {integrity: sha512-2+Nx6LAyuXw2MdXb7pxqle3MYignLvS7OwtsP9SgtSBaMlnNlxl9BovzqdYAgkUW3AsYiQMJ/wBRb7d+xemM5A==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.2: - resolution: {integrity: sha512-LxNqUE2HmAJQ/8deoLgMUDzKxd5bKxqH0UBogWa+DF+JcXhtze3UTMr6lEr0dEofdsEUYK1zg8FRjglmwlN5YA==} + turbo-linux-64@2.5.4: + resolution: {integrity: sha512-5May2kjWbc8w4XxswGAl74GZ5eM4Gr6IiroqdLhXeXyfvWEdm2mFYCSWOzz0/z5cAgqyGidF1jt1qzUR8hTmOA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.2: - resolution: {integrity: sha512-0MI1Ao1q8zhd+UUbIEsrM+yLq1BsrcJQRGZkxIsHFlGp7WQQH1oR3laBgfnUCNdCotCMD6w4moc9pUbXdOR3bg==} + turbo-linux-arm64@2.5.4: + resolution: {integrity: sha512-/2yqFaS3TbfxV3P5yG2JUI79P7OUQKOUvAnx4MV9Bdz6jqHsHwc9WZPpO4QseQm+NvmgY6ICORnoVPODxGUiJg==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.2: - resolution: {integrity: sha512-hOLcbgZzE5ttACHHyc1ajmWYq4zKT42IC3G6XqgiXxMbS+4eyVYTL+7UvCZBd3Kca1u4TLQdLQjeO76zyDJc2A==} + turbo-windows-64@2.5.4: + resolution: {integrity: sha512-EQUO4SmaCDhO6zYohxIjJpOKRN3wlfU7jMAj3CgcyTPvQR/UFLEKAYHqJOnJtymbQmiiM/ihX6c6W6Uq0yC7mA==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.2: - resolution: {integrity: sha512-fMU41ABhSLa18H8V3Z7BMCGynQ8x+wj9WyBMvWm1jeyRKgkvUYJsO2vkIsy8m0vrwnIeVXKOIn6eSe1ddlBVqw==} + turbo-windows-arm64@2.5.4: + resolution: {integrity: sha512-oQ8RrK1VS8lrxkLriotFq+PiF7iiGgkZtfLKF4DDKsmdbPo0O9R2mQxm7jHLuXraRCuIQDWMIw6dpcr7Iykf4A==} cpu: [arm64] os: [win32] - turbo@2.5.2: - resolution: {integrity: sha512-Qo5lfuStr6LQh3sPQl7kIi243bGU4aHGDQJUf6ylAdGwks30jJFloc9NYHP7Y373+gGU9OS0faA4Mb5Sy8X9Xw==} + turbo@2.5.4: + resolution: {integrity: sha512-kc8ZibdRcuWUG1pbYSBFWqmIjynlD8Lp7IB6U3vIzvOv9VG+6Sp8bzyeBWE3Oi8XV5KsQrznyRTBPvrf99E4mA==} hasBin: true type-check@0.4.0: @@ -8892,7 +8904,7 @@ snapshots: '@babel/traverse': 7.27.1 '@babel/types': 7.27.1 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -8963,7 +8975,7 @@ snapshots: '@babel/parser': 7.27.1 '@babel/template': 7.27.1 '@babel/types': 7.27.1 - debug: 4.4.0 + debug: 4.4.1 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9402,7 +9414,7 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-arm64@0.34.1': + '@img/sharp-darwin-arm64@0.34.2': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.1.0 optional: true @@ -9412,7 +9424,7 @@ snapshots: '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.34.1': + '@img/sharp-darwin-x64@0.34.2': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.1.0 optional: true @@ -9473,7 +9485,7 @@ snapshots: '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm64@0.34.1': + '@img/sharp-linux-arm64@0.34.2': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.1.0 optional: true @@ -9483,7 +9495,7 @@ snapshots: '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-arm@0.34.1': + '@img/sharp-linux-arm@0.34.2': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.1.0 optional: true @@ -9493,7 +9505,7 @@ snapshots: '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-s390x@0.34.1': + '@img/sharp-linux-s390x@0.34.2': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.1.0 optional: true @@ -9503,7 +9515,7 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linux-x64@0.34.1': + '@img/sharp-linux-x64@0.34.2': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.1.0 optional: true @@ -9513,7 +9525,7 @@ snapshots: '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.1': + '@img/sharp-linuxmusl-arm64@0.34.2': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 optional: true @@ -9523,7 +9535,7 @@ snapshots: '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.1': + '@img/sharp-linuxmusl-x64@0.34.2': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.1.0 optional: true @@ -9533,21 +9545,24 @@ snapshots: '@emnapi/runtime': 1.4.3 optional: true - '@img/sharp-wasm32@0.34.1': + '@img/sharp-wasm32@0.34.2': dependencies: '@emnapi/runtime': 1.4.3 optional: true + '@img/sharp-win32-arm64@0.34.2': + optional: true + '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-ia32@0.34.1': + '@img/sharp-win32-ia32@0.34.2': optional: true '@img/sharp-win32-x64@0.33.5': optional: true - '@img/sharp-win32-x64@0.34.1': + '@img/sharp-win32-x64@0.34.2': optional: true '@isaacs/cliui@8.0.2': @@ -9656,34 +9671,38 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true - '@next/env@15.3.1': {} + '@next/env@15.3.3': {} '@next/eslint-plugin-next@15.3.1': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.3.1': + '@next/eslint-plugin-next@15.3.3': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@15.3.3': optional: true - '@next/swc-darwin-x64@15.3.1': + '@next/swc-darwin-x64@15.3.3': optional: true - '@next/swc-linux-arm64-gnu@15.3.1': + '@next/swc-linux-arm64-gnu@15.3.3': optional: true - '@next/swc-linux-arm64-musl@15.3.1': + '@next/swc-linux-arm64-musl@15.3.3': optional: true - '@next/swc-linux-x64-gnu@15.3.1': + '@next/swc-linux-x64-gnu@15.3.3': optional: true - '@next/swc-linux-x64-musl@15.3.1': + '@next/swc-linux-x64-musl@15.3.3': optional: true - '@next/swc-win32-arm64-msvc@15.3.1': + '@next/swc-win32-arm64-msvc@15.3.3': optional: true - '@next/swc-win32-x64-msvc@15.3.1': + '@next/swc-win32-x64-msvc@15.3.3': optional: true '@noble/ciphers@1.3.0': {} @@ -9817,7 +9836,7 @@ snapshots: - aws-crt - supports-color - '@opentelemetry/api-logs@0.200.0': + '@opentelemetry/api-logs@0.202.0': dependencies: '@opentelemetry/api': 1.9.0 @@ -9828,19 +9847,17 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/core@2.0.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.32.0 + '@opentelemetry/semantic-conventions': 1.34.0 - '@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation@0.202.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.200.0 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.13.1 + '@opentelemetry/api-logs': 0.202.0 + import-in-the-middle: 1.14.0 require-in-the-middle: 7.5.2 - shimmer: 1.2.1 transitivePeerDependencies: - supports-color @@ -9850,18 +9867,18 @@ snapshots: '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/resources@2.0.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resources@2.0.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.32.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.34.0 - '@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-logs@0.202.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.200.0 - '@opentelemetry/core': 2.0.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.202.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0)': dependencies: @@ -9878,7 +9895,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.28.0': {} - '@opentelemetry/semantic-conventions@1.32.0': {} + '@opentelemetry/semantic-conventions@1.34.0': {} '@orama/core@0.1.8': dependencies: @@ -11108,7 +11125,7 @@ snapshots: '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3))': dependencies: - debug: 4.4.0 + debug: 4.4.1 endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 @@ -11417,8 +11434,6 @@ snapshots: '@types/semver@7.7.0': {} - '@types/shimmer@1.2.0': {} - '@types/supports-color@8.1.3': {} '@types/trusted-types@2.0.7': {} @@ -11467,7 +11482,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - debug: 4.4.0 + debug: 4.4.1 eslint: 9.26.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -11566,24 +11581,24 @@ snapshots: mdast-util-to-string: 3.2.0 unist-util-visit: 4.1.2 - '@vercel/analytics@1.5.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@vercel/analytics@1.5.0(next@15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': optionalDependencies: - next: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 - '@vercel/otel@1.11.0(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.200.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': + '@vercel/otel@1.12.0(@opentelemetry/api-logs@0.202.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.200.0 - '@opentelemetry/instrumentation': 0.200.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.202.0 + '@opentelemetry/instrumentation': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.200.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@vercel/speed-insights@1.2.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@vercel/speed-insights@1.2.0(next@15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': optionalDependencies: - next: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 '@vitest/expect@3.0.9': @@ -11893,7 +11908,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.0 + debug: 4.4.1 http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 @@ -11922,7 +11937,7 @@ snapshots: browserslist@4.24.5: dependencies: - caniuse-lite: 1.0.30001716 + caniuse-lite: 1.0.30001720 electron-to-chromium: 1.5.149 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.5) @@ -11969,7 +11984,7 @@ snapshots: pascal-case: 3.1.2 tslib: 2.8.1 - caniuse-lite@1.0.30001716: {} + caniuse-lite@1.0.30001720: {} case-sensitive-paths-webpack-plugin@2.4.0: {} @@ -12230,6 +12245,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.1: + dependencies: + ms: 2.1.3 + decimal.js@10.5.0: {} decode-named-character-reference@1.1.0: @@ -13035,7 +13054,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.0 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -13133,7 +13152,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -13602,7 +13621,7 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-in-the-middle@1.13.1: + import-in-the-middle@1.14.0: dependencies: acorn: 8.14.1 acorn-import-attributes: 1.9.5(acorn@8.14.1) @@ -14591,7 +14610,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.1 decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -14708,11 +14727,11 @@ snapshots: neo-async@2.6.2: {} - next-intl@4.1.0(next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + next-intl@4.1.0(next@15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0 - next: 15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 use-intl: 4.1.0(react@19.1.0) optionalDependencies: @@ -14723,29 +14742,29 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - next@15.3.1(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.3.1 + '@next/env': 15.3.3 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001716 + caniuse-lite: 1.0.30001720 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.3.1 - '@next/swc-darwin-x64': 15.3.1 - '@next/swc-linux-arm64-gnu': 15.3.1 - '@next/swc-linux-arm64-musl': 15.3.1 - '@next/swc-linux-x64-gnu': 15.3.1 - '@next/swc-linux-x64-musl': 15.3.1 - '@next/swc-win32-arm64-msvc': 15.3.1 - '@next/swc-win32-x64-msvc': 15.3.1 + '@next/swc-darwin-arm64': 15.3.3 + '@next/swc-darwin-x64': 15.3.3 + '@next/swc-linux-arm64-gnu': 15.3.3 + '@next/swc-linux-arm64-musl': 15.3.3 + '@next/swc-linux-x64-gnu': 15.3.3 + '@next/swc-linux-x64-musl': 15.3.3 + '@next/swc-win32-arm64-msvc': 15.3.3 + '@next/swc-win32-x64-msvc': 15.3.3 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.52.0 - sharp: 0.34.1 + sharp: 0.34.2 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -15893,7 +15912,7 @@ snapshots: require-in-the-middle@7.5.2: dependencies: - debug: 4.4.0 + debug: 4.4.1 module-details-from-path: 1.0.4 resolve: 1.22.10 transitivePeerDependencies: @@ -15934,7 +15953,7 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -16007,7 +16026,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -16085,14 +16104,14 @@ snapshots: '@img/sharp-win32-x64': 0.33.5 optional: true - sharp@0.34.1: + sharp@0.34.2: dependencies: color: 4.2.3 detect-libc: 2.0.4 semver: 7.7.2 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.1 - '@img/sharp-darwin-x64': 0.34.1 + '@img/sharp-darwin-arm64': 0.34.2 + '@img/sharp-darwin-x64': 0.34.2 '@img/sharp-libvips-darwin-arm64': 1.1.0 '@img/sharp-libvips-darwin-x64': 1.1.0 '@img/sharp-libvips-linux-arm': 1.1.0 @@ -16102,15 +16121,16 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.1.0 '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 '@img/sharp-libvips-linuxmusl-x64': 1.1.0 - '@img/sharp-linux-arm': 0.34.1 - '@img/sharp-linux-arm64': 0.34.1 - '@img/sharp-linux-s390x': 0.34.1 - '@img/sharp-linux-x64': 0.34.1 - '@img/sharp-linuxmusl-arm64': 0.34.1 - '@img/sharp-linuxmusl-x64': 0.34.1 - '@img/sharp-wasm32': 0.34.1 - '@img/sharp-win32-ia32': 0.34.1 - '@img/sharp-win32-x64': 0.34.1 + '@img/sharp-linux-arm': 0.34.2 + '@img/sharp-linux-arm64': 0.34.2 + '@img/sharp-linux-s390x': 0.34.2 + '@img/sharp-linux-x64': 0.34.2 + '@img/sharp-linuxmusl-arm64': 0.34.2 + '@img/sharp-linuxmusl-x64': 0.34.2 + '@img/sharp-wasm32': 0.34.2 + '@img/sharp-win32-arm64': 0.34.2 + '@img/sharp-win32-ia32': 0.34.2 + '@img/sharp-win32-x64': 0.34.2 optional: true shebang-command@2.0.0: @@ -16141,8 +16161,6 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shimmer@1.2.1: {} - side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -16630,32 +16648,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.5.2: + turbo-darwin-64@2.5.4: optional: true - turbo-darwin-arm64@2.5.2: + turbo-darwin-arm64@2.5.4: optional: true - turbo-linux-64@2.5.2: + turbo-linux-64@2.5.4: optional: true - turbo-linux-arm64@2.5.2: + turbo-linux-arm64@2.5.4: optional: true - turbo-windows-64@2.5.2: + turbo-windows-64@2.5.4: optional: true - turbo-windows-arm64@2.5.2: + turbo-windows-arm64@2.5.4: optional: true - turbo@2.5.2: + turbo@2.5.4: optionalDependencies: - turbo-darwin-64: 2.5.2 - turbo-darwin-arm64: 2.5.2 - turbo-linux-64: 2.5.2 - turbo-linux-arm64: 2.5.2 - turbo-windows-64: 2.5.2 - turbo-windows-arm64: 2.5.2 + turbo-darwin-64: 2.5.4 + turbo-darwin-arm64: 2.5.4 + turbo-linux-64: 2.5.4 + turbo-linux-arm64: 2.5.4 + turbo-windows-64: 2.5.4 + turbo-windows-arm64: 2.5.4 type-check@0.4.0: dependencies: @@ -16752,7 +16770,7 @@ snapshots: '@types/node': 22.15.3 '@types/unist': 3.0.3 concat-stream: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 extend: 3.0.2 glob: 10.4.5 ignore: 6.0.2 From 76b9440b92d63dfcc72150e14795f6958c55c2ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 13:18:52 +0000 Subject: [PATCH 0523/1385] meta: bump the lint group with 9 updates (#7812) Bumps the lint group with 9 updates: | Package | From | To | | --- | --- | --- | | [lint-staged](https://github.com/lint-staged/lint-staged) | `15.5.1` | `16.1.0` | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.26.0` | `9.28.0` | | [eslint](https://github.com/eslint/eslint) | `9.26.0` | `9.28.0` | | [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) | `4.11.0` | `4.11.1` | | [eslint-import-resolver-typescript](https://github.com/import-js/eslint-import-resolver-typescript) | `4.3.4` | `4.3.5` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.31.1` | `8.33.0` | | [stylelint](https://github.com/stylelint/stylelint) | `16.19.1` | `16.20.0` | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `15.3.1` | `15.3.3` | | [eslint-plugin-mdx](https://github.com/mdx-js/eslint-mdx) | `3.4.1` | `3.4.2` | Updates `lint-staged` from 15.5.1 to 16.1.0 - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](https://github.com/lint-staged/lint-staged/compare/v15.5.1...v16.1.0) Updates `@eslint/js` from 9.26.0 to 9.28.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.28.0/packages/js) Updates `eslint` from 9.26.0 to 9.28.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.26.0...v9.28.0) Updates `eslint-plugin-import-x` from 4.11.0 to 4.11.1 - [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.11.0...v4.11.1) Updates `eslint-import-resolver-typescript` from 4.3.4 to 4.3.5 - [Release notes](https://github.com/import-js/eslint-import-resolver-typescript/releases) - [Changelog](https://github.com/import-js/eslint-import-resolver-typescript/blob/master/CHANGELOG.md) - [Commits](https://github.com/import-js/eslint-import-resolver-typescript/compare/v4.3.4...v4.3.5) Updates `typescript-eslint` from 8.31.1 to 8.33.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.33.0/packages/typescript-eslint) Updates `stylelint` from 16.19.1 to 16.20.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.19.1...16.20.0) Updates `eslint-config-next` from 15.3.1 to 15.3.3 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v15.3.3/packages/eslint-config-next) Updates `eslint-plugin-mdx` from 3.4.1 to 3.4.2 - [Release notes](https://github.com/mdx-js/eslint-mdx/releases) - [Changelog](https://github.com/mdx-js/eslint-mdx/blob/master/CHANGELOG.md) - [Commits](https://github.com/mdx-js/eslint-mdx/compare/eslint-plugin-mdx@3.4.1...eslint-plugin-mdx@3.4.2) --- updated-dependencies: - dependency-name: lint-staged dependency-version: 16.1.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: lint - dependency-name: "@eslint/js" dependency-version: 9.28.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint dependency-version: 9.28.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint-plugin-import-x dependency-version: 4.11.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint - dependency-name: eslint-import-resolver-typescript dependency-version: 4.3.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint - dependency-name: typescript-eslint dependency-version: 8.33.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: stylelint dependency-version: 16.20.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint - dependency-name: eslint-config-next dependency-version: 15.3.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint - dependency-name: eslint-plugin-mdx dependency-version: 3.4.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 10 +- package.json | 8 +- packages/i18n/package.json | 4 +- packages/ui-components/package.json | 4 +- pnpm-lock.yaml | 1124 ++++++++++++++------------- 5 files changed, 607 insertions(+), 543 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 2631f112bd048..b175ddfdf9f70 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -82,9 +82,9 @@ "@playwright/test": "^1.52.0", "@testing-library/user-event": "~14.6.1", "@types/semver": "~7.7.0", - "eslint-config-next": "15.3.1", - "eslint-import-resolver-typescript": "~4.3.1", - "eslint-plugin-mdx": "~3.4.0", + "eslint-config-next": "15.3.3", + "eslint-import-resolver-typescript": "~4.4.2", + "eslint-plugin-mdx": "~3.4.2", "eslint-plugin-react": "~7.37.4", "eslint-plugin-react-hooks": "5.2.0", "global-jsdom": "^26.0.0", @@ -101,13 +101,13 @@ "remark-lint-prohibited-strings": "^4.0.0", "remark-lint-unordered-list-marker-style": "^4.0.1", "remark-preset-lint-node": "5.1.2", - "stylelint": "16.19.1", + "stylelint": "16.20.0", "stylelint-config-standard": "38.0.0", "stylelint-order": "7.0.0", "stylelint-selector-bem-pattern": "4.0.1", "tsx": "^4.19.3", "typescript": "~5.8.2", - "typescript-eslint": "~8.31.1", + "typescript-eslint": "~8.33.1", "user-agent-data-types": "0.4.2", "wrangler": "^4.13.0" }, diff --git a/package.json b/package.json index b51eb1bfaa2a1..f1858901b6e17 100644 --- a/package.json +++ b/package.json @@ -34,16 +34,16 @@ }, "dependencies": { "husky": "9.1.7", - "lint-staged": "15.5.1", + "lint-staged": "16.1.0", "turbo": "2.5.4" }, "devDependencies": { - "@eslint/js": "~9.26.0", + "@eslint/js": "~9.28.0", "@reporters/github": "^1.7.2", "@testing-library/react": "~16.3.0", "cross-env": "^7.0.3", - "eslint": "~9.26.0", - "eslint-plugin-import-x": "~4.11.0", + "eslint": "~9.28.0", + "eslint-plugin-import-x": "~4.15.0", "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.12" }, diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 308ca4d39ed8d..2505a64f47a40 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -23,8 +23,8 @@ "lint:js": "eslint \"**/*.{js,mjs,ts}\"" }, "devDependencies": { - "eslint-import-resolver-typescript": "~4.3.1", + "eslint-import-resolver-typescript": "~4.4.2", "typescript": "~5.8.2", - "typescript-eslint": "~8.31.1" + "typescript-eslint": "~8.33.1" } } diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index c8e7ec0b459d5..651d459009575 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -66,13 +66,13 @@ "react": "^19.1.0", "storybook": "^9.0.3", "style-loader": "~4.0.0", - "stylelint": "^16.19.1", + "stylelint": "^16.20.0", "stylelint-config-standard": "^38.0.0", "stylelint-order": "7.0.0", "stylelint-selector-bem-pattern": "4.0.1", "tsx": "^4.19.3", "typescript": "~5.8.2", - "typescript-eslint": "~8.31.1" + "typescript-eslint": "~8.33.1" }, "imports": { "#ui/*": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a3288d9c697d..bbe1bf2ac4b73 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,15 +12,15 @@ importers: specifier: 9.1.7 version: 9.1.7 lint-staged: - specifier: 15.5.1 - version: 15.5.1 + specifier: 16.1.0 + version: 16.1.0 turbo: specifier: 2.5.4 version: 2.5.4 devDependencies: '@eslint/js': - specifier: ~9.26.0 - version: 9.26.0 + specifier: ~9.28.0 + version: 9.28.0 '@reporters/github': specifier: ^1.7.2 version: 1.7.2 @@ -31,11 +31,11 @@ importers: specifier: ^7.0.3 version: 7.0.3 eslint: - specifier: ~9.26.0 - version: 9.26.0(jiti@2.4.2) + specifier: ~9.28.0 + version: 9.28.0(jiti@2.4.2) eslint-plugin-import-x: - specifier: ~4.11.0 - version: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~4.15.0 + version: 4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)) prettier: specifier: 3.5.3 version: 3.5.3 @@ -183,7 +183,7 @@ importers: devDependencies: '@eslint/compat': specifier: ~1.2.8 - version: 1.2.9(eslint@9.26.0(jiti@2.4.2)) + version: 1.2.9(eslint@9.28.0(jiti@2.4.2)) '@eslint/eslintrc': specifier: ~3.3.1 version: 3.3.1 @@ -206,20 +206,20 @@ importers: specifier: ~7.7.0 version: 7.7.0 eslint-config-next: - specifier: 15.3.1 - version: 15.3.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + specifier: 15.3.3 + version: 15.3.3(eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) eslint-import-resolver-typescript: - specifier: ~4.3.1 - version: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + specifier: ~4.4.2 + version: 4.4.2(eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)))(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)) eslint-plugin-mdx: - specifier: ~3.4.0 - version: 3.4.1(eslint@9.26.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) + specifier: ~3.4.2 + version: 3.4.2(eslint@9.28.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) eslint-plugin-react: specifier: ~7.37.4 - version: 7.37.5(eslint@9.26.0(jiti@2.4.2)) + version: 7.37.5(eslint@9.28.0(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: 5.2.0 - version: 5.2.0(eslint@9.26.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.28.0(jiti@2.4.2)) global-jsdom: specifier: ^26.0.0 version: 26.0.0(jsdom@26.1.0) @@ -263,17 +263,17 @@ importers: specifier: 5.1.2 version: 5.1.2 stylelint: - specifier: 16.19.1 - version: 16.19.1(typescript@5.8.3) + specifier: 16.20.0 + version: 16.20.0(typescript@5.8.3) stylelint-config-standard: specifier: 38.0.0 - version: 38.0.0(stylelint@16.19.1(typescript@5.8.3)) + version: 38.0.0(stylelint@16.20.0(typescript@5.8.3)) stylelint-order: specifier: 7.0.0 - version: 7.0.0(stylelint@16.19.1(typescript@5.8.3)) + version: 7.0.0(stylelint@16.20.0(typescript@5.8.3)) stylelint-selector-bem-pattern: specifier: 4.0.1 - version: 4.0.1(stylelint@16.19.1(typescript@5.8.3)) + version: 4.0.1(stylelint@16.20.0(typescript@5.8.3)) tsx: specifier: ^4.19.3 version: 4.19.4 @@ -281,8 +281,8 @@ importers: specifier: ~5.8.2 version: 5.8.3 typescript-eslint: - specifier: ~8.31.1 - version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~8.33.1 + version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) user-agent-data-types: specifier: 0.4.2 version: 0.4.2 @@ -293,14 +293,14 @@ importers: packages/i18n: devDependencies: eslint-import-resolver-typescript: - specifier: ~4.3.1 - version: 4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + specifier: ~4.4.2 + version: 4.4.2(eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)))(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)) typescript: specifier: ~5.8.2 version: 5.8.3 typescript-eslint: - specifier: ~8.31.1 - version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~8.33.1 + version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) packages/rehype-shiki: dependencies: @@ -403,10 +403,10 @@ importers: version: 7.1.2(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) eslint-plugin-react: specifier: ~7.37.4 - version: 7.37.5(eslint@9.26.0(jiti@2.4.2)) + version: 7.37.5(eslint@9.28.0(jiti@2.4.2)) eslint-plugin-storybook: specifier: ~9.0.3 - version: 9.0.3(eslint@9.26.0(jiti@2.4.2))(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) + version: 9.0.3(eslint@9.28.0(jiti@2.4.2))(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) global-jsdom: specifier: ^26.0.0 version: 26.0.0(jsdom@26.1.0) @@ -423,17 +423,17 @@ importers: specifier: ~4.0.0 version: 4.0.0(webpack@5.99.7(@swc/core@1.11.24)(esbuild@0.25.3)) stylelint: - specifier: ^16.19.1 - version: 16.19.1(typescript@5.8.3) + specifier: ^16.20.0 + version: 16.20.0(typescript@5.8.3) stylelint-config-standard: specifier: ^38.0.0 - version: 38.0.0(stylelint@16.19.1(typescript@5.8.3)) + version: 38.0.0(stylelint@16.20.0(typescript@5.8.3)) stylelint-order: specifier: 7.0.0 - version: 7.0.0(stylelint@16.19.1(typescript@5.8.3)) + version: 7.0.0(stylelint@16.20.0(typescript@5.8.3)) stylelint-selector-bem-pattern: specifier: 4.0.1 - version: 4.0.1(stylelint@16.19.1(typescript@5.8.3)) + version: 4.0.1(stylelint@16.20.0(typescript@5.8.3)) tsx: specifier: ^4.19.3 version: 4.19.4 @@ -441,8 +441,8 @@ importers: specifier: ~5.8.2 version: 5.8.3 typescript-eslint: - specifier: ~8.31.1 - version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ~8.33.1 + version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) packages: @@ -947,22 +947,22 @@ packages: '@csstools/css-parser-algorithms': ^3.0.4 '@csstools/css-tokenizer': ^3.0.3 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@csstools/media-query-list-parser@4.0.2': - resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 '@csstools/selector-specificity@5.0.0': resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} @@ -1451,24 +1451,24 @@ packages: resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.13.0': - resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.26.0': - resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} + '@eslint/js@9.28.0': + resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.8': - resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + '@eslint/plugin-kit@0.3.1': + resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/busboy@2.1.1': @@ -1533,8 +1533,8 @@ packages: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@img/sharp-darwin-arm64@0.33.5': @@ -1807,19 +1807,12 @@ packages: '@mdx-js/mdx@3.1.0': resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} - '@modelcontextprotocol/sdk@1.11.0': - resolution: {integrity: sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==} - engines: {node: '>=18'} - - '@napi-rs/wasm-runtime@0.2.9': - resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} + '@napi-rs/wasm-runtime@0.2.10': + resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} '@next/env@15.3.3': resolution: {integrity: sha512-OdiMrzCl2Xi0VTjiQQUK0Xh7bJHnOuET2s+3V+Y40WJBAXrJeGA3f+I8MZJ/YQ3mVGi5XGR1L66oFlgqXhQ4Vw==} - '@next/eslint-plugin-next@15.3.1': - resolution: {integrity: sha512-oEs4dsfM6iyER3jTzMm4kDSbrQJq8wZw5fmT6fg2V3SMo+kgG+cShzLfEV20senZzv8VF+puNLheiGPlBGsv2A==} - '@next/eslint-plugin-next@15.3.3': resolution: {integrity: sha512-VKZJEiEdpKkfBmcokGjHu0vGDG+8CehGs90tBEy/IDoDDKGngeyIStt2MmE5FYNyU9BhgR7tybNWTAJY/30u+Q==} @@ -2054,8 +2047,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.2.4': - resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} + '@pkgr/core@0.2.7': + resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@playwright/test@1.52.0': @@ -3310,27 +3303,43 @@ packages: '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - '@typescript-eslint/eslint-plugin@8.31.1': - resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==} + '@typescript-eslint/eslint-plugin@8.33.1': + resolution: {integrity: sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + '@typescript-eslint/parser': ^8.33.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.31.1': - resolution: {integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==} + '@typescript-eslint/parser@8.33.1': + resolution: {integrity: sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/project-service@8.33.1': + resolution: {integrity: sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/scope-manager@8.31.1': resolution: {integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.31.1': - resolution: {integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==} + '@typescript-eslint/scope-manager@8.33.1': + resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.33.1': + resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/type-utils@8.33.1': + resolution: {integrity: sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3340,12 +3349,22 @@ packages: resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.33.1': + resolution: {integrity: sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.31.1': resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/typescript-estree@8.33.1': + resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/utils@8.31.1': resolution: {integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3353,95 +3372,106 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/utils@8.33.1': + resolution: {integrity: sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/visitor-keys@8.31.1': resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.33.1': + resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@unrs/resolver-binding-darwin-arm64@1.7.2': - resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} + '@unrs/resolver-binding-darwin-arm64@1.7.9': + resolution: {integrity: sha512-hWbcVTcNqgUirY5DC3heOLrz35D926r2izfxveBmuIgDwx9KkUHfqd93g8PtROJX01lvhmyAc3E09/ma6jhyqQ==} cpu: [arm64] os: [darwin] - '@unrs/resolver-binding-darwin-x64@1.7.2': - resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==} + '@unrs/resolver-binding-darwin-x64@1.7.9': + resolution: {integrity: sha512-NCZb/oaXELjt8jtm6ztlNPpAxKZsKIxsGYPSxkwQdQ/zl7X2PfyCpWqwoGE4A9vCP6gAgJnvH3e22nE0qk9ieA==} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.7.2': - resolution: {integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==} + '@unrs/resolver-binding-freebsd-x64@1.7.9': + resolution: {integrity: sha512-/AYheGgFn9Pw3X3pYFCohznydaUA9980/wlwgbgCsVxnY4IbqVoZhTLQZ4JWKKaOWBwwmM8FseHf5h5OawyOQQ==} cpu: [x64] os: [freebsd] - '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': - resolution: {integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==} + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.9': + resolution: {integrity: sha512-RYV9sEH3o6SZum5wGb9evXlgibsVfluuiyi09hXVD+qPRrCSB45h3z1HjZpe9+c25GiN53CEy149fYS0fLVBtw==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': - resolution: {integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==} + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.9': + resolution: {integrity: sha512-0ishMZMCYNJd4SNjHnjByHWh6ia7EDVZrOVAW8wf9Vz2PTZ0pLrFwu5c9voHouGKg7s2cnzPz87c0OK7dwimUQ==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': - resolution: {integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==} + '@unrs/resolver-binding-linux-arm64-gnu@1.7.9': + resolution: {integrity: sha512-FOspRldYylONzWCkF5n/B1MMYKXXlg2bzgcgESEVcP4LFh0eom/0XsWvfy+dlfBJ+FkYfJjvBJeje14xOBOa6g==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-arm64-musl@1.7.2': - resolution: {integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==} + '@unrs/resolver-binding-linux-arm64-musl@1.7.9': + resolution: {integrity: sha512-P1S5jTht888/1mZVrBZx8IOxpikRDPoECxod1CcAHYUZGUNr+PNp1m5eB9FWMK2zRCJ8HgHNZfdRyDf9pNCrlQ==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': - resolution: {integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==} + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.9': + resolution: {integrity: sha512-cD9+BPxlFSiIkGWknSgKdTMGZIzCtSIg/O7GJ1LoC+jGtUOBNBJYMn6FyEPRvdpphewYzaCuPsikrMkpdX303Q==} cpu: [ppc64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': - resolution: {integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==} + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.9': + resolution: {integrity: sha512-Z6IuWg9u0257dCVgc/x/zIKamqJhrmaOFuq3AYsSt6ZtyEHoyD5kxdXQUvEgBAd/Fn1b8tsX+VD9mB9al5306Q==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': - resolution: {integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==} + '@unrs/resolver-binding-linux-riscv64-musl@1.7.9': + resolution: {integrity: sha512-HpINrXLJVEpvkHHIla6pqhMAKbQBrY+2946i6rF6OlByONLTuObg65bcv3A38qV9yqJ7vtE0FyfNn68k0uQKbg==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': - resolution: {integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==} + '@unrs/resolver-binding-linux-s390x-gnu@1.7.9': + resolution: {integrity: sha512-ZXZFfaPFXnrDIPpkFoAZmxzXwqqfCHfnFdZhrEd+mrc/hHTQyxINyzrFMFCqtAa5eIjD7vgzNIXsMFU2QBnCPw==} cpu: [s390x] os: [linux] - '@unrs/resolver-binding-linux-x64-gnu@1.7.2': - resolution: {integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==} + '@unrs/resolver-binding-linux-x64-gnu@1.7.9': + resolution: {integrity: sha512-EzeeaZnuQOa93ox08oa9DqgQc8sK59jfs+apOUrZZSJCDG1ZbtJINPc8uRqE7p3Z66FPAe/uO3+7jZTkWbVDfg==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-linux-x64-musl@1.7.2': - resolution: {integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==} + '@unrs/resolver-binding-linux-x64-musl@1.7.9': + resolution: {integrity: sha512-a07ezNt0OY8Vv/iDreJo7ZkKtwRb6UCYaCcMY2nm3ext7rTtDFS7X1GePqrbByvIbRFd6E5q1CKBPzJk6M360Q==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-wasm32-wasi@1.7.2': - resolution: {integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==} + '@unrs/resolver-binding-wasm32-wasi@1.7.9': + resolution: {integrity: sha512-d0fHnxgtrv75Po6LKJLjo1LFC5S0E8vv86H/5wGDFLG0AvS/0k+SghgUW6zAzjM2XRAic/qcy9+O7n/5JOjxFA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': - resolution: {integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==} + '@unrs/resolver-binding-win32-arm64-msvc@1.7.9': + resolution: {integrity: sha512-0MFcaQDsUYxNqRxjPdsMKg1OGtmsqLzPY2Nwiiyalx6HFvkcHxgRCAOppgeUuDucpUEf76k/4tBzfzPxjYkFUg==} cpu: [arm64] os: [win32] - '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': - resolution: {integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==} + '@unrs/resolver-binding-win32-ia32-msvc@1.7.9': + resolution: {integrity: sha512-SiewmebiN32RpzrV1Dvbw7kdDCRuPThdgEWKJvDNcEGnVEV3ScYGuk5smJjKHXszqNX3mIXG/PcCXqHsE/7XGA==} cpu: [ia32] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.7.2': - resolution: {integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==} + '@unrs/resolver-binding-win32-x64-msvc@1.7.9': + resolution: {integrity: sha512-hORofIRZCm85+TUZ9OmHQJNlgtOmK/TPfvYeSplKAl+zQvAwMGyy6DZcSbrF+KdB1EDoGISwU7dX7PE92haOXg==} cpu: [x64] os: [win32] @@ -3694,6 +3724,10 @@ packages: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -3825,8 +3859,8 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cacheable@1.8.10: - resolution: {integrity: sha512-0ZnbicB/N2R6uziva8l6O6BieBklArWyiGx4GkwAhLKhSHyQtRfM9T1nx7HHuHDKkYB/efJQhz3QJ6x/YqoZzA==} + cacheable@1.9.0: + resolution: {integrity: sha512-8D5htMCxPDUULux9gFzv30f04Xo3wCnik0oOxKoRTPIBoqA7HtOcJ87uBhQTs3jCfZZTrUBGsYIZOgE0ZRgMAg==} call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -3959,9 +3993,9 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} - commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} - engines: {node: '>=18'} + commander@14.0.0: + resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} + engines: {node: '>=20'} commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -4007,10 +4041,6 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -4339,6 +4369,10 @@ packages: resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -4415,8 +4449,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-next@15.3.1: - resolution: {integrity: sha512-GnmyVd9TE/Ihe3RrvcafFhXErErtr2jS0JDeCSp3vWvy86AXwHsRBt0E3MqP/m8ACS1ivcsi5uaqjbhsG18qKw==} + eslint-config-next@15.3.3: + resolution: {integrity: sha512-QJLv/Ouk2vZnxL4b67njJwTLjTf7uZRltI0LL4GERYR4qMF5z08+gxkfODAeaK7TiC6o+cER91bDaEnwrTWV6Q==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' @@ -4424,6 +4458,15 @@ packages: typescript: optional: true + eslint-import-context@0.1.6: + resolution: {integrity: sha512-/e2ZNPDLCrU8niIy0pddcvXuoO2YrKjf3NAIX+60mHJBT4yv7mqCqvVdyCW2E720e25e4S/1OSVef4U6efGLFg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + peerDependencies: + unrs-resolver: ^1.0.0 + peerDependenciesMeta: + unrs-resolver: + optional: true + eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -4440,8 +4483,8 @@ packages: eslint-plugin-import-x: optional: true - eslint-import-resolver-typescript@4.3.4: - resolution: {integrity: sha512-buzw5z5VtiQMysYLH9iW9BV04YyZebsw+gPi+c4FCjfS9i6COYOrEWw9t3m3wA9PFBfqcBCqWf32qrXLbwafDw==} + eslint-import-resolver-typescript@4.4.2: + resolution: {integrity: sha512-GdSOy0PwLYpQCrmnEQujvA+X0NKrdnVCICEbZq1zlmjjD12NHOHCN9MYyrGFR9ydCs4wJwHEV9tts44ajSlGeA==} engines: {node: ^16.17.0 || >=18.6.0} peerDependencies: eslint: '*' @@ -4453,8 +4496,8 @@ packages: eslint-plugin-import-x: optional: true - eslint-mdx@3.4.1: - resolution: {integrity: sha512-/Pt9D5TIAZwAUnCJA24i+uE9NuqulmLI58a1oU1eRb5jeUNOR23FpIt4xuBE9CFR50nd4FkLnuyox7dSNSZ5Tg==} + eslint-mdx@3.4.2: + resolution: {integrity: sha512-NYNGuBClNzYzTJWbPzeYSh/eCl5m4BrX1MayNuGuvxn+cItTdNirE+ykos9q1CkYhHj+ZgQz6W+6EIaHMp7/jQ==} engines: {node: '>=18.0.0'} peerDependencies: eslint: '>=8.0.0' @@ -4484,11 +4527,18 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import-x@4.11.0: - resolution: {integrity: sha512-NAaYY49342gj09QGvwnFFl5KcD5aLzjAz97Lo+upnN8MzjEGSIlmL5sxCYGqtIeMjw8fSRDFZIp2xjRLT+yl4Q==} + eslint-plugin-import-x@4.15.0: + resolution: {integrity: sha512-oqCESQlM8r0iRioPHmDqrblH69u11NuglErCnMIY2FcY0UfCCs7qlEuiuqkYKT0puJSQq+fXpDD0MvMTQsAhoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: + '@typescript-eslint/utils': ^8.0.0 eslint: ^8.57.0 || ^9.0.0 + eslint-import-resolver-node: '*' + peerDependenciesMeta: + '@typescript-eslint/utils': + optional: true + eslint-import-resolver-node: + optional: true eslint-plugin-import@2.31.0: resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} @@ -4506,8 +4556,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-mdx@3.4.1: - resolution: {integrity: sha512-dfQ7LthK/Kmfw2d5XrR4CS1ScmFOa1S9vPjBUxtKgCEl6mNnYVfA/yg50xLyab0pI/GEfGEmvlajs2biDHJBsA==} + eslint-plugin-mdx@3.4.2: + resolution: {integrity: sha512-deXcJ4hTLkQ7F2JLto74UXeDkZYXu1Xtgvy0ZHlJ4CNwCYAZier3qNvTMBwE9VEnowxN+TgB18OhMLYyaR9hXA==} engines: {node: '>=18.0.0'} peerDependencies: eslint: '>=8.0.0' @@ -4547,8 +4597,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.26.0: - resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} + eslint@9.28.0: + resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4624,40 +4674,18 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - eventsource-parser@3.0.1: - resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} - engines: {node: '>=18.0.0'} - - eventsource@3.0.6: - resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} - engines: {node: '>=18.0.0'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - exit-hook@2.2.1: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} - express-rate-limit@7.5.0: - resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} - engines: {node: '>= 16'} - peerDependencies: - express: ^4.11 || 5 || ^5.0.0-beta.1 - express@5.0.1: resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==} engines: {node: '>= 18'} - express@5.1.0: - resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} - engines: {node: '>= 18'} - exsolve@1.0.5: resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} @@ -4717,12 +4745,20 @@ packages: picomatch: optional: true + fdir@6.4.5: + resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + feed@5.1.0: resolution: {integrity: sha512-qGNhgYygnefSkAHHrNHqC7p3R8J0/xQDS/cYUud8er/qD9EFGWyCdUDfULHTJQN1d3H3WprzVwMc9MfB4J50Wg==} engines: {node: '>=20', pnpm: '>=10'} - file-entry-cache@10.0.8: - resolution: {integrity: sha512-FGXHpfmI4XyzbLd3HQ8cbUcsFGohJpZtmQRHr8z8FxxtCe2PcpgIlVLwIgunqjvRmXypBETvwhV4ptJizA+Y1Q==} + file-entry-cache@10.1.0: + resolution: {integrity: sha512-Et/ex6smi3wOOB+n5mek+Grf7P2AxZR5ueqRUvAAn4qkyatXi3cUC1cuQXVkX0VlzBVsN4BkWJFmY/fYiRTdww==} file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} @@ -4756,8 +4792,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flat-cache@6.1.8: - resolution: {integrity: sha512-R6MaD3nrJAtO7C3QOuS79ficm2pEAy++TgEUD8ii1LVlbcgZ9DtASLkt9B+RZSFCzm7QHDMlXPsqqB6W2Pfr1Q==} + flat-cache@6.1.9: + resolution: {integrity: sha512-DUqiKkTlAfhtl7g78IuwqYM+YqvT+as0mY+EVk6mfimy19U79pJCzDZQsnqk3Ou/T6hFXWLGbwbADzD/c8Tydg==} flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} @@ -4846,10 +4882,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -4857,6 +4889,9 @@ packages: get-tsconfig@4.10.0: resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -5000,8 +5035,8 @@ packages: resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} engines: {node: '>=12.0.0'} - hookified@1.8.2: - resolution: {integrity: sha512-5nZbBNP44sFCDjSoB//0N7m508APCgbQ4mGGo1KJGBYyCKNHfry1Pvd0JVHZIxjdnqn8nFRBAN/eFB6Rk/4w5w==} + hookified@1.9.1: + resolution: {integrity: sha512-u3pxtGhKjcSXnGm1CX6aXS9xew535j3lkOCegbA6jdyh0BaAjTbXI4aslKstCr6zUNtoCxFGFKwjbSHdGrMB8g==} hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} @@ -5072,10 +5107,6 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -5102,8 +5133,8 @@ packages: resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} engines: {node: '>= 4'} - ignore@7.0.4: - resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} import-fresh@3.3.1: @@ -5257,6 +5288,10 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -5295,10 +5330,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -5526,13 +5557,13 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lint-staged@15.5.1: - resolution: {integrity: sha512-6m7u8mue4Xn6wK6gZvSCQwBvMBR36xfY24nF5bMTf2MHDYG6S3yhJuOgdYVw99hsjyDt2d4z168b3naI8+NWtQ==} - engines: {node: '>=18.12.0'} + lint-staged@16.1.0: + resolution: {integrity: sha512-HkpQh69XHxgCjObjejBT3s2ILwNjFx8M3nw+tJ/ssBauDlIpkx2RpqWSi1fBgkXLSSXnbR3iEq1NkVtpvV+FLQ==} + engines: {node: '>=20.17'} hasBin: true - listr2@8.3.2: - resolution: {integrity: sha512-vsBzcU4oE+v0lj4FhVLzr9dBTv4/fHIa57l+GCwovP8MoFNZJTOhGU8PXd4v2VJCbECAaijBiHntiekFMLvo0g==} + listr2@8.3.3: + resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} engines: {node: '>=18.0.0'} lit-element@4.2.0: @@ -5871,10 +5902,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} @@ -5948,13 +5975,17 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + nano-spawn@1.0.2: + resolution: {integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==} + engines: {node: '>=20.17'} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.2.3: - resolution: {integrity: sha512-Mi7JISo/4Ij2tDZ2xBE2WH+/KvVlkhA6juEjpEeRAVPNCpN3nxJo/5FhDNKgBcdmcmhaH6JjgST4xY/23ZYK0w==} + napi-postinstall@0.2.4: + resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -6047,10 +6078,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -6113,10 +6140,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - onetime@7.0.0: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} @@ -6208,10 +6231,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -6257,10 +6276,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - pkce-challenge@5.0.0: - resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} - engines: {node: '>=16.20.0'} - pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -7039,6 +7054,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} @@ -7125,10 +7144,6 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -7202,8 +7217,8 @@ packages: peerDependencies: stylelint: ^16.2.1 - stylelint@16.19.1: - resolution: {integrity: sha512-C1SlPZNMKl+d/C867ZdCRthrS+6KuZ3AoGW113RZCOL0M8xOGpgx7G70wq7lFvqvm4dcfdGFVLB/mNaLFChRKw==} + stylelint@16.20.0: + resolution: {integrity: sha512-B5Myu9WRxrgKuLs3YyUXLP2H0mrbejwNxPmyADlACWwFsrL8Bmor/nTSh4OMae5sHjOz6gkSeccQH34gM4/nAw==} engines: {node: '>=18.12.0'} hasBin: true @@ -7242,8 +7257,8 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.11.4: - resolution: {integrity: sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==} + synckit@0.11.8: + resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} engines: {node: ^14.18.0 || >=16.0.0} table@6.9.0: @@ -7297,8 +7312,8 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinyglobby@0.2.13: - resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} tinyrainbow@2.0.0: @@ -7441,8 +7456,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.31.1: - resolution: {integrity: sha512-j6DsEotD/fH39qKzXTQRwYYWlt7D+0HmfpOK+DVhwJOFLcdmn92hq3mBb7HlKJHbjjI/gTOqEcc9d6JfpFf/VA==} + typescript-eslint@8.33.1: + resolution: {integrity: sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -7543,8 +7558,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unrs-resolver@1.7.2: - resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} + unrs-resolver@1.7.9: + resolution: {integrity: sha512-hhFtY782YKwpz54G1db49YYS1RuMn8mBylIrCldrjb9BxZKnQ2xHw7+2zcl7H6fnUlTHGWv23/+677cpufhfxQ==} update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} @@ -7826,6 +7841,11 @@ packages: engines: {node: '>= 14'} hasBin: true + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -7876,10 +7896,10 @@ snapshots: '@asamuzakjp/css-color@3.1.5': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 '@ast-grep/napi-darwin-arm64@0.35.0': @@ -9016,28 +9036,28 @@ snapshots: '@csstools/color-helpers@5.0.2': {} - '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@3.0.3': {} + '@csstools/css-tokenizer@3.0.4': {} - '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': dependencies: @@ -9293,28 +9313,28 @@ snapshots: '@esbuild/win32-x64@0.25.3': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0(jiti@2.4.2))': dependencies: - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.9(eslint@9.26.0(jiti@2.4.2))': + '@eslint/compat@1.2.9(eslint@9.28.0(jiti@2.4.2))': optionalDependencies: - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) '@eslint/config-array@0.20.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.0 + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color '@eslint/config-helpers@0.2.2': {} - '@eslint/core@0.13.0': + '@eslint/core@0.14.0': dependencies: '@types/json-schema': 7.0.15 @@ -9332,13 +9352,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.26.0': {} + '@eslint/js@9.28.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.8': + '@eslint/plugin-kit@0.3.1': dependencies: - '@eslint/core': 0.13.0 + '@eslint/core': 0.14.0 levn: 0.4.1 '@fastify/busboy@2.1.1': {} @@ -9407,7 +9427,7 @@ snapshots: '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.2': {} + '@humanwhocodes/retry@0.4.3': {} '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: @@ -9649,22 +9669,7 @@ snapshots: - acorn - supports-color - '@modelcontextprotocol/sdk@1.11.0': - dependencies: - content-type: 1.0.5 - cors: 2.8.5 - cross-spawn: 7.0.6 - eventsource: 3.0.6 - express: 5.1.0 - express-rate-limit: 7.5.0(express@5.1.0) - pkce-challenge: 5.0.0 - raw-body: 3.0.0 - zod: 3.24.3 - zod-to-json-schema: 3.24.5(zod@3.24.3) - transitivePeerDependencies: - - supports-color - - '@napi-rs/wasm-runtime@0.2.9': + '@napi-rs/wasm-runtime@0.2.10': dependencies: '@emnapi/core': 1.4.3 '@emnapi/runtime': 1.4.3 @@ -9673,10 +9678,6 @@ snapshots: '@next/env@15.3.3': {} - '@next/eslint-plugin-next@15.3.1': - dependencies: - fast-glob: 3.3.1 - '@next/eslint-plugin-next@15.3.3': dependencies: fast-glob: 3.3.1 @@ -9819,7 +9820,7 @@ snapshots: express: 5.0.1 path-to-regexp: 6.3.0 urlpattern-polyfill: 10.0.0 - yaml: 2.7.1 + yaml: 2.8.0 transitivePeerDependencies: - aws-crt - supports-color @@ -9964,7 +9965,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.2.4': {} + '@pkgr/core@0.2.7': {} '@playwright/test@1.52.0': dependencies: @@ -11444,31 +11445,40 @@ snapshots: '@types/uuid@9.0.8': {} - '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/type-utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.31.1 - eslint: 9.26.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.33.1 + '@typescript-eslint/type-utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.33.1 + eslint: 9.28.0(jiti@2.4.2) graphemer: 1.4.0 - ignore: 5.3.2 + ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.31.1 - debug: 4.4.0 - eslint: 9.26.0(jiti@2.4.2) + '@typescript-eslint/scope-manager': 8.33.1 + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.33.1 + debug: 4.4.1 + eslint: 9.28.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.33.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) + '@typescript-eslint/types': 8.33.1 + debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -11478,12 +11488,21 @@ snapshots: '@typescript-eslint/types': 8.31.1 '@typescript-eslint/visitor-keys': 8.31.1 - '@typescript-eslint/type-utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/scope-manager@8.33.1': dependencies: - '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/visitor-keys': 8.33.1 + + '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + + '@typescript-eslint/type-utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.1 - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -11491,11 +11510,13 @@ snapshots: '@typescript-eslint/types@8.31.1': {} + '@typescript-eslint/types@8.33.1': {} + '@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 8.31.1 '@typescript-eslint/visitor-keys': 8.31.1 - debug: 4.4.0 + debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -11505,13 +11526,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.33.1(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@typescript-eslint/project-service': 8.33.1(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/visitor-keys': 8.33.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.31.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.31.1 '@typescript-eslint/types': 8.31.1 '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.33.1 + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) + eslint: 9.28.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -11521,59 +11569,64 @@ snapshots: '@typescript-eslint/types': 8.31.1 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.33.1': + dependencies: + '@typescript-eslint/types': 8.33.1 + eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.3.0': {} - '@unrs/resolver-binding-darwin-arm64@1.7.2': + '@unrs/resolver-binding-darwin-arm64@1.7.9': optional: true - '@unrs/resolver-binding-darwin-x64@1.7.2': + '@unrs/resolver-binding-darwin-x64@1.7.9': optional: true - '@unrs/resolver-binding-freebsd-x64@1.7.2': + '@unrs/resolver-binding-freebsd-x64@1.7.9': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.9': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.9': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + '@unrs/resolver-binding-linux-arm64-gnu@1.7.9': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + '@unrs/resolver-binding-linux-arm64-musl@1.7.9': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.9': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.9': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + '@unrs/resolver-binding-linux-riscv64-musl@1.7.9': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + '@unrs/resolver-binding-linux-s390x-gnu@1.7.9': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + '@unrs/resolver-binding-linux-x64-gnu@1.7.9': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.7.2': + '@unrs/resolver-binding-linux-x64-musl@1.7.9': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.7.2': + '@unrs/resolver-binding-wasm32-wasi@1.7.9': dependencies: - '@napi-rs/wasm-runtime': 0.2.9 + '@napi-rs/wasm-runtime': 0.2.10 optional: true - '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + '@unrs/resolver-binding-win32-arm64-msvc@1.7.9': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + '@unrs/resolver-binding-win32-ia32-msvc@1.7.9': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + '@unrs/resolver-binding-win32-x64-msvc@1.7.9': optional: true '@vcarl/remark-headings@0.1.0': @@ -11807,6 +11860,17 @@ snapshots: get-intrinsic: 1.3.0 is-string: 1.1.1 + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + array-union@2.1.0: {} array.prototype.findlast@1.2.5: @@ -11823,7 +11887,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -11832,7 +11896,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: @@ -11855,7 +11919,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -11955,9 +12019,9 @@ snapshots: bytes@3.1.2: {} - cacheable@1.8.10: + cacheable@1.9.0: dependencies: - hookified: 1.8.2 + hookified: 1.9.1 keyv: 5.3.3 call-bind-apply-helpers@1.0.2: @@ -12087,7 +12151,7 @@ snapshots: commander@11.1.0: {} - commander@13.1.0: {} + commander@14.0.0: {} commander@2.20.3: {} @@ -12120,11 +12184,6 @@ snapshots: cookie@0.7.2: {} - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -12477,6 +12536,63 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.19 + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -12539,7 +12655,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.25.3): dependencies: - debug: 4.4.0 + debug: 4.4.1 esbuild: 0.25.3 transitivePeerDependencies: - supports-color @@ -12635,19 +12751,19 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@15.3.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): + eslint-config-next@15.3.3(eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@next/eslint-plugin-next': 15.3.1 + '@next/eslint-plugin-next': 15.3.3 '@rushstack/eslint-patch': 1.11.0 - '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.26.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.28.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.26.0(jiti@2.4.2)) - eslint-plugin-react: 7.37.5(eslint@9.26.0(jiti@2.4.2)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.26.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)))(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.5(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.28.0(jiti@2.4.2)) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -12655,6 +12771,13 @@ snapshots: - eslint-plugin-import-x - supports-color + eslint-import-context@0.1.6(unrs-resolver@1.7.9): + dependencies: + get-tsconfig: 4.10.1 + stable-hash: 0.0.5 + optionalDependencies: + unrs-resolver: 1.7.9 + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 @@ -12663,48 +12786,49 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)))(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.0 - eslint: 9.26.0(jiti@2.4.2) - get-tsconfig: 4.10.0 + debug: 4.4.1 + eslint: 9.28.0(jiti@2.4.2) + get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.13 - unrs-resolver: 1.7.2 + tinyglobby: 0.2.14 + unrs-resolver: 1.7.9 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) - eslint-plugin-import-x: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.3.4(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)): + eslint-import-resolver-typescript@4.4.2(eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)))(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)): dependencies: - debug: 4.4.0 - eslint: 9.26.0(jiti@2.4.2) - get-tsconfig: 4.10.0 + debug: 4.4.1 + eslint: 9.28.0(jiti@2.4.2) + eslint-import-context: 0.1.6(unrs-resolver@1.7.9) + get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.13 - unrs-resolver: 1.7.2 + tinyglobby: 0.2.14 + unrs-resolver: 1.7.9 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) - eslint-plugin-import-x: 4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-mdx@3.4.1(eslint@9.26.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): + eslint-mdx@3.4.2(eslint@9.28.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): dependencies: acorn: 8.14.1 acorn-jsx: 5.3.2(acorn@8.14.1) - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) espree: 10.3.0 estree-util-visit: 2.0.0 remark-mdx: 3.1.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - synckit: 0.11.4 + synckit: 0.11.8 tslib: 2.8.1 unified: 11.0.5 unified-engine: 11.2.2 @@ -12717,47 +12841,47 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.28.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.26.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.28.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)))(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.11.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): + eslint-plugin-import-x@4.15.0(@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0(jiti@2.4.2)): dependencies: - '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.33.1 comment-parser: 1.4.1 - debug: 4.4.0 - eslint: 9.26.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.10.0 + debug: 4.4.1 + eslint: 9.28.0(jiti@2.4.2) + eslint-import-context: 0.1.6(unrs-resolver@1.7.9) is-glob: 4.0.3 minimatch: 10.0.1 semver: 7.7.2 stable-hash: 0.0.5 - tslib: 2.8.1 - unrs-resolver: 1.7.2 + unrs-resolver: 1.7.9 + optionalDependencies: + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - - typescript - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 + array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.28.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12769,23 +12893,23 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.26.0(jiti@2.4.2)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.28.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 - array-includes: 3.1.8 + array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 axe-core: 4.10.3 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -12794,17 +12918,17 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-mdx@3.4.1(eslint@9.26.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): + eslint-plugin-mdx@3.4.2(eslint@9.28.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1): dependencies: - eslint: 9.26.0(jiti@2.4.2) - eslint-mdx: 3.4.1(eslint@9.26.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) + eslint: 9.28.0(jiti@2.4.2) + eslint-mdx: 3.4.2(eslint@9.28.0(jiti@2.4.2))(remark-lint-file-extension@3.0.1) mdast-util-from-markdown: 2.0.2 mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 remark-mdx: 3.1.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - synckit: 0.11.4 + synckit: 0.11.8 tslib: 2.8.1 unified: 11.0.5 vfile: 6.0.3 @@ -12813,11 +12937,11 @@ snapshots: - remark-lint-file-extension - supports-color - eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.2.0(eslint@9.28.0(jiti@2.4.2)): dependencies: - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) - eslint-plugin-react@7.37.5(eslint@9.26.0(jiti@2.4.2)): + eslint-plugin-react@7.37.5(eslint@9.28.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -12825,7 +12949,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.28.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -12839,10 +12963,10 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-storybook@9.0.3(eslint@9.26.0(jiti@2.4.2))(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3): + eslint-plugin-storybook@9.0.3(eslint@9.28.0(jiti@2.4.2))(storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.26.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.31.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.28.0(jiti@2.4.2) storybook: 9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3) transitivePeerDependencies: - supports-color @@ -12862,26 +12986,25 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.26.0(jiti@2.4.2): + eslint@9.28.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.2 - '@eslint/core': 0.13.0 + '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.26.0 - '@eslint/plugin-kit': 0.2.8 + '@eslint/js': 9.28.0 + '@eslint/plugin-kit': 0.3.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 - '@modelcontextprotocol/sdk': 1.11.0 + '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.1 escape-string-regexp: 4.0.0 eslint-scope: 8.3.0 eslint-visitor-keys: 4.2.0 @@ -12900,7 +13023,6 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - zod: 3.24.3 optionalDependencies: jiti: 2.4.2 transitivePeerDependencies: @@ -12973,12 +13095,6 @@ snapshots: events@3.3.0: {} - eventsource-parser@3.0.1: {} - - eventsource@3.0.6: - dependencies: - eventsource-parser: 3.0.1 - execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -12991,24 +13107,8 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - exit-hook@2.2.1: {} - express-rate-limit@7.5.0(express@5.1.0): - dependencies: - express: 5.1.0 - express@5.0.1: dependencies: accepts: 2.0.0 @@ -13046,38 +13146,6 @@ snapshots: transitivePeerDependencies: - supports-color - express@5.1.0: - dependencies: - accepts: 2.0.0 - body-parser: 2.2.0 - content-disposition: 1.0.0 - content-type: 1.0.5 - cookie: 0.7.2 - cookie-signature: 1.2.2 - debug: 4.4.1 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 2.1.0 - fresh: 2.0.0 - http-errors: 2.0.0 - merge-descriptors: 2.0.0 - mime-types: 3.0.1 - on-finished: 2.4.1 - once: 1.4.0 - parseurl: 1.3.3 - proxy-addr: 2.0.7 - qs: 6.14.0 - range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.0 - serve-static: 2.2.0 - statuses: 2.0.1 - type-is: 2.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - exsolve@1.0.5: {} extend-shallow@2.0.1: @@ -13134,13 +13202,17 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.5(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + feed@5.1.0: dependencies: xml-js: 1.6.11 - file-entry-cache@10.0.8: + file-entry-cache@10.1.0: dependencies: - flat-cache: 6.1.8 + flat-cache: 6.1.9 file-entry-cache@8.0.0: dependencies: @@ -13188,11 +13260,11 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 - flat-cache@6.1.8: + flat-cache@6.1.9: dependencies: - cacheable: 1.8.10 + cacheable: 1.9.0 flatted: 3.3.3 - hookified: 1.8.2 + hookified: 1.9.1 flatted@3.3.3: {} @@ -13288,8 +13360,6 @@ snapshots: get-stream@6.0.1: {} - get-stream@8.0.1: {} - get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -13300,6 +13370,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -13503,7 +13577,7 @@ snapshots: highlight.js@11.11.1: {} - hookified@1.8.2: {} + hookified@1.9.1: {} hosted-git-info@7.0.2: dependencies: @@ -13579,21 +13653,19 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color human-signals@2.1.0: {} - human-signals@5.0.0: {} - husky@9.1.7: {} iconv-lite@0.6.3: @@ -13614,7 +13686,7 @@ snapshots: ignore@6.0.2: {} - ignore@7.0.4: {} + ignore@7.0.5: {} import-fresh@3.3.1: dependencies: @@ -13761,6 +13833,8 @@ snapshots: is-map@2.0.3: {} + is-negative-zero@2.0.3: {} + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -13791,8 +13865,6 @@ snapshots: is-stream@2.0.1: {} - is-stream@3.0.0: {} - is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -14009,22 +14081,22 @@ snapshots: dependencies: uc.micro: 2.1.0 - lint-staged@15.5.1: + lint-staged@16.1.0: dependencies: chalk: 5.4.1 - commander: 13.1.0 - debug: 4.4.0 - execa: 8.0.1 + commander: 14.0.0 + debug: 4.4.1 lilconfig: 3.1.3 - listr2: 8.3.2 + listr2: 8.3.3 micromatch: 4.0.8 + nano-spawn: 1.0.2 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.7.1 + yaml: 2.8.0 transitivePeerDependencies: - supports-color - listr2@8.3.2: + listr2@8.3.3: dependencies: cli-truncate: 4.0.0 colorette: 2.0.20 @@ -14650,8 +14722,6 @@ snapshots: mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - mimic-function@5.0.1: {} min-indent@1.0.1: {} @@ -14717,9 +14787,11 @@ snapshots: mustache@4.2.0: {} + nano-spawn@1.0.2: {} + nanoid@3.3.11: {} - napi-postinstall@0.2.3: {} + napi-postinstall@0.2.4: {} natural-compare@1.4.0: {} @@ -14814,10 +14886,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -14859,7 +14927,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 object.values@1.2.1: dependencies: @@ -14886,10 +14954,6 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - onetime@7.0.0: dependencies: mimic-function: 5.0.1 @@ -15002,8 +15066,6 @@ snapshots: path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-scurry@1.11.1: @@ -15034,8 +15096,6 @@ snapshots: pidtree@0.6.0: {} - pkce-challenge@5.0.0: {} - pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -15119,9 +15179,9 @@ snapshots: postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.1(postcss@8.5.3): + postcss-safe-parser@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-selector-parser@7.1.0: dependencies: @@ -15349,7 +15409,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -16026,7 +16086,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.1 + debug: 4.3.6 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -16260,6 +16320,11 @@ snapshots: statuses@2.0.1: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + stoppable@1.1.0: {} storybook@9.0.3(@testing-library/dom@10.4.0)(prettier@3.5.3): @@ -16315,7 +16380,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 string.prototype.matchall@4.0.12: dependencies: @@ -16344,7 +16409,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -16384,8 +16449,6 @@ snapshots: strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -16421,33 +16484,33 @@ snapshots: client-only: 0.0.1 react: 19.1.0 - stylelint-config-recommended@16.0.0(stylelint@16.19.1(typescript@5.8.3)): + stylelint-config-recommended@16.0.0(stylelint@16.20.0(typescript@5.8.3)): dependencies: - stylelint: 16.19.1(typescript@5.8.3) + stylelint: 16.20.0(typescript@5.8.3) - stylelint-config-standard@38.0.0(stylelint@16.19.1(typescript@5.8.3)): + stylelint-config-standard@38.0.0(stylelint@16.20.0(typescript@5.8.3)): dependencies: - stylelint: 16.19.1(typescript@5.8.3) - stylelint-config-recommended: 16.0.0(stylelint@16.19.1(typescript@5.8.3)) + stylelint: 16.20.0(typescript@5.8.3) + stylelint-config-recommended: 16.0.0(stylelint@16.20.0(typescript@5.8.3)) - stylelint-order@7.0.0(stylelint@16.19.1(typescript@5.8.3)): + stylelint-order@7.0.0(stylelint@16.20.0(typescript@5.8.3)): dependencies: postcss: 8.5.3 postcss-sorting: 9.1.0(postcss@8.5.3) - stylelint: 16.19.1(typescript@5.8.3) + stylelint: 16.20.0(typescript@5.8.3) - stylelint-selector-bem-pattern@4.0.1(stylelint@16.19.1(typescript@5.8.3)): + stylelint-selector-bem-pattern@4.0.1(stylelint@16.20.0(typescript@5.8.3)): dependencies: lodash: 4.17.21 postcss: 8.5.3 postcss-bem-linter: 4.0.1(postcss@8.5.3) - stylelint: 16.19.1(typescript@5.8.3) + stylelint: 16.20.0(typescript@5.8.3) - stylelint@16.19.1(typescript@5.8.3): + stylelint@16.20.0(typescript@5.8.3): dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) '@dual-bundle/import-meta-resolve': 4.1.0 balanced-match: 2.0.0 @@ -16455,15 +16518,15 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.8.3) css-functions-list: 3.2.3 css-tree: 3.1.0 - debug: 4.4.0 + debug: 4.4.1 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 10.0.8 + file-entry-cache: 10.1.0 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 7.0.4 + ignore: 7.0.5 imurmurhash: 0.1.4 is-plain-object: 5.0.0 known-css-properties: 0.36.0 @@ -16472,9 +16535,9 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.4 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 7.0.1(postcss@8.5.3) + postcss-safe-parser: 7.0.1(postcss@8.5.4) postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -16518,10 +16581,9 @@ snapshots: symbol-tree@3.2.4: {} - synckit@0.11.4: + synckit@0.11.8: dependencies: - '@pkgr/core': 0.2.4 - tslib: 2.8.1 + '@pkgr/core': 0.2.7 table@6.9.0: dependencies: @@ -16576,9 +16638,9 @@ snapshots: tiny-invariant@1.3.3: {} - tinyglobby@0.2.13: + tinyglobby@0.2.14: dependencies: - fdir: 6.4.4(picomatch@4.0.2) + fdir: 6.4.5(picomatch@4.0.2) picomatch: 4.0.2 tinyrainbow@2.0.0: {} @@ -16722,12 +16784,12 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.26.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.28.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -16784,7 +16846,7 @@ snapshots: vfile-message: 4.0.2 vfile-reporter: 8.1.1 vfile-statistics: 3.0.0 - yaml: 2.7.1 + yaml: 2.8.0 transitivePeerDependencies: - bluebird - supports-color @@ -16899,27 +16961,27 @@ snapshots: unpipe@1.0.0: {} - unrs-resolver@1.7.2: + unrs-resolver@1.7.9: dependencies: - napi-postinstall: 0.2.3 + napi-postinstall: 0.2.4 optionalDependencies: - '@unrs/resolver-binding-darwin-arm64': 1.7.2 - '@unrs/resolver-binding-darwin-x64': 1.7.2 - '@unrs/resolver-binding-freebsd-x64': 1.7.2 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.2 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.2 - '@unrs/resolver-binding-linux-arm64-gnu': 1.7.2 - '@unrs/resolver-binding-linux-arm64-musl': 1.7.2 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.2 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.2 - '@unrs/resolver-binding-linux-riscv64-musl': 1.7.2 - '@unrs/resolver-binding-linux-s390x-gnu': 1.7.2 - '@unrs/resolver-binding-linux-x64-gnu': 1.7.2 - '@unrs/resolver-binding-linux-x64-musl': 1.7.2 - '@unrs/resolver-binding-wasm32-wasi': 1.7.2 - '@unrs/resolver-binding-win32-arm64-msvc': 1.7.2 - '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2 - '@unrs/resolver-binding-win32-x64-msvc': 1.7.2 + '@unrs/resolver-binding-darwin-arm64': 1.7.9 + '@unrs/resolver-binding-darwin-x64': 1.7.9 + '@unrs/resolver-binding-freebsd-x64': 1.7.9 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.9 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.9 + '@unrs/resolver-binding-linux-arm64-gnu': 1.7.9 + '@unrs/resolver-binding-linux-arm64-musl': 1.7.9 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.9 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.9 + '@unrs/resolver-binding-linux-riscv64-musl': 1.7.9 + '@unrs/resolver-binding-linux-s390x-gnu': 1.7.9 + '@unrs/resolver-binding-linux-x64-gnu': 1.7.9 + '@unrs/resolver-binding-linux-x64-musl': 1.7.9 + '@unrs/resolver-binding-wasm32-wasi': 1.7.9 + '@unrs/resolver-binding-win32-arm64-msvc': 1.7.9 + '@unrs/resolver-binding-win32-ia32-msvc': 1.7.9 + '@unrs/resolver-binding-win32-x64-msvc': 1.7.9 update-browserslist-db@1.1.3(browserslist@4.24.5): dependencies: @@ -17240,6 +17302,8 @@ snapshots: yaml@2.7.1: {} + yaml@2.8.0: {} + yocto-queue@0.1.0: {} youch@3.3.4: From 82142e76a6daaa1c72ec24b37b3950db012615dc Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 3 Jun 2025 12:35:56 -0400 Subject: [PATCH 0524/1385] chore(next): remove icons from `optimizedPackageImports` (#7825) Signed-off-by: Aviv Keller <me@aviv.sh> --- apps/site/next.config.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index d3a0778633722..14bb7afa4d3db 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -91,7 +91,6 @@ const nextConfig = { '@radix-ui/react-avatar', '@orama/highlight', '@orama/react-components', - '@heroicons/react', 'tailwindcss', 'shiki', ], From eb1f2fc5b39cd1ee2fd2baff313cd7f9e84380d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jun 2025 06:24:11 -0400 Subject: [PATCH 0525/1385] meta: bump codecov/test-results-action from 1.1.0 to 1.1.1 (#7806) Bumps [codecov/test-results-action](https://github.com/codecov/test-results-action) from 1.1.0 to 1.1.1. - [Release notes](https://github.com/codecov/test-results-action/releases) - [Commits](https://github.com/codecov/test-results-action/compare/f2dba722c67b86c6caa034178c6e4d35335f6706...47f89e9acb64b76debcd5ea40642d25a4adced9f) --- updated-dependencies: - dependency-name: codecov/test-results-action dependency-version: 1.1.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lint-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 3ce3ffc34d5e4..d3a594eab5bdc 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -153,6 +153,6 @@ jobs: - name: Upload test results to Codecov if: ${{ !cancelled() && github.event_name != 'merge_group' }} - uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0 + uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1 with: files: ./apps/site/junit.xml,./packages/*/junit.xml From b6edea09245c16d86f18ba68a73a855a89a81a2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jun 2025 06:24:21 -0400 Subject: [PATCH 0526/1385] meta: bump actions/dependency-review-action from 4.6.0 to 4.7.1 (#7807) Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.6.0 to 4.7.1. - [Release notes](https://github.com/actions/dependency-review-action/releases) - [Commits](https://github.com/actions/dependency-review-action/compare/ce3cf9537a52e8119d91fd484ab5b8a807627bf8...da24556b548a50705dd671f47852072ea4c105d9) --- updated-dependencies: - dependency-name: actions/dependency-review-action dependency-version: 4.7.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> 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 5ad419a49d408..0182e5715fc6b 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@ce3cf9537a52e8119d91fd484ab5b8a807627bf8 # v4.6.0 + uses: actions/dependency-review-action@da24556b548a50705dd671f47852072ea4c105d9 # v4.7.1 From 1e09e9096dd329390bc325da753fa42fd7110d57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jun 2025 10:24:45 +0000 Subject: [PATCH 0527/1385] meta: bump codecov/codecov-action from 5.4.2 to 5.4.3 (#7809) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.4.2 to 5.4.3. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/ad3126e916f78f00edff4ed0317cf185271ccc2d...18283e04ce6e62d37312384ff67231eb8fd56d24) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: 5.4.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lint-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index d3a594eab5bdc..5c53db89a0055 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -147,7 +147,7 @@ jobs: - name: Upload test coverage to Codecov if: ${{ !cancelled() && github.event_name != 'merge_group' }} - uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2 + uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 with: files: ./apps/site/lcov.info,./packages/*/lcov.info From 9cdd3e50accd08b70493bd672f2924e2fa4cceb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jun 2025 10:24:57 +0000 Subject: [PATCH 0528/1385] meta: bump ossf/scorecard-action from 2.4.1 to 2.4.2 (#7810) Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.1 to 2.4.2. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/f49aabe0b5af0936a0987cfb85d86b75731b0186...05b42c624433fc40578a4040d5cf5e36ddca8cde) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-version: 2.4.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a14ccce3a1c5a..3688e0636a969 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -42,7 +42,7 @@ jobs: persist-credentials: false - name: Run Scorecard Analysis - uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 + uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2 with: results_file: results.sarif results_format: sarif From be4dbf862d85c37db3e0e69491cb52f9b2cf2f18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jun 2025 10:25:07 +0000 Subject: [PATCH 0529/1385] meta: bump github/codeql-action from 3.28.17 to 3.28.18 (#7811) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.17 to 3.28.18. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/60168efe1c415ce0f5521ea06d5c2062adbeed1b...ff0a06e83cb2de871e5a09832bc6a81e7276941f) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.18 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 5b28675bbbf7a..40d4641b85996 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/autobuild@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3688e0636a969..becffaddb31e0 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,6 +59,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload Scan Results - uses: github/codeql-action/upload-sarif@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 with: sarif_file: results.sarif From 642d5d648a0840cafb6a0192a3f1687dd3933d75 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Wed, 4 Jun 2025 06:29:53 -0400 Subject: [PATCH 0530/1385] fix(icr): workflow changes (#7827) * fix(icr): workflow changes * involves Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- .../scripts/report-inactive-collaborators.mjs | 60 +++++++++++-------- .../workflows/find-inactive-collaborators.yml | 3 +- 2 files changed, 36 insertions(+), 27 deletions(-) diff --git a/.github/scripts/report-inactive-collaborators.mjs b/.github/scripts/report-inactive-collaborators.mjs index 5f441474e2ce3..a1b306dba9786 100644 --- a/.github/scripts/report-inactive-collaborators.mjs +++ b/.github/scripts/report-inactive-collaborators.mjs @@ -15,6 +15,20 @@ const getDateMonthsAgo = (months = CONFIG.INACTIVE_MONTHS) => { return date.toISOString().split('T')[0]; }; +// Check if there's already an open issue +async function hasOpenIssue(github, context) { + const { owner, repo } = context.repo; + const { data: issues } = await github.rest.issues.listForRepo({ + owner, + repo, + state: 'open', + labels: CONFIG.ISSUE_LABELS[1], + per_page: 1, + }); + + return issues.length > 0; +} + // Parse collaborator usernames from governance file async function parseCollaborators() { const content = await readFile(CONFIG.GOVERNANCE_FILE, 'utf8'); @@ -41,12 +55,20 @@ async function getInactiveUsers(github, usernames, repo, cutoffDate) { const inactiveUsers = []; for (const username of usernames) { - const { data } = await github.rest.search.commits({ + // Check commits + const { data: commits } = await github.rest.search.commits({ q: `author:${username} repo:${repo} committer-date:>=${cutoffDate}`, per_page: 1, }); - if (data.total_count === 0) { + // Check issues and PRs + const { data: issues } = await github.rest.search.issuesAndPullRequests({ + q: `involves:${username} repo:${repo} updated:>=${cutoffDate}`, + per_page: 1, + }); + + // User is inactive if they have no commits AND no issues/PRs + if (commits.total_count === 0 && issues.total_count === 0) { inactiveUsers.push(username); } } @@ -75,37 +97,25 @@ ${inactiveMembers.map(m => `| @${m} |`).join('\n')} @nodejs/nodejs-website should review this list and contact inactive collaborators to confirm their continued interest in participating in the project.`; } -async function createOrUpdateIssue(github, context, report) { +async function createIssue(github, context, report) { if (!report) return; const { owner, repo } = context.repo; - const { data: issues } = await github.rest.issues.listForRepo({ + await github.rest.issues.create({ owner, repo, - state: 'open', - labels: CONFIG.ISSUE_LABELS[1], - per_page: 1, + title: CONFIG.ISSUE_TITLE, + body: report, + labels: CONFIG.ISSUE_LABELS, }); - - if (issues.total_count > 0) { - await github.rest.issues.update({ - owner, - repo, - issue_number: issues.items[0].number, - body: report, - }); - } else { - await github.rest.issues.create({ - owner, - repo, - title: CONFIG.ISSUE_TITLE, - body: report, - labels: CONFIG.ISSUE_LABELS, - }); - } } export default async function (github, context) { + // Check for existing open issue first - exit early if one exists + if (await hasOpenIssue(github, context)) { + return; + } + const cutoffDate = getDateMonthsAgo(); const collaborators = await parseCollaborators(); @@ -117,5 +127,5 @@ export default async function (github, context) { ); const report = formatReport(inactiveMembers, cutoffDate); - await createOrUpdateIssue(github, context, report); + await createIssue(github, context, report); } diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index d537b4d425bbb..c790fe3910ab6 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -2,8 +2,7 @@ name: Find inactive collaborators on: schedule: - # Run every Monday at 4:05 AM UTC. - - cron: 5 4 * * 1 + - cron: '0 0 1 * *' # Runs at 00:00 UTC on the 1st day of every month workflow_dispatch: From c7575020e94a51e80fbfa33d85998613650cf435 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Wed, 4 Jun 2025 15:32:47 -0400 Subject: [PATCH 0531/1385] fix(playwright): increase fetch depth (#7832) --- .github/workflows/playwright-cloudflare-open-next.yml | 2 ++ .github/workflows/playwright.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/playwright-cloudflare-open-next.yml b/.github/workflows/playwright-cloudflare-open-next.yml index 4c8ebb70659c0..e3d10aa619072 100644 --- a/.github/workflows/playwright-cloudflare-open-next.yml +++ b/.github/workflows/playwright-cloudflare-open-next.yml @@ -35,6 +35,8 @@ jobs: - name: Git Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 2 - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index c7bb1bd13be8a..906f0fef71da0 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -61,6 +61,8 @@ jobs: - name: Git Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 2 - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 From 2054bccf7e18fd65ed2861d4e6940411f3d7e319 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Wed, 4 Jun 2025 17:08:37 -0400 Subject: [PATCH 0532/1385] fix(CONTRIBUTING): use backticks in example code (#7835) Update CONTRIBUTING.md Signed-off-by: Aviv Keller <me@aviv.sh> --- CONTRIBUTING.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e1c5ce1bb82c0..30f6a3e310c3d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -375,14 +375,14 @@ To edit an existing article, you need to find the markdown file in the `site/pag The codebox component is used to display code snippets. If two code snippets follow without any text between them, they will be displayed in the same codebox, but with two tabs. -```md -'''cjs +````md +```cjs const http = require('node:http'); -''' +``` -'''mjs +```mjs import http from 'node:http'; -''' ``` +```` `cjs` and `mjs` are variants of `js`, it's just to display the correct language in the codebox (cjs = CommonJS, mjs = ES Module). From 1171936a9d41364f4136e2e1fca5e122fddc4c80 Mon Sep 17 00:00:00 2001 From: Dor Kleiman <configurator@gmail.com> Date: Fri, 6 Jun 2025 03:06:34 +0300 Subject: [PATCH 0533/1385] fix: broken script in example package.json (#7833) Fix example package.json script The script for run is supposed to eventually run `node app.js --watch` by running `node --run start` with the `--watch` parameter - but the name of the script was missing resulting in a syntax error. Signed-off-by: Dor Kleiman <configurator@gmail.com> --- .../command-line/run-nodejs-scripts-from-the-command-line.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/command-line/run-nodejs-scripts-from-the-command-line.md b/apps/site/pages/en/learn/command-line/run-nodejs-scripts-from-the-command-line.md index d2a68883b7e8c..67d1723721673 100644 --- a/apps/site/pages/en/learn/command-line/run-nodejs-scripts-from-the-command-line.md +++ b/apps/site/pages/en/learn/command-line/run-nodejs-scripts-from-the-command-line.md @@ -71,7 +71,7 @@ The [`--run`](https://nodejs.org/docs/latest-v22.x/api/cli.html#--run) flag allo "type": "module", "scripts": { "start": "node app.js", - "dev": "node --run -- --watch", + "dev": "node --run start -- --watch", "test": "node --test" } } From 0870b2b66dd4bd3f006fd5abb4d10b6bf1005d7d Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Fri, 6 Jun 2025 12:18:52 +0200 Subject: [PATCH 0534/1385] meta: re-enable turbo prod/dev builds (#7830) * meta: re-enable turbo prod builds Signed-off-by: Claudio W. <cwunder@gnome.org> * meta: re-enable turbopack for dev environment Signed-off-by: Claudio W. <cwunder@gnome.org> * chore: updated commands --------- Signed-off-by: Claudio W. <cwunder@gnome.org> --- apps/site/open-next.config.ts | 4 +++- apps/site/package.json | 17 +++++++++-------- apps/site/turbo.json | 10 +++++----- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/apps/site/open-next.config.ts b/apps/site/open-next.config.ts index ffadf39abafb6..f5e0cf658006f 100644 --- a/apps/site/open-next.config.ts +++ b/apps/site/open-next.config.ts @@ -1,4 +1,6 @@ import { defineCloudflareConfig } from '@opennextjs/cloudflare'; import incrementalCache from '@opennextjs/cloudflare/overrides/incremental-cache/kv-incremental-cache'; -export default defineCloudflareConfig({ incrementalCache }); +const cloudflareConfig = defineCloudflareConfig({ incrementalCache }); + +export default { ...cloudflareConfig, buildCommand: 'pnpm build:default' }; diff --git a/apps/site/package.json b/apps/site/package.json index b175ddfdf9f70..abbe59438d972 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -2,11 +2,14 @@ "name": "@node-core/website", "type": "module", "scripts": { - "prebuild": "pnpm build-blog-data", - "build": "cross-env NODE_NO_WARNINGS=1 next build", + "prebuild": "pnpm build:blog-data", + "build": "pnpm build:default --turbo", + "build:default": "cross-env NODE_NO_WARNINGS=1 next build", + "build:blog-data": "node ./scripts/blog-data/generate.mjs", + "build:blog-data:watch": "node --watch --watch-path=pages/en/blog ./scripts/blog-data/generate.mjs", "check-types": "tsc --noEmit", - "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true NODE_NO_WARNINGS=1 next build", - "dev": "cross-env NODE_NO_WARNINGS=1 next dev", + "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true pnpm build:default", + "dev": "cross-env NODE_NO_WARNINGS=1 next dev --turbo", "lint": "turbo run lint:md lint:js lint:css", "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", "lint:fix": "turbo run lint:md lint:js lint:css --no-cache -- --fix", @@ -20,11 +23,9 @@ "test": "turbo test:unit", "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --experimental-test-module-mocks --enable-source-maps --import=global-jsdom/register --import=tsx --import=tests/setup.jsx --test **/*.test.*", "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" pnpm test:unit", - "build-blog-data": "node ./scripts/blog-data/generate.mjs", - "build-blog-data:watch": "node --watch --watch-path=pages/en/blog ./scripts/blog-data/generate.mjs", "cloudflare:build:worker": "opennextjs-cloudflare build", - "cloudflare:preview": "wrangler dev", - "cloudflare:deploy": "wrangler deploy" + "cloudflare:deploy": "wrangler deploy", + "cloudflare:preview": "wrangler dev" }, "dependencies": { "@heroicons/react": "~2.2.0", diff --git a/apps/site/turbo.json b/apps/site/turbo.json index c7cbeb7bb7025..33c7ab8af6976 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -4,7 +4,7 @@ "globalEnv": ["NODE_ENV"], "tasks": { "dev": { - "dependsOn": ["build-blog-data"], + "dependsOn": ["build:blog-data"], "cache": false, "persistent": true, "env": [ @@ -25,7 +25,7 @@ ] }, "build": { - "dependsOn": ["build-blog-data", "^build"], + "dependsOn": ["build:blog-data", "^build"], "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", "{app,components,layouts,pages,styles}/**/*.css", @@ -120,7 +120,7 @@ "cache": false }, "test:unit": { - "dependsOn": ["build-blog-data"], + "dependsOn": ["build:blog-data"], "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx,mjs}", "{app,components,layouts,pages,styles}/**/*.css", @@ -130,12 +130,12 @@ ], "outputs": ["coverage/**", "junit.xml"] }, - "build-blog-data": { + "build:blog-data": { "inputs": ["{pages}/**/*.{mdx,md}"], "outputs": ["public/blog-data.json"] }, "cloudflare:build:worker": { - "dependsOn": ["build-blog-data"], + "dependsOn": ["build:blog-data"], "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", "{app,components,layouts,pages,styles}/**/*.css", From ed840c2c5b3a7f7a58ec6d75280c2b34129fb5dc Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Fri, 6 Jun 2025 16:25:15 +0300 Subject: [PATCH 0535/1385] fix(ui): avatar overlap (#7834) fix: avatar alignment --- .../Common/AvatarGroup/index.module.css | 12 ++++-------- packages/ui-components/Common/AvatarGroup/index.tsx | 6 +----- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/packages/ui-components/Common/AvatarGroup/index.module.css b/packages/ui-components/Common/AvatarGroup/index.module.css index 9477a8ea5829d..63596b3fe55a1 100644 --- a/packages/ui-components/Common/AvatarGroup/index.module.css +++ b/packages/ui-components/Common/AvatarGroup/index.module.css @@ -4,22 +4,18 @@ @apply flex flex-wrap items-center; - - &:not(.expandable) { - > span { - @apply ml-0; - } - } } .small { > span { - @apply -ml-2; + @apply -ml-2 + first:ml-0; } } .medium { > span { - @apply -ml-2.5; + @apply -ml-2.5 + first:ml-0; } } diff --git a/packages/ui-components/Common/AvatarGroup/index.tsx b/packages/ui-components/Common/AvatarGroup/index.tsx index 53bc368393bb7..413a8c4d99c60 100644 --- a/packages/ui-components/Common/AvatarGroup/index.tsx +++ b/packages/ui-components/Common/AvatarGroup/index.tsx @@ -42,11 +42,7 @@ const AvatarGroup: FC<AvatarGroupProps> = ({ : undefined; return ( - <div - className={classNames(styles.avatarGroup, styles[size], { - [styles.expandable]: avatars.length > limit, - })} - > + <div className={classNames(styles.avatarGroup, styles[size])}> {renderAvatars.map(avatar => ( <Tooltip key={avatar.nickname} From 639bf9589d3ba2e4786ada27ee7ffca1ca6ae247 Mon Sep 17 00:00:00 2001 From: Matteo Collina <hello@matteocollina.com> Date: Fri, 6 Jun 2025 23:33:27 +0200 Subject: [PATCH 0536/1385] blog: add post-eol announcement (#7838) * blog: add post-eol announcement Signed-off-by: Matteo Collina <hello@matteocollina.com> * fix: multiline key Signed-off-by: Claudio W. <cwunder@gnome.org> * Update apps/site/pages/en/blog/announcements/node-18-eol-support.md Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> * Update apps/site/pages/en/blog/announcements/node-18-eol-support.md Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> * fixup Signed-off-by: Matteo Collina <hello@matteocollina.com> * images Signed-off-by: Matteo Collina <hello@matteocollina.com> * Update apps/site/pages/en/blog/announcements/node-18-eol-support.md Co-authored-by: Sebastian Beltran <bjohansebas@gmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> * chore: titles dont need to be bold Signed-off-by: Claudio W. <cwunder@gnome.org> --------- Signed-off-by: Matteo Collina <hello@matteocollina.com> Signed-off-by: Claudio W. <cwunder@gnome.org> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> Signed-off-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Claudio W. <cwunder@gnome.org> Co-authored-by: Aviv Keller <me@aviv.sh> Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Sebastian Beltran <bjohansebas@gmail.com> --- .../blog/announcements/node-18-eol-support.md | 91 ++++++++++++++++++ .../announcements/2025-eol-node-graph.png | Bin 0 -> 161927 bytes .../announcements/2025-release-schedule.svg | 34 +++++++ 3 files changed, 125 insertions(+) create mode 100644 apps/site/pages/en/blog/announcements/node-18-eol-support.md create mode 100644 apps/site/public/static/images/blog/announcements/2025-eol-node-graph.png create mode 100644 apps/site/public/static/images/blog/announcements/2025-release-schedule.svg diff --git a/apps/site/pages/en/blog/announcements/node-18-eol-support.md b/apps/site/pages/en/blog/announcements/node-18-eol-support.md new file mode 100644 index 0000000000000..93af63cadcdb3 --- /dev/null +++ b/apps/site/pages/en/blog/announcements/node-18-eol-support.md @@ -0,0 +1,91 @@ +--- +date: '2025-06-15T12:00:00.000Z' +category: announcements +title: Beware of End-of-Life Node.js Versions - Upgrade or Seek Post-EOL Support +layout: blog-post +author: Matteo Collina +--- + +# Beware of End-of-Life Node.js Versions _Upgrade or Seek Post-EOL Support_ + +The Node.js ecosystem is at a critical juncture. With Node.js 18 becoming unsupported, millions of developers need to make the jump, but they should skip 20 entirely and go straight to Node.js 22. The numbers tell a compelling story about why this upgrade isn't just recommended, it's essential. If you can’t upgrade, check out our Ecosystem Sustainability Program partner, HeroDevs, which offers [post End-Of-Life Node.js support](https://www.herodevs.com/support/node-nes). + +## The Support Landscape Has Changed—And Security Issues Are Real + +**Node.js 18 and all earlier versions are End-Of-Life. They are now completely unsupported**, meaning they receive no updates, including security patches. + +The security implications are immediate and serious. The May 2025 security releases revealed that Node.js 20 is vulnerable to 1 low severity issue, 1 high severity issue, and 1 medium severity issue. As the security advisory notes, "End-of-Life versions are always affected when a security release occurs", meaning **Node.js 18 and all earlier versions have these same vulnerabilities but will never receive patches**. Here is our release schedule: + +![][image1] + +Many ask, “**Why does the Node.js project not fix vulnerabilities for all releases?**”. Because it would be an ever-growing task, and some vulnerabilities could not even be fixed because they depend on a multitude of other patches to be applied. The work is simply too much, and organizations depending on ancient Node.js versions could upgrade or use a vendor that provides this service. + +If you are looking for additional proof points, here are a few examples of vulnerabilities that older versions of [Node.js](http://Node.js) are impacted: + +- [https://nvd.nist.gov/vuln/detail/CVE-2025-23167](https://nvd.nist.gov/vuln/detail/CVE-2025-23167) affects 18, 16, 14 (llhttp) \- medium +- [https://nvd.nist.gov/vuln/detail/CVE-2023-5678](https://nvd.nist.gov/vuln/detail/CVE-2023-5678) affects 16 e 14 (openssl) \- medium +- [https://nvd.nist.gov/vuln/detail/CVE-2024-22019](https://nvd.nist.gov/vuln/detail/CVE-2024-22019) affects 16 e 14 (llhttp) \- high +- [https://nvd.nist.gov/vuln/detail/CVE-2021-39135](https://nvd.nist.gov/vuln/detail/CVE-2021-39135) affects 14 (npm) \- high + +This affects a staggering number of projects. Based on download statistics, Node.js v18 still accounts for approximately **50 million monthly downloads**, while legacy versions (v16 and below) continue to see **tens of millions of downloads per month**. That represents countless applications running on known vulnerable, unsupported runtime environments. + +\[suggested paragraph on [GitHub \- nodejs/is-my-node-vulnerable: package that checks if your Node.js installation is vulnerable to known security vulnerabilities](https://github.com/nodejs/is-my-node-vulnerable)\] + +## Node.js v22: The Smart Long-Term Choice + +While Node.js 20 is currently the maintenance LTS release, **Node.js 22 is the smarter upgrade target**. Here's why you should skip 20 and go straight to 22: + +- **Longer Support Window**: Node.js 22 is in active LTS status and will be actively supported until **April 2027**—a full year longer than 20's support window. +- **Future-Proofing**: By upgrading to 22 now, you avoid another major upgrade cycle in just a couple of years. This saves significant engineering time and reduces upgrade fatigue. +- **New Features**: 22 offers all the latest features of Node.js, including native TypeScript support (behind a flag). +- **Latest Performance Gains**: 22 includes all the improvements from 20, plus additional optimizations, offering the best performance available. + +## The Migration Numbers Game + +![][image2] + +The download statistics reveal an interesting migration pattern. While the total Node.js downloads have grown to over **350 million monthly downloads** across all versions, the distribution shows: + +- **Node.js v22+**: Growing rapidly as teams adopt the future-forward approach, with 120 million downloads. +- **Node.js v20**: \~100 million monthly downloads (solid but shorter lifespan) +- **End-of-Life versions (v18 and below)**: \~120+ million montlhy downloads (critical security risk) + +This means that **roughly 30% of the Node.js community is still running on unsupported versions**. Rather than making incremental upgrades, smart teams are leapfrogging directly to v22 for maximum future-proofing, or adopting a commercial solution. + +## **Why Skip v20 and Go Straight to v22?** + +The conventional wisdom might suggest upgrading incrementally to Node.js v20 first, but **this is a strategic mistake**. Here's why v22 is the better target: + +**Maintenance Window**: + +- Node.js v20 LTS: October 2023 \- April 2026 (1 year remaining) +- Node.js v22 LTS: October 2024 \- April 2027 (2 years remaining) + +**Upgrade Fatigue Prevention**: Major Node.js upgrades require testing, dependency updates, and potential code changes. By going to v22 now, you avoid another upgrade cycle in 2026-2027. + +## Making the Jump + +**For Development Teams**: Start by auditing your current Node.js usage. Check `node --version` across all your projects and environments. Create a migration timeline that targets 22 directly, skipping the 20 stepping stone. + +**For DevOps Teams**: Update your CI/CD pipelines, Docker images, and deployment scripts to target Node.js 22\. Test thoroughly in staging environments, but don't waste time on 20 as an intermediate step. + +**For Open Source Maintainers**: Consider requiring Node.js 22 as your minimum version for new major releases. This positions your project at the forefront of the ecosystem and provides the longest support runway. + +## Can't Upgrade Right Away? Commercial Support is Available + +We understand that some organizations face constraints that prevent immediate upgrades, such as legacy codebases, compliance requirements, or complex dependency chains. If your company cannot upgrade immediately but needs continued security support for Node.js v18 or earlier versions, [**commercial support**](https://www.herodevs.com/support/node-nes?utm_source=NodeJS+&utm_medium=Link&utm_campaign=Blog_18_eol_support) **is available through HeroDevs**. + +As part of the [OpenJS Ecosystem Sustainability Program](https://openjsf.org/partners) partnership, HeroDevs provides Never-Ending Support (NES) for Node.js versions past their official maintenance phase. This includes security patches, compliance assistance, and technical support to help bridge the gap while you plan your upgrade strategy. + +However, this should be viewed as a temporary solution—the goal should always be to upgrade to actively supported versions like Node.js 22\. + +## The Bottom Line + +With **hundreds of millions of monthly downloads** across the Node.js ecosystem, the migration to 22 represents a strategic opportunity to future-proof your applications. The security implications alone make upgrading from unsupported versions critical, but the choice between 20 and 22 is about smart long-term planning. + +The path forward is clear: **Node.js 22 offers the longest support window, best performance, and maximum future-proofing**. Don't waste time on incremental upgrades—make the jump directly to 22 and secure your applications for years to come. + +Your applications, your users, and your future self will thank you for making the strategic move to Node.js v22 today. + +[image1]: /static/images/blob/announcements/2025-eol-node-graph.png +[image2]: /static/images/blob/announcements/2025-release-schedule.svg diff --git a/apps/site/public/static/images/blog/announcements/2025-eol-node-graph.png b/apps/site/public/static/images/blog/announcements/2025-eol-node-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3fbef322fb9610e3c78c94ddc358bacb68afcf09 GIT binary patch literal 161927 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�RS;W$APrpA# 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 literal 0 HcmV?d00001 diff --git a/apps/site/public/static/images/blog/announcements/2025-release-schedule.svg b/apps/site/public/static/images/blog/announcements/2025-release-schedule.svg new file mode 100644 index 0000000000000..3f70d8942d70d --- /dev/null +++ b/apps/site/public/static/images/blog/announcements/2025-release-schedule.svg @@ -0,0 +1,34 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="960" height="500"><defs><style type="text/css"><![CDATA[ +.current { + fill: #5fa04e; +} +.active { + fill: #229ad6; +} +.maintenance { + fill: #b1bcc2; +} +.unstable { + fill: #e99c40; +} +.bar-join { + fill: #ffffff; +} +.bar-join.unstable, .bar-join.current { + display: none; +} +.tick text { + font: 16px sans-serif; + fill: #89a19d; +} +.axis--y .tick text { + text-anchor: end; +} +.label { + fill: #fff; + font: 20px sans-serif; + font-weight: 100; + text-anchor: start; + dominant-baseline: middle; + text-transform: uppercase; +} ]]></style></defs><g id="bar-container" transform="translate(110, 30)"><g class="axis axis--x" fill="none" font-size="10" font-family="sans-serif" text-anchor="middle"><g class="tick" opacity="1" transform="translate(17.173245614035086,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5"></line><text fill="#000" y="0" x="0.5" dy="-10">Oct 2024</text></g><g class="tick" opacity="1" transform="translate(116.4813596491228,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5" stroke-dasharray="2,2"></line><text fill="#000" y="0" x="0.5" dy="-10">Jan 2025</text></g><g class="tick" opacity="1" transform="translate(213.54166666666669,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5"></line><text fill="#000" y="0" x="0.5" dy="-10">Apr 2025</text></g><g class="tick" opacity="1" transform="translate(311.72587719298247,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5" stroke-dasharray="2,2"></line><text fill="#000" y="0" x="0.5" dy="-10">Jul 2025</text></g><g class="tick" opacity="1" transform="translate(410.9890350877193,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5"></line><text fill="#000" y="0" x="0.5" dy="-10">Oct 2025</text></g><g class="tick" opacity="1" transform="translate(510.297149122807,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5" stroke-dasharray="2,2"></line><text fill="#000" y="0" x="0.5" dy="-10">Jan 2026</text></g><g class="tick" opacity="1" transform="translate(607.3574561403508,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5"></line><text fill="#000" y="0" x="0.5" dy="-10">Apr 2026</text></g><g class="tick" opacity="1" transform="translate(705.5416666666667,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5" stroke-dasharray="2,2"></line><text fill="#000" y="0" x="0.5" dy="-10">Jul 2026</text></g><g class="tick" opacity="1" transform="translate(804.8048245614035,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5"></line><text fill="#000" y="0" x="0.5" dy="-10">Oct 2026</text></g></g><g class="axis axis--y" fill="none" font-size="10" font-family="sans-serif" text-anchor="start"><g class="tick" opacity="1" transform="translate(0,45.39682539682538)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Main</text></g><g class="tick" opacity="1" transform="translate(0,115.23809523809523)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 18</text></g><g class="tick" opacity="1" transform="translate(0,185.0793650793651)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 20</text></g><g class="tick" opacity="1" transform="translate(0,254.92063492063494)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 22</text></g><g class="tick" opacity="1" transform="translate(0,324.7619047619048)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 23</text></g><g class="tick" opacity="1" transform="translate(0,394.6031746031747)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 24</text></g><line y1="440" y2="440" x2="820" stroke="#89a19d"></line></g><g><rect class="bar unstable" x="0" y="20.952380952380935" width="820" height="48.88888888888889"></rect><rect class="bar-join unstable" x="-1" y="20.952380952380935" width="2" height="48.88888888888889" style="opacity: 0;"></rect><text class="label" x="15" y="47.39682539682538" style="opacity: 1;">unstable</text></g><g><rect class="bar maintenance" x="0" y="90.79365079365078" width="244.92105263157893" height="48.88888888888889"></rect><rect class="bar-join maintenance" x="-1" y="90.79365079365078" width="2" height="48.88888888888889" style="opacity: 0;"></rect><text class="label" x="15" y="117.23809523809523" style="opacity: 1;">maintenance</text></g><g><rect class="bar maintenance" x="39.921052631578945" y="160.63492063492063" width="598.8157894736842" height="48.88888888888889"></rect><rect class="bar-join maintenance" x="38.921052631578945" y="160.63492063492063" width="2" height="48.88888888888889" style="opacity: 1;"></rect><text class="label" x="54.921052631578945" y="187.0793650793651" style="opacity: 1;">maintenance</text></g><g><rect class="bar active" x="0" y="160.63492063492063" width="39.921052631578945" height="48.88888888888889"></rect><rect class="bar-join active" x="-1" y="160.63492063492063" width="2" height="48.88888888888889" style="opacity: 0;"></rect><text class="label" x="15" y="187.0793650793651" style="opacity: 0;">active</text></g><g><rect class="bar maintenance" x="432.65789473684214" y="230.47619047619048" width="387.34210526315786" height="48.88888888888889"></rect><rect class="bar-join maintenance" x="431.65789473684214" y="230.47619047619048" width="2" height="48.88888888888889" style="opacity: 1;"></rect><text class="label" x="447.65789473684214" y="256.92063492063494" style="opacity: 1;">maintenance</text></g><g><rect class="bar active" x="47.473684210526315" y="230.47619047619048" width="385.18421052631584" height="48.88888888888889"></rect><rect class="bar-join active" x="46.473684210526315" y="230.47619047619048" width="2" height="48.88888888888889" style="opacity: 1;"></rect><text class="label" x="62.473684210526315" y="256.92063492063494" style="opacity: 1;">active</text></g><g><rect class="bar current" x="0" y="230.47619047619048" width="47.473684210526315" height="48.88888888888889"></rect><rect class="bar-join current" x="-1" y="230.47619047619048" width="2" height="48.88888888888889" style="opacity: 0;"></rect><text class="label" x="15" y="256.92063492063494" style="opacity: 0;">current</text></g><g><rect class="bar maintenance" x="213.6315789473684" y="300.31746031746036" width="65.81578947368425" height="48.88888888888889"></rect><rect class="bar-join maintenance" x="212.6315789473684" y="300.31746031746036" width="2" height="48.88888888888889" style="opacity: 1;"></rect><text class="label" x="228.6315789473684" y="326.7619047619048" style="opacity: 0;">maintenance</text></g><g><rect class="bar current" x="33.44736842105263" y="300.31746031746036" width="180.18421052631578" height="48.88888888888889"></rect><rect class="bar-join current" x="32.44736842105263" y="300.31746031746036" width="2" height="48.88888888888889" style="opacity: 0;"></rect><text class="label" x="48.44736842105263" y="326.7619047619048" style="opacity: 1;">current</text></g><g><rect class="bar active" x="440.2105263157895" y="370.15873015873024" width="379.7894736842105" height="48.88888888888889"></rect><rect class="bar-join active" x="439.2105263157895" y="370.15873015873024" width="2" height="48.88888888888889" style="opacity: 1;"></rect><text class="label" x="455.2105263157895" y="396.6031746031747" style="opacity: 1;">active</text></g><g><rect class="bar current" x="236.28947368421052" y="370.15873015873024" width="203.92105263157896" height="48.88888888888889"></rect><rect class="bar-join current" x="235.28947368421052" y="370.15873015873024" width="2" height="48.88888888888889" style="opacity: 0;"></rect><text class="label" x="251.28947368421052" y="396.6031746031747" style="opacity: 1;">current</text></g></g></svg> \ No newline at end of file From 0bb5d49b96e1f11e1ef6cf965861929693053ca6 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 6 Jun 2025 18:22:53 -0400 Subject: [PATCH 0537/1385] chore(ui): merge SideBar and ProgressionSideBar (#7840) * chore(ui): merge SideBar and ProgressionSideBar * fix purity issue * fix styling and crash * fixup! fix styling and crash * allow passing children --- .../components/withProgressionSidebar.tsx | 48 ------ apps/site/components/withSidebar.tsx | 22 ++- apps/site/layouts/Learn.tsx | 4 +- .../ProgressionSidebarGroup/index.module.css | 47 ------ .../ProgressionSidebarGroup/index.tsx | 35 ---- .../ProgressionSidebarItem/index.module.css | 39 ----- .../ProgressionSidebarItem/index.tsx | 32 ---- .../ProgressionSidebar/index.module.css | 30 ---- .../ProgressionSidebar/index.stories.tsx | 79 --------- .../Common/ProgressionSidebar/index.tsx | 59 ------- .../Containers/DocSideBar/index.tsx | 0 .../Sidebar/ProgressionIcon}/index.tsx | 4 +- .../Sidebar/SidebarGroup/index.module.css | 70 ++++++-- .../Containers/Sidebar/SidebarGroup/index.tsx | 18 ++- .../Sidebar/SidebarItem/index.module.css | 57 ++++--- .../Containers/Sidebar/SidebarItem/index.tsx | 33 +++- .../Containers/Sidebar/index.module.css | 7 +- .../Containers/Sidebar/index.stories.tsx | 152 +++++++++--------- .../Containers/Sidebar/index.tsx | 17 +- 19 files changed, 245 insertions(+), 508 deletions(-) delete mode 100644 apps/site/components/withProgressionSidebar.tsx delete mode 100644 packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css delete mode 100644 packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx delete mode 100644 packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css delete mode 100644 packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx delete mode 100644 packages/ui-components/Common/ProgressionSidebar/index.module.css delete mode 100644 packages/ui-components/Common/ProgressionSidebar/index.stories.tsx delete mode 100644 packages/ui-components/Common/ProgressionSidebar/index.tsx create mode 100644 packages/ui-components/Containers/DocSideBar/index.tsx rename packages/ui-components/{Common/ProgressionSidebar/ProgressionSidebarIcon => Containers/Sidebar/ProgressionIcon}/index.tsx (77%) diff --git a/apps/site/components/withProgressionSidebar.tsx b/apps/site/components/withProgressionSidebar.tsx deleted file mode 100644 index a98d27e801f85..0000000000000 --- a/apps/site/components/withProgressionSidebar.tsx +++ /dev/null @@ -1,48 +0,0 @@ -'use client'; - -import ProgressionSidebar from '@node-core/ui-components/Common/ProgressionSidebar'; -import { usePathname } from 'next/navigation'; -import { useLocale, useTranslations } from 'next-intl'; -import type { RichTranslationValues } from 'next-intl'; -import type { FC } from 'react'; - -import Link from '#site/components/Link'; -import { useSiteNavigation } from '#site/hooks/server'; -import { useRouter } from '#site/navigation.mjs'; -import type { NavigationKeys } from '#site/types'; - -type WithProgressionSidebarProps = { - navKey: NavigationKeys; - context?: Record<string, RichTranslationValues>; -}; - -const WithProgressionSidebar: FC<WithProgressionSidebarProps> = ({ - navKey, - context, -}) => { - const { getSideNavigation } = useSiteNavigation(); - const pathname = usePathname(); - const locale = useLocale(); - const t = useTranslations(); - const { push } = useRouter(); - const [[, sidebarNavigation]] = getSideNavigation([navKey], context); - - const mappedProgressionSidebarItems = sidebarNavigation.items.map( - ([, { label, items }]) => ({ - groupName: label, - items: items.map(([, item]) => item), - }) - ); - - return ( - <ProgressionSidebar - groups={mappedProgressionSidebarItems} - pathname={pathname?.replace(`/${locale}`, '')} - title={t('components.common.sidebar.title')} - onSelect={push} - as={Link} - /> - ); -}; - -export default WithProgressionSidebar; diff --git a/apps/site/components/withSidebar.tsx b/apps/site/components/withSidebar.tsx index 5e93888d994c7..a1a2258f978ef 100644 --- a/apps/site/components/withSidebar.tsx +++ b/apps/site/components/withSidebar.tsx @@ -14,29 +14,35 @@ import type { NavigationKeys } from '#site/types'; type WithSidebarProps = { navKeys: Array<NavigationKeys>; context?: Record<string, RichTranslationValues>; + showProgressionIcons?: boolean; }; -const WithSidebar: FC<WithSidebarProps> = ({ navKeys, context }) => { +const WithSidebar: FC<WithSidebarProps> = ({ navKeys, context, ...props }) => { const { getSideNavigation } = useSiteNavigation(); const pathname = usePathname()!; const locale = useLocale(); const t = useTranslations(); const { push } = useRouter(); + const sideNavigation = getSideNavigation(navKeys, context); - const mappedSidebarItems = getSideNavigation(navKeys, context).map( - ([, { label, items }]) => ({ - groupName: label, - items: items.map(([, item]) => item), - }) - ); + const mappedSidebarItems = + // If there's only a single navigation key, use it's sub-items + // as our navigation. + (navKeys.length === 1 ? sideNavigation[0][1].items : sideNavigation).map( + ([, { label, items }]) => ({ + groupName: label, + items: items.map(([, item]) => item), + }) + ); return ( <Sidebar groups={mappedSidebarItems} pathname={pathname.replace(`/${locale}`, '')} title={t('components.common.sidebar.title')} - onSelect={value => push(value)} + onSelect={push} as={Link} + {...props} /> ); }; diff --git a/apps/site/layouts/Learn.tsx b/apps/site/layouts/Learn.tsx index 19927fd1c2d03..2cd92392d83b6 100644 --- a/apps/site/layouts/Learn.tsx +++ b/apps/site/layouts/Learn.tsx @@ -5,7 +5,7 @@ import WithBreadcrumbs from '#site/components/withBreadcrumbs'; import WithFooter from '#site/components/withFooter'; import WithMetaBar from '#site/components/withMetaBar'; import WithNavBar from '#site/components/withNavBar'; -import WithProgressionSidebar from '#site/components/withProgressionSidebar'; +import WithSideBar from '#site/components/withSidebar'; import WithSidebarCrossLinks from '#site/components/withSidebarCrossLinks'; const LearnLayout: FC<PropsWithChildren> = ({ children }) => ( @@ -13,7 +13,7 @@ const LearnLayout: FC<PropsWithChildren> = ({ children }) => ( <WithNavBar /> <Article> - <WithProgressionSidebar navKey="learn" /> + <WithSideBar navKeys={['learn']} showProgressionIcons={true} /> <div> <main> diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css deleted file mode 100644 index 909d230df577a..0000000000000 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css +++ /dev/null @@ -1,47 +0,0 @@ -@reference "../../../styles/index.css"; - -.group { - @apply flex - flex-col - gap-4 - text-sm - font-medium - text-neutral-800 - dark:text-neutral-200; - - .items { - @apply relative - -left-1 - flex - flex-col - gap-2 - after:absolute - after:left-[0.45rem] - after:top-0 - after:z-10 - after:h-full - after:w-px - after:bg-neutral-200 - after:content-[''] - dark:after:bg-neutral-800; - - a { - @apply first:before:absolute - first:before:bottom-[calc(50%+0.25rem)] - first:before:left-0 - first:before:h-20 - first:before:w-4 - first:before:bg-white - first:before:content-[''] - last:after:absolute - last:after:left-0 - last:after:top-[calc(50%+0.25rem)] - last:after:h-20 - last:after:w-4 - last:after:bg-white - last:after:content-[''] - first:dark:before:bg-neutral-950 - last:dark:after:bg-neutral-950; - } - } -} diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx deleted file mode 100644 index e0c681ca9c75a..0000000000000 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import type { ComponentProps, FC } from 'react'; - -import ProgressionSidebarItem from '#ui/Common/ProgressionSidebar/ProgressionSidebarItem'; -import type { FormattedMessage, LinkLike } from '#ui/types'; - -import styles from './index.module.css'; - -type ProgressionSidebarGroupProps = { - groupName: FormattedMessage; - items: Array<ComponentProps<typeof ProgressionSidebarItem>>; - pathname?: string; - as?: LinkLike; -}; - -const ProgressionSidebarGroup: FC<ProgressionSidebarGroupProps> = ({ - groupName, - items, - ...props -}) => ( - <section className={styles.group}> - {groupName} - <div className={styles.items}> - {items.map(({ label, link }) => ( - <ProgressionSidebarItem - key={link} - label={label} - link={link} - {...props} - /> - ))} - </div> - </section> -); - -export default ProgressionSidebarGroup; diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css deleted file mode 100644 index 523ca8dd62e3f..0000000000000 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css +++ /dev/null @@ -1,39 +0,0 @@ -@reference "../../../styles/index.css"; - -a.item { - @apply font-regular - relative - z-20 - flex - w-full - items-center - gap-1 - overflow-hidden - text-sm - text-neutral-800 - dark:text-neutral-200; - - &:hover { - @apply text-neutral-900 - motion-safe:transition-colors - dark:text-white; - } - - svg { - @apply shrink-0 - fill-neutral-200 - stroke-white - stroke-[4] - dark:fill-neutral-800 - dark:stroke-neutral-950; - } - - &.active { - @apply text-neutral-900 - dark:text-white; - - svg { - @apply fill-green-500; - } - } -} diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx b/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx deleted file mode 100644 index bfe313b8dbdce..0000000000000 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import type { FC } from 'react'; - -import BaseActiveLink from '#ui/Common/BaseActiveLink'; -import ProgressionSidebarIcon from '#ui/Common/ProgressionSidebar/ProgressionSidebarIcon'; -import type { FormattedMessage, LinkLike } from '#ui/types'; - -import styles from './index.module.css'; - -type ProgressionSidebarItemProps = { - label: FormattedMessage; - link: string; - as?: LinkLike; - pathname?: string; -}; - -const ProgressionSidebarItem: FC<ProgressionSidebarItemProps> = ({ - label, - link, - ...props -}) => ( - <BaseActiveLink - className={styles.item} - activeClassName={styles.active} - href={link} - {...props} - > - <ProgressionSidebarIcon /> - {label} - </BaseActiveLink> -); - -export default ProgressionSidebarItem; diff --git a/packages/ui-components/Common/ProgressionSidebar/index.module.css b/packages/ui-components/Common/ProgressionSidebar/index.module.css deleted file mode 100644 index 5be47ed42f100..0000000000000 --- a/packages/ui-components/Common/ProgressionSidebar/index.module.css +++ /dev/null @@ -1,30 +0,0 @@ -@reference "../../styles/index.css"; - -.wrapper { - @apply flex - w-full - flex-col - gap-8 - overflow-auto - border-r-0 - border-neutral-200 - bg-white - px-4 - py-6 - sm:border-r - md:max-w-xs - lg:px-6 - dark:border-neutral-900 - dark:bg-neutral-950; - - > section { - @apply hidden - sm:flex; - } - - > span { - @apply flex - w-full - sm:hidden; - } -} diff --git a/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx b/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx deleted file mode 100644 index f40b33b36f837..0000000000000 --- a/packages/ui-components/Common/ProgressionSidebar/index.stories.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import ProgressionSidebar from '#ui/Common/ProgressionSidebar'; - -type Story = StoryObj<typeof ProgressionSidebar>; -type Meta = MetaObj<typeof ProgressionSidebar>; - -export const Default: Story = { - args: { - groups: [ - { - groupName: 'Getting Started', - items: [ - { - label: 'Introduction to Node.js', - link: '/', - }, - { - label: 'How to install Node.js', - link: '/how-to-install-nodejs', - }, - { - label: 'How much JavaScript do you need to know to use Node.js?', - link: '/how-much-javascript-do-you-need-to-know-to-use-nodejs', - }, - { - label: 'Differences between Node.js and the Browser', - link: '/differences-between-nodejs-and-the-browser', - }, - { - label: 'The V8 JavaScript Engine', - link: '/the-v8-javascript-engine', - }, - { - label: 'An introduction to the npm package manager', - link: '/an-introduction-to-the-npm-package-manager', - }, - ], - }, - { - groupName: 'Asynchronous Work', - items: [ - { - label: 'Asynchronous flow control', - link: '/asynchronous-flow-control', - }, - { - label: 'Overview of Blocking vs Non-Blocking', - link: '/overview-of-blocking-vs-non-blocking', - }, - ], - }, - { - groupName: 'Manipulating Files', - items: [ - { - label: 'Node.js file stats', - link: '/nodejs-file-stats', - }, - { - label: 'Node.js File Paths', - link: '/nodejs-file-paths', - }, - ], - }, - { - groupName: 'Single item', - items: [ - { - label: 'Item', - link: '/item', - }, - ], - }, - ], - }, -}; - -export default { component: ProgressionSidebar } as Meta; diff --git a/packages/ui-components/Common/ProgressionSidebar/index.tsx b/packages/ui-components/Common/ProgressionSidebar/index.tsx deleted file mode 100644 index 0afab901b55f1..0000000000000 --- a/packages/ui-components/Common/ProgressionSidebar/index.tsx +++ /dev/null @@ -1,59 +0,0 @@ -'use client'; - -import { useRef, type ComponentProps, type FC } from 'react'; - -import ProgressionSidebarGroup from '#ui/Common/ProgressionSidebar/ProgressionSidebarGroup'; -import Select from '#ui/Common/Select'; -import type { LinkLike } from '#ui/types'; - -import styles from './index.module.css'; - -type ProgressionSidebarProps = { - groups: Array<ComponentProps<typeof ProgressionSidebarGroup>>; - pathname?: string; - title: string; - onSelect: (value: string) => void; - as?: LinkLike; -}; - -const ProgressionSidebar: FC<ProgressionSidebarProps> = ({ - groups, - pathname, - title, - onSelect, - as, -}) => { - const ref = useRef<HTMLElement>(null); - const selectItems = groups.map(({ items, groupName }) => ({ - label: groupName, - items: items.map(({ label, link }) => ({ value: link, label })), - })); - - const currentItem = selectItems - .map(item => item.items) - .flat() - .find(item => pathname === item.value); - - return ( - <nav className={styles.wrapper} ref={ref}> - <Select - label={title} - onChange={onSelect} - values={selectItems} - defaultValue={currentItem?.value} - /> - - {groups.map(({ groupName, items }) => ( - <ProgressionSidebarGroup - key={groupName.toString()} - groupName={groupName} - items={items} - as={as} - pathname={pathname} - /> - ))} - </nav> - ); -}; - -export default ProgressionSidebar; diff --git a/packages/ui-components/Containers/DocSideBar/index.tsx b/packages/ui-components/Containers/DocSideBar/index.tsx new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx b/packages/ui-components/Containers/Sidebar/ProgressionIcon/index.tsx similarity index 77% rename from packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx rename to packages/ui-components/Containers/Sidebar/ProgressionIcon/index.tsx index 4c89095de5504..841ade4b62737 100644 --- a/packages/ui-components/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx +++ b/packages/ui-components/Containers/Sidebar/ProgressionIcon/index.tsx @@ -1,6 +1,6 @@ import type { FC, SVGAttributes } from 'react'; -const ProgressionSidebarIcon: FC<SVGAttributes<SVGSVGElement>> = props => ( +const ProgressionIcon: FC<SVGAttributes<SVGSVGElement>> = props => ( <svg xmlns="http://www.w3.org/2000/svg" width="16" @@ -13,4 +13,4 @@ const ProgressionSidebarIcon: FC<SVGAttributes<SVGSVGElement>> = props => ( </svg> ); -export default ProgressionSidebarIcon; +export default ProgressionIcon; diff --git a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css index 7dd889e6b98be..5e6d503e41fd5 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css +++ b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.module.css @@ -5,22 +5,60 @@ w-full flex-col gap-2; -} -.groupName { - @apply px-2 - py-1 - text-xs - font-semibold - text-neutral-800 - dark:text-neutral-600; -} + &:not(.progression) { + .groupName { + @apply px-2 + py-1 + text-xs + font-semibold + text-neutral-800 + dark:text-neutral-600; + } + } -.itemList { - @apply m-0 - flex - flex-col - items-start - gap-0.5 - p-0; + &.progression { + @apply flex + flex-col + gap-4 + text-sm + font-medium + text-neutral-800 + dark:text-neutral-200; + + .itemList { + @apply relative + -left-1 + flex + flex-col + after:absolute + after:left-[0.45rem] + after:top-0 + after:z-10 + after:h-full + after:w-px + after:bg-neutral-200 + after:content-[''] + dark:after:bg-neutral-800; + + a { + @apply first:before:absolute + first:before:bottom-[calc(50%+0.25rem)] + first:before:left-0 + first:before:h-20 + first:before:w-4 + first:before:bg-white + first:before:content-[''] + last:after:absolute + last:after:left-0 + last:after:top-[calc(50%+0.25rem)] + last:after:h-20 + last:after:w-4 + last:after:bg-white + last:after:content-[''] + first:dark:before:bg-neutral-950 + last:dark:after:bg-neutral-950; + } + } + } } diff --git a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx index 821c3865eb9a2..d9e432c1f9425 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx @@ -1,3 +1,4 @@ +import classNames from 'classnames'; import type { ComponentProps, FC } from 'react'; import SidebarItem from '#ui/Containers/Sidebar/SidebarItem'; @@ -10,18 +11,31 @@ type SidebarGroupProps = { items: Array<Omit<ComponentProps<typeof SidebarItem>, 'as' | 'pathname'>>; as?: LinkLike; pathname?: string; + showProgressionIcons?: boolean; }; const SidebarGroup: FC<SidebarGroupProps> = ({ groupName, items, + showProgressionIcons, ...props }) => ( - <section className={styles.group}> + <section + className={classNames({ + [styles.group]: true, + [styles.progression]: showProgressionIcons, + })} + > <label className={styles.groupName}>{groupName}</label> <ul className={styles.itemList}> {items.map(({ label, link }) => ( - <SidebarItem key={link} label={label} link={link} {...props} /> + <SidebarItem + key={link} + label={label} + link={link} + showProgressionIcons={showProgressionIcons} + {...props} + /> ))} </ul> </section> diff --git a/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css b/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css index 2a470766d0508..c2ea7c7ff8e41 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.module.css @@ -1,35 +1,56 @@ -@reference "../../../styles/index.css"; +@reference '../../../styles/index.css'; -.sideBarItem { - @apply flex +.item { + @apply font-regular + relative + z-20 + flex w-full - list-none + items-center + overflow-hidden + text-sm text-neutral-800 dark:text-neutral-200; - a { - @apply inline-flex - items-center - gap-2 - p-2; - } - .label { @apply font-regular - w-full + p-2 text-sm; } + .progressionIcon { + @apply shrink-0 + fill-neutral-200 + stroke-white + stroke-[4] + dark:fill-neutral-800 + dark:stroke-neutral-950; + } + .icon { @apply size-3 text-neutral-500 dark:text-neutral-200; } -} -.active { - @apply rounded-sm - bg-green-600 - text-white - dark:text-white; + &.progression { + .label { + @apply p-1; + } + } + + &.active { + @apply text-neutral-900 + dark:text-white; + + .progressionIcon { + @apply fill-green-500; + } + + &:not(.progression) .label { + @apply rounded-sm + bg-green-600 + text-white; + } + } } diff --git a/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx b/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx index a15a370a7b2ce..bcf429dc64026 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx @@ -1,26 +1,43 @@ import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; +import classNames from 'classnames'; import type { FC } from 'react'; -import ActiveLink from '#ui/Common/BaseActiveLink'; +import BaseActiveLink from '#ui/Common/BaseActiveLink'; import type { FormattedMessage, LinkLike } from '#ui/types'; import styles from './index.module.css'; +import ProgressionIcon from '../ProgressionIcon'; type SidebarItemProps = { label: FormattedMessage; link: string; as?: LinkLike; pathname?: string; + showProgressionIcons?: boolean; }; -const SidebarItem: FC<SidebarItemProps> = ({ label, link, ...props }) => ( - <li className={styles.sideBarItem}> - <ActiveLink href={link} activeClassName={styles.active} {...props}> - <span className={styles.label}>{label}</span> +const SidebarItem: FC<SidebarItemProps> = ({ + label, + link, + showProgressionIcons = false, + ...props +}) => ( + <BaseActiveLink + className={classNames({ + [styles.item]: true, + [styles.progression]: showProgressionIcons, + })} + href={link} + activeClassName={styles.active} + {...props} + > + {showProgressionIcons && ( + <ProgressionIcon className={styles.progressionIcon} /> + )} + <span className={styles.label}>{label}</span> - {link.startsWith('http') && <ArrowUpRightIcon className={styles.icon} />} - </ActiveLink> - </li> + {link.startsWith('http') && <ArrowUpRightIcon className={styles.icon} />} + </BaseActiveLink> ); export default SidebarItem; diff --git a/packages/ui-components/Containers/Sidebar/index.module.css b/packages/ui-components/Containers/Sidebar/index.module.css index c022902781397..5be47ed42f100 100644 --- a/packages/ui-components/Containers/Sidebar/index.module.css +++ b/packages/ui-components/Containers/Sidebar/index.module.css @@ -4,18 +4,17 @@ @apply flex w-full flex-col - items-start gap-8 overflow-auto - overflow-x-hidden - border-r-neutral-200 + border-r-0 + border-neutral-200 bg-white px-4 py-6 sm:border-r md:max-w-xs lg:px-6 - dark:border-r-neutral-900 + dark:border-neutral-900 dark:bg-neutral-950; > section { diff --git a/packages/ui-components/Containers/Sidebar/index.stories.tsx b/packages/ui-components/Containers/Sidebar/index.stories.tsx index 2443bf5b7d040..851d01d8fc158 100644 --- a/packages/ui-components/Containers/Sidebar/index.stories.tsx +++ b/packages/ui-components/Containers/Sidebar/index.stories.tsx @@ -5,80 +5,84 @@ import Sidebar from '#ui/Containers/Sidebar'; type Story = StoryObj<typeof Sidebar>; type Meta = MetaObj<typeof Sidebar>; -export const Default: Story = { - args: { - groups: [ - { - groupName: 'About Node.js', - items: [ - { - link: '/item1', - label: 'About Node.js', - }, - { - link: '/item2', - label: 'Project Governance', - }, - { - link: '/item3', - label: 'Releases', - }, - { - link: '/item4', - label: 'Branding', - }, - { - link: '/item5', - label: 'Privacy Policy', - }, - { - link: '/item6', - label: 'Security Reporting', - }, - ], - }, - { - groupName: 'Get Involved', - items: [ - { - link: '/item7', - label: 'Get Involved', - }, - { - link: '/item8', - label: 'Collab Summit', - }, - { - link: '/item9', - label: 'Contribute', - }, - { - link: '/item10', - label: 'Code of Conduct', - }, - ], - }, - { - groupName: 'Download', - items: [ - { - link: '/item11', - label: 'Download', - }, - { - link: '/item12', - label: 'Package Manager', - }, - { - link: '/item13', - label: 'Node.js Releases', - }, - ], - }, - ], - title: 'Sidebar', - onSelect: console.log, - }, +const args = { + groups: [ + { + groupName: 'About Node.js', + items: [ + { + link: '/item1', + label: 'About Node.js', + }, + { + link: '/item2', + label: 'Project Governance', + }, + { + link: '/item3', + label: 'Releases', + }, + { + link: '/item4', + label: 'Branding', + }, + { + link: '/item5', + label: 'Privacy Policy', + }, + { + link: '/item6', + label: 'Security Reporting', + }, + ], + }, + { + groupName: 'Get Involved', + items: [ + { + link: '/item7', + label: 'Get Involved', + }, + { + link: '/item8', + label: 'Collab Summit', + }, + { + link: '/item9', + label: 'Contribute', + }, + { + link: '/item10', + label: 'Code of Conduct', + }, + ], + }, + { + groupName: 'Download', + items: [ + { + link: '/item11', + label: 'Download', + }, + { + link: '/item12', + label: 'Package Manager', + }, + { + link: '/item13', + label: 'Node.js Releases', + }, + ], + }, + ], + title: 'Sidebar', + onSelect: console.log, + pathname: '/item1', +}; + +export const Default: Story = { args }; +export const Progression: Story = { + args: { ...args, showProgressionIcons: true }, }; export default { component: Sidebar } as Meta; diff --git a/packages/ui-components/Containers/Sidebar/index.tsx b/packages/ui-components/Containers/Sidebar/index.tsx index 8806b98e3525d..57ed582687e8f 100644 --- a/packages/ui-components/Containers/Sidebar/index.tsx +++ b/packages/ui-components/Containers/Sidebar/index.tsx @@ -1,4 +1,4 @@ -import type { ComponentProps, FC } from 'react'; +import type { ComponentProps, FC, PropsWithChildren } from 'react'; import Select from '#ui/Common/Select'; import SidebarGroup from '#ui/Containers/Sidebar/SidebarGroup'; @@ -7,19 +7,24 @@ import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; type SidebarProps = { - groups: Array<Omit<ComponentProps<typeof SidebarGroup>, 'as' | 'pathname'>>; + groups: Array< + Pick<ComponentProps<typeof SidebarGroup>, 'items' | 'groupName'> + >; pathname?: string; title: string; onSelect: (value: string) => void; as?: LinkLike; + showProgressionIcons?: boolean; }; -const SideBar: FC<SidebarProps> = ({ +const SideBar: FC<PropsWithChildren<SidebarProps>> = ({ groups, pathname, title, onSelect, as, + showProgressionIcons = false, + children, }) => { const selectItems = groups.map(({ items, groupName }) => ({ label: groupName, @@ -27,12 +32,13 @@ const SideBar: FC<SidebarProps> = ({ })); const currentItem = selectItems - .map(item => item.items) - .flat() + .flatMap(item => item.items) .find(item => pathname === item.value); return ( <aside className={styles.wrapper}> + {children} + {selectItems.length > 0 && ( <Select label={title} @@ -49,6 +55,7 @@ const SideBar: FC<SidebarProps> = ({ items={items} pathname={pathname} as={as} + showProgressionIcons={showProgressionIcons} /> ))} </aside> From ab61d4525c0c108c9d9c860e23572f07a69b17b2 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Sat, 7 Jun 2025 14:19:56 +0200 Subject: [PATCH 0538/1385] chore(navigation): re-order (#7841) --- apps/site/navigation.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/site/navigation.json b/apps/site/navigation.json index f3cfb8cd9fa7c..598019b9c4d6e 100644 --- a/apps/site/navigation.json +++ b/apps/site/navigation.json @@ -102,14 +102,6 @@ "link": "/about", "label": "components.navigation.about.links.aboutSide" }, - "branding": { - "link": "/about/branding", - "label": "components.navigation.about.links.branding" - }, - "governance": { - "link": "/about/governance", - "label": "components.navigation.about.links.governance" - }, "previousReleases": { "link": "/about/previous-releases", "label": "components.navigation.about.links.releases" @@ -117,6 +109,14 @@ "securityReporting": { "link": "/about/security-reporting", "label": "components.navigation.about.links.security" + }, + "governance": { + "link": "/about/governance", + "label": "components.navigation.about.links.governance" + }, + "branding": { + "link": "/about/branding", + "label": "components.navigation.about.links.branding" } } }, From 7186d72cbe98d60c61b8f90ba2f738b0efed36ef Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 7 Jun 2025 10:17:16 -0400 Subject: [PATCH 0539/1385] fix(ui): sidebar css fixes (#7843) --- .../Containers/Sidebar/SidebarGroup/index.tsx | 13 +++++++++---- .../Containers/Sidebar/index.module.css | 4 ++-- packages/ui-components/Containers/Sidebar/index.tsx | 2 ++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx index d9e432c1f9425..3b15b3bb126b6 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarGroup/index.tsx @@ -11,6 +11,7 @@ type SidebarGroupProps = { items: Array<Omit<ComponentProps<typeof SidebarItem>, 'as' | 'pathname'>>; as?: LinkLike; pathname?: string; + className: string; showProgressionIcons?: boolean; }; @@ -18,13 +19,17 @@ const SidebarGroup: FC<SidebarGroupProps> = ({ groupName, items, showProgressionIcons, + className, ...props }) => ( <section - className={classNames({ - [styles.group]: true, - [styles.progression]: showProgressionIcons, - })} + className={classNames( + { + [styles.group]: true, + [styles.progression]: showProgressionIcons, + }, + className + )} > <label className={styles.groupName}>{groupName}</label> <ul className={styles.itemList}> diff --git a/packages/ui-components/Containers/Sidebar/index.module.css b/packages/ui-components/Containers/Sidebar/index.module.css index 5be47ed42f100..902b1305f708e 100644 --- a/packages/ui-components/Containers/Sidebar/index.module.css +++ b/packages/ui-components/Containers/Sidebar/index.module.css @@ -17,12 +17,12 @@ dark:border-neutral-900 dark:bg-neutral-950; - > section { + .navigation { @apply hidden sm:flex; } - > span { + .mobileSelect { @apply flex w-full sm:hidden; diff --git a/packages/ui-components/Containers/Sidebar/index.tsx b/packages/ui-components/Containers/Sidebar/index.tsx index 57ed582687e8f..68b2404eb958c 100644 --- a/packages/ui-components/Containers/Sidebar/index.tsx +++ b/packages/ui-components/Containers/Sidebar/index.tsx @@ -45,6 +45,7 @@ const SideBar: FC<PropsWithChildren<SidebarProps>> = ({ values={selectItems} defaultValue={currentItem?.value} onChange={onSelect} + className={styles.mobileSelect} /> )} @@ -56,6 +57,7 @@ const SideBar: FC<PropsWithChildren<SidebarProps>> = ({ pathname={pathname} as={as} showProgressionIcons={showProgressionIcons} + className={styles.navigation} /> ))} </aside> From 9592ede0c373887bc655fce1377f06f063194424 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 7 Jun 2025 17:03:26 -0400 Subject: [PATCH 0540/1385] fix(sidebar): use RegExp for outgoing link detection (#7844) * fix(sidebar): use RegExp for outgoing link detection Signed-off-by: Aviv Keller <me@aviv.sh> * also use regex in Link --------- Signed-off-by: Aviv Keller <me@aviv.sh> --- apps/site/components/Link.tsx | 2 +- packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/components/Link.tsx b/apps/site/components/Link.tsx index 72ececf586631..b7d32ff911acd 100644 --- a/apps/site/components/Link.tsx +++ b/apps/site/components/Link.tsx @@ -7,7 +7,7 @@ const Link: FC<HTMLProps<HTMLAnchorElement>> = ({ href, ...props }) => { - if (!href || href.toString().startsWith('http')) { + if (!href || /^https?:/.test(href.toString())) { return ( <a href={href} {...props}> {children} diff --git a/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx b/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx index bcf429dc64026..0556c11c0d156 100644 --- a/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx +++ b/packages/ui-components/Containers/Sidebar/SidebarItem/index.tsx @@ -36,7 +36,7 @@ const SidebarItem: FC<SidebarItemProps> = ({ )} <span className={styles.label}>{label}</span> - {link.startsWith('http') && <ArrowUpRightIcon className={styles.icon} />} + {/^https?:/.test(link) && <ArrowUpRightIcon className={styles.icon} />} </BaseActiveLink> ); From 526a386ed723494a0e1d0110768e8605b5151083 Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Sun, 8 Jun 2025 04:48:13 +0200 Subject: [PATCH 0541/1385] [automated]: crowdin sync (#7839) * 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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- apps/site/pages/fr/about/previous-releases.mdx | 2 +- packages/i18n/locales/fr.json | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/site/pages/fr/about/previous-releases.mdx b/apps/site/pages/fr/about/previous-releases.mdx index 27df60dd5dea0..e3cb336e98516 100644 --- a/apps/site/pages/fr/about/previous-releases.mdx +++ b/apps/site/pages/fr/about/previous-releases.mdx @@ -18,7 +18,7 @@ Tous les détails concernant le calendrier des versions de Node.js sont disponib ### Support Commercial -Le support commercial pour les versions dépassant la phase de maintenance est disponible auprès de notre partenaire OpenJS Ecosystem Sustainability Program [HeroDevs](https://herodevs.com/). +Le support commercial pour les versions dépassant la phase de maintenance est disponible auprès de notre partenaire OpenJS Ecosystem Sustainability Program [HeroDevs](https://www.herodevs.com/support/node-nes?utm_source=NodeJS+&utm_medium=Link&utm_campaign=Version_support_page). ## Vous cherchez la dernière version d'une branche de version ? diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index f33ad358c39d6..4b9a0fa5b742d 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -238,9 +238,20 @@ "tableOfContents": "Table des matières" }, "search": { - "searchBox": { - "placeholder": "Commencer à écrire..." - } + "searchPlaceholder": "Commencer à écrire...", + "chatPlaceholder": "Demande-moi n'importe quoi", + "noResultsFoundFor": "Aucun résultat trouvé pour", + "suggestions": "Suggestions", + "seeAll": "Afficher tout", + "addMore": "Plus de détails", + "clearChat": "Effacer la conversation", + "errorMessage": "Une erreur s'est produite lors de la recherche. Veuillez réessayer.", + "disclaimer": "Les résumés d'IA peuvent contenir des erreurs. Veuillez vérifier les informations.", + "startYourSearch": "Commencez votre recherche", + "initErrorSearch": "Impossible d'initialiser le service de recherche", + "initErrorChat": "Impossible d'initialiser le service de chat", + "chatButtonLabel": "Obtenir un résumé de l'IA", + "searchButtonLabel": "Recherche" }, "blog": { "blogHeader": { From c37540869fb268dd085eec53b7033d4e9c7b24ea Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Sun, 8 Jun 2025 13:34:13 +0300 Subject: [PATCH 0542/1385] fix: node 18 eol support images (#7847) --- apps/site/pages/en/blog/announcements/node-18-eol-support.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/blog/announcements/node-18-eol-support.md b/apps/site/pages/en/blog/announcements/node-18-eol-support.md index 93af63cadcdb3..8b9e6601c4ce4 100644 --- a/apps/site/pages/en/blog/announcements/node-18-eol-support.md +++ b/apps/site/pages/en/blog/announcements/node-18-eol-support.md @@ -87,5 +87,5 @@ The path forward is clear: **Node.js 22 offers the longest support window, best Your applications, your users, and your future self will thank you for making the strategic move to Node.js v22 today. -[image1]: /static/images/blob/announcements/2025-eol-node-graph.png -[image2]: /static/images/blob/announcements/2025-release-schedule.svg +[image1]: /static/images/blog/announcements/2025-eol-node-graph.png +[image2]: /static/images/blog/announcements/2025-release-schedule.svg From 121f947ccf7ebff38ac068c4d399da79c86ef1d6 Mon Sep 17 00:00:00 2001 From: Caner Akdas <canerakdas@gmail.com> Date: Sun, 8 Jun 2025 15:08:19 +0300 Subject: [PATCH 0543/1385] fix: node 18 eol support publish date (#7848) --- apps/site/pages/en/blog/announcements/node-18-eol-support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/blog/announcements/node-18-eol-support.md b/apps/site/pages/en/blog/announcements/node-18-eol-support.md index 8b9e6601c4ce4..bea6b15d4effd 100644 --- a/apps/site/pages/en/blog/announcements/node-18-eol-support.md +++ b/apps/site/pages/en/blog/announcements/node-18-eol-support.md @@ -1,5 +1,5 @@ --- -date: '2025-06-15T12:00:00.000Z' +date: '2025-06-06T12:00:00.000Z' category: announcements title: Beware of End-of-Life Node.js Versions - Upgrade or Seek Post-EOL Support layout: blog-post From 4d1ce7b2037d1adfdc36cf9f219250cea2f8bba9 Mon Sep 17 00:00:00 2001 From: Matteo Collina <hello@matteocollina.com> Date: Sun, 8 Jun 2025 14:09:03 +0200 Subject: [PATCH 0544/1385] Final touches on EOL article (#7849) * Final touches on EOL article Signed-off-by: Matteo Collina <hello@matteocollina.com> * Update apps/site/pages/en/blog/announcements/node-18-eol-support.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> --------- Signed-off-by: Matteo Collina <hello@matteocollina.com> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../en/blog/announcements/node-18-eol-support.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/site/pages/en/blog/announcements/node-18-eol-support.md b/apps/site/pages/en/blog/announcements/node-18-eol-support.md index bea6b15d4effd..9c70aca97e5af 100644 --- a/apps/site/pages/en/blog/announcements/node-18-eol-support.md +++ b/apps/site/pages/en/blog/announcements/node-18-eol-support.md @@ -23,13 +23,16 @@ Many ask, “**Why does the Node.js project not fix vulnerabilities for all rele If you are looking for additional proof points, here are a few examples of vulnerabilities that older versions of [Node.js](http://Node.js) are impacted: - [https://nvd.nist.gov/vuln/detail/CVE-2025-23167](https://nvd.nist.gov/vuln/detail/CVE-2025-23167) affects 18, 16, 14 (llhttp) \- medium -- [https://nvd.nist.gov/vuln/detail/CVE-2023-5678](https://nvd.nist.gov/vuln/detail/CVE-2023-5678) affects 16 e 14 (openssl) \- medium -- [https://nvd.nist.gov/vuln/detail/CVE-2024-22019](https://nvd.nist.gov/vuln/detail/CVE-2024-22019) affects 16 e 14 (llhttp) \- high +- [https://nvd.nist.gov/vuln/detail/CVE-2023-5678](https://nvd.nist.gov/vuln/detail/CVE-2023-5678) affects 16, 14 (openssl) \- medium +- [https://nvd.nist.gov/vuln/detail/CVE-2024-22019](https://nvd.nist.gov/vuln/detail/CVE-2024-22019) affects 16, 14 (llhttp) \- high - [https://nvd.nist.gov/vuln/detail/CVE-2021-39135](https://nvd.nist.gov/vuln/detail/CVE-2021-39135) affects 14 (npm) \- high -This affects a staggering number of projects. Based on download statistics, Node.js v18 still accounts for approximately **50 million monthly downloads**, while legacy versions (v16 and below) continue to see **tens of millions of downloads per month**. That represents countless applications running on known vulnerable, unsupported runtime environments. +This affects a staggering number of projects. Based on download statistics, Node.js v18, the most recent End-of-Life version, still accounts for approximately **50 million monthly downloads**, while earlier legacy versions (v16 and below) continue to see **tens of millions of downloads per month**. That represents countless applications running on known vulnerable, unsupported runtime environments. -\[suggested paragraph on [GitHub \- nodejs/is-my-node-vulnerable: package that checks if your Node.js installation is vulnerable to known security vulnerabilities](https://github.com/nodejs/is-my-node-vulnerable)\] +You can check if your Node.js installation is vulnerable to known security +vulnerabilities using the [is-my-node-vulnerable](https://github.com/nodejs/is-my-node-vulnerable) +package. This tool checks your Node.js version against a database of known +vulnerabilities and provides guidance on whether you need to upgrade. ## Node.js v22: The Smart Long-Term Choice From 3d565a463ee9f37ae55315b49f81f62d0b0d7c9b Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sun, 8 Jun 2025 16:49:07 -0400 Subject: [PATCH 0545/1385] chore(meta): docs folder (#7837) --- COLLABORATOR_GUIDE.md | 681 ------------------ CONTRIBUTING.md | 419 +++-------- docs/README.md | 39 + docs/adding-pages.md | 290 ++++++++ docs/code-style.md | 225 ++++++ docs/collaborator-guide.md | 183 +++++ CONTENT_VS_CODE.md => docs/content-vs-code.md | 0 docs/creating-components.md | 357 +++++++++ .../dependency-pinning.md | 0 docs/downloads-page.md | 275 +++++++ docs/getting-started.md | 148 ++++ docs/package-publishing.md | 52 ++ docs/technologies.md | 355 +++++++++ TRANSLATION.md => docs/translation.md | 0 docs/writing-tests.md | 177 +++++ 15 files changed, 2188 insertions(+), 1013 deletions(-) delete mode 100644 COLLABORATOR_GUIDE.md create mode 100644 docs/README.md create mode 100644 docs/adding-pages.md create mode 100644 docs/code-style.md create mode 100644 docs/collaborator-guide.md rename CONTENT_VS_CODE.md => docs/content-vs-code.md (100%) create mode 100644 docs/creating-components.md rename DEPENDENCY_PINNING.md => docs/dependency-pinning.md (100%) create mode 100644 docs/downloads-page.md create mode 100644 docs/getting-started.md create mode 100644 docs/package-publishing.md create mode 100644 docs/technologies.md rename TRANSLATION.md => docs/translation.md (100%) create mode 100644 docs/writing-tests.md diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md deleted file mode 100644 index 3a00478db6656..0000000000000 --- a/COLLABORATOR_GUIDE.md +++ /dev/null @@ -1,681 +0,0 @@ -# Node.js Collaborator Guide - -- [Issues and Pull Requests](#issues-and-pull-requests) -- [Accepting Modifications](#accepting-modifications) - - [Involving the Website Team](#involving-the-website-team) -- [Technologies used in the Website](#technologies-used-in-the-website) -- [Code editing](#code-editing) - - [Adding new pages](#adding-new-pages) - - [Create the page content](#create-the-page-content) - - [Translating pages](#translating-pages) -- [Creating Components](#creating-react-components) - - [Styling a Component](#styling-a-component) - - [Best practices when creating a Component](#best-practices-when-creating-a-component) - - [How a new Component should look like when freshly created](#how-a-new-component-should-look-like-when-freshly-created) - - [Best practices for Component development in general](#best-practices-for-component-development-in-general) -- [The new Downloads page](#the-new-downloads-page) - - [Adding a Download Installation Method](#adding-a-download-installation-method) - - [Adding a Download Package Manager](#adding-a-download-package-manager) -- [Unit Tests and Storybooks](#unit-tests-and-storybooks) - - [General Guidelines for Unit Tests](#general-guidelines-for-unit-tests) - - [General Guidelines for Playwright E2E Tests](#general-guidelines-for-playwright-e2e-tests) - - [General Guidelines for Storybooks](#general-guidelines-for-storybooks) -- [Publishing Packages](#publishing-packages) -- [Remarks on Technologies used](#remarks-on-technologies-used) -- [Seeking additional clarification](#seeking-additional-clarification) - -This document contains information for Collaborators of the Node.js website project regarding maintaining the code, documentation, and issues. - -Collaborators should be familiar with the guidelines for new contributors in [CONTRIBUTING.md](./CONTRIBUTING.md). - -## Issues and Pull Requests - -Courtesy should always be shown to individuals submitting issues and pull requests to the Node.js website project. - -Collaborators should feel free to take full responsibility for managing issues and pull requests they feel qualified to handle, as long as this is done while being mindful of these guidelines, the opinions of other Collaborators and guidance of the Website Group. - -Collaborators may **close** any issue or pull request they believe is not relevant to the future of the Node.js project. -Where this is unclear, the issue should be left open for several days for additional discussion. -Where this does not yield input from Node.js Collaborators or additional evidence that the issue has relevance, then the issue may be closed. -Remember that issues can always be re-opened if necessary. - -> \[!IMPORTANT]\ -> We recommend Collaborators to avoid Updating/Rebasing PRs unnecessarily, since we use [GitHub Merge Queues](https://github.blog/2023-07-12-github-merge-queue-is-generally-available/) -> to merge Pull Requests, which automatically rebases and runs CI-checks against the latest base branch. - -## Accepting Modifications - -All Node.js code and documentation modifications should be performed via GitHub pull requests. -Only the Website Team can merge their work and should do so carefully. - -All pull requests must be reviewed and accepted by a Collaborator with sufficient expertise who can take full responsibility for the change. -In the case of pull requests proposed by an existing Collaborator, an additional Collaborator is required for sign-off. - -Pull Requests can only be merged after all CI Checks have passed. -As usual, CI Checks need to be manually triggered by adding a `github_actions:pull-request` label to the Pull Request. - -In some cases, it may be necessary to summon a qualified Collaborator to a pull request for review by @-mention. - -If you are unsure about the modification and are not prepared to take full responsibility for the change, defer to another Collaborator. - -We recommend collaborators follow the guidelines on the [Contributing Guide](./CONTRIBUTING.md#before-merging) for reviewing and merging Pull Requests. - -### Involving the Website Team - -Collaborators may opt to elevate pull requests or issues to the group for discussion by mentioning `@nodejs/nodejs-website`. This should be done where a pull request: - -- has a significant impact on the codebase, -- is inherently controversial; or -- has failed to reach a consensus amongst the Collaborators who are actively participating in the discussion. - -The Website group should be the final arbiter where needed. - -## Technologies used in the Website - -The Node.js Website is built upon [React][] and [Next.js][] respectively, the UI Rendering Engine and the Framework that builds the Website; - -The Website also uses several other Open Source libraries (not limited to) listed below: - -- Styling is done with [PostCSS][] and CSS Modules -- [Tailwind][] is used as our CSS Framework and the Foundation of our Design System -- [Hero Icons](https://heroicons.com/) is an SVG Icon Library used within our Codebase -- [Radix UI][] is a collection of customizable UI components -- [Shiki][] is a Syntax Highlighter used for our Codeboxes - - The syntax highlighting is done within the processing of the Markdown files with the MDX compiler as a Rehype plugin. -- [MDX][] and Markdown are used for structuring the Content of the Website -- [`next-intl`][] is the i18n Library adopted within the Website - - It provides an excellent integration with Next.js, But it also supports standalone support for i18n if it eventually migrates from Next.js to something else. - - Supports React Server Components and Next.js Middlewares -- We use [Rehype](https://github.com/rehypejs/rehype) and [Remark](https://github.com/remarkjs/remark) to extend MDX functionality -- We use [Storybook](https://storybook.js.org/) for Manual Testing and Visual Regression Tests of our React Components - - Storybook also provides a sandboxed environment, which is very useful whilst for crafting React Components - -## Code Editing - -### Structure of this Repository - -⚠️ The repository is actively under migration to a multi-package workspace. -Locations are subject to change. (If you are someone updating these paths, -please document those changes here.) - -- React Components are defined on `apps/site/components` and `packages/ui-components` -- React Templates are defined on `apps/site/layouts` -- Global Stylesheets are declared on `packages/ui-components/styles` - - Styles are done with [PostCSS][] and [Tailwind][] -- Public files are stored on `apps/site/public` - - Static Images, JavaScript files, and others are stored within `apps/site/public/static` -- Internationalisation is done on `apps/site/i18n` - - React Localisation Data is stored within `apps/site/i18n/locales` - - We use the [ICU Message Syntax](https://formatjs.io/docs/core-concepts/icu-syntax/) for Translations - - Configuration for Locales is done within `apps/site/i18n/config.json` -- Website Content is defined within `apps/site/pages` - - Initial development usually happens in English: `apps/site/pages/en` - - Localized versions of `/pages/en` are done within `apps/site/pages/{localeCode}` - - All content is in Markdown and is per locale. - - The top of each Markdown file is a YAML (Frontmatter) block for page-specific localization information passed to various templates. - - The bulk of the Markdown content for each page is referenced as `{children}` on their respective JSX Layout (`apps/site/layouts/`) -- Multi-Purpose React Hooks are defined on `apps/site/hooks` -- Multi-Purpose TypeScript definitions are defined on `apps/site/types` -- React Context Providers are defined on `apps/site/providers` -- Build-time Data Fetching Scripts are defined on `apps/site/next-data` - - Used for Node.js Release data fetching - - Generation of build-time indexes such as blog data -- Multi-Purpose Scripts are stored within `apps/site/scripts` - - Such as Node.js Release Blog Post generation -- Storybook Configuration is done within `packages/ui-components/.storybook` - - We use an almost out-of-the-box Storybook Experience with a few extra customisations - -### Adding new Pages - -1. Create new page content including the layout, title and copy. -2. Update the relevant `apps/site/layout` to add a link to the new page. - -#### Create the page content - -Create a new markdown file in `apps/site/pages/en`. - -At the top of the markdown file, within the Markdown Frontmatter, set a page the title and layout. - -```markdown ---- -title: Title of the Page -layout: layout-name ---- - -[Content of the Page] -``` - -> \[!NOTE]\ -> A list of currently available Layouts is provided within `components/withLayout` on the `layoutComponents` map.\ -> This is a temporary map and this map might change its location and be defined in a different way in the future. - -### Translating Pages - -See the [Translation Guidelines](./TRANSLATION.md) for the website translation policy. - -## Creating React Components - -The Node.js Website uses [React][] as a Frontend Library to develop the Website. -React allows us to create user interfaces with a modern take on Web Development. - -If you're unfamiliar with React or Web Development in general, we encourage a read before taking on complex issues and tasks as this repository is **not for educational purposes** and we expect you to have a basic understanding of the technologies used. - -We also recommend getting familiar with technologies such as [Next.js][], [MDX][], [PostCSS][], and "concepts" such as "CSS Modules" and "CSS-in-JS". - -### Styling a Component - -As mentioned, we write all Component-styles in separate `.module.css` files. This is like writing any CSS in a separate file (besides the fact that we use [PostCSS][]). - -This concept of writing styles on dedicated CSS files and importing them within JavaScript (or React) is a pattern named **[CSS Module](https://github.com/css-modules/css-modules)**. -These allow us to write PostCSS (or regular CSS, or any flavor of CSS if you have a way of interpreting it) within a `.module.css` and import the class names directly to our React Components. -We recommend reading guides on "Styling React Components with CSS Modules", which there are many available on the web. - -It's important to mention that we use [Tailwind][] as a CSS Framework. Hence, margins, paddings, font sizes, font weights, colors, and other sorts of styles are all provided with Tailwind. -We recommend reading [Tailwind Docs](https://tailwindcss.com/docs/preflight) to get familiar with Tailwind's styles. -We also recommend reading [this guide for setting up Tailwind on your IDE](https://tailwindcss.com/docs/editor-setup). - -Finally, if you're unfamiliar with how to use Tailwind or how to use Tailwind within CSS Modules, we recommend reading [this guide](https://tailwindcss.com/docs/using-with-preprocessors). - -#### Example of a CSS Module - -```css -.myComponent { - @apply some - tailwind - classes; -} -``` - -#### Guidelines when writing CSS - -- We use camelCase for defining CSS classes -- We use Tailwind's `@apply` selector to apply Tailwind utility classes - - We discourage the usage of any plain CSS styles and tokens, when in doubt ask for help - - We require that you define one Tailwind utility class per line, just as shown on the example above, since this improves readability -- Only write CSS within CSS Modules, avoid writing CSS within JavaScript files - -> \[!NOTE]\ -> Tailwind is already configured for this repository. You don't need to import any Tailwind module within your CSS module.\ -> You can apply Tailwind utility classes with Tailwind's `@apply` CSS rule. [Read more about applying Tailwind utility classes with `@apply`](https://tailwindcss.com/docs/functions-and-directives#apply). - -> \[!IMPORTANT]\ -> When using IDEs such as Visual Studio Code, we recommend installing the official [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) -> and [Tailwind](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss) Extensions.\ -> These are recommended Extensions for IntelliSense, Syntax Highlighting and Error Checking when styling your Component. - -### Best practices when creating a Component - -- **All React components** should be placed within either `@node-core/ui-components` (for reusable components) or `apps/site/components` (for website-specific components). -- **Generic UI components** that are not tied to the website should be placed in the `@node-core/ui-components` package. - - These components should be **framework-agnostic** and must not rely on Next.js-specific features such as `usePathname()` or `useTranslations()`. - - If a component previously relied on Next.js, it should now accept these values as **props** instead. -- **Website-specific components** that rely on Next.js or are tied to the website should remain in `apps/site/components`. - - These components can use Next.js-specific hooks, API calls, or configurations. - - When using a generic UI component that requires Next.js functionality, pass it as a **prop** instead of modifying the component. -- **Each component** should be placed within a sub-folder, which we call the **"Domain"** of the component. - - The domain represents where the component belongs or where it will be used. - - For example, components used within article pages or related to the structure of an article should be placed within `@node-core/ui-components/Common/Article`. -- **Each component should have its own folder** with the name of the component. -- The structure of each component folder follows this template: - - ```text - - ComponentName - - index.tsx // The component itself - - index.module.css // Component-specific styles - - index.stories.tsx // Storybook stories (only for @node-core/ui-components) - - __tests__/ // Component tests (such as unit tests, etc.) - - index.test.mjs // Unit tests should be done in ESM, not TypeScript - ``` - -- **If a component requires Next.js features, it should be wrapped within `apps/site`** rather than being modified directly in `@node-core/ui-components`. - - - Example: A component that requires `usePathname()` should **not** call it directly inside `@node-core/ui-components`. Instead: - - The **base component** should accept `pathname` as a prop. - - The **wrapper component** in `apps/site` should call `usePathname()` and pass it to the base component. - - Example structure: - - - **Base Component (`@node-core/ui-components`)** - - ```tsx - const BaseComponent: FC<...> = ({ pathname, ariaLabel }) => { - return <... ariaLabel={ariaLabel}></...>; - }; - ``` - - - **Wrapper Component (`apps/site/components`)** - - ```tsx - const Component: FC<...> = (...) => { - const pathname = usePathname(); - const t = useTranslations(); - - return <BaseComponent pathname={pathname} ariaLabel={t('my.key')} />; - }; - ``` - - - **Importing Components:** - - **For website-specific functionality**, import the wrapper from `apps/site/components`. - - **For direct UI use cases**, import from `@node-core/ui-components`. - -- **Storybook is now a dependency of `@node-core/ui-components`** and should not be included in `apps/site`. - - - Storybook stories should be written only for components in `@node-core/ui-components`. - -- **React Hooks that belong to a single component should be placed within that component’s folder.** - - - If the hook has a **wider usability** or can be used by multiple components, it should be placed in the `apps/site/hooks` folder. - - These hooks should only exist in `apps/site`. - -- **If a component has sub-components, they should follow the same structure as the main component.** - - Example: If `ComponentName` has a sub-component called `SubComponentName`, it should be placed within: - ```text - - ComponentName/ - - index.tsx - - SubComponentName/ - - index.tsx - ``` - -#### How a new Component should look like when freshly created - -```tsx -import type { FC } from 'react'; - -import styles from './index.module.css'; - -type MyComponentProps = {}; // The types of the Props of your Component - -const MyComponent: FC<MyComponentProps> = ({ prop1, prop2... }) => ( - // Actual code of my Component -); - -export default MyComponent; -``` - -### Best practices for Component development in general - -- Only spread props `{ ... }` on the definition of the Component (Avoid having a variable named `props`) -- Avoid importing `React`, only import the modules from React that you need -- When importing types, use `import type { NameOfImport } from 'module'` -- When defining a Component, use the `FC` type from React to define the type of the Component - - When using `children` as a prop, use the `FC<PropsWithChildren<MyComponentProps>>` type instead - - Alternatively you can define your type as `type MyComponentProps = PropsWithChildren<{ my other props }>` -- Each Props type should be prefixed by the name of the Component -- Components should always be the `default` export of a React Component file -- Avoid using DOM/Web APIs/`document`/`window` API access within a React Component. - Use utilities or Hooks when you need a Reactive state -- Avoid making your Component too big. Deconstruct it into smaller Components/Hooks whenever possible - -## The new Downloads page - -### Adding a Download Installation Method - -To add a new download installation method, follow these steps: - -1. **Update `INSTALL_METHODS` in `apps/site/util/downloadUtils.tsx`:** - - - Add a new entry to the `INSTALL_METHODS` array. - - Each entry should have the following properties: - - `iconImage`: The React component of the icon image for the installation method. This should be an SVG component stored within `@node-core/ui-components/Icons/InstallationMethod` and must follow the other icon component references (being a `FC` supporting `SVGSVGElement` props). - - Don't forget to add it on the `index.tsx` file from the `InstallationMethod` folder. - - `recommended`: A boolean indicating if this method is recommended. This property is available only for official installation methods. - - `url`: The URL for the installation method. - - `value`: The key of the installation method, which must be unique. - - Example: - - ```javascript - // filepath: /nodejs.org/apps/site/util/downloadUtils.tsx - // See full reference of INSTALL_METHODS within `downloadUtils.tsx` - export const INSTALL_METHODS = [ - // ...existing methods... - { - iconImage: <InstallMethodIcons.YourIconImage width={16} height={16} />, - url: 'https://example.com/install', - value: 'exampleMethod', - }, - ]; - ``` - -2. **Add translation key in `packages/i18n/locales/en.json`:** - - - Add an entry under `layouts.download.codeBox.platformInfo` for the `info` property of the new installation method. - - Example: - - ```json - // filepath: /nodejs.org/packages/i18n/locales/en.json - { - "layouts": { - "download": { - "codeBox": { - "platformInfo": { - "exampleMethod": "Example installation method description." - } - } - } - } - } - ``` - -3. **Update `InstallationMethodLabel` and `InstallationMethod` in `apps/site/types/release.ts`:** - - - Add the new method to the `InstallationMethodLabel` and `InstallationMethod` types. - - Example: - - ```typescript - // filepath: /nodejs.org/apps/site/types/release.ts - export type InstallationMethod = 'exampleMethod' | 'anotherMethod' | ...; - - export const InstallationMethodLabel: Record<InstallationMethod, string> = { - exampleMethod: 'Example Method', - anotherMethod: 'Another Method', - // ...existing methods... - }; - ``` - -4. **Add a snippet in `apps/site/snippets/en/download`:** - - - Create a new file with the same key as the `value` property (e.g., `exampleMethod.bash`). - - Add the installation instructions in this file. - - The snippet file can use JavaScript template syntax and has access to a `props` variable of type `ReleaseContextType`. - - Example: - - ```bash - // filepath: /nodejs.org/apps/site/snippets/en/download/exampleMethod.bash - echo "Installing Node.js version ${props.version} using Example Method" - ``` - -5. **Configure `compatibility` within the `INSTALL_METHODS` object in `downloadUtils.ts`:** - -- Use the `compatibility` property to enable/list the installation method for specific OSs, Node.js version ranges, or architectures/platforms. - -Example: - -```javascript -// filepath: /nodejs.org/apps/site/util/downloadUtils.tsx -// See full reference of compatibility property within `downloadUtils.tsx` -export const INSTALL_METHODS = [ - { - iconImage: 'path/to/icon.svg', - url: 'https://example.com/install', - value: 'exampleMethod', - compatibility: { - os: ['LINUX', 'MAC'], - semver: ['>=14.0.0'], - platform: ['x64', 'arm64'], - }, - }, -]; -``` - -By following these steps, you can successfully add a new download installation method to the Node.js website. - -### Adding a Download Package Manager - -You can add a PACKAGE_MANAGER the same way as adding an INSTALLATION_METHOD (from the section above, "Adding a Download Installation Method") but it should be added to the PACKAGE_MANAGERS object in `apps/site/util/downloadUtils.tsx`. - -## Unit Tests and Storybooks - -Each new feature or bug fix should be accompanied by a unit test (when deemed valuable). -We use [`node:test`][] as our test runner and [React Testing Library][] for our React unit tests. - -We also use [Storybook][] to document our components. -Components within `packages/ui-components` should have a storybook story that documents the component's usage. - -Visual Regression Testing is automatically done via [Chromatic](https://www.chromatic.com/) to ensure that Components are rendered correctly. - -### General Guidelines for Unit Tests - -Unit Tests are fundamental to ensure that code changes do not disrupt the functionalities of the Node.js Website: - -- Unit tests should be written as `.mjs` files. -- We recommend adding unit tests for content covering `util`, `scripts`, `hooks`, and `components` whenever possible. -- Unit Tests should ensure that a given change's functionality is working as expected. -- When creating unit tests for React components, we recommend that the tests cover all the possible states of the component. -- We also recommend mocking external dependencies, if unsure about how to mock a particular dependency, raise the question on your Pull Request. - - Common Providers and Contexts from the lifecycle of our App, such as [`next-intl`][] should not be mocked but given an empty or fake context whenever possible. -- We recommend reading previous unit tests from the codebase for inspiration and code guidelines. - -### General Guidelines for Playwright E2E Tests - -End-to-end (E2E) tests are essential for ensuring that the entire application works correctly from a user's perspective: - -- E2E tests are located in the `apps/site/tests/e2e` directory. -- We use [Playwright](https://playwright.dev/) as our E2E testing framework. -- E2E tests should focus on user flows and critical paths through the application. -- Tests should be written to be resilient to minor UI changes and should prioritize testing functionality over exact visual appearance. -- When writing E2E tests: - - Use meaningful test descriptions that clearly indicate what is being tested. - - Group related tests using Playwright's test grouping features. - - Use page objects or similar patterns to keep tests maintainable. - - Minimize test interdependencies to prevent cascading failures. -- Tests should run against the built application to accurately reflect the production environment. -- We recommend reviewing existing E2E tests in the codebase for patterns and best practices. -- If your feature involves complex user interactions or spans multiple pages, consider adding E2E tests to verify the complete flow. - -### General Guidelines for Storybooks - -Storybooks are an essential part of our development process. They help us to document our components and to ensure that the components are working as expected. - -They also allow Developers to preview Components and be able to test them manually/individually to the smallest unit of the Application. (The individual Component itself). - -**Storybooks should be fully typed and follow the following template:** - -```tsx -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import NameOfComponent from '@node-core/ui-components/PathTo/YourComponent'; - -type Story = StoryObj<typeof NameOfComponent>; -type Meta = MetaObj<typeof NameOfComponent>; - -// If the component has any props that are interactive, they should be passed here -// We recommend reading Storybook docs for args: https://storybook.js.org/docs/react/writing-stories/args -export const Default: Story = {}; - -// If the Component has more than one State/Layout/Variant, there should be one Story for each variant -export const AnotherStory: Story = { - args: {}, -}; - -export default { component: NameOfComponent } as Meta; -``` - -- Stories should have `args` whenever possible, we want to be able to test the different aspects of a Component -- Please follow the template above to keep the Storybooks as consistent as possible -- We recommend reading previous Storybooks from the codebase for inspiration and code guidelines. -- If you need to decorate/wrap your Component/Story with a Container/Provider, please use [Storybook Decorators](https://storybook.js.org/docs/react/writing-stories/decorators) - -## Publishing Packages - -The Node.js Website uses a multi-package workspace architecture where individual packages are published to the npm registry. This section outlines the process for publishing packages and the best practices to follow. - -The package publishing process is automated through GitHub Actions and can be triggered in two ways: - -1. **Automatically after successful tests**: - When changes are merged to the main branch, the "Publish Packages" workflow runs after the "Linting and Tests" workflow completes successfully. Commits must come through GitHub's merge queue (committer must be verified from noreply@github.com) - -2. **Manually via workflow dispatch**: - You can manually trigger publishing for specific packages through the GitHub Actions interface. When manually triggering publishing, ensure the commit hasn't already been published and is safe to do so. In the event of a manual trigger, a Slack notification will be sent to `#nodejs-website`. - -## Remarks on Technologies Used - -The Node.js Website is a somewhat complex application and at times non-trivial solutions have been implemented to solve certain technical challenges. -Historical decision making can be largely found on past issues, conversations on Slack and GitHub discussions. However, we also wish to highlight some of the notable development decisions that we have made here. - -### Why Next.js? - -We've found that Next.js is simply versatile, hackable, stable, community-maintained and has a great ecosystem. -The reasoning goes deeper, but as a long-term Framework it is the most suitable choice. - -#### Why do we continue to support static builds? - -It was decided together with the TSC (Technical Steering Committee) that the Node.js Website should always support fully static builds that do not depend on any 3rd party services. -This is to ensure that the Website is always available and that we do not depend on any 3rd party services to serve our content. - -(For example, if we abandon Vercel, our Website should still completely work as standalone as possible) - -#### What is `next.dynamic.mjs`? - -Our whole Website uses a custom renderer for rendering the pages. -As you might have seen, within the `apps/site/pages` directory we have [Next.js Dynamic Route](https://nextjs.org/docs/pages/building-your-application/routing/dynamic-routes) named `[...path].tsx` that matches against all possible routes of the Website. - -This means that each `.md(x)` file within `apps/site/pages/` is not rendered by Next.js regular App Tree (`apps/site/pages/_document.tsx` and `apps/site/pages/_app.tsx`) but a custom render tree. - -This custom render uses `getStaticPaths` and [Incremental Static Generation](https://nextjs.org/docs/pages/building-your-application/data-fetching/incremental-static-regeneration) to generate the full list of supported pages of the Website. -For example, this allows us to generate Localized Pages for every page that is not translated, by telling Next.js to create a localised path. -`next.dynamic.mjs` is responsible for getting a full list of the source pages (`apps/site/pages/en`) and identifying which pages have been translated. - -Non-translated pages will have their Localized contexts and translated React message-bags (`next-intl`) but the content will be the same as the source page (English). -Whereas localized pages will have localized context and content. - -This custom solution is also able to decide what paths should be compiled during runtime. -This is a combination of rules defined on `next.constants.mjs` and `[...path].tsx`. - -The `[...path].tsx` file ultimately utilizes the `theme.tsx` file as its layout source. -This setup enables the loading of the Layout Provider and MDX Provider, which in turn, encapsulate and manage the rendering of any child content or components. This includes both content and components provided by the Layout Provider and the transformed MDX content originating from the `.md(x)` source page. - -#### What is `next.data.mjs`? - -This file is responsible for loading, fetching and generating build-time required information such as Node.js Release data, Blog Posts Metadata (for pagination and indexation), RSS feeds, etc. - -#### What is `site.json`? - -This file is used for defining Website Metadata, such as which RSS feeds should be generated, Social Media Information and other Metadata used during the Website build-time. -We use a JSON format to ease collaboration. - -#### What is `next.locales.mjs` and why not use Next.js built-in i18n? - -While Next.js provides a built-in i18n feature, it doesn't offer the flexibility we require. Our specific needs include the ability to generate comprehensive lists of supported locales and pages for each locale. Additionally, we operate with a subfolder-based approach for content, as opposed to the extension-based approach (e.g., `filename.language.md(x)`) that is compatible with Next.js's built-in i18n. - -We opted for the subfolder approach to maintain consistency with our previous Node.js website's content structure and to ensure long-term maintainability, rather than relying on Next.js's i18n functionality. - -#### What is `next.rewrites.mjs`? - -This file is responsible for defining the rewrite rules for the Website. -It is used for defining redirects and other rewrite rules. (Such as Internal Redirects and External ones). - -The `redirects.json` file specifies two types of operations: rewrites and redirects. - -- Rewrites: These operations do not alter the original URL but instead render the content from the rewritten URL. It's important to note that the rewritten URL path must be valid and exist on the website. -- Redirects: Redirect operations, on the other hand, change the original URL to a new one. While these new URLs can be either internal (within the website) or external (leading to a different domain), it is more common for redirects to point externally. - -This file contains a simple template engine that supports `/:locale` to indicate that this path should also be available under all available locales as prefix. - -#### Why do we use Next.js Middlewares? - -We have a simple Next.js Middleware that is responsible for handling initial Locale detection and redirection. -It detects browser locales and redirects to the most suitable locale for the user. And it fallbacks to `/en` if no suitable locale is found. - -#### What are Layouts? - -Layouts Wrap the content of the Markdown files. -They are responsible for adding additional styling and structure surrounding the content of the Markdown files. - -Layouts are defined within the `layouts` folder. -They are React Components that receive the `children` prop, which is the transformed MDX content of the Markdown file. - -Each Page layout is configured within their Markdown's Frontmatter as `layout: name-of-layout`. - -### How we style the Website? - -We use [PostCSS][] to style the Node.js Website; PostCSS is a CSS Preprocessor, like Sass and Less. - -#### How exactly do we style Components? - -We style each individual React Component with a dedicated CSS file (A CSS Module) that uses CSS syntax (with the extra powerups of PostCSS). - -The [Styling a Component](#styling-a-component) section contains a more detailed guide on how we style our Components. - -#### Why we use PostCSS over Sass or Less? - -The main advantage of PostCSS is its minimal pluggable API that allows us to extend the native CSS-syntax with custom plugins. - -Next.js natively supports PostCSS and always uses PostCSS as part of the bundling and building process. -By not using Sass or Less we remove another dependency from our build process and remove one layer of preprocessing our styles (CSS). - -We currently use a set of PostCSS plugins that create a SCSS-a-like environment. - -#### What PostCSS Plugins we use? - -- `postcss-calc`: Strips `calc` expressions and replaces them with the result -- `@tailwindcss/postcss`: Allows us to use Tailwind within PostCSS - -It is important to mention that even though we use SCSS-like syntax, we do not use SCSS, and some of these plugins -are not 100% compatible with the SCSS syntax. - -#### Do we use a CSS Framework? - -The Node.js Website uses Tailwind as a CSS Framework for crafting our React Components and style the Website. - -[Tailwind][] is an utility-first CSS Framework. It allows us to create a Design System that is easy to maintain and extend. It also allows us to create a consistent Design Language across the Website. - -#### Font Families on the Website - -We use `next/fonts` Open Sans as the default font for the Node.js Website. -The font is configured as a CSS variable and then configured on `packages/ui-components/tailwind.config.ts` as the default font for the Website. - -#### Why we use RadixUI? - -- It is a minimalistic component library broken down in individual packages for each Component -- It already handles all WAI-ARIA and Accessibility shortcuts/bindings needed for Interactive Elements -- It allows us to focus on designing interactive Components without the effort of adding all the surrounding sugar and code needed to make the Component accessibility-friendly. - -### Why MDX? - -MDX is an extension on Markdown that allows us to add JSX Components within Markdown. -Besides that, MDX is also a pluggable parser built on top of `unified` which supports Rehype and Remark Plugins. -MDX is becoming the standard for parsing human-content on React/Next.js-based Applications. - -**Some of the plugins that we use include:** - -- `remark-gfm`: Allows us to bring GitHub Flavoured Markdown within MDX -- `remark-headings`: Generates Metadata for Markdown Headings - - This allows us to build the Table of Contents for each Page, for example. -- `rehype-autolink-headings`: Allows us to add Anchor Links to Markdown Headings -- `rehype-slug`: Allows us to add IDs to Markdown Headings - -#### Syntax Highlighting (Shiki) and Vercel - -Shiki is integrated on our workflow as a Rehype Plugin, see the `next.mdx.shiki.mjs` file. We also use the `nord` theme for Shiki and a subset of the supported languages as defined on the `shiki.config.mjs` file. - -### Vercel - -We use Vercel as our hosting provider. It is a great platform that offers an excellent CI/CD pipeline which allows us to deploy our website with ease. - -It is important to mention that there are some rules on our Vercel Deployments such as: - -- Branches starting with `dependabot` (Dependabot Automated PRs) or `gh` (GitHub Merge Queues) are not deployed to Vercel. -- Vercel Deployments are triggered for all other branches during `push` activities. -- We have a custom install script that executes `pnpm install --prod --frozen-lockfile` (the same way we do on our CI Pipelines) - - Hence if Builds fail unexpectedly, make sure that your dependency that is being used during build-time is on `dependencies` and not `devDependencies`. Checkout out [DEPENDENCY_PINNING.md](./DEPENDENCY_PINNING.md) for more information. -- Our sponsorship with Vercel is maintained by the OpenJS Foundation - -### Why we have a `.vscode` folder - -The repository defines an optimized configuration for code editing. This is optional and is not required to contribute to the project. However, the settings and extensions specified help create a uniform and more efficient developer experience. This configuration is found in the `.vscode` directory: - -- `extensions.json` suggests VSCode extensions that make the editor more compatible with the code. For example, a Tailwind extension creates auto-complete intellisense for tailwind styles within our components. Eslint, prettier, and editorconfig extensions read their respective config files and automatically format or lint code as written. This helps save CI feedback loops when a contribution does not meet our standards. -- `settings.json` contains some common sense defaults that aide development and enforce consistency across the codebase. For example, we want files formatted on save and we want prettier to be used as the formatter. Without these settings, new contributors may have different authoring experiences when contributing, leading to inconsistent code and CI failures. We also disable VSCode's default CSS parser so PostCSS and Tailwind syntax are respected. - -Defining a `.vscode` configuration like this also aides browser-only development using [GitHub's Codespaces feature](https://github.com/features/codespaces). The web-based GUI will read these same configuration files and setup the remote development environment the same way every time. - -## Seeking additional clarification - -A lot of the current structure is due to retro-compatibility, keeping a simple and familiar file structure and keeping files that have historical reasons or needs. - -If you're unfamiliar or curious about something, we recommend opening a Discussion on this GitHub Repository. - -[`node:test`]: https://nodejs.org/api/test.html -[React Testing Library]: https://testing-library.com/docs/react-testing-library/intro/ -[Storybook]: https://storybook.js.org/ -[`next-intl`]: https://next-intl-docs.vercel.app -[Next.js]: https://nextjs.org/ -[MDX]: https://mdxjs.com/ -[PostCSS]: https://postcss.org/ -[React]: https://react.dev/ -[Shiki]: https://github.com/shikijs/shiki -[Tailwind]: https://tailwindcss.com/ -[Radix UI]: https://www.radix-ui.com/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 30f6a3e310c3d..e9597648401ba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,271 +1,40 @@ # Node.js Website Contributing Guide -Thank you for your interest in contributing to the Node.js Website. Before you proceed, briefly go through the following: +## Table of Contents -- [Code of Conduct](https://github.com/nodejs/node/blob/HEAD/CODE_OF_CONDUCT.md) -- [Contributing](#contributing) - - [Becoming a Collaborator](#becoming-a-collaborator) - - [Maintaining Collaborator Status](#maintaining-collaborator-status) -- [Getting started](#getting-started) - - [CLI Commands](#cli-commands) -- [Cloudflare Deployment](#cloudflare-deployment) -- [Commit Guidelines](#commit-guidelines) -- [Pull Request Policy](#pull-request-policy) -- [Developer's Certificate of Origin 1.1](#developers-certificate-of-origin-11) -- [Adding a Learn Page](#adding-a-learn-page) +- [Quick Start](#quick-start) +- [Code of Conduct](#code-of-conduct) + - [Developer's Certificate of Origin 1.1](#developers-certificate-of-origin-11) +- [Ways to Contribute](#ways-to-contribute) + - [For All Contributors](#for-all-contributors) + - [For Developers](#for-developers) +- [Development Workflow](#development-workflow) + - [1. Set Up Your Environment](#1-set-up-your-environment) + - [2. Make Your Changes](#2-make-your-changes) + - [3. Test Your Changes](#3-test-your-changes) + - [4. Submit Your Contribution](#4-submit-your-contribution) +- [Documentation Structure](#documentation-structure) +- [Getting Help](#getting-help) +- [Project Maintainers](#project-maintainers) +- [License](#license) -## Contributing +--- -Any individual is welcome to contribute to the Node.js Website. The repository currently has two kinds of contribution personas: +Thank you for your interest in contributing to the Node.js Website! This guide will help you get started with contributing to our project. -- A **Contributor** is any individual who creates an issue/PR, comments on an issue/PR, or contributes in some other way. -- A **Collaborator** is a contributor with write access to the repository. See [here](#becoming-a-collaborator) on how to become a collaborator. +## Quick Start -You can find more details and guides about Collaborating with this repository through our [Collaborator Guide](./COLLABORATOR_GUIDE.md). +New to contributing? Start here: -### Becoming a Collaborator +1. **[Getting Started](./docs/getting-started.md)** - Set up your development environment and make your first contribution +2. **[Code Style](./docs/code-style.md)** - Learn our coding standards and formatting guidelines +3. **[Adding Pages](./docs/adding-pages.md)** - Create new pages and content for the website -A collaborator of the Node.js Website repository is a member of the Node.js Website Team. +## Code of Conduct -The Website Team is responsible for the technical development of the Node.js Website; thus, it is expected -that team members have significant knowledge about modern Web Technologies and Web Standards. +Before contributing, please read and follow our [Code of Conduct](https://github.com/nodejs/node/blob/HEAD/CODE_OF_CONDUCT.md). -Note that regular contributors do not need to become "Collaborators" as any contribution is appreciated (even without a status), and a Collaborator status -is a formality that comes with obligations. - -If you're an active contributor seeking to become a member, we recommend you contact one of the existing Team Members for guidance. - -<details> - <summary><b>What's the process for becoming a Collaborator?</b></summary> - -- You must be actively contributing to this repository. -- Contributions must include significant code reviews or code contributions. -- A nomination must be done by an existing Team Member of the Website Team with an Issue - - The Issue must explain and describe why the nominated person is a good addition to the team - - The Issue must contain links to relevant contributions through: - - Code Reviews - - Comments on Issues and PRs - - Authoring of PRs or Issues - - Comments or Authoring of Discussions -- The nomination must have at least three existing members of the Website Team agree with the nomination. - - This can be done through commenting with "agreement" (showing support) or reacting to the Issue with a :+1: (Thumbs-up Emoji) -- The Issue must be open for at least 72 hours without an objection from an existing member of the Website Team - - The nomination cannot pass until all open objections are resolved. - - Objections from the TSC or Core Collaborators are also counted as valid objections. - -</details> - -### Maintaining Collaborator Status - -Once you become a collaborator, you are expected to uphold certain responsibilities and standards to maintain your status: - -- **Adhere to Policies**: Collaborators must abide by the [Node.js Moderation Policy](https://github.com/nodejs/admin/blob/HEAD/Moderation-Policy.md) and [Code of Conduct](https://github.com/nodejs/node/blob/HEAD/CODE_OF_CONDUCT.md) at all times. - -- **Remain Active**: Collaborators are expected to author commits at least once in the past twelve months. - -If a collaborator becomes inactive for more than twelve months, they may be removed from the active collaborators list. They can be reinstated upon returning to active participation by going through the full nomination process again. - -Violations of the Code of Conduct or Moderation Policy may result in immediate removal of collaborator status, depending on the severity of the violation and the decision of the Technical Steering Committee and/or the OpenJS Foundation. - -## Getting started - -The steps below will give you a general idea of how to prepare your local environment for the Node.js Website and general steps -for getting things done and landing your contribution. - -1. Click the fork button in the top right to clone the [Node.js Website Repository](https://github.com/nodejs/nodejs.org/fork) - -2. Clone your fork using SSH, GitHub CLI, or HTTPS. - - ```bash - git clone git@github.com:<YOUR_GITHUB_USERNAME>/nodejs.org.git # SSH - git clone https://github.com/<YOUR_GITHUB_USERNAME>/nodejs.org.git # HTTPS - gh repo clone <YOUR_GITHUB_USERNAME>/nodejs.org # GitHub CLI - ``` - -3. Change into the nodejs.org directory. - - ```bash - cd nodejs.org - ``` - -4. Create a remote to keep your fork and local clone up-to-date. - - ```bash - git remote add upstream git@github.com:nodejs/nodejs.org.git # SSH - git remote add upstream https://github.com/nodejs/nodejs.org.git # HTTPS - gh repo sync nodejs/nodejs.org # GitHub CLI - ``` - -5. Create a new branch for your work. - - ```bash - git checkout -b name-of-your-branch - ``` - -6. Run the following to install the dependencies and start a local preview of your work. - - ```bash - pnpm install --frozen-lockfile # installs this project's dependencies - pnpm dev # starts a development environment - ``` - -7. Perform your changes. In case you're unfamiliar with the structure of this repository, we recommend a read on the [Collaborator Guide](./COLLABORATOR_GUIDE.md) - -8. Perform a merge to sync your current branch with the upstream branch. - - ```bash - git fetch upstream - git merge upstream/main - ``` - -9. Run `pnpm format` to confirm that linting and formatting are passing. - - ```bash - pnpm format - ``` - -10. Once you're happy with your changes, add and commit them to your branch, then push the branch to your fork. - - ```bash - cd ~/nodejs.org - git add . - git commit -m "describe your changes" - git push -u origin name-of-your-branch - ``` - -> [!IMPORTANT]\ -> Before committing and opening a Pull Request, please go first through our [Commit](#commit-guidelines) and [Pull Request](#pull-request-policy) guidelines outlined below. - -11. Create a Pull Request. - -> [!NOTE]\ -> We ask for PR authors to avoid to rebase/update their PRs with the base branch (`main`) unnecessarily. -> We use [GitHub Merge Queues](https://github.blog/2023-07-12-github-merge-queue-is-generally-available/) -> which means that before merge the PRs get automatically updated and checked against the latest changes on the base branch. -> -> This also reduces the amount of times we need to run our CI checks, as every new push requires fresh new CI-checks. - -### CLI Commands - -This repository contains several scripts and commands for performing numerous tasks. The most relevant ones are described below. - -<details> - <summary>Commands for Running & Building the Website</summary> - -- `pnpm dev` runs Next.js's Local Development Server, listening by default on `http://localhost:3000/`. -- `pnpm build` builds the Application on Production mode. The output is by default within `.next` folder. - - This is used for the Node.js Vercel Deployments (Preview & Production) -- `pnpm deploy` builds the Application on Export Production Mode. The output is by default within `build` folder. - - This is used for the Node.js Legacy Website Server (DigitalOcean) -- `pnpm start` starts a web server running serving the built content from `pnpm build` - -</details> - -<details> - <summary>Commands for Maintenance Tasks and Tests</summary> - -- `pnpm lint` runs the linter for all files. - - `pnpm lint:fix` attempts to fix any linting errors -- `pnpm prettier` runs the prettier for all the js files. - - `pnpm prettier:fix` attempts to fix any style errors -- `pnpm format` formats and fixes lints for the whole codebase -- `pnpm scripts:release-post` generates a release post for the current release - - **Usage:** `pnpm scripts:release-post -- --version=vXX.X.X --force` -- `pnpm storybook` starts Storybook's local server -- `pnpm storybook:build` builds Storybook as a static web application for publishing -- `pnpm test` runs all tests locally - - `pnpm test:unit` runs unit-tests locally - - `pnpm test:ci` runs tests, and outputs data to be parsed by a CI environment - -</details> - -## Cloudflare Deployment - -The Node.js Website can be deployed to the [Cloudflare](https://www.cloudflare.com) network using [Cloudflare Workers](https://www.cloudflare.com/en-gb/developer-platform/products/workers/) and the [OpenNext Cloudflare adapter](https://opennext.js.org/cloudflare). This section provides the necessary details for testing and deploying the website on Cloudflare. - -### Scripts - -Preview and deployment of the website targeting the Cloudflare network is implemented via the following two commands: - -- `pnpm cloudflare:preview` builds the website using the OpenNext Cloudflare adapter and runs the website locally in a server simulating the Cloudflare hosting (using the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/)) -- `pnpm cloudflare:deploy` builds the website using the OpenNext Cloudflare adapter and deploys the website to the Cloudflare network (using the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/)) - -### Configurations - -There are two key configuration files related to Cloudflare deployment. - -#### Wrangler Configuration - -This file defines the settings for the Cloudflare Worker, which serves the website. - -For more details, refer to the [Wrangler documentation](https://developers.cloudflare.com/workers/wrangler/configuration/). - -Key configurations include: - -- `main`: Points to the worker generated by the OpenNext adapter. -- `account_id`: Specifies the Cloudflare account ID. This is not required for local previews but is necessary for deployments. You can obtain an account ID for free by signing up at [dash.cloudflare.com](https://dash.cloudflare.com/login). -- `build`: Defines the build command to generate Node.js filesystem polyfills required for the application to run on Cloudflare Workers. This uses the [`@flarelabs/wrangler-build-time-fs-assets-polyfilling`](https://github.com/flarelabs-net/wrangler-build-time-fs-assets-polyfilling) package. -- `alias`: Maps aliases for the Node.js filesystem polyfills generated during the build process. -- `kv_namespaces`: Contains a single KV binding definition for `NEXT_CACHE_WORKERS_KV`. This is used to implement the Next.js incremental cache. For deployments, you can create a new KV namespace in the Cloudflare dashboard and update the binding ID accordingly. - -#### OpenNext Configuration - -This is the configuration for the OpenNext Cloudflare adapter, for more details on such configuration please refer to the [official OpenNext documentation](https://opennext.js.org/cloudflare/get-started#4-add-an-open-nextconfigts-file). - -The configuration present here is very standard and simply sets up incremental cache via the KV binding -defined in the wrangler configuration file. - -## Commit Guidelines - -This project follows the [Conventional Commits][] specification. - -Commits should be signed. You can read more about [Commit Signing][] here. - -### Commit Message Guidelines - -- Commit messages must include a "type" as described on Conventional Commits -- Commit messages **must** start with a capital letter -- Commit messages **must not** end with a period `.` - -### Pre-commit Hooks - -This project uses [Husky][] for Git pre-commit hooks. - -## Pull Request Policy - -This policy governs how contributions should land within this repository. The lines below state the checks and policies to be followed before merging and in the act of merging. - -### Before merging - -We recommend a read on our [Collaborator Guide](COLLABORATOR_GUIDE.md#accepting-modifications) for in-depth details on how we accept contributions into this repository. -The list below describes some merging and approval rules adopted in this repository. - -- Pull Requests must be open for at least 48 hours (Or 72 hours if the PR was authored on the weekend). - - Pull requests might be immediately merged if they contain critical bug fixes, short errata (e.g., typos from previous PRs), or any critical change considered a "showstopper" for the website's operation. - - This kind of PRs should only be done by existing collaborators with write-access and/or signed off by administrators/maintainers. - - This rule cannot be used for updates on the `COLLABORATOR_GUIDE.md`, `CONTRIBUTING.md` guide, `CODEOWNERS`, GitHub Actions, or any security-impacting file or document that changes the governing policies of this repository. - - Pull requests might be "fast-tracked", meaning they can be merged before the usual 48 hours' notice if a "fast-track" label is added. - - The person that is fast-tracking the PR (adding the label) must also comment on the PR that they're requesting the PR to be fast-tracked - - The comment must mention `@nodejs/nodejs-website` and must have at least one 👍 (or any other sort of approval reaction) if the person fast-tracking the PR is the author of the PR. - - Fast-tracking is only allowed for small bug fixes, small feature changes, localization changes, or other non-critical/highly-impacting changes not covered by the previous rule that allows PRs to be merged immediately. - - Fast-tracking cannot be used for updates on the `COLLABORATOR_GUIDE.md`, `CONTRIBUTING.md` guide, `CODEOWNERS`, GitHub Actions, or any security-impacting file or document that changes the governing policies of this repository. -- There must be no objections after forty-eight (48) hours (Or seventy-two (72) hours if the PR was authored on the weekend). - - If there are disagreements consensus should be sought. Lack of consensus might require escalation to the Website Team Maintainers. -- At least one approval is required for any PR to be merged. -- Tests must be included in Pull Requests for new features or bug fixes. You are responsible for fixing any test(s) that fail. - -Each contribution is accepted only if there is no objection to it by a collaborator. During the review, collaborators may request that a specific contributor who is an expert in a particular area give an "LGTM" before the PR can be merged. - -If an objection is raised in a pull request by another collaborator, all collaborators involved should try to arrive at a consensus by addressing the concerns through discussion, compromise, or withdrawal of the proposed change(s). - -### When merging - -- All required Status-checks must have passed. - - **Note:** If you're a collaborator, remember to run the CI checks by labeling the PR with the `github_actions:pull-request` label. -- Please make sure that all discussions are resolved. -- [`squash`][] pull requests made up of multiple commits - -## Developer's Certificate of Origin 1.1 +### Developer's Certificate of Origin 1.1 ``` By contributing to this project, I certify that: @@ -286,103 +55,89 @@ By contributing to this project, I certify that: ``` -[`squash`]: https://help.github.com/en/articles/about-pull-request-merges#squash-and-merge-your-pull-request-commits -[Conventional Commits]: https://www.conventionalcommits.org/ -[Commit Signing]: https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits -[Husky]: https://typicode.github.io/husky/ +## Ways to Contribute -## Adding a Learn Page +### For All Contributors -Since the redesign of the website, we have a new section called 'Learn'. This is intended to provide a more explanatory set of resources than the API docs, which are designed purely to explain the available APIs. +- **Report Issues**: Found a bug or have a feature request? [Open an issue](https://github.com/nodejs/nodejs.org/issues/new/choose) +- **Improve Documentation**: Help make our docs clearer and more comprehensive +- **Add Content**: Create new learn articles, blog posts, or improve existing content +- **Fix Bugs**: Look for issues labeled [`good first issue`](https://github.com/nodejs/nodejs.org/labels/good%20first%20issue) +- **Translate Content**: Help make Node.js documentation accessible worldwide -The Learn section is separate from the API docs and is intended to provide a more narrative, tutorial style set of resources. This is a place where we can provide more context and guidance on how to use the APIs and how to build applications with them. +### For Developers -The Learn section is also divided into several sub-categories. Note that the sub-categories must be on the same topic. +- **Create Components**: Build reusable React components following our [component guidelines](./docs/creating-components.md) +- **Write Tests**: Improve test coverage with our [testing guidelines](./docs/writing-tests.md) +- **Enhance Features**: Add new functionality to improve user experience -### Structure of the Learn section +## Development Workflow -The file structure of the Learn section is as follows: +### 1. Set Up Your Environment -``` -site/ -├─ pages/ -│ ├─ en/ -│ │ ├─ learn/ -│ │ │ ├─ sub-categories/ -│ │ │ │ ├─ article.md -``` +```bash +# Fork and clone the repository +git clone https://github.com/YOUR_USERNAME/nodejs.org.git +cd nodejs.org -The frontmatter of the `article.md` file should look like this: +# Install dependencies +pnpm install --frozen-lockfile -```yaml -title: A super cool title -layout: learn -authors: github_username, another_github_username +# Start development server +pnpm dev ``` -A little bit of explanation about the frontmatter: - -- `title`: The title of the article. This will be displayed as the title of the page. We recommend that you use the same title as the navigation entry. How to enter navigation entries is explained later in this document. -- `layout`: This must be set to `learn` so that the new article has the same style as other Learn pages. -- `authors`: A list of the GitHub usernames of the authors of the article. This is used to display the authors' profile pictures on the page. The frontmatter must always have the `github_username` followed by `, `. The comma and space is important. - -### Modify the navigation - -The data of the navigation is stored in app/site/navigation.json. To add a new entry to the navigation, you need to add a new object to the sideNavigation.learn. - -```json -{ - "sideNavigation": { - "learn": [ - { - "label": "Sub-category", - "items": { - "article": { - "link": "/learn/sub-category/article", - "label": "components.navigation.learn.sub-category.article" - } - } - } - ] - } -} -``` +For detailed setup instructions, see [Getting Started](./docs/getting-started.md). -The `label` key is used to display the title of the article in the navigation. To add a new i18n key we recommend you to read [the translation guide](./TRANSLATION.md#adding-new-translation-keys). +### 2. Make Your Changes -### Add the article +- **New Pages**: Follow our [page creation guide](./docs/adding-pages.md) +- **Components**: See [creating components](./docs/creating-components.md) +- **Styling**: Follow our [code style guidelines](./docs/code-style.md) -To add a new article, you need to create a new markdown file in the `site/pages/en/learn/your-sub-category` directory. +### 3. Test Your Changes -1. Create your new markdown file in the `site/pages/en/learn/your-sub-category` directory. -2. Add the frontmatter to the file. -3. Write your article. -4. Add the navigation entry to `app/site/navigation.json`. -5. Add the translation key to the translation files. +```bash +# Format and lint code +pnpm format -DONE! +# Run tests +pnpm test -### Edit the article +# Test build +pnpm build +``` -To edit an existing article, you need to find the markdown file in the `site/pages/en/learn/your-sub-category` directory. +### 4. Submit Your Contribution -> [!NOTE] -> If you rewrite a big part of the article you can add yourself as an author in the frontmatter. **But** if you only fix a typo or a small part of the article, you don't need to add yourself as an author. +1. **Create a branch**: `git checkout -b your-feature-branch` +2. **Commit changes**: Follow our [commit guidelines](./docs/code-style.md#commit-guidelines) +3. **Push to your fork**: `git push origin your-feature-branch` +4. **Open a Pull Request**: Use our [pull request template](.github/pull_request_template.md) -### Accessible MDX components +## Documentation Structure -#### Codebox +Our documentation is organized in the [`docs/`](./docs/) directory, so check out it's **[README](./docs/README.md)** for navigation. -The codebox component is used to display code snippets. If two code snippets follow without any text between them, they will be displayed in the same codebox, but with two tabs. +## Getting Help -````md -```cjs -const http = require('node:http'); -``` +- **Questions?** Start a [Discussion](https://github.com/nodejs/nodejs.org/discussions) +- **Found a bug?** [Open an issue](https://github.com/nodejs/nodejs.org/issues/new/choose) +- **Need clarification?** Comment on existing issues or PRs +- **Want to chat?** Join the Node.js community on [OpenJS Foundation Slack](https://openjs-foundation.slack.com/) -```mjs -import http from 'node:http'; -``` -```` +## Project Maintainers + +This project is maintained by the [Node.js Website Team](https://github.com/nodejs/nodejs.org#readme). For questions about governance or high-level project direction, you can: + +- Mention `@nodejs/nodejs-website` in issues or PRs +- Contact team members directly for guidance +- Escalate to the [Node.js Technical Steering Committee](https://github.com/nodejs/TSC) if needed + +## License + +By contributing to this project, you agree that your contributions will be licensed under the project's [MIT License](./LICENSE). + +--- -`cjs` and `mjs` are variants of `js`, it's just to display the correct language in the codebox (cjs = CommonJS, mjs = ES Module). +**Ready to contribute?** Start with our [Getting Started guide](./docs/getting-started.md) and join the Node.js community in building better web experiences for developers worldwide! 🚀 diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000000..80efcbe562472 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,39 @@ +# Node.js Website Documentation + +This directory contains documentation for contributing to the Node.js website project. + +## Getting Started + +New to contributing? Start here: + +- **[Getting Started](./getting-started.md)** - Set up your development environment and make your first contribution +- **[Adding Pages](./adding-pages.md)** - Learn how to create new pages and content + +## Development Guidelines + +- **[Code Style](./code-style.md)** - Coding standards and formatting guidelines +- **[Creating Components](./creating-components.md)** - Best practices for React component development +- **[Writing Tests](./writing-tests.md)** - Testing guidelines for unit tests, E2E tests, and Storybooks + +## Technical Documentation + +- **[Technologies](./technologies.md)** - Overview of the tech stack and architecture decisions +- **[Downloads Page](./downloads-page.md)** - How to add installation methods and package managers +- **[Package Publishing](./package-publishing.md)** - Guidelines for publishing packages in our monorepo + +## For Collaborators + +- **[Collaborator Guide](./collaborator-guide.md)** - Guidelines specific to project collaborators with write access + +## Additional Resources + +- [Translation Guidelines](./translation.md) - Website translation policy +- [Dependency Pinning](./dependency-pinning.md) - Package management guidelines +- [Code of Conduct](https://github.com/nodejs/node/blob/HEAD/CODE_OF_CONDUCT.md) + +## Quick Reference + +- **Repository Structure**: See [Technologies](./technologies.md#structure-of-this-repository) +- **Component Guidelines**: See [Creating Components](./creating-components.md) +- **Commit Guidelines**: See [Code Style](./code-style.md#commit-guidelines) +- **Pull Request Policy**: See [Collaborator Guide](./collaborator-guide.md#pull-request-policy) diff --git a/docs/adding-pages.md b/docs/adding-pages.md new file mode 100644 index 0000000000000..d44fbf8e691b0 --- /dev/null +++ b/docs/adding-pages.md @@ -0,0 +1,290 @@ +# Adding Pages + +This guide explains how to create new pages and content for the Node.js website. + +## Table of Contents + +- [Page Creation Process](#page-creation-process) + - [1. Create the Page Content](#1-create-the-page-content) + - [2. Configure the Frontmatter](#2-configure-the-frontmatter) + - [3. Choose the Appropriate Layout](#3-choose-the-appropriate-layout) + - [4. Update Navigation (if needed)](#4-update-navigation-if-needed) +- [Adding Learn Pages](#adding-learn-pages) + - [Learn Page Structure](#learn-page-structure) + - [Learn Page Frontmatter](#learn-page-frontmatter) + - [Frontmatter Fields](#frontmatter-fields) + - [Update Learn Navigation](#update-learn-navigation) + - [Add Translation Keys](#add-translation-keys) +- [Content Guidelines](#content-guidelines) + - [Markdown Features](#markdown-features) + - [Code Blocks](#code-blocks) + - [Multiple Code Tabs](#multiple-code-tabs) + - [Accessible Components](#accessible-components) +- [File Organization](#file-organization) + - [Content Structure](#content-structure) + - [Asset Management](#asset-management) +- [Internationalization](#internationalization) + - [Translation Process](#translation-process) + - [Translation Guidelines](#translation-guidelines) +- [Page Types and Examples](#page-types-and-examples) + - [Standard Content Page](#standard-content-page) + - [Blog Post](#blog-post) + - [Learn Article](#learn-article) +- [Validation and Testing](#validation-and-testing) + - [Before Publishing](#before-publishing) + - [Content Review](#content-review) +- [Advanced Features](#advanced-features) + - [Custom Layouts](#custom-layouts) + - [Dynamic Content](#dynamic-content) + +## Page Creation Process + +### 1. Create the Page Content + +Create a new markdown file in `apps/site/pages/en/` with the appropriate subdirectory structure. + +```markdown +--- +title: Title of the Page +layout: layout-name +--- + +# Page Title + +Your content goes here... +``` + +### 2. Configure the Frontmatter + +The frontmatter (YAML block at the top) configures page metadata: + +- `title`: The page title displayed in the browser tab and used for SEO +- `layout`: The layout template to use (see available layouts below) +- `description`: Optional meta description for SEO +- `authors`: For learn pages, list of GitHub usernames + +### 3. Choose the Appropriate Layout + +Available layouts are defined in `apps/site/layouts/`, and mapped in `components/withLayout`. + +### 4. Update Navigation (if needed) + +If your page should appear in the site navigation, update `app/site/navigation.json` as needed. + +## Adding Learn Pages + +The Learn section has special requirements and structure. + +### Learn Page Structure + +``` +apps/site/pages/en/learn/ +├── category-name/ +│ ├── article-name.md +│ └── another-article.md +└── another-category/ + └── article.md +``` + +### Update Learn Navigation + +Add your new article to `app/site/navigation.json`: + +```json +{ + "sideNavigation": { + "learn": [ + { + "label": "Category Name", + "items": { + "articleName": { + "link": "/learn/category-name/article-name", + "label": "components.navigation.learn.category-name.article-name" + } + } + } + ] + } +} +``` + +### Add Translation Keys + +Create translation keys for your navigation entries in the appropriate locale files: + +```json +// packages/i18n/locales/en.json +{ + "components": { + "navigation": { + "learn": { + "category-name": { + "article-name": "Your Article Title" + } + } + } + } +} +``` + +## Content Guidelines + +### Markdown Features + +The website supports GitHub Flavored Markdown plus MDX components: + +- Standard Markdown syntax +- Code blocks with syntax highlighting +- Tables, lists, and formatting +- Custom React components within content + +### Code Blocks + +Use fenced code blocks with language specification: + +````markdown +```javascript +const example = 'Hello World'; +console.log(example); +``` +```` + +### Multiple Code Tabs + +Consecutive code blocks create tabbed interfaces: + +````markdown +```cjs +const http = require('node:http'); +``` + +```mjs +import http from 'node:http'; +``` +```` + +When using multiple code tabs, an optional display name can be used: + +````markdown +```cjs displayName="node:http" +const http = require('node:http'); +``` + +```mjs displayName="node:vm" +import vm from 'node:vm'; +``` +```` + +## File Organization + +### Content Structure + +``` +apps/site/pages/ +├── en/ # English content (source) +│ ├── learn/ # Learn section +│ ├── blog/ # Blog posts +│ ├── download/ # Download pages +│ └── about/ # About pages +└── {locale}/ # Translated content + └── ... # Same structure as en/ +``` + +### Asset Management + +- **Images**: Store in `apps/site/public/static/images/` +- **Documents**: Store in `apps/site/public/static/documents/` +- **Icons**: Use existing icon system or add to `@node-core/ui-components/Icons/` + +## Internationalization + +### Translation Process + +1. Create the English version first in `apps/site/pages/en/` +2. Translators will create localized versions in `apps/site/pages/{locale}/` +3. Non-translated pages automatically fall back to English content with localized navigation + +### Translation Guidelines + +- Keep file paths consistent across locales +- Use the same frontmatter structure +- Reference the [Translation Guidelines](./translation.md) for detailed policies + +## Page Types and Examples + +### Standard Content Page + +```markdown +--- +title: About Node.js +layout: page +description: Learn about the Node.js runtime and its ecosystem +--- + +# About Node.js + +Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine... +``` + +### Blog Post + +```markdown +--- +title: Node.js 20.0.0 Released +layout: blog +date: 2023-04-18 +author: Node.js Team +--- + +# Node.js 20.0.0 Now Available + +We're excited to announce the release of Node.js 20.0.0... +``` + +### Learn Article + +```markdown +--- +title: Getting Started with Node.js +layout: learn +authors: nodejs-team, community-contributor +--- + +# Getting Started with Node.js + +This tutorial will guide you through... +``` + +## Validation and Testing + +### Before Publishing + +1. **Preview locally**: Use `pnpm dev` to preview your changes +2. **Check formatting**: Run `pnpm format` to ensure proper formatting +3. **Validate links**: Ensure all internal links work correctly +4. **Test responsive design**: Check page layout on different screen sizes + +### Content Review + +- Ensure content follows our style guide +- Verify technical accuracy +- Check for proper grammar and spelling +- Confirm accessibility of any custom elements + +## Advanced Features + +### Custom Layouts + +To create a custom layout: + +1. Add your layout component to `apps/site/layouts/` +2. Update the layout mapping in `apps/site/components/withLayout.tsx` +3. Document the layout purpose and usage + +### Dynamic Content + +For pages that need dynamic data: + +1. Use build-time data fetching in `apps/site/next-data/` +2. Configure data sources in the appropriate scripts +3. Access data through layout props or context diff --git a/docs/code-style.md b/docs/code-style.md new file mode 100644 index 0000000000000..f608e55e3c3a0 --- /dev/null +++ b/docs/code-style.md @@ -0,0 +1,225 @@ +# Code Style Guidelines + +This document outlines the coding standards and formatting guidelines for the Node.js website project. + +## Table of Contents + +- [Commit Guidelines](#commit-guidelines) + - [Commit Message Format](#commit-message-format) + - [Commit Signing](#commit-signing) + - [Examples](#examples) +- [Pre-commit Hooks](#pre-commit-hooks) +- [CSS Guidelines](#css-guidelines) + - [CSS Module Guidelines](#css-module-guidelines) + - [Example CSS Module](#example-css-module) + - [Tailwind Configuration](#tailwind-configuration) +- [JavaScript/TypeScript Guidelines](#javascripttypescript-guidelines) + - [Import Standards](#import-standards) + - [Component Guidelines](#component-guidelines) + - [Example Component Structure](#example-component-structure) +- [File Naming Conventions](#file-naming-conventions) + - [Components](#components) + - [General Files](#general-files) +- [Linting and Formatting](#linting-and-formatting) + - [Automatic Formatting](#automatic-formatting) + - [IDE Configuration](#ide-configuration) +- [Code Organization](#code-organization) + - [File Structure Standards](#file-structure-standards) + - [Import Organization](#import-organization) +- [Documentation Standards](#documentation-standards) +- [Performance Guidelines](#performance-guidelines) + +## Commit Guidelines + +This project follows the [Conventional Commits](https://www.conventionalcommits.org/) specification. + +### Commit Message Format + +- Commit messages must include a "type" as described in Conventional Commits +- Commit messages **must** start with a capital letter +- Commit messages **must not** end with a period `.` + +### Commit Signing + +Commits should be signed. You can read more about [Commit Signing](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) in the GitHub documentation. + +### Examples + +✅ **Good commit messages:** + +``` +feat: Add new component for download statistics +fix: Resolve navigation menu accessibility issue +docs: Update contributing guidelines +``` + +❌ **Bad commit messages:** + +``` +update stuff +Fixed bug. +added new feature +``` + +## Pre-commit Hooks + +This project uses [Husky](https://typicode.github.io/husky/) for Git pre-commit hooks to ensure code quality standards are met before commits. + +## CSS Guidelines + +We use [PostCSS](https://postcss.org/) and [Tailwind CSS](https://tailwindcss.com/) for styling. All component styles should be written in CSS Modules. + +### CSS Module Guidelines + +- Use camelCase for defining CSS classes +- Use Tailwind's `@apply` directive to apply utility classes +- Define one Tailwind utility class per line for better readability +- Avoid plain CSS styles and tokens - use Tailwind utilities instead +- Only write CSS within CSS Modules, avoid inline styles in JavaScript +- Refer to [Tailwind's documentation](https://tailwindcss.com/docs/functions-and-directives#apply-directive) for more details + +### Example CSS Module + +```css +.myComponent { + @apply flex + flex-col + items-center + justify-center + rounded-lg + bg-white + p-4 + shadow-md; +} + +.componentTitle { + @apply mb-4 + text-2xl + font-bold + text-gray-900; +} +``` + +## JavaScript/TypeScript Guidelines + +### Import Standards + +- Avoid importing `React` directly - only import specific modules you need +- Use `import type` for type-only imports +- Prefer named imports over default imports where possible + +### Component Guidelines + +- Use `FC` type from React for component definitions +- Use `FC<PropsWithChildren<MyComponentProps>>` when using children prop +- Prefix prop types with the component name +- Always use default exports for React components +- Avoid direct DOM/Web API access in components - use hooks or utilities instead + +### Example Component Structure + +```tsx +import type { FC } from 'react'; + +import styles from './index.module.css'; + +type MyComponentProps = { + title: string; + isVisible?: boolean; +}; + +const MyComponent: FC<MyComponentProps> = ({ title, isVisible = true }) => { + if (!isVisible) return null; + + return ( + <div className={styles.myComponent}> + <h2 className={styles.componentTitle}>{title}</h2> + </div> + ); +}; + +export default MyComponent; +``` + +## File Naming Conventions + +### Components + +- Component folders: `PascalCase` +- Component files: `index.tsx` (or `PascalCase.tsx` if a subdirectory is not needed) +- Style files: `index.module.css` +- Test files: `__tests__/index.test.mjs` +- Story files: `index.stories.tsx` + +### General Files + +- Use `kebab-case` for most file names (i.e. documentation) +- Use `camelCase` for utility functions and configuration files +- Use `PascalCase` only for React components + +## Linting and Formatting + +### Automatic Formatting + +Run these commands to ensure your code meets our standards: + +```bash +pnpm format # Formats and fixes lints for entire codebase +pnpm lint # Run linter for all files +pnpm lint:fix # Attempt to fix linting errors +pnpm prettier # Run prettier for JavaScript files +pnpm prettier:fix # Fix style errors +``` + +### IDE Configuration + +We recommend using Visual Studio Code with these extensions: + +- [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) - CSS linting +- [Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss) - Tailwind autocomplete +- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - JavaScript/TypeScript linting +- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) - Code formatting + +The repository includes a `.vscode` directory with recommended settings that will be automatically applied if you use VS Code. + +## Code Organization + +### File Structure Standards + +- Keep related files together in component folders +- Use index files for clean imports +- Group similar functionality in dedicated directories +- Follow the established patterns in the codebase + +### Import Organization + +Organize imports in this order: + +1. Node.js built-in modules +2. External library imports (Including `@node-core/*`) +3. Relative imports (`./*`, `../*`, `#specifier/`) +4. Type-only imports at the end of each given section + +```tsx +import { readFile } from 'node:fs/promises'; + +import { SomeComponent } from '@node-core/ui-components/Common/SomeComponent'; +import type { FC } from 'react'; + +import { myHook } from '../hooks/myHook'; +import type { MyComponentProps } from './types'; +``` + +## Documentation Standards + +- Use JSDoc comments for complex functions and utilities +- Document component props with TypeScript interfaces +- Include examples in Storybook for UI components +- Keep README files updated for significant changes + +## Performance Guidelines + +- Minimize bundle size by importing only what you need +- Use dynamic imports for large components when appropriate +- Optimize images and assets +- Follow React best practices for rendering performance diff --git a/docs/collaborator-guide.md b/docs/collaborator-guide.md new file mode 100644 index 0000000000000..973e81ce42ec6 --- /dev/null +++ b/docs/collaborator-guide.md @@ -0,0 +1,183 @@ +# Collaborator Guide + +This document contains information for Collaborators of the Node.js website project regarding maintaining the code, documentation, and issues. + +Collaborators should be familiar with the guidelines for new contributors in [Getting Started](./getting-started.md) and our [Code Style](./code-style.md) guidelines. + +## Table of Contents + +- [Collaborator Responsibilities](#collaborator-responsibilities) + - [Issues and Pull Requests](#issues-and-pull-requests) + - [Issue Management](#issue-management) + - [Pull Request Management](#pull-request-management) +- [Accepting Modifications](#accepting-modifications) + - [Review Requirements](#review-requirements) + - [Review Process](#review-process) +- [Pull Request Policy](#pull-request-policy) + - [Before Merging](#before-merging) + - [Timing Requirements](#timing-requirements) + - [Exceptions for Immediate Merging](#exceptions-for-immediate-merging) + - [Fast-tracking Process](#fast-tracking-process) + - [Consensus and Objections](#consensus-and-objections) + - [When Merging](#when-merging) + - [Required Checks](#required-checks) + - [Testing Requirements](#testing-requirements) +- [Becoming a Collaborator](#becoming-a-collaborator) + - [Prerequisites](#prerequisites) + - [Application Process](#application-process) + - [Nomination Requirements](#nomination-requirements) + - [Nomination Issue Content](#nomination-issue-content) + - [Approval Process](#approval-process) + - [Maintaining Collaborator Status](#maintaining-collaborator-status) + - [Policy Adherence](#policy-adherence) + - [Activity Requirements](#activity-requirements) + - [Consequences of Inactivity](#consequences-of-inactivity) + +## Collaborator Responsibilities + +### Issues and Pull Requests + +Courtesy should always be shown to individuals submitting issues and pull requests to the Node.js website project. + +Collaborators should feel free to take full responsibility for managing issues and pull requests they feel qualified to handle, as long as this is done while being mindful of these guidelines, the opinions of other Collaborators and guidance of the Website Team. + +#### Issue Management + +- **Close irrelevant issues**: Collaborators may close any issue or pull request they believe is not relevant to the future of the Node.js project +- **Allow discussion time**: When relevance is unclear, leave issues open for several days for additional discussion +- **Re-opening**: Remember that issues can always be re-opened if necessary +- **Seek input**: If no input from collaborators or evidence of relevance emerges, issues may be closed + +#### Pull Request Management + +> [!TIP] +> Avoid updating/rebasing PRs unnecessarily. We use [GitHub Merge Queues](https://github.blog/2023-07-12-github-merge-queue-is-generally-available/) to merge Pull Requests, which automatically rebases and runs CI-checks against the latest merge commit. + +## Accepting Modifications + +All Node.js code and documentation modifications should be performed via GitHub pull requests. Only the Website Team can merge their work and should do so carefully. + +### Review Requirements + +- **Expert Review**: All pull requests must be reviewed and accepted by a Collaborator with sufficient expertise who can take full responsibility for the change +- **Additional Sign-off**: Pull requests proposed by existing Collaborators require an additional Collaborator for sign-off +- **CI Requirements**: Pull Requests can only be merged after all CI Checks have passed +- **Manual CI Trigger**: CI Checks need to be manually triggered by adding a `github_actions:pull-request` label to the Pull Request + +### Review Process + +1. **Assess Expertise**: If you are unsure about the modification and are not prepared to take full responsibility for the change, defer to another Collaborator +2. **Summon Experts**: In some cases, it may be necessary to summon a qualified Collaborator to a pull request for review by @-mention +3. **Follow Guidelines**: Follow the guidelines in the [Pull Request Policy](#pull-request-policy) for reviewing and merging Pull Requests + +## Pull Request Policy + +This policy governs how contributions should land within this repository. + +### Before Merging + +#### Timing Requirements + +- **Minimum Open Time**: Pull Requests must be open for at least 48 hours (or 72 hours if authored on weekends). +- **No Objections**: There must be no objections after the minimum time period +- **At Least One Approval**: At least one approval is required for any PR to be merged + +#### Exceptions for Immediate Merging + +Pull requests might be immediately merged if they contain: + +- Critical bug fixes +- Short errata (e.g., typos from previous PRs) +- Critical changes considered "showstoppers" for the website's functionality + +#### Fast-tracking Process + +Pull requests can be "fast-tracked" (merged before 48 hours) if: + +1. **Label Applied**: A "fast-track" label is added +2. **Comment Required**: The person fast-tracking must comment explaining the request +3. **Approval Needed**: Must have at least one 👍 reaction if the fast-tracker is the PR author + +#### Consensus and Objections + +- **Seek Consensus**: If there are disagreements, consensus should be sought +- **Escalation**: Lack of consensus might require escalation to the Website Team Maintainers +- **Address Objections**: All objections must be addressed before merging +- **External Objections**: Objections from TSC or Core Collaborators are valid and must be resolved + +### When Merging + +#### Required Checks + +- **Status Checks**: All required status checks must have passed +- **CI Label**: Remember to run CI checks by labeling PR with `github_actions:pull-request` +- **Discussions Resolved**: Ensure all discussions are resolved + +#### Testing Requirements + +- **Include Tests**: Tests must be included in Pull Requests for new features or bug fixes +- **Fix Failing Tests**: Contributors are responsible for fixing any test(s) that fail +- **Comprehensive Coverage**: Ensure tests adequately cover the changes made + +## Becoming a Collaborator + +A Collaborator of the Node.js Website repository is a member of the Node.js Website Team. + +### Prerequisites + +The Website Team is responsible for technical development of the Node.js Website, so team members should have: + +- Significant knowledge about modern Web Technologies +- Understanding of Web Standards +- Active contribution history to the repository + +> [!INFO] +> Regular contributors do not need to become "Collaborators" as any contribution is appreciated, and Collaborator status is a formality that comes with obligations. + +### Application Process + +If you're an active contributor seeking to become a member, contact one of the existing Team Members for guidance. + +#### Nomination Requirements + +- **Active Contribution**: Must be actively contributing to the repository +- **Significant Involvement**: Contributions must include significant code reviews or code contributions +- **Team Nomination**: Nomination must be done by an existing Website Team member via GitHub Issue + +#### Nomination Issue Content + +The nomination issue must include: + +- Explanation of why the nominated person is a good addition to the team +- Links to relevant contributions: + - Code Reviews + - Comments on Issues and PRs + - Authoring of PRs or Issues + - Comments or Authoring of Discussions + +#### Approval Process + +- **Three Approvals**: At least three existing Website Team members must agree (via comments or 👍 reactions) +- **Waiting Period**: Issue must be open for at least 72 hours without objections +- **Objection Resolution**: All objections must be resolved before proceeding +- **External Objections**: Objections from TSC or Core Collaborators count as valid objections + +### Maintaining Collaborator Status + +Once you become a collaborator, maintain your status by: + +#### Policy Adherence + +- **Moderation Policy**: Abide by the [Node.js Moderation Policy](https://github.com/nodejs/admin/blob/HEAD/Moderation-Policy.md) +- **Code of Conduct**: Follow the [Code of Conduct](https://github.com/nodejs/node/blob/HEAD/CODE_OF_CONDUCT.md) + +#### Activity Requirements + +- **Regular Commits**: Author commits at least once in the past twelve months +- **Active Participation**: Engage in project discussions and reviews + +#### Consequences of Inactivity + +- **Twelve Month Rule**: Collaborators inactive for more than twelve months may be removed from the active collaborators list +- **Reinstatement**: Can be reinstated upon returning to active participation through the same nomination process +- **Policy Violations**: Violations may result in immediate removal depending on severity and TSC decision diff --git a/CONTENT_VS_CODE.md b/docs/content-vs-code.md similarity index 100% rename from CONTENT_VS_CODE.md rename to docs/content-vs-code.md diff --git a/docs/creating-components.md b/docs/creating-components.md new file mode 100644 index 0000000000000..38aa06aab8fcc --- /dev/null +++ b/docs/creating-components.md @@ -0,0 +1,357 @@ +# Creating Components + +This guide covers best practices for creating React components in the Node.js website project. + +## Table of Contents + +- [Component Architecture](#component-architecture) +- [Component Guidelines](#component-guidelines) + - [Framework-Agnostic Components](#framework-agnostic-components) + - [Website-Specific Components](#website-specific-components) +- [Component Structure](#component-structure) + - [File Organization](#file-organization) + - [Sub-components](#sub-components) +- [Component Implementation](#component-implementation) + - [Basic Component Template](#basic-component-template) + - [Component with Children](#component-with-children) +- [Styling Components](#styling-components) + - [CSS Modules](#css-modules) + - [Style Guidelines](#style-guidelines) + - [Responsive Design](#responsive-design) +- [TypeScript Best Practices](#typescript-best-practices) + - [Prop Types](#prop-types) + - [Import Patterns](#import-patterns) +- [Component Domain Organization](#component-domain-organization) +- [Testing Components](#testing-components) + - [Unit Tests](#unit-tests) + - [Storybook Stories](#storybook-stories) + +## Component Architecture + +The website uses a dual-package architecture for React components: + +- **`@node-core/ui-components`**: Reusable, framework-agnostic UI components +- **`apps/site/components`**: Website-specific components that use Next.js features + +## Component Guidelines + +### Framework-Agnostic Components + +Generic UI components should be placed in `@node-core/ui-components`: + +```tsx +// @node-core/ui-components/Common/Button/index.tsx +import type { FC, ButtonHTMLAttributes } from 'react'; +import styles from './index.module.css'; + +type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & { + variant?: 'primary' | 'secondary'; + size?: 'small' | 'medium' | 'large'; +}; + +const Button: FC<ButtonProps> = ({ + variant = 'primary', + size = 'medium', + children, + className, + ...props +}) => ( + <button + className={`${styles.button} ${styles[variant]} ${styles[size]} ${className || ''}`} + {...props} + > + {children} + </button> +); + +export default Button; +``` + +### Website-Specific Components + +Components that need Next.js features should be in `apps/site/components`, such as components that require routing. + +## Component Structure + +### File Organization + +Each component should have its own folder with this structure: + +``` +ComponentName/ +├── index.tsx # Component implementation +├── index.module.css # Component styles +├── index.stories.tsx # Storybook stories (ui-components only) +└── __tests__/ + └── index.test.mjs # Unit tests +``` + +### Sub-components + +If a component has sub-components, organize them hierarchically: + +``` +ComponentName/ +├── index.tsx +├── index.module.css +├── SubComponent/ +│ ├── index.tsx +│ └── index.module.css +└── AnotherSubComponent/ + ├── index.tsx + └── index.module.css +``` + +## Component Implementation + +### Basic Component Template + +```tsx +import type { FC } from 'react'; +import styles from './index.module.css'; + +type MyComponentProps = { + title: string; + description?: string; + isVisible?: boolean; +}; + +const MyComponent: FC<MyComponentProps> = ({ + title, + description, + isVisible = true, +}) => { + if (!isVisible) return null; + + return ( + <div className={styles.container}> + <h2 className={styles.title}>{title}</h2> + {description && <p className={styles.description}>{description}</p>} + </div> + ); +}; + +export default MyComponent; +``` + +### Component with Children + +```tsx +import type { FC, PropsWithChildren } from 'react'; +import styles from './index.module.css'; + +type CardProps = PropsWithChildren<{ + title: string; + variant?: 'default' | 'highlighted'; +}>; + +const Card: FC<CardProps> = ({ title, variant = 'default', children }) => ( + <div className={`${styles.card} ${styles[variant]}`}> + <h3 className={styles.title}>{title}</h3> + <div className={styles.content}>{children}</div> + </div> +); + +export default Card; +``` + +## Styling Components + +### CSS Modules + +Use CSS Modules for component styling: + +```css +/* index.module.css */ +.container { + @apply flex + flex-col + gap-4 + rounded-lg + bg-white + p-6 + shadow-sm; +} + +.title { + @apply text-xl + font-semibold + text-gray-900; +} + +.description { + @apply leading-relaxed + text-gray-600; +} +``` + +### Style Guidelines + +- Use camelCase for CSS class names +- Apply one Tailwind utility per line for readability +- Use `@apply` directive for Tailwind utilities +- Avoid plain CSS properties when Tailwind alternatives exist +- Keep styles scoped to the component + +### Responsive Design + +```css +.container { + @apply grid + grid-cols-1 + gap-4 + md:grid-cols-2 + lg:grid-cols-3; +} + +.title { + @apply text-lg + md:text-xl + lg:text-2xl; +} +``` + +## TypeScript Best Practices + +### Prop Types + +```tsx +// Prefix prop types with component name +type ButtonProps = { + variant: 'primary' | 'secondary' | 'danger'; + size: 'small' | 'medium' | 'large'; + isLoading?: boolean; + onClick?: () => void; +}; + +// Extend HTML attributes when appropriate +type InputProps = InputHTMLAttributes<HTMLInputElement> & { + label: string; + error?: string; +}; + +// Use PropsWithChildren for components that accept children +type ContainerProps = PropsWithChildren<{ + maxWidth?: 'sm' | 'md' | 'lg' | 'xl'; + className?: string; +}>; +``` + +### Import Patterns + +```tsx +// Type-only imports +import type { FC, HTMLAttributes, MouseEvent } from 'react'; + +// Regular imports +import { useState, useEffect } from 'react'; +import { Button } from '@node-core/ui-components'; + +// Avoid importing React itself +// ❌ import React from 'react'; +// ✅ import type { FC } from 'react'; +``` + +## Component Domain Organization + +Components should be organized by domain (where they're used): + +1. UI Components (`@node-core/ui-components`) + +When you need Next.js functionality in a UI component, use a wrapper, such as the one shown below: + +```tsx +// Base component (@node-core/ui-components) +const BaseNavLink: FC<BaseLinkProps> = ({ href, isActive, children }) => ( + <a href={href} className={`${styles.link} ${isActive ? styles.active : ''}`}> + {children} + </a> +); + +// Wrapper component (apps/site/components) +const NavLink: FC<NavLinkProps> = ({ href, children }) => { + const pathname = usePathname(); + const isActive = pathname === href; + + return ( + <BaseNavLink href={href} isActive={isActive}> + {children} + </BaseNavLink> + ); +}; +``` + +2. Site Components (`apps/site/components`) + +## Testing Components + +### Unit Tests + +```javascript +// __tests__/index.test.mjs +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; +import { render, screen, fireEvent } from '@testing-library/react'; +import Button from '../index.js'; + +describe('Button Component', () => { + it('renders with correct text', () => { + render(<Button>Click me</Button>); + assert(isVisible(screen.getByRole('button', { name: /click me/i })); + }); + + it('applies variant styles correctly', () => { + render(<Button variant="secondary">Test</Button>); + const button = screen.getByRole('button'); + assert(button.getAttribute('class').includes('secondary')) + }); +}); +``` + +### Storybook Stories + +```tsx +// index.stories.tsx +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; +import Button from '@node-core/ui-components/Common/Button'; + +type Story = StoryObj<typeof Button>; +type Meta = MetaObj<typeof Button>; + +export const Primary: Story = { + args: { + variant: 'primary', + children: 'Primary Button', + }, +}; + +export const Secondary: Story = { + args: { + variant: 'secondary', + children: 'Secondary Button', + }, +}; + +export const Loading: Story = { + args: { + variant: 'primary', + children: 'Loading...', + disabled: true, + }, +}; + +export default { + component: Button, + title: 'Common/Button', + argTypes: { + variant: { + control: 'select', + options: ['primary', 'secondary', 'danger'], + }, + size: { + control: 'select', + options: ['small', 'medium', 'large'], + }, + }, +} as Meta; +``` diff --git a/DEPENDENCY_PINNING.md b/docs/dependency-pinning.md similarity index 100% rename from DEPENDENCY_PINNING.md rename to docs/dependency-pinning.md diff --git a/docs/downloads-page.md b/docs/downloads-page.md new file mode 100644 index 0000000000000..1cb6e612bc2fc --- /dev/null +++ b/docs/downloads-page.md @@ -0,0 +1,275 @@ +# Downloads Page + +This guide explains how to add and modify installation methods and package managers for the Node.js downloads page. + +## Table of Contents + +- [Overview](#overview) +- [Adding Installation Methods](#adding-installation-methods) + - [1. Update Installation Methods Configuration](#1-update-installation-methods-configuration) + - [Configuration Properties](#configuration-properties) + - [2. Create Installation Icon](#2-create-installation-icon) + - [3. Add TypeScript Definitions](#3-add-typescript-definitions) + - [4. Create Installation Snippet](#4-create-installation-snippet) + - [Snippet Variables](#snippet-variables) + - [5. Add Translation Key](#5-add-translation-key) +- [Adding Package Managers](#adding-package-managers) +- [Compatibility Configuration](#compatibility-configuration) + - [Operating System Restrictions](#operating-system-restrictions) + - [Version Restrictions](#version-restrictions) + - [Platform/Architecture Restrictions](#platformarchitecture-restrictions) + - [Combined Restrictions](#combined-restrictions) +- [Snippet Development](#snippet-development) + - [Template Syntax](#template-syntax) + - [Multi-line Instructions](#multi-line-instructions) + +## Overview + +The downloads page provides multiple ways for users to install Node.js across different operating systems and platforms. It supports: + +- **Installation Methods**: Direct ways to install Node.js (official installers, package managers, etc.) +- **Package Managers**: Third-party package managers that can install Node.js +- **Platform Compatibility**: OS-specific, architecture-specific, and version-specific availability + +## Adding Installation Methods + +Installation methods are the primary ways users can install Node.js. Follow these steps to add a new method: + +### 1. Update Installation Methods Configuration + +Add your new method to `apps/site/util/downloadUtils.tsx`: + +```javascript +// apps/site/util/downloadUtils.tsx +export const INSTALL_METHODS = [ + // ...existing methods... + { + iconImage: <InstallMethodIcons.YourIconImage width={16} height={16} />, + url: 'https://example.com/install-guide', + value: 'exampleMethod', + recommended: false, // Only for official methods + compatibility: { + os: ['LINUX', 'MAC'], // Optional: OS restrictions + semver: ['>=14.0.0'], // Optional: Version restrictions + platform: ['x64', 'arm64'], // Optional: Architecture restrictions + }, + }, +]; +``` + +#### Configuration Properties + +- **`iconImage`**: React component for the installation method icon +- **`url`**: Link to official installation documentation +- **`value`**: Unique identifier for the installation method +- **`recommended`**: Boolean indicating if this is a recommended method (official methods only) +- **`compatibility`**: Optional object defining when this method is available + +### 2. Create Installation Icon + +Add the icon component to `@node-core/ui-components/Icons/InstallationMethod/`: + +```tsx +// @node-core/ui-components/Icons/InstallationMethod/YourIconImage.tsx +import type { FC, SVGProps } from 'react'; + +const YourIconImage: FC<SVGProps<SVGSVGElement>> = props => ( + <svg viewBox="0 0 24 24" fill="currentColor" {...props}> + {/* Your SVG content */} + </svg> +); + +export default YourIconImage; +``` + +Update the icon index file: + +```tsx +// @node-core/ui-components/Icons/InstallationMethod/index.tsx +export { default as YourIconImage } from './YourIconImage'; +// ...other exports +``` + +### 3. Add TypeScript Definitions + +Update the type definitions in `apps/site/types/release.ts`: + +```typescript +// apps/site/types/release.ts +export type InstallationMethod = + | 'exampleMethod' + | 'anotherMethod' + | /* ...existing methods... */; + +export const InstallationMethodLabel: Record<InstallationMethod, string> = { + exampleMethod: 'Example Method', + anotherMethod: 'Another Method', + // ...existing methods... +}; +``` + +### 4. Create Installation Snippet + +Add installation instructions in `apps/site/snippets/en/download/`: + +```bash +# apps/site/snippets/en/download/exampleMethod.bash +# Install Node.js ${props.version} using Example Method +curl -fsSL https://example.com/install.sh | bash -s -- ${props.version} + +# Verify installation +node --version +npm --version +``` + +#### Snippet Variables + +The snippet has access to a `props` variable of type `ReleaseContextType`: + +- `props.version`: Current Node.js version (e.g., "20.0.0") +- `props.major`: Major version number +- `props.versionWithPrefix`: Version with "v" prefix (e.g., "v20.0.0") +- Additional release information + +### 5. Add Translation Key + +Add descriptive text in `packages/i18n/locales/en.json`: + +```json +{ + "layouts": { + "download": { + "codeBox": { + "platformInfo": { + "exampleMethod": "Install Node.js using the Example Method package manager. This method provides automatic updates and easy version management." + } + } + } + } +} +``` + +## Adding Package Managers + +Package managers follow the same process as installation methods but are added to the `PACKAGE_MANAGERS` configuration: + +```javascript +// apps/site/util/downloadUtils.tsx +export const PACKAGE_MANAGERS = [ + // ...existing managers... + { + iconImage: <PackageManagerIcons.YourManager width={16} height={16} />, + url: 'https://your-package-manager.com', + value: 'yourManager', + compatibility: { + os: ['LINUX', 'MAC', 'WIN'], + platform: ['x64', 'arm64'], + }, + }, +]; +``` + +Follow the same steps as installation methods, but: + +- Add icons to `@node-core/ui-components/Icons/PackageManager/` +- Create snippets in `apps/site/snippets/en/download/` +- Update `PackageManager` types instead of `InstallationMethod` + +## Compatibility Configuration + +The compatibility system allows fine-grained control over when installation methods appear: + +### Operating System Restrictions + +```javascript +compatibility: { + os: ['LINUX', 'MAC', 'WIN'], // Available operating systems +} +``` + +Available OS values: + +- `LINUX`: Linux distributions +- `MAC`: macOS +- `WIN`: Windows + +### Version Restrictions + +```javascript +compatibility: { + semver: ['>=14.0.0', '<21.0.0'], // Supported Node.js versions +} +``` + +Uses semantic versioning ranges: + +- `>=14.0.0`: Version 14.0.0 and higher +- `<21.0.0`: Below version 21.0.0 +- `^18.0.0`: Compatible with 18.x.x +- `~20.1.0`: Compatible with 20.1.x + +### Platform/Architecture Restrictions + +```javascript +compatibility: { + platform: ['x64', 'arm64', 'x86'], // Supported architectures +} +``` + +Available platforms: + +- `x64`: 64-bit x86 architecture +- `arm64`: 64-bit ARM architecture +- `x86`: 32-bit x86 architecture + +### Combined Restrictions + +```javascript +compatibility: { + os: ['LINUX', 'MAC'], + semver: ['>=16.0.0'], + platform: ['x64', 'arm64'], +} +``` + +This method would only appear for: + +- Linux or macOS users +- Node.js version 16.0.0 or higher +- 64-bit x86 or ARM architectures + +## Snippet Development + +### Template Syntax + +Snippets use JavaScript template literal syntax with access to release data: + +```bash +# Basic usage +echo "Installing Node.js ${props.version}" + +# Conditional content +${props.major >= 18 ? '# Node.js 18+ features available' : '# Using legacy Node.js'} + +# Complex expressions +curl -o nodejs.tar.gz "https://nodejs.org/dist/v${props.version}/node-v${props.version}-linux-x64.tar.gz" +``` + +### Multi-line Instructions + +```bash +# Download and install Node.js ${props.version} + +# Step 1: Download the installer +wget https://example.com/node-${props.version}-installer.sh + +# Step 2: Make it executable +chmod +x node-${props.version}-installer.sh + +# Step 3: Run the installer +sudo ./node-${props.version}-installer.sh + +# Step 4: Verify installation +node --version # Should output: v${props.version} +npm --version +``` diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 0000000000000..d293ea79826ae --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,148 @@ +# Getting Started + +This guide will help you set up your development environment and make your first contribution to the Node.js website. + +## Table of Contents + +- [Prerequisites](#prerequisites) +- [Setting Up Your Development Environment](#setting-up-your-development-environment) +- [Making Your First Contribution](#making-your-first-contribution) +- [Available CLI Commands](#available-cli-commands) + - [Development Commands](#development-commands) + - [Code Quality Commands](#code-quality-commands) + - [Testing Commands](#testing-commands) + - [Other Commands](#other-commands) +- [Next Steps](#next-steps) +- [Getting Help](#getting-help) + +## Prerequisites + +- Node.js (latest LTS version recommended) +- pnpm package manager +- Git +- A GitHub account + +## Setting Up Your Development Environment + +1. **Fork and Clone the Repository** + + Click the fork button in the top right to clone the [Node.js Website Repository](https://github.com/nodejs/nodejs.org/fork) + + ```bash + git clone git@github.com:<YOUR_GITHUB_USERNAME>/nodejs.org.git # SSH + git clone https://github.com/<YOUR_GITHUB_USERNAME>/nodejs.org.git # HTTPS + gh repo clone <YOUR_GITHUB_USERNAME>/nodejs.org # GitHub CLI + ``` + +2. **Navigate to the Project Directory** + + ```bash + cd nodejs.org + ``` + +3. **Set Up Remote Tracking** + + ```bash + git remote add upstream git@github.com:nodejs/nodejs.org.git # SSH + git remote add upstream https://github.com/nodejs/nodejs.org.git # HTTPS + gh repo sync nodejs/nodejs.org # GitHub CLI + ``` + +4. **Install Dependencies** + + ```bash + pnpm install --frozen-lockfile + ``` + +5. **Start the Development Server** + + ```bash + pnpm dev # starts a development environment at http://localhost:3000/ + ``` + +## Making Your First Contribution + +1. **Create a New Branch** + + ```bash + git checkout -b name-of-your-branch + ``` + +2. **Make Your Changes** + + - For repository structure guidance, see [Technologies](./technologies.md#structure-of-this-repository) + - For adding new pages, see [Adding Pages](./adding-pages.md) + - For component development, see [Creating Components](./creating-components.md) + +3. **Test Your Changes** + + ```bash + pnpm format # runs linting and formatting + pnpm test # runs all tests + ``` + +4. **Keep Your Branch Updated** + + ```bash + git fetch upstream + git merge upstream/main + ``` + +5. **Commit and Push Your Changes** + + ```bash + git add . + git commit -m "describe your changes" + git push -u origin name-of-your-branch + ``` + + > [!TIP] + > Follow our [commit guidelines](./code-style.md#commit-guidelines) for commit message format. + +6. **Create a Pull Request** + + - Go to your fork on GitHub + - Click "New Pull Request" + - Follow our [pull request guidelines](./collaborator-guide.md#pull-request-policy) + +## Available CLI Commands + +### Development Commands + +- `pnpm dev` - Start local development server +- `pnpm build` - Build for production (Vercel deployments) +- `pnpm deploy` - Build for export (Legacy server) +- `pnpm start` - Start server with built content + +### Code Quality Commands + +- `pnpm lint` - Run linter for all files +- `pnpm lint:fix` - Attempt to fix linting errors +- `pnpm prettier` - Run prettier for JavaScript files +- `pnpm prettier:fix` - Attempt to fix style errors +- `pnpm format` - Format and fix lints for entire codebase + +### Testing Commands + +- `pnpm test` - Run all tests locally +- `pnpm test:unit` - Run unit tests only +- `pnpm test:ci` - Run tests with CI output format + +### Other Commands + +- `pnpm scripts:release-post -- --version=vXX.X.X --force` - Generate release post +- `pnpm storybook` - Start Storybook development server +- `pnpm storybook:build` - Build Storybook for publishing + +## Next Steps + +- Read about our [code style guidelines](./code-style.md) +- Learn about [creating components](./creating-components.md) +- Understand our [testing practices](./writing-tests.md) +- Review the [technologies we use](./technologies.md) + +## Getting Help + +- Open a [Discussion](https://github.com/nodejs/nodejs.org/discussions) for questions +- Check existing [Issues](https://github.com/nodejs/nodejs.org/issues) for known problems +- Review our [Code of Conduct](https://github.com/nodejs/node/blob/HEAD/CODE_OF_CONDUCT.md) diff --git a/docs/package-publishing.md b/docs/package-publishing.md new file mode 100644 index 0000000000000..799af08baf2f0 --- /dev/null +++ b/docs/package-publishing.md @@ -0,0 +1,52 @@ +# Package Publishing + +This guide covers the package publishing process for the Node.js website's multi-package workspace architecture. + +## Table of Contents + +- [Overview](#overview) +- [Repository Structure](#repository-structure) +- [Publishing Process](#publishing-process) + +## Overview + +The Node.js website uses a monorepo structure where individual packages are published to the npm registry. This approach allows for: + +- Modular package distribution +- Independent versioning +- Reusable components across projects +- Better dependency management + +## Repository Structure + +``` +nodejs.org/ +├── packages/ +│ ├── ui-components/ # Reusable UI components +│ ├── i18n/ # Internationalization utilities +│ └── [other-packages]/ # Additional packages +└── apps/ + └── site/ # Main website application +``` + +## Publishing Process + +Publishing is handled automatically through GitHub Actions, when changes are merged to the main branch (or via `workflow_dispatch`): + +1. **Merge Queue**: Changes must come through GitHub's merge queue +2. **CI Pipeline**: "Linting and Tests" workflow completes successfully +3. **Auto-trigger**: "Publish Packages" workflow runs automatically +4. **Verification**: Committer must be verified from `noreply@github.com` +5. **Notification**: Slack notification sent to `#nodejs-website` if `workflow_dispatch` was the trigger. + +```mermaid +graph TD + A[Code Changes] --> B[Pull Request] + B --> C[CI Tests Pass] + C --> D[Merge to Main] + D --> E[Merge Queue] + E --> F[Auto Publish Trigger] + F --> G[Package Analysis] + G --> H[Version Bump] + H --> I[npm publish] +``` diff --git a/docs/technologies.md b/docs/technologies.md new file mode 100644 index 0000000000000..8f20ee7a0762b --- /dev/null +++ b/docs/technologies.md @@ -0,0 +1,355 @@ +# Technologies & Architecture + +This document provides an overview of the technologies used in the Node.js website and explains key architectural decisions. + +## Table of Contents + +- [Core Technologies](#core-technologies) + - [Frontend Framework](#frontend-framework) + - [Why Next.js?](#why-nextjs) + - [Styling System](#styling-system) + - [PostCSS Plugins](#postcss-plugins) + - [Content Management](#content-management) + - [Content Processing Plugins](#content-processing-plugins) + - [UI Components](#ui-components) + - [Why Radix UI?](#why-radix-ui) + - [Internationalization](#internationalization) + - [Development Tools](#development-tools) +- [Repository Structure](#repository-structure) +- [Architecture Decisions](#architecture-decisions) + - [Static Build Support](#static-build-support) + - [Custom Page Rendering](#custom-page-rendering) + - [`[...path].tsx` - Dynamic Route Handler](#pathts---dynamic-route-handler) + - [`next.dynamic.mjs` - Page Generation](#nextdynamicmjs---page-generation) + - [`next.data.mjs` - Build-time Data](#nextdatamjs---build-time-data) + - [Internationalization Strategy](#internationalization-strategy) + - [Why Not Next.js Built-in i18n?](#why-not-nextjs-built-in-i18n) + - [Locale Detection and Routing](#locale-detection-and-routing) + - [Content Structure](#content-structure) + - [Layouts System](#layouts-system) + - [Content Processing Pipeline](#content-processing-pipeline) + - [Rewrite and Redirect System](#rewrite-and-redirect-system) + - [`next.rewrites.mjs`](#nextrwritesmjs) + - [`redirects.json`](#redirectsjson) +- [Configuration Files](#configuration-files) + - [`site.json`](#sitejson) + - [`next.locales.mjs`](#nextlocalesmjs) +- [Development Environment](#development-environment) + - [VSCode Configuration](#vscode-configuration) + - [Build and Deployment](#build-and-deployment) + - [Multiple Build Targets](#multiple-build-targets) + - [Vercel Integration](#vercel-integration) + - [Package Management](#package-management) + - [Multi-package Workspace](#multi-package-workspace) + - [Publishing Process](#publishing-process) +- [Performance Optimizations](#performance-optimizations) + - [Static Generation](#static-generation) + - [Bundle Optimization](#bundle-optimization) + - [Image Optimization](#image-optimization) +- [Testing Infrastructure](#testing-infrastructure) + - [Visual Regression Testing](#visual-regression-testing) + - [End-to-End Testing](#end-to-end-testing) + +## Core Technologies + +### Frontend Framework + +The Node.js Website is built with [React](https://react.dev/) and [Next.js](https://nextjs.org/): + +- **React**: UI rendering engine for component-based development +- **Next.js**: Full-stack framework providing SSG, routing, and build optimization + +#### Why Next.js? + +We chose Next.js because it is: + +- Versatile and hackable for custom requirements +- Stable with strong community maintenance +- Well-suited as a long-term framework choice +- Capable of supporting static builds (requirement from TSC) + +### Styling System + +- **[PostCSS](https://postcss.org/)**: CSS preprocessing with plugin-based architecture +- **[Tailwind CSS](https://tailwindcss.com/)**: Utility-first CSS framework and design system foundation +- **CSS Modules**: Scoped styling for components + +#### PostCSS Plugins + +- `postcss-calc`: Resolves `calc()` expressions at build time +- `@tailwindcss/postcss`: Enables Tailwind integration + +### Content Management + +- **[MDX](https://mdxjs.com/)**: Markdown with JSX component support +- **[Remark](https://github.com/remarkjs/remark)**: Markdown processing plugins +- **[Rehype](https://github.com/rehypejs/rehype)**: HTML processing plugins + +#### Content Processing Plugins + +- `remark-gfm`: GitHub Flavored Markdown support +- `remark-headings`: Generates metadata for table of contents +- `rehype-autolink-headings`: Automatic anchor links for headings +- `rehype-slug`: Automatic ID generation for headings + +### UI Components + +- **[Radix UI](https://www.radix-ui.com/)**: Accessible, unstyled component primitives +- **[Hero Icons](https://heroicons.com/)**: SVG icon library +- **[Shiki](https://github.com/shikijs/shiki)**: Syntax highlighting for code blocks + +#### Why Radix UI? + +- Minimalistic, component-focused approach +- Built-in WAI-ARIA and accessibility features +- Allows focus on design without accessibility implementation overhead +- Modular package structure + +### Internationalization + +- **[`next-intl`](https://next-intl-docs.vercel.app)**: i18n library with Next.js integration +- **[ICU Message Syntax](https://next-intl.dev/docs/usage/messages)**: Translation message format + +### Development Tools + +- **[Storybook](https://storybook.js.org/)**: Component development and visual testing +- **[Chromatic](https://www.chromatic.com/)**: Automated visual regression testing +- **[Husky](https://typicode.github.io/husky/)**: Git hooks for code quality + +## Repository Structure + +``` +nodejs.org/ +├── apps/ +│ └── site/ # Main website application +│ ├── components/ # Website-specific React components +│ ├── layouts/ # Page layout templates +│ ├── pages/ # Content pages (Markdown/MDX) +│ │ ├── en/ # English content (source) +│ │ └── {locale}/ # Translated content +│ ├── public/ # Static assets +│ │ └── static/ # Images, documents, etc. +│ ├── hooks/ # React hooks +│ ├── providers/ # React context providers +│ ├── types/ # TypeScript definitions +│ ├── next-data/ # Build-time data fetching +│ ├── scripts/ # Utility scripts +│ ├── snippets/ # Code snippets for download page +│ └── tests/ # Test files +│ └── e2e/ # End-to-end tests +└── packages/ + ├── ui-components/ # Reusable UI components + │ ├── styles/ # Global stylesheets + │ └── .storybook/ # Storybook configuration + ├── i18n/ # Internationalization + │ ├── locales/ # Translation files + │ └── config.json # Locale configuration + ├── rehype-shiki/ # Syntax highlighting plugin + ... +``` + +## Architecture Decisions + +### Static Build Support + +The website supports fully static builds to ensure independence from third-party services: + +- Content can be served without external dependencies +- Maintains availability even if hosting providers change + +### Custom Page Rendering + +The website uses a custom rendering system instead of Next.js default routing: + +#### `[...path].tsx` - Dynamic Route Handler + +- Catches all routes and renders them through a custom system +- Enables dynamic page generation from Markdown files +- Supports incremental static generation (ISG) + +#### `next.dynamic.mjs` - Page Generation + +This file handles: + +- Discovering all source pages in `apps/site/pages/en` +- Identifying translated pages +- Generating localized paths for untranslated content +- Creating fallback pages with English content but localized navigation + +#### `next.data.mjs` - Build-time Data + +Responsible for: + +- Node.js release data fetching +- Blog post metadata generation +- RSS feed creation +- Build-time indexing + +### Internationalization Strategy + +#### Why Not Next.js Built-in i18n? + +We use a custom i18n solution because: + +- Need comprehensive locale and page listing capabilities +- Use subfolder content structure (`/pages/en/`, `/pages/fr/`) vs. extension-based (`file.en.md`) +- Maintain consistency with previous website structure +- Ensure long-term maintainability + +#### Locale Detection and Routing + +- `next.middleware.js`: Handles browser locale detection and redirects +- Falls back to `/en` for unsupported locales +- Provides seamless user experience across languages + +### Content Structure + +#### Layouts System + +```typescript +// Each page specifies its layout in frontmatter +--- +title: Page Title +layout: layout-name +--- + +// Layouts wrap content and provide structure +const Layout: FC<{ children: ReactNode }> = ({ children }) => ( + <div className="layout"> + <Header /> + <main>{children}</main> + <Footer /> + </div> +); +``` + +#### Content Processing Pipeline + +1. **Markdown files** → MDX compiler +2. **Rehype/Remark plugins** → Content transformation +3. **Shiki integration** → Syntax highlighting +4. **Layout system** → Page structure +5. **i18n integration** → Localized rendering + +### Rewrite and Redirect System + +#### `next.rewrites.mjs` + +Handles URL rewriting and redirects: + +```javascript +// Internal rewrites (same content, different URL) +{ source: '/old-path', destination: '/new-path' } + +// External redirects (different domain) +{ source: '/docs', destination: 'https://nodejs.org/docs' } + +// Locale template support +{ source: '/:locale/old-path', destination: '/:locale/new-path' } +``` + +#### `redirects.json` + +Configuration file supporting: + +- Internal and external redirects +- Locale templating with `/:locale` placeholder +- Simple template engine for dynamic paths + +## Configuration Files + +### `site.json` + +Website metadata configuration: + +- RSS feed definitions +- Social media information +- Build-time metadata +- Uses JSON format for easy collaboration + +### `next.locales.mjs` + +Locale configuration and management: + +- Supported locale definitions +- Locale-specific settings +- Page availability per locale + +## Development Environment + +### VSCode Configuration + +The `.vscode` directory provides: + +- **`extensions.json`**: Recommended extensions for optimal development +- **`settings.json`**: Consistent formatting and linting configuration + +Benefits: + +- Uniform developer experience +- Automatic code formatting and linting +- Tailwind CSS IntelliSense +- Works with GitHub Codespaces + +### Build and Deployment + +#### Multiple Build Targets + +- **`pnpm build`**: Production build for Vercel +- **`pnpm deploy`**: Export build for legacy servers +- **`pnpm dev`**: Development server + +#### Vercel Integration + +- Automatic deployments for branches (excluding `dependabot/*` and `gh/*`) +- Custom install script: `pnpm install --prod --frozen-lockfile` +- Dependency management: Build-time dependencies must be in `dependencies`, not `devDependencies` +- Sponsorship maintained by OpenJS Foundation + +### Package Management + +#### Multi-package Workspace + +- Individual packages published to npm registry +- Automated publishing via GitHub Actions +- Triggered after successful CI or manual workflow dispatch + +#### Publishing Process + +1. **Automatic**: After merging to main (via merge queue) +2. **Manual**: Workflow dispatch for specific packages +3. **Notifications**: Slack alerts for manual triggers + +## Performance Optimizations + +### Static Generation + +- Build-time page generation reduces server load +- Incremental Static Regeneration (ISR) for dynamic content +- Optimized asset handling and compression + +### Bundle Optimization + +- Code splitting at component and route levels +- Dynamic imports for large components +- Tree shaking for unused code elimination + +### Image Optimization + +- Next.js Image component for automatic optimization +- WebP conversion and responsive images +- Lazy loading for performance + +## Testing Infrastructure + +### Visual Regression Testing + +- Storybook integration with Chromatic +- Automated visual diff detection +- Component isolation and testing + +### End-to-End Testing + +- Playwright for full application testing +- Critical user journey validation +- Cross-browser compatibility testing diff --git a/TRANSLATION.md b/docs/translation.md similarity index 100% rename from TRANSLATION.md rename to docs/translation.md diff --git a/docs/writing-tests.md b/docs/writing-tests.md new file mode 100644 index 0000000000000..0313e9b0c0ea1 --- /dev/null +++ b/docs/writing-tests.md @@ -0,0 +1,177 @@ +# Writing Tests + +This guide covers testing practices for the Node.js website, including unit tests, end-to-end tests, and Storybook documentation. + +## Table of Contents + +- [Testing Philosophy](#testing-philosophy) +- [Unit Testing](#unit-testing) +- [End-to-End Testing](#end-to-end-testing) + - [E2E Test Guidelines](#e2e-test-guidelines) + - [E2E Test Structure](#e2e-test-structure) +- [Visual Testing](#visual-testing) +- [Visual Regression Testing](#visual-regression-testing) +- [Running Tests](#running-tests) + - [Local Development](#local-development) + - [Continuous Integration](#continuous-integration) + +## Testing Philosophy + +Each new feature or bug fix should be accompanied by appropriate tests to ensure code quality and prevent regressions. We use multiple testing approaches: + +- **Unit Tests**: Test individual functions, utilities, and components in isolation +- **End-to-End Tests**: Test complete user workflows and critical paths +- **Visual Tests**: Automated visual regression testing via Storybook and Chromatic + +## Unit Testing + +We use [`node:test`](https://nodejs.org/api/test.html) as our test runner and [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) for React component testing. + +```javascript +// components/MyComponent/__tests__/index.test.mjs +import assert from 'node:assert'; +import { describe, it } from 'node:test'; +import { render, screen } from '@testing-library/react'; +import MyComponent from '../index.js'; + +describe('MyComponent', () => { + it('renders with default props', () => { + render(<MyComponent title="Test Title" />); + + const heading = screen.getByRole('heading', { name: /test title/i }); + assert(isVisible(heading)); + }); +}); +``` + +## End-to-End Testing + +We use [Playwright](https://playwright.dev/) for end-to-end testing to ensure the entire application works correctly from a user's perspective. + +### E2E Test Guidelines + +- Tests are located in `apps/site/tests/e2e` +- Focus on user flows and critical application paths +- Write resilient tests that can handle minor UI changes +- Prioritize testing functionality over exact visual appearance +- Run tests against the built application to reflect production + +### E2E Test Structure + +```javascript +// apps/site/tests/e2e/navigation.test.js +import { test, expect } from '@playwright/test'; + +test.describe('Website Navigation', () => { + test('user can navigate to download page', async ({ page }) => { + await page.goto('/'); + + // Click the download link in navigation + await page.getByRole('link', { name: /download/i }).click(); + + // Verify we're on the download page + await expect(page).toHaveURL(/.*\/download/); + await expect( + page.getByRole('heading', { name: /download node\.js/i }) + ).toBeVisible(); + }); + + test('search functionality works correctly', async ({ page }) => { + await page.goto('/'); + + // Open search + await page.getByRole('button', { name: /search/i }).click(); + + // Type search query + await page.getByRole('searchbox').fill('getting started'); + + // Verify search results appear + await expect(page.getByText(/search results/i)).toBeVisible(); + }); +}); +``` + +## Visual Testing + +[Storybook](https://storybook.js.org/) serves as both documentation and visual testing for our React components. + +```tsx +// components/MyComponent/index.stories.tsx +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; +import MyComponent from '@node-core/ui-components/Common/MyComponent'; + +type Story = StoryObj<typeof MyComponent>; +type Meta = MetaObj<typeof MyComponent>; + +export const Default: Story = { + args: { + title: 'Default Title', + isVisible: true, + }, +}; + +export const Hidden: Story = { + args: { + title: 'Hidden Component', + isVisible: false, + }, +}; + +export const WithLongTitle: Story = { + args: { + title: 'This is a very long title that demonstrates text wrapping behavior', + isVisible: true, + }, +}; + +export default { + component: MyComponent, + title: 'Common/MyComponent', + argTypes: { + isVisible: { + control: 'boolean', + description: 'Controls component visibility', + }, + }, +} as Meta; +``` + +## Visual Regression Testing + +Visual regression testing is automatically handled by [Chromatic](https://www.chromatic.com/) integration with Storybook: + +- Runs automatically on pull requests +- Detects visual changes in components +- Provides approval workflow for intentional changes +- Ensures consistent visual appearance across updates + +## Running Tests + +### Local Development + +```bash +# Run all tests +pnpm test + +# Run only unit tests +pnpm test:unit + +# Run tests with CI formatting +pnpm test:ci + +# Start Storybook for visual testing +pnpm storybook + +# Build Storybook for deployment +pnpm storybook:build +``` + +### Continuous Integration + +Tests run automatically on: + +- Pull request creation and updates +- Pushes to main branch +- Manual workflow triggers + +CI checks must pass before pull requests can be merged. From a31b816467999760cc00eccc9bffe8671b03df33 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Mon, 9 Jun 2025 07:02:04 -0400 Subject: [PATCH 0546/1385] chore(meta): clean up root (#7852) --- .browserslistrc | 13 ------------- CODEOWNERS => .github/CODEOWNERS | 0 .pre-commit-config.yaml | 18 ------------------ 3 files changed, 31 deletions(-) delete mode 100644 .browserslistrc rename CODEOWNERS => .github/CODEOWNERS (100%) delete mode 100644 .pre-commit-config.yaml diff --git a/.browserslistrc b/.browserslistrc deleted file mode 100644 index a26ad8491dfa0..0000000000000 --- a/.browserslistrc +++ /dev/null @@ -1,13 +0,0 @@ -# https://github.com/browserslist/browserslist#readme - -defaults and supports es6-module -maintained node versions - -[production] - -cover 95% -not dead - -[development] - -defaults diff --git a/CODEOWNERS b/.github/CODEOWNERS similarity index 100% rename from CODEOWNERS rename to .github/CODEOWNERS diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 723e338d33061..0000000000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,18 +0,0 @@ -repos: -- repo: https://github.com/gitleaks/gitleaks - rev: v8.16.3 - hooks: - - id: gitleaks -- repo: https://github.com/jumanjihouse/pre-commit-hooks - rev: 3.0.0 - hooks: - - id: shellcheck -- repo: https://github.com/pre-commit/mirrors-eslint - rev: v8.38.0 - hooks: - - id: eslint -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 - hooks: - - id: end-of-file-fixer - - id: trailing-whitespace From 1d0e88b283ce0eb6a66b03fe4c779a3b9670b2ab Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Tue, 10 Jun 2025 00:47:10 +0200 Subject: [PATCH 0547/1385] Blog: v24.2.0 release post (#7855) Refs: https://github.com/nodejs/node/pull/58635 --- apps/site/pages/en/blog/release/v24.2.0.md | 291 +++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v24.2.0.md diff --git a/apps/site/pages/en/blog/release/v24.2.0.md b/apps/site/pages/en/blog/release/v24.2.0.md new file mode 100644 index 0000000000000..c0c640e9fdd87 --- /dev/null +++ b/apps/site/pages/en/blog/release/v24.2.0.md @@ -0,0 +1,291 @@ +--- +date: '2025-06-09T21:51:26.782Z' +category: release +title: Node v24.2.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-06-09, Version 24.2.0 (Current), @aduh95 + +### Notable Changes + +#### Remove support for HTTP/2 priority signaling + +The support for priority signaling has been removed in nghttp2, following its +deprecation in the [RFC 9113](https://datatracker.ietf.org/doc/html/rfc9113#section-5.3.1). +As a consequence of this, priority signaling is deprecated on all release lines of Node.js, +and removed from Node.js 24 so we can include latest updates from nghttp2. + +Contributed by Matteo Collina and Antoine du Hamel in +[#58293](https://github.com/nodejs/node/pull/58293). + +#### `import.meta.main` is now available + +Boolean value available in ECMAScript modules, which can be used to detect +whether the current module was the entry point of the current process. + +```mjs +export function foo() { + return 'Hello, world'; +} + +function main() { + const message = foo(); + console.log(message); +} + +if (import.meta.main) main(); +// `foo` can be imported from another module without possible side-effects from `main` +``` + +Contributed by Joe and Antoine du Hamel in +[#57804](https://github.com/nodejs/node/pull/57804). + +#### Other Notable Changes + +- \[[`e13930bbe0`](https://github.com/nodejs/node/commit/e13930bbe0)] - **doc**: add Filip Skokan to TSC (Rafael Gonzaga) [#58499](https://github.com/nodejs/node/pull/58499) +- \[[`984894b38c`](https://github.com/nodejs/node/commit/984894b38c)] - **doc**: deprecate `util.isNativeError` in favor of `Error.isError` (Miguel Marcondes Filho) [#58262](https://github.com/nodejs/node/pull/58262) +- \[[`d261274b0f`](https://github.com/nodejs/node/commit/d261274b0f)] - **doc**: deprecate passing an empty string to `options.shell` (Antoine du Hamel) [#58564](https://github.com/nodejs/node/pull/58564) +- \[[`510872a522`](https://github.com/nodejs/node/commit/510872a522)] - **(SEMVER-MINOR)** **doc**: graduate `Symbol.dispose`/`asyncDispose` from experimental (James M Snell) [#58467](https://github.com/nodejs/node/pull/58467) +- \[[`6f4c9dd423`](https://github.com/nodejs/node/commit/6f4c9dd423)] - **(SEMVER-MINOR)** **fs**: add `autoClose` option to `FileHandle` readableWebStream (James M Snell) [#58548](https://github.com/nodejs/node/pull/58548) +- \[[`32efb63242`](https://github.com/nodejs/node/commit/32efb63242)] - **http**: deprecate instantiating classes without new (Yagiz Nizipli) [#58518](https://github.com/nodejs/node/pull/58518) +- \[[`0234a8ef53`](https://github.com/nodejs/node/commit/0234a8ef53)] - **(SEMVER-MINOR)** **http2**: add diagnostics channel `http2.server.stream.finish` (Darshan Sen) [#58560](https://github.com/nodejs/node/pull/58560) +- \[[`0f1e94f731`](https://github.com/nodejs/node/commit/0f1e94f731)] - **(SEMVER-MINOR)** **lib**: graduate error codes that have been around for years (James M Snell) [#58541](https://github.com/nodejs/node/pull/58541) +- \[[`13abca3c26`](https://github.com/nodejs/node/commit/13abca3c26)] - **(SEMVER-MINOR)** **perf_hooks**: make event loop delay histogram disposable (James M Snell) [#58384](https://github.com/nodejs/node/pull/58384) +- \[[`8ea1fc5f3b`](https://github.com/nodejs/node/commit/8ea1fc5f3b)] - **(SEMVER-MINOR)** **src**: support namespace options in configuration file (Pietro Marchini) [#58073](https://github.com/nodejs/node/pull/58073) +- \[[`d6ea36ad6c`](https://github.com/nodejs/node/commit/d6ea36ad6c)] - **src,permission**: implicit allow-fs-read to app entrypoint (Rafael Gonzaga) [#58579](https://github.com/nodejs/node/pull/58579) +- \[[`5936cef60a`](https://github.com/nodejs/node/commit/5936cef60a)] - **(SEMVER-MINOR)** **test**: add disposable histogram test (James M Snell) [#58384](https://github.com/nodejs/node/pull/58384) +- \[[`7a91f4aaa1`](https://github.com/nodejs/node/commit/7a91f4aaa1)] - **(SEMVER-MINOR)** **test**: add test for async disposable worker thread (James M Snell) [#58385](https://github.com/nodejs/node/pull/58385) +- \[[`532c173cf2`](https://github.com/nodejs/node/commit/532c173cf2)] - **(SEMVER-MINOR)** **util**: add `none` style to styleText (James M Snell) [#58437](https://github.com/nodejs/node/pull/58437) +- \[[`aeb9ab4c4c`](https://github.com/nodejs/node/commit/aeb9ab4c4c)] - **(SEMVER-MINOR)** **worker**: make Worker async disposable (James M Snell) [#58385](https://github.com/nodejs/node/pull/58385) + +### Commits + +- \[[`6c92329b1b`](https://github.com/nodejs/node/commit/6c92329b1b)] - _**Revert**_ "**benchmark**: fix broken fs.cpSync benchmark" (Yuesong Jake Li) [#58476](https://github.com/nodejs/node/pull/58476) +- \[[`8bc045264e`](https://github.com/nodejs/node/commit/8bc045264e)] - **benchmark**: fix broken fs.cpSync benchmark (Dario Piotrowicz) [#58472](https://github.com/nodejs/node/pull/58472) +- \[[`46aa079cce`](https://github.com/nodejs/node/commit/46aa079cce)] - **benchmark**: add callback-based `fs.glob` to glob benchmark (Livia Medeiros) [#58417](https://github.com/nodejs/node/pull/58417) +- \[[`a57b05e105`](https://github.com/nodejs/node/commit/a57b05e105)] - **benchmark**: add more options to cp-sync (Sonny) [#58278](https://github.com/nodejs/node/pull/58278) +- \[[`8b5ada4b31`](https://github.com/nodejs/node/commit/8b5ada4b31)] - **buffer**: use Utf8LengthV2() instead of Utf8Length() (Tobias Nießen) [#58156](https://github.com/nodejs/node/pull/58156) +- \[[`22e97362f3`](https://github.com/nodejs/node/commit/22e97362f3)] - **build**: search for libnode.so in multiple places (Jan Staněk) [#58213](https://github.com/nodejs/node/pull/58213) +- \[[`0b4056c573`](https://github.com/nodejs/node/commit/0b4056c573)] - **build**: add support for OpenHarmony operating system (hqzing) [#58350](https://github.com/nodejs/node/pull/58350) +- \[[`db7f413dd3`](https://github.com/nodejs/node/commit/db7f413dd3)] - **build**: fix pointer compression builds (Joyee Cheung) [#58171](https://github.com/nodejs/node/pull/58171) +- \[[`7ff37183e5`](https://github.com/nodejs/node/commit/7ff37183e5)] - **build**: fix defaults for shared llhttp (Antoine du Hamel) [#58269](https://github.com/nodejs/node/pull/58269) +- \[[`b8c33190fe`](https://github.com/nodejs/node/commit/b8c33190fe)] - **build,win**: fix dll build (Stefan Stojanovic) [#58357](https://github.com/nodejs/node/pull/58357) +- \[[`ef9ecbe8a6`](https://github.com/nodejs/node/commit/ef9ecbe8a6)] - **child_process**: give names to `ChildProcess` functions (Livia Medeiros) [#58370](https://github.com/nodejs/node/pull/58370) +- \[[`cec9d9d016`](https://github.com/nodejs/node/commit/cec9d9d016)] - **crypto**: forward auth tag to OpenSSL immediately (Tobias Nießen) [#58547](https://github.com/nodejs/node/pull/58547) +- \[[`9fccb0609f`](https://github.com/nodejs/node/commit/9fccb0609f)] - **crypto**: expose crypto.constants.OPENSSL_IS_BORINGSSL (Shelley Vohr) [#58387](https://github.com/nodejs/node/pull/58387) +- \[[`e7c69b9345`](https://github.com/nodejs/node/commit/e7c69b9345)] - **deps**: update nghttp2 to 1.65.0 (Node.js GitHub Bot) [#57269](https://github.com/nodejs/node/pull/57269) +- \[[`d0b89598a3`](https://github.com/nodejs/node/commit/d0b89598a3)] - **deps**: use proper C standard when building libuv (Yaksh Bariya) [#58587](https://github.com/nodejs/node/pull/58587) +- \[[`8a1fe7bc6a`](https://github.com/nodejs/node/commit/8a1fe7bc6a)] - **deps**: update simdjson to 3.12.3 (Node.js GitHub Bot) [#57682](https://github.com/nodejs/node/pull/57682) +- \[[`36b639b1eb`](https://github.com/nodejs/node/commit/36b639b1eb)] - **deps**: update googletest to e9092b1 (Node.js GitHub Bot) [#58565](https://github.com/nodejs/node/pull/58565) +- \[[`f8a2a1ef52`](https://github.com/nodejs/node/commit/f8a2a1ef52)] - **deps**: update corepack to 0.33.0 (Node.js GitHub Bot) [#58566](https://github.com/nodejs/node/pull/58566) +- \[[`efb28f7895`](https://github.com/nodejs/node/commit/efb28f7895)] - **deps**: V8: cherry-pick 249de887a8d3 (Michaël Zasso) [#58561](https://github.com/nodejs/node/pull/58561) +- \[[`88e621ea97`](https://github.com/nodejs/node/commit/88e621ea97)] - **deps**: update sqlite to 3.50.0 (Node.js GitHub Bot) [#58272](https://github.com/nodejs/node/pull/58272) +- \[[`8d2ba386f1`](https://github.com/nodejs/node/commit/8d2ba386f1)] - **deps**: update OpenSSL gen container to Ubuntu 22.04 (Michaël Zasso) [#58432](https://github.com/nodejs/node/pull/58432) +- \[[`7e62a77a7f`](https://github.com/nodejs/node/commit/7e62a77a7f)] - **deps**: update undici to 7.10.0 (Node.js GitHub Bot) [#58445](https://github.com/nodejs/node/pull/58445) +- \[[`87eebd7bad`](https://github.com/nodejs/node/commit/87eebd7bad)] - **deps**: keep required OpenSSL doc files (Michaël Zasso) [#58431](https://github.com/nodejs/node/pull/58431) +- \[[`10910660f6`](https://github.com/nodejs/node/commit/10910660f6)] - **deps**: update undici to 7.9.0 (Node.js GitHub Bot) [#58268](https://github.com/nodejs/node/pull/58268) +- \[[`5e27078ca2`](https://github.com/nodejs/node/commit/5e27078ca2)] - **deps**: update ada to 3.2.4 (Node.js GitHub Bot) [#58152](https://github.com/nodejs/node/pull/58152) +- \[[`3b1e4bdbbb`](https://github.com/nodejs/node/commit/3b1e4bdbbb)] - **deps**: update libuv to 1.51.0 (Node.js GitHub Bot) [#58124](https://github.com/nodejs/node/pull/58124) +- \[[`6bddf587ae`](https://github.com/nodejs/node/commit/6bddf587ae)] - **dns**: fix dns query cache implementation (Ethan Arrowood) [#58404](https://github.com/nodejs/node/pull/58404) +- \[[`984894b38c`](https://github.com/nodejs/node/commit/984894b38c)] - **doc**: deprecate utilisNativeError in favor of ErrorisError (Miguel Marcondes Filho) [#58262](https://github.com/nodejs/node/pull/58262) +- \[[`377ef3ce3a`](https://github.com/nodejs/node/commit/377ef3ce3a)] - **doc**: add support link for panva (Filip Skokan) [#58591](https://github.com/nodejs/node/pull/58591) +- \[[`33a69ff9e4`](https://github.com/nodejs/node/commit/33a69ff9e4)] - **doc**: update metadata for \_transformState deprecation (James M Snell) [#58530](https://github.com/nodejs/node/pull/58530) +- \[[`d261274b0f`](https://github.com/nodejs/node/commit/d261274b0f)] - **doc**: deprecate passing an empty string to `options.shell` (Antoine du Hamel) [#58564](https://github.com/nodejs/node/pull/58564) +- \[[`447ca11010`](https://github.com/nodejs/node/commit/447ca11010)] - **doc**: correct formatting of example definitions for `--test-shard` (Jacob Smith) [#58571](https://github.com/nodejs/node/pull/58571) +- \[[`2f555e0e19`](https://github.com/nodejs/node/commit/2f555e0e19)] - **doc**: clarify DEP0194 scope (Antoine du Hamel) [#58504](https://github.com/nodejs/node/pull/58504) +- \[[`af0446edcb`](https://github.com/nodejs/node/commit/af0446edcb)] - **doc**: deprecate HTTP/2 priority signaling (Matteo Collina) [#58313](https://github.com/nodejs/node/pull/58313) +- \[[`80cc17f1ec`](https://github.com/nodejs/node/commit/80cc17f1ec)] - **doc**: explain child_process code and signal null values everywhere (Darshan Sen) [#58479](https://github.com/nodejs/node/pull/58479) +- \[[`e13930bbe0`](https://github.com/nodejs/node/commit/e13930bbe0)] - **doc**: add Filip Skokan to TSC (Rafael Gonzaga) [#58499](https://github.com/nodejs/node/pull/58499) +- \[[`5f3f045ecc`](https://github.com/nodejs/node/commit/5f3f045ecc)] - **doc**: update `git node release` example (Antoine du Hamel) [#58475](https://github.com/nodejs/node/pull/58475) +- \[[`4bbd026cde`](https://github.com/nodejs/node/commit/4bbd026cde)] - **doc**: add missing options.info for ZstdOptions (Jimmy Leung) [#58360](https://github.com/nodejs/node/pull/58360) +- \[[`a6d0d2a0d7`](https://github.com/nodejs/node/commit/a6d0d2a0d7)] - **doc**: add missing options.info for BrotliOptions (Jimmy Leung) [#58359](https://github.com/nodejs/node/pull/58359) +- \[[`510872a522`](https://github.com/nodejs/node/commit/510872a522)] - **(SEMVER-MINOR)** **doc**: graduate Symbol.dispose/asyncDispose from experimental (James M Snell) [#58467](https://github.com/nodejs/node/pull/58467) +- \[[`08685256cd`](https://github.com/nodejs/node/commit/08685256cd)] - **doc**: clarify x509.checkIssued only checks metadata (Filip Skokan) [#58457](https://github.com/nodejs/node/pull/58457) +- \[[`095794fc24`](https://github.com/nodejs/node/commit/095794fc24)] - **doc**: add links to parent class for `node:zlib` classes (Antoine du Hamel) [#58433](https://github.com/nodejs/node/pull/58433) +- \[[`7acac70bce`](https://github.com/nodejs/node/commit/7acac70bce)] - **doc**: remove remaining uses of `@@wellknown` syntax (René) [#58413](https://github.com/nodejs/node/pull/58413) +- \[[`62056d40c7`](https://github.com/nodejs/node/commit/62056d40c7)] - **doc**: clarify behavior of --watch-path and --watch flags (Juan Ignacio Benito) [#58136](https://github.com/nodejs/node/pull/58136) +- \[[`e6e6ae887d`](https://github.com/nodejs/node/commit/e6e6ae887d)] - **doc**: fix the order of `process.md` sections (Allon Murienik) [#58403](https://github.com/nodejs/node/pull/58403) +- \[[`d2f6c82c0f`](https://github.com/nodejs/node/commit/d2f6c82c0f)] - **doc,lib**: update source map links to ECMA426 (Chengzhong Wu) [#58597](https://github.com/nodejs/node/pull/58597) +- \[[`a994d3d51a`](https://github.com/nodejs/node/commit/a994d3d51a)] - **doc,src,test**: fix typos (Noritaka Kobayashi) [#58477](https://github.com/nodejs/node/pull/58477) +- \[[`252acc1e89`](https://github.com/nodejs/node/commit/252acc1e89)] - **errors**: show url of unsupported attributes in the error message (Aditi) [#58303](https://github.com/nodejs/node/pull/58303) +- \[[`767e88cbc3`](https://github.com/nodejs/node/commit/767e88cbc3)] - **esm**: unwrap WebAssembly.Global on Wasm Namespaces (Guy Bedford) [#57525](https://github.com/nodejs/node/pull/57525) +- \[[`adef9af3ae`](https://github.com/nodejs/node/commit/adef9af3ae)] - **(SEMVER-MINOR)** **esm**: implement import.meta.main (Joe) [#57804](https://github.com/nodejs/node/pull/57804) +- \[[`308f4cac4b`](https://github.com/nodejs/node/commit/308f4cac4b)] - **esm**: add support for dynamic source phase hook (Guy Bedford) [#58147](https://github.com/nodejs/node/pull/58147) +- \[[`fcef56cb05`](https://github.com/nodejs/node/commit/fcef56cb05)] - **fs**: improve cpSync no-filter copyDir performance (Dario Piotrowicz) [#58461](https://github.com/nodejs/node/pull/58461) +- \[[`996fdb05ab`](https://github.com/nodejs/node/commit/996fdb05ab)] - **fs**: fix cp handle existing symlinks (Yuesong Jake Li) [#58476](https://github.com/nodejs/node/pull/58476) +- \[[`d2931e50e3`](https://github.com/nodejs/node/commit/d2931e50e3)] - **fs**: fix cpSync handle existing symlinks (Yuesong Jake Li) [#58476](https://github.com/nodejs/node/pull/58476) +- \[[`6f4c9dd423`](https://github.com/nodejs/node/commit/6f4c9dd423)] - **(SEMVER-MINOR)** **fs**: add autoClose option to FileHandle readableWebStream (James M Snell) [#58548](https://github.com/nodejs/node/pull/58548) +- \[[`8870bb8677`](https://github.com/nodejs/node/commit/8870bb8677)] - **fs**: improve `cpSync` dest overriding performance (Dario Piotrowicz) [#58160](https://github.com/nodejs/node/pull/58160) +- \[[`f2e2301559`](https://github.com/nodejs/node/commit/f2e2301559)] - **fs**: unexpose internal constants (Chengzhong Wu) [#58327](https://github.com/nodejs/node/pull/58327) +- \[[`32efb63242`](https://github.com/nodejs/node/commit/32efb63242)] - **http**: deprecate instantiating classes without new (Yagiz Nizipli) [#58518](https://github.com/nodejs/node/pull/58518) +- \[[`0b987e5741`](https://github.com/nodejs/node/commit/0b987e5741)] - **(SEMVER-MAJOR)** **http2**: remove support for priority signaling (Matteo Collina) [#58293](https://github.com/nodejs/node/pull/58293) +- \[[`44ca874b2c`](https://github.com/nodejs/node/commit/44ca874b2c)] - **http2**: add lenient flag for RFC-9113 (Carlos Fuentes) [#58116](https://github.com/nodejs/node/pull/58116) +- \[[`0234a8ef53`](https://github.com/nodejs/node/commit/0234a8ef53)] - **(SEMVER-MINOR)** **http2**: add diagnostics channel 'http2.server.stream.finish' (Darshan Sen) [#58560](https://github.com/nodejs/node/pull/58560) +- \[[`2b868e8aa7`](https://github.com/nodejs/node/commit/2b868e8aa7)] - **http2**: add diagnostics channel 'http2.server.stream.error' (Darshan Sen) [#58512](https://github.com/nodejs/node/pull/58512) +- \[[`b4df8d38cd`](https://github.com/nodejs/node/commit/b4df8d38cd)] - **http2**: add diagnostics channel 'http2.server.stream.start' (Darshan Sen) [#58449](https://github.com/nodejs/node/pull/58449) +- \[[`d86ff608bb`](https://github.com/nodejs/node/commit/d86ff608bb)] - **http2**: remove no longer userful options.selectPadding (Jimmy Leung) [#58373](https://github.com/nodejs/node/pull/58373) +- \[[`13dbbdc8a8`](https://github.com/nodejs/node/commit/13dbbdc8a8)] - **http2**: add diagnostics channel 'http2.server.stream.created' (Darshan Sen) [#58390](https://github.com/nodejs/node/pull/58390) +- \[[`08855464ec`](https://github.com/nodejs/node/commit/08855464ec)] - **http2**: add diagnostics channel 'http2.client.stream.close' (Darshan Sen) [#58329](https://github.com/nodejs/node/pull/58329) +- \[[`566fc567b8`](https://github.com/nodejs/node/commit/566fc567b8)] - **http2**: add diagnostics channel 'http2.client.stream.finish' (Darshan Sen) [#58317](https://github.com/nodejs/node/pull/58317) +- \[[`f30b9117d4`](https://github.com/nodejs/node/commit/f30b9117d4)] - **http2**: add diagnostics channel 'http2.client.stream.error' (Darshan Sen) [#58306](https://github.com/nodejs/node/pull/58306) +- \[[`79b852a692`](https://github.com/nodejs/node/commit/79b852a692)] - **inspector**: add mimeType and charset support to Network.Response (Shima Ryuhei) [#58192](https://github.com/nodejs/node/pull/58192) +- \[[`402ac8b1d8`](https://github.com/nodejs/node/commit/402ac8b1d8)] - **inspector**: add protocol method Network.dataReceived (Chengzhong Wu) [#58001](https://github.com/nodejs/node/pull/58001) +- \[[`29f34a7f86`](https://github.com/nodejs/node/commit/29f34a7f86)] - **lib**: disable REPL completion on proxies and getters (Dario Piotrowicz) [#57909](https://github.com/nodejs/node/pull/57909) +- \[[`0f1e94f731`](https://github.com/nodejs/node/commit/0f1e94f731)] - **(SEMVER-MINOR)** **lib**: graduate error codes that have been around for years (James M Snell) [#58541](https://github.com/nodejs/node/pull/58541) +- \[[`cc1aacabb0`](https://github.com/nodejs/node/commit/cc1aacabb0)] - **lib**: make ERM functions into wrappers returning undefined (Livia Medeiros) [#58400](https://github.com/nodejs/node/pull/58400) +- \[[`8df4dee38c`](https://github.com/nodejs/node/commit/8df4dee38c)] - **lib**: remove no-mixed-operators eslint rule (Ruben Bridgewater) [#58375](https://github.com/nodejs/node/pull/58375) +- \[[`104d173f58`](https://github.com/nodejs/node/commit/104d173f58)] - **meta**: bump github/codeql-action from 3.28.16 to 3.28.18 (dependabot\[bot]) [#58552](https://github.com/nodejs/node/pull/58552) +- \[[`b454e8386c`](https://github.com/nodejs/node/commit/b454e8386c)] - **meta**: bump codecov/codecov-action from 5.4.2 to 5.4.3 (dependabot\[bot]) [#58551](https://github.com/nodejs/node/pull/58551) +- \[[`f31e014b81`](https://github.com/nodejs/node/commit/f31e014b81)] - **meta**: bump step-security/harden-runner from 2.11.0 to 2.12.0 (dependabot\[bot]) [#58109](https://github.com/nodejs/node/pull/58109) +- \[[`4da920cc13`](https://github.com/nodejs/node/commit/4da920cc13)] - **meta**: bump ossf/scorecard-action from 2.4.1 to 2.4.2 (dependabot\[bot]) [#58550](https://github.com/nodejs/node/pull/58550) +- \[[`eb9bb95fe2`](https://github.com/nodejs/node/commit/eb9bb95fe2)] - **meta**: bump rtCamp/action-slack-notify from 2.3.2 to 2.3.3 (dependabot\[bot]) [#58108](https://github.com/nodejs/node/pull/58108) +- \[[`27ada1f18c`](https://github.com/nodejs/node/commit/27ada1f18c)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#58456](https://github.com/nodejs/node/pull/58456) +- \[[`4606a6792b`](https://github.com/nodejs/node/commit/4606a6792b)] - **meta**: bump github/codeql-action from 3.28.11 to 3.28.16 (dependabot\[bot]) [#58112](https://github.com/nodejs/node/pull/58112) +- \[[`7dfe448b7f`](https://github.com/nodejs/node/commit/7dfe448b7f)] - **meta**: bump codecov/codecov-action from 5.4.0 to 5.4.2 (dependabot\[bot]) [#58110](https://github.com/nodejs/node/pull/58110) +- \[[`18bb5f7e7e`](https://github.com/nodejs/node/commit/18bb5f7e7e)] - **meta**: bump actions/download-artifact from 4.2.1 to 4.3.0 (dependabot\[bot]) [#58106](https://github.com/nodejs/node/pull/58106) +- \[[`72f2a22889`](https://github.com/nodejs/node/commit/72f2a22889)] - **module**: clarify cjs global-like error on ModuleJobSync (Carlos Espa) [#56491](https://github.com/nodejs/node/pull/56491) +- \[[`b0e0b1afae`](https://github.com/nodejs/node/commit/b0e0b1afae)] - **net**: always publish to 'net.client.socket' diagnostics channel (Darshan Sen) [#58349](https://github.com/nodejs/node/pull/58349) +- \[[`f373d6a540`](https://github.com/nodejs/node/commit/f373d6a540)] - **node-api**: use WriteOneByteV2 in napi_get_value_string_latin1 (Chengzhong Wu) [#58325](https://github.com/nodejs/node/pull/58325) +- \[[`429c38db1b`](https://github.com/nodejs/node/commit/429c38db1b)] - **node-api**: use WriteV2 in napi_get_value_string_utf16 (Tobias Nießen) [#58165](https://github.com/nodejs/node/pull/58165) +- \[[`b882148999`](https://github.com/nodejs/node/commit/b882148999)] - **path**: improve path.resolve() performance when used as process.cwd() (Ruben Bridgewater) [#58362](https://github.com/nodejs/node/pull/58362) +- \[[`13abca3c26`](https://github.com/nodejs/node/commit/13abca3c26)] - **(SEMVER-MINOR)** **perf_hooks**: make event loop delay histogram disposable (James M Snell) [#58384](https://github.com/nodejs/node/pull/58384) +- \[[`1cd417d823`](https://github.com/nodejs/node/commit/1cd417d823)] - **permission**: remove useless conditional (Juan José) [#58514](https://github.com/nodejs/node/pull/58514) +- \[[`462c4b0c24`](https://github.com/nodejs/node/commit/462c4b0c24)] - **readline**: add stricter validation for functions called after closed (Dario Piotrowicz) [#58283](https://github.com/nodejs/node/pull/58283) +- \[[`e3e36f902c`](https://github.com/nodejs/node/commit/e3e36f902c)] - **repl**: extract and standardize history from both repl and interface (Giovanni Bucci) [#58225](https://github.com/nodejs/node/pull/58225) +- \[[`cbb2a0172f`](https://github.com/nodejs/node/commit/cbb2a0172f)] - **report**: use uv_getrusage_thread in report (theanarkh) [#58405](https://github.com/nodejs/node/pull/58405) +- \[[`3a6bd9c4c4`](https://github.com/nodejs/node/commit/3a6bd9c4c4)] - **sqlite**: handle thrown errors in result callback (Colin Ihrig) [#58426](https://github.com/nodejs/node/pull/58426) +- \[[`0d761bbccd`](https://github.com/nodejs/node/commit/0d761bbccd)] - **src**: env_vars caching and local variable scope optimization (Mert Can Altin) [#57624](https://github.com/nodejs/node/pull/57624) +- \[[`8ea1fc5f3b`](https://github.com/nodejs/node/commit/8ea1fc5f3b)] - **(SEMVER-MINOR)** **src**: support namespace options in configuration file (Pietro Marchini) [#58073](https://github.com/nodejs/node/pull/58073) +- \[[`f72ce2ef75`](https://github.com/nodejs/node/commit/f72ce2ef75)] - **src**: remove fast API for InternalModuleStat (Joyee Cheung) [#58489](https://github.com/nodejs/node/pull/58489) +- \[[`8a1eaea151`](https://github.com/nodejs/node/commit/8a1eaea151)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#58500](https://github.com/nodejs/node/pull/58500) +- \[[`d99d657842`](https://github.com/nodejs/node/commit/d99d657842)] - **src**: fix FIPS init error handling (Tobias Nießen) [#58379](https://github.com/nodejs/node/pull/58379) +- \[[`11e4cd698b`](https://github.com/nodejs/node/commit/11e4cd698b)] - **src**: fix possible dereference of null pointer (Eusgor) [#58459](https://github.com/nodejs/node/pull/58459) +- \[[`ca0f5a0188`](https://github.com/nodejs/node/commit/ca0f5a0188)] - **src**: add env->cppgc_allocation_handle() convenience method (James M Snell) [#58483](https://github.com/nodejs/node/pull/58483) +- \[[`440d4f42bd`](https://github.com/nodejs/node/commit/440d4f42bd)] - **src**: fix -Wreturn-stack-address error (Shelley Vohr) [#58439](https://github.com/nodejs/node/pull/58439) +- \[[`08615b1020`](https://github.com/nodejs/node/commit/08615b1020)] - **src**: prepare for v8 sandboxing (James M Snell) [#58376](https://github.com/nodejs/node/pull/58376) +- \[[`63f643e844`](https://github.com/nodejs/node/commit/63f643e844)] - **src**: reorganize ContextifyFunction methods (Chengzhong Wu) [#58434](https://github.com/nodejs/node/pull/58434) +- \[[`3b6895a506`](https://github.com/nodejs/node/commit/3b6895a506)] - **src**: improve CompileFunctionAndCacheResult error handling (Chengzhong Wu) [#58434](https://github.com/nodejs/node/pull/58434) +- \[[`7f1c95aee8`](https://github.com/nodejs/node/commit/7f1c95aee8)] - **src**: make a number of minor improvements to buffer (James M Snell) [#58377](https://github.com/nodejs/node/pull/58377) +- \[[`ce081bcb9a`](https://github.com/nodejs/node/commit/ce081bcb9a)] - **src**: fix build when using shared simdutf (Antoine du Hamel) [#58407](https://github.com/nodejs/node/pull/58407) +- \[[`a35cc216e5`](https://github.com/nodejs/node/commit/a35cc216e5)] - **src**: track cppgc wrappers with a list in Realm (Joyee Cheung) [#56534](https://github.com/nodejs/node/pull/56534) +- \[[`947c1c2cd5`](https://github.com/nodejs/node/commit/947c1c2cd5)] - **src,lib**: obtain sourceURL in magic comments from V8 (Chengzhong Wu) [#58389](https://github.com/nodejs/node/pull/58389) +- \[[`d6ea36ad6c`](https://github.com/nodejs/node/commit/d6ea36ad6c)] - **src,permission**: implicit allow-fs-read to app entrypoint (Rafael Gonzaga) [#58579](https://github.com/nodejs/node/pull/58579) +- \[[`e8a07f2198`](https://github.com/nodejs/node/commit/e8a07f2198)] - **stream**: making DecompressionStream spec compilent for trailing junk (0hm☘️) [#58316](https://github.com/nodejs/node/pull/58316) +- \[[`3caa2f71c1`](https://github.com/nodejs/node/commit/3caa2f71c1)] - **stream**: test explicit resource management implicitly (LiviaMedeiros) [#58296](https://github.com/nodejs/node/pull/58296) +- \[[`9ccdf4fdb4`](https://github.com/nodejs/node/commit/9ccdf4fdb4)] - **test**: improve flakiness detection on stack corruption tests (Darshan Sen) [#58601](https://github.com/nodejs/node/pull/58601) +- \[[`d3fea003df`](https://github.com/nodejs/node/commit/d3fea003df)] - **test**: mark timeouts & flaky test as flaky on IBM i (Abdirahim Musse) [#58583](https://github.com/nodejs/node/pull/58583) +- \[[`8347ef6b53`](https://github.com/nodejs/node/commit/8347ef6b53)] - **test**: dispose of filehandles in filehandle.read tests (Livia Medeiros) [#58543](https://github.com/nodejs/node/pull/58543) +- \[[`34e86f91aa`](https://github.com/nodejs/node/commit/34e86f91aa)] - **test**: rewrite test-child-process-spawn-args (Michaël Zasso) [#58546](https://github.com/nodejs/node/pull/58546) +- \[[`d7a2458a58`](https://github.com/nodejs/node/commit/d7a2458a58)] - **test**: make sqlite-database-sync tests work with system sqlite (Jelle Licht) [#58507](https://github.com/nodejs/node/pull/58507) +- \[[`4d9d6830e0`](https://github.com/nodejs/node/commit/4d9d6830e0)] - **test**: force slow JSON.stringify path for overflow (Shelley Vohr) [#58181](https://github.com/nodejs/node/pull/58181) +- \[[`bef67e45e3`](https://github.com/nodejs/node/commit/bef67e45e3)] - **test**: account for truthy signal in flaky async_hooks tests (Darshan Sen) [#58478](https://github.com/nodejs/node/pull/58478) +- \[[`007c82f206`](https://github.com/nodejs/node/commit/007c82f206)] - **test**: mark `test-http2-debug` as flaky on LinuxONE (Richard Lau) [#58494](https://github.com/nodejs/node/pull/58494) +- \[[`21f6400098`](https://github.com/nodejs/node/commit/21f6400098)] - **test**: update WPT for WebCryptoAPI to 591c95ce61 (Node.js GitHub Bot) [#58176](https://github.com/nodejs/node/pull/58176) +- \[[`1deb5f06a5`](https://github.com/nodejs/node/commit/1deb5f06a5)] - **test**: remove --no-warnings flag (Tobias Nießen) [#58424](https://github.com/nodejs/node/pull/58424) +- \[[`beba631a10`](https://github.com/nodejs/node/commit/beba631a10)] - **test**: add tests ensuring worker threads cannot access internals (Joe) [#58332](https://github.com/nodejs/node/pull/58332) +- \[[`5936cef60a`](https://github.com/nodejs/node/commit/5936cef60a)] - **(SEMVER-MINOR)** **test**: add disposable histogram test (James M Snell) [#58384](https://github.com/nodejs/node/pull/58384) +- \[[`7a91f4aaa1`](https://github.com/nodejs/node/commit/7a91f4aaa1)] - **(SEMVER-MINOR)** **test**: add test for async disposable worker thread (James M Snell) [#58385](https://github.com/nodejs/node/pull/58385) +- \[[`5fc4706280`](https://github.com/nodejs/node/commit/5fc4706280)] - **test**: leverage process.features.openssl_is_boringssl in test (Shelley Vohr) [#58421](https://github.com/nodejs/node/pull/58421) +- \[[`4629b18397`](https://github.com/nodejs/node/commit/4629b18397)] - **test**: fix test-buffer-tostring-range on allocation failure (Joyee Cheung) [#58416](https://github.com/nodejs/node/pull/58416) +- \[[`4c445a8c85`](https://github.com/nodejs/node/commit/4c445a8c85)] - **test**: skip in test-buffer-tostring-rangeerror on allocation failure (Joyee Cheung) [#58415](https://github.com/nodejs/node/pull/58415) +- \[[`53cb29898b`](https://github.com/nodejs/node/commit/53cb29898b)] - **test**: fix missing edge case in test-blob-slice-with-large-size (Joyee Cheung) [#58414](https://github.com/nodejs/node/pull/58414) +- \[[`89fdfdedc1`](https://github.com/nodejs/node/commit/89fdfdedc1)] - **test**: make crypto tests work with BoringSSL (Shelley Vohr) [#58117](https://github.com/nodejs/node/pull/58117) +- \[[`3b5d0e62b1`](https://github.com/nodejs/node/commit/3b5d0e62b1)] - **test**: test reordering of setAAD and setAuthTag (Tobias Nießen) [#58396](https://github.com/nodejs/node/pull/58396) +- \[[`029440bec5`](https://github.com/nodejs/node/commit/029440bec5)] - **test**: switch from deprecated `optparse` to `argparse` (Aviv Keller) [#58224](https://github.com/nodejs/node/pull/58224) +- \[[`d05263edcc`](https://github.com/nodejs/node/commit/d05263edcc)] - **test**: do not skip OCB decryption in FIPS mode (Tobias Nießen) [#58382](https://github.com/nodejs/node/pull/58382) +- \[[`23474cb257`](https://github.com/nodejs/node/commit/23474cb257)] - **test**: show more information in test-http2-debug upon failure (Joyee Cheung) [#58391](https://github.com/nodejs/node/pull/58391) +- \[[`d0302e7b3d`](https://github.com/nodejs/node/commit/d0302e7b3d)] - **test**: remove loop over single element (Tobias Nießen) [#58368](https://github.com/nodejs/node/pull/58368) +- \[[`33f615897d`](https://github.com/nodejs/node/commit/33f615897d)] - **test**: add chacha20-poly1305 to auth tag order test (Tobias Nießen) [#58367](https://github.com/nodejs/node/pull/58367) +- \[[`8f09a1f502`](https://github.com/nodejs/node/commit/8f09a1f502)] - **test**: skip wasm-allocation tests for pointer compression builds (Joyee Cheung) [#58171](https://github.com/nodejs/node/pull/58171) +- \[[`4ae6a1a5ed`](https://github.com/nodejs/node/commit/4ae6a1a5ed)] - **test**: remove references to create(De|C)ipher (Tobias Nießen) [#58363](https://github.com/nodejs/node/pull/58363) +- \[[`4d647271b2`](https://github.com/nodejs/node/commit/4d647271b2)] - **test_runner**: emit event when file changes in watch mode (Jacopo Martinelli) [#57903](https://github.com/nodejs/node/pull/57903) +- \[[`1eda87c365`](https://github.com/nodejs/node/commit/1eda87c365)] - **test_runner**: add level parameter to reporter.diagnostic (Jacopo Martinelli) [#57923](https://github.com/nodejs/node/pull/57923) +- \[[`13377512be`](https://github.com/nodejs/node/commit/13377512be)] - **tools**: bump the eslint group in `/tools/eslint` with 6 updates (dependabot\[bot]) [#58549](https://github.com/nodejs/node/pull/58549) +- \[[`fcc881de0d`](https://github.com/nodejs/node/commit/fcc881de0d)] - **tools**: support `DisposableStack` and `AsyncDisposableStack` in linter (LiviaMedeiros) [#58454](https://github.com/nodejs/node/pull/58454) +- \[[`208d6a5754`](https://github.com/nodejs/node/commit/208d6a5754)] - **tools**: support explicit resource management in eslint (LiviaMedeiros) [#58296](https://github.com/nodejs/node/pull/58296) +- \[[`32070f304a`](https://github.com/nodejs/node/commit/32070f304a)] - **tools**: add missing highway defines for IBM i (Abdirahim Musse) [#58335](https://github.com/nodejs/node/pull/58335) +- \[[`ddab63a323`](https://github.com/nodejs/node/commit/ddab63a323)] - **tty**: improve color terminal color detection (Ruben Bridgewater) [#58146](https://github.com/nodejs/node/pull/58146) +- \[[`c094bea8d9`](https://github.com/nodejs/node/commit/c094bea8d9)] - **tty**: use terminal VT mode on Windows (Anna Henningsen) [#58358](https://github.com/nodejs/node/pull/58358) +- \[[`dc21054a1e`](https://github.com/nodejs/node/commit/dc21054a1e)] - **typings**: add inspector internalBinding typing (Shima Ryuhei) [#58492](https://github.com/nodejs/node/pull/58492) +- \[[`3499285904`](https://github.com/nodejs/node/commit/3499285904)] - **typings**: remove no longer valid `FixedSizeBlobCopyJob` type (Dario Piotrowicz) [#58305](https://github.com/nodejs/node/pull/58305) +- \[[`1ed2deb2c8`](https://github.com/nodejs/node/commit/1ed2deb2c8)] - **typings**: remove no longer valid `revokeDataObject` type (Dario Piotrowicz) [#58305](https://github.com/nodejs/node/pull/58305) +- \[[`532c173cf2`](https://github.com/nodejs/node/commit/532c173cf2)] - **(SEMVER-MINOR)** **util**: add 'none' style to styleText (James M Snell) [#58437](https://github.com/nodejs/node/pull/58437) +- \[[`2d5a1ef528`](https://github.com/nodejs/node/commit/2d5a1ef528)] - **vm**: import call should return a promise in the current context (Chengzhong Wu) [#58309](https://github.com/nodejs/node/pull/58309) +- \[[`588c2449f2`](https://github.com/nodejs/node/commit/588c2449f2)] - **win,tools**: use Azure Trusted Signing (Stefan Stojanovic) [#58502](https://github.com/nodejs/node/pull/58502) +- \[[`aeb9ab4c4c`](https://github.com/nodejs/node/commit/aeb9ab4c4c)] - **(SEMVER-MINOR)** **worker**: make Worker async disposable (James M Snell) [#58385](https://github.com/nodejs/node/pull/58385) +- \[[`23416cce0a`](https://github.com/nodejs/node/commit/23416cce0a)] - **worker**: give names to `MessagePort` functions (Livia Medeiros) [#58307](https://github.com/nodejs/node/pull/58307) +- \[[`44df21b7fb`](https://github.com/nodejs/node/commit/44df21b7fb)] - **zlib**: remove mentions of unexposed Z_TREES constant (Jimmy Leung) [#58371](https://github.com/nodejs/node/pull/58371) + +Windows 64-bit Installer: https://nodejs.org/dist/v24.2.0/node-v24.2.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.2.0/node-v24.2.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v24.2.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.2.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v24.2.0/node-v24.2.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.2.0/node-v24.2.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.2.0/node-v24.2.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v24.2.0/node-v24.2.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.2.0/node-v24.2.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.2.0/node-v24.2.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v24.2.0/node-v24.2.0-aix-ppc64.tar.gz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v24.2.0/node-v24.2.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v24.2.0/node-v24.2.0.tar.gz \ +Other release files: https://nodejs.org/dist/v24.2.0/ \ +Documentation: https://nodejs.org/docs/v24.2.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +8563ebf595f3c4f93cbd43560c54fe3d60e86c94d5d233187ff61b7e05343e04 node-v24.2.0-aix-ppc64.tar.gz +95fd069f67a207e0eb2bd5b37ec0df1808bcf71d86a88d694f23412c83f6e8ed node-v24.2.0-arm64.msi +d35c21bb80dbf0d774d670b6b51b9467dd6a92581884ba78f29b09c3b50c9dee node-v24.2.0-darwin-arm64.tar.gz +ea8d38fa23fddf1283f9d4d2b45de4aed7ea7a08bbdcdc8b40d6860d0cd39c98 node-v24.2.0-darwin-arm64.tar.xz +d839ef904d7305f429d45288a8b0b43b095e9797dbbcf3bd67b0c8712066b7a3 node-v24.2.0-darwin-x64.tar.gz +bd402a70e5a700e1cb80e32bd4faabeff3c2af1b434230aeca350477f44a96b6 node-v24.2.0-darwin-x64.tar.xz +aa5506d209cd9da6e3480ffca5ce9a54ed0ae4e169993d9bd14db18548d801b0 node-v24.2.0-headers.tar.gz +080d22a501950821bf7f4a632d8cec2eef0de5f06995fc26cdf8815b540596f6 node-v24.2.0-headers.tar.xz +e82b44212eb10ebf4de9bd945b2fcf950786117f6578581bcde0abf4d471af4a node-v24.2.0-linux-arm64.tar.gz +cd4f25d2f05d0750159a209915267af6f9970ade4702a8810641120404bf54ee node-v24.2.0-linux-arm64.tar.xz +21a12614b868523799860b8f91462d6c947571d7da16675965cd5584077fa950 node-v24.2.0-linux-ppc64le.tar.gz +0cf16bb128f4ce6b035e51ee08d0f87da83afc4bd903ff79dbe18036e9d757af node-v24.2.0-linux-ppc64le.tar.xz +32e493596dddb956da2388243159e6d22980a0c0439a0387cb7710106f402247 node-v24.2.0-linux-s390x.tar.gz +dcccc61bb8c7fa59bf5f39cd9d6ad25d7141ea4cfe19e628985b82690513fd46 node-v24.2.0-linux-s390x.tar.xz +074e93576f2b0f0f689d12b5d71314c5cdc384b6efc315e264120f6a9dd348af node-v24.2.0-linux-x64.tar.gz +91a0794f4dbc94bc4a9296139ed9101de21234982bae2b325e37ebd3462273e5 node-v24.2.0-linux-x64.tar.xz +019d7166dd46b1cee400e18a1c64ca20e7f3d7bcfc99cc5c57bfb2694dac7364 node-v24.2.0-win-arm64.7z +140f820338538e3883aa78e3e6e0483d201c7f2be0b07cda64bd535a71b139fe node-v24.2.0-win-arm64.zip +3326c3ca2a015660fe73be618869efd67d8d8de97bd632ccf307b4c684a42dd2 node-v24.2.0-win-x64.7z +9427c71b19d05f1905f151f1e67fcd535a4f671d66358dbf5b934a49c371e500 node-v24.2.0-win-x64.zip +514ad0b04e805d00f9afc9d4187a966b474efb419aedb646053f6a0492afffe0 node-v24.2.0-x64.msi +f4ab251b44d563aa54f73a317614c097f0f1626f7b1a8345eb592c493a9693be node-v24.2.0.pkg +da739aedc45729436587cda9f063b28c1d881a32ba149b0a2f4e8aff55a18929 node-v24.2.0.tar.gz +40143d43efbdeeb9537995f532126c494d63a31da332acb5022f76f00afc62ab node-v24.2.0.tar.xz +085710b1bd8344fdfa1ef9116479a57ca66e13fd8fc63db6017a546cd3c26bc4 win-arm64/node.exe +6809fc156673d10cca7dff0e54f28309bb111d235c54493a4a0ca401c2113be7 win-arm64/node.lib +7884ab9dced856dac461023ff4a99cd747e401930684163267be89aa292407f1 win-arm64/node_pdb.7z +b948190ebd1eb8322fc60cb1bf8fd6c5260870f40735eac8194e4a6909293f66 win-arm64/node_pdb.zip +4f4c2bbda03106699e49ef2e7914c03d597c355a99a6b9a1b63dca19fe092c01 win-x64/node.exe +34882ca2bb450431047f2dd3bae1c3b8c1cd2b4cffd5c1a0bf079948846d2b83 win-x64/node.lib +e1c1d32b1429a7b8cd49a3b5868b34a792ba9b55fe2822f1a492151a9beb1d8a win-x64/node_pdb.7z +966ec83f3dc85f571d00b804d73f065d2b45d3ed28964787a8d857daf0d9e6fb win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmhHVpYACgkQIdkA/9sj +N1Ypeg/6AoxLNQNEXTJ7oxz3JEQmGB/HhnfcHPQQiilDJdsrKhh3ZZXu83T+AW9J +NhbhXdCsugX3dXJWsPSk69JhTVrPNAeXvx7FdR+M8jj7p7PJhXuAbdYhg9Ilp/Bo +v4HviVdrg+aZivVw05YsXypeAQHYn7UFoOXBmZ5HrdQlQ/AcJnTnb7V+iQN31BUF +us6WzFG3oHeRe3Gg0C/+juLlSCOHcQmHnb7+nfV68pKrAAbP63GTcBoEaMwvWMGC +8oSr8tPYEuzmLHE8ewxkR4X2TeNXkfZYR/Tiz0uwxS8nA1eicjcQM0V9mCNA5vuQ +YZf6+jPq1uW4k82G/494Aup33/DSEmR0Wves7PpJ5HQRkwb38mLt3eTPpjEHMVM3 +fJ7hGxwmsUcvAEEDY8q9ngeOnYFPfPswccGyVUHvJqM8UyJKO2Bn7+YFgclVRsFj +WDD6k/jugEYfLjF0CVDMd5X3rwma+mom4AlFuUEr4NFFqWOLRV7Ykpo8WUgjXSxh +FScNPL1WObNwwNwhQ8p5/e+/D8HLfBJ/nctTB6HvfsI40j0BCs9NN7a3eCDTXEgs +Ma2/dhwqJAN3GBWJbjwLvKIKh4hE3G9ZJZE9N7S4hVyYvs4Z6+U61B1UB1b4bAwA +F7unjcqMdpUdyDXUk3V0Fjeodh1uzTTL772SzZHozT3V+2srg90= +=wMzz +-----END PGP SIGNATURE----- +``` From f93bd4b9ac3a03ea10113810325be825f38c30b7 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Mon, 9 Jun 2025 22:12:53 -0700 Subject: [PATCH 0548/1385] fix: images for node 18 eol blog post (#7856) Signed-off-by: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> --- apps/site/pages/en/blog/announcements/node-18-eol-support.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/blog/announcements/node-18-eol-support.md b/apps/site/pages/en/blog/announcements/node-18-eol-support.md index 9c70aca97e5af..f5e59808dcb6a 100644 --- a/apps/site/pages/en/blog/announcements/node-18-eol-support.md +++ b/apps/site/pages/en/blog/announcements/node-18-eol-support.md @@ -90,5 +90,5 @@ The path forward is clear: **Node.js 22 offers the longest support window, best Your applications, your users, and your future self will thank you for making the strategic move to Node.js v22 today. -[image1]: /static/images/blog/announcements/2025-eol-node-graph.png -[image2]: /static/images/blog/announcements/2025-release-schedule.svg +[image1]: /static/images/blog/announcements/2025-release-schedule.svg +[image2]: /static/images/blog/announcements/2025-eol-node-graph.png From a297d85b39cf90b1ec684bc760557e8ea2954204 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?0hm=E2=98=98=EF=B8=8F?= <109351887+0hmX@users.noreply.github.com> Date: Wed, 11 Jun 2025 16:23:54 +0530 Subject: [PATCH 0549/1385] docs: add example of respecting backpressure in Readable stream (#7854) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: add example of respecting backpressure in Readable stream * Update apps/site/pages/en/learn/modules/backpressuring-in-streams.md Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: 0hm☘️ <109351887+0hmX@users.noreply.github.com> * fix: correct indentation in MyReadable class example --------- Signed-off-by: 0hm☘️ <109351887+0hmX@users.noreply.github.com> Co-authored-by: Aviv Keller <me@aviv.sh> --- .../en/learn/modules/backpressuring-in-streams.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/site/pages/en/learn/modules/backpressuring-in-streams.md b/apps/site/pages/en/learn/modules/backpressuring-in-streams.md index 6d7f44869901c..bd783a59e527d 100644 --- a/apps/site/pages/en/learn/modules/backpressuring-in-streams.md +++ b/apps/site/pages/en/learn/modules/backpressuring-in-streams.md @@ -557,6 +557,20 @@ class MyReadable extends Readable { } ``` +Here is an example of good practice, where the `Readable` stream respects backpressure by checking the return value of `this.push()`: + +```js +class MyReadable extends Readable { + _read(size) { + let chunk; + let canPushMore = true; + while (canPushMore && null !== (chunk = getNextChunk())) { + canPushMore = this.push(chunk); + } + } +} +``` + Additionally, from outside the custom stream, there are pitfalls to ignoring backpressure. In this counter-example of good practice, the application's code forces data through whenever it is available (signaled by the From 3ccf909a1a2039e67a75d1af6010659e16ba995a Mon Sep 17 00:00:00 2001 From: Dongeun Kim <puro@sooplive.com> Date: Wed, 11 Jun 2025 22:45:12 +0900 Subject: [PATCH 0550/1385] docs: Fix broken link in docs (#7858) Signed-off-by: Dongeun Kim <puro@sooplive.com> --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bd52c3b5080ec..6665bb8b80c5f 100644 --- a/README.md +++ b/README.md @@ -118,8 +118,8 @@ These are maintained in different repositories and we urge users to open **issue [code of conduct]: https://github.com/nodejs/admin/blob/main/CODE_OF_CONDUCT.md [contribution guidelines]: https://github.com/nodejs/nodejs.org/blob/main/CONTRIBUTING.md -[content vs code]: https://github.com/nodejs/nodejs.org/blob/main/CONTENT_VS_CODE.md -[dependency pinning]: https://github.com/nodejs/nodejs.org/blob/main/DEPENDENCY_PINNING.md -[collaborator guide]: https://github.com/nodejs/nodejs.org/blob/main/COLLABORATOR_GUIDE.md +[content vs code]: https://github.com/nodejs/nodejs.org/blob/main/docs/content-vs-code.md +[dependency pinning]: https://github.com/nodejs/nodejs.org/blob/main/docs/dependency-pinning.md +[collaborator guide]: https://github.com/nodejs/nodejs.org/blob/main/docs/collaborator-guide.md [figma design]: https://www.figma.com/file/pu1vZPqNIM7BePd6W8APA5/Node.js -[translation guidelines]: https://github.com/nodejs/nodejs.org/blob/main/TRANSLATION.md +[translation guidelines]: https://github.com/nodejs/nodejs.org/blob/main/docs/translation.md From 41ed5ee20274e4c4798579eb172b062f4abd9e67 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 12 Jun 2025 18:13:58 -0400 Subject: [PATCH 0551/1385] =?UTF-8?q?chore(=F0=9F=8F=B3=EF=B8=8F=E2=80=8D?= =?UTF-8?q?=F0=9F=8C=88):=20logo=20(#7861)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/site/site.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/site/site.json b/apps/site/site.json index 03f162b12cb49..57639a7ea1035 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -3,6 +3,7 @@ "description": "Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.", "favicon": "/static/images/favicons/favicon.png", "accentColor": "#333", + "logoVariant": "pride", "twitter": { "username": "@nodejs", "card": "summary", From 313e1630ae860360025398b5b55547d011f42e9e Mon Sep 17 00:00:00 2001 From: Superchupu <53496941+SuperchupuDev@users.noreply.github.com> Date: Sat, 14 Jun 2025 06:58:45 +0200 Subject: [PATCH 0552/1385] docs: use `their` instead of `her/his` (#7865) Signed-off-by: Superchupu <53496941+SuperchupuDev@users.noreply.github.com> --- apps/site/pages/en/learn/modules/publishing-a-package.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/modules/publishing-a-package.mdx b/apps/site/pages/en/learn/modules/publishing-a-package.mdx index 58dcd1886355b..95d9ca9309c43 100644 --- a/apps/site/pages/en/learn/modules/publishing-a-package.mdx +++ b/apps/site/pages/en/learn/modules/publishing-a-package.mdx @@ -522,7 +522,7 @@ The `"engines"` field provides both a human-friendly and a machine-friendly indi Specifically in relation to Node.js, there are 4 problems to solve: -- Determining format of source code files (author running her/his own code) +- Determining format of source code files (author running their own code) - Determining format of distribution files (code consumers will receive) - Publicising distribution code for when it is `require()`’d (consumer expects CJS) From 1ccf19c1836415b6ec7bc2d63ffba4686b390ca9 Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Sat, 14 Jun 2025 14:25:40 +0200 Subject: [PATCH 0553/1385] chore: updated commands, use plain node (#7850) * chore: updated commands, use plain node * fix: turbo-args * fix: use node --run for test:ci * fix: fixed final checks * meta: updated codeowners * fix: playwright open-next command * chore: code review changes --- .github/CODEOWNERS | 25 ++++++++-- .github/workflows/build.yml | 12 ++--- .github/workflows/chromatic.yml | 2 - .github/workflows/lint-and-tests.yml | 12 ++--- .../playwright-cloudflare-open-next.yml | 8 ++-- .github/workflows/playwright.yml | 8 ++-- .github/workflows/publish-packages.yml | 2 - .github/workflows/translations-sync.yml | 6 +-- .gitignore | 9 ++-- .husky/pre-commit | 6 ++- .lintstagedrc.json | 7 +-- .prettierignore | 6 +-- CONTRIBUTING.md | 8 ++-- apps/site/.lintstagedrc.json | 5 ++ apps/site/eslint.config.js | 6 +-- apps/site/package.json | 30 ++++++------ apps/site/playwright.config.ts | 2 +- apps/site/turbo.json | 6 +++ eslint.config.js | 4 +- package.json | 48 ++++++++++--------- packages/i18n/.lintstagedrc.json | 4 ++ packages/i18n/eslint.config.js | 4 +- packages/i18n/package.json | 8 ++-- packages/i18n/turbo.json | 27 ++--------- packages/rehype-shiki/.lintstagedrc.json | 4 ++ packages/rehype-shiki/package.json | 6 ++- packages/rehype-shiki/turbo.json | 4 +- packages/ui-components/.lintstagedrc.json | 5 ++ packages/ui-components/eslint.config.js | 4 +- packages/ui-components/package.json | 16 +++---- packages/ui-components/turbo.json | 4 +- pnpm-workspace.yaml | 2 + turbo.json | 21 ++------ 33 files changed, 161 insertions(+), 160 deletions(-) create mode 100644 apps/site/.lintstagedrc.json create mode 100644 packages/i18n/.lintstagedrc.json create mode 100644 packages/rehype-shiki/.lintstagedrc.json create mode 100644 packages/ui-components/.lintstagedrc.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a4ff53b442cec..a122846990f36 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,14 +4,18 @@ # Infrastructure .github @nodejs/web-infra .husky @nodejs/web-infra +codecov.yml @nodejs/web-infra + +# Dependencies +pnpm-workspace.yaml @nodejs/nodejs-website @nodejs/web-infra +pnpm-lock.yaml @nodejs/web-infra # Framework apps/site/next.config.mjs @nodejs/web-infra apps/site/next.dynamic.mjs @nodejs/web-infra - -# Node.js Release Blog Posts -apps/site/pages/en/blog/release @nodejs/releasers -apps/site/pages/en/blog/announcements @nodejs/releasers +apps/site/middleware.ts @nodejs/web-infra +apps/site/navigation.mjs @nodejs/web-infra +apps/site/playwright.config.ts @nodejs/web-infra # Package Ecosystem package.json @nodejs/nodejs-website @@ -21,6 +25,19 @@ 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/wrangler.jsonc @nodejs/web-infra +apps/site/open-next.config.ts @nodejs/web-infra +apps/site/redirects.json @nodejs/web-infra + +# Critical Documents +LICENSE @nodejs/tsc +GOVERNANCE.md @nodejs/tsc +CONTRIBUTING.md @nodejs/nodejs-website @nodejs/web-infra +docs @nodejs/nodejs-website @nodejs/web-infra + +# Node.js Release Blog Posts +apps/site/pages/en/blog/release @nodejs/releasers +apps/site/pages/en/blog/announcements @nodejs/releasers # Specific content apps/site/pages/en/learn/getting-started/security-best-practices.md @nodejs/security-wg diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8bd878abac653..e43d21ce30fd5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,8 +30,6 @@ permissions: env: # See https://turbo.build/repo/docs/reference/command-line-reference/run#--cache-dir TURBO_ARGS: --cache-dir=.turbo/cache - # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force - TURBO_FORCE: true jobs: build: @@ -80,8 +78,6 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - with: - cache: true - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 @@ -96,7 +92,7 @@ jobs: - name: Build Next.js (ISR) # We want a ISR build on CI to ensure that regular Next.js builds work as expected. - run: pnpm exec turbo build ${{ env.TURBO_ARGS }} + run: node_modules/.bin/turbo build ${{ env.TURBO_ARGS }} env: # We want to ensure we have enough RAM allocated to the Node.js process # this should be a last resort in case by any chances the build memory gets too high @@ -109,7 +105,7 @@ jobs: # We only run full static builds within Pull Requests. This step is also used to export # static output in all languages, and it only works on `push` events. if: github.event_name == 'push' - run: pnpm exec turbo deploy ${{ env.TURBO_ARGS }} + run: node_modules/.bin/turbo deploy ${{ env.TURBO_ARGS }} env: # We want to ensure we have enough RAM allocated to the Node.js process # this should be a last resort in case by any chances the build memory gets too high @@ -128,7 +124,7 @@ jobs: if: | (github.event_name == 'pull_request_target' && github.event.pull_request.head.ref != 'chore/crowdin') - run: pnpm exec turbo deploy ${{ env.TURBO_ARGS }} + run: node_modules/.bin/turbo deploy ${{ env.TURBO_ARGS }} env: # We want to ensure we have enough RAM allocated to the Node.js process # this should be a last resort in case by any chances the build memory gets too high @@ -149,4 +145,4 @@ jobs: ORAMA_SECRET_KEY: ${{ github.event_name == 'push' && secrets.ORAMA_PRODUCTION_SECRET_KEY || secrets.ORAMA_SECRET_KEY }} if: matrix.os == 'ubuntu-latest' && github.event_name != 'merge_group' working-directory: apps/site - run: pnpm sync-orama + run: node --run sync-orama diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index e7f001ca8cccb..81108deb114a6 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -69,8 +69,6 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - with: - cache: true - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 diff --git a/.github/workflows/lint-and-tests.yml b/.github/workflows/lint-and-tests.yml index 5c53db89a0055..70fb3bd0cbecc 100644 --- a/.github/workflows/lint-and-tests.yml +++ b/.github/workflows/lint-and-tests.yml @@ -33,8 +33,8 @@ permissions: actions: read env: - # See https://turbo.build/repo/docs/reference/command-line-reference/run#--force - TURBO_FORCE: true + # See https://turbo.build/repo/docs/reference/command-line-reference/run#--cache-dir + TURBO_ARGS: --cache-dir=.turbo/cache jobs: lint: @@ -70,8 +70,6 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - with: - cache: true - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 @@ -90,7 +88,7 @@ jobs: if: | (github.event_name == 'push' || github.event_name == 'merge_group') || (github.event_name == 'pull_request' && github.event.pull_request.head.ref != 'chore/crowdin') - run: pnpm exec turbo lint check-types prettier + run: node_modules/.bin/turbo lint lint:types prettier ${{ env.TURBO_ARGS }} - name: Save Lint Cache # We only want to save caches on `push` events or `pull_request_target` events @@ -127,8 +125,6 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - with: - cache: true - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 @@ -143,7 +139,7 @@ jobs: - name: Run Unit Tests # We want to run Unit Tests in every circumstance, including Crowdin PRs and Dependabot PRs to ensure # that changes to dependencies or translations don't break the Unit Tests - run: pnpm test:ci + run: node --run test:ci -- ${{ env.TURBO_ARGS }} - name: Upload test coverage to Codecov if: ${{ !cancelled() && github.event_name != 'merge_group' }} diff --git a/.github/workflows/playwright-cloudflare-open-next.yml b/.github/workflows/playwright-cloudflare-open-next.yml index e3d10aa619072..748e7bab39b57 100644 --- a/.github/workflows/playwright-cloudflare-open-next.yml +++ b/.github/workflows/playwright-cloudflare-open-next.yml @@ -40,8 +40,6 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - with: - cache: true - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 @@ -56,7 +54,7 @@ jobs: - name: Get Playwright version id: playwright-version working-directory: apps/site - run: echo "version=$(pnpm exec playwright --version | awk '{print $2}')" >> $GITHUB_OUTPUT + run: echo "version=$(node_modules/.bin/playwright --version | awk '{print $2}')" >> $GITHUB_OUTPUT - name: Cache Playwright browsers id: playwright-cache @@ -67,11 +65,11 @@ jobs: - name: Install Playwright Browsers working-directory: apps/site - run: pnpm exec playwright install --with-deps + run: node_modules/.bin/playwright install --with-deps - name: Run Playwright tests working-directory: apps/site - run: pnpm playwright + run: node --run playwright env: PLAYWRIGHT_RUN_CLOUDFLARE_PREVIEW: true PLAYWRIGHT_BASE_URL: http://127.0.0.1:8787 diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index 906f0fef71da0..dfda0591151f9 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -66,8 +66,6 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - with: - cache: true - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 @@ -82,7 +80,7 @@ jobs: - name: Get Playwright version id: playwright-version working-directory: apps/site - run: echo "version=$(pnpm exec playwright --version | awk '{print $2}')" >> $GITHUB_OUTPUT + run: echo "version=$(node_modules/.bin/playwright --version | awk '{print $2}')" >> $GITHUB_OUTPUT - name: Cache Playwright browsers id: playwright-cache @@ -93,11 +91,11 @@ jobs: - name: Install Playwright Browsers working-directory: apps/site - run: pnpm exec playwright install --with-deps + run: node_modules/.bin/playwright install --with-deps - name: Run Playwright tests working-directory: apps/site - run: pnpm playwright + run: node --run playwright env: PLAYWRIGHT_BASE_URL: ${{ needs.get-vercel-preview.outputs.url }} diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml index 57c766d89d909..963761e1e6639 100644 --- a/.github/workflows/publish-packages.yml +++ b/.github/workflows/publish-packages.yml @@ -105,8 +105,6 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - with: - cache: true - name: Setup Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml index d6674614e56a0..5613eb48bb762 100644 --- a/.github/workflows/translations-sync.yml +++ b/.github/workflows/translations-sync.yml @@ -94,8 +94,6 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - with: - cache: true - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 @@ -109,10 +107,10 @@ jobs: - name: Run ESLint working-directory: apps/site - run: pnpm lint:md --fix + run: node --run lint:md -- --fix - name: Run Prettier - run: pnpm prettier:fix + run: node --run prettier:fix - name: Push Changes back to Pull Request uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0 diff --git a/.gitignore b/.gitignore index 2c2edea1406ac..7097bc66bae66 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,9 @@ npm-debug.log package-lock.json # Next.js Build Output -.next -build +apps/site/.next +apps/site/build +apps/site/public/blog-data.json # Test Runner junit.xml @@ -35,14 +36,10 @@ cache tsconfig.tsbuildinfo dist/ -# Ignore the blog-data json that we generate during dev and build -apps/site/public/blog-data.json - # Cloudflare Build Output apps/site/.open-next apps/site/.wrangler - ## Playwright test-results playwright-report diff --git a/.husky/pre-commit b/.husky/pre-commit index 013b90be9aed3..5f31f933a76bf 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,7 @@ # lint and format staged files -pnpm exec lint-staged + +node --run lint:staged # verify typescript fully -pnpm check-types + +node --run lint:types diff --git a/.lintstagedrc.json b/.lintstagedrc.json index 4b80a42c97bcb..91a0e156e4ab9 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,8 +1,3 @@ { - "**/*.{js,mjs,ts,tsx,md,mdx}": [ - "turbo run lint:lint-staged --", - "prettier --check --write" - ], - "**/*.css": ["stylelint --allow-empty-input", "prettier --write"], - "**/*.{json,yml}": ["prettier --check --write"] + "**/*.{js,mjs,ts,tsx,md,mdx,json.yml}": ["prettier --check --write"] } diff --git a/.prettierignore b/.prettierignore index fca5fe862757e..364ca79393788 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,9 +11,6 @@ package-lock.json .next build -# Next.js Generated Files -public/static/documents - # Test Runner junit.xml lcov.info @@ -39,6 +36,9 @@ tsconfig.tsbuildinfo # Metadata Files CODEOWNERS +# Public Folders +apps/site/public + # Prettier's Handlebar parser is limited and chokes on some syntax features # https://github.com/prettier/prettier/issues/11834 scripts/release-post/template.hbs diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9597648401ba..97c2cfa2a0b6f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -84,7 +84,7 @@ cd nodejs.org pnpm install --frozen-lockfile # Start development server -pnpm dev +node --run dev ``` For detailed setup instructions, see [Getting Started](./docs/getting-started.md). @@ -99,13 +99,13 @@ For detailed setup instructions, see [Getting Started](./docs/getting-started.md ```bash # Format and lint code -pnpm format +node --run format # Run tests -pnpm test +node --run test # Test build -pnpm build +node --run build ``` ### 4. Submit Your Contribution diff --git a/apps/site/.lintstagedrc.json b/apps/site/.lintstagedrc.json new file mode 100644 index 0000000000000..571dfad0759c2 --- /dev/null +++ b/apps/site/.lintstagedrc.json @@ -0,0 +1,5 @@ +{ + "**/*.{js,mjs,ts,tsx,md,mdx}": ["prettier --check --write", "eslint --fix"], + "**/*.css": ["stylelint --allow-empty-input", "prettier --write"], + "**/*.{json,yml}": ["prettier --check --write"] +} diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index 067acb4db1582..dd5bea57b1387 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -1,5 +1,5 @@ import { FlatCompat } from '@eslint/eslintrc'; -import importX from 'eslint-plugin-import-x'; +import { flatConfigs } from 'eslint-plugin-import-x'; import * as mdx from 'eslint-plugin-mdx'; import react from 'eslint-plugin-react'; import tseslint from 'typescript-eslint'; @@ -20,12 +20,12 @@ const compatConfig = compat.config({ export default tseslint.config( ...baseConfig, - { ignores: ['pages/en/blog/**/*.{md,mdx}/**'] }, + { ignores: ['pages/en/blog/**/*.{md,mdx}/**', 'public'] }, { extends: [ react.configs.flat['jsx-runtime'], ...tseslint.configs.recommended, - importX.flatConfigs.typescript, + flatConfigs.typescript, ...compatConfig, ], files: ['**/*.{js,md,mdx,mjs,ts,tsx}'], diff --git a/apps/site/package.json b/apps/site/package.json index abbe59438d972..6ad218fc016fb 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -2,30 +2,32 @@ "name": "@node-core/website", "type": "module", "scripts": { - "prebuild": "pnpm build:blog-data", - "build": "pnpm build:default --turbo", - "build:default": "cross-env NODE_NO_WARNINGS=1 next build", - "build:blog-data": "node ./scripts/blog-data/generate.mjs", + "prebuild": "node --run build:blog-data", + "build": "node --run build:default -- --turbo", + "build:blog-data": "cross-env NODE_NO_WARNINGS=1 node ./scripts/blog-data/generate.mjs", "build:blog-data:watch": "node --watch --watch-path=pages/en/blog ./scripts/blog-data/generate.mjs", - "check-types": "tsc --noEmit", - "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true pnpm build:default", + "build:default": "cross-env NODE_NO_WARNINGS=1 next build", + "cloudflare:build:worker": "opennextjs-cloudflare build", + "cloudflare:deploy": "wrangler deploy", + "cloudflare:preview": "wrangler dev", + "predeploy": "node --run build:blog-data", + "deploy": "cross-env NEXT_PUBLIC_STATIC_EXPORT=true node --run build:default", + "predev": "node --run build:blog-data", "dev": "cross-env NODE_NO_WARNINGS=1 next dev --turbo", "lint": "turbo run lint:md lint:js lint:css", "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", - "lint:fix": "turbo run lint:md lint:js lint:css --no-cache -- --fix", + "lint:fix": "node --run lint -- -- --fix", "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", "lint:md": "eslint \"**/*.md?(x)\" --cache --cache-strategy=content --cache-location=.eslintmdcache", + "lint:types": "tsc --noEmit", "playwright": "playwright test", "scripts:release-post": "cross-env NODE_NO_WARNINGS=1 node scripts/release-post/index.mjs", - "serve": "pnpm dev", + "serve": "node --run dev", "start": "cross-env NODE_NO_WARNINGS=1 next start", - "sync-orama": "node ./scripts/orama-search/sync-orama-cloud.mjs", - "test": "turbo test:unit", + "sync-orama": "cross-env NODE_NO_WARNINGS=1 node ./scripts/orama-search/sync-orama-cloud.mjs", + "test": "node --run test:unit", "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --experimental-test-module-mocks --enable-source-maps --import=global-jsdom/register --import=tsx --import=tests/setup.jsx --test **/*.test.*", - "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" pnpm test:unit", - "cloudflare:build:worker": "opennextjs-cloudflare build", - "cloudflare:deploy": "wrangler deploy", - "cloudflare:preview": "wrangler dev" + "test:unit:watch": "node --run test:unit -- --watch" }, "dependencies": { "@heroicons/react": "~2.2.0", diff --git a/apps/site/playwright.config.ts b/apps/site/playwright.config.ts index fa3790f8d58cb..f4e612c3d1507 100644 --- a/apps/site/playwright.config.ts +++ b/apps/site/playwright.config.ts @@ -41,7 +41,7 @@ function getWebServerConfig(): Pick<Config, 'webServer'> { if (process.env.PLAYWRIGHT_RUN_CLOUDFLARE_PREVIEW) { return { webServer: { - command: 'pnpm turbo run cloudflare:preview', + command: '../../node_modules/.bin/turbo cloudflare:preview', url: process.env.PLAYWRIGHT_BASE_URL || 'http://127.0.0.1:3000', timeout: 60_000 * 3, }, diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 33c7ab8af6976..b4211a13e6be0 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -116,6 +116,9 @@ "lint:fix": { "cache": false }, + "lint:types": { + "cache": false + }, "format": { "cache": false }, @@ -166,6 +169,9 @@ "*.{md,mdx,json,ts,tsx,mjs,yml}" ], "outputs": [".open-next/**"] + }, + "scripts:release-post": { + "cache": false } } } diff --git a/eslint.config.js b/eslint.config.js index 4359c1ca31f3e..fa0d69bfa4c32 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,9 +1,9 @@ import js from '@eslint/js'; -import importX from 'eslint-plugin-import-x'; +import { flatConfigs } from 'eslint-plugin-import-x'; export default [ js.configs.recommended, - importX.flatConfigs.recommended, + flatConfigs.recommended, { ignores: [ 'node_modules', diff --git a/package.json b/package.json index f1858901b6e17..bd993fd2a50da 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,37 @@ { "name": "nodejs-website", + "type": "module", "private": true, + "license": "MIT", "description": "Nodejs.org Website", "homepage": "https://nodejs.org", "repository": { "type": "git", "url": "git+https://github.com/nodejs/nodejs.org.git" }, - "license": "MIT", "author": { - "name": "Node.js Website Working Group" + "name": "Node.js Website Team and Contributors" }, - "type": "module", "scripts": { - "build": "turbo run build", - "check-types": "turbo check-types", - "deploy": "turbo run deploy", - "dev": "turbo run dev", - "format": "pnpm lint:fix && pnpm prettier:fix", - "lint": "turbo run lint", - "lint:fix": "turbo run lint --force", + "build": "turbo build", + "cloudflare:deploy": "turbo cloudflare:deploy", + "cloudflare:preview": "turbo cloudflare:preview", + "deploy": "turbo deploy", + "dev": "turbo dev", + "format": "turbo lint:fix prettier:fix", + "lint": "turbo lint", + "lint:fix": "turbo lint:fix", + "lint:staged": "lint-staged", + "lint:types": "turbo lint:types", "prepare": "husky", "prettier": "prettier \"**/*.{js,mjs,ts,tsx,md,mdx,json,yml,css}\" --check --cache --cache-strategy=content --cache-location=.prettiercache", - "prettier:fix": "pnpm prettier --write", - "scripts:release-post": "turbo run scripts:release-post", - "start": "turbo run start", - "storybook": "turbo run storybook", - "storybook:build": "turbo run storybook:build", + "prettier:fix": "node --run prettier -- --write", + "scripts:release-post": "turbo scripts:release-post", + "start": "turbo start", + "storybook": "turbo storybook", + "storybook:build": "turbo storybook:build", "test": "turbo test:unit", - "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout\" turbo test:unit", - "cloudflare:preview": "turbo run cloudflare:preview", - "cloudflare:deploy": "turbo run cloudflare:deploy" + "test:ci": "cross-env NODE_OPTIONS=\"--test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=junit.xml --test-reporter=@reporters/github --test-reporter-destination=stdout\" turbo test:unit" }, "dependencies": { "husky": "9.1.7", @@ -48,13 +49,16 @@ "prettier-plugin-tailwindcss": "0.6.12" }, "packageManager": "pnpm@10.11.1", - "engines": { - "node": "v22" - }, "devEngines": { + "runtime": { + "name": "node", + "version": "v22", + "onFail": "error" + }, "packageManager": { "name": "pnpm", - "version": "10.11.1" + "version": "10.11.1", + "onFail": "error" } } } diff --git a/packages/i18n/.lintstagedrc.json b/packages/i18n/.lintstagedrc.json new file mode 100644 index 0000000000000..1d1673ffabe4d --- /dev/null +++ b/packages/i18n/.lintstagedrc.json @@ -0,0 +1,4 @@ +{ + "**/*.{js,mjs,ts,tsx,md,mdx}": ["prettier --check --write", "eslint --fix"], + "**/*.{json,yml}": ["prettier --check --write"] +} diff --git a/packages/i18n/eslint.config.js b/packages/i18n/eslint.config.js index 2a6304344fb89..522c9d121b479 100644 --- a/packages/i18n/eslint.config.js +++ b/packages/i18n/eslint.config.js @@ -1,4 +1,4 @@ -import importX from 'eslint-plugin-import-x'; +import { flatConfigs } from 'eslint-plugin-import-x'; import tseslint from 'typescript-eslint'; import baseConfig from '../../eslint.config.js'; @@ -6,7 +6,7 @@ import baseConfig from '../../eslint.config.js'; export default [ ...baseConfig, ...tseslint.configs.recommended, - importX.flatConfigs.typescript, + flatConfigs.typescript, { rules: { '@typescript-eslint/array-type': ['error', { default: 'generic' }], diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 2505a64f47a40..426e8c8d5411c 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -14,13 +14,15 @@ "module": "./lib/index.mjs", "types": "./dist/index.d.mts", "files": [ - "locales", - "index.js", "config.json", + "index.js", + "locales", "types.d.ts" ], "scripts": { - "lint:js": "eslint \"**/*.{js,mjs,ts}\"" + "lint": "turbo lint:js", + "lint:js": "eslint \"**/*.{js,mjs,ts}\"", + "lint:fix": "node --run lint -- -- --fix" }, "devDependencies": { "eslint-import-resolver-typescript": "~4.4.2", diff --git a/packages/i18n/turbo.json b/packages/i18n/turbo.json index 642d71d8af575..e92cca2df8eb7 100644 --- a/packages/i18n/turbo.json +++ b/packages/i18n/turbo.json @@ -2,32 +2,11 @@ "$schema": "https://turbo.build/schema.json", "extends": ["//"], "tasks": { - "dev": { - "cache": false, - "persistent": true - }, - "build": { - "dependsOn": [], - "outputs": ["dist/**"], - "env": [ - "VERCEL_ENV", - "VERCEL_URL", - "VERCEL_REGION", - "NEXT_PUBLIC_STATIC_EXPORT", - "NEXT_PUBLIC_STATIC_EXPORT_LOCALE", - "NEXT_PUBLIC_BASE_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}"] + }, + "lint:fix": { + "cache": false } } } diff --git a/packages/rehype-shiki/.lintstagedrc.json b/packages/rehype-shiki/.lintstagedrc.json new file mode 100644 index 0000000000000..1d1673ffabe4d --- /dev/null +++ b/packages/rehype-shiki/.lintstagedrc.json @@ -0,0 +1,4 @@ +{ + "**/*.{js,mjs,ts,tsx,md,mdx}": ["prettier --check --write", "eslint --fix"], + "**/*.{json,yml}": ["prettier --check --write"] +} diff --git a/packages/rehype-shiki/package.json b/packages/rehype-shiki/package.json index ff94faba04cb9..2d7207280e003 100644 --- a/packages/rehype-shiki/package.json +++ b/packages/rehype-shiki/package.json @@ -6,9 +6,11 @@ "./*": "./src/*.mjs" }, "scripts": { + "lint": "turbo run lint:js", "lint:js": "eslint \"**/*.mjs\"", - "test": "turbo test:unit", - "test:unit": "node --experimental-test-coverage --experimental-test-module-mocks --test \"**/*.test.mjs\"" + "lint:fix": "node --run lint -- -- --fix", + "test": "node --run test:unit", + "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --experimental-test-module-mocks --test \"**/*.test.mjs\"" }, "dependencies": { "@shikijs/core": "^3.4.2", diff --git a/packages/rehype-shiki/turbo.json b/packages/rehype-shiki/turbo.json index 1dd6dce7da26a..7a34fa4ca9091 100644 --- a/packages/rehype-shiki/turbo.json +++ b/packages/rehype-shiki/turbo.json @@ -2,10 +2,12 @@ "$schema": "https://turbo.build/schema.json", "extends": ["//"], "tasks": { - "build": {}, "lint:js": { "inputs": ["src/**/*.mjs"] }, + "lint:fix": { + "cache": false + }, "test:unit": { "inputs": ["src/**/*.mjs"] } diff --git a/packages/ui-components/.lintstagedrc.json b/packages/ui-components/.lintstagedrc.json new file mode 100644 index 0000000000000..571dfad0759c2 --- /dev/null +++ b/packages/ui-components/.lintstagedrc.json @@ -0,0 +1,5 @@ +{ + "**/*.{js,mjs,ts,tsx,md,mdx}": ["prettier --check --write", "eslint --fix"], + "**/*.css": ["stylelint --allow-empty-input", "prettier --write"], + "**/*.{json,yml}": ["prettier --check --write"] +} diff --git a/packages/ui-components/eslint.config.js b/packages/ui-components/eslint.config.js index fa5803300b76b..5d835e07068cf 100644 --- a/packages/ui-components/eslint.config.js +++ b/packages/ui-components/eslint.config.js @@ -1,4 +1,4 @@ -import importX from 'eslint-plugin-import-x'; +import { flatConfigs } from 'eslint-plugin-import-x'; import react from 'eslint-plugin-react'; import storybook from 'eslint-plugin-storybook'; import tseslint from 'typescript-eslint'; @@ -11,7 +11,7 @@ export default tseslint.config( extends: [ react.configs.flat['jsx-runtime'], ...tseslint.configs.recommended, - importX.flatConfigs.typescript, + flatConfigs.typescript, ], files: ['**/*.{js,mjs,ts,tsx}'], rules: { diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 651d459009575..5df2ec63c09d5 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -13,23 +13,23 @@ "files": [ "Common", "Containers", - "MDX", "Icons", + "MDX", + "stylelint", "styles", - "types.ts", - "stylelint" + "types.ts" ], "scripts": { - "check-types": "tsc --noEmit", "lint": "turbo run lint:js lint:css", "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", - "lint:fix": "turbo run lint:js lint:css --no-cache -- --fix", + "lint:fix": "node --run lint -- -- --fix", "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"", + "lint:types": "tsc --noEmit", "storybook": "cross-env NODE_NO_WARNINGS=1 storybook dev -p 6006 --quiet", "storybook:build": "cross-env NODE_NO_WARNINGS=1 storybook build --quiet --webpack-stats-json", - "test": "turbo test:unit", + "test": "node --run test:unit", "test:unit": "cross-env NODE_NO_WARNINGS=1 node --experimental-test-coverage --test-coverage-exclude=**/*.test.* --enable-source-maps --import=global-jsdom/register --import=tsx --import=../../tests/setup.mjs --test **/*.test.*", - "test:unit:watch": "cross-env NODE_OPTIONS=\"--watch\" pnpm test:unit" + "test:unit:watch": "node --run test:unit -- --watch" }, "dependencies": { "@heroicons/react": "^2.2.0", @@ -49,8 +49,8 @@ "tailwindcss": "~4.0.17" }, "devDependencies": { - "@storybook/addon-themes": "^9.0.3", "@storybook/addon-styling-webpack": "^1.0.1", + "@storybook/addon-themes": "^9.0.3", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", "@storybook/react": "^9.0.3", "@storybook/react-webpack5": "^9.0.3", diff --git a/packages/ui-components/turbo.json b/packages/ui-components/turbo.json index 4259720a66ae5..5876730ca18cc 100644 --- a/packages/ui-components/turbo.json +++ b/packages/ui-components/turbo.json @@ -3,7 +3,6 @@ "extends": ["//"], "globalEnv": ["NODE_ENV"], "tasks": { - "build": {}, "lint:js": { "inputs": ["**/*.{json,mjs,js,ts,tsx}"] }, @@ -14,6 +13,9 @@ "lint:fix": { "cache": false }, + "lint:types": { + "cache": false + }, "storybook": { "cache": false, "persistent": true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c47d8ad2e89ac..69b93ed5beb2f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -7,7 +7,9 @@ packages: # run installation scripts. onlyBuiltDependencies: - '@swc/core' + - '@tailwindcss/oxide' - '@vercel/speed-insights' - esbuild - sharp - unrs-resolver + - workerd diff --git a/turbo.json b/turbo.json index 80bcb76f5f7ff..c11f6e713bf33 100644 --- a/turbo.json +++ b/turbo.json @@ -2,27 +2,16 @@ "$schema": "https://turbo.build/schema.json", "dangerouslyDisablePackageManagerCheck": true, "tasks": { - "scripts:release-post": { - "cache": false - }, "//#prettier": { "outputs": [".prettiercache"] }, - "lint": { - "dependsOn": [ - "@node-core/website#lint:md", - "@node-core/website#lint:css", - "lint:js" - ] + "build": { + "dependsOn": ["^topo"] }, - "lint:lint-staged": { - "dependsOn": [ - "@node-core/website#lint:md", - "@node-core/website#lint:css", - "@node-core/website#lint:js" - ] + "lint": { + "dependsOn": ["^topo"] }, - "check-types": { + "test": { "dependsOn": ["^topo"] }, "topo": { From 8785c39ac7e3cf4e33477892c657f596ff997f76 Mon Sep 17 00:00:00 2001 From: Claudio Wunder <cwunder@gnome.org> Date: Sun, 15 Jun 2025 15:25:01 +0200 Subject: [PATCH 0554/1385] hotfix: prettier top command should be turboe'd --- package.json | 2 +- turbo.json | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index bd993fd2a50da..2d3d55601e524 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "cloudflare:preview": "turbo cloudflare:preview", "deploy": "turbo deploy", "dev": "turbo dev", - "format": "turbo lint:fix prettier:fix", + "format": "turbo prettier:fix lint:fix", "lint": "turbo lint", "lint:fix": "turbo lint:fix", "lint:staged": "lint-staged", diff --git a/turbo.json b/turbo.json index c11f6e713bf33..cc50ef4e1c4e8 100644 --- a/turbo.json +++ b/turbo.json @@ -11,6 +11,13 @@ "lint": { "dependsOn": ["^topo"] }, + "prettier": { + "inputs": ["**/*.{js,mjs,ts,tsx,md,mdx,json,yml,css}"], + "outputs": [".prettiercache"] + }, + "prettier:fix": { + "dependsOn": ["^prettier"] + }, "test": { "dependsOn": ["^topo"] }, From 67219ab25838d8eaa23453887609b311acd8fc3c Mon Sep 17 00:00:00 2001 From: Daniel <16339876+dreusel@users.noreply.github.com> Date: Mon, 16 Jun 2025 04:50:39 +0200 Subject: [PATCH 0555/1385] docs: Mention --disable-sigusr1 in getting started guide (#7857) * Mention --disable-sigusr1 Signed-off-by: Daniel <16339876+dreusel@users.noreply.github.com> * Update apps/site/pages/en/learn/getting-started/debugging.md Co-authored-by: Aviv Keller <me@aviv.sh> Signed-off-by: Daniel <16339876+dreusel@users.noreply.github.com> * fix formatting --------- Signed-off-by: Daniel <16339876+dreusel@users.noreply.github.com> Co-authored-by: Aviv Keller <me@aviv.sh> Co-authored-by: Michael Esteban <mickel13@gmail.com> --- apps/site/pages/en/learn/getting-started/debugging.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/site/pages/en/learn/getting-started/debugging.md b/apps/site/pages/en/learn/getting-started/debugging.md index 89ee48b0c7eeb..e4603e03606be 100644 --- a/apps/site/pages/en/learn/getting-started/debugging.md +++ b/apps/site/pages/en/learn/getting-started/debugging.md @@ -129,6 +129,7 @@ The following table lists the impact of various runtime flags on debugging: | --inspect-brk=[host:port] | Enable inspector agent; Bind to address or hostname host (default: 127.0.0.1); Listen on port port (default: 9229); Break before user code starts | | --inspect-wait | Enable inspector agent; Listen on default address and port (127.0.0.1:9229); Wait for debugger to be attached. | | --inspect-wait=[host:port] | Enable inspector agent; Bind to address or hostname host (default: 127.0.0.1); Listen on port port (default: 9229); Wait for debugger to be attached. | +| --disable-sigusr1 | Disable the ability of starting a debugging session by sending a SIGUSR1 signal to the process. | | node inspect script.js | Spawn child process to run user's script under --inspect flag; and use main process to run CLI debugger. | | node inspect --port=xxxx script.js | Spawn child process to run user's script under --inspect flag; and use main process to run CLI debugger. Listen on port port (default: 9229) | From 3e5b666226ccb4786d036e9f71f33311ef0c1edf Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Tue, 17 Jun 2025 02:12:44 +0200 Subject: [PATCH 0556/1385] [automated]: crowdin sync (#7862) * 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 <support+bot@crowdin.com> Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- apps/site/pages/uk/about/previous-releases.mdx | 2 +- packages/i18n/locales/ja.json | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/site/pages/uk/about/previous-releases.mdx b/apps/site/pages/uk/about/previous-releases.mdx index 17b1240d727a8..2578a748c4b7a 100644 --- a/apps/site/pages/uk/about/previous-releases.mdx +++ b/apps/site/pages/uk/about/previous-releases.mdx @@ -18,7 +18,7 @@ layout: about ### Комерційна підтримка -Комерційна підтримка для версій після фази _Maintenance_ доступна з нашим партнером програми OpenJS Ecosystem Sustainability [HeroDevs](https://herodevs.com/). +Комерційна підтримка для версій після фази Maintenance доступна з нашим партнером програми OpenJS Ecosystem Sustainability [HeroDevs](https://www.herodevs.com/support/node-nes?utm_source=NodeJS+&utm_medium=Link&utm_campaign=Version_support_page). ## Шукаєте останній реліз гілки версії? diff --git a/packages/i18n/locales/ja.json b/packages/i18n/locales/ja.json index e023a8322f432..e08ca56dc88c4 100644 --- a/packages/i18n/locales/ja.json +++ b/packages/i18n/locales/ja.json @@ -238,9 +238,20 @@ "tableOfContents": "目次" }, "search": { - "searchBox": { - "placeholder": "入力を開始..." - } + "searchPlaceholder": "入力を開始...", + "chatPlaceholder": "なんでも聞いてください", + "noResultsFoundFor": "該当する結果が見つかりませんでした", + "suggestions": "候補", + "seeAll": "すべて表示", + "addMore": "さらに追加", + "clearChat": "チャットを削除", + "errorMessage": "検索中にエラーが起こりました。もう一度試してください。", + "disclaimer": "AIの情報は間違っている可能性があります。正しい情報かどうか注意してください。", + "startYourSearch": "検索を開始", + "initErrorSearch": "検索サービスを開始できません", + "initErrorChat": "チャットサービスを開始できません", + "chatButtonLabel": "AIの情報を確認する", + "searchButtonLabel": "検索" }, "blog": { "blogHeader": { From 616d437ef73a6e7fe45e42b0c20f8351cd20212c Mon Sep 17 00:00:00 2001 From: DongNyoung Lee <121621378+Dongnyoung@users.noreply.github.com> Date: Tue, 17 Jun 2025 09:14:01 +0900 Subject: [PATCH 0557/1385] feat: improve username sanitization in profiling example (#7868) Hello, This commit updates the username sanitization logic in the profiling example code to allow only alphanumeric characters. The original pattern (/[!@#$%^&*]/g) was limited and could lead to inconsistent behavior depending on input. Changed: - From: username = username.replace(/[!@#$%^&*]/g, '') - To: username = username.replace(/[^a-zA-Z0-9]/g, '') This change makes the input handling cleaner and more appropriate for educational purposes, aligning better with common sanitization practices. Relates to: #7867 Signed-off-by: DongNyoung Lee <121621378+Dongnyoung@users.noreply.github.com> --- apps/site/pages/en/learn/getting-started/profiling.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/site/pages/en/learn/getting-started/profiling.md b/apps/site/pages/en/learn/getting-started/profiling.md index 3ac8a481ea5ce..a5dba9f381568 100644 --- a/apps/site/pages/en/learn/getting-started/profiling.md +++ b/apps/site/pages/en/learn/getting-started/profiling.md @@ -41,7 +41,7 @@ app.get('/newUser', (req, res) => { let username = req.query.username || ''; const password = req.query.password || ''; - username = username.replace(/[!@#$%^&*]/g, ''); + username = username.replace(/[^a-zA-Z0-9]/g, ''); if (!username || !password || users[username]) { return res.sendStatus(400); @@ -63,7 +63,7 @@ app.get('/auth', (req, res) => { let username = req.query.username || ''; const password = req.query.password || ''; - username = username.replace(/[!@#$%^&*]/g, ''); + username = username.replace(/[^a-zA-Z0-9]/g, ''); if (!username || !password || !users[username]) { return res.sendStatus(400); @@ -228,7 +228,7 @@ app.get('/auth', (req, res) => { let username = req.query.username || ''; const password = req.query.password || ''; - username = username.replace(/[!@#$%^&*]/g, ''); + username = username.replace(/[^a-zA-Z0-9]/g, ''); if (!username || !password || !users[username]) { return res.sendStatus(400); From 8cf10eb7218cb2c7b5c6edbdec0de828c91d58f7 Mon Sep 17 00:00:00 2001 From: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> Date: Mon, 16 Jun 2025 22:22:06 -0700 Subject: [PATCH 0558/1385] feat(ui-components): add `ChangeHistory` (#7869) * feat(ui-components): add change history component * feat(ui-components): address copilot * feat(ui-components): address other copilot stuff * feat(ui-components): address other copilot stuff * feat(ui-components): add handling for className * feat(ui-components): address feedback on pr * feat(ui-components): address feedback on pr v2 * Update index.tsx Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Signed-off-by: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> * Update index.tsx Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Signed-off-by: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> * Update index.tsx Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> * Update index.tsx Co-authored-by: Caner Akdas <canerakdas@gmail.com> Signed-off-by: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> --------- Signed-off-by: Harkunwar Kochar <10580591+Harkunwar@users.noreply.github.com> Co-authored-by: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Co-authored-by: Caner Akdas <canerakdas@gmail.com> --- .../Common/ChangeHistory/index.module.css | 83 +++++++++++ .../Common/ChangeHistory/index.stories.tsx | 130 ++++++++++++++++++ .../Common/ChangeHistory/index.tsx | 67 +++++++++ 3 files changed, 280 insertions(+) create mode 100644 packages/ui-components/Common/ChangeHistory/index.module.css create mode 100644 packages/ui-components/Common/ChangeHistory/index.stories.tsx create mode 100644 packages/ui-components/Common/ChangeHistory/index.tsx diff --git a/packages/ui-components/Common/ChangeHistory/index.module.css b/packages/ui-components/Common/ChangeHistory/index.module.css new file mode 100644 index 0000000000000..c69d0e91896fa --- /dev/null +++ b/packages/ui-components/Common/ChangeHistory/index.module.css @@ -0,0 +1,83 @@ +@reference "../../styles/index.css"; + +.summary { + @apply outline-hidden + flex + h-9 + cursor-pointer + select-none + items-center + gap-2 + rounded-md + border + border-neutral-200 + p-2 + text-sm + text-neutral-700 + motion-safe:transition-colors + dark:border-neutral-900 + dark:text-neutral-300; + + &:hover, + &:focus-visible { + @apply bg-neutral-100 + dark:bg-neutral-900; + } +} + +.dropdownContentWrapper { + @apply absolute + right-0 + top-full + z-50 + mt-1 + max-h-80 + w-52 + overflow-hidden + rounded-sm + border + border-neutral-200 + bg-white + shadow-lg + dark:border-neutral-900 + dark:bg-neutral-950; +} + +.dropdownContentInner { + @apply max-h-80 + w-52 + overflow-y-auto; +} + +.dropdownItem { + @apply outline-hidden + block + px-2.5 + py-1.5 + text-sm + font-medium + text-neutral-800 + no-underline + motion-safe:transition-colors + dark:text-white; + + &:hover, + &:focus-visible { + @apply bg-green-600 + text-white; + } +} + +.dropdownLabel { + @apply block + text-sm + font-medium + leading-tight; +} + +.dropdownVersions { + @apply block + text-xs + leading-tight + opacity-75; +} diff --git a/packages/ui-components/Common/ChangeHistory/index.stories.tsx b/packages/ui-components/Common/ChangeHistory/index.stories.tsx new file mode 100644 index 0000000000000..f40b27a89a8ed --- /dev/null +++ b/packages/ui-components/Common/ChangeHistory/index.stories.tsx @@ -0,0 +1,130 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import ChangeHistory from '#ui/Common/ChangeHistory'; + +type Story = StoryObj<typeof ChangeHistory>; +type Meta = MetaObj<typeof ChangeHistory>; + +const SAMPLE_CHANGES = [ + { + versions: ['v15.4.0'], + label: 'No longer experimental', + url: 'https://github.com/nodejs/node/pull/12345', + }, + { + versions: ['v15.0.0', 'v14.17.0'], + label: 'Added in v15.0.0, v14.17.0', + url: 'https://github.com/nodejs/node/pull/67890', + }, + { + versions: ['v16.0.0'], + label: 'Deprecated in 16', + }, +]; + +const LARGE_SAMPLE_CHANGES = [ + { + versions: ['v20.0.0'], + label: 'Breaking change in v20', + url: 'https://github.com/nodejs/node/pull/50001', + }, + { + versions: ['v19.8.0'], + label: 'Performance improvement', + url: 'https://github.com/nodejs/node/pull/49999', + }, + { + versions: ['v19.0.0'], + label: 'API redesign', + url: 'https://github.com/nodejs/node/pull/49000', + }, + { + versions: ['v18.17.0', 'v18.16.1'], + label: 'Security fix backported', + url: 'https://github.com/nodejs/node/pull/48500', + }, + { + versions: ['v18.0.0'], + label: 'Major version release', + url: 'https://github.com/nodejs/node/pull/47000', + }, + { + versions: ['v17.9.0'], + label: 'Experimental feature added', + url: 'https://github.com/nodejs/node/pull/46500', + }, + { + versions: ['v17.0.0'], + label: 'Node.js 17 release', + url: 'https://github.com/nodejs/node/pull/45000', + }, + { + versions: ['v16.15.0', 'v16.14.2'], + label: 'Bug fix release', + url: 'https://github.com/nodejs/node/pull/44000', + }, + { + versions: ['v16.0.0'], + label: 'Deprecated in v16', + url: 'https://github.com/nodejs/node/pull/43000', + }, + { + versions: ['v15.14.0'], + label: 'Feature enhancement', + url: 'https://github.com/nodejs/node/pull/42000', + }, + { + versions: ['v15.0.0', 'v14.17.0'], + label: 'Initial implementation', + url: 'https://github.com/nodejs/node/pull/41000', + }, + { + versions: ['v14.18.0'], + label: 'Documentation update', + url: 'https://github.com/nodejs/node/pull/40000', + }, + { + versions: ['v14.0.0'], + label: 'Added to stable API', + url: 'https://github.com/nodejs/node/pull/39000', + }, + { + versions: ['v13.14.0'], + label: 'Experimental flag removed', + url: 'https://github.com/nodejs/node/pull/38000', + }, + { + versions: ['v12.22.0', 'v12.21.0'], + label: 'Backported to LTS', + url: 'https://github.com/nodejs/node/pull/37000', + }, + { + versions: ['v12.0.0'], + label: 'First experimental version', + url: 'https://github.com/nodejs/node/pull/36000', + }, +]; + +export const Default: Story = { + render: args => ( + <div className="right-0 flex justify-end"> + <ChangeHistory {...args} /> + </div> + ), + args: { + changes: SAMPLE_CHANGES, + }, +}; + +export const LargeHistory: Story = { + render: args => ( + <div className="right-0 flex justify-end"> + <ChangeHistory {...args} /> + </div> + ), + args: { + changes: LARGE_SAMPLE_CHANGES, + }, +}; + +export default { component: ChangeHistory } as Meta; diff --git a/packages/ui-components/Common/ChangeHistory/index.tsx b/packages/ui-components/Common/ChangeHistory/index.tsx new file mode 100644 index 0000000000000..3beaacc845186 --- /dev/null +++ b/packages/ui-components/Common/ChangeHistory/index.tsx @@ -0,0 +1,67 @@ +import { ChevronDownIcon, ClockIcon } from '@heroicons/react/24/outline'; +import classNames from 'classnames'; +import type { FC, ComponentProps } from 'react'; + +import type { LinkLike } from '#ui/types.js'; + +import styles from './index.module.css'; + +export type HistoryChange = { + versions: Array<string>; + label: string; + url?: string; +}; + +type ChangeHistoryProps = ComponentProps<'div'> & { + label: string; + changes: Array<HistoryChange>; + as?: LinkLike; +}; + +const ChangeHistory: FC<ChangeHistoryProps> = ({ + label = 'History', + changes = [], + className, + as: As = 'a', + 'aria-label': ariaLabel = label, + ...props +}) => ( + <div className={classNames('relative', 'inline-block', className)} {...props}> + <details className="group"> + <summary className={styles.summary} role="button" aria-haspopup="menu"> + <ClockIcon className="size-4" /> + <span>{label}</span> + <ChevronDownIcon className="size-3 group-open:rotate-180 motion-safe:transition-transform" /> + </summary> + <div + className={styles.dropdownContentWrapper} + role="menu" + aria-label={ariaLabel} + > + <div className={styles.dropdownContentInner}> + {changes.map((change, index) => { + const MenuItem = change.url ? As : 'div'; + + return ( + <MenuItem + key={index} + className={styles.dropdownItem} + role="menuitem" + tabIndex={0} + aria-label={`${change.label}: ${change.versions.join(', ')}`} + href={change.url} + > + <div className={styles.dropdownLabel}>{change.label}</div> + <div className={styles.dropdownVersions}> + {change.versions.join(', ')} + </div> + </MenuItem> + ); + })} + </div> + </div> + </details> + </div> +); + +export default ChangeHistory; From f137f856e622fd90026370263fcec5b6bc151842 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 17 Jun 2025 16:04:38 -0700 Subject: [PATCH 0559/1385] fix(meta): use active Figma link (#7874) Signed-off-by: Aviv Keller <me@aviv.sh> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6665bb8b80c5f..0682b430a5a7b 100644 --- a/README.md +++ b/README.md @@ -121,5 +121,5 @@ These are maintained in different repositories and we urge users to open **issue [content vs code]: https://github.com/nodejs/nodejs.org/blob/main/docs/content-vs-code.md [dependency pinning]: https://github.com/nodejs/nodejs.org/blob/main/docs/dependency-pinning.md [collaborator guide]: https://github.com/nodejs/nodejs.org/blob/main/docs/collaborator-guide.md -[figma design]: https://www.figma.com/file/pu1vZPqNIM7BePd6W8APA5/Node.js +[figma design]: https://www.figma.com/file/8fG0oWFQArJ7C9WbC9n2wa [translation guidelines]: https://github.com/nodejs/nodejs.org/blob/main/docs/translation.md From f1f22122c95a52030c7139b32405f323f332dd17 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 01:32:05 +0200 Subject: [PATCH 0560/1385] meta: bump @opennextjs/cloudflare from 1.0.0-beta.4 to 1.3.0 (#7870) Bumps [@opennextjs/cloudflare](https://github.com/opennextjs/opennextjs-cloudflare/tree/HEAD/packages/cloudflare) from 1.0.0-beta.4 to 1.3.0. - [Release notes](https://github.com/opennextjs/opennextjs-cloudflare/releases) - [Changelog](https://github.com/opennextjs/opennextjs-cloudflare/blob/main/packages/cloudflare/CHANGELOG.md) - [Commits](https://github.com/opennextjs/opennextjs-cloudflare/commits/@opennextjs/cloudflare@1.3.0/packages/cloudflare) --- updated-dependencies: - dependency-name: "@opennextjs/cloudflare" dependency-version: 1.3.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 2 +- pnpm-lock.yaml | 1822 +++++++++++++++++++++------------------- 2 files changed, 947 insertions(+), 877 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 6ad218fc016fb..21fb837465ad2 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -81,7 +81,7 @@ "@eslint/eslintrc": "~3.3.1", "@flarelabs-net/wrangler-build-time-fs-assets-polyfilling": "^0.0.0", "@next/eslint-plugin-next": "15.3.3", - "@opennextjs/cloudflare": "^1.0.0-beta.4", + "@opennextjs/cloudflare": "^1.3.0", "@playwright/test": "^1.52.0", "@testing-library/user-event": "~14.6.1", "@types/semver": "~7.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbe1bf2ac4b73..ceec0ef34f857 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -194,8 +194,8 @@ importers: specifier: 15.3.3 version: 15.3.3 '@opennextjs/cloudflare': - specifier: ^1.0.0-beta.4 - version: 1.0.0-beta.4(wrangler@4.14.1) + specifier: ^1.3.0 + version: 1.3.0(wrangler@4.14.1) '@playwright/test': specifier: ^1.52.0 version: 1.52.0 @@ -572,144 +572,144 @@ packages: resolution: {integrity: sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw==} engines: {node: '>=14.0.0'} - '@aws-sdk/client-dynamodb@3.803.0': - resolution: {integrity: sha512-rJPidxfyTQHz/1Naq3FukSoIt40GwXfv3npVR15bCBFpqx9TXEt7GoIUbiqm+Ftx8sx9hqJ6XNhf80FIa243gw==} + '@aws-sdk/client-dynamodb@3.830.0': + resolution: {integrity: sha512-jen+bjGipjJMkPKnnYDXPrq/6HYaNr/l4Axcr9RlbROHLmS+kRWqlViCqRtLN1DVFOOfldbD/qVUtiwUCBWI5A==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-lambda@3.803.0': - resolution: {integrity: sha512-7Mve1ol9yAElCXxruaS1y1Ffjy6CBYt4aYkxcrPctdmbVCzDh63ajBydkbldMQ7leR64l4/o26sec4vujuhFWw==} + '@aws-sdk/client-lambda@3.830.0': + resolution: {integrity: sha512-rdZPFteEN4Tw8vNVKh5rwPhf2zJz3cazx2gf1NSB8+GtleefY6bsAqyOQueSMSkE6fGZw7kmaPJBvWDxzMX4nQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-s3@3.803.0': - resolution: {integrity: sha512-Y8gw9Lun2qV5wU2diAqB1qEynV7wiz/oM9rtwhLagMvB6u9uO65+0qIN/gDInReCyI0XQ7sULqW8FjYhfSnWhQ==} + '@aws-sdk/client-s3@3.830.0': + resolution: {integrity: sha512-Cti+zj1lqvQIScXFQv8/t1xo3pvcvk/ObmGIbyLzfgcYpKMHaIWhzhi6aN+z4dYEv1EwrukC9tNoqScyShc5tw==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sqs@3.803.0': - resolution: {integrity: sha512-os2AQZAzcEkxBuxfI4AldQECSsM0IK6+m8WDVJKUW2c2JDYsGA99cZhRItEytu0t2qnATZAFCSEfL1nW4nKZqA==} + '@aws-sdk/client-sqs@3.830.0': + resolution: {integrity: sha512-akkCO/phYSQNLHNNCWZ2uN7e6fzmNUAUStzFMP0ipd6Pmr/fqbISDlkZyPW+J60qq2BDzueQrpxzrPTJZdO4hg==} engines: {node: '>=18.0.0'} '@aws-sdk/client-sso@3.398.0': resolution: {integrity: sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==} engines: {node: '>=14.0.0'} - '@aws-sdk/client-sso@3.803.0': - resolution: {integrity: sha512-TT3BRD1yiL3IGXBKfq560vvEdyOJtJr8bp+R82dD6P0IoS8aFcNtF822BOJy7CqvxksOc3hQKLaPVzE82gE8Ow==} + '@aws-sdk/client-sso@3.830.0': + resolution: {integrity: sha512-5zCEpfI+zwX2SIa258L+TItNbBoAvQQ6w74qdFM6YJufQ1F9tvwjTX8T+eSTT9nsFIvfYnUaGalWwJVfmJUgVQ==} engines: {node: '>=18.0.0'} '@aws-sdk/client-sts@3.398.0': resolution: {integrity: sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==} engines: {node: '>=14.0.0'} - '@aws-sdk/core@3.799.0': - resolution: {integrity: sha512-hkKF3Zpc6+H8GI1rlttYVRh9uEE77cqAzLmLpY3iu7sql8cZgPERRBfaFct8p1SaDyrksLNiboD1vKW58mbsYg==} + '@aws-sdk/core@3.826.0': + resolution: {integrity: sha512-BGbQYzWj3ps+dblq33FY5tz/SsgJCcXX0zjQlSC07tYvU1jHTUvsefphyig+fY38xZ4wdKjbTop+KUmXUYrOXw==} engines: {node: '>=18.0.0'} '@aws-sdk/credential-provider-env@3.398.0': resolution: {integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==} engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-env@3.799.0': - resolution: {integrity: sha512-vT/SSWtbUIOW/U21qgEySmmO44SFWIA7WeQPX1OrI8WJ5n7OEI23JWLHjLvHTkYmuZK6z1rPcv7HzRgmuGRibA==} + '@aws-sdk/credential-provider-env@3.826.0': + resolution: {integrity: sha512-DK3pQY8+iKK3MGDdC3uOZQ2psU01obaKlTYhEwNu4VWzgwQL4Vi3sWj4xSWGEK41vqZxiRLq6fOq7ysRI+qEZA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.799.0': - resolution: {integrity: sha512-2CjBpOWmhaPAExOgHnIB5nOkS5ef+mfRlJ1JC4nsnjAx0nrK4tk0XRE0LYz11P3+ue+a86cU8WTmBo+qjnGxPQ==} + '@aws-sdk/credential-provider-http@3.826.0': + resolution: {integrity: sha512-N+IVZBh+yx/9GbMZTKO/gErBi/FYZQtcFRItoLbY+6WU+0cSWyZYfkoeOxHmQV3iX9k65oljERIWUmL9x6OSQg==} engines: {node: '>=18.0.0'} '@aws-sdk/credential-provider-ini@3.398.0': resolution: {integrity: sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==} engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-ini@3.803.0': - resolution: {integrity: sha512-XtbFftJex18GobpRWJxg5V7stVwvmV2gdBYW+zRM0YW6NZAR4NP/4vcc9ktM3++BWW5OF4Kvl7Nu7N4mAzRHmw==} + '@aws-sdk/credential-provider-ini@3.830.0': + resolution: {integrity: sha512-zeQenzvh8JRY5nULd8izdjVGoCM1tgsVVsrLSwDkHxZTTW0hW/bmOmXfvdaE0wDdomXW7m2CkQDSmP7XdvNXZg==} engines: {node: '>=18.0.0'} '@aws-sdk/credential-provider-node@3.398.0': resolution: {integrity: sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==} engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-node@3.803.0': - resolution: {integrity: sha512-lPdRYbjxwmv7gRqbaEe1Y1Yl5fD4c43AuK3P31eKjf1j41hZEQ0dg9a9KLk7i6ehEoVsxewnJrvbC2pVoYrCmQ==} + '@aws-sdk/credential-provider-node@3.830.0': + resolution: {integrity: sha512-X/2LrTgwtK1pkWrvofxQBI8VTi6QVLtSMpsKKPPnJQ0vgqC0e4czSIs3ZxiEsOkCBaQ2usXSiKyh0ccsQ6k2OA==} engines: {node: '>=18.0.0'} '@aws-sdk/credential-provider-process@3.398.0': resolution: {integrity: sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==} engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-process@3.799.0': - resolution: {integrity: sha512-g8jmNs2k98WNHMYcea1YKA+7ao2Ma4w0P42Dz4YpcI155pQHxHx25RwbOG+rsAKuo3bKwkW53HVE/ZTKhcWFgw==} + '@aws-sdk/credential-provider-process@3.826.0': + resolution: {integrity: sha512-kURrc4amu3NLtw1yZw7EoLNEVhmOMRUTs+chaNcmS+ERm3yK0nKjaJzmKahmwlTQTSl3wJ8jjK7x962VPo+zWw==} engines: {node: '>=18.0.0'} '@aws-sdk/credential-provider-sso@3.398.0': resolution: {integrity: sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==} engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-sso@3.803.0': - resolution: {integrity: sha512-HEAcxSHrHxVekGnZqjFrkqdYAf4jFiZIMhuh0jqiqY6A4udEyXy1V623HVcTz/XXj6UBRnyD+zmOmlbzBvkfQg==} + '@aws-sdk/credential-provider-sso@3.830.0': + resolution: {integrity: sha512-+VdRpZmfekzpySqZikAKx6l5ndnLGluioIgUG4ZznrButgFD/iogzFtGmBDFB3ZLViX1l4pMXru0zFwJEZT21Q==} engines: {node: '>=18.0.0'} '@aws-sdk/credential-provider-web-identity@3.398.0': resolution: {integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==} engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-web-identity@3.803.0': - resolution: {integrity: sha512-oChnEpwI25OW4GPvhI1VnXM3IQEkDhESGFZd5JHzJDHyvSF2NU58V86jkJyaa4H4X25IbGaThuulNI5xCOngjw==} + '@aws-sdk/credential-provider-web-identity@3.830.0': + resolution: {integrity: sha512-hPYrKsZeeOdLROJ59T6Y8yZ0iwC/60L3qhZXjapBFjbqBtMaQiMTI645K6xVXBioA6vxXq7B4aLOhYqk6Fy/Ww==} engines: {node: '>=18.0.0'} - '@aws-sdk/endpoint-cache@3.723.0': - resolution: {integrity: sha512-2+a4WXRc+07uiPR+zJiPGKSOWaNJQNqitkks+6Hhm/haTLJqNVTgY2OWDh2PXvwMNpKB+AlGdhE65Oy6NzUgXg==} + '@aws-sdk/endpoint-cache@3.804.0': + resolution: {integrity: sha512-TQVDkA/lV6ua75ELZaichMzlp6x7tDa1bqdy/+0ZftmODPtKXuOOEcJxmdN7Ui/YRo1gkRz2D9txYy7IlNg1Og==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.775.0': - resolution: {integrity: sha512-qogMIpVChDYr4xiUNC19/RDSw/sKoHkAhouS6Skxiy6s27HBhow1L3Z1qVYXuBmOZGSWPU0xiyZCvOyWrv9s+Q==} + '@aws-sdk/middleware-bucket-endpoint@3.830.0': + resolution: {integrity: sha512-ElVeCReZSH5Ds+/pkL5ebneJjuo8f49e9JXV1cYizuH0OAOQfYaBU9+M+7+rn61pTttOFE8W//qKzrXBBJhfMg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-endpoint-discovery@3.775.0': - resolution: {integrity: sha512-L0PmjSg7t+wovRo/Lin1kpei3e7wBhrENWb1Bbccu3PWUIfxolGeWplOmNhSlXjuQe9GXjf3z8kJRYOGBMFOvw==} + '@aws-sdk/middleware-endpoint-discovery@3.821.0': + resolution: {integrity: sha512-8EguERzvpzTN2WrPaspK/F9GSkAzBQbecgIaCL49rJWKAso+ewmVVPnrXGzbeGVXTk4G0XuWSjt8wqUzZyt7wQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-expect-continue@3.775.0': - resolution: {integrity: sha512-Apd3owkIeUW5dnk3au9np2IdW2N0zc9NjTjHiH+Mx3zqwSrc+m+ANgJVgk9mnQjMzU/vb7VuxJ0eqdEbp5gYsg==} + '@aws-sdk/middleware-expect-continue@3.821.0': + resolution: {integrity: sha512-zAOoSZKe1njOrtynvK6ZORU57YGv5I7KP4+rwOvUN3ZhJbQ7QPf8gKtFUCYAPRMegaXCKF/ADPtDZBAmM+zZ9g==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.799.0': - resolution: {integrity: sha512-vBIAdDl2neaFiUMxyr7dAtX7m9Iw5c0bz7OirD0JGW0nYn0mBcqKpFZEU75ewA5p2+Cm7RQDdt6099ne3gj0WA==} + '@aws-sdk/middleware-flexible-checksums@3.826.0': + resolution: {integrity: sha512-Fz9w8CFYPfSlHEB6feSsi06hdS+s+FB8k5pO4L7IV0tUa78mlhxF/VNlAJaVWYyOkZXl4HPH2K48aapACSQOXw==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-host-header@3.398.0': resolution: {integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==} engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-host-header@3.775.0': - resolution: {integrity: sha512-tkSegM0Z6WMXpLB8oPys/d+umYIocvO298mGvcMCncpRl77L9XkvSLJIFzaHes+o7djAgIduYw8wKIMStFss2w==} + '@aws-sdk/middleware-host-header@3.821.0': + resolution: {integrity: sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.775.0': - resolution: {integrity: sha512-8TMXEHZXZTFTckQLyBT5aEI8fX11HZcwZseRifvBKKpj0RZDk4F0EEYGxeNSPpUQ7n+PRWyfAEnnZNRdAj/1NQ==} + '@aws-sdk/middleware-location-constraint@3.821.0': + resolution: {integrity: sha512-sKrm80k0t3R0on8aA/WhWFoMaAl4yvdk+riotmMElLUpcMcRXAd1+600uFVrxJqZdbrKQ0mjX0PjT68DlkYXLg==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-logger@3.398.0': resolution: {integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==} engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-logger@3.775.0': - resolution: {integrity: sha512-FaxO1xom4MAoUJsldmR92nT1G6uZxTdNYOFYtdHfd6N2wcNaTuxgjIvqzg5y7QIH9kn58XX/dzf1iTjgqUStZw==} + '@aws-sdk/middleware-logger@3.821.0': + resolution: {integrity: sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-recursion-detection@3.398.0': resolution: {integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==} engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-recursion-detection@3.775.0': - resolution: {integrity: sha512-GLCzC8D0A0YDG5u3F5U03Vb9j5tcOEFhr8oc6PDk0k0vm5VwtZOE6LvK7hcCSoAB4HXyOUM0sQuXrbaAh9OwXA==} + '@aws-sdk/middleware-recursion-detection@3.821.0': + resolution: {integrity: sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.799.0': - resolution: {integrity: sha512-Zwdge5NArgcJwPuGZwgfXY6XXkWEBmMS9dqu5g3DcfHmZUuSjQUqmOsDdSZlE3RFHrDAEbuGQlrFUE8zuwdKQA==} + '@aws-sdk/middleware-sdk-s3@3.826.0': + resolution: {integrity: sha512-8F0qWaYKfvD/de1AKccXuigM+gb/IZSncCqxdnFWqd+TFzo9qI9Hh+TpUhWOMYSgxsMsYQ8ipmLzlD/lDhjrmA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-sqs@3.798.0': - resolution: {integrity: sha512-vWIlwbgNuWJ4FvsEMCN5CLdwUzCvIU20QT4g0g05+y0CbXCD3FIhcRyQv3LF1tujZNSvQp9z7FZsfghm9oLFLw==} + '@aws-sdk/middleware-sdk-sqs@3.826.0': + resolution: {integrity: sha512-NDnA7Fb6AT+AO1tvm9i5WFS+a+nIMtjYY6gYXPUu0GhT2FFkZfRvagOKoXVH+Vddo5iQRbNx4/1Zb1Z7vB42cA==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-sdk-sts@3.398.0': @@ -720,67 +720,67 @@ packages: resolution: {integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==} engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-ssec@3.775.0': - resolution: {integrity: sha512-Iw1RHD8vfAWWPzBBIKaojO4GAvQkHOYIpKdAfis/EUSUmSa79QsnXnRqsdcE0mCB0Ylj23yi+ah4/0wh9FsekA==} + '@aws-sdk/middleware-ssec@3.821.0': + resolution: {integrity: sha512-YYi1Hhr2AYiU/24cQc8HIB+SWbQo6FBkMYojVuz/zgrtkFmALxENGF/21OPg7f/QWd+eadZJRxCjmRwh5F2Cxg==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-user-agent@3.398.0': resolution: {integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==} engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-user-agent@3.799.0': - resolution: {integrity: sha512-TropQZanbOTxa+p+Nl4fWkzlRhgFwDfW+Wb6TR3jZN7IXHNlPpgGFpdrgvBExhW/RBhqr+94OsR8Ou58lp3hhA==} + '@aws-sdk/middleware-user-agent@3.828.0': + resolution: {integrity: sha512-nixvI/SETXRdmrVab4D9LvXT3lrXkwAWGWk2GVvQvzlqN1/M/RfClj+o37Sn4FqRkGH9o9g7Fqb1YqZ4mqDAtA==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.803.0': - resolution: {integrity: sha512-wiWiYaFQxK2u37G9IOXuWkHelEbU8ulLxdHpoPf0TSu/1boqLW7fcofuZATAvFcvigQx3oebwO8G4c/mmixTTw==} + '@aws-sdk/nested-clients@3.830.0': + resolution: {integrity: sha512-5N5YTlBr1vtxf7+t+UaIQ625KEAmm7fY9o1e3MgGOi/paBoI0+axr3ud24qLIy0NSzFlAHEaxUSWxcERNjIoZw==} engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.775.0': - resolution: {integrity: sha512-40iH3LJjrQS3LKUJAl7Wj0bln7RFPEvUYKFxtP8a+oKFDO0F65F52xZxIJbPn6sHkxWDAnZlGgdjZXM3p2g5wQ==} + '@aws-sdk/region-config-resolver@3.821.0': + resolution: {integrity: sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.803.0': - resolution: {integrity: sha512-9ZyjR68r5N6meBUSLwus7W+1ojYllD67WrrY8JOMQkiQLMoLty6VzlbFgQtRYaJxJx1IzNWvrdU+SgXRm+L5oQ==} + '@aws-sdk/signature-v4-multi-region@3.826.0': + resolution: {integrity: sha512-3fEi/zy6tpMzomYosksGtu7jZqGFcdBXoL7YRsG7OEeQzBbOW9B+fVaQZ4jnsViSjzA/yKydLahMrfPnt+iaxg==} engines: {node: '>=18.0.0'} '@aws-sdk/token-providers@3.398.0': resolution: {integrity: sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==} engines: {node: '>=14.0.0'} - '@aws-sdk/token-providers@3.803.0': - resolution: {integrity: sha512-lDbMgVjWWEPT7a6lLaAEPPljwOeLTjPX2sJ7MoDICpQotg4Yd8cQfX3nqScSyLAGSc7Rq/21UPnPoij/E0K3lg==} + '@aws-sdk/token-providers@3.830.0': + resolution: {integrity: sha512-aJ4guFwj92nV9D+EgJPaCFKK0I3y2uMchiDfh69Zqnmwfxxxfxat6F79VA7PS0BdbjRfhLbn+Ghjftnomu2c1g==} engines: {node: '>=18.0.0'} '@aws-sdk/types@3.398.0': resolution: {integrity: sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==} engines: {node: '>=14.0.0'} - '@aws-sdk/types@3.775.0': - resolution: {integrity: sha512-ZoGKwa4C9fC9Av6bdfqcW6Ix5ot05F/S4VxWR2nHuMv7hzfmAjTOcUiWT7UR4hM/U0whf84VhDtXN/DWAk52KA==} + '@aws-sdk/types@3.821.0': + resolution: {integrity: sha512-Znroqdai1a90TlxGaJ+FK1lwC0fHpo97Xjsp5UKGR5JODYm7f9+/fF17ebO1KdoBr/Rm0UIFiF5VmI8ts9F1eA==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-arn-parser@3.723.0': - resolution: {integrity: sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==} + '@aws-sdk/util-arn-parser@3.804.0': + resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} engines: {node: '>=18.0.0'} '@aws-sdk/util-endpoints@3.398.0': resolution: {integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==} engines: {node: '>=14.0.0'} - '@aws-sdk/util-endpoints@3.787.0': - resolution: {integrity: sha512-fd3zkiOkwnbdbN0Xp9TsP5SWrmv0SpT70YEdbb8wAj2DWQwiCmFszaSs+YCvhoCdmlR3Wl9Spu0pGpSAGKeYvQ==} + '@aws-sdk/util-endpoints@3.828.0': + resolution: {integrity: sha512-RvKch111SblqdkPzg3oCIdlGxlQs+k+P7Etory9FmxPHyPDvsP1j1c74PmgYqtzzMWmoXTjd+c9naUHh9xG8xg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-locate-window@3.723.0': - resolution: {integrity: sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw==} + '@aws-sdk/util-locate-window@3.804.0': + resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} engines: {node: '>=18.0.0'} '@aws-sdk/util-user-agent-browser@3.398.0': resolution: {integrity: sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==} - '@aws-sdk/util-user-agent-browser@3.775.0': - resolution: {integrity: sha512-txw2wkiJmZKVdDbscK7VBK+u+TJnRtlUjRTLei+elZg2ADhpQxfVAQl436FUeIv6AhB/oRHW6/K/EAGXUSWi0A==} + '@aws-sdk/util-user-agent-browser@3.821.0': + resolution: {integrity: sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==} '@aws-sdk/util-user-agent-node@3.398.0': resolution: {integrity: sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==} @@ -791,8 +791,8 @@ packages: aws-crt: optional: true - '@aws-sdk/util-user-agent-node@3.799.0': - resolution: {integrity: sha512-iXBk38RbIWPF5Nq9O4AnktORAzXovSVqWYClvS1qbE7ILsnTLJbagU9HlU25O2iV5COVh1qZkwuP5NHQ2yTEyw==} + '@aws-sdk/util-user-agent-node@3.828.0': + resolution: {integrity: sha512-LdN6fTBzTlQmc8O8f1wiZN0qF3yBWVGis7NwpWK7FUEzP9bEZRxYfIkV9oV9zpt6iNRze1SedK3JQVB/udxBoA==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -807,8 +807,8 @@ packages: resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} engines: {node: '>=14.0.0'} - '@aws-sdk/xml-builder@3.775.0': - resolution: {integrity: sha512-b9NGO6FKJeLGYnV7Z1yvcP1TNU4dkD5jNsLWOF1/sygZoASaQhNOlaiJ/1OH331YQ1R1oWk38nBb0frsYkDsOQ==} + '@aws-sdk/xml-builder@3.821.0': + resolution: {integrity: sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.27.1': @@ -866,8 +866,8 @@ packages: resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.4': - resolution: {integrity: sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==} + '@babel/runtime@7.27.6': + resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} '@babel/template@7.27.1': @@ -1004,11 +1004,11 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.19.2': - resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] '@esbuild/android-arm64@0.25.2': resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} @@ -1022,10 +1022,10 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.19.2': - resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} - engines: {node: '>=12'} - cpu: [arm] + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] os: [android] '@esbuild/android-arm@0.25.2': @@ -1040,10 +1040,10 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.19.2': - resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] os: [android] '@esbuild/android-x64@0.25.2': @@ -1058,11 +1058,11 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.19.2': - resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] '@esbuild/darwin-arm64@0.25.2': resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} @@ -1076,10 +1076,10 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.19.2': - resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.25.2': @@ -1094,11 +1094,11 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.19.2': - resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] '@esbuild/freebsd-arm64@0.25.2': resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} @@ -1112,10 +1112,10 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.19.2': - resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.25.2': @@ -1130,11 +1130,11 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.19.2': - resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] '@esbuild/linux-arm64@0.25.2': resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} @@ -1148,10 +1148,10 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.19.2': - resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} - engines: {node: '>=12'} - cpu: [arm] + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.25.2': @@ -1166,10 +1166,10 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.19.2': - resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} - engines: {node: '>=12'} - cpu: [ia32] + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.25.2': @@ -1184,10 +1184,10 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.19.2': - resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} - engines: {node: '>=12'} - cpu: [loong64] + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.25.2': @@ -1202,10 +1202,10 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.19.2': - resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} - engines: {node: '>=12'} - cpu: [mips64el] + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.25.2': @@ -1220,10 +1220,10 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.19.2': - resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} - engines: {node: '>=12'} - cpu: [ppc64] + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.25.2': @@ -1238,10 +1238,10 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.19.2': - resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} - engines: {node: '>=12'} - cpu: [riscv64] + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.25.2': @@ -1256,10 +1256,10 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.19.2': - resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} - engines: {node: '>=12'} - cpu: [s390x] + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.25.2': @@ -1274,10 +1274,10 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.19.2': - resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.25.2': @@ -1292,6 +1292,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.2': resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} engines: {node: '>=18'} @@ -1304,10 +1310,10 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.19.2': - resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.25.2': @@ -1322,6 +1328,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.2': resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} engines: {node: '>=18'} @@ -1334,10 +1346,10 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.19.2': - resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.25.2': @@ -1352,11 +1364,11 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.19.2': - resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} - engines: {node: '>=12'} + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} cpu: [x64] - os: [sunos] + os: [openbsd] '@esbuild/sunos-x64@0.25.2': resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} @@ -1370,11 +1382,11 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.19.2': - resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] '@esbuild/win32-arm64@0.25.2': resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} @@ -1388,10 +1400,10 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.19.2': - resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} - engines: {node: '>=12'} - cpu: [ia32] + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.25.2': @@ -1406,10 +1418,10 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.19.2': - resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.25.2': @@ -1424,6 +1436,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1868,8 +1886,8 @@ packages: resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} - '@noble/curves@1.9.0': - resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} + '@noble/curves@1.9.2': + resolution: {integrity: sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==} engines: {node: ^14.21.3 || >=16} '@noble/hashes@1.8.0': @@ -1934,15 +1952,15 @@ packages: resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} engines: {node: ^16.14.0 || >=18.0.0} - '@opennextjs/aws@3.5.7': - resolution: {integrity: sha512-YjyHJrkIHI7YwQRCp8GjDOudu86oOc1RiwxvBBpPHrplsS18H4ZmkzGggAKhK6B4myGsJQ/q9kNP2TraoZiNzg==} + '@opennextjs/aws@3.6.5': + resolution: {integrity: sha512-wni+CWlRCyWfhNfekQBBPPkrDDnaGdZLN9hMybKI0wKOKTO+zhPOqR65Eh3V0pzWAi84Sureb5mdMuLwCxAAcw==} hasBin: true - '@opennextjs/cloudflare@1.0.0-beta.4': - resolution: {integrity: sha512-/nEFnjrn8oxfZgW03ZgMzwJvcQ/U/MuXCTIABYvIGnja1+KxFZEc46GFGSxjTwdz4Hmt2eutaEGpQOqC6uRR3w==} + '@opennextjs/cloudflare@1.3.0': + resolution: {integrity: sha512-3a/hHJ61laPEfPwiZAzMAbZ1ylegTBPY0fGcOlOJ3eGxE2c7XVGsDwCMcVmo9u5zJo4kcUXkcVKGheFkSN/pUg==} hasBin: true peerDependencies: - wrangler: ^4.7.0 + wrangler: ^4.19.1 '@opentelemetry/api-logs@0.202.0': resolution: {integrity: sha512-fTBjMqKCfotFWfLzaKyhjLvyEyq5vDKTTFfBmx21btv3gvy8Lq6N5Dh2OzqeuN4DjtpSvNT1uNVfg08eD2Rfxw==} @@ -2555,8 +2573,8 @@ packages: resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} engines: {node: '>=14.0.0'} - '@smithy/abort-controller@4.0.2': - resolution: {integrity: sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==} + '@smithy/abort-controller@4.0.4': + resolution: {integrity: sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==} engines: {node: '>=18.0.0'} '@smithy/chunked-blob-reader-native@4.0.0': @@ -2571,70 +2589,70 @@ packages: resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} engines: {node: '>=14.0.0'} - '@smithy/config-resolver@4.1.0': - resolution: {integrity: sha512-8smPlwhga22pwl23fM5ew4T9vfLUCeFXlcqNOCD5M5h8VmNPNUE9j6bQSuRXpDSV11L/E/SwEBQuW8hr6+nS1A==} + '@smithy/config-resolver@4.1.4': + resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} engines: {node: '>=18.0.0'} - '@smithy/core@3.3.1': - resolution: {integrity: sha512-W7AppgQD3fP1aBmo8wWo0id5zeR2/aYRy067vZsDVaa6v/mdhkg6DxXwEVuSPjZl+ZnvWAQbUMCd5ckw38+tHQ==} + '@smithy/core@3.5.3': + resolution: {integrity: sha512-xa5byV9fEguZNofCclv6v9ra0FYh5FATQW/da7FQUVTic94DfrN/NvmKZjrMyzbpqfot9ZjBaO8U1UeTbmSLuA==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@2.3.0': resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} engines: {node: '>=14.0.0'} - '@smithy/credential-provider-imds@4.0.2': - resolution: {integrity: sha512-32lVig6jCaWBHnY+OEQ6e6Vnt5vDHaLiydGrwYMW9tPqO688hPGTYRamYJ1EptxEC2rAwJrHWmPoKRBl4iTa8w==} + '@smithy/credential-provider-imds@4.0.6': + resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@4.0.2': - resolution: {integrity: sha512-p+f2kLSK7ZrXVfskU/f5dzksKTewZk8pJLPvER3aFHPt76C2MxD9vNatSfLzzQSQB4FNO96RK4PSXfhD1TTeMQ==} + '@smithy/eventstream-codec@4.0.4': + resolution: {integrity: sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@4.0.2': - resolution: {integrity: sha512-CepZCDs2xgVUtH7ZZ7oDdZFH8e6Y2zOv8iiX6RhndH69nlojCALSKK+OXwZUgOtUZEUaZ5e1hULVCHYbCn7pug==} + '@smithy/eventstream-serde-browser@4.0.4': + resolution: {integrity: sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.1.0': - resolution: {integrity: sha512-1PI+WPZ5TWXrfj3CIoKyUycYynYJgZjuQo8U+sphneOtjsgrttYybdqESFReQrdWJ+LKt6NEdbYzmmfDBmjX2A==} + '@smithy/eventstream-serde-config-resolver@4.1.2': + resolution: {integrity: sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.0.2': - resolution: {integrity: sha512-C5bJ/C6x9ENPMx2cFOirspnF9ZsBVnBMtP6BdPl/qYSuUawdGQ34Lq0dMcf42QTjUZgWGbUIZnz6+zLxJlb9aw==} + '@smithy/eventstream-serde-node@4.0.4': + resolution: {integrity: sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.0.2': - resolution: {integrity: sha512-St8h9JqzvnbB52FtckiHPN4U/cnXcarMniXRXTKn0r4b4XesZOGiAyUdj1aXbqqn1icSqBlzzUsCl6nPB018ng==} + '@smithy/eventstream-serde-universal@4.0.4': + resolution: {integrity: sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==} engines: {node: '>=18.0.0'} '@smithy/fetch-http-handler@2.5.0': resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} - '@smithy/fetch-http-handler@5.0.2': - resolution: {integrity: sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==} + '@smithy/fetch-http-handler@5.0.4': + resolution: {integrity: sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==} engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.0.2': - resolution: {integrity: sha512-3g188Z3DyhtzfBRxpZjU8R9PpOQuYsbNnyStc/ZVS+9nVX1f6XeNOa9IrAh35HwwIZg+XWk8bFVtNINVscBP+g==} + '@smithy/hash-blob-browser@4.0.4': + resolution: {integrity: sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==} engines: {node: '>=18.0.0'} '@smithy/hash-node@2.2.0': resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} engines: {node: '>=14.0.0'} - '@smithy/hash-node@4.0.2': - resolution: {integrity: sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==} + '@smithy/hash-node@4.0.4': + resolution: {integrity: sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==} engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@4.0.2': - resolution: {integrity: sha512-POWDuTznzbIwlEXEvvXoPMS10y0WKXK790soe57tFRfvf4zBHyzE529HpZMqmDdwG9MfFflnyzndUQ8j78ZdSg==} + '@smithy/hash-stream-node@4.0.4': + resolution: {integrity: sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==} engines: {node: '>=18.0.0'} '@smithy/invalid-dependency@2.2.0': resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} - '@smithy/invalid-dependency@4.0.2': - resolution: {integrity: sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==} + '@smithy/invalid-dependency@4.0.4': + resolution: {integrity: sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': @@ -2645,72 +2663,72 @@ packages: resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} engines: {node: '>=18.0.0'} - '@smithy/md5-js@4.0.2': - resolution: {integrity: sha512-Hc0R8EiuVunUewCse2syVgA2AfSRco3LyAv07B/zCOMa+jpXI9ll+Q21Nc6FAlYPcpNcAXqBzMhNs1CD/pP2bA==} + '@smithy/md5-js@4.0.4': + resolution: {integrity: sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==} engines: {node: '>=18.0.0'} '@smithy/middleware-content-length@2.2.0': resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} engines: {node: '>=14.0.0'} - '@smithy/middleware-content-length@4.0.2': - resolution: {integrity: sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==} + '@smithy/middleware-content-length@4.0.4': + resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} '@smithy/middleware-endpoint@2.5.1': resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} engines: {node: '>=14.0.0'} - '@smithy/middleware-endpoint@4.1.2': - resolution: {integrity: sha512-EqOy3xaEGQpsKxLlzYstDRJ8eY90CbyBP4cl+w7r45mE60S8YliyL9AgWsdWcyNiB95E2PMqHBEv67nNl1zLfg==} + '@smithy/middleware-endpoint@4.1.11': + resolution: {integrity: sha512-zDogwtRLzKl58lVS8wPcARevFZNBOOqnmzWWxVe9XiaXU2CADFjvJ9XfNibgkOWs08sxLuSr81NrpY4mgp9OwQ==} engines: {node: '>=18.0.0'} '@smithy/middleware-retry@2.3.1': resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} engines: {node: '>=14.0.0'} - '@smithy/middleware-retry@4.1.3': - resolution: {integrity: sha512-AsJtI9KiFoEGAhcEKZyzzPfrszAQGcf4HSYKmenz0WGx/6YNvoPPv4OSGfZTCsDmgPHv4pXzxE+7QV7jcGWNKw==} + '@smithy/middleware-retry@4.1.12': + resolution: {integrity: sha512-wvIH70c4e91NtRxdaLZF+mbLZ/HcC6yg7ySKUiufL6ESp6zJUSnJucZ309AvG9nqCFHSRB5I6T3Ez1Q9wCh0Ww==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@2.3.0': resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} engines: {node: '>=14.0.0'} - '@smithy/middleware-serde@4.0.3': - resolution: {integrity: sha512-rfgDVrgLEVMmMn0BI8O+8OVr6vXzjV7HZj57l0QxslhzbvVfikZbVfBVthjLHqib4BW44QhcIgJpvebHlRaC9A==} + '@smithy/middleware-serde@4.0.8': + resolution: {integrity: sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==} engines: {node: '>=18.0.0'} '@smithy/middleware-stack@2.2.0': resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} engines: {node: '>=14.0.0'} - '@smithy/middleware-stack@4.0.2': - resolution: {integrity: sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==} + '@smithy/middleware-stack@4.0.4': + resolution: {integrity: sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==} engines: {node: '>=18.0.0'} '@smithy/node-config-provider@2.3.0': resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} engines: {node: '>=14.0.0'} - '@smithy/node-config-provider@4.0.2': - resolution: {integrity: sha512-WgCkILRZfJwJ4Da92a6t3ozN/zcvYyJGUTmfGbgS/FkCcoCjl7G4FJaCDN1ySdvLvemnQeo25FdkyMSTSwulsw==} + '@smithy/node-config-provider@4.1.3': + resolution: {integrity: sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==} engines: {node: '>=18.0.0'} '@smithy/node-http-handler@2.5.0': resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} engines: {node: '>=14.0.0'} - '@smithy/node-http-handler@4.0.4': - resolution: {integrity: sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==} + '@smithy/node-http-handler@4.0.6': + resolution: {integrity: sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==} engines: {node: '>=18.0.0'} '@smithy/property-provider@2.2.0': resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} engines: {node: '>=14.0.0'} - '@smithy/property-provider@4.0.2': - resolution: {integrity: sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==} + '@smithy/property-provider@4.0.4': + resolution: {integrity: sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==} engines: {node: '>=18.0.0'} '@smithy/protocol-http@2.0.5': @@ -2721,71 +2739,71 @@ packages: resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} engines: {node: '>=14.0.0'} - '@smithy/protocol-http@5.1.0': - resolution: {integrity: sha512-KxAOL1nUNw2JTYrtviRRjEnykIDhxc84qMBzxvu1MUfQfHTuBlCG7PA6EdVwqpJjH7glw7FqQoFxUJSyBQgu7g==} + '@smithy/protocol-http@5.1.2': + resolution: {integrity: sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==} engines: {node: '>=18.0.0'} '@smithy/querystring-builder@2.2.0': resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} engines: {node: '>=14.0.0'} - '@smithy/querystring-builder@4.0.2': - resolution: {integrity: sha512-NTOs0FwHw1vimmQM4ebh+wFQvOwkEf/kQL6bSM1Lock+Bv4I89B3hGYoUEPkmvYPkDKyp5UdXJYu+PoTQ3T31Q==} + '@smithy/querystring-builder@4.0.4': + resolution: {integrity: sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==} engines: {node: '>=18.0.0'} '@smithy/querystring-parser@2.2.0': resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} engines: {node: '>=14.0.0'} - '@smithy/querystring-parser@4.0.2': - resolution: {integrity: sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==} + '@smithy/querystring-parser@4.0.4': + resolution: {integrity: sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==} engines: {node: '>=18.0.0'} '@smithy/service-error-classification@2.1.5': resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} engines: {node: '>=14.0.0'} - '@smithy/service-error-classification@4.0.3': - resolution: {integrity: sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==} + '@smithy/service-error-classification@4.0.5': + resolution: {integrity: sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==} engines: {node: '>=18.0.0'} '@smithy/shared-ini-file-loader@2.4.0': resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} engines: {node: '>=14.0.0'} - '@smithy/shared-ini-file-loader@4.0.2': - resolution: {integrity: sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==} + '@smithy/shared-ini-file-loader@4.0.4': + resolution: {integrity: sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==} engines: {node: '>=18.0.0'} '@smithy/signature-v4@2.3.0': resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} engines: {node: '>=14.0.0'} - '@smithy/signature-v4@5.1.0': - resolution: {integrity: sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==} + '@smithy/signature-v4@5.1.2': + resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} '@smithy/smithy-client@2.5.1': resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} engines: {node: '>=14.0.0'} - '@smithy/smithy-client@4.2.2': - resolution: {integrity: sha512-3AnHfsMdq9Wg7+3BeR1HuLWI9+DMA/SoHVpCWq6xSsa52ikNd6nlF/wFzdpHyGtVa+Aji6lMgvwOF4sGcVA7SA==} + '@smithy/smithy-client@4.4.3': + resolution: {integrity: sha512-xxzNYgA0HD6ETCe5QJubsxP0hQH3QK3kbpJz3QrosBCuIWyEXLR/CO5hFb2OeawEKUxMNhz3a1nuJNN2np2RMA==} engines: {node: '>=18.0.0'} '@smithy/types@2.12.0': resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} engines: {node: '>=14.0.0'} - '@smithy/types@4.2.0': - resolution: {integrity: sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==} + '@smithy/types@4.3.1': + resolution: {integrity: sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==} engines: {node: '>=18.0.0'} '@smithy/url-parser@2.2.0': resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} - '@smithy/url-parser@4.0.2': - resolution: {integrity: sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==} + '@smithy/url-parser@4.0.4': + resolution: {integrity: sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==} engines: {node: '>=18.0.0'} '@smithy/util-base64@2.3.0': @@ -2831,20 +2849,20 @@ packages: resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-browser@4.0.10': - resolution: {integrity: sha512-2k6fgUNOZ1Rn0gEjvGPGrDEINLG8qSBHsN7xlkkbO+fnHJ36BQPDzhFfMmYSDS8AgzoygqQiDOQ+6Hp2vBTUdA==} + '@smithy/util-defaults-mode-browser@4.0.19': + resolution: {integrity: sha512-mvLMh87xSmQrV5XqnUYEPoiFFeEGYeAKIDDKdhE2ahqitm8OHM3aSvhqL6rrK6wm1brIk90JhxDf5lf2hbrLbQ==} engines: {node: '>=18.0.0'} '@smithy/util-defaults-mode-node@2.3.1': resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-node@4.0.10': - resolution: {integrity: sha512-2XR1WRglLVmoIFts7bODUTgBdVyvkfKNkydHrlsI5VxW9q3s1hnJCuY+f1OHzvj5ue23q4vydM2fjrMjf2HSdQ==} + '@smithy/util-defaults-mode-node@4.0.19': + resolution: {integrity: sha512-8tYnx+LUfj6m+zkUUIrIQJxPM1xVxfRBvoGHua7R/i6qAxOMjqR6CpEpDwKoIs1o0+hOjGvkKE23CafKL0vJ9w==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.0.2': - resolution: {integrity: sha512-6QSutU5ZyrpNbnd51zRTL7goojlcnuOB55+F9VBD+j8JpRY50IGamsjlycrmpn8PQkmJucFW8A0LSfXj7jjtLQ==} + '@smithy/util-endpoints@3.0.6': + resolution: {integrity: sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==} engines: {node: '>=18.0.0'} '@smithy/util-hex-encoding@2.2.0': @@ -2859,24 +2877,24 @@ packages: resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} engines: {node: '>=14.0.0'} - '@smithy/util-middleware@4.0.2': - resolution: {integrity: sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==} + '@smithy/util-middleware@4.0.4': + resolution: {integrity: sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==} engines: {node: '>=18.0.0'} '@smithy/util-retry@2.2.0': resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} engines: {node: '>= 14.0.0'} - '@smithy/util-retry@4.0.3': - resolution: {integrity: sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==} + '@smithy/util-retry@4.0.5': + resolution: {integrity: sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==} engines: {node: '>=18.0.0'} '@smithy/util-stream@2.2.0': resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} engines: {node: '>=14.0.0'} - '@smithy/util-stream@4.2.0': - resolution: {integrity: sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==} + '@smithy/util-stream@4.2.2': + resolution: {integrity: sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==} engines: {node: '>=18.0.0'} '@smithy/util-uri-escape@2.2.0': @@ -2899,8 +2917,8 @@ packages: resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} engines: {node: '>=14.0.0'} - '@smithy/util-waiter@4.0.3': - resolution: {integrity: sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==} + '@smithy/util-waiter@4.0.5': + resolution: {integrity: sha512-4QvC49HTteI1gfemu0I1syWovJgPvGn7CVUoN9ZFkdvr/cCFkrEL7qNCdx/2eICqDWEGnnr68oMdSIPCLAriSQ==} engines: {node: '>=18.0.0'} '@stencil/core@4.30.0': @@ -3634,6 +3652,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} @@ -3836,6 +3859,9 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -4041,6 +4067,10 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -4303,8 +4333,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - eciesjs@0.4.14: - resolution: {integrity: sha512-eJAgf9pdv214Hn98FlUzclRMYWF7WfoLlkS9nWMTm1qcCwn6Ad4EGD9lr9HXMBfSrZhYQujRE+p0adPRkctC6A==} + eciesjs@0.4.15: + resolution: {integrity: sha512-r6kEJXDKecVOCj2nLMuXK/FCPeurW33+3JRpfXVbjLja3XUYFfD9I/JBreH6sUyzcm3G/YQboBjMla6poKeSdA==} engines: {bun: '>=1', deno: '>=2', node: '>=16'} ee-first@1.1.1: @@ -4415,11 +4445,6 @@ packages: peerDependencies: esbuild: '>=0.12 <1' - esbuild@0.19.2: - resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.25.2: resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} engines: {node: '>=18'} @@ -4430,6 +4455,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -4737,16 +4767,16 @@ packages: fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - fdir@6.4.4: - resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + fdir@6.4.5: + resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - fdir@6.4.5: - resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -7309,6 +7339,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.42.0: + resolution: {integrity: sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==} + engines: {node: '>=10'} + hasBin: true + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -7570,8 +7605,8 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + urlpattern-polyfill@10.1.0: + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} @@ -7944,13 +7979,13 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.775.0 + '@aws-sdk/types': 3.821.0 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.775.0 + '@aws-sdk/types': 3.821.0 tslib: 2.8.1 '@aws-crypto/ie11-detection@3.0.0': @@ -7961,8 +7996,8 @@ snapshots: dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-locate-window': 3.723.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-locate-window': 3.804.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -7972,8 +8007,8 @@ snapshots: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-locate-window': 3.723.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-locate-window': 3.804.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -7982,21 +8017,21 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-locate-window': 3.723.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-locate-window': 3.804.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-js@3.0.0': dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.775.0 + '@aws-sdk/types': 3.821.0 tslib: 1.14.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.775.0 + '@aws-sdk/types': 3.821.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@3.0.0': @@ -8009,13 +8044,13 @@ snapshots: '@aws-crypto/util@3.0.0': dependencies: - '@aws-sdk/types': 3.775.0 + '@aws-sdk/types': 3.821.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.775.0 + '@aws-sdk/types': 3.821.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -8064,205 +8099,205 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-dynamodb@3.803.0': + '@aws-sdk/client-dynamodb@3.830.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.799.0 - '@aws-sdk/credential-provider-node': 3.803.0 - '@aws-sdk/middleware-endpoint-discovery': 3.775.0 - '@aws-sdk/middleware-host-header': 3.775.0 - '@aws-sdk/middleware-logger': 3.775.0 - '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.799.0 - '@aws-sdk/region-config-resolver': 3.775.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-endpoints': 3.787.0 - '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.799.0 - '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.3.1 - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/hash-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.2 - '@smithy/middleware-retry': 4.1.3 - '@smithy/middleware-serde': 4.0.3 - '@smithy/middleware-stack': 4.0.2 - '@smithy/node-config-provider': 4.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/url-parser': 4.0.2 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/credential-provider-node': 3.830.0 + '@aws-sdk/middleware-endpoint-discovery': 3.821.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-user-agent': 3.828.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.828.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.828.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.10 - '@smithy/util-defaults-mode-node': 4.0.10 - '@smithy/util-endpoints': 3.0.2 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 '@smithy/util-utf8': 4.0.0 - '@smithy/util-waiter': 4.0.3 + '@smithy/util-waiter': 4.0.5 '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-lambda@3.803.0': + '@aws-sdk/client-lambda@3.830.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.799.0 - '@aws-sdk/credential-provider-node': 3.803.0 - '@aws-sdk/middleware-host-header': 3.775.0 - '@aws-sdk/middleware-logger': 3.775.0 - '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.799.0 - '@aws-sdk/region-config-resolver': 3.775.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-endpoints': 3.787.0 - '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.799.0 - '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.3.1 - '@smithy/eventstream-serde-browser': 4.0.2 - '@smithy/eventstream-serde-config-resolver': 4.1.0 - '@smithy/eventstream-serde-node': 4.0.2 - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/hash-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.2 - '@smithy/middleware-retry': 4.1.3 - '@smithy/middleware-serde': 4.0.3 - '@smithy/middleware-stack': 4.0.2 - '@smithy/node-config-provider': 4.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/url-parser': 4.0.2 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/credential-provider-node': 3.830.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-user-agent': 3.828.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.828.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.828.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/eventstream-serde-browser': 4.0.4 + '@smithy/eventstream-serde-config-resolver': 4.1.2 + '@smithy/eventstream-serde-node': 4.0.4 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.10 - '@smithy/util-defaults-mode-node': 4.0.10 - '@smithy/util-endpoints': 3.0.2 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.3 - '@smithy/util-stream': 4.2.0 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 - '@smithy/util-waiter': 4.0.3 + '@smithy/util-waiter': 4.0.5 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-s3@3.803.0': + '@aws-sdk/client-s3@3.830.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.799.0 - '@aws-sdk/credential-provider-node': 3.803.0 - '@aws-sdk/middleware-bucket-endpoint': 3.775.0 - '@aws-sdk/middleware-expect-continue': 3.775.0 - '@aws-sdk/middleware-flexible-checksums': 3.799.0 - '@aws-sdk/middleware-host-header': 3.775.0 - '@aws-sdk/middleware-location-constraint': 3.775.0 - '@aws-sdk/middleware-logger': 3.775.0 - '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-sdk-s3': 3.799.0 - '@aws-sdk/middleware-ssec': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.799.0 - '@aws-sdk/region-config-resolver': 3.775.0 - '@aws-sdk/signature-v4-multi-region': 3.803.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-endpoints': 3.787.0 - '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.799.0 - '@aws-sdk/xml-builder': 3.775.0 - '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.3.1 - '@smithy/eventstream-serde-browser': 4.0.2 - '@smithy/eventstream-serde-config-resolver': 4.1.0 - '@smithy/eventstream-serde-node': 4.0.2 - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/hash-blob-browser': 4.0.2 - '@smithy/hash-node': 4.0.2 - '@smithy/hash-stream-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/md5-js': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.2 - '@smithy/middleware-retry': 4.1.3 - '@smithy/middleware-serde': 4.0.3 - '@smithy/middleware-stack': 4.0.2 - '@smithy/node-config-provider': 4.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/url-parser': 4.0.2 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/credential-provider-node': 3.830.0 + '@aws-sdk/middleware-bucket-endpoint': 3.830.0 + '@aws-sdk/middleware-expect-continue': 3.821.0 + '@aws-sdk/middleware-flexible-checksums': 3.826.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-location-constraint': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-sdk-s3': 3.826.0 + '@aws-sdk/middleware-ssec': 3.821.0 + '@aws-sdk/middleware-user-agent': 3.828.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/signature-v4-multi-region': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.828.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.828.0 + '@aws-sdk/xml-builder': 3.821.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/eventstream-serde-browser': 4.0.4 + '@smithy/eventstream-serde-config-resolver': 4.1.2 + '@smithy/eventstream-serde-node': 4.0.4 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-blob-browser': 4.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/hash-stream-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/md5-js': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.10 - '@smithy/util-defaults-mode-node': 4.0.10 - '@smithy/util-endpoints': 3.0.2 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.3 - '@smithy/util-stream': 4.2.0 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 - '@smithy/util-waiter': 4.0.3 + '@smithy/util-waiter': 4.0.5 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sqs@3.803.0': + '@aws-sdk/client-sqs@3.830.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.799.0 - '@aws-sdk/credential-provider-node': 3.803.0 - '@aws-sdk/middleware-host-header': 3.775.0 - '@aws-sdk/middleware-logger': 3.775.0 - '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-sdk-sqs': 3.798.0 - '@aws-sdk/middleware-user-agent': 3.799.0 - '@aws-sdk/region-config-resolver': 3.775.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-endpoints': 3.787.0 - '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.799.0 - '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.3.1 - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/hash-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/md5-js': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.2 - '@smithy/middleware-retry': 4.1.3 - '@smithy/middleware-serde': 4.0.3 - '@smithy/middleware-stack': 4.0.2 - '@smithy/node-config-provider': 4.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/url-parser': 4.0.2 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/credential-provider-node': 3.830.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-sdk-sqs': 3.826.0 + '@aws-sdk/middleware-user-agent': 3.828.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.828.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.828.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/md5-js': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.10 - '@smithy/util-defaults-mode-node': 4.0.10 - '@smithy/util-endpoints': 3.0.2 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: @@ -8306,44 +8341,44 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.803.0': + '@aws-sdk/client-sso@3.830.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.799.0 - '@aws-sdk/middleware-host-header': 3.775.0 - '@aws-sdk/middleware-logger': 3.775.0 - '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.799.0 - '@aws-sdk/region-config-resolver': 3.775.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-endpoints': 3.787.0 - '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.799.0 - '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.3.1 - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/hash-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.2 - '@smithy/middleware-retry': 4.1.3 - '@smithy/middleware-serde': 4.0.3 - '@smithy/middleware-stack': 4.0.2 - '@smithy/node-config-provider': 4.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/url-parser': 4.0.2 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-user-agent': 3.828.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.828.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.828.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.10 - '@smithy/util-defaults-mode-node': 4.0.10 - '@smithy/util-endpoints': 3.0.2 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: @@ -8391,17 +8426,21 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.799.0': - dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/core': 3.3.1 - '@smithy/node-config-provider': 4.0.2 - '@smithy/property-provider': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/signature-v4': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/util-middleware': 4.0.2 + '@aws-sdk/core@3.826.0': + dependencies: + '@aws-sdk/types': 3.821.0 + '@aws-sdk/xml-builder': 3.821.0 + '@smithy/core': 3.5.3 + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-utf8': 4.0.0 fast-xml-parser: 4.4.1 tslib: 2.8.1 @@ -8412,25 +8451,25 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.799.0': + '@aws-sdk/credential-provider-env@3.826.0': dependencies: - '@aws-sdk/core': 3.799.0 - '@aws-sdk/types': 3.775.0 - '@smithy/property-provider': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.799.0': - dependencies: - '@aws-sdk/core': 3.799.0 - '@aws-sdk/types': 3.775.0 - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/property-provider': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/util-stream': 4.2.0 + '@aws-sdk/credential-provider-http@3.826.0': + dependencies: + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/node-http-handler': 4.0.6 + '@smithy/property-provider': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/util-stream': 4.2.2 tslib: 2.8.1 '@aws-sdk/credential-provider-ini@3.398.0': @@ -8448,20 +8487,20 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-ini@3.803.0': - dependencies: - '@aws-sdk/core': 3.799.0 - '@aws-sdk/credential-provider-env': 3.799.0 - '@aws-sdk/credential-provider-http': 3.799.0 - '@aws-sdk/credential-provider-process': 3.799.0 - '@aws-sdk/credential-provider-sso': 3.803.0 - '@aws-sdk/credential-provider-web-identity': 3.803.0 - '@aws-sdk/nested-clients': 3.803.0 - '@aws-sdk/types': 3.775.0 - '@smithy/credential-provider-imds': 4.0.2 - '@smithy/property-provider': 4.0.2 - '@smithy/shared-ini-file-loader': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/credential-provider-ini@3.830.0': + dependencies: + '@aws-sdk/core': 3.826.0 + '@aws-sdk/credential-provider-env': 3.826.0 + '@aws-sdk/credential-provider-http': 3.826.0 + '@aws-sdk/credential-provider-process': 3.826.0 + '@aws-sdk/credential-provider-sso': 3.830.0 + '@aws-sdk/credential-provider-web-identity': 3.830.0 + '@aws-sdk/nested-clients': 3.830.0 + '@aws-sdk/types': 3.821.0 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -8482,19 +8521,19 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.803.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.799.0 - '@aws-sdk/credential-provider-http': 3.799.0 - '@aws-sdk/credential-provider-ini': 3.803.0 - '@aws-sdk/credential-provider-process': 3.799.0 - '@aws-sdk/credential-provider-sso': 3.803.0 - '@aws-sdk/credential-provider-web-identity': 3.803.0 - '@aws-sdk/types': 3.775.0 - '@smithy/credential-provider-imds': 4.0.2 - '@smithy/property-provider': 4.0.2 - '@smithy/shared-ini-file-loader': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/credential-provider-node@3.830.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.826.0 + '@aws-sdk/credential-provider-http': 3.826.0 + '@aws-sdk/credential-provider-ini': 3.830.0 + '@aws-sdk/credential-provider-process': 3.826.0 + '@aws-sdk/credential-provider-sso': 3.830.0 + '@aws-sdk/credential-provider-web-identity': 3.830.0 + '@aws-sdk/types': 3.821.0 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -8507,13 +8546,13 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.799.0': + '@aws-sdk/credential-provider-process@3.826.0': dependencies: - '@aws-sdk/core': 3.799.0 - '@aws-sdk/types': 3.775.0 - '@smithy/property-provider': 4.0.2 - '@smithy/shared-ini-file-loader': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@aws-sdk/credential-provider-sso@3.398.0': @@ -8528,15 +8567,15 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-sso@3.803.0': + '@aws-sdk/credential-provider-sso@3.830.0': dependencies: - '@aws-sdk/client-sso': 3.803.0 - '@aws-sdk/core': 3.799.0 - '@aws-sdk/token-providers': 3.803.0 - '@aws-sdk/types': 3.775.0 - '@smithy/property-provider': 4.0.2 - '@smithy/shared-ini-file-loader': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/client-sso': 3.830.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/token-providers': 3.830.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -8548,61 +8587,61 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-web-identity@3.803.0': + '@aws-sdk/credential-provider-web-identity@3.830.0': dependencies: - '@aws-sdk/core': 3.799.0 - '@aws-sdk/nested-clients': 3.803.0 - '@aws-sdk/types': 3.775.0 - '@smithy/property-provider': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/nested-clients': 3.830.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/endpoint-cache@3.723.0': + '@aws-sdk/endpoint-cache@3.804.0': dependencies: mnemonist: 0.38.3 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.775.0': + '@aws-sdk/middleware-bucket-endpoint@3.830.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/node-config-provider': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-endpoint-discovery@3.775.0': + '@aws-sdk/middleware-endpoint-discovery@3.821.0': dependencies: - '@aws-sdk/endpoint-cache': 3.723.0 - '@aws-sdk/types': 3.775.0 - '@smithy/node-config-provider': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@aws-sdk/endpoint-cache': 3.804.0 + '@aws-sdk/types': 3.821.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.775.0': + '@aws-sdk/middleware-expect-continue@3.821.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.799.0': + '@aws-sdk/middleware-flexible-checksums@3.826.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.799.0 - '@aws-sdk/types': 3.775.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 '@smithy/is-array-buffer': 4.0.0 - '@smithy/node-config-provider': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-stream': 4.2.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -8613,17 +8652,17 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.775.0': + '@aws-sdk/middleware-host-header@3.821.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.775.0': + '@aws-sdk/middleware-location-constraint@3.821.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@aws-sdk/middleware-logger@3.398.0': @@ -8632,10 +8671,10 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.775.0': + '@aws-sdk/middleware-logger@3.821.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@aws-sdk/middleware-recursion-detection@3.398.0': @@ -8645,35 +8684,35 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.775.0': + '@aws-sdk/middleware-recursion-detection@3.821.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.799.0': - dependencies: - '@aws-sdk/core': 3.799.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/core': 3.3.1 - '@smithy/node-config-provider': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/signature-v4': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 + '@aws-sdk/middleware-sdk-s3@3.826.0': + dependencies: + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/core': 3.5.3 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-stream': 4.2.0 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-sqs@3.798.0': + '@aws-sdk/middleware-sdk-sqs@3.826.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 '@smithy/util-hex-encoding': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -8695,10 +8734,10 @@ snapshots: '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.775.0': + '@aws-sdk/middleware-ssec@3.821.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@aws-sdk/middleware-user-agent@3.398.0': @@ -8709,75 +8748,75 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.799.0': + '@aws-sdk/middleware-user-agent@3.828.0': dependencies: - '@aws-sdk/core': 3.799.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-endpoints': 3.787.0 - '@smithy/core': 3.3.1 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.828.0 + '@smithy/core': 3.5.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.803.0': + '@aws-sdk/nested-clients@3.830.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.799.0 - '@aws-sdk/middleware-host-header': 3.775.0 - '@aws-sdk/middleware-logger': 3.775.0 - '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.799.0 - '@aws-sdk/region-config-resolver': 3.775.0 - '@aws-sdk/types': 3.775.0 - '@aws-sdk/util-endpoints': 3.787.0 - '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.799.0 - '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.3.1 - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/hash-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.2 - '@smithy/middleware-retry': 4.1.3 - '@smithy/middleware-serde': 4.0.3 - '@smithy/middleware-stack': 4.0.2 - '@smithy/node-config-provider': 4.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/url-parser': 4.0.2 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-user-agent': 3.828.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.828.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.828.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.10 - '@smithy/util-defaults-mode-node': 4.0.10 - '@smithy/util-endpoints': 3.0.2 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/region-config-resolver@3.775.0': + '@aws-sdk/region-config-resolver@3.821.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/node-config-provider': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.2 + '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.803.0': + '@aws-sdk/signature-v4-multi-region@3.826.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.799.0 - '@aws-sdk/types': 3.775.0 - '@smithy/protocol-http': 5.1.0 - '@smithy/signature-v4': 5.1.0 - '@smithy/types': 4.2.0 + '@aws-sdk/middleware-sdk-s3': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@aws-sdk/token-providers@3.398.0': @@ -8820,13 +8859,14 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/token-providers@3.803.0': + '@aws-sdk/token-providers@3.830.0': dependencies: - '@aws-sdk/nested-clients': 3.803.0 - '@aws-sdk/types': 3.775.0 - '@smithy/property-provider': 4.0.2 - '@smithy/shared-ini-file-loader': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/nested-clients': 3.830.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -8836,12 +8876,12 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/types@3.775.0': + '@aws-sdk/types@3.821.0': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/util-arn-parser@3.723.0': + '@aws-sdk/util-arn-parser@3.804.0': dependencies: tslib: 2.8.1 @@ -8850,14 +8890,14 @@ snapshots: '@aws-sdk/types': 3.398.0 tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.787.0': + '@aws-sdk/util-endpoints@3.828.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/types': 4.2.0 - '@smithy/util-endpoints': 3.0.2 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 + '@smithy/util-endpoints': 3.0.6 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.723.0': + '@aws-sdk/util-locate-window@3.804.0': dependencies: tslib: 2.8.1 @@ -8868,10 +8908,10 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.775.0': + '@aws-sdk/util-user-agent-browser@3.821.0': dependencies: - '@aws-sdk/types': 3.775.0 - '@smithy/types': 4.2.0 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 bowser: 2.11.0 tslib: 2.8.1 @@ -8882,12 +8922,12 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.799.0': + '@aws-sdk/util-user-agent-node@3.828.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.799.0 - '@aws-sdk/types': 3.775.0 - '@smithy/node-config-provider': 4.0.2 - '@smithy/types': 4.2.0 + '@aws-sdk/middleware-user-agent': 3.828.0 + '@aws-sdk/types': 3.821.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@aws-sdk/util-utf8-browser@3.259.0': @@ -8898,9 +8938,9 @@ snapshots: dependencies: tslib: 2.8.1 - '@aws-sdk/xml-builder@3.775.0': + '@aws-sdk/xml-builder@3.821.0': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@babel/code-frame@7.27.1': @@ -8980,7 +9020,7 @@ snapshots: '@babel/runtime@7.27.1': {} - '@babel/runtime@7.27.4': {} + '@babel/runtime@7.27.6': {} '@babel/template@7.27.1': dependencies: @@ -9067,9 +9107,9 @@ snapshots: dependencies: commander: 11.1.0 dotenv: 16.5.0 - eciesjs: 0.4.14 + eciesjs: 0.4.15 execa: 5.1.1 - fdir: 6.4.4(picomatch@4.0.2) + fdir: 6.4.6(picomatch@4.0.2) ignore: 5.3.2 object-treeify: 1.1.33 picomatch: 4.0.2 @@ -9103,7 +9143,7 @@ snapshots: '@esbuild/aix-ppc64@0.25.3': optional: true - '@esbuild/android-arm64@0.19.2': + '@esbuild/aix-ppc64@0.25.4': optional: true '@esbuild/android-arm64@0.25.2': @@ -9112,7 +9152,7 @@ snapshots: '@esbuild/android-arm64@0.25.3': optional: true - '@esbuild/android-arm@0.19.2': + '@esbuild/android-arm64@0.25.4': optional: true '@esbuild/android-arm@0.25.2': @@ -9121,7 +9161,7 @@ snapshots: '@esbuild/android-arm@0.25.3': optional: true - '@esbuild/android-x64@0.19.2': + '@esbuild/android-arm@0.25.4': optional: true '@esbuild/android-x64@0.25.2': @@ -9130,7 +9170,7 @@ snapshots: '@esbuild/android-x64@0.25.3': optional: true - '@esbuild/darwin-arm64@0.19.2': + '@esbuild/android-x64@0.25.4': optional: true '@esbuild/darwin-arm64@0.25.2': @@ -9139,7 +9179,7 @@ snapshots: '@esbuild/darwin-arm64@0.25.3': optional: true - '@esbuild/darwin-x64@0.19.2': + '@esbuild/darwin-arm64@0.25.4': optional: true '@esbuild/darwin-x64@0.25.2': @@ -9148,7 +9188,7 @@ snapshots: '@esbuild/darwin-x64@0.25.3': optional: true - '@esbuild/freebsd-arm64@0.19.2': + '@esbuild/darwin-x64@0.25.4': optional: true '@esbuild/freebsd-arm64@0.25.2': @@ -9157,7 +9197,7 @@ snapshots: '@esbuild/freebsd-arm64@0.25.3': optional: true - '@esbuild/freebsd-x64@0.19.2': + '@esbuild/freebsd-arm64@0.25.4': optional: true '@esbuild/freebsd-x64@0.25.2': @@ -9166,7 +9206,7 @@ snapshots: '@esbuild/freebsd-x64@0.25.3': optional: true - '@esbuild/linux-arm64@0.19.2': + '@esbuild/freebsd-x64@0.25.4': optional: true '@esbuild/linux-arm64@0.25.2': @@ -9175,7 +9215,7 @@ snapshots: '@esbuild/linux-arm64@0.25.3': optional: true - '@esbuild/linux-arm@0.19.2': + '@esbuild/linux-arm64@0.25.4': optional: true '@esbuild/linux-arm@0.25.2': @@ -9184,7 +9224,7 @@ snapshots: '@esbuild/linux-arm@0.25.3': optional: true - '@esbuild/linux-ia32@0.19.2': + '@esbuild/linux-arm@0.25.4': optional: true '@esbuild/linux-ia32@0.25.2': @@ -9193,7 +9233,7 @@ snapshots: '@esbuild/linux-ia32@0.25.3': optional: true - '@esbuild/linux-loong64@0.19.2': + '@esbuild/linux-ia32@0.25.4': optional: true '@esbuild/linux-loong64@0.25.2': @@ -9202,7 +9242,7 @@ snapshots: '@esbuild/linux-loong64@0.25.3': optional: true - '@esbuild/linux-mips64el@0.19.2': + '@esbuild/linux-loong64@0.25.4': optional: true '@esbuild/linux-mips64el@0.25.2': @@ -9211,7 +9251,7 @@ snapshots: '@esbuild/linux-mips64el@0.25.3': optional: true - '@esbuild/linux-ppc64@0.19.2': + '@esbuild/linux-mips64el@0.25.4': optional: true '@esbuild/linux-ppc64@0.25.2': @@ -9220,7 +9260,7 @@ snapshots: '@esbuild/linux-ppc64@0.25.3': optional: true - '@esbuild/linux-riscv64@0.19.2': + '@esbuild/linux-ppc64@0.25.4': optional: true '@esbuild/linux-riscv64@0.25.2': @@ -9229,7 +9269,7 @@ snapshots: '@esbuild/linux-riscv64@0.25.3': optional: true - '@esbuild/linux-s390x@0.19.2': + '@esbuild/linux-riscv64@0.25.4': optional: true '@esbuild/linux-s390x@0.25.2': @@ -9238,7 +9278,7 @@ snapshots: '@esbuild/linux-s390x@0.25.3': optional: true - '@esbuild/linux-x64@0.19.2': + '@esbuild/linux-s390x@0.25.4': optional: true '@esbuild/linux-x64@0.25.2': @@ -9247,13 +9287,16 @@ snapshots: '@esbuild/linux-x64@0.25.3': optional: true + '@esbuild/linux-x64@0.25.4': + optional: true + '@esbuild/netbsd-arm64@0.25.2': optional: true '@esbuild/netbsd-arm64@0.25.3': optional: true - '@esbuild/netbsd-x64@0.19.2': + '@esbuild/netbsd-arm64@0.25.4': optional: true '@esbuild/netbsd-x64@0.25.2': @@ -9262,13 +9305,16 @@ snapshots: '@esbuild/netbsd-x64@0.25.3': optional: true + '@esbuild/netbsd-x64@0.25.4': + optional: true + '@esbuild/openbsd-arm64@0.25.2': optional: true '@esbuild/openbsd-arm64@0.25.3': optional: true - '@esbuild/openbsd-x64@0.19.2': + '@esbuild/openbsd-arm64@0.25.4': optional: true '@esbuild/openbsd-x64@0.25.2': @@ -9277,7 +9323,7 @@ snapshots: '@esbuild/openbsd-x64@0.25.3': optional: true - '@esbuild/sunos-x64@0.19.2': + '@esbuild/openbsd-x64@0.25.4': optional: true '@esbuild/sunos-x64@0.25.2': @@ -9286,7 +9332,7 @@ snapshots: '@esbuild/sunos-x64@0.25.3': optional: true - '@esbuild/win32-arm64@0.19.2': + '@esbuild/sunos-x64@0.25.4': optional: true '@esbuild/win32-arm64@0.25.2': @@ -9295,7 +9341,7 @@ snapshots: '@esbuild/win32-arm64@0.25.3': optional: true - '@esbuild/win32-ia32@0.19.2': + '@esbuild/win32-arm64@0.25.4': optional: true '@esbuild/win32-ia32@0.25.2': @@ -9304,7 +9350,7 @@ snapshots: '@esbuild/win32-ia32@0.25.3': optional: true - '@esbuild/win32-x64@0.19.2': + '@esbuild/win32-ia32@0.25.4': optional: true '@esbuild/win32-x64@0.25.2': @@ -9313,6 +9359,9 @@ snapshots: '@esbuild/win32-x64@0.25.3': optional: true + '@esbuild/win32-x64@0.25.4': + optional: true + '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0(jiti@2.4.2))': dependencies: eslint: 9.28.0(jiti@2.4.2) @@ -9708,7 +9757,7 @@ snapshots: '@noble/ciphers@1.3.0': {} - '@noble/curves@1.9.0': + '@noble/curves@1.9.2': dependencies: '@noble/hashes': 1.8.0 @@ -9803,32 +9852,33 @@ snapshots: dependencies: which: 4.0.0 - '@opennextjs/aws@3.5.7': + '@opennextjs/aws@3.6.5': dependencies: '@ast-grep/napi': 0.35.0 '@aws-sdk/client-cloudfront': 3.398.0 - '@aws-sdk/client-dynamodb': 3.803.0 - '@aws-sdk/client-lambda': 3.803.0 - '@aws-sdk/client-s3': 3.803.0 - '@aws-sdk/client-sqs': 3.803.0 + '@aws-sdk/client-dynamodb': 3.830.0 + '@aws-sdk/client-lambda': 3.830.0 + '@aws-sdk/client-s3': 3.830.0 + '@aws-sdk/client-sqs': 3.830.0 '@node-minify/core': 8.0.6 '@node-minify/terser': 8.0.6 '@tsconfig/node18': 1.0.3 aws4fetch: 1.0.20 chalk: 5.4.1 - esbuild: 0.19.2 + cookie: 1.0.2 + esbuild: 0.25.4 express: 5.0.1 path-to-regexp: 6.3.0 - urlpattern-polyfill: 10.0.0 + urlpattern-polyfill: 10.1.0 yaml: 2.8.0 transitivePeerDependencies: - aws-crt - supports-color - '@opennextjs/cloudflare@1.0.0-beta.4(wrangler@4.14.1)': + '@opennextjs/cloudflare@1.3.0(wrangler@4.14.1)': dependencies: '@dotenvx/dotenvx': 1.31.0 - '@opennextjs/aws': 3.5.7 + '@opennextjs/aws': 3.6.5 enquirer: 2.4.1 glob: 11.0.2 ts-tqdm: 0.8.6 @@ -10459,9 +10509,9 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/abort-controller@4.0.2': + '@smithy/abort-controller@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/chunked-blob-reader-native@4.0.0': @@ -10481,22 +10531,23 @@ snapshots: '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 - '@smithy/config-resolver@4.1.0': + '@smithy/config-resolver@4.1.4': dependencies: - '@smithy/node-config-provider': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.2 + '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 - '@smithy/core@3.3.1': + '@smithy/core@3.5.3': dependencies: - '@smithy/middleware-serde': 4.0.3 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@smithy/middleware-serde': 4.0.8 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-stream': 4.2.0 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -10508,42 +10559,42 @@ snapshots: '@smithy/url-parser': 2.2.0 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.0.2': + '@smithy/credential-provider-imds@4.0.6': dependencies: - '@smithy/node-config-provider': 4.0.2 - '@smithy/property-provider': 4.0.2 - '@smithy/types': 4.2.0 - '@smithy/url-parser': 4.0.2 + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 tslib: 2.8.1 - '@smithy/eventstream-codec@4.0.2': + '@smithy/eventstream-codec@4.0.4': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.0.2': + '@smithy/eventstream-serde-browser@4.0.4': dependencies: - '@smithy/eventstream-serde-universal': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/eventstream-serde-universal': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.1.0': + '@smithy/eventstream-serde-config-resolver@4.1.2': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.0.2': + '@smithy/eventstream-serde-node@4.0.4': dependencies: - '@smithy/eventstream-serde-universal': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/eventstream-serde-universal': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.0.2': + '@smithy/eventstream-serde-universal@4.0.4': dependencies: - '@smithy/eventstream-codec': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/eventstream-codec': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/fetch-http-handler@2.5.0': @@ -10554,19 +10605,19 @@ snapshots: '@smithy/util-base64': 2.3.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.0.2': + '@smithy/fetch-http-handler@5.0.4': dependencies: - '@smithy/protocol-http': 5.1.0 - '@smithy/querystring-builder': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/querystring-builder': 4.0.4 + '@smithy/types': 4.3.1 '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - '@smithy/hash-blob-browser@4.0.2': + '@smithy/hash-blob-browser@4.0.4': dependencies: '@smithy/chunked-blob-reader': 5.0.0 '@smithy/chunked-blob-reader-native': 4.0.0 - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/hash-node@2.2.0': @@ -10576,16 +10627,16 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@smithy/hash-node@4.0.2': + '@smithy/hash-node@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/hash-stream-node@4.0.2': + '@smithy/hash-stream-node@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -10594,9 +10645,9 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/invalid-dependency@4.0.2': + '@smithy/invalid-dependency@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': @@ -10607,9 +10658,9 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/md5-js@4.0.2': + '@smithy/md5-js@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -10619,10 +10670,10 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/middleware-content-length@4.0.2': + '@smithy/middleware-content-length@4.0.4': dependencies: - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/middleware-endpoint@2.5.1': @@ -10635,15 +10686,15 @@ snapshots: '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.1.2': + '@smithy/middleware-endpoint@4.1.11': dependencies: - '@smithy/core': 3.3.1 - '@smithy/middleware-serde': 4.0.3 - '@smithy/node-config-provider': 4.0.2 - '@smithy/shared-ini-file-loader': 4.0.2 - '@smithy/types': 4.2.0 - '@smithy/url-parser': 4.0.2 - '@smithy/util-middleware': 4.0.2 + '@smithy/core': 3.5.3 + '@smithy/middleware-serde': 4.0.8 + '@smithy/node-config-provider': 4.1.3 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 + '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 '@smithy/middleware-retry@2.3.1': @@ -10658,15 +10709,15 @@ snapshots: tslib: 2.8.1 uuid: 9.0.1 - '@smithy/middleware-retry@4.1.3': + '@smithy/middleware-retry@4.1.12': dependencies: - '@smithy/node-config-provider': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/service-error-classification': 4.0.3 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.3 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/service-error-classification': 4.0.5 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 tslib: 2.8.1 uuid: 9.0.1 @@ -10675,9 +10726,10 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/middleware-serde@4.0.3': + '@smithy/middleware-serde@4.0.8': dependencies: - '@smithy/types': 4.2.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/middleware-stack@2.2.0': @@ -10685,9 +10737,9 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/middleware-stack@4.0.2': + '@smithy/middleware-stack@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/node-config-provider@2.3.0': @@ -10697,11 +10749,11 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/node-config-provider@4.0.2': + '@smithy/node-config-provider@4.1.3': dependencies: - '@smithy/property-provider': 4.0.2 - '@smithy/shared-ini-file-loader': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/node-http-handler@2.5.0': @@ -10712,12 +10764,12 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.0.4': + '@smithy/node-http-handler@4.0.6': dependencies: - '@smithy/abort-controller': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/querystring-builder': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/abort-controller': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/querystring-builder': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/property-provider@2.2.0': @@ -10725,9 +10777,9 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/property-provider@4.0.2': + '@smithy/property-provider@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/protocol-http@2.0.5': @@ -10740,9 +10792,9 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/protocol-http@5.1.0': + '@smithy/protocol-http@5.1.2': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/querystring-builder@2.2.0': @@ -10751,9 +10803,9 @@ snapshots: '@smithy/util-uri-escape': 2.2.0 tslib: 2.8.1 - '@smithy/querystring-builder@4.0.2': + '@smithy/querystring-builder@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 @@ -10762,27 +10814,27 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/querystring-parser@4.0.2': + '@smithy/querystring-parser@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/service-error-classification@2.1.5': dependencies: '@smithy/types': 2.12.0 - '@smithy/service-error-classification@4.0.3': + '@smithy/service-error-classification@4.0.5': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 '@smithy/shared-ini-file-loader@2.4.0': dependencies: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/shared-ini-file-loader@4.0.2': + '@smithy/shared-ini-file-loader@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/signature-v4@2.3.0': @@ -10795,13 +10847,13 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@smithy/signature-v4@5.1.0': + '@smithy/signature-v4@5.1.2': dependencies: '@smithy/is-array-buffer': 4.0.0 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-middleware': 4.0.2 + '@smithy/util-middleware': 4.0.4 '@smithy/util-uri-escape': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -10815,21 +10867,21 @@ snapshots: '@smithy/util-stream': 2.2.0 tslib: 2.8.1 - '@smithy/smithy-client@4.2.2': + '@smithy/smithy-client@4.4.3': dependencies: - '@smithy/core': 3.3.1 - '@smithy/middleware-endpoint': 4.1.2 - '@smithy/middleware-stack': 4.0.2 - '@smithy/protocol-http': 5.1.0 - '@smithy/types': 4.2.0 - '@smithy/util-stream': 4.2.0 + '@smithy/core': 3.5.3 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-stack': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-stream': 4.2.2 tslib: 2.8.1 '@smithy/types@2.12.0': dependencies: tslib: 2.8.1 - '@smithy/types@4.2.0': + '@smithy/types@4.3.1': dependencies: tslib: 2.8.1 @@ -10839,10 +10891,10 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/url-parser@4.0.2': + '@smithy/url-parser@4.0.4': dependencies: - '@smithy/querystring-parser': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/querystring-parser': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/util-base64@2.3.0': @@ -10899,11 +10951,11 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.10': + '@smithy/util-defaults-mode-browser@4.0.19': dependencies: - '@smithy/property-provider': 4.0.2 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 + '@smithy/property-provider': 4.0.4 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 bowser: 2.11.0 tslib: 2.8.1 @@ -10917,20 +10969,20 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.10': + '@smithy/util-defaults-mode-node@4.0.19': dependencies: - '@smithy/config-resolver': 4.1.0 - '@smithy/credential-provider-imds': 4.0.2 - '@smithy/node-config-provider': 4.0.2 - '@smithy/property-provider': 4.0.2 - '@smithy/smithy-client': 4.2.2 - '@smithy/types': 4.2.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/util-endpoints@3.0.2': + '@smithy/util-endpoints@3.0.6': dependencies: - '@smithy/node-config-provider': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/util-hex-encoding@2.2.0': @@ -10946,9 +10998,9 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/util-middleware@4.0.2': + '@smithy/util-middleware@4.0.4': dependencies: - '@smithy/types': 4.2.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/util-retry@2.2.0': @@ -10957,10 +11009,10 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/util-retry@4.0.3': + '@smithy/util-retry@4.0.5': dependencies: - '@smithy/service-error-classification': 4.0.3 - '@smithy/types': 4.2.0 + '@smithy/service-error-classification': 4.0.5 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/util-stream@2.2.0': @@ -10974,11 +11026,11 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@smithy/util-stream@4.2.0': + '@smithy/util-stream@4.2.2': dependencies: - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/types': 4.2.0 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/node-http-handler': 4.0.6 + '@smithy/types': 4.3.1 '@smithy/util-base64': 4.0.0 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-hex-encoding': 4.0.0 @@ -11009,10 +11061,10 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/util-waiter@4.0.3': + '@smithy/util-waiter@4.0.5': dependencies: - '@smithy/abort-controller': 4.0.2 - '@smithy/types': 4.2.0 + '@smithy/abort-controller': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@stencil/core@4.30.0': @@ -11303,7 +11355,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.27.4 + '@babel/runtime': 7.27.6 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -11776,6 +11828,8 @@ snapshots: acorn@8.14.1: {} + acorn@8.15.0: {} + agent-base@7.1.3: {} ajv-formats@2.1.1(ajv@8.17.1): @@ -11995,6 +12049,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -12184,6 +12242,8 @@ snapshots: cookie@0.7.2: {} + cookie@1.0.2: {} + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -12429,11 +12489,11 @@ snapshots: eastasianwidth@0.2.0: {} - eciesjs@0.4.14: + eciesjs@0.4.15: dependencies: '@ecies/ciphers': 0.2.3(@noble/ciphers@1.3.0) '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.0 + '@noble/curves': 1.9.2 '@noble/hashes': 1.8.0 ee-first@1.1.1: {} @@ -12660,31 +12720,6 @@ snapshots: transitivePeerDependencies: - supports-color - esbuild@0.19.2: - optionalDependencies: - '@esbuild/android-arm': 0.19.2 - '@esbuild/android-arm64': 0.19.2 - '@esbuild/android-x64': 0.19.2 - '@esbuild/darwin-arm64': 0.19.2 - '@esbuild/darwin-x64': 0.19.2 - '@esbuild/freebsd-arm64': 0.19.2 - '@esbuild/freebsd-x64': 0.19.2 - '@esbuild/linux-arm': 0.19.2 - '@esbuild/linux-arm64': 0.19.2 - '@esbuild/linux-ia32': 0.19.2 - '@esbuild/linux-loong64': 0.19.2 - '@esbuild/linux-mips64el': 0.19.2 - '@esbuild/linux-ppc64': 0.19.2 - '@esbuild/linux-riscv64': 0.19.2 - '@esbuild/linux-s390x': 0.19.2 - '@esbuild/linux-x64': 0.19.2 - '@esbuild/netbsd-x64': 0.19.2 - '@esbuild/openbsd-x64': 0.19.2 - '@esbuild/sunos-x64': 0.19.2 - '@esbuild/win32-arm64': 0.19.2 - '@esbuild/win32-ia32': 0.19.2 - '@esbuild/win32-x64': 0.19.2 - esbuild@0.25.2: optionalDependencies: '@esbuild/aix-ppc64': 0.25.2 @@ -12741,6 +12776,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.3 '@esbuild/win32-x64': 0.25.3 + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -13198,11 +13261,11 @@ snapshots: dependencies: format: 0.2.2 - fdir@6.4.4(picomatch@4.0.2): + fdir@6.4.5(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 - fdir@6.4.5(picomatch@4.0.2): + fdir@6.4.6(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -13602,7 +13665,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.39.0 + terser: 5.42.0 html-react-parser@5.2.3(@types/react@19.1.6)(react@19.1.0): dependencies: @@ -14753,7 +14816,7 @@ snapshots: minimatch@8.0.4: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: @@ -16086,7 +16149,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.3.6 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -16625,7 +16688,7 @@ snapshots: terser@5.16.9: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -16636,6 +16699,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.42.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + tiny-invariant@1.3.3: {} tinyglobby@0.2.14: @@ -16993,7 +17063,7 @@ snapshots: dependencies: punycode: 2.3.1 - urlpattern-polyfill@10.0.0: {} + urlpattern-polyfill@10.1.0: {} use-callback-ref@1.3.3(@types/react@19.1.6)(react@19.1.0): dependencies: From 19284ef4450610d50ec07c6a84923a40f7f4f983 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy <97875033+AugustinMauroy@users.noreply.github.com> Date: Wed, 18 Jun 2025 01:37:07 +0200 Subject: [PATCH 0561/1385] chore(description): fit to landing page (#7864) --- apps/site/site.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/site.json b/apps/site/site.json index 57639a7ea1035..6da498a337cd1 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -1,6 +1,6 @@ { "title": "Node.js", - "description": "Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.", + "description": "Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.", "favicon": "/static/images/favicons/favicon.png", "accentColor": "#333", "logoVariant": "pride", From da07c09de13633090e9fda0fdae02ad28d79118b Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Tue, 17 Jun 2025 18:44:40 -0700 Subject: [PATCH 0562/1385] feat(meta): use OpenJS Figma (#7876) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0682b430a5a7b..aa076088a5427 100644 --- a/README.md +++ b/README.md @@ -121,5 +121,5 @@ These are maintained in different repositories and we urge users to open **issue [content vs code]: https://github.com/nodejs/nodejs.org/blob/main/docs/content-vs-code.md [dependency pinning]: https://github.com/nodejs/nodejs.org/blob/main/docs/dependency-pinning.md [collaborator guide]: https://github.com/nodejs/nodejs.org/blob/main/docs/collaborator-guide.md -[figma design]: https://www.figma.com/file/8fG0oWFQArJ7C9WbC9n2wa +[figma design]: https://www.figma.com/file/a10cjjw3MzvRQMPT9FP3xz [translation guidelines]: https://github.com/nodejs/nodejs.org/blob/main/docs/translation.md From 6272aabe8580cc905658dbf0d638b23110a6799e Mon Sep 17 00:00:00 2001 From: Matt Cowley <me@mattcowley.co.uk> Date: Wed, 18 Jun 2025 16:32:06 +0100 Subject: [PATCH 0563/1385] =?UTF-8?q?chore(=F0=9F=8F=B3=EF=B8=8F=E2=80=8D?= =?UTF-8?q?=F0=9F=8C=88):=20update=20logo=20design=20(#7866)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(🏳️‍🌈): update logo design * chore(🏳️‍🌈): update logo component --- .../public/static/logos/nodejsDarkPride.svg | 33 +-- .../public/static/logos/nodejsLightPride.svg | 33 +-- packages/ui-components/Icons/Logos/Nodejs.tsx | 218 ++++++++++++++++-- 3 files changed, 203 insertions(+), 81 deletions(-) diff --git a/apps/site/public/static/logos/nodejsDarkPride.svg b/apps/site/public/static/logos/nodejsDarkPride.svg index 023ee1c3e4049..b6d0c77f854f3 100644 --- a/apps/site/public/static/logos/nodejsDarkPride.svg +++ b/apps/site/public/static/logos/nodejsDarkPride.svg @@ -1,32 +1 @@ -<svg width="267" height="80" viewBox="0 0 267 80" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_12_17)"> -<mask id="mask0_12_17" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="267" height="80"> -<path d="M266.96 0H0V79.988H266.96V0Z" fill="white"/> -</mask> -<g mask="url(#mask0_12_17)"> -<path d="M234.948 78.743C234.257 78.743 233.613 78.5578 233.015 78.2336L226.895 74.576C225.974 74.0666 226.435 73.8814 226.711 73.7888C227.953 73.372 228.183 73.2794 229.471 72.5388C229.61 72.4461 229.794 72.4925 229.931 72.5851L234.625 75.4094C234.809 75.502 235.038 75.502 235.177 75.4094L253.537 64.7139C253.72 64.6213 253.814 64.4361 253.814 64.2048V42.8602C253.814 42.6288 253.72 42.4437 253.537 42.351L235.177 31.7021C234.993 31.6094 234.762 31.6094 234.625 31.7021L216.265 42.351C216.081 42.4437 215.989 42.675 215.989 42.8602V64.2048C215.989 64.39 216.081 64.6213 216.265 64.7139L221.28 67.6309C223.995 69.0198 225.698 67.3994 225.698 65.7788V44.7123C225.698 44.4346 225.928 44.1568 226.251 44.1568H228.598C228.874 44.1568 229.15 44.3882 229.15 44.7123V65.7788C229.15 69.4367 227.171 71.5664 223.719 71.5664C222.662 71.5664 221.834 71.5664 219.486 70.4091L214.655 67.6309C213.459 66.9364 212.722 65.64 212.722 64.2509V42.9066C212.722 41.5175 213.459 40.2212 214.655 39.5266L233.015 28.8314C234.165 28.1832 235.729 28.1832 236.88 28.8314L255.239 39.5266C256.435 40.2212 257.171 41.5175 257.171 42.9066V64.2509C257.171 65.64 256.435 66.9364 255.239 67.6309L236.88 78.3261C236.328 78.5578 235.637 78.743 234.948 78.743Z" fill="#5FA04E"/> -<path d="M240.653 64.0652C232.6 64.0652 230.943 60.3612 230.943 57.2128C230.943 56.935 231.173 56.6572 231.495 56.6572H233.888C234.165 56.6572 234.394 56.8425 234.394 57.1202C234.762 59.574 235.821 60.778 240.699 60.778C244.564 60.778 246.221 59.8983 246.221 57.8148C246.221 56.611 245.759 55.7313 239.732 55.1293C234.717 54.6199 231.587 53.5087 231.587 49.4805C231.587 45.7304 234.717 43.5078 239.962 43.5078C245.853 43.5078 248.751 45.5451 249.119 49.99C249.119 50.129 249.074 50.2678 248.983 50.4067C248.888 50.4993 248.751 50.5919 248.611 50.5919H246.173C245.945 50.5919 245.714 50.4067 245.668 50.1751C245.115 47.6286 243.688 46.7953 239.916 46.7953C235.682 46.7953 235.177 48.2769 235.177 49.388C235.177 50.7306 235.774 51.1475 241.48 51.8883C247.14 52.629 249.81 53.6939 249.81 57.6757C249.81 61.7501 246.45 64.0652 240.653 64.0652Z" fill="#5FA04E"/> -<path d="M267.16 41.6557C267.16 43.6005 265.548 45.221 263.615 45.221C261.683 45.221 260.072 43.6466 260.072 41.6557C260.072 39.6187 261.729 38.0908 263.615 38.0908C265.503 38.0908 267.16 39.6648 267.16 41.6557ZM260.625 41.6557C260.625 43.3227 261.96 44.6654 263.569 44.6654C265.227 44.6654 266.561 43.2763 266.561 41.6557C266.561 39.989 265.227 38.6927 263.569 38.6927C262.006 38.6927 260.625 39.989 260.625 41.6557ZM262.282 39.6648H263.663C264.123 39.6648 265.044 39.6648 265.044 40.7298C265.044 41.4706 264.581 41.6096 264.304 41.7021C264.859 41.7484 264.904 42.119 264.949 42.6281C264.996 42.9523 265.044 43.5078 265.135 43.693H264.304C264.304 43.5078 264.168 42.4894 264.168 42.443C264.123 42.2116 264.031 42.119 263.755 42.119H263.064V43.7393H262.282V39.6648ZM263.017 41.4244H263.615C264.123 41.4244 264.213 41.0541 264.213 40.8688C264.213 40.3133 263.845 40.3133 263.615 40.3133H262.973V41.4244H263.017Z" fill="#5FA04E"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M43.6671 41.9478C43.6671 41.1144 43.2071 40.3275 42.4709 39.9107L23.007 28.5671C22.6849 28.3819 22.3167 28.2893 21.9486 28.2432C21.9026 28.2432 21.7647 28.2432 21.7647 28.2432C21.3965 28.2432 21.0284 28.3819 20.7063 28.5671L1.19636 39.8643C0.46014 40.2811 0 41.0684 0 41.9478L0.046014 72.3209C0.046014 72.7377 0.276084 73.1542 0.644196 73.3394C1.0123 73.5711 1.47245 73.5711 1.79455 73.3394L13.3901 66.6722C14.1263 66.2556 14.5864 65.4685 14.5864 64.6351V50.4208C14.5864 49.5875 15.0465 48.8002 15.7828 48.3837L20.7063 45.5131C21.0744 45.2814 21.4885 45.1888 21.9026 45.1888C22.3167 45.1888 22.7309 45.2814 23.053 45.5131L27.9764 48.3837C28.7126 48.8002 29.1729 49.5875 29.1729 50.4208V64.6351C29.1729 65.4685 29.6331 66.2556 30.3692 66.6722L41.8728 73.3394C42.2408 73.5711 42.7009 73.5711 43.0691 73.3394C43.4373 73.1542 43.6671 72.7377 43.6671 72.3209V41.9478Z" fill="#333333"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M137.444 0.138901C137.076 -0.0463003 136.616 -0.0463003 136.293 0.138901C135.925 0.370401 135.696 0.740804 135.696 1.15751V31.2526C135.696 31.5304 135.557 31.8081 135.281 31.9936C135.005 32.1324 134.729 32.1324 134.453 31.9936L129.576 29.1691C128.84 28.7526 127.965 28.7526 127.229 29.1691L107.719 40.5127C106.983 40.9295 106.523 41.7165 106.523 42.5498V65.1906C106.523 66.0243 106.983 66.8112 107.719 67.228L127.229 78.5716C127.965 78.9882 128.84 78.9882 129.576 78.5716L149.086 67.228C149.822 66.8112 150.282 66.0243 150.282 65.1906V8.75077C150.282 7.87104 149.822 7.08394 149.086 6.66724L137.444 0.138901ZM135.65 57.7365C135.65 57.9678 135.557 58.153 135.374 58.2457L128.701 62.1351C128.517 62.2277 128.287 62.2277 128.103 62.1351L121.431 58.2457C121.247 58.153 121.155 57.9216 121.155 57.7365V49.9581C121.155 49.7265 121.247 49.5413 121.431 49.4487L128.103 45.5595C128.287 45.4669 128.517 45.4669 128.701 45.5595L135.374 49.4487C135.557 49.5413 135.65 49.7729 135.65 49.9581V57.7365Z" fill="#333333"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M202.367 49.7725C203.105 49.3557 203.518 48.5688 203.518 47.7352V42.2255C203.518 41.3922 203.059 40.605 202.367 40.1885L182.996 28.8912C182.26 28.4744 181.386 28.4744 180.649 28.8912L161.14 40.2346C160.403 40.6514 159.943 41.4385 159.943 42.2719V64.9128C159.943 65.7461 160.403 66.5333 161.14 66.9498L180.511 78.0619C181.248 78.4786 182.122 78.4786 182.812 78.0619L194.546 71.4875C194.914 71.3023 195.144 70.8855 195.144 70.4686C195.144 70.0521 194.914 69.6354 194.546 69.4501L174.944 58.1064C174.576 57.8751 174.346 57.5048 174.346 57.088V50.0041C174.346 49.5873 174.576 49.1705 174.944 48.9853L181.064 45.4666C181.432 45.2352 181.892 45.2352 182.26 45.4666L188.38 48.9853C188.748 49.217 188.977 49.5873 188.977 50.0041V55.56C188.977 55.9768 189.208 56.3933 189.577 56.5786C189.944 56.8102 190.404 56.8102 190.772 56.5786L202.367 49.7725Z" fill="#333333"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M181.524 48.7082C181.661 48.6155 181.846 48.6155 181.985 48.7082L185.711 50.8843C185.849 50.9768 185.941 51.1158 185.941 51.301V55.6532C185.941 55.8384 185.849 55.9774 185.711 56.07L181.985 58.2461C181.846 58.3387 181.661 58.3387 181.524 58.2461L177.797 56.07C177.659 55.9774 177.567 55.8384 177.567 55.6532V51.301C177.567 51.1158 177.659 50.9768 177.797 50.8843L181.524 48.7082Z" fill="#5FA04E"/> -<mask id="mask1_12_17" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="53" y="28" width="44" height="51"> -<path d="M76.2211 28.9482C75.4847 28.5316 74.6105 28.5316 73.8743 28.9482L54.5024 40.1993C53.7662 40.616 53.3521 41.4029 53.3521 42.2366V64.7846C53.3521 65.6181 53.8122 66.405 54.5024 66.8219L73.8743 78.0729C74.6105 78.4894 75.4847 78.4894 76.2211 78.0729L95.5929 66.8219C96.3288 66.405 96.7431 65.6181 96.7431 64.7846V42.2366C96.7431 41.4029 96.2832 40.616 95.5929 40.1993L76.2211 28.9482Z" fill="white"/> -</mask> -<g mask="url(#mask1_12_17)"> -<path d="M103.17 53.5459H53.4209V61.8043H103.17V53.5459Z" fill="#008026"/> -<path d="M103.17 61.8042H53.4209V70.1621H103.17V61.8042Z" fill="#004DFF"/> -<path d="M103.17 37.0293H53.4209V45.2877H103.17V37.0293Z" fill="#FF8C00"/> -<path d="M103.17 45.2876H53.4209V53.546H103.17V45.2876Z" fill="#FFED00"/> -<path d="M103.17 28.6714H53.4209V37.0293H103.17V28.6714Z" fill="#E40303"/> -<path d="M103.17 70.1626H53.4209V78.421H103.17V70.1626Z" fill="#750787"/> -</g> -</g> -</g> -<defs> -<clipPath id="clip0_12_17"> -<rect width="267" height="79.988" fill="white"/> -</clipPath> -</defs> -</svg> +<svg xmlns="http://www.w3.org/2000/svg" width="267" height="80" fill="none"><mask id="a" width="267" height="80" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M266.96 0H0v79.988h266.96V0Z"/></mask><g mask="url(#a)"><path fill="#5FA04E" d="M234.948 78.743a4.013 4.013 0 0 1-1.933-.51l-6.12-3.657c-.921-.51-.46-.695-.184-.787 1.242-.417 1.472-.51 2.76-1.25.139-.093.323-.046.46.046l4.694 2.824c.184.093.413.093.552 0l18.36-10.695c.183-.093.277-.278.277-.51V42.86c0-.231-.094-.416-.277-.509l-18.36-10.649c-.184-.093-.415-.093-.552 0l-18.36 10.649c-.184.093-.276.324-.276.51v21.344c0 .185.092.416.276.509l5.015 2.917c2.715 1.389 4.418-.232 4.418-1.852V44.712c0-.277.23-.555.553-.555h2.347c.276 0 .552.231.552.555V65.78c0 3.658-1.979 5.787-5.431 5.787-1.057 0-1.885 0-4.233-1.157l-4.831-2.778a3.913 3.913 0 0 1-1.933-3.38V42.907c0-1.39.737-2.686 1.933-3.38l18.36-10.696c1.15-.648 2.714-.648 3.865 0l18.359 10.696a3.913 3.913 0 0 1 1.932 3.38V64.25c0 1.389-.736 2.685-1.932 3.38L236.88 78.326c-.552.232-1.243.417-1.932.417Z"/><path fill="#5FA04E" d="M240.653 64.065c-8.053 0-9.71-3.704-9.71-6.852 0-.278.23-.556.552-.556h2.393c.277 0 .506.186.506.463.368 2.454 1.427 3.658 6.305 3.658 3.865 0 5.522-.88 5.522-2.963 0-1.204-.462-2.084-6.489-2.686-5.015-.51-8.145-1.62-8.145-5.648 0-3.75 3.13-5.973 8.375-5.973 5.891 0 8.789 2.037 9.157 6.482a.755.755 0 0 1-.136.417c-.095.092-.232.185-.372.185h-2.438a.54.54 0 0 1-.505-.417c-.553-2.546-1.98-3.38-5.752-3.38-4.234 0-4.739 1.482-4.739 2.593 0 1.343.597 1.76 6.303 2.5 5.66.741 8.33 1.806 8.33 5.788 0 4.074-3.36 6.39-9.157 6.39ZM267.16 41.656c0 1.944-1.612 3.565-3.545 3.565a3.556 3.556 0 0 1-3.543-3.565 3.555 3.555 0 0 1 3.543-3.565c1.888 0 3.545 1.574 3.545 3.565Zm-6.535 0c0 1.667 1.335 3.01 2.944 3.01 1.658 0 2.992-1.39 2.992-3.01 0-1.667-1.334-2.963-2.992-2.963-1.563 0-2.944 1.296-2.944 2.963Zm1.657-1.991h1.381c.46 0 1.381 0 1.381 1.065 0 .74-.463.88-.74.972.555.046.6.417.645.926.047.324.095.88.186 1.065h-.831c0-.185-.136-1.204-.136-1.25-.045-.231-.137-.324-.413-.324h-.691v1.62h-.782v-4.074Zm.735 1.76h.598c.508 0 .598-.37.598-.556 0-.556-.368-.556-.598-.556h-.642v1.111h.044Z"/><path fill="#333" fill-rule="evenodd" d="M43.667 41.948c0-.834-.46-1.62-1.196-2.037L23.007 28.567c-.322-.185-.69-.278-1.058-.324h-.184c-.369 0-.737.139-1.059.324L1.196 39.864A2.377 2.377 0 0 0 0 41.948L.046 72.32c0 .417.23.833.598 1.018.368.232.828.232 1.15 0l11.596-6.667a2.358 2.358 0 0 0 1.196-2.037V50.421c0-.834.46-1.62 1.197-2.037l4.923-2.87a2.217 2.217 0 0 1 1.197-.325c.414 0 .828.092 1.15.324l4.923 2.87a2.358 2.358 0 0 1 1.197 2.038v14.214c0 .834.46 1.62 1.196 2.037l11.504 6.667c.368.232.828.232 1.196 0 .368-.185.598-.601.598-1.018V41.948ZM137.444.139c-.368-.185-.828-.185-1.151 0-.368.231-.597.602-.597 1.019v30.095a.893.893 0 0 1-.415.74.875.875 0 0 1-.828 0l-4.877-2.824a2.36 2.36 0 0 0-2.347 0l-19.51 11.344a2.358 2.358 0 0 0-1.196 2.037v22.64c0 .834.46 1.621 1.196 2.038l19.51 11.344a2.36 2.36 0 0 0 2.347 0l19.51-11.344a2.358 2.358 0 0 0 1.196-2.037V8.75c0-.88-.46-1.667-1.196-2.084L137.444.14Zm-1.794 57.598c0 .23-.093.416-.276.509l-6.673 3.89a.678.678 0 0 1-.598 0l-6.672-3.89c-.184-.093-.276-.324-.276-.51v-7.778c0-.231.092-.417.276-.51l6.672-3.889a.678.678 0 0 1 .598 0l6.673 3.89c.183.092.276.324.276.51v7.777ZM202.367 49.773c.738-.417 1.151-1.204 1.151-2.038v-5.51c0-.833-.459-1.62-1.151-2.037l-19.371-11.297a2.359 2.359 0 0 0-2.347 0L161.14 40.235a2.357 2.357 0 0 0-1.197 2.037v22.64c0 .834.46 1.621 1.197 2.038l19.371 11.112c.737.417 1.611.417 2.301 0l11.734-6.575c.368-.185.598-.602.598-1.018 0-.417-.23-.834-.598-1.019l-19.602-11.344c-.368-.23-.598-.601-.598-1.018v-7.084c0-.417.23-.834.598-1.019l6.12-3.518a1.117 1.117 0 0 1 1.196 0l6.12 3.518c.368.232.597.602.597 1.02v5.555c0 .417.231.833.6 1.019.367.231.827.231 1.195 0l11.595-6.806Z" clip-rule="evenodd"/><path fill="#5FA04E" fill-rule="evenodd" d="M181.524 48.708a.417.417 0 0 1 .461 0l3.726 2.176c.138.093.23.232.23.417v4.352a.487.487 0 0 1-.23.417l-3.726 2.176a.417.417 0 0 1-.461 0l-3.727-2.176a.487.487 0 0 1-.23-.417v-4.352c0-.185.092-.324.23-.417l3.727-2.176Z" clip-rule="evenodd"/><g clip-path="url(#b)"><mask id="d" width="44" height="51" x="53" y="28" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="url(#c)" d="M76.348 28.96a2.385 2.385 0 0 0-2.36 0L54.507 40.205c-.74.417-1.157 1.204-1.157 2.036v22.54c0 .833.462 1.62 1.157 2.036l19.48 11.246a2.384 2.384 0 0 0 2.36 0L95.83 66.819c.74-.416 1.156-1.204 1.156-2.036v-22.54a2.412 2.412 0 0 0-1.156-2.036L76.348 28.96Z"/></mask><g mask="url(#d)"><path fill="#750787" d="M97.056 70.132H53.35v8.258h43.706v-8.258Z"/><path fill="#004DFF" d="M97.056 61.773H53.35v8.358h43.706v-8.358Z"/><path fill="#008026" d="M97.056 53.515H53.35v8.258h43.706v-8.258Z"/><path fill="#FFED00" d="M97.056 45.256H53.35v8.259h43.706v-8.259Z"/><path fill="#FF8C00" d="M97.056 36.998H53.35v8.259h43.706v-8.259Z"/><path fill="#E40303" d="M97.056 28.64H53.35v8.358h43.706V28.64Z"/></g><g opacity=".5" style="mix-blend-mode:luminosity"><path fill="#fff" d="M76.348 28.96a2.385 2.385 0 0 0-2.36 0L54.507 40.205c-.74.417-1.157 1.204-1.157 2.036v22.54c0 .833.462 1.62 1.157 2.036l19.48 11.246a2.384 2.384 0 0 0 2.36 0L95.83 66.819c.74-.416 1.156-1.204 1.156-2.036v-22.54a2.412 2.412 0 0 0-1.156-2.036L76.348 28.96Z"/><g style="mix-blend-mode:luminosity"><mask id="f" width="44" height="51" x="53" y="28" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="url(#e)" d="M76.348 28.96a2.385 2.385 0 0 0-2.36 0L54.507 40.205c-.74.417-1.157 1.204-1.157 2.036v22.54c0 .833.462 1.62 1.157 2.036l19.48 11.246a2.384 2.384 0 0 0 2.36 0L95.83 66.819c.74-.416 1.156-1.204 1.156-2.036v-22.54a2.412 2.412 0 0 0-1.156-2.036L76.348 28.96Z"/></mask><g mask="url(#f)"><path fill="url(#g)" d="M76.348 28.96a2.385 2.385 0 0 0-2.36 0L54.507 40.205c-.74.417-1.157 1.204-1.157 2.036v22.54c0 .833.462 1.62 1.157 2.036l19.48 11.246a2.384 2.384 0 0 0 2.36 0L95.83 66.819c.74-.416 1.156-1.204 1.156-2.036v-22.54a2.412 2.412 0 0 0-1.156-2.036L76.348 28.96Z"/><g filter="url(#h)"><path fill="url(#i)" d="M95.875 40.206 76.3 28.96a3.215 3.215 0 0 0-.601-.231l-21.885 37.49c.185.231.477.569.709.708l19.463 11.138c.556.324 1.203.417 1.805.231l20.591-37.672a1.448 1.448 0 0 0-.508-.417Z"/></g><g filter="url(#j)"><path fill="url(#k)" d="M95.826 66.818c.556-.324 1.057-.931 1.057-1.663L75.559 28.682c-.556-.092-1.157-.046-1.666.277l-19.434 11.2 20.96 38.23c.306-.05.602-.144.88-.278l19.527-11.293Z"/></g></g></g></g></g></g><defs><linearGradient id="c" x1="83.101" x2="65.483" y1="37.336" y2="73.272" gradientUnits="userSpaceOnUse"><stop stop-color="#3F873F"/><stop offset=".33" stop-color="#3F8B3D"/><stop offset=".637" stop-color="#3E9638"/><stop offset=".934" stop-color="#3DA92E"/><stop offset="1" stop-color="#3DAE2B"/></linearGradient><linearGradient id="e" x1="83.101" x2="65.483" y1="37.336" y2="73.272" gradientUnits="userSpaceOnUse"><stop stop-color="#3F873F"/><stop offset=".33" stop-color="#3F8B3D"/><stop offset=".637" stop-color="#3E9638"/><stop offset=".934" stop-color="#3DA92E"/><stop offset="1" stop-color="#3DAE2B"/></linearGradient><linearGradient id="g" x1="83.101" x2="65.483" y1="37.336" y2="73.272" gradientUnits="userSpaceOnUse"><stop stop-color="#3F873F"/><stop offset=".33" stop-color="#3F8B3D"/><stop offset=".637" stop-color="#3E9638"/><stop offset=".934" stop-color="#3DA92E"/><stop offset="1" stop-color="#3DAE2B"/></linearGradient><linearGradient id="i" x1="72.207" x2="121.636" y1="56.143" y2="19.63" gradientUnits="userSpaceOnUse"><stop offset=".138" stop-color="#3F873F"/><stop offset=".402" stop-color="#52A044"/><stop offset=".713" stop-color="#64B749"/><stop offset=".908" stop-color="#6ABF4B"/></linearGradient><linearGradient id="k" x1="52.636" x2="97.713" y1="53.505" y2="53.505" gradientUnits="userSpaceOnUse"><stop offset=".092" stop-color="#6ABF4B"/><stop offset=".287" stop-color="#64B749"/><stop offset=".598" stop-color="#52A044"/><stop offset=".862" stop-color="#3F873F"/></linearGradient><filter id="h" width="66.568" height="73.662" x="41.815" y="16.728" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation="6"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1_1774"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_1_1774" result="shape"/></filter><filter id="j" width="66.424" height="73.748" x="42.459" y="16.64" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation="6"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1_1774"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_1_1774" result="shape"/></filter><clipPath id="b"><path fill="#fff" d="M53.35 28.64h43.707v49.75H53.35z"/></clipPath></defs></svg> diff --git a/apps/site/public/static/logos/nodejsLightPride.svg b/apps/site/public/static/logos/nodejsLightPride.svg index 29c9f9098cb85..9de9a30fa9e23 100644 --- a/apps/site/public/static/logos/nodejsLightPride.svg +++ b/apps/site/public/static/logos/nodejsLightPride.svg @@ -1,32 +1 @@ -<svg width="267" height="80" viewBox="0 0 267 80" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_12_39)"> -<mask id="mask0_12_39" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="267" height="80"> -<path d="M266.96 0H0V79.988H266.96V0Z" fill="white"/> -</mask> -<g mask="url(#mask0_12_39)"> -<path d="M234.948 78.743C234.257 78.743 233.613 78.5578 233.015 78.2336L226.895 74.576C225.974 74.0666 226.435 73.8814 226.711 73.7888C227.953 73.372 228.183 73.2794 229.471 72.5388C229.61 72.4461 229.794 72.4925 229.931 72.5851L234.625 75.4094C234.809 75.502 235.038 75.502 235.177 75.4094L253.537 64.7139C253.72 64.6213 253.814 64.4361 253.814 64.2048V42.8602C253.814 42.6288 253.72 42.4437 253.537 42.351L235.177 31.7021C234.993 31.6094 234.762 31.6094 234.625 31.7021L216.265 42.351C216.081 42.4437 215.989 42.675 215.989 42.8602V64.2048C215.989 64.39 216.081 64.6213 216.265 64.7139L221.28 67.631C223.995 69.0198 225.698 67.3994 225.698 65.7788V44.7123C225.698 44.4346 225.928 44.1568 226.251 44.1568H228.598C228.874 44.1568 229.15 44.3882 229.15 44.7123V65.7788C229.15 69.4367 227.171 71.5664 223.719 71.5664C222.662 71.5664 221.834 71.5664 219.486 70.4091L214.655 67.631C213.459 66.9364 212.722 65.6401 212.722 64.2509V42.9066C212.722 41.5175 213.459 40.2212 214.655 39.5266L233.015 28.8314C234.165 28.1832 235.729 28.1832 236.88 28.8314L255.239 39.5266C256.435 40.2212 257.171 41.5175 257.171 42.9066V64.2509C257.171 65.6401 256.435 66.9364 255.239 67.631L236.88 78.3262C236.328 78.5578 235.637 78.743 234.948 78.743Z" fill="#5FA04E"/> -<path d="M240.653 64.0652C232.6 64.0652 230.943 60.3612 230.943 57.2128C230.943 56.935 231.173 56.6571 231.495 56.6571H233.888C234.165 56.6571 234.394 56.8425 234.394 57.1202C234.762 59.574 235.821 60.778 240.699 60.778C244.564 60.778 246.221 59.8982 246.221 57.8148C246.221 56.611 245.759 55.7313 239.732 55.1293C234.717 54.6198 231.587 53.5087 231.587 49.4805C231.587 45.7304 234.717 43.5078 239.962 43.5078C245.853 43.5078 248.751 45.5451 249.119 49.99C249.119 50.1289 249.074 50.2677 248.983 50.4067C248.888 50.4992 248.751 50.5919 248.611 50.5919H246.173C245.945 50.5919 245.714 50.4067 245.668 50.1751C245.115 47.6286 243.688 46.7953 239.916 46.7953C235.682 46.7953 235.177 48.2768 235.177 49.388C235.177 50.7306 235.774 51.1475 241.48 51.8882C247.14 52.6289 249.81 53.6939 249.81 57.6757C249.81 61.7501 246.45 64.0652 240.653 64.0652Z" fill="#5FA04E"/> -<path d="M267.16 41.6557C267.16 43.6005 265.548 45.221 263.615 45.221C261.683 45.221 260.072 43.6466 260.072 41.6557C260.072 39.6187 261.729 38.0908 263.615 38.0908C265.503 38.0908 267.16 39.6648 267.16 41.6557ZM260.625 41.6557C260.625 43.3227 261.96 44.6654 263.569 44.6654C265.227 44.6654 266.561 43.2763 266.561 41.6557C266.561 39.989 265.227 38.6927 263.569 38.6927C262.006 38.6927 260.625 39.989 260.625 41.6557ZM262.282 39.6648H263.663C264.123 39.6648 265.044 39.6648 265.044 40.7298C265.044 41.4706 264.581 41.6096 264.304 41.7021C264.859 41.7484 264.904 42.119 264.949 42.6281C264.996 42.9523 265.044 43.5078 265.135 43.693H264.304C264.304 43.5078 264.168 42.4894 264.168 42.443C264.123 42.2116 264.031 42.119 263.755 42.119H263.064V43.7393H262.282V39.6648ZM263.017 41.4244H263.615C264.123 41.4244 264.213 41.0541 264.213 40.8688C264.213 40.3133 263.845 40.3133 263.615 40.3133H262.973V41.4244H263.017Z" fill="#5FA04E"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M43.6671 41.9478C43.6671 41.1144 43.2071 40.3275 42.4709 39.9107L23.007 28.5671C22.6849 28.3819 22.3167 28.2893 21.9486 28.2432C21.9026 28.2432 21.7647 28.2432 21.7647 28.2432C21.3965 28.2432 21.0284 28.3819 20.7063 28.5671L1.19636 39.8643C0.46014 40.2811 0 41.0684 0 41.9478L0.046014 72.3209C0.046014 72.7377 0.276084 73.1542 0.644196 73.3394C1.0123 73.5711 1.47245 73.5711 1.79455 73.3394L13.3901 66.6722C14.1263 66.2556 14.5864 65.4685 14.5864 64.6351V50.4208C14.5864 49.5875 15.0465 48.8002 15.7828 48.3837L20.7063 45.5131C21.0744 45.2814 21.4885 45.1888 21.9026 45.1888C22.3167 45.1888 22.7309 45.2814 23.053 45.5131L27.9764 48.3837C28.7126 48.8002 29.1729 49.5875 29.1729 50.4208V64.6351C29.1729 65.4685 29.6331 66.2556 30.3692 66.6722L41.8728 73.3394C42.2408 73.5711 42.7009 73.5711 43.0691 73.3394C43.4373 73.1542 43.6671 72.7377 43.6671 72.3209V41.9478Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M137.444 0.138901C137.076 -0.0463003 136.616 -0.0463003 136.293 0.138901C135.925 0.370401 135.696 0.740804 135.696 1.15751V31.2526C135.696 31.5304 135.557 31.8081 135.281 31.9936C135.005 32.1324 134.729 32.1324 134.453 31.9936L129.576 29.1691C128.84 28.7526 127.965 28.7526 127.229 29.1691L107.719 40.5127C106.983 40.9295 106.523 41.7165 106.523 42.5498V65.1906C106.523 66.0243 106.983 66.8112 107.719 67.228L127.229 78.5716C127.965 78.9882 128.84 78.9882 129.576 78.5716L149.086 67.228C149.822 66.8112 150.282 66.0243 150.282 65.1906V8.75077C150.282 7.87104 149.822 7.08394 149.086 6.66724L137.444 0.138901ZM135.65 57.7365C135.65 57.9678 135.557 58.153 135.374 58.2457L128.701 62.1351C128.517 62.2277 128.287 62.2277 128.103 62.1351L121.431 58.2457C121.247 58.153 121.155 57.9216 121.155 57.7365V49.9581C121.155 49.7265 121.247 49.5413 121.431 49.4487L128.103 45.5595C128.287 45.4669 128.517 45.4669 128.701 45.5595L135.374 49.4487C135.557 49.5413 135.65 49.7729 135.65 49.9581V57.7365Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M202.367 49.7725C203.105 49.3557 203.518 48.5688 203.518 47.7352V42.2255C203.518 41.3922 203.059 40.605 202.367 40.1885L182.996 28.8912C182.26 28.4744 181.386 28.4744 180.649 28.8912L161.14 40.2346C160.403 40.6514 159.943 41.4385 159.943 42.2719V64.9128C159.943 65.7461 160.403 66.5333 161.14 66.9498L180.511 78.0619C181.248 78.4786 182.122 78.4786 182.812 78.0619L194.546 71.4875C194.914 71.3023 195.144 70.8855 195.144 70.4686C195.144 70.0521 194.914 69.6354 194.546 69.4501L174.944 58.1064C174.576 57.8751 174.346 57.5048 174.346 57.088V50.0041C174.346 49.5873 174.576 49.1705 174.944 48.9853L181.064 45.4666C181.432 45.2352 181.892 45.2352 182.26 45.4666L188.38 48.9853C188.748 49.217 188.977 49.5873 188.977 50.0041V55.56C188.977 55.9768 189.208 56.3933 189.577 56.5786C189.944 56.8102 190.404 56.8102 190.772 56.5786L202.367 49.7725Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M181.524 48.7082C181.661 48.6155 181.846 48.6155 181.985 48.7082L185.711 50.8843C185.849 50.9768 185.941 51.1158 185.941 51.301V55.6532C185.941 55.8384 185.849 55.9774 185.711 56.07L181.985 58.2461C181.846 58.3387 181.661 58.3387 181.524 58.2461L177.797 56.07C177.659 55.9774 177.567 55.8384 177.567 55.6532V51.301C177.567 51.1158 177.659 50.9768 177.797 50.8843L181.524 48.7082Z" fill="#5FA04E"/> -<mask id="mask1_12_39" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="53" y="28" width="44" height="51"> -<path d="M76.2211 28.9482C75.4847 28.5316 74.6105 28.5316 73.8743 28.9482L54.5024 40.1993C53.7662 40.616 53.3521 41.4029 53.3521 42.2366V64.7846C53.3521 65.6181 53.8122 66.405 54.5024 66.8219L73.8743 78.0729C74.6105 78.4894 75.4847 78.4894 76.2211 78.0729L95.5929 66.8219C96.3288 66.405 96.7431 65.6181 96.7431 64.7846V42.2366C96.7431 41.4029 96.2832 40.616 95.5929 40.1993L76.2211 28.9482Z" fill="white"/> -</mask> -<g mask="url(#mask1_12_39)"> -<path d="M103.17 53.5459H53.4209V61.8043H103.17V53.5459Z" fill="#008026"/> -<path d="M103.17 61.8042H53.4209V70.1621H103.17V61.8042Z" fill="#004DFF"/> -<path d="M103.17 37.0293H53.4209V45.2877H103.17V37.0293Z" fill="#FF8C00"/> -<path d="M103.17 45.2876H53.4209V53.546H103.17V45.2876Z" fill="#FFED00"/> -<path d="M103.17 28.6714H53.4209V37.0293H103.17V28.6714Z" fill="#E40303"/> -<path d="M103.17 70.1626H53.4209V78.421H103.17V70.1626Z" fill="#750787"/> -</g> -</g> -</g> -<defs> -<clipPath id="clip0_12_39"> -<rect width="267" height="79.988" fill="white"/> -</clipPath> -</defs> -</svg> +<svg xmlns="http://www.w3.org/2000/svg" width="267" height="80" fill="none"><mask id="a" width="267" height="80" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M266.96 0H0v79.988h266.96V0Z"/></mask><g mask="url(#a)"><path fill="#5FA04E" d="M234.948 78.743a4.013 4.013 0 0 1-1.933-.51l-6.12-3.657c-.921-.51-.46-.695-.184-.787 1.242-.417 1.472-.51 2.76-1.25.139-.093.323-.046.46.046l4.694 2.824c.184.093.413.093.552 0l18.36-10.695c.183-.093.277-.278.277-.51V42.86c0-.231-.094-.416-.277-.509l-18.36-10.649c-.184-.093-.415-.093-.552 0l-18.36 10.649c-.184.093-.276.324-.276.51v21.344c0 .185.092.416.276.509l5.015 2.917c2.715 1.389 4.418-.232 4.418-1.852V44.712c0-.277.23-.555.553-.555h2.347c.276 0 .552.231.552.555V65.78c0 3.658-1.979 5.787-5.431 5.787-1.057 0-1.885 0-4.233-1.157l-4.831-2.778a3.913 3.913 0 0 1-1.933-3.38V42.907c0-1.39.737-2.686 1.933-3.38l18.36-10.696c1.15-.648 2.714-.648 3.865 0l18.359 10.696a3.913 3.913 0 0 1 1.932 3.38V64.25c0 1.39-.736 2.685-1.932 3.38L236.88 78.326c-.552.232-1.243.417-1.932.417Z"/><path fill="#5FA04E" d="M240.653 64.065c-8.053 0-9.71-3.704-9.71-6.852 0-.278.23-.556.552-.556h2.393c.277 0 .506.186.506.463.368 2.454 1.427 3.658 6.305 3.658 3.865 0 5.522-.88 5.522-2.963 0-1.204-.462-2.084-6.489-2.686-5.015-.51-8.145-1.62-8.145-5.648 0-3.75 3.13-5.973 8.375-5.973 5.891 0 8.789 2.037 9.157 6.482a.755.755 0 0 1-.136.417c-.095.092-.232.185-.372.185h-2.438a.54.54 0 0 1-.505-.417c-.553-2.546-1.98-3.38-5.752-3.38-4.234 0-4.739 1.482-4.739 2.593 0 1.343.597 1.76 6.303 2.5 5.66.74 8.33 1.806 8.33 5.788 0 4.074-3.36 6.39-9.157 6.39ZM267.16 41.656c0 1.944-1.612 3.565-3.545 3.565a3.556 3.556 0 0 1-3.543-3.565 3.555 3.555 0 0 1 3.543-3.565c1.888 0 3.545 1.574 3.545 3.565Zm-6.535 0c0 1.667 1.335 3.01 2.944 3.01 1.658 0 2.992-1.39 2.992-3.01 0-1.667-1.334-2.963-2.992-2.963-1.563 0-2.944 1.296-2.944 2.963Zm1.657-1.991h1.381c.46 0 1.381 0 1.381 1.065 0 .74-.463.88-.74.972.555.046.6.417.645.926.047.324.095.88.186 1.065h-.831c0-.185-.136-1.204-.136-1.25-.045-.231-.137-.324-.413-.324h-.691v1.62h-.782v-4.074Zm.735 1.76h.598c.508 0 .598-.37.598-.556 0-.556-.368-.556-.598-.556h-.642v1.111h.044Z"/><path fill="#fff" fill-rule="evenodd" d="M43.667 41.948c0-.834-.46-1.62-1.196-2.037L23.007 28.567c-.322-.185-.69-.278-1.058-.324h-.184c-.369 0-.737.139-1.059.324L1.196 39.864A2.377 2.377 0 0 0 0 41.948L.046 72.32c0 .417.23.833.598 1.018.368.232.828.232 1.15 0l11.596-6.667a2.358 2.358 0 0 0 1.196-2.037V50.421c0-.834.46-1.62 1.197-2.037l4.923-2.87a2.217 2.217 0 0 1 1.197-.325c.414 0 .828.092 1.15.324l4.923 2.87a2.358 2.358 0 0 1 1.197 2.038v14.214c0 .834.46 1.62 1.196 2.037l11.504 6.667c.368.232.828.232 1.196 0 .368-.185.598-.601.598-1.018V41.948ZM137.444.139c-.368-.185-.828-.185-1.151 0-.368.231-.597.602-.597 1.019v30.095a.893.893 0 0 1-.415.74.875.875 0 0 1-.828 0l-4.877-2.824a2.36 2.36 0 0 0-2.347 0l-19.51 11.344a2.358 2.358 0 0 0-1.196 2.037v22.64c0 .834.46 1.621 1.196 2.038l19.51 11.344a2.36 2.36 0 0 0 2.347 0l19.51-11.344a2.358 2.358 0 0 0 1.196-2.037V8.75c0-.88-.46-1.667-1.196-2.084L137.444.14Zm-1.794 57.598c0 .23-.093.416-.276.509l-6.673 3.89a.678.678 0 0 1-.598 0l-6.672-3.89c-.184-.093-.276-.324-.276-.51v-7.778c0-.231.092-.417.276-.51l6.672-3.889a.678.678 0 0 1 .598 0l6.673 3.89c.183.092.276.324.276.51v7.777ZM202.367 49.773c.738-.417 1.151-1.204 1.151-2.038v-5.51c0-.833-.459-1.62-1.151-2.037l-19.371-11.297a2.359 2.359 0 0 0-2.347 0L161.14 40.235a2.357 2.357 0 0 0-1.197 2.037v22.64c0 .834.46 1.621 1.197 2.038l19.371 11.112c.737.417 1.611.417 2.301 0l11.734-6.575c.368-.185.598-.602.598-1.018 0-.417-.23-.834-.598-1.019l-19.602-11.344c-.368-.23-.598-.601-.598-1.018v-7.084c0-.417.23-.834.598-1.019l6.12-3.518a1.117 1.117 0 0 1 1.196 0l6.12 3.518c.368.232.597.602.597 1.02v5.555c0 .417.231.833.6 1.019.367.231.827.231 1.195 0l11.595-6.806Z" clip-rule="evenodd"/><path fill="#5FA04E" fill-rule="evenodd" d="M181.524 48.708a.417.417 0 0 1 .461 0l3.726 2.176c.138.093.23.232.23.417v4.352a.487.487 0 0 1-.23.417l-3.726 2.176a.417.417 0 0 1-.461 0l-3.727-2.176a.487.487 0 0 1-.23-.417v-4.352c0-.185.092-.324.23-.417l3.727-2.176Z" clip-rule="evenodd"/><g clip-path="url(#b)"><mask id="d" width="44" height="51" x="53" y="28" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="url(#c)" d="M76.348 28.96a2.385 2.385 0 0 0-2.36 0L54.507 40.205c-.74.417-1.157 1.204-1.157 2.036v22.54c0 .833.463 1.62 1.157 2.036l19.48 11.246a2.385 2.385 0 0 0 2.36 0L95.83 66.819c.74-.416 1.156-1.204 1.156-2.036v-22.54a2.412 2.412 0 0 0-1.156-2.036L76.348 28.96Z"/></mask><g mask="url(#d)"><path fill="#750787" d="M97.056 70.132H53.35v8.258h43.706v-8.258Z"/><path fill="#004DFF" d="M97.056 61.773H53.35v8.358h43.706v-8.358Z"/><path fill="#008026" d="M97.056 53.515H53.35v8.258h43.706v-8.258Z"/><path fill="#FFED00" d="M97.056 45.256H53.35v8.259h43.706v-8.259Z"/><path fill="#FF8C00" d="M97.056 36.998H53.35v8.259h43.706v-8.259Z"/><path fill="#E40303" d="M97.056 28.64H53.35v8.358h43.706V28.64Z"/></g><g opacity=".5" style="mix-blend-mode:luminosity"><path fill="#fff" d="M76.348 28.96a2.385 2.385 0 0 0-2.36 0L54.507 40.205c-.74.417-1.157 1.204-1.157 2.036v22.54c0 .833.463 1.62 1.157 2.036l19.48 11.246a2.385 2.385 0 0 0 2.36 0L95.83 66.819c.74-.416 1.156-1.204 1.156-2.036v-22.54a2.412 2.412 0 0 0-1.156-2.036L76.348 28.96Z"/><g style="mix-blend-mode:luminosity"><mask id="f" width="44" height="51" x="53" y="28" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="url(#e)" d="M76.348 28.96a2.385 2.385 0 0 0-2.36 0L54.507 40.205c-.74.417-1.157 1.204-1.157 2.036v22.54c0 .833.463 1.62 1.157 2.036l19.48 11.246a2.385 2.385 0 0 0 2.36 0L95.83 66.819c.74-.416 1.156-1.204 1.156-2.036v-22.54a2.412 2.412 0 0 0-1.156-2.036L76.348 28.96Z"/></mask><g mask="url(#f)"><path fill="url(#g)" d="M76.348 28.96a2.385 2.385 0 0 0-2.36 0L54.507 40.205c-.74.417-1.157 1.204-1.157 2.036v22.54c0 .833.463 1.62 1.157 2.036l19.48 11.246a2.385 2.385 0 0 0 2.36 0L95.83 66.819c.74-.416 1.156-1.204 1.156-2.036v-22.54a2.412 2.412 0 0 0-1.156-2.036L76.348 28.96Z"/><g filter="url(#h)"><path fill="url(#i)" d="M95.875 40.206 76.3 28.96a3.215 3.215 0 0 0-.601-.231l-21.885 37.49c.185.231.477.569.709.708l19.463 11.138c.556.324 1.203.417 1.805.231l20.591-37.672a1.448 1.448 0 0 0-.508-.417Z"/></g><g filter="url(#j)"><path fill="url(#k)" d="M95.826 66.818c.556-.324 1.057-.931 1.057-1.663L75.559 28.682c-.556-.092-1.157-.046-1.666.277l-19.434 11.2 20.96 38.23c.306-.05.602-.144.88-.278l19.527-11.293Z"/></g></g></g></g></g></g><defs><linearGradient id="c" x1="83.101" x2="65.483" y1="37.336" y2="73.272" gradientUnits="userSpaceOnUse"><stop stop-color="#3F873F"/><stop offset=".33" stop-color="#3F8B3D"/><stop offset=".637" stop-color="#3E9638"/><stop offset=".934" stop-color="#3DA92E"/><stop offset="1" stop-color="#3DAE2B"/></linearGradient><linearGradient id="e" x1="83.101" x2="65.483" y1="37.336" y2="73.272" gradientUnits="userSpaceOnUse"><stop stop-color="#3F873F"/><stop offset=".33" stop-color="#3F8B3D"/><stop offset=".637" stop-color="#3E9638"/><stop offset=".934" stop-color="#3DA92E"/><stop offset="1" stop-color="#3DAE2B"/></linearGradient><linearGradient id="g" x1="83.101" x2="65.483" y1="37.336" y2="73.272" gradientUnits="userSpaceOnUse"><stop stop-color="#3F873F"/><stop offset=".33" stop-color="#3F8B3D"/><stop offset=".637" stop-color="#3E9638"/><stop offset=".934" stop-color="#3DA92E"/><stop offset="1" stop-color="#3DAE2B"/></linearGradient><linearGradient id="i" x1="72.207" x2="121.636" y1="56.143" y2="19.63" gradientUnits="userSpaceOnUse"><stop offset=".138" stop-color="#3F873F"/><stop offset=".402" stop-color="#52A044"/><stop offset=".713" stop-color="#64B749"/><stop offset=".908" stop-color="#6ABF4B"/></linearGradient><linearGradient id="k" x1="52.636" x2="97.713" y1="53.505" y2="53.505" gradientUnits="userSpaceOnUse"><stop offset=".092" stop-color="#6ABF4B"/><stop offset=".287" stop-color="#64B749"/><stop offset=".598" stop-color="#52A044"/><stop offset=".862" stop-color="#3F873F"/></linearGradient><filter id="h" width="66.568" height="73.662" x="41.815" y="16.728" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation="6"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1_1661"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_1_1661" result="shape"/></filter><filter id="j" width="66.424" height="73.748" x="42.459" y="16.64" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation="6"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1_1661"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_1_1661" result="shape"/></filter><clipPath id="b"><path fill="#fff" d="M53.35 28.64h43.707v49.75H53.35z"/></clipPath></defs></svg> diff --git a/packages/ui-components/Icons/Logos/Nodejs.tsx b/packages/ui-components/Icons/Logos/Nodejs.tsx index 71341be690cc8..d6129d77d73a5 100644 --- a/packages/ui-components/Icons/Logos/Nodejs.tsx +++ b/packages/ui-components/Icons/Logos/Nodejs.tsx @@ -72,9 +72,9 @@ const NodejsIcon: FC<NodeJsLogoProps> = ({ /> {variant === 'pride' ? ( - <> + <g clip-path="url(#clip0_1_1661)"> <mask - id="mask1_12_17" + id="mask1_1_1661" style={{ maskType: 'alpha' }} maskUnits="userSpaceOnUse" x="53" @@ -83,37 +83,77 @@ const NodejsIcon: FC<NodeJsLogoProps> = ({ height="51" > <path - d="M76.2211 28.9482C75.4847 28.5316 74.6105 28.5316 73.8743 28.9482L54.5024 40.1993C53.7662 40.616 53.3521 41.4029 53.3521 42.2366V64.7846C53.3521 65.6181 53.8122 66.405 54.5024 66.8219L73.8743 78.0729C74.6105 78.4894 75.4847 78.4894 76.2211 78.0729L95.5929 66.8219C96.3288 66.405 96.7431 65.6181 96.7431 64.7846V42.2366C96.7431 41.4029 96.2832 40.616 95.5929 40.1993L76.2211 28.9482Z" - fill="white" + d="M76.3478 28.9593C75.9882 28.7545 75.5815 28.6469 75.1677 28.6469C74.7539 28.6469 74.3472 28.7545 73.9876 28.9593L54.5067 40.2057C53.7665 40.6229 53.35 41.4099 53.35 42.2422V64.7816C53.35 65.6147 53.8126 66.4016 54.5067 66.8181L73.9876 78.0645C74.3472 78.2693 74.7539 78.3769 75.1677 78.3769C75.5815 78.3769 75.9882 78.2693 76.3478 78.0645L95.8286 66.8181C96.5689 66.4016 96.9854 65.6139 96.9854 64.7816V42.2422C96.9813 41.8325 96.8729 41.4307 96.6705 41.0745C96.4681 40.7184 96.1784 40.4196 95.8286 40.2064L76.3478 28.9593Z" + fill="url(#paint0_linear_1_1661)" /> </mask> - <g mask="url(#mask1_12_17)"> + <g mask="url(#mask1_1_1661)"> <path - d="M103.17 53.5459H53.4209V61.8043H103.17V53.5459Z" - fill="#008026" + d="M97.0564 70.1316H53.35V78.39H97.0564V70.1316Z" + fill="#750787" /> <path - d="M103.17 61.8042H53.4209V70.1621H103.17V61.8042Z" + d="M97.0564 61.7731H53.35V70.131H97.0564V61.7731Z" fill="#004DFF" /> <path - d="M103.17 37.0293H53.4209V45.2877H103.17V37.0293Z" - fill="#FF8C00" + d="M97.0564 53.5147H53.35V61.7732H97.0564V53.5147Z" + fill="#008026" /> <path - d="M103.17 45.2876H53.4209V53.546H103.17V45.2876Z" + d="M97.0564 45.2563H53.35V53.5148H97.0564V45.2563Z" fill="#FFED00" /> <path - d="M103.17 28.6714H53.4209V37.0293H103.17V28.6714Z" + d="M97.0564 36.998H53.35V45.2565H97.0564V36.998Z" + fill="#FF8C00" + /> + <path + d="M97.0564 28.64H53.35V36.998H97.0564V28.64Z" fill="#E40303" /> + </g> + <g style={{ mixBlendMode: 'luminosity' }} opacity="0.5"> <path - d="M103.17 70.1626H53.4209V78.421H103.17V70.1626Z" - fill="#750787" + d="M76.3478 28.9593C75.9882 28.7545 75.5815 28.6469 75.1677 28.6469C74.7539 28.6469 74.3472 28.7545 73.9876 28.9593L54.5067 40.2057C53.7665 40.6229 53.35 41.4099 53.35 42.2422V64.7816C53.35 65.6147 53.8126 66.4016 54.5067 66.8181L73.9876 78.0645C74.3472 78.2693 74.7539 78.3769 75.1677 78.3769C75.5815 78.3769 75.9882 78.2693 76.3478 78.0645L95.8286 66.8181C96.5689 66.4016 96.9854 65.6139 96.9854 64.7816V42.2422C96.9813 41.8325 96.8729 41.4307 96.6705 41.0745C96.4681 40.7184 96.1784 40.4196 95.8286 40.2064L76.3478 28.9593Z" + fill="white" /> + <g style={{ mixBlendMode: 'luminosity' }}> + <mask + id="mask2_1_1661" + style={{ maskType: 'alpha' }} + maskUnits="userSpaceOnUse" + x="53" + y="28" + width="44" + height="51" + > + <path + d="M76.3478 28.9593C75.9882 28.7545 75.5815 28.6469 75.1677 28.6469C74.7539 28.6469 74.3472 28.7545 73.9876 28.9593L54.5067 40.2057C53.7665 40.6229 53.35 41.4099 53.35 42.2422V64.7816C53.35 65.6147 53.8126 66.4016 54.5067 66.8181L73.9876 78.0645C74.3472 78.2693 74.7539 78.3769 75.1677 78.3769C75.5815 78.3769 75.9882 78.2693 76.3478 78.0645L95.8286 66.8181C96.5689 66.4016 96.9854 65.6139 96.9854 64.7816V42.2422C96.9813 41.8325 96.8729 41.4307 96.6705 41.0745C96.4681 40.7184 96.1784 40.4196 95.8286 40.2064L76.3478 28.9593Z" + fill="url(#paint1_linear_1_1661)" + /> + </mask> + <g mask="url(#mask2_1_1661)"> + <path + d="M76.3478 28.9593C75.9882 28.7545 75.5815 28.6469 75.1677 28.6469C74.7539 28.6469 74.3472 28.7545 73.9876 28.9593L54.5067 40.2057C53.7665 40.6229 53.35 41.4099 53.35 42.2422V64.7816C53.35 65.6147 53.8126 66.4016 54.5067 66.8181L73.9876 78.0645C74.3472 78.2693 74.7539 78.3769 75.1677 78.3769C75.5815 78.3769 75.9882 78.2693 76.3478 78.0645L95.8286 66.8181C96.5689 66.4016 96.9854 65.6139 96.9854 64.7816V42.2422C96.9813 41.8325 96.8729 41.4307 96.6705 41.0745C96.4681 40.7184 96.1784 40.4196 95.8286 40.2064L76.3478 28.9593Z" + fill="url(#paint2_linear_1_1661)" + /> + <g filter="url(#filter0_d_1_1661)"> + <path + d="M95.8746 40.2064L76.301 28.9586C76.1087 28.8617 75.9073 28.7843 75.6996 28.7277L53.8153 66.2174C54.0002 66.4491 54.292 66.7869 54.5237 66.9258L73.9875 78.0645C74.5428 78.3882 75.1903 78.481 75.7924 78.2954L96.3832 40.6229C96.2478 40.4469 96.0738 40.3044 95.8746 40.2064Z" + fill="url(#paint3_linear_1_1661)" + /> + </g> + <g filter="url(#filter1_d_1_1661)"> + <path + d="M95.8265 66.8181C96.3818 66.4937 96.8826 65.8866 96.8826 65.1549L75.5587 28.6823C75.0033 28.5895 74.4019 28.6356 73.8926 28.9593L54.4585 40.1596L75.4198 78.3882C75.7247 78.3383 76.0207 78.2448 76.2989 78.1105L95.8265 66.8181Z" + fill="url(#paint4_linear_1_1661)" + /> + </g> + </g> + </g> </g> - </> + </g> ) : ( <> <path @@ -131,10 +171,154 @@ const NodejsIcon: FC<NodeJsLogoProps> = ({ </> )} </g> + {variant === 'pride' ? ( <defs> - <clipPath id="clip0_12_17"> - <rect width="267" height="79.988" fill="white" /> + <filter + id="filter0_d_1_1661" + x="41.8153" + y="16.7277" + width="66.5679" + height="73.6624" + filterUnits="userSpaceOnUse" + color-interpolation-filters="sRGB" + > + <feFlood flood-opacity="0" result="BackgroundImageFix" /> + <feColorMatrix + in="SourceAlpha" + type="matrix" + values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" + result="hardAlpha" + /> + <feOffset /> + <feGaussianBlur stdDeviation="6" /> + <feComposite in2="hardAlpha" operator="out" /> + <feColorMatrix + type="matrix" + values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0" + /> + <feBlend + mode="normal" + in2="BackgroundImageFix" + result="effect1_dropShadow_1_1661" + /> + <feBlend + mode="normal" + in="SourceGraphic" + in2="effect1_dropShadow_1_1661" + result="shape" + /> + </filter> + <filter + id="filter1_d_1_1661" + x="42.4585" + y="16.64" + width="66.4241" + height="73.7482" + filterUnits="userSpaceOnUse" + color-interpolation-filters="sRGB" + > + <feFlood flood-opacity="0" result="BackgroundImageFix" /> + <feColorMatrix + in="SourceAlpha" + type="matrix" + values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" + result="hardAlpha" + /> + <feOffset /> + <feGaussianBlur stdDeviation="6" /> + <feComposite in2="hardAlpha" operator="out" /> + <feColorMatrix + type="matrix" + values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0" + /> + <feBlend + mode="normal" + in2="BackgroundImageFix" + result="effect1_dropShadow_1_1661" + /> + <feBlend + mode="normal" + in="SourceGraphic" + in2="effect1_dropShadow_1_1661" + result="shape" + /> + </filter> + <linearGradient + id="paint0_linear_1_1661" + x1="83.1011" + y1="37.3355" + x2="65.4825" + y2="73.2718" + gradientUnits="userSpaceOnUse" + > + <stop stop-color="#3F873F" /> + <stop offset="0.33" stop-color="#3F8B3D" /> + <stop offset="0.637" stop-color="#3E9638" /> + <stop offset="0.934" stop-color="#3DA92E" /> + <stop offset="1" stop-color="#3DAE2B" /> + </linearGradient> + <linearGradient + id="paint1_linear_1_1661" + x1="83.1011" + y1="37.3355" + x2="65.4825" + y2="73.2718" + gradientUnits="userSpaceOnUse" + > + <stop stop-color="#3F873F" /> + <stop offset="0.33" stop-color="#3F8B3D" /> + <stop offset="0.637" stop-color="#3E9638" /> + <stop offset="0.934" stop-color="#3DA92E" /> + <stop offset="1" stop-color="#3DAE2B" /> + </linearGradient> + <linearGradient + id="paint2_linear_1_1661" + x1="83.1011" + y1="37.3355" + x2="65.4825" + y2="73.2718" + gradientUnits="userSpaceOnUse" + > + <stop stop-color="#3F873F" /> + <stop offset="0.33" stop-color="#3F8B3D" /> + <stop offset="0.637" stop-color="#3E9638" /> + <stop offset="0.934" stop-color="#3DA92E" /> + <stop offset="1" stop-color="#3DAE2B" /> + </linearGradient> + <linearGradient + id="paint3_linear_1_1661" + x1="72.2067" + y1="56.1434" + x2="121.636" + y2="19.6297" + gradientUnits="userSpaceOnUse" + > + <stop offset="0.138" stop-color="#3F873F" /> + <stop offset="0.402" stop-color="#52A044" /> + <stop offset="0.713" stop-color="#64B749" /> + <stop offset="0.908" stop-color="#6ABF4B" /> + </linearGradient> + <linearGradient + id="paint4_linear_1_1661" + x1="52.636" + y1="53.5048" + x2="97.7135" + y2="53.5048" + gradientUnits="userSpaceOnUse" + > + <stop offset="0.092" stop-color="#6ABF4B" /> + <stop offset="0.287" stop-color="#64B749" /> + <stop offset="0.598" stop-color="#52A044" /> + <stop offset="0.862" stop-color="#3F873F" /> + </linearGradient> + <clipPath id="clip0_1_1661"> + <rect + width="43.7067" + height="49.75" + fill="white" + transform="translate(53.35 28.64)" + /> </clipPath> </defs> ) : ( From c0bc4dd7eb49f97f35ce0983849d17702404c76a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manish=20Kumar=20=E2=9B=84?= <manishprivet@protonmail.com> Date: Fri, 20 Jun 2025 00:18:24 +0900 Subject: [PATCH 0564/1385] fix(sidebar): use placeholders in select menu (#7871) * fix(#7646): add default value if current page is missing in sidebar sometimes current page can be missing from navigation data if the entry is not present in the navigation.json file. In those cases it shows an empty select box on smaller screens. This PR chooses the first item in the navigation tree if the current page is missing from there * refactor(#7646): update the select component to have a default placeholder of the window title in site * refactor(#7646): update the title source to that of frontmatter --- apps/site/components/withSidebar.tsx | 3 +++ packages/ui-components/Containers/Sidebar/index.tsx | 3 +++ 2 files changed, 6 insertions(+) diff --git a/apps/site/components/withSidebar.tsx b/apps/site/components/withSidebar.tsx index a1a2258f978ef..5320e424a7b19 100644 --- a/apps/site/components/withSidebar.tsx +++ b/apps/site/components/withSidebar.tsx @@ -7,6 +7,7 @@ import type { RichTranslationValues } from 'next-intl'; import type { FC } from 'react'; import Link from '#site/components/Link'; +import { useClientContext } from '#site/hooks'; import { useSiteNavigation } from '#site/hooks/server'; import { useRouter } from '#site/navigation.mjs'; import type { NavigationKeys } from '#site/types'; @@ -23,6 +24,7 @@ const WithSidebar: FC<WithSidebarProps> = ({ navKeys, context, ...props }) => { const locale = useLocale(); const t = useTranslations(); const { push } = useRouter(); + const { frontmatter } = useClientContext(); const sideNavigation = getSideNavigation(navKeys, context); const mappedSidebarItems = @@ -40,6 +42,7 @@ const WithSidebar: FC<WithSidebarProps> = ({ navKeys, context, ...props }) => { groups={mappedSidebarItems} pathname={pathname.replace(`/${locale}`, '')} title={t('components.common.sidebar.title')} + placeholder={frontmatter?.title} onSelect={push} as={Link} {...props} diff --git a/packages/ui-components/Containers/Sidebar/index.tsx b/packages/ui-components/Containers/Sidebar/index.tsx index 68b2404eb958c..71bc26115c6e2 100644 --- a/packages/ui-components/Containers/Sidebar/index.tsx +++ b/packages/ui-components/Containers/Sidebar/index.tsx @@ -15,6 +15,7 @@ type SidebarProps = { onSelect: (value: string) => void; as?: LinkLike; showProgressionIcons?: boolean; + placeholder?: string; }; const SideBar: FC<PropsWithChildren<SidebarProps>> = ({ @@ -25,6 +26,7 @@ const SideBar: FC<PropsWithChildren<SidebarProps>> = ({ as, showProgressionIcons = false, children, + placeholder, }) => { const selectItems = groups.map(({ items, groupName }) => ({ label: groupName, @@ -44,6 +46,7 @@ const SideBar: FC<PropsWithChildren<SidebarProps>> = ({ label={title} values={selectItems} defaultValue={currentItem?.value} + placeholder={placeholder} onChange={onSelect} className={styles.mobileSelect} /> From 177dacbc2d8d29d3d73e633086e2e8a81434815a Mon Sep 17 00:00:00 2001 From: Matteo Collina <hello@matteocollina.com> Date: Fri, 20 Jun 2025 17:33:21 +0200 Subject: [PATCH 0565/1385] Mikeal (#7878) * Added mikeal announcement Signed-off-by: Matteo Collina <hello@matteocollina.com> * fixup Signed-off-by: Matteo Collina <hello@matteocollina.com> * Update apps/site/pages/en/blog/announcements/mikeal.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> * fixup Signed-off-by: Matteo Collina <hello@matteocollina.com> * fixup Signed-off-by: Matteo Collina <hello@matteocollina.com> * fixup Signed-off-by: Matteo Collina <hello@matteocollina.com> --------- Signed-off-by: Matteo Collina <hello@matteocollina.com> Signed-off-by: Matteo Collina <matteo.collina@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- apps/site/authors.json | 5 +++++ .../pages/en/blog/announcements/mikeal.md | 21 ++++++++++++++++++ .../images/blog/announcements/mikeal.jpg | Bin 0 -> 154189 bytes 3 files changed, 26 insertions(+) create mode 100644 apps/site/pages/en/blog/announcements/mikeal.md create mode 100644 apps/site/public/static/images/blog/announcements/mikeal.jpg diff --git a/apps/site/authors.json b/apps/site/authors.json index cd266914cba64..cecd925a3ab7f 100644 --- a/apps/site/authors.json +++ b/apps/site/authors.json @@ -217,6 +217,11 @@ "name": "Richard Lau", "website": "https://github.com/richardlau" }, + "Robin Bender Ginn": { + "id": "rginn", + "name": "Robin Bender Ginn", + "website": "https://github.com/rginn" + }, "Rod Vagg": { "id": "rvagg", "name": "Rod Vagg", diff --git a/apps/site/pages/en/blog/announcements/mikeal.md b/apps/site/pages/en/blog/announcements/mikeal.md new file mode 100644 index 0000000000000..5db87eca46b5d --- /dev/null +++ b/apps/site/pages/en/blog/announcements/mikeal.md @@ -0,0 +1,21 @@ +--- +date: '2025-06-20T15:00:00.000Z' +category: announcements +title: 'In Memory of Mikeal Rogers: A Builder of Communities' +layout: blog-post +author: Robin Bender Ginn +--- + +![][mikeal-rogers-image] + +It is with deep sadness that we mark the passing of Mikeal Rogers, a leader, builder, and advocate for open source communities and for the people who power them. + +Mikeal’s contributions to Node.js, the broader JavaScript ecosystem, and the global open source movement cannot be overstated. He shaped not only the software we use every day, but also how we come together to build it. + +In 2014, at a time of uncertainty and fragmentation in the Node.js project, Mikeal was one of the key organizers behind the io.js fork not to create division, but to demonstrate a path forward built on open governance, transparency, and trust. + +This work led to the reunification of io.js and Node.js, under a new, more open governance model that persists to this day. Mikeal was later named the inaugural Executive Director of the Node.js Foundation, where he helped ensure that Node.js would be managed in the open, by and for its global community. The governance models Mikeal helped champion are now used by projects across the open source world. The Node.js Foundation, and now the OpenJS Foundation, stand as testaments to his belief in open, neutral, community-led institutions. + +His passing is a tremendous loss to the Node.js community, to the broader open web, and to everyone who cares about the health and sustainability of open source. We extend our deepest condolences to his family, friends, and the many people around the world who learned from, worked with, and were inspired by him. The best way to honor his work is to continue building the kind of open, welcoming, and resilient communities he spent his life advocating for. + +[mikeal-rogers-image]: /static/images/blog/announcements/mikeal.jpg diff --git a/apps/site/public/static/images/blog/announcements/mikeal.jpg b/apps/site/public/static/images/blog/announcements/mikeal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9032201ba2c0212995e92c3008911e5879f87a24 GIT binary patch literal 154189 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 literal 0 HcmV?d00001 From 31191f79d48a71d5124fdc6633ff78513117b03f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 Jun 2025 00:11:28 +0100 Subject: [PATCH 0566/1385] meta: bump chromaui/action from 11.28.2 to 12.0.0 (#7808) Bumps [chromaui/action](https://github.com/chromaui/action) from 11.28.2 to 12.0.0. - [Release notes](https://github.com/chromaui/action/releases) - [Commits](https://github.com/chromaui/action/compare/e8cc4c31775280b175a3c440076c00d19a9014d7...d7afd50124cf4f337bcd943e7f45cfa85a5e4476) --- updated-dependencies: - dependency-name: chromaui/action dependency-version: 12.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/chromatic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 81108deb114a6..db3e6c3975091 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -85,7 +85,7 @@ jobs: # This action must be manually updated to the latest commit from # https://github.com/chromaui/action id: chromatic-deploy - uses: chromaui/action@e8cc4c31775280b175a3c440076c00d19a9014d7 # v11.28.2 + uses: chromaui/action@d7afd50124cf4f337bcd943e7f45cfa85a5e4476 # v12.0.0 with: workingDir: packages/ui-components buildScriptName: storybook:build From 8d29e0f9ff8d419c6dc45db3f528b43086eea863 Mon Sep 17 00:00:00 2001 From: "Claudio W." <cwunder@gnome.org> Date: Sun, 22 Jun 2025 00:55:39 +0200 Subject: [PATCH 0567/1385] feat: redesigned home page with esp and updated downloads page (#7875) * feat: redesigned home page with esp and updated downloads page * chore: code review from copilot * chore: design review * chore: font-size review * chore: fix css * chore: important prefix * chore: adjust buttons * chore: applied code review * fix: button on all variants * fix: display block * fix: forgot ! --- .../Downloads/Release/ReleaseCodeBox.tsx | 13 ++ .../Downloads/Release/VersionDropdown.tsx | 27 +++- .../Downloads/ReleaseModal/index.tsx | 17 ++- apps/site/layouts/GlowingBackdrop.tsx | 1 + apps/site/layouts/layouts.module.css | 4 +- apps/site/pages/en/index.mdx | 36 ++--- apps/site/pages/es/index.mdx | 135 ----------------- apps/site/pages/fa/index.mdx | 133 ----------------- apps/site/pages/fr/index.mdx | 133 ----------------- apps/site/pages/id/index.mdx | 135 ----------------- apps/site/pages/ja/index.mdx | 133 ----------------- apps/site/pages/ko/index.mdx | 137 ----------------- apps/site/pages/pt/index.mdx | 135 ----------------- apps/site/pages/tr/index.mdx | 139 ------------------ apps/site/pages/uk/index.mdx | 134 ----------------- apps/site/pages/zh-cn/index.mdx | 132 ----------------- apps/site/pages/zh-tw/index.mdx | 133 ----------------- packages/i18n/locales/en.json | 4 +- .../Common/BaseButton/index.module.css | 5 +- 19 files changed, 77 insertions(+), 1509 deletions(-) delete mode 100644 apps/site/pages/es/index.mdx delete mode 100644 apps/site/pages/fa/index.mdx delete mode 100644 apps/site/pages/fr/index.mdx delete mode 100644 apps/site/pages/id/index.mdx delete mode 100644 apps/site/pages/ja/index.mdx delete mode 100644 apps/site/pages/ko/index.mdx delete mode 100644 apps/site/pages/pt/index.mdx delete mode 100644 apps/site/pages/tr/index.mdx delete mode 100644 apps/site/pages/uk/index.mdx delete mode 100644 apps/site/pages/zh-cn/index.mdx delete mode 100644 apps/site/pages/zh-tw/index.mdx diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 7e18a7bea4b9b..2aa77839acb44 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -38,6 +38,7 @@ const parseSnippet = (s: string, releaseContext: ReleaseContextType) => { const ReleaseCodeBox: FC = () => { const { snippets } = useContext(ReleasesContext); + const { installMethod, os, packageManager, release } = useContext(ReleaseContext); @@ -126,6 +127,18 @@ const ReleaseCodeBox: FC = () => { </AlertBox> )} + {release.status === 'LTS' && ( + <AlertBox + title={t('components.common.alertBox.info')} + level="info" + size="small" + > + {t.rich('layouts.download.codeBox.ltsVersionFeaturesNotice', { + link: text => <Link href="/download/current">{text}</Link>, + })} + </AlertBox> + )} + {!currentPlatform || currentPlatform.recommended || ( <AlertBox title={t('components.common.alertBox.info')} diff --git a/apps/site/components/Downloads/Release/VersionDropdown.tsx b/apps/site/components/Downloads/Release/VersionDropdown.tsx index c2e1663f09a19..9d962913f6648 100644 --- a/apps/site/components/Downloads/Release/VersionDropdown.tsx +++ b/apps/site/components/Downloads/Release/VersionDropdown.tsx @@ -1,10 +1,11 @@ 'use client'; import Select from '@node-core/ui-components/Common/Select'; -import { useTranslations } from 'next-intl'; +import { useLocale, useTranslations } from 'next-intl'; import type { FC } from 'react'; import { useContext } from 'react'; +import { redirect, usePathname } from '#site/navigation'; import { ReleaseContext, ReleasesContext, @@ -26,6 +27,28 @@ const VersionDropdown: FC = () => { const { releases } = useContext(ReleasesContext); const { release, setVersion } = useContext(ReleaseContext); const t = useTranslations(); + const locale = useLocale(); + const pathname = usePathname(); + + // Allows us to keep the route semantically correct to what the user should expect + // from the /current and non /current routes. + const setVersionOrNavigate = (version: string) => { + const release = releases.find( + ({ versionWithPrefix }) => versionWithPrefix === version + ); + + if (release?.status === 'LTS' && pathname.includes('current')) { + redirect({ href: '/download', locale }); + return; + } + + if (release?.status === 'Current' && !pathname.includes('current')) { + redirect({ href: '/download/current', locale }); + return; + } + + setVersion(version); + }; return ( <Select @@ -35,7 +58,7 @@ const VersionDropdown: FC = () => { label: getDropDownStatus(versionWithPrefix, status), }))} defaultValue={release.versionWithPrefix} - onChange={setVersion} + onChange={setVersionOrNavigate} className="min-w-36" inline={true} /> diff --git a/apps/site/components/Downloads/ReleaseModal/index.tsx b/apps/site/components/Downloads/ReleaseModal/index.tsx index 83a272a7214a0..a8887a5397116 100644 --- a/apps/site/components/Downloads/ReleaseModal/index.tsx +++ b/apps/site/components/Downloads/ReleaseModal/index.tsx @@ -5,6 +5,7 @@ import type { FC } from 'react'; import { MinorReleasesTable } from '#site/components/Downloads/MinorReleasesTable'; import { ReleaseOverview } from '#site/components/Downloads/ReleaseOverview'; +import Link from '#site/components/Link'; import LinkWithArrow from '#site/components/LinkWithArrow'; import type { NodeRelease } from '#site/types'; @@ -38,7 +39,21 @@ const ReleaseModal: FC<ReleaseModalProps> = ({ level="warning" size="small" > - {t('components.releaseModal.unsupportedVersionWarning')} + {t.rich('components.releaseModal.unsupportedVersionWarning', { + link: text => <Link href="/about/previous-releases/">{text}</Link>, + })} + </AlertBox> + )} + + {release.status === 'LTS' && ( + <AlertBox + title={t('components.common.alertBox.info')} + level="info" + size="small" + > + {t.rich('components.releaseModal.ltsVersionFeaturesNotice', { + link: text => <Link href="/download/current">{text}</Link>, + })} </AlertBox> )} diff --git a/apps/site/layouts/GlowingBackdrop.tsx b/apps/site/layouts/GlowingBackdrop.tsx index 30487e8fd001a..fa1a8130ad780 100644 --- a/apps/site/layouts/GlowingBackdrop.tsx +++ b/apps/site/layouts/GlowingBackdrop.tsx @@ -16,6 +16,7 @@ const GlowingBackdropLayout: FC< > = ({ kind = 'home', children }) => ( <> <WithNavBar /> + <div className={styles.centeredLayout}> <GlowingBackdrop /> diff --git a/apps/site/layouts/layouts.module.css b/apps/site/layouts/layouts.module.css index 09cff10300de0..5ea44d167e9fa 100644 --- a/apps/site/layouts/layouts.module.css +++ b/apps/site/layouts/layouts.module.css @@ -36,7 +36,7 @@ section { &:nth-of-type(1) { @apply flex - max-w-[500px] + max-w-[400px] flex-[1_0] flex-col gap-8; @@ -56,7 +56,7 @@ @apply max-xs:text-xs text-center text-sm - text-neutral-800 + text-neutral-600 dark:text-neutral-400; sup { diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index 95de44c70f2a1..f7ca993f0ce3a 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -14,29 +14,19 @@ layout: home </div> - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Download Node.js (LTS)</DownloadButton> - <small> - Downloads Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> with long-term support. - Node.js can also be installed via <Link href="/download">version managers</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Want new features sooner? - Get <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> instead. - </small> - )} - </WithNodeRelease> + <div className="flex gap-4"> + + <div className="flex flex-col gap-2"> + <Button kind="special" className="!hidden dark:!block" href="/download">Install Node.js</Button> + + <Button kind="primary" className="!block dark:!hidden" href="/download">Install Node.js</Button> + + <Button kind="secondary" className="!block" href="https://www.herodevs.com/support/node-nes"> + <span>Get security support</span> + <br /> + <small className="!text-xs">for Node.js 18 and below</small> + </Button> + </div> </div> </section> diff --git a/apps/site/pages/es/index.mdx b/apps/site/pages/es/index.mdx deleted file mode 100644 index 2d590f93c6251..0000000000000 --- a/apps/site/pages/es/index.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Ejecuta JavaScript en cualquier parte -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">Ejecuta JavaScript en cualquier parte</h1> - - 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. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Descargar Node.js (LTS)</DownloadButton> - <small> - Descarga Node.js <b>{release.versionWithPrefix}</b> - <sup title="Descarga un instalador de Node.js para tu plataforma">1</sup> con soporte a largo plazo. - Node.js también puede ser instalado a través de <Link href="/download">gestores de versiones</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - ¿Quieres nuevas funciones más pronto? - Consigue<b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> en vez. - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - -Aprenda más sobre lo que Node.js puede ofrecer con nuestros [Materiales de aprendizaje](/learn). - -</section> diff --git a/apps/site/pages/fa/index.mdx b/apps/site/pages/fa/index.mdx deleted file mode 100644 index d1fcd30f94bea..0000000000000 --- a/apps/site/pages/fa/index.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: اجرا جاوااسکریپت در همه جا -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">اجرا جاوااسکریپت در همه جا</h1> - - Node.js یک محیط اجرای جاوااسکریپت متن‌باز، رایگان و چندسکویی است - که به توسعه دهندگان اجازه می‌دهد تا سرورها، وب اپلیکیشن‌ها - ابزارهای خط فرمان و اسکریپت‌ها را ایجاد کنند. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>دانلود Node.js (نسخه پایدار)</DownloadButton> - <small> - دانلود Node.js <b>{release.versionWithPrefix}</b> - <sup title="دانلود نصب‌کننده Node.js برای پلتفرم فعلی شما">1</sup> با پشتیبانی بلندمدت. - Node.js همچنین از طریق <Link href="/download/package-manager">package managers</Link> نیز قابل نصب است. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - می‌خواهید زودتر از ویژگی‌های جدید برخوردار شوید؟ - به‌جای آن <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="دانلود نصب‌کننده Node.js برای پلتفرم فعلی شما">1</sup> را دریافت کنید. - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - با [مطالب آموزشی](/learn) ما، بیشتر در مورد اینکه Node.js چه امکاناتی را ارائه می دهد بیاموزید. - </section> diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx deleted file mode 100644 index 2b72207fc2c0f..0000000000000 --- a/apps/site/pages/fr/index.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Exécuter du JavaScript partout -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">Exécuter du JavaScript partout</h1> - - 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. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Télécharger Node.js (LTS)</DownloadButton> - <small> - Téléchargements Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> avec un support à long terme. - Node.js peut également être installé via <Link href="/download">le gestionnaire de versions</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Vous voulez de nouvelles fonctionnalités plus tôt ? - Obtenez <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> à la place. - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - -Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn). - -</section> diff --git a/apps/site/pages/id/index.mdx b/apps/site/pages/id/index.mdx deleted file mode 100644 index 504b17b19c1a7..0000000000000 --- a/apps/site/pages/id/index.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Jalankan JavaScript Di Mana Saja -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">Jalankan JavaScript Di Mana Saja</h1> - - 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. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Unduh Node.js (LTS)</DownloadButton> - <small> - Unduhan Node.js <b>{release.versionWithPrefix}</b> - <sup title="Mengunduh penginstal Node.js untuk platform Anda saat ini">1</sup> dengan dukungan jangka panjang (LTS). - Node.js juga dapat diinstal melalui <Link href="/download">manajer paket</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Ingin fitur baru lebih cepat? - Dapatkan <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> sebagai gantinya. - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - -Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami. - -</section> diff --git a/apps/site/pages/ja/index.mdx b/apps/site/pages/ja/index.mdx deleted file mode 100644 index ad52b8da6fe26..0000000000000 --- a/apps/site/pages/ja/index.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: どこでもJavaScriptを使おう -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">どこでもJavaScriptを使おう</h1> - - Node.js®はクロスプラットフォームに対応したフリーでオープンソースのJavaScript実行環境です。開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトなどを開発する環境を提供します。 - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js(LTS)をダウンロードする</DownloadButton> - <small> - 長期サポート版Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>をダウンロードする。 - <Link href="/download">バージョンマネージャー</Link>を利用したインストール方法もあります。 - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 最新の機能をすぐに試したい場合は - <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>をインストールできます。 - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - -私たちの[学習教材](/learn)でNode.jsでできることをさらに学んでみましょう。 - -</section> diff --git a/apps/site/pages/ko/index.mdx b/apps/site/pages/ko/index.mdx deleted file mode 100644 index a4119867639ba..0000000000000 --- a/apps/site/pages/ko/index.mdx +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: 어디서든 JavaScript를 실행하세요 -layout: home ---- - -<section> -<WithBadgeGroup section="index" /> - -<div> - <h1 className="special">어디서든 JavaScript를 실행하세요</h1> - -Node.js®는 무료, 오픈소스, 다중 플랫폼 JavaScript 런타임 환경으로 개발자 여러분이 서버, 웹 애플리케이션, 명령어 작성 도구와 스크립트를 만들도록 해줍니다. - -</div> - -<div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js 다운로드 (LTS)</DownloadButton> - <small> - Node.js 다운로드 <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> LTS. - Node.js는 <Link href="/download/package-manager">패키지 관리자</Link>를 통해서도 다운로드 할 수 있습니다. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 새로운 기능을 먼저 경험하고 싶다면 - <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 를 다운 받으세요. - </small> - )} - </WithNodeRelease> -</div> -</section> - -<section> -<div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; -import { pipeline } from 'node:stream/promises'; -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` -``` - -</div> - -Node.js가 제공하는 [학습 자료](/learn)를 통해 더 많은 정보를 알아보세요. - -</section> diff --git a/apps/site/pages/pt/index.mdx b/apps/site/pages/pt/index.mdx deleted file mode 100644 index aafd3aa3adbcf..0000000000000 --- a/apps/site/pages/pt/index.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Executar a JavaScript em Toda Parte -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">Executar a JavaScript em Toda Parte</h1> - - Node.js® é um ambiente de execução de JavaScript multiplataforma, - de código-aberto e gratuita, que permite aos programadores criar servidores, aplicações - da Web, ferramentas de linha de comando e programas de automação de tarefas. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Descarregar a Node.js (LTS)</DownloadButton> - <small> - Descarrega a Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> com suporte de longo prazo. - A Node.js também pode ser instalada por meio de <Link href="/download">gestores de versão</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Queremos novas funcionalidades mais cedo? - Podemos então obter a <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Descarrega um instalador da Node.js para a nossa plataforma atual">1</sup>. - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - -É possível saber que mais a Node.js consegue oferecer com os nossos [materiais de estudo](/learn). - -</section> diff --git a/apps/site/pages/tr/index.mdx b/apps/site/pages/tr/index.mdx deleted file mode 100644 index 7d4f9f71acba1..0000000000000 --- a/apps/site/pages/tr/index.mdx +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: JavaScript'i Her Yerde Çalıştırın -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">Her Yerde JavaScript Çalıştırın</h1> - - 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. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Node.js'i İndir (LTS)</DownloadButton> - <small> - Node.js'i indir <b>{release.versionWithPrefix}</b> - <sup title="Mevcut platformunuz için bir Node.js yükleyicisi indirir">1</sup> uzun vadeli destek ile indirin. - Node.js ayrıca <Link href="/download/package-manager">paket yöneticileri</Link> aracılığıyla da kurulabilir. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Yeni özellikleri daha erken mi istiyorsunuz?{" "} - <b> - Node.js{" "} - <DownloadLink release={release}> - {release.versionWithPrefix} - </DownloadLink> - </b>{" "} - <sup title="Geçerli platformunuz için bir Node.js yükleyicisi indirir">1</sup>{" "} - alabilirsiniz. - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - Node.js'in sunabileceklerini daha yakından keşfetmek için [Öğrenme materyallerimize](/learn) göz atın. -</section> diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx deleted file mode 100644 index 3dc5d595ee0c7..0000000000000 --- a/apps/site/pages/uk/index.mdx +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Запускайте JavaScript будь‑де -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">Запускайте JavaScript будь‑де</h1> - - Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, - яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти. - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>Завантажити Node.js (LTS)</DownloadButton> - <small> - Завантажує Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> із довгостроковою підтримкою. - Node.js також можна встановити через <Link href="/download">менеджери версій</Link>. - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - Хочете отримати нові функції швидше? - Завантажте <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup>. - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - -Дізнайтеся більше про можливості Node.js із [нашими навчальними матеріалами](/learn). - -</section> diff --git a/apps/site/pages/zh-cn/index.mdx b/apps/site/pages/zh-cn/index.mdx deleted file mode 100644 index 1a8db0b4cefa7..0000000000000 --- a/apps/site/pages/zh-cn/index.mdx +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: 在任何地方运行 JavaScript -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">在任何地方运行 JavaScript</h1> - - Node.js® 是一个免费、开源、跨平台的 JavaScript 运行时环境, 它让开发人员能够创建服务器 - Web 应用、命令行工具和脚本。 - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>下载 Node.js (LTS)</DownloadButton> - <small> - 下载 Node.js <b>{release.versionWithPrefix}</b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 长期支持版本。 - Node.js 也可以通过 <Link href="/download/package-manager">软件包管理器</Link> 进行安装。 - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 想要更快获得新功能吗? - 获取 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 版本吧。 - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - 通过我们的[学习资料](/learn)了解 Node.js 。 -</section> diff --git a/apps/site/pages/zh-tw/index.mdx b/apps/site/pages/zh-tw/index.mdx deleted file mode 100644 index ab67d2e2d9670..0000000000000 --- a/apps/site/pages/zh-tw/index.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: 隨時隨地執行 JavaScript -layout: home ---- - -<section> - <WithBadgeGroup section="index" /> - - <div> - <h1 className="special">隨時隨地執行 JavaScript</h1> - - Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發者建立伺服器、網頁應用程式、命令列工具與指令稿。 - - </div> - - <div> - <WithNodeRelease status={['LTS']}> - {({ release }) => ( - <> - <DownloadButton release={release}>下載 Node.js (LTS)</DownloadButton> - <small> - 下載享有長期支援的 Node.js <b>{release.versionWithPrefix}</b> - <sup title="下載適用您的平台的 Node.js 安裝程式">1</sup>。 - 您也可以透過<Link href="/download">版本管理程式</Link>來安裝 Node.js。 - </small> - </> - )} - </WithNodeRelease> - - <WithNodeRelease status={['Current']}> - {({ release }) => ( - <small> - 想要更快體驗新功能嗎? - 那就下載 <b>Node.js <DownloadLink release={release}>{release.versionWithPrefix}</DownloadLink></b> - <sup title="Downloads a Node.js installer for your current platform">1</sup> 吧。 - </small> - )} - </WithNodeRelease> - - </div> -</section> - -<section> - <div> - ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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` - ``` - - </div> - -我們提供大量[學習資源](/learn),探索 Node.js 的無限潛能。 - -</section> diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 446608b40ef35..6afffadc8a004 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -168,7 +168,8 @@ "overview": "Overview", "minorVersions": "Minor versions", "releaseAnnouncement": "Release Announcement", - "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version." + "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version. <link>Understand EOL support.</link>", + "ltsVersionFeaturesNotice": "Want new features sooner? Get the <link>latest Node.js version</link> instead and try the latest improvements on Node!" }, "minorReleasesTable": { "version": "Version", @@ -319,6 +320,7 @@ }, "codeBox": { "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version. <link>Understand EOL support.</link>", + "ltsVersionFeaturesNotice": "Want new features sooner? Get the <link>latest Node.js version</link> instead and try the latest improvements on Node!", "communityPlatformInfo": "Installation methods that involve community software are supported by the teams maintaining that software.", "externalSupportInfo": "If you encounter any issues please visit <link>{platform}'s website</link>", "noScriptDetected": "This page requires JavaScript. You can download Node.js without JavaScript by visiting the <link>releases page</link> directly.", diff --git a/packages/ui-components/Common/BaseButton/index.module.css b/packages/ui-components/Common/BaseButton/index.module.css index d68c893c182c1..fda005bcf9daa 100644 --- a/packages/ui-components/Common/BaseButton/index.module.css +++ b/packages/ui-components/Common/BaseButton/index.module.css @@ -73,11 +73,14 @@ &.secondary { @apply rounded-lg + border + border-neutral-200 text-neutral-800 + dark:border-neutral-900 dark:text-neutral-200; &:hover:not([aria-disabled='true']) { - @apply bg-neutral-100 + @apply bg-neutral-200 text-neutral-800 dark:bg-neutral-900 dark:text-neutral-200; From 2fc64727766de1927d0a3580b0566da38fa794b8 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Sat, 21 Jun 2025 21:30:49 -0400 Subject: [PATCH 0568/1385] fix(esp): add utm params, don't use prohibited strings (#7881) --- apps/site/pages/en/index.mdx | 2 +- packages/i18n/locales/en.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index f7ca993f0ce3a..458f1a3e951d8 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -21,7 +21,7 @@ layout: home <Button kind="primary" className="!block dark:!hidden" href="/download">Install Node.js</Button> - <Button kind="secondary" className="!block" href="https://www.herodevs.com/support/node-nes"> + <Button kind="secondary" className="!block" href="https://www.herodevs.com/support/node-nes?utm_source=NodeJS+&utm_medium=Link&utm_campaign=Homepage_button"> <span>Get security support</span> <br /> <small className="!text-xs">for Node.js 18 and below</small> diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index 6afffadc8a004..a1e9f6a3699d9 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -169,7 +169,7 @@ "minorVersions": "Minor versions", "releaseAnnouncement": "Release Announcement", "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version. <link>Understand EOL support.</link>", - "ltsVersionFeaturesNotice": "Want new features sooner? Get the <link>latest Node.js version</link> instead and try the latest improvements on Node!" + "ltsVersionFeaturesNotice": "Want new features sooner? Get the <link>latest Node.js version</link> instead and try the latest improvements!" }, "minorReleasesTable": { "version": "Version", @@ -320,7 +320,7 @@ }, "codeBox": { "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version. <link>Understand EOL support.</link>", - "ltsVersionFeaturesNotice": "Want new features sooner? Get the <link>latest Node.js version</link> instead and try the latest improvements on Node!", + "ltsVersionFeaturesNotice": "Want new features sooner? Get the <link>latest Node.js version</link> instead and try the latest improvements!", "communityPlatformInfo": "Installation methods that involve community software are supported by the teams maintaining that software.", "externalSupportInfo": "If you encounter any issues please visit <link>{platform}'s website</link>", "noScriptDetected": "This page requires JavaScript. You can download Node.js without JavaScript by visiting the <link>releases page</link> directly.", From 65026c03f9f6136000d1f82dde85e31a2a732a49 Mon Sep 17 00:00:00 2001 From: Matt Cowley <me@mattcowley.co.uk> Date: Sun, 22 Jun 2025 19:18:08 +0100 Subject: [PATCH 0569/1385] feat(blog): external canonical for syndicated posts (#7879) * feat(blog): external canonical for syndicated posts * docs(frontmatter): external canonical for syndicated posts * docs(frontmatter): clarify syndicated context Signed-off-by: Matt Cowley <me@mattcowley.co.uk> --------- Signed-off-by: Matt Cowley <me@mattcowley.co.uk> --- apps/site/next.dynamic.mjs | 3 ++- apps/site/pages/en/blog/announcements/mikeal.md | 1 + docs/adding-pages.md | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/site/next.dynamic.mjs b/apps/site/next.dynamic.mjs index a7e3467a4f123..484789acaae1f 100644 --- a/apps/site/next.dynamic.mjs +++ b/apps/site/next.dynamic.mjs @@ -230,7 +230,8 @@ const getDynamicRouter = async () => { ]; // Default canonical URL for the page - pageMetadata.alternates.canonical = getUrlForPathname(locale, path); + pageMetadata.alternates.canonical = + data.canonical ?? getUrlForPathname(locale, path); // Default alternate URL for the page in the default locale pageMetadata.alternates.languages['x-default'] = getUrlForPathname( diff --git a/apps/site/pages/en/blog/announcements/mikeal.md b/apps/site/pages/en/blog/announcements/mikeal.md index 5db87eca46b5d..14eb2de2ca94b 100644 --- a/apps/site/pages/en/blog/announcements/mikeal.md +++ b/apps/site/pages/en/blog/announcements/mikeal.md @@ -4,6 +4,7 @@ category: announcements title: 'In Memory of Mikeal Rogers: A Builder of Communities' layout: blog-post author: Robin Bender Ginn +canonical: https://openjsf.org/blog/in-memory-of-mikeal-rogers --- ![][mikeal-rogers-image] diff --git a/docs/adding-pages.md b/docs/adding-pages.md index d44fbf8e691b0..4cabf36ceaa25 100644 --- a/docs/adding-pages.md +++ b/docs/adding-pages.md @@ -63,6 +63,10 @@ The frontmatter (YAML block at the top) configures page metadata: - `description`: Optional meta description for SEO - `authors`: For learn pages, list of GitHub usernames +In cases where content has been syndicated from another source, you should also include: + +- `canonical`: The original URL of the content + ### 3. Choose the Appropriate Layout Available layouts are defined in `apps/site/layouts/`, and mapped in `components/withLayout`. From 65f87edbedb23e6a9cb7f05348d74eb874d4e9d9 Mon Sep 17 00:00:00 2001 From: Marco Ippolito <marcoippolito54@gmail.com> Date: Mon, 23 Jun 2025 11:08:20 +0200 Subject: [PATCH 0570/1385] Blog: v20.19.3 release post (#7886) Refs: https://github.com/nodejs/node/pull/58588 --- apps/site/pages/en/blog/release/v20.19.3.md | 165 ++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v20.19.3.md diff --git a/apps/site/pages/en/blog/release/v20.19.3.md b/apps/site/pages/en/blog/release/v20.19.3.md new file mode 100644 index 0000000000000..64ad9e438362a --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.19.3.md @@ -0,0 +1,165 @@ +--- +date: '2025-06-23T08:36:48.302Z' +category: release +title: Node v20.19.3 (LTS) +layout: blog-post +author: Marco Ippolito +--- + +## 2025-06-23, Version 20.19.3 'Iron' (LTS), @marco-ippolito + +### Notable Changes + +- \[[`c535a3c483`](https://github.com/nodejs/node/commit/c535a3c483)] - **crypto**: graduate WebCryptoAPI Ed25519 and X25519 algorithms as stable (Filip Skokan) [#56142](https://github.com/nodejs/node/pull/56142) +- \[[`af1dc63815`](https://github.com/nodejs/node/commit/af1dc63815)] - **crypto**: update root certificates to NSS 3.108 (Node.js GitHub Bot) [#57381](https://github.com/nodejs/node/pull/57381) +- \[[`01d63a4ddf`](https://github.com/nodejs/node/commit/01d63a4ddf)] - **deps**: update timezone to 2025b (Node.js GitHub Bot) [#57857](https://github.com/nodejs/node/pull/57857) +- \[[`b6daa344eb`](https://github.com/nodejs/node/commit/b6daa344eb)] - **doc**: add dario-piotrowicz to collaborators (Dario Piotrowicz) [#58102](https://github.com/nodejs/node/pull/58102) + +### Commits + +- \[[`fc1fa7a357`](https://github.com/nodejs/node/commit/fc1fa7a357)] - **build**: use FILE_OFFSET_BITS=64 esp. on 32-bit arch (RafaelGSS) [#58090](https://github.com/nodejs/node/pull/58090) +- \[[`79e0812181`](https://github.com/nodejs/node/commit/79e0812181)] - **build**: use glob for dependencies of out/Makefile (Richard Lau) [#55789](https://github.com/nodejs/node/pull/55789) +- \[[`f56e62851a`](https://github.com/nodejs/node/commit/f56e62851a)] - **crypto**: allow length=0 for HKDF and PBKDF2 in SubtleCrypto.deriveBits (Filip Skokan) [#55866](https://github.com/nodejs/node/pull/55866) +- \[[`c535a3c483`](https://github.com/nodejs/node/commit/c535a3c483)] - **crypto**: graduate WebCryptoAPI Ed25519 and X25519 algorithms as stable (Filip Skokan) [#56142](https://github.com/nodejs/node/pull/56142) +- \[[`39925de8b1`](https://github.com/nodejs/node/commit/39925de8b1)] - **crypto**: allow non-multiple of 8 in SubtleCrypto.deriveBits (Filip Skokan) [#55296](https://github.com/nodejs/node/pull/55296) +- \[[`af1dc63815`](https://github.com/nodejs/node/commit/af1dc63815)] - **crypto**: update root certificates to NSS 3.108 (Node.js GitHub Bot) [#57381](https://github.com/nodejs/node/pull/57381) +- \[[`d09008add3`](https://github.com/nodejs/node/commit/d09008add3)] - **deps**: V8: cherry-pick 1a3ecc2483b2 (Michaël Zasso) [#58342](https://github.com/nodejs/node/pull/58342) +- \[[`fd56652425`](https://github.com/nodejs/node/commit/fd56652425)] - **deps**: V8: cherry-pick 182d9c05e78b (Andrey Kosyakov) [#58342](https://github.com/nodejs/node/pull/58342) +- \[[`447481e829`](https://github.com/nodejs/node/commit/447481e829)] - **deps**: V8: cherry-pick third_party/zlib\@646b7f569718 (Hans Wennborg) [#58342](https://github.com/nodejs/node/pull/58342) +- \[[`eb447168df`](https://github.com/nodejs/node/commit/eb447168df)] - **deps**: update simdutf to 6.4.2 (Node.js GitHub Bot) [#57855](https://github.com/nodejs/node/pull/57855) +- \[[`01d63a4ddf`](https://github.com/nodejs/node/commit/01d63a4ddf)] - **deps**: update timezone to 2025b (Node.js GitHub Bot) [#57857](https://github.com/nodejs/node/pull/57857) +- \[[`10fb49f2a9`](https://github.com/nodejs/node/commit/10fb49f2a9)] - **deps**: update icu to 77.1 (Node.js GitHub Bot) [#57455](https://github.com/nodejs/node/pull/57455) +- \[[`f1dc7d0205`](https://github.com/nodejs/node/commit/f1dc7d0205)] - **deps**: update corepack to 0.32.0 (Node.js GitHub Bot) [#57265](https://github.com/nodejs/node/pull/57265) +- \[[`7a2e64bb8a`](https://github.com/nodejs/node/commit/7a2e64bb8a)] - **deps**: update simdutf to 6.4.0 (Node.js GitHub Bot) [#56764](https://github.com/nodejs/node/pull/56764) +- \[[`e80669be0d`](https://github.com/nodejs/node/commit/e80669be0d)] - **doc**: mention reports should align with Node.js CoC (Rafael Gonzaga) [#57607](https://github.com/nodejs/node/pull/57607) +- \[[`7b2c0bc92e`](https://github.com/nodejs/node/commit/7b2c0bc92e)] - **doc**: add gurgunday as triager (Gürgün Dayıoğlu) [#57594](https://github.com/nodejs/node/pull/57594) +- \[[`791e4879de`](https://github.com/nodejs/node/commit/791e4879de)] - **doc**: document REPL custom eval arguments (Dario Piotrowicz) [#57690](https://github.com/nodejs/node/pull/57690) +- \[[`2917f09876`](https://github.com/nodejs/node/commit/2917f09876)] - **doc**: improved fetch docs (Alessandro Miliucci) [#57296](https://github.com/nodejs/node/pull/57296) +- \[[`d940b15843`](https://github.com/nodejs/node/commit/d940b15843)] - **doc**: clarify `unhandledRejection` events behaviors in process doc (Dario Piotrowicz) [#57654](https://github.com/nodejs/node/pull/57654) +- \[[`71c664fab7`](https://github.com/nodejs/node/commit/71c664fab7)] - **doc**: update position type to integer | null in fs (Yukihiro Hasegawa) [#57745](https://github.com/nodejs/node/pull/57745) +- \[[`0c0fbfa9c6`](https://github.com/nodejs/node/commit/0c0fbfa9c6)] - **doc**: add missing v0.x changelog entries (Antoine du Hamel) [#57779](https://github.com/nodejs/node/pull/57779) +- \[[`e99462c9fc`](https://github.com/nodejs/node/commit/e99462c9fc)] - **doc**: correct deprecation type of `assert.CallTracker` (René) [#57997](https://github.com/nodejs/node/pull/57997) +- \[[`c7e92696ef`](https://github.com/nodejs/node/commit/c7e92696ef)] - **doc**: add returns for https.get (Eng Zer Jun) [#58025](https://github.com/nodejs/node/pull/58025) +- \[[`ccc42b69ce`](https://github.com/nodejs/node/commit/ccc42b69ce)] - **doc**: fix env variable name in `util.styleText` (Antoine du Hamel) [#58072](https://github.com/nodejs/node/pull/58072) +- \[[`b6daa344eb`](https://github.com/nodejs/node/commit/b6daa344eb)] - **doc**: add dario-piotrowicz to collaborators (Dario Piotrowicz) [#58102](https://github.com/nodejs/node/pull/58102) +- \[[`e5d6a3df16`](https://github.com/nodejs/node/commit/e5d6a3df16)] - **doc**: fix `AsyncLocalStorage` example response changes after node v18 (Naor Tedgi (Abu Emma)) [#57969](https://github.com/nodejs/node/pull/57969) +- \[[`f006411998`](https://github.com/nodejs/node/commit/f006411998)] - **doc**: fix typo of file `zlib.md` (yusheng chen) [#58093](https://github.com/nodejs/node/pull/58093) +- \[[`5193735df4`](https://github.com/nodejs/node/commit/5193735df4)] - **doc**: add missing options.signal to readlinePromises.createInterface() (Jimmy Leung) [#55456](https://github.com/nodejs/node/pull/55456) +- \[[`fd44af730f`](https://github.com/nodejs/node/commit/fd44af730f)] - **doc**: fix misaligned options in vm.compileFunction() (Jimmy Leung) [#58145](https://github.com/nodejs/node/pull/58145) +- \[[`0fdcc0ddcd`](https://github.com/nodejs/node/commit/0fdcc0ddcd)] - **doc**: add ambassaor message (Brian Muenzenmeyer) [#57600](https://github.com/nodejs/node/pull/57600) +- \[[`5ca9616bd3`](https://github.com/nodejs/node/commit/5ca9616bd3)] - **doc**: increase z-index of header element (Dario Piotrowicz) [#57851](https://github.com/nodejs/node/pull/57851) +- \[[`81342d10f0`](https://github.com/nodejs/node/commit/81342d10f0)] - **doc**: fix deprecation type for `DEP0148` (Livia Medeiros) [#57785](https://github.com/nodejs/node/pull/57785) +- \[[`776becfe01`](https://github.com/nodejs/node/commit/776becfe01)] - **doc**: remove mention of `--require` not supporting ES modules (Huáng Jùnliàng) [#57620](https://github.com/nodejs/node/pull/57620) +- \[[`3140a8f133`](https://github.com/nodejs/node/commit/3140a8f133)] - **doc**: add missing `deprecated` badges in `fs.md` (Yukihiro Hasegawa) [#57384](https://github.com/nodejs/node/pull/57384) +- \[[`441ce24ae3`](https://github.com/nodejs/node/commit/441ce24ae3)] - **doc**: deprecate passing invalid types in `fs.existsSync` (Carlos Espa) [#55892](https://github.com/nodejs/node/pull/55892) +- \[[`0556f54544`](https://github.com/nodejs/node/commit/0556f54544)] - **http**: correctly translate HTTP method (Paolo Insogna) [#52701](https://github.com/nodejs/node/pull/52701) +- \[[`c2c6d2b035`](https://github.com/nodejs/node/commit/c2c6d2b035)] - **http**: be more generational GC friendly (ywave620) [#56767](https://github.com/nodejs/node/pull/56767) +- \[[`cdf3fa241c`](https://github.com/nodejs/node/commit/cdf3fa241c)] - **http2**: skip writeHead if stream is closed (Shima Ryuhei) [#57686](https://github.com/nodejs/node/pull/57686) +- \[[`bbd5aec785`](https://github.com/nodejs/node/commit/bbd5aec785)] - **http2**: fix graceful session close (Kushagra Pandey) [#57808](https://github.com/nodejs/node/pull/57808) +- \[[`b427ae4f34`](https://github.com/nodejs/node/commit/b427ae4f34)] - **meta**: remove `build-windows.yml` (Aviv Keller) [#54662](https://github.com/nodejs/node/pull/54662) +- \[[`49e624f554`](https://github.com/nodejs/node/commit/49e624f554)] - **os**: fix netmask format check condition in getCIDR function (Wiyeong Seo) [#57324](https://github.com/nodejs/node/pull/57324) +- \[[`d582954434`](https://github.com/nodejs/node/commit/d582954434)] - **src**: remove unused variable in crypto_x509.cc (Michaël Zasso) [#57754](https://github.com/nodejs/node/pull/57754) +- \[[`234a505e96`](https://github.com/nodejs/node/commit/234a505e96)] - **src**: allow embedder customization of OOMErrorHandler (Shelley Vohr) [#57325](https://github.com/nodejs/node/pull/57325) +- \[[`c0252cd380`](https://github.com/nodejs/node/commit/c0252cd380)] - **src**: fix -Wunreachable-code-return in node_sea (Shelley Vohr) [#57664](https://github.com/nodejs/node/pull/57664) +- \[[`fcd1622fc1`](https://github.com/nodejs/node/commit/fcd1622fc1)] - **src**: fix kill signal 0 on Windows (Stefan Stojanovic) [#57695](https://github.com/nodejs/node/pull/57695) +- \[[`850192b06b`](https://github.com/nodejs/node/commit/850192b06b)] - **test**: skip broken sea on rhel8 (Marco Ippolito) [#58761](https://github.com/nodejs/node/pull/58761) +- \[[`3cf7cfb695`](https://github.com/nodejs/node/commit/3cf7cfb695)] - **test**: update WPT for WebCryptoAPI to edd42c005c (Node.js GitHub Bot) [#57365](https://github.com/nodejs/node/pull/57365) +- \[[`f57765bdcf`](https://github.com/nodejs/node/commit/f57765bdcf)] - **test**: mark test-without-async-context-frame flaky on windows (James M Snell) [#56753](https://github.com/nodejs/node/pull/56753) +- \[[`275ea8e7ef`](https://github.com/nodejs/node/commit/275ea8e7ef)] - **test**: force GC in test-file-write-stream4 (Luigi Pinca) [#57930](https://github.com/nodejs/node/pull/57930) +- \[[`da6a13c338`](https://github.com/nodejs/node/commit/da6a13c338)] - **test**: deflake test-http2-options-max-headers-block-length (Luigi Pinca) [#57959](https://github.com/nodejs/node/pull/57959) +- \[[`56fce6691e`](https://github.com/nodejs/node/commit/56fce6691e)] - **test**: prevent extraneous HOSTNAME substitution in test-runner-output (René) [#58076](https://github.com/nodejs/node/pull/58076) +- \[[`c9c0be5596`](https://github.com/nodejs/node/commit/c9c0be5596)] - **test**: update expected error message for macOS (Antoine du Hamel) [#57742](https://github.com/nodejs/node/pull/57742) +- \[[`3cbf5f93d2`](https://github.com/nodejs/node/commit/3cbf5f93d2)] - **test**: fix missing edge case in test-blob-slice-with-large-size (Joyee Cheung) [#58414](https://github.com/nodejs/node/pull/58414) +- \[[`bffd4ec379`](https://github.com/nodejs/node/commit/bffd4ec379)] - **test**: skip in test-buffer-tostring-rangeerror on allocation failure (Joyee Cheung) [#58415](https://github.com/nodejs/node/pull/58415) +- \[[`8237346fb7`](https://github.com/nodejs/node/commit/8237346fb7)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#54593](https://github.com/nodejs/node/pull/54593) +- \[[`b90c4ab937`](https://github.com/nodejs/node/commit/b90c4ab937)] - **tools**: remove unused `osx-pkg-postinstall.sh` (Antoine du Hamel) [#57667](https://github.com/nodejs/node/pull/57667) +- \[[`414013dcfb`](https://github.com/nodejs/node/commit/414013dcfb)] - **tools**: edit create-release-proposal workflow to handle pr body length (Elves Vieira) [#57841](https://github.com/nodejs/node/pull/57841) +- \[[`7c449ed6b3`](https://github.com/nodejs/node/commit/7c449ed6b3)] - **tools**: fix tarball testing directory (Marco Ippolito) [#57994](https://github.com/nodejs/node/pull/57994) +- \[[`d164dc2d38`](https://github.com/nodejs/node/commit/d164dc2d38)] - **tools**: update sccache version to v0.10.0 (Marco Ippolito) [#57994](https://github.com/nodejs/node/pull/57994) +- \[[`debd3c2cc0`](https://github.com/nodejs/node/commit/debd3c2cc0)] - **tools**: disable failing test envs in `test-linux` CI (Antoine du Hamel) [#58351](https://github.com/nodejs/node/pull/58351) +- \[[`152112505a`](https://github.com/nodejs/node/commit/152112505a)] - **typings**: fix `ImportModuleDynamicallyCallback` return type (Chengzhong Wu) [#57160](https://github.com/nodejs/node/pull/57160) +- \[[`363bf744ab`](https://github.com/nodejs/node/commit/363bf744ab)] - **worker**: flush stdout and stderr on exit (Matteo Collina) [#56428](https://github.com/nodejs/node/pull/56428) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.19.3/node-v20.19.3-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.19.3/node-v20.19.3-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.19.3/node-v20.19.3-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.19.3/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.19.3/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.19.3/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.19.3/node-v20.19.3.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.19.3/node-v20.19.3-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.19.3/node-v20.19.3-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.19.3/node-v20.19.3-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.19.3/node-v20.19.3-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.19.3/node-v20.19.3-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.19.3/node-v20.19.3-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.19.3/node-v20.19.3-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.19.3/node-v20.19.3-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.19.3/node-v20.19.3.tar.gz \ +Other release files: https://nodejs.org/dist/v20.19.3/ \ +Documentation: https://nodejs.org/docs/v20.19.3/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +3166216d8bb83dca6850643d585189e657b6038cf5e8331181fff7300a6d9f98 node-v20.19.3-aix-ppc64.tar.gz +44025e0da20a2367bce810bf09a7bc5f3d9b61d47aece23aa97dcddfc941c2df node-v20.19.3-arm64.msi +4efd92305e36e6e9f8cfe8d7781b188eec86f306ca712535ecf2c10dc8c1ae13 node-v20.19.3-darwin-arm64.tar.gz +d0103b7025c5f738df8890cd79213d3a4cfb59536f5063ee615f73735b4232e8 node-v20.19.3-darwin-arm64.tar.xz +6f9dc8cbce8f8c74e4df296fb58c20fc6e88f47880a299fc76bbb01a90219870 node-v20.19.3-darwin-x64.tar.gz +b1ffdc297cd8a0b350f296d6c87191d4ae2beedcf78074eb35622227cd9c4df7 node-v20.19.3-darwin-x64.tar.xz +d1c3f74702e13cf936123e037cb35ee3af9350d2b4e3050a5ef0dc694640822c node-v20.19.3-headers.tar.gz +33c890401edb172ced8c95c0705ce7c82b4473f5878cb3cff5e8d2def99cc812 node-v20.19.3-headers.tar.xz +8e6939f63b736470bf2cbda596ab62393f26d9af9d7046d61270899880d4f149 node-v20.19.3-linux-arm64.tar.gz +72a3036618fb47d8aaa3050477d9577747a9e550c39be46b53202a3b3e797e83 node-v20.19.3-linux-arm64.tar.xz +c9cb3e73efacb8e3cce47f36b0fd0b823a84b973047f1ab58a5fce99bc6b7536 node-v20.19.3-linux-armv7l.tar.gz +512402d6c336a2c548cd6056969abf065b8799af9ecbed9b74f5516835bcad4c node-v20.19.3-linux-armv7l.tar.xz +b38c429376c4aeee09e0e3ba3294db9e2683e896747b0050aa84ed3401706389 node-v20.19.3-linux-ppc64le.tar.gz +3f72821fce859e9ed7c28d1d9486a7be42615b6e72012dc38851cca0c76ffd5a node-v20.19.3-linux-ppc64le.tar.xz +d2ffe8fbc8b3f6eef0cb6ea3719c562d0c4535870e2a2d2f0685e7d2ae8b1c69 node-v20.19.3-linux-s390x.tar.gz +7b801977c8968106a8efdb4043be9663c5ec52c3cf0639ec52559fb8dfc79e51 node-v20.19.3-linux-s390x.tar.xz +76272878069683c3a36b933d2f4842436a26b527daa930ae9346b477011ee2f3 node-v20.19.3-linux-x64.tar.gz +c210e1a547efad55e93af1e04fb80d2f7131b13872f2de4e9ebdfecb8e06caad node-v20.19.3-linux-x64.tar.xz +f0a8c425285daf7ea5e7fb35cf54a633b2fba66706f195e151d345e0bdc414a4 node-v20.19.3.pkg +4c9f238ad7c57af35efa6ba6259521aebbe20c2f91f6d846860a861c97fc6b99 node-v20.19.3.tar.gz +99be7b9d268d48b93be568a23240398ceacb0782dc7055b9972305c000b0e292 node-v20.19.3.tar.xz +5c1c371920fe4b9c4ecdb28ec89e7ecfdca4af15cd8eb006b33f0f8eb78a00e7 node-v20.19.3-win-arm64.7z +23fdac73af3243e5ee502888fdc3e6bfc17911ef810816b0feb403defb471430 node-v20.19.3-win-arm64.zip +7d12809db39be5176754426734780d4f847907d55a262a3e670b14d89fadc362 node-v20.19.3-win-x64.7z +ee50fe3af2e4b43aef655c5126e0e4d995a391a787a9327596563a722ada2aa9 node-v20.19.3-win-x64.zip +2aa04389edcb45acd3a1609ad73e6b250f67dcf5e60283415e856ba198a84c5c node-v20.19.3-win-x86.7z +0add136861250792abb445f8d4705b2b5220a339a8cd2e72944e393d453f43fc node-v20.19.3-win-x86.zip +566113399176c4982841793fc7788335be42783bac74377be77d2580518ce039 node-v20.19.3-x64.msi +6791da9a6a037be56324f43d85ba4a9a11a9ae4b9d70fb95cb4dc1b41ead45ab node-v20.19.3-x86.msi +2e1d0c66f182fea1cfce869b9b5410ac86c797335e08da0fafca835bfc5709bd win-arm64/node.exe +8de6fce6e4534a4a9ad85a6926a9ef00df949121e14fafd70182ae7ce36e957c win-arm64/node.lib +26f76ddfea31f3b74aef6df8fce86c13bebad97b6154f621c615cdc55d17c16c win-arm64/node_pdb.7z +e79b56cbe3eb8f7c405b78dd56a374f40f7dbebac27be03542c476e8cedd41a0 win-arm64/node_pdb.zip +f70b418bfe95f34d519785adf58306bb6310f69d5d53175a47c6c6fe26f83014 win-x64/node.exe +7d545cfcf38456553e83f419c72e91bf9bc80500bf8c0f3f838a7be020e88def win-x64/node.lib +cdcee919b3bb114ac2791008a11fc90459b545c95e5e69c40db06f183af25f46 win-x64/node_pdb.7z +d5e21f5d29e3f28dacf814996e68ce404c394b93947e5ccdac507402fef024bb win-x64/node_pdb.zip +c233d2d9cfa277e9a0679b597a34d33046752e75ba8b581c80e46086ef3fad93 win-x86/node.exe +d7f17d2550d686620f88b50d3bbaad1259974fc98b09fd95959a536fecbe1c5a win-x86/node.lib +03ddcaf8a641c0706034dfd0aaf81e5ffa488be5bebdfc7230ae5bca51577065 win-x86/node_pdb.7z +b2e832ce2e5ce051f910bdc6d6544f70ddc0e3b8cb03d177265da4bf31c2ef9e win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEzGj1oxBv9EgyLkjtJ/XjjVsKIV8FAmhZEbcACgkQJ/XjjVsK +IV8p8A/+LpoDUapcFPcIMN8yD6zck0Coi6GDENoxK9g90ovM1HIBn9mGeEqUQuXY +cSihmn7Zg30IyT6VM3Wfpx1oWpWVdhzqdgQPaHu1QNcWhj1BnQFQMQxGpXtzLi83 +1CIVt5YyDxl1FJm5wLc4vc0POoOGgiBXs6JgH6lsKZaQcCIGBflNWtVpavDfVAX2 +DwvI5Zf+IkrK8McKapmpruCFb/6u0v0oL2pEgs7xEA+8zUU0BMmr4SNGQK2jlz7I +uOytCgwMjCjVxxdIJg/m8W70Ry3MUqnRRsM7Wa85vGZWrBbGjH3TXfHFtxs/8WRY +1ZQHwaUiSscajeRuySE2xs/teoZIbHHOf78i1VixC+mU+X4E5gR1fnPKlbnisC3A +79WCCoAQHIPe/OnAj467Q0DXZj+8aKR58JGpCgbpB7hGznpIgJwEwhhnPlSqvVQ7 +uawLJ9JfE3NHTJBzSKFECpJ05Lyoo8zmBde1g6P384GvckFSWv4Hoa4p9V4FpKwK +up8DP2Dyfmr3CvXabOfVq9VmqjQ+TBxBixBVdQpKwtS85Ash7MDGPqHBZq1nKjFw +HvSJMwTlIQufhAUrADNQsjMGoE4MNXlOXnS6KkvOV0FSbX2A+SplN+WqqCBBft8P ++6wmkLfpdn/lbgTaayQWuI41UkhjUBd4MyEbYZeawzhZOXjJk4s= +=vDFx +-----END PGP SIGNATURE----- +``` From 33b8f848489647746185feda67600eef72ca9fc5 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga <rafael.nunu@hotmail.com> Date: Tue, 24 Jun 2025 20:26:48 -0300 Subject: [PATCH 0571/1385] Blog: v24.3.0 release post (#7891) Refs: https://github.com/nodejs/node/pull/58813 Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com> --- apps/site/pages/en/blog/release/v24.3.0.md | 173 +++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v24.3.0.md diff --git a/apps/site/pages/en/blog/release/v24.3.0.md b/apps/site/pages/en/blog/release/v24.3.0.md new file mode 100644 index 0000000000000..181c4be745bf9 --- /dev/null +++ b/apps/site/pages/en/blog/release/v24.3.0.md @@ -0,0 +1,173 @@ +--- +date: '2025-06-24T23:05:50.672Z' +category: release +title: Node v24.3.0 (Current) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-06-24, Version 24.3.0 (Current), @RafaelGSS + +### Notable Changes + +- \[[`841609ac1c`](https://github.com/nodejs/node/commit/841609ac1c)] - **doc**: add islandryu to collaborators (Shima Ryuhei) [#58714](https://github.com/nodejs/node/pull/58714) +- \[[`839964ece8`](https://github.com/nodejs/node/commit/839964ece8)] - **(SEMVER-MINOR)** **fs**: allow correct handling of burst in fs-events with AsyncIterator (Philipp Dunkel) [#58490](https://github.com/nodejs/node/pull/58490) +- \[[`9b28f40834`](https://github.com/nodejs/node/commit/9b28f40834)] - **(SEMVER-MINOR)** **module**: remove experimental warning from type stripping (Marco Ippolito) [#58643](https://github.com/nodejs/node/pull/58643) +- \[[`7cdda927fa`](https://github.com/nodejs/node/commit/7cdda927fa)] - **test**: fix test-timeout-flag after revert of auto subtest wait (Pietro Marchini) [#58282](https://github.com/nodejs/node/pull/58282) +- \[[`dce1995c55`](https://github.com/nodejs/node/commit/dce1995c55)] - _**Revert**_ "**test_runner**: remove promises returned by t.test()" (Romain Menke) [#58282](https://github.com/nodejs/node/pull/58282) +- \[[`8b0c5edbb6`](https://github.com/nodejs/node/commit/8b0c5edbb6)] - _**Revert**_ "**test_runner**: remove promises returned by test()" (Romain Menke) [#58282](https://github.com/nodejs/node/pull/58282) +- \[[`713fbad7b6`](https://github.com/nodejs/node/commit/713fbad7b6)] - **(SEMVER-MINOR)** **test_runner**: support object property mocking (Idan Goshen) [#58438](https://github.com/nodejs/node/pull/58438) +- \[[`ef0230abaf`](https://github.com/nodejs/node/commit/ef0230abaf)] - **(SEMVER-MINOR)** **url**: add fileURLToPathBuffer API (James M Snell) [#58700](https://github.com/nodejs/node/pull/58700) + +### Commits + +- \[[`2ba2c93dee`](https://github.com/nodejs/node/commit/2ba2c93dee)] - **build**: fix typo 'Stoage' to 'Storage' in help text (ganglike) [#58777](https://github.com/nodejs/node/pull/58777) +- \[[`11811c15da`](https://github.com/nodejs/node/commit/11811c15da)] - **deps**: update nghttp2 to 1.66.0 (Node.js GitHub Bot) [#58786](https://github.com/nodejs/node/pull/58786) +- \[[`7643ce9322`](https://github.com/nodejs/node/commit/7643ce9322)] - **deps**: update acorn to 8.15.0 (Node.js GitHub Bot) [#58711](https://github.com/nodejs/node/pull/58711) +- \[[`4b61f10eb6`](https://github.com/nodejs/node/commit/4b61f10eb6)] - **deps**: V8: cherry-pick e3df60f3f5ab (Chengzhong Wu) [#58691](https://github.com/nodejs/node/pull/58691) +- \[[`fa6854f083`](https://github.com/nodejs/node/commit/fa6854f083)] - **deps**: update amaro to 1.1.0 (Node.js GitHub Bot) [#58754](https://github.com/nodejs/node/pull/58754) +- \[[`68671f4314`](https://github.com/nodejs/node/commit/68671f4314)] - **deps**: upgrade npm to 11.4.2 (npm team) [#58696](https://github.com/nodejs/node/pull/58696) +- \[[`450f4815b3`](https://github.com/nodejs/node/commit/450f4815b3)] - **deps**: update amaro to 1.0.0 (Node.js GitHub Bot) [#58639](https://github.com/nodejs/node/pull/58639) +- \[[`3aa2762e96`](https://github.com/nodejs/node/commit/3aa2762e96)] - **deps**: update sqlite to 3.50.1 (Node.js GitHub Bot) [#58630](https://github.com/nodejs/node/pull/58630) +- \[[`80eac147e6`](https://github.com/nodejs/node/commit/80eac147e6)] - **deps**: update simdjson to 3.13.0 (Node.js GitHub Bot) [#58629](https://github.com/nodejs/node/pull/58629) +- \[[`dc1023878c`](https://github.com/nodejs/node/commit/dc1023878c)] - **deps**: update zlib to 1.3.1-470d3a2 (Node.js GitHub Bot) [#58628](https://github.com/nodejs/node/pull/58628) +- \[[`97fbfd82af`](https://github.com/nodejs/node/commit/97fbfd82af)] - **doc**: fix stability 1.x links excluding the decimal digit (Dario Piotrowicz) [#58783](https://github.com/nodejs/node/pull/58783) +- \[[`e2e88d4971`](https://github.com/nodejs/node/commit/e2e88d4971)] - **doc**: fix wrong RFC number in http2 (Deokjin Kim) [#58753](https://github.com/nodejs/node/pull/58753) +- \[[`7bb1246c8f`](https://github.com/nodejs/node/commit/7bb1246c8f)] - **doc**: add history entry for TS support in hooks (Antoine du Hamel) [#58732](https://github.com/nodejs/node/pull/58732) +- \[[`f125310d3a`](https://github.com/nodejs/node/commit/f125310d3a)] - **doc**: run license-builder (github-actions\[bot]) [#58722](https://github.com/nodejs/node/pull/58722) +- \[[`841609ac1c`](https://github.com/nodejs/node/commit/841609ac1c)] - **doc**: add islandryu to collaborators (Shima Ryuhei) [#58714](https://github.com/nodejs/node/pull/58714) +- \[[`1cc77c7ee6`](https://github.com/nodejs/node/commit/1cc77c7ee6)] - **doc**: punctuation fix for Node-API versioning clarification (Jiacai Liu) [#58599](https://github.com/nodejs/node/pull/58599) +- \[[`d59680348e`](https://github.com/nodejs/node/commit/d59680348e)] - **doc**: add path rules and validation for export targets in package.json (0hm☘️) [#58604](https://github.com/nodejs/node/pull/58604) +- \[[`b6760b3379`](https://github.com/nodejs/node/commit/b6760b3379)] - **esm**: syncify default path of `ModuleLoader.load` (Jacob Smith) [#57419](https://github.com/nodejs/node/pull/57419) +- \[[`96c78d726c`](https://github.com/nodejs/node/commit/96c78d726c)] - **fs**: make `Dir` disposers idempotent (René) [#58692](https://github.com/nodejs/node/pull/58692) +- \[[`62b5879d88`](https://github.com/nodejs/node/commit/62b5879d88)] - **fs**: avoid computing time coefficient constants in runtime (Livia Medeiros) [#58728](https://github.com/nodejs/node/pull/58728) +- \[[`af18c0e81a`](https://github.com/nodejs/node/commit/af18c0e81a)] - **fs**: remove IIFE in glob (LiviaMedeiros) [#58418](https://github.com/nodejs/node/pull/58418) +- \[[`fb4378b72e`](https://github.com/nodejs/node/commit/fb4378b72e)] - **fs**: add UV_ENOSPC to list of things to pass to err directly (Jacky Zhao) [#56918](https://github.com/nodejs/node/pull/56918) +- \[[`839964ece8`](https://github.com/nodejs/node/commit/839964ece8)] - **(SEMVER-MINOR)** **fs**: allow correct handling of burst in fs-events with AsyncIterator (Philipp Dunkel) [#58490](https://github.com/nodejs/node/pull/58490) +- \[[`c9dc0a8903`](https://github.com/nodejs/node/commit/c9dc0a8903)] - **http**: fix keep-alive not timing out after post-request empty line (Shima Ryuhei) [#58178](https://github.com/nodejs/node/pull/58178) +- \[[`b11da1115e`](https://github.com/nodejs/node/commit/b11da1115e)] - **http2**: fix DEP0194 message (KaKa) [#58669](https://github.com/nodejs/node/pull/58669) +- \[[`b1f60d2f18`](https://github.com/nodejs/node/commit/b1f60d2f18)] - **http2**: add diagnostics channel 'http2.server.stream.close' (Darshan Sen) [#58602](https://github.com/nodejs/node/pull/58602) +- \[[`be93091694`](https://github.com/nodejs/node/commit/be93091694)] - **inspector**: add protocol methods retrieving sent/received data (Chengzhong Wu) [#58645](https://github.com/nodejs/node/pull/58645) +- \[[`20089e2a2e`](https://github.com/nodejs/node/commit/20089e2a2e)] - **lib**: rename `validateInternalField` into `validateThisInternalField` (LiviaMedeiros) [#58765](https://github.com/nodejs/node/pull/58765) +- \[[`74983832f9`](https://github.com/nodejs/node/commit/74983832f9)] - **lib**: make `validateInternalField()` throw `ERR_INVALID_THIS` (LiviaMedeiros) [#58765](https://github.com/nodejs/node/pull/58765) +- \[[`081c70878f`](https://github.com/nodejs/node/commit/081c70878f)] - **lib**: make domexception a native error (Chengzhong Wu) [#58691](https://github.com/nodejs/node/pull/58691) +- \[[`6390f70da2`](https://github.com/nodejs/node/commit/6390f70da2)] - **lib,src**: support DOMException ser-des (Chengzhong Wu) [#58649](https://github.com/nodejs/node/pull/58649) +- \[[`4c2c100f63`](https://github.com/nodejs/node/commit/4c2c100f63)] - **meta**: add @nodejs/inspector as codeowner (Chengzhong Wu) [#58790](https://github.com/nodejs/node/pull/58790) +- \[[`ff8a3691c4`](https://github.com/nodejs/node/commit/ff8a3691c4)] - **module**: fix typescript import.meta.main (Marco Ippolito) [#58661](https://github.com/nodejs/node/pull/58661) +- \[[`45f7d160ed`](https://github.com/nodejs/node/commit/45f7d160ed)] - **module**: refactor commonjs typescript loader (Marco Ippolito) [#58657](https://github.com/nodejs/node/pull/58657) +- \[[`9b28f40834`](https://github.com/nodejs/node/commit/9b28f40834)] - **(SEMVER-MINOR)** **module**: remove experimental warning from type stripping (Marco Ippolito) [#58643](https://github.com/nodejs/node/pull/58643) +- \[[`a3c7a63c73`](https://github.com/nodejs/node/commit/a3c7a63c73)] - **module**: allow cycles in require() in the CJS handling in ESM loader (Joyee Cheung) [#58598](https://github.com/nodejs/node/pull/58598) +- \[[`d0e42ffa58`](https://github.com/nodejs/node/commit/d0e42ffa58)] - **repl**: avoid deprecated `require.extensions` in tab completion (baki gul) [#58653](https://github.com/nodejs/node/pull/58653) +- \[[`82b18ba890`](https://github.com/nodejs/node/commit/82b18ba890)] - **repl**: fix tab completion not working with computer string properties (Dario Piotrowicz) [#58709](https://github.com/nodejs/node/pull/58709) +- \[[`8c2089683e`](https://github.com/nodejs/node/commit/8c2089683e)] - **src**: add FromV8Value\<T>() for integral and enum types (Aditi) [#57931](https://github.com/nodejs/node/pull/57931) +- \[[`a0b1378a20`](https://github.com/nodejs/node/commit/a0b1378a20)] - **src**: pass resource on permission checks for spawn (Rafael Gonzaga) [#58758](https://github.com/nodejs/node/pull/58758) +- \[[`dfb0144490`](https://github.com/nodejs/node/commit/dfb0144490)] - **src**: enhance error messages for unknown options (Pietro Marchini) [#58677](https://github.com/nodejs/node/pull/58677) +- \[[`e9c6fa514c`](https://github.com/nodejs/node/commit/e9c6fa514c)] - **src**: replace std::array with static arrays in contextify (Mert Can Altin) [#58580](https://github.com/nodejs/node/pull/58580) +- \[[`4347ce3dba`](https://github.com/nodejs/node/commit/4347ce3dba)] - **src**: add new CopyUtimes function to reduce code duplication (Dario Piotrowicz) [#58625](https://github.com/nodejs/node/pull/58625) +- \[[`893999e0ee`](https://github.com/nodejs/node/commit/893999e0ee)] - **src**: replace V8 Fast API todo comment with note comment (Dario Piotrowicz) [#58614](https://github.com/nodejs/node/pull/58614) +- \[[`7cdda927fa`](https://github.com/nodejs/node/commit/7cdda927fa)] - **test**: fix test-timeout-flag after revert of auto subtest wait (Pietro Marchini) [#58282](https://github.com/nodejs/node/pull/58282) +- \[[`d9c2b7054b`](https://github.com/nodejs/node/commit/d9c2b7054b)] - **test**: refactor repl save-load tests (Dario Piotrowicz) [#58715](https://github.com/nodejs/node/pull/58715) +- \[[`3faa4e8b56`](https://github.com/nodejs/node/commit/3faa4e8b56)] - **test**: deflake test-buffer-large-size-buffer-alloc-unsafe (Luigi Pinca) [#58771](https://github.com/nodejs/node/pull/58771) +- \[[`8eec789888`](https://github.com/nodejs/node/commit/8eec789888)] - **test**: correct SIMD support comment (Richard Lau) [#58767](https://github.com/nodejs/node/pull/58767) +- \[[`6e0ee39b6d`](https://github.com/nodejs/node/commit/6e0ee39b6d)] - **test**: skip the test if the buffer allocation fails (Luigi Pinca) [#58738](https://github.com/nodejs/node/pull/58738) +- \[[`d94b184700`](https://github.com/nodejs/node/commit/d94b184700)] - **test**: deflake test-buffer-large-size-buffer-alloc (Luigi Pinca) [#58734](https://github.com/nodejs/node/pull/58734) +- \[[`704b1fa075`](https://github.com/nodejs/node/commit/704b1fa075)] - **test**: add tests for REPL custom evals (Dario Piotrowicz) [#57850](https://github.com/nodejs/node/pull/57850) +- \[[`c39d570871`](https://github.com/nodejs/node/commit/c39d570871)] - **test**: reduce the use of private symbols in test-events-once.js (Yoshiya Hinosawa) [#58685](https://github.com/nodejs/node/pull/58685) +- \[[`b7e488c77f`](https://github.com/nodejs/node/commit/b7e488c77f)] - **test**: refactor repl tab complete tests (Dario Piotrowicz) [#58636](https://github.com/nodejs/node/pull/58636) +- \[[`ec808b3e06`](https://github.com/nodejs/node/commit/ec808b3e06)] - **test**: use `common.skipIfInspectorDisabled()` to skip tests (Dario Piotrowicz) [#58675](https://github.com/nodejs/node/pull/58675) +- \[[`94e53d4f6c`](https://github.com/nodejs/node/commit/94e53d4f6c)] - **test**: update WPT for urlpattern to 3ffda23e5a (Node.js GitHub Bot) [#58537](https://github.com/nodejs/node/pull/58537) +- \[[`fa089d610f`](https://github.com/nodejs/node/commit/fa089d610f)] - **test**: update WPT for dom/abort to dc928169ee (Node.js GitHub Bot) [#58644](https://github.com/nodejs/node/pull/58644) +- \[[`aa657f0fc4`](https://github.com/nodejs/node/commit/aa657f0fc4)] - **test**: split indirect eval import tests (Chengzhong Wu) [#58637](https://github.com/nodejs/node/pull/58637) +- \[[`76e3c8aaf2`](https://github.com/nodejs/node/commit/76e3c8aaf2)] - **test**: update WPT for es-exceptions to 2f96fa1996 (Node.js GitHub Bot) [#58640](https://github.com/nodejs/node/pull/58640) +- \[[`7e34aa4eaa`](https://github.com/nodejs/node/commit/7e34aa4eaa)] - **test**: skip tests failing when run under root (Livia Medeiros) [#58610](https://github.com/nodejs/node/pull/58610) +- \[[`85f062c22e`](https://github.com/nodejs/node/commit/85f062c22e)] - **test**: deflake async-hooks/test-improper-order on AIX (Baki Gul) [#58567](https://github.com/nodejs/node/pull/58567) +- \[[`181014a8fe`](https://github.com/nodejs/node/commit/181014a8fe)] - **test**: cleanup status files (Filip Skokan) [#58633](https://github.com/nodejs/node/pull/58633) +- \[[`a4d756068d`](https://github.com/nodejs/node/commit/a4d756068d)] - **test**: close FileHandle objects in tests explicitly (James M Snell) [#58615](https://github.com/nodejs/node/pull/58615) +- \[[`a1529d5d99`](https://github.com/nodejs/node/commit/a1529d5d99)] - **test_runner**: automatically wait for subtests to finish (Colin Ihrig) [#58800](https://github.com/nodejs/node/pull/58800) +- \[[`dce1995c55`](https://github.com/nodejs/node/commit/dce1995c55)] - _**Revert**_ "**test_runner**: remove promises returned by t.test()" (Romain Menke) [#58282](https://github.com/nodejs/node/pull/58282) +- \[[`8b0c5edbb6`](https://github.com/nodejs/node/commit/8b0c5edbb6)] - _**Revert**_ "**test_runner**: remove promises returned by test()" (Romain Menke) [#58282](https://github.com/nodejs/node/pull/58282) +- \[[`6ef7329c8c`](https://github.com/nodejs/node/commit/6ef7329c8c)] - _**Revert**_ "**test_runner**: automatically wait for subtests to finish" (Romain Menke) [#58282](https://github.com/nodejs/node/pull/58282) +- \[[`c9e7b5e43a`](https://github.com/nodejs/node/commit/c9e7b5e43a)] - **test_runner**: prefer `Atomics` primordials (Renegade334) [#58716](https://github.com/nodejs/node/pull/58716) +- \[[`713fbad7b6`](https://github.com/nodejs/node/commit/713fbad7b6)] - **(SEMVER-MINOR)** **test_runner**: support object property mocking (Idan Goshen) [#58438](https://github.com/nodejs/node/pull/58438) +- \[[`9df1cfe402`](https://github.com/nodejs/node/commit/9df1cfe402)] - **tools**: make nodedownload module compatible with Python 3.14 (Lumír 'Frenzy' Balhar) [#58752](https://github.com/nodejs/node/pull/58752) +- \[[`b5ff3f42b8`](https://github.com/nodejs/node/commit/b5ff3f42b8)] - **tools**: include toolchain.gypi in abseil.gyp (Chengzhong Wu) [#58678](https://github.com/nodejs/node/pull/58678) +- \[[`dc2f23e986`](https://github.com/nodejs/node/commit/dc2f23e986)] - **tools**: bump `brace-expansion` in `/tools/clang-format` (dependabot\[bot]) [#58699](https://github.com/nodejs/node/pull/58699) +- \[[`e6a1787140`](https://github.com/nodejs/node/commit/e6a1787140)] - **tools**: bump brace-expansion from 1.1.11 to 1.1.12 in /tools/eslint (dependabot\[bot]) [#58698](https://github.com/nodejs/node/pull/58698) +- \[[`b22e970774`](https://github.com/nodejs/node/commit/b22e970774)] - **tools**: switch to `@stylistic/eslint-plugin` (Michaël Zasso) [#58623](https://github.com/nodejs/node/pull/58623) +- \[[`268c8c1799`](https://github.com/nodejs/node/commit/268c8c1799)] - **tools**: remove config.status under `make distclean` (René) [#58603](https://github.com/nodejs/node/pull/58603) +- \[[`c1f9791844`](https://github.com/nodejs/node/commit/c1f9791844)] - **tools**: edit commit-queue workflow file (Antoine du Hamel) [#58667](https://github.com/nodejs/node/pull/58667) +- \[[`afbaf9277b`](https://github.com/nodejs/node/commit/afbaf9277b)] - **tools**: improve release proposal linter (Antoine du Hamel) [#58647](https://github.com/nodejs/node/pull/58647) +- \[[`17df800b90`](https://github.com/nodejs/node/commit/17df800b90)] - **typings**: add Atomics primordials (Renegade334) [#58577](https://github.com/nodejs/node/pull/58577) +- \[[`ffff8ce3a4`](https://github.com/nodejs/node/commit/ffff8ce3a4)] - **typings**: add ZSTD_COMPRESS, ZSTD_DECOMPRESS to internalBinding (Meghan Denny) [#58655](https://github.com/nodejs/node/pull/58655) +- \[[`ef0230abaf`](https://github.com/nodejs/node/commit/ef0230abaf)] - **(SEMVER-MINOR)** **url**: add fileURLToPathBuffer API (James M Snell) [#58700](https://github.com/nodejs/node/pull/58700) +- \[[`6f7b89516f`](https://github.com/nodejs/node/commit/6f7b89516f)] - **util**: inspect: do not crash on an Error stack pointing to itself (Sam Verschueren) [#58196](https://github.com/nodejs/node/pull/58196) + +Windows 64-bit Installer: https://nodejs.org/dist/v24.3.0/node-v24.3.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.3.0/node-v24.3.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v24.3.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.3.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v24.3.0/node-v24.3.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.3.0/node-v24.3.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.3.0/node-v24.3.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v24.3.0/node-v24.3.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.3.0/node-v24.3.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.3.0/node-v24.3.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v24.3.0/node-v24.3.0-aix-ppc64.tar.gz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v24.3.0/node-v24.3.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v24.3.0/node-v24.3.0.tar.gz \ +Other release files: https://nodejs.org/dist/v24.3.0/ \ +Documentation: https://nodejs.org/docs/v24.3.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +8dba56a4ecdfac96cb659d153fce30e7718829cb414d4d853cea9f00a6223362 node-v24.3.0-aix-ppc64.tar.gz +b4eaa21f8d331807e19df6ae35abdfbf24d77a54e15ef3f2bb3036becc6012b8 node-v24.3.0-arm64.msi +fee91aa5febeda47ef9f6c0afd2f2bcd3dacb0e656c29de0b5274e0ea1ca3565 node-v24.3.0-darwin-arm64.tar.gz +11994ecf21c5e2c1b247df18969a6d0be60a8cfc70a9092d5f4535d3a6df5087 node-v24.3.0-darwin-arm64.tar.xz +0c065ffa4e53b1a172ab9cd8ca08ae141b187aca8a07403c6856a7b8d0024804 node-v24.3.0-darwin-x64.tar.gz +b1ee1cffb39ff6b47c7da9b9da7f2dd01713334b4bae7b2595954237d94cfac7 node-v24.3.0-darwin-x64.tar.xz +045e9bf477cd5db0ec67f8c1a63ba7f784dedfe2c581e3d0ed09b88e9115dd07 node-v24.3.0-headers.tar.gz +4a655fd9759f0be1e3e78d99590e8ef08386fdc45dab9aa909aa86408353e14e node-v24.3.0-headers.tar.xz +371fc060d5dd4de565586c3cc70034956db67a8f3dae0f0e5724fa56147c472a node-v24.3.0-linux-arm64.tar.gz +9729d0ecc69fad6591e4e19b46854881e8cc9d865cf03fc951a8abc567854f5e node-v24.3.0-linux-arm64.tar.xz +2f3979aa58e30b78205a319f2bcb4c21f849d1f4a31acb753c63a0508046e87f node-v24.3.0-linux-ppc64le.tar.gz +88a3f44fed8105bd74eee678933cfcf2c1c4ea0828b60e76a9c6ca687195a889 node-v24.3.0-linux-ppc64le.tar.xz +bb5ca45bab065d7a23cdfda7e682b0aa6c64a3756c92bfc2bf13831731cd6324 node-v24.3.0-linux-s390x.tar.gz +ae3660a75a2c13db674ef4b906739eb4c0aafdaa6b8f7e72cf4a5b3af61052ba node-v24.3.0-linux-s390x.tar.xz +bbeb5fb8113b44fc30f5a5887dbc0ab66af8e56139f5f9fbe7c7a1aa056246dc node-v24.3.0-linux-x64.tar.gz +a962afadaa8b94bae8bff87ddd6c11f7aae621032424ef05c0a4fe2537fa4de0 node-v24.3.0-linux-x64.tar.xz +96dd060e08c825d0d1d53f5ebcc35f03a3e2b59e1242ceabdb7251aeee8312a1 node-v24.3.0-win-arm64.7z +95ff08f6b2763d8491faba46b3a0ba1fb2045e029484494235b20b17c9053208 node-v24.3.0-win-arm64.zip +c299a9f61c19910112831bc4ab7bde4985a1865b49d92453e26a62bd509b95b2 node-v24.3.0-win-x64.7z +c0c8efbca1b57e5b074bbdf7cef1ccca40979d6b46e5bcadaad5d4b07cbb3b10 node-v24.3.0-win-x64.zip +9c3d2d010c0c6f47deb15ea3670c36da29009aaab9b4b76bd7d97862b5b3f402 node-v24.3.0-x64.msi +5d26dfb26af1b65ce3c739695425da4f215d560d69b43d1845ecd34b029860c7 node-v24.3.0.pkg +f8cc1dcde9b76fa380765204fefbb98e51123e52c919ba4adcf4ccd235bbf70b node-v24.3.0.tar.gz +eb688ef8a63fda9ebc0b5f907609a46e26db6d9aceefc0832009a98371e992ed node-v24.3.0.tar.xz +2817d1d820ce1fccfe214761265d1423f036ceff367b406382b08ba2d6b0dc0c win-arm64/node.exe +6809fc156673d10cca7dff0e54f28309bb111d235c54493a4a0ca401c2113be7 win-arm64/node.lib +40a984b26479f25ff35e82eb7c24344bb03dfe13c9ca3f1cc686614e21d0f6d6 win-arm64/node_pdb.7z +4cf90bca613e0ba98fb124e540da98d7a4e80f8fa82c9b8ee5b015e3c1f3e951 win-arm64/node_pdb.zip +f92545eb2742aff13dc8efe5b0ebcef77f789020ba15926252ed749b2cf0784d win-x64/node.exe +34882ca2bb450431047f2dd3bae1c3b8c1cd2b4cffd5c1a0bf079948846d2b83 win-x64/node.lib +8d78f6a20eae820243188f444db3ba24c2e2f2a7f27d1cd5ba6e85d0793972e0 win-x64/node_pdb.7z +3500676b94e033f904879fd70ffdae75a4dd87463df985769e5919ba0a5bcb65 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmhbLf4ACgkQi+q0389V +XvQjOAwAtugJLDD82rAkLUI+z8uJDtMvmOxKkHsKae4TF76fTdbJOcIduREsu3kI +d2V7d2uueESUXNwKql8hI1jb7VDQkmrtpI7GonZmXKCpY4Kl2etxxxeWjTZEhEMh +XZ377EpxYtxoMG6wKxLvZJKcVfouFRBS4MPmbqW1I9N1G3p0uhapHbVALpO5+6jl +DGHfV4/hEHxK/AHPlYuQ7MNohS86OCwLXiI/QDK5SWOL9O0Q+qty8sOosfpiYq+P +23ZRR2EXv9yZXa9qAYjdMezEMo/Xj2j28hpYuJXZ3XIrcGxTk9EWKIewpaetPa+4 +ZGxfw0mDZn/pXifKx4Qxj1sbOX20X9vNckD5IyVPmpJELgIQuimof+cxdftnm6bE +7+zMsOlgbZJAc8jvsaht8vWeXHcmQMjfRddXSz6MEy+q4aHWQIdkiaw+M3jko1kJ +qOaSHCQyplUXhF7DqSDkbdmSqCk00l7J/rr30WZKcbQQDFPDjevSfr31UefjD8Gi +SeXZaF57 +=QiZg +-----END PGP SIGNATURE----- +``` From 9abc4fe93608e077a448964e80b5a634191a00ce Mon Sep 17 00:00:00 2001 From: Antoine du Hamel <duhamelantoine1995@gmail.com> Date: Wed, 25 Jun 2025 07:09:12 +0200 Subject: [PATCH 0572/1385] Blog: v22.17.0 release post (#7892) * Blog: v22.17.0 release post Refs: https://github.com/nodejs/node/pull/58665 * Update apps/site/pages/en/blog/release/v22.17.0.md Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> * Update apps/site/pages/en/blog/release/v22.17.0.md Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --------- Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> --- apps/site/pages/en/blog/release/v22.17.0.md | 393 ++++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v22.17.0.md diff --git a/apps/site/pages/en/blog/release/v22.17.0.md b/apps/site/pages/en/blog/release/v22.17.0.md new file mode 100644 index 0000000000000..9f2cdf6f13d99 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.17.0.md @@ -0,0 +1,393 @@ +--- +date: '2025-06-24T23:59:58.537Z' +category: release +title: Node v22.17.0 (LTS) +layout: blog-post +author: Antoine du Hamel +--- + +## 2025-06-24, Version 22.17.0 'Jod' (LTS), @aduh95 + +### Notable Changes + +#### ⚠️ Deprecations + +##### Instantiating `node:http` classes **without `new`** + +Constructing classes like `IncomingMessage` or `ServerResponse` without the `new` +keyword is now discouraged. This clarifies API expectations and aligns with standard +JavaScript behavior. It may warn or error in future versions. + +Contributed by Yagiz Nizipli in [#58518](https://github.com/nodejs/node/pull/58518). + +##### `options.shell = ""` in `node:child_process` + +Using an empty string for `shell` previously had undefined behavior. This change +encourages explicit choices (e.g., `shell: true` or a shell path) and avoids +relying on implementation quirks. + +Contributed by Antoine du Hamel and Renegade334 [#58564](https://github.com/nodejs/node/pull/58564). + +##### HTTP/2 priority signaling + +The HTTP/2 prioritization API (e.g., `stream.priority`) is now deprecated due to +poor real-world support. Applications should avoid using priority hints and expect future removal. + +Contributed by Matteo Collina and Antoine du Hamel [#58313](https://github.com/nodejs/node/pull/58313). + +#### ✅ Features graduated to stable + +##### `assert.partialDeepStrictEqual()` + +This method compares only a subset of properties in deep object comparisons, +useful for flexible test assertions. Its stabilization means it's now safe for +general use and won't change unexpectedly in future releases. + +Contributed by Ruben Bridgewater in [#57370](https://github.com/nodejs/node/pull/57370). + +#### Miscellaneous + +- `dirent.parentPath` +- `filehandle.readableWebStream()` +- `fs.glob()` +- `fs.openAsBlob()` +- `node:readline/promises` +- `port.hasRef()` +- `readable.compose()` +- `readable.iterator()` +- `readable.readableAborted` +- `readable.readableDidRead` +- `Duplex.fromWeb()` +- `Duplex.toWeb()` +- `Readable.fromWeb()` +- `Readable.isDisturbed()` +- `Readable.toWeb()` +- `stream.isErrored()` +- `stream.isReadable()` +- `URL.createObjectURL()` +- `URL.revokeObjectURL()` +- `v8.setHeapSnapshotNearHeapLimit()` +- `Writable.fromWeb()` +- `Writable.toWeb()` +- `writable.writableAborted` +- Startup Snapshot API +- `ERR_INPUT_TYPE_NOT_ALLOWED` +- `ERR_UNKNOWN_FILE_EXTENSION` +- `ERR_UNKNOWN_MODULE_FORMAT` +- `ERR_USE_AFTER_CLOSE` + +Contributed by James M Snell in +[#57513](https://github.com/nodejs/node/pull/57513) and +[#58541](https://github.com/nodejs/node/pull/58541). + +#### Semver-minor features + +##### 🔧 `fs.FileHandle.readableWebStream` gets `autoClose` option + +This gives developers explicit control over whether the file descriptor should +be closed when the stream ends. Helps avoid subtle resource leaks. + +Contributed by James M Snell in [#58548](https://github.com/nodejs/node/pull/58548). + +##### 🔧 `fs.Dir` now supports **explicit resource management** + +This improves ergonomics around async iteration of directories. Developers can +now manually control when a directory is closed using `.close()` or with `Symbol.asyncDispose`. + +Contributed by Antoine du Hamel in [#58206](https://github.com/nodejs/node/pull/58206). + +##### 📊 `http2` gains diagnostics channel: `http2.server.stream.finish` + +Adds observability support for when a stream finishes. Useful for logging, +monitoring, and debugging HTTP/2 behavior without patching internals. + +Contributed by Darshan Sen in [#58560](https://github.com/nodejs/node/pull/58560). + +##### 🔐 Permissions: implicit allow-fs-read to entrypoint + +Node.js permissions model now allows read access to the entry file by default. +It makes running permission-restricted apps smoother while preserving security. + +Contributed by Rafael Gonzaga in [#58579](https://github.com/nodejs/node/pull/58579). + +##### 🎨 `util.styleText()` adds `'none'` style + +This lets developers remove styling cleanly without hacks. Useful for overriding +inherited terminal styles when composing styled strings. + +Contributed by James M Snell in [#58437](https://github.com/nodejs/node/pull/58437). + +#### 🧑‍💻 Community updates + +- \[[`0105c13556`](https://github.com/nodejs/node/commit/0105c13556)] - **doc**: add Filip Skokan to TSC (Rafael Gonzaga) [#58499](https://github.com/nodejs/node/pull/58499) +- \[[`3b857735ef`](https://github.com/nodejs/node/commit/3b857735ef)] - **doc**: add JonasBa to collaborators (Jonas Badalic) [#58355](https://github.com/nodejs/node/pull/58355) +- \[[`fdf7612735`](https://github.com/nodejs/node/commit/fdf7612735)] - **doc**: add puskin to collaborators (Giovanni Bucci) [#58308](https://github.com/nodejs/node/pull/58308) + +### Commits + +- \[[`ffe7e1ace0`](https://github.com/nodejs/node/commit/ffe7e1ace0)] - **(SEMVER-MINOR)** **assert**: mark partialDeepStrictEqual() as stable (Ruben Bridgewater) [#57370](https://github.com/nodejs/node/pull/57370) +- \[[`269931f289`](https://github.com/nodejs/node/commit/269931f289)] - **async_hooks**: ensure AsyncLocalStore instances work isolated (Gerhard Stöbich) [#58149](https://github.com/nodejs/node/pull/58149) +- \[[`9e0746a4ff`](https://github.com/nodejs/node/commit/9e0746a4ff)] - **benchmark**: fix broken fs.cpSync benchmark (Dario Piotrowicz) [#58472](https://github.com/nodejs/node/pull/58472) +- \[[`dee8cb5bcb`](https://github.com/nodejs/node/commit/dee8cb5bcb)] - **benchmark**: add more options to cp-sync (Sonny) [#58278](https://github.com/nodejs/node/pull/58278) +- \[[`e840fd5b85`](https://github.com/nodejs/node/commit/e840fd5b85)] - **benchmark**: fix typo in method name for error-stack (Miguel Marcondes Filho) [#58128](https://github.com/nodejs/node/pull/58128) +- \[[`b9a16e97e0`](https://github.com/nodejs/node/commit/b9a16e97e0)] - **buffer**: give names to `Buffer.prototype.*Write()` functions (Livia Medeiros) [#58258](https://github.com/nodejs/node/pull/58258) +- \[[`d56a5e40af`](https://github.com/nodejs/node/commit/d56a5e40af)] - **buffer**: use constexpr where possible (Yagiz Nizipli) [#58141](https://github.com/nodejs/node/pull/58141) +- \[[`215587feca`](https://github.com/nodejs/node/commit/215587feca)] - **build**: add support for OpenHarmony operating system (hqzing) [#58350](https://github.com/nodejs/node/pull/58350) +- \[[`9bcef6821c`](https://github.com/nodejs/node/commit/9bcef6821c)] - **build**: fix uvwasi pkgname (Antoine du Hamel) [#58270](https://github.com/nodejs/node/pull/58270) +- \[[`7c3883c2ae`](https://github.com/nodejs/node/commit/7c3883c2ae)] - **build**: search for libnode.so in multiple places (Jan Staněk) [#58213](https://github.com/nodejs/node/pull/58213) +- \[[`3f954accb3`](https://github.com/nodejs/node/commit/3f954accb3)] - **build**: fix pointer compression builds (Joyee Cheung) [#58171](https://github.com/nodejs/node/pull/58171) +- \[[`04c8f59f84`](https://github.com/nodejs/node/commit/04c8f59f84)] - **build**: use FILE_OFFSET_BITS=64 esp. on 32-bit arch (RafaelGSS) [#58090](https://github.com/nodejs/node/pull/58090) +- \[[`8c2cf3a372`](https://github.com/nodejs/node/commit/8c2cf3a372)] - **build**: use //third_party/simdutf by default in GN (Shelley Vohr) [#58115](https://github.com/nodejs/node/pull/58115) +- \[[`cff8006792`](https://github.com/nodejs/node/commit/cff8006792)] - **child_process**: give names to `ChildProcess` functions (Livia Medeiros) [#58370](https://github.com/nodejs/node/pull/58370) +- \[[`6816d779b6`](https://github.com/nodejs/node/commit/6816d779b6)] - **child_process**: give names to promisified `exec()` and `execFile()` (LiviaMedeiros) [#57916](https://github.com/nodejs/node/pull/57916) +- \[[`5572cecca4`](https://github.com/nodejs/node/commit/5572cecca4)] - **crypto**: expose crypto.constants.OPENSSL_IS_BORINGSSL (Shelley Vohr) [#58387](https://github.com/nodejs/node/pull/58387) +- \[[`d6aa02889c`](https://github.com/nodejs/node/commit/d6aa02889c)] - **deps**: use proper C standard when building libuv (Yaksh Bariya) [#58587](https://github.com/nodejs/node/pull/58587) +- \[[`375a6413d5`](https://github.com/nodejs/node/commit/375a6413d5)] - **deps**: update simdjson to 3.12.3 (Node.js GitHub Bot) [#57682](https://github.com/nodejs/node/pull/57682) +- \[[`e0cd138e52`](https://github.com/nodejs/node/commit/e0cd138e52)] - **deps**: update googletest to e9092b1 (Node.js GitHub Bot) [#58565](https://github.com/nodejs/node/pull/58565) +- \[[`31e592631f`](https://github.com/nodejs/node/commit/31e592631f)] - **deps**: update corepack to 0.33.0 (Node.js GitHub Bot) [#58566](https://github.com/nodejs/node/pull/58566) +- \[[`386c24260b`](https://github.com/nodejs/node/commit/386c24260b)] - **deps**: update sqlite to 3.50.0 (Node.js GitHub Bot) [#58272](https://github.com/nodejs/node/pull/58272) +- \[[`f84998d40b`](https://github.com/nodejs/node/commit/f84998d40b)] - **deps**: update OpenSSL gen container to Ubuntu 22.04 (Michaël Zasso) [#58432](https://github.com/nodejs/node/pull/58432) +- \[[`d49fd29859`](https://github.com/nodejs/node/commit/d49fd29859)] - **deps**: update llhttp to 9.3.0 (Fedor Indutny) [#58144](https://github.com/nodejs/node/pull/58144) +- \[[`e397980a1a`](https://github.com/nodejs/node/commit/e397980a1a)] - **deps**: update libuv to 1.51.0 (Node.js GitHub Bot) [#58124](https://github.com/nodejs/node/pull/58124) +- \[[`a28c33645c`](https://github.com/nodejs/node/commit/a28c33645c)] - **dns**: fix dns query cache implementation (Ethan Arrowood) [#58404](https://github.com/nodejs/node/pull/58404) +- \[[`6939b0c624`](https://github.com/nodejs/node/commit/6939b0c624)] - **doc**: fix the order of `process.md` sections (Allon Murienik) [#58403](https://github.com/nodejs/node/pull/58403) +- \[[`1ca253c363`](https://github.com/nodejs/node/commit/1ca253c363)] - **doc**: add support link for panva (Filip Skokan) [#58591](https://github.com/nodejs/node/pull/58591) +- \[[`8319edbcf6`](https://github.com/nodejs/node/commit/8319edbcf6)] - **doc**: update metadata for \_transformState deprecation (James M Snell) [#58530](https://github.com/nodejs/node/pull/58530) +- \[[`697d258136`](https://github.com/nodejs/node/commit/697d258136)] - **doc**: deprecate passing an empty string to `options.shell` (Antoine du Hamel) [#58564](https://github.com/nodejs/node/pull/58564) +- \[[`132fc804e8`](https://github.com/nodejs/node/commit/132fc804e8)] - **doc**: correct formatting of example definitions for `--test-shard` (Jacob Smith) [#58571](https://github.com/nodejs/node/pull/58571) +- \[[`7d0df646f6`](https://github.com/nodejs/node/commit/7d0df646f6)] - **doc**: clarify DEP0194 scope (Antoine du Hamel) [#58504](https://github.com/nodejs/node/pull/58504) +- \[[`1e6d7da0ce`](https://github.com/nodejs/node/commit/1e6d7da0ce)] - **doc**: deprecate HTTP/2 priority signaling (Matteo Collina) [#58313](https://github.com/nodejs/node/pull/58313) +- \[[`5a917bc1d0`](https://github.com/nodejs/node/commit/5a917bc1d0)] - **doc**: explain child_process code and signal null values everywhere (Darshan Sen) [#58479](https://github.com/nodejs/node/pull/58479) +- \[[`0105c13556`](https://github.com/nodejs/node/commit/0105c13556)] - **doc**: add Filip Skokan to TSC (Rafael Gonzaga) [#58499](https://github.com/nodejs/node/pull/58499) +- \[[`2bdc87cd64`](https://github.com/nodejs/node/commit/2bdc87cd64)] - **doc**: update `git node release` example (Antoine du Hamel) [#58475](https://github.com/nodejs/node/pull/58475) +- \[[`28f9b43186`](https://github.com/nodejs/node/commit/28f9b43186)] - **doc**: add missing options.info for ZstdOptions (Jimmy Leung) [#58360](https://github.com/nodejs/node/pull/58360) +- \[[`e19496dfc1`](https://github.com/nodejs/node/commit/e19496dfc1)] - **doc**: add missing options.info for BrotliOptions (Jimmy Leung) [#58359](https://github.com/nodejs/node/pull/58359) +- \[[`7f905863db`](https://github.com/nodejs/node/commit/7f905863db)] - **doc**: clarify x509.checkIssued only checks metadata (Filip Skokan) [#58457](https://github.com/nodejs/node/pull/58457) +- \[[`5cc97df637`](https://github.com/nodejs/node/commit/5cc97df637)] - **doc**: add links to parent class for `node:zlib` classes (Antoine du Hamel) [#58433](https://github.com/nodejs/node/pull/58433) +- \[[`36e0d5539b`](https://github.com/nodejs/node/commit/36e0d5539b)] - **doc**: remove remaining uses of `@@wellknown` syntax (René) [#58413](https://github.com/nodejs/node/pull/58413) +- \[[`2f36f8e863`](https://github.com/nodejs/node/commit/2f36f8e863)] - **doc**: clarify behavior of --watch-path and --watch flags (Juan Ignacio Benito) [#58136](https://github.com/nodejs/node/pull/58136) +- \[[`3b857735ef`](https://github.com/nodejs/node/commit/3b857735ef)] - **doc**: add JonasBa to collaborators (Jonas Badalic) [#58355](https://github.com/nodejs/node/pull/58355) +- \[[`9d5e969bb6`](https://github.com/nodejs/node/commit/9d5e969bb6)] - **doc**: add latest security release steward (Rafael Gonzaga) [#58339](https://github.com/nodejs/node/pull/58339) +- \[[`b22bb03167`](https://github.com/nodejs/node/commit/b22bb03167)] - **doc**: fix CryptoKey.algorithm type and other interfaces in webcrypto.md (Filip Skokan) [#58294](https://github.com/nodejs/node/pull/58294) +- \[[`670f31060b`](https://github.com/nodejs/node/commit/670f31060b)] - **doc**: mark the callback argument of crypto.generatePrime as mandatory (Allon Murienik) [#58299](https://github.com/nodejs/node/pull/58299) +- \[[`39d9a61239`](https://github.com/nodejs/node/commit/39d9a61239)] - **doc**: remove comma delimiter mention on permissions doc (Rafael Gonzaga) [#58297](https://github.com/nodejs/node/pull/58297) +- \[[`573b0b7bfe`](https://github.com/nodejs/node/commit/573b0b7bfe)] - **doc**: make Stability labels not sticky in Stability index (Livia Medeiros) [#58291](https://github.com/nodejs/node/pull/58291) +- \[[`a5a686a3ae`](https://github.com/nodejs/node/commit/a5a686a3ae)] - **doc**: update commit-queue documentation (Dario Piotrowicz) [#58275](https://github.com/nodejs/node/pull/58275) +- \[[`fdf7612735`](https://github.com/nodejs/node/commit/fdf7612735)] - **doc**: add puskin to collaborators (Giovanni Bucci) [#58308](https://github.com/nodejs/node/pull/58308) +- \[[`be492a1708`](https://github.com/nodejs/node/commit/be492a1708)] - **doc**: update stability status for diagnostics_channel to experimental (Idan Goshen) [#58261](https://github.com/nodejs/node/pull/58261) +- \[[`7d00fc2206`](https://github.com/nodejs/node/commit/7d00fc2206)] - **doc**: clarify napi_get_value_string\_\* for bufsize 0 (Tobias Nießen) [#58158](https://github.com/nodejs/node/pull/58158) +- \[[`c8500a2c4a`](https://github.com/nodejs/node/commit/c8500a2c4a)] - **doc**: fix typo of file `http.md`, `outgoingMessage.setTimeout` section (yusheng chen) [#58188](https://github.com/nodejs/node/pull/58188) +- \[[`34a9b856c3`](https://github.com/nodejs/node/commit/34a9b856c3)] - **doc**: update return types for eventNames method in EventEmitter (Yukihiro Hasegawa) [#58083](https://github.com/nodejs/node/pull/58083) +- \[[`faedee59d2`](https://github.com/nodejs/node/commit/faedee59d2)] - **doc**: fix typo in benchmark script path (Miguel Marcondes Filho) [#58129](https://github.com/nodejs/node/pull/58129) +- \[[`570d8d3f10`](https://github.com/nodejs/node/commit/570d8d3f10)] - **doc**: clarify future Corepack removal in v25+ (Trivikram Kamat) [#57825](https://github.com/nodejs/node/pull/57825) +- \[[`a71b9fc2ff`](https://github.com/nodejs/node/commit/a71b9fc2ff)] - **doc**: mark multiple APIs stable (James M Snell) [#57513](https://github.com/nodejs/node/pull/57513) +- \[[`73a97d47f3`](https://github.com/nodejs/node/commit/73a97d47f3)] - **doc,lib**: update source map links to ECMA426 (Chengzhong Wu) [#58597](https://github.com/nodejs/node/pull/58597) +- \[[`8b41429499`](https://github.com/nodejs/node/commit/8b41429499)] - **doc,src,test**: fix typos (Noritaka Kobayashi) [#58477](https://github.com/nodejs/node/pull/58477) +- \[[`0cea14ec7f`](https://github.com/nodejs/node/commit/0cea14ec7f)] - **errors**: show url of unsupported attributes in the error message (Aditi) [#58303](https://github.com/nodejs/node/pull/58303) +- \[[`b9586bf898`](https://github.com/nodejs/node/commit/b9586bf898)] - **(SEMVER-MINOR)** **fs**: add autoClose option to FileHandle readableWebStream (James M Snell) [#58548](https://github.com/nodejs/node/pull/58548) +- \[[`72a1b061f3`](https://github.com/nodejs/node/commit/72a1b061f3)] - **fs**: unexpose internal constants (Chengzhong Wu) [#58327](https://github.com/nodejs/node/pull/58327) +- \[[`5c36510dec`](https://github.com/nodejs/node/commit/5c36510dec)] - **fs**: add support for `URL` for `fs.glob`'s `cwd` option (Antoine du Hamel) [#58182](https://github.com/nodejs/node/pull/58182) +- \[[`3642b0d944`](https://github.com/nodejs/node/commit/3642b0d944)] - **fs**: improve cpSync no-filter copyDir performance (Dario Piotrowicz) [#58461](https://github.com/nodejs/node/pull/58461) +- \[[`24865bc7e8`](https://github.com/nodejs/node/commit/24865bc7e8)] - **fs**: improve `cpSync` dest overriding performance (Dario Piotrowicz) [#58160](https://github.com/nodejs/node/pull/58160) +- \[[`1b3847694d`](https://github.com/nodejs/node/commit/1b3847694d)] - **(SEMVER-MINOR)** **fs**: add to `Dir` support for explicit resource management (Antoine du Hamel) [#58206](https://github.com/nodejs/node/pull/58206) +- \[[`cff62e3265`](https://github.com/nodejs/node/commit/cff62e3265)] - **fs**: ensure `dir.read()` does not throw synchronously (Antoine du Hamel) [#58228](https://github.com/nodejs/node/pull/58228) +- \[[`cb39e4ca1f`](https://github.com/nodejs/node/commit/cb39e4ca1f)] - **fs**: glob is stable, so should not emit experimental warnings (Théo LUDWIG) [#58236](https://github.com/nodejs/node/pull/58236) +- \[[`597bfefbe1`](https://github.com/nodejs/node/commit/597bfefbe1)] - **http**: deprecate instantiating classes without new (Yagiz Nizipli) [#58518](https://github.com/nodejs/node/pull/58518) +- \[[`5298da0102`](https://github.com/nodejs/node/commit/5298da0102)] - **http**: remove unused functions and add todos (Yagiz Nizipli) [#58143](https://github.com/nodejs/node/pull/58143) +- \[[`cff440e0fa`](https://github.com/nodejs/node/commit/cff440e0fa)] - **http,https**: give names to anonymous or misnamed functions (Livia Medeiros) [#58180](https://github.com/nodejs/node/pull/58180) +- \[[`43bf1f619a`](https://github.com/nodejs/node/commit/43bf1f619a)] - **http2**: add raw header array support to h2Session.request() (Tim Perry) [#57917](https://github.com/nodejs/node/pull/57917) +- \[[`e8a0f5b063`](https://github.com/nodejs/node/commit/e8a0f5b063)] - **http2**: add lenient flag for RFC-9113 (Carlos Fuentes) [#58116](https://github.com/nodejs/node/pull/58116) +- \[[`49cb90d4a5`](https://github.com/nodejs/node/commit/49cb90d4a5)] - **(SEMVER-MINOR)** **http2**: add diagnostics channel 'http2.server.stream.finish' (Darshan Sen) [#58560](https://github.com/nodejs/node/pull/58560) +- \[[`6a56c68728`](https://github.com/nodejs/node/commit/6a56c68728)] - **http2**: add diagnostics channel 'http2.server.stream.error' (Darshan Sen) [#58512](https://github.com/nodejs/node/pull/58512) +- \[[`59806b41d3`](https://github.com/nodejs/node/commit/59806b41d3)] - **http2**: add diagnostics channel 'http2.server.stream.start' (Darshan Sen) [#58449](https://github.com/nodejs/node/pull/58449) +- \[[`d3d662ae47`](https://github.com/nodejs/node/commit/d3d662ae47)] - **http2**: remove no longer userful options.selectPadding (Jimmy Leung) [#58373](https://github.com/nodejs/node/pull/58373) +- \[[`dec6c9af8c`](https://github.com/nodejs/node/commit/dec6c9af8c)] - **http2**: add diagnostics channel 'http2.server.stream.created' (Darshan Sen) [#58390](https://github.com/nodejs/node/pull/58390) +- \[[`9e98899986`](https://github.com/nodejs/node/commit/9e98899986)] - **http2**: add diagnostics channel 'http2.client.stream.close' (Darshan Sen) [#58329](https://github.com/nodejs/node/pull/58329) +- \[[`86610389d8`](https://github.com/nodejs/node/commit/86610389d8)] - **http2**: add diagnostics channel 'http2.client.stream.finish' (Darshan Sen) [#58317](https://github.com/nodejs/node/pull/58317) +- \[[`2d3071671e`](https://github.com/nodejs/node/commit/2d3071671e)] - **http2**: add diagnostics channel 'http2.client.stream.error' (Darshan Sen) [#58306](https://github.com/nodejs/node/pull/58306) +- \[[`6c3e426d6f`](https://github.com/nodejs/node/commit/6c3e426d6f)] - **http2**: add diagnostics channel 'http2.client.stream.start' (Darshan Sen) [#58292](https://github.com/nodejs/node/pull/58292) +- \[[`b99d131a61`](https://github.com/nodejs/node/commit/b99d131a61)] - **http2**: add diagnostics channel 'http2.client.stream.created' (Darshan Sen) [#58246](https://github.com/nodejs/node/pull/58246) +- \[[`b0644330f5`](https://github.com/nodejs/node/commit/b0644330f5)] - **http2**: give name to promisified `connect()` (LiviaMedeiros) [#57916](https://github.com/nodejs/node/pull/57916) +- \[[`4092d3611a`](https://github.com/nodejs/node/commit/4092d3611a)] - **inspector**: add mimeType and charset support to Network.Response (Shima Ryuhei) [#58192](https://github.com/nodejs/node/pull/58192) +- \[[`d7d8599f7c`](https://github.com/nodejs/node/commit/d7d8599f7c)] - **inspector**: add protocol method Network.dataReceived (Chengzhong Wu) [#58001](https://github.com/nodejs/node/pull/58001) +- \[[`aabafbc28f`](https://github.com/nodejs/node/commit/aabafbc28f)] - **inspector**: support for worker inspection in chrome devtools (Shima Ryuhei) [#56759](https://github.com/nodejs/node/pull/56759) +- \[[`20d978de9a`](https://github.com/nodejs/node/commit/20d978de9a)] - **lib**: make ERM functions into wrappers returning undefined (Livia Medeiros) [#58400](https://github.com/nodejs/node/pull/58400) +- \[[`13567eac5f`](https://github.com/nodejs/node/commit/13567eac5f)] - **(SEMVER-MINOR)** **lib**: graduate error codes that have been around for years (James M Snell) [#58541](https://github.com/nodejs/node/pull/58541) +- \[[`342b5a0d7a`](https://github.com/nodejs/node/commit/342b5a0d7a)] - **lib**: remove no-mixed-operators eslint rule (Ruben Bridgewater) [#58375](https://github.com/nodejs/node/pull/58375) +- \[[`af7baef75a`](https://github.com/nodejs/node/commit/af7baef75a)] - **lib**: fix sourcemaps with ts module mocking (Marco Ippolito) [#58193](https://github.com/nodejs/node/pull/58193) +- \[[`8f73f42d4e`](https://github.com/nodejs/node/commit/8f73f42d4e)] - **meta**: bump github/codeql-action from 3.28.16 to 3.28.18 (dependabot\[bot]) [#58552](https://github.com/nodejs/node/pull/58552) +- \[[`5dfedbeb86`](https://github.com/nodejs/node/commit/5dfedbeb86)] - **meta**: bump codecov/codecov-action from 5.4.2 to 5.4.3 (dependabot\[bot]) [#58551](https://github.com/nodejs/node/pull/58551) +- \[[`53c50f66f5`](https://github.com/nodejs/node/commit/53c50f66f5)] - **meta**: bump step-security/harden-runner from 2.11.0 to 2.12.0 (dependabot\[bot]) [#58109](https://github.com/nodejs/node/pull/58109) +- \[[`a1a7024831`](https://github.com/nodejs/node/commit/a1a7024831)] - **meta**: bump ossf/scorecard-action from 2.4.1 to 2.4.2 (dependabot\[bot]) [#58550](https://github.com/nodejs/node/pull/58550) +- \[[`a379988ef6`](https://github.com/nodejs/node/commit/a379988ef6)] - **meta**: bump rtCamp/action-slack-notify from 2.3.2 to 2.3.3 (dependabot\[bot]) [#58108](https://github.com/nodejs/node/pull/58108) +- \[[`f6a46c87f2`](https://github.com/nodejs/node/commit/f6a46c87f2)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#58456](https://github.com/nodejs/node/pull/58456) +- \[[`98b6aa0dcd`](https://github.com/nodejs/node/commit/98b6aa0dcd)] - **meta**: bump github/codeql-action from 3.28.11 to 3.28.16 (dependabot\[bot]) [#58112](https://github.com/nodejs/node/pull/58112) +- \[[`5202b262e3`](https://github.com/nodejs/node/commit/5202b262e3)] - **meta**: bump codecov/codecov-action from 5.4.0 to 5.4.2 (dependabot\[bot]) [#58110](https://github.com/nodejs/node/pull/58110) +- \[[`d97616ac6e`](https://github.com/nodejs/node/commit/d97616ac6e)] - **meta**: bump actions/download-artifact from 4.2.1 to 4.3.0 (dependabot\[bot]) [#58106](https://github.com/nodejs/node/pull/58106) +- \[[`f4065074cf`](https://github.com/nodejs/node/commit/f4065074cf)] - **meta**: ignore mailmap changes in linux ci (Jonas Badalic) [#58356](https://github.com/nodejs/node/pull/58356) +- \[[`e6d1224e54`](https://github.com/nodejs/node/commit/e6d1224e54)] - **meta**: bump actions/setup-node from 4.3.0 to 4.4.0 (dependabot\[bot]) [#58111](https://github.com/nodejs/node/pull/58111) +- \[[`26da160ab2`](https://github.com/nodejs/node/commit/26da160ab2)] - **meta**: bump actions/setup-python from 5.5.0 to 5.6.0 (dependabot\[bot]) [#58107](https://github.com/nodejs/node/pull/58107) +- \[[`4cc4195493`](https://github.com/nodejs/node/commit/4cc4195493)] - **module**: handle instantiated async module jobs in require(esm) (Joyee Cheung) [#58067](https://github.com/nodejs/node/pull/58067) +- \[[`72fac71b92`](https://github.com/nodejs/node/commit/72fac71b92)] - **module**: clarify cjs global-like error on ModuleJobSync (Carlos Espa) [#56491](https://github.com/nodejs/node/pull/56491) +- \[[`fecd841c93`](https://github.com/nodejs/node/commit/fecd841c93)] - **net**: always publish to 'net.client.socket' diagnostics channel (Darshan Sen) [#58349](https://github.com/nodejs/node/pull/58349) +- \[[`25ee328d2b`](https://github.com/nodejs/node/commit/25ee328d2b)] - **path**: improve path.resolve() performance when used as process.cwd() (Ruben Bridgewater) [#58362](https://github.com/nodejs/node/pull/58362) +- \[[`6fd1b23260`](https://github.com/nodejs/node/commit/6fd1b23260)] - **permission**: remove useless conditional (Juan José) [#58514](https://github.com/nodejs/node/pull/58514) +- \[[`5b2cca51a3`](https://github.com/nodejs/node/commit/5b2cca51a3)] - **report**: use uv_getrusage_thread in report (theanarkh) [#58405](https://github.com/nodejs/node/pull/58405) +- \[[`63ec23e84b`](https://github.com/nodejs/node/commit/63ec23e84b)] - **sqlite**: add build option to build without sqlite (Michael Dawson) [#58122](https://github.com/nodejs/node/pull/58122) +- \[[`9d8677bff5`](https://github.com/nodejs/node/commit/9d8677bff5)] - **sqlite**: handle thrown errors in result callback (Colin Ihrig) [#58426](https://github.com/nodejs/node/pull/58426) +- \[[`3490c75760`](https://github.com/nodejs/node/commit/3490c75760)] - **sqlite**: set `name` and `length` on `sqlite.backup()` (Livia Medeiros) [#58251](https://github.com/nodejs/node/pull/58251) +- \[[`50bdd94e0b`](https://github.com/nodejs/node/commit/50bdd94e0b)] - **src**: update std::vector\<v8::Local\<T>> to use v8::LocalVector\<T> (Aditi) [#58500](https://github.com/nodejs/node/pull/58500) +- \[[`7de58417cc`](https://github.com/nodejs/node/commit/7de58417cc)] - **src**: env_vars caching and local variable scope optimization (Mert Can Altin) [#57624](https://github.com/nodejs/node/pull/57624) +- \[[`6d99ec33a4`](https://github.com/nodejs/node/commit/6d99ec33a4)] - **src**: fix FIPS init error handling (Tobias Nießen) [#58379](https://github.com/nodejs/node/pull/58379) +- \[[`4c23a9575e`](https://github.com/nodejs/node/commit/4c23a9575e)] - **src**: fix possible dereference of null pointer (Eusgor) [#58459](https://github.com/nodejs/node/pull/58459) +- \[[`eb143e902b`](https://github.com/nodejs/node/commit/eb143e902b)] - **src**: fix -Wreturn-stack-address error (Shelley Vohr) [#58439](https://github.com/nodejs/node/pull/58439) +- \[[`31058b8785`](https://github.com/nodejs/node/commit/31058b8785)] - **src**: reorganize ContextifyFunction methods (Chengzhong Wu) [#58434](https://github.com/nodejs/node/pull/58434) +- \[[`7521077299`](https://github.com/nodejs/node/commit/7521077299)] - **src**: improve CompileFunctionAndCacheResult error handling (Chengzhong Wu) [#58434](https://github.com/nodejs/node/pull/58434) +- \[[`0c9efccb12`](https://github.com/nodejs/node/commit/0c9efccb12)] - **src**: fix build when using shared simdutf (Antoine du Hamel) [#58407](https://github.com/nodejs/node/pull/58407) +- \[[`aa00f5946f`](https://github.com/nodejs/node/commit/aa00f5946f)] - **src**: add a variant of ToV8Value() for primitive arrays (Aditi) [#57576](https://github.com/nodejs/node/pull/57576) +- \[[`29a11506fc`](https://github.com/nodejs/node/commit/29a11506fc)] - **src**: remove unused `checkMessagePort` internal binding (Dario Piotrowicz) [#58267](https://github.com/nodejs/node/pull/58267) +- \[[`0ce3feed5b`](https://github.com/nodejs/node/commit/0ce3feed5b)] - **src**: remove unused `shouldRetryAsESM` internal binding (Dario Piotrowicz) [#58265](https://github.com/nodejs/node/pull/58265) +- \[[`517219613d`](https://github.com/nodejs/node/commit/517219613d)] - **src**: add a couple fast apis in node_os (James M Snell) [#58210](https://github.com/nodejs/node/pull/58210) +- \[[`3f834da09e`](https://github.com/nodejs/node/commit/3f834da09e)] - **src**: fix module buffer allocation (X-BW) [#57738](https://github.com/nodejs/node/pull/57738) +- \[[`a793706db0`](https://github.com/nodejs/node/commit/a793706db0)] - **src**: remove overzealous tcsetattr error check (Ben Noordhuis) [#58200](https://github.com/nodejs/node/pull/58200) +- \[[`5656c74517`](https://github.com/nodejs/node/commit/5656c74517)] - **src**: remove NonCopyableMaybe (Tobias Nießen) [#58168](https://github.com/nodejs/node/pull/58168) +- \[[`cab242334b`](https://github.com/nodejs/node/commit/cab242334b)] - **src**: improve parsing of boolean options (Edy Silva) [#58039](https://github.com/nodejs/node/pull/58039) +- \[[`a5df778150`](https://github.com/nodejs/node/commit/a5df778150)] - **src,lib**: obtain sourceURL in magic comments from V8 (Chengzhong Wu) [#58389](https://github.com/nodejs/node/pull/58389) +- \[[`bd6743b434`](https://github.com/nodejs/node/commit/bd6743b434)] - **src,permission**: implicit allow-fs-read to app entrypoint (Rafael Gonzaga) [#58579](https://github.com/nodejs/node/pull/58579) +- \[[`5bd99e4a4d`](https://github.com/nodejs/node/commit/5bd99e4a4d)] - **stream**: making DecompressionStream spec compilent for trailing junk (0hm☘️) [#58316](https://github.com/nodejs/node/pull/58316) +- \[[`6582b19488`](https://github.com/nodejs/node/commit/6582b19488)] - **test**: reduce flakiness in test-heapdump-http2 (Joyee Cheung) [#58148](https://github.com/nodejs/node/pull/58148) +- \[[`0f6a262744`](https://github.com/nodejs/node/commit/0f6a262744)] - **test**: improve flakiness detection on stack corruption tests (Darshan Sen) [#58601](https://github.com/nodejs/node/pull/58601) +- \[[`983affaea2`](https://github.com/nodejs/node/commit/983affaea2)] - **test**: mark timeouts & flaky test as flaky on IBM i (Abdirahim Musse) [#58583](https://github.com/nodejs/node/pull/58583) +- \[[`3603362b6f`](https://github.com/nodejs/node/commit/3603362b6f)] - **test**: rewrite test-child-process-spawn-args (Michaël Zasso) [#58546](https://github.com/nodejs/node/pull/58546) +- \[[`93900b0c17`](https://github.com/nodejs/node/commit/93900b0c17)] - **test**: make sqlite-database-sync tests work with system sqlite (Jelle Licht) [#58507](https://github.com/nodejs/node/pull/58507) +- \[[`7d505f4185`](https://github.com/nodejs/node/commit/7d505f4185)] - **test**: force slow JSON.stringify path for overflow (Shelley Vohr) [#58181](https://github.com/nodejs/node/pull/58181) +- \[[`2e8570b8f9`](https://github.com/nodejs/node/commit/2e8570b8f9)] - **test**: account for truthy signal in flaky async_hooks tests (Darshan Sen) [#58478](https://github.com/nodejs/node/pull/58478) +- \[[`1f1e194c0f`](https://github.com/nodejs/node/commit/1f1e194c0f)] - **test**: update WPT for WebCryptoAPI to 591c95ce61 (Node.js GitHub Bot) [#58176](https://github.com/nodejs/node/pull/58176) +- \[[`d822632d91`](https://github.com/nodejs/node/commit/d822632d91)] - **test**: remove --no-warnings flag (Tobias Nießen) [#58424](https://github.com/nodejs/node/pull/58424) +- \[[`01377713d7`](https://github.com/nodejs/node/commit/01377713d7)] - **test**: add tests ensuring worker threads cannot access internals (Joe) [#58332](https://github.com/nodejs/node/pull/58332) +- \[[`99a20902fc`](https://github.com/nodejs/node/commit/99a20902fc)] - **test**: leverage process.features.openssl_is_boringssl in test (Shelley Vohr) [#58421](https://github.com/nodejs/node/pull/58421) +- \[[`b3e0cf1b15`](https://github.com/nodejs/node/commit/b3e0cf1b15)] - **test**: fix test-buffer-tostring-range on allocation failure (Joyee Cheung) [#58416](https://github.com/nodejs/node/pull/58416) +- \[[`1d4b3451c5`](https://github.com/nodejs/node/commit/1d4b3451c5)] - **test**: skip in test-buffer-tostring-rangeerror on allocation failure (Joyee Cheung) [#58415](https://github.com/nodejs/node/pull/58415) +- \[[`612c393c71`](https://github.com/nodejs/node/commit/612c393c71)] - **test**: fix missing edge case in test-blob-slice-with-large-size (Joyee Cheung) [#58414](https://github.com/nodejs/node/pull/58414) +- \[[`b11b9cdad8`](https://github.com/nodejs/node/commit/b11b9cdad8)] - **test**: make crypto tests work with BoringSSL (Shelley Vohr) [#58117](https://github.com/nodejs/node/pull/58117) +- \[[`99711ee548`](https://github.com/nodejs/node/commit/99711ee548)] - **test**: test reordering of setAAD and setAuthTag (Tobias Nießen) [#58396](https://github.com/nodejs/node/pull/58396) +- \[[`828aaaa3f7`](https://github.com/nodejs/node/commit/828aaaa3f7)] - **test**: switch from deprecated `optparse` to `argparse` (Aviv Keller) [#58224](https://github.com/nodejs/node/pull/58224) +- \[[`9af305408e`](https://github.com/nodejs/node/commit/9af305408e)] - **test**: do not skip OCB decryption in FIPS mode (Tobias Nießen) [#58382](https://github.com/nodejs/node/pull/58382) +- \[[`9527c876bf`](https://github.com/nodejs/node/commit/9527c876bf)] - **test**: show more information in test-http2-debug upon failure (Joyee Cheung) [#58391](https://github.com/nodejs/node/pull/58391) +- \[[`9be0601112`](https://github.com/nodejs/node/commit/9be0601112)] - **test**: remove loop over single element (Tobias Nießen) [#58368](https://github.com/nodejs/node/pull/58368) +- \[[`40a03d3d14`](https://github.com/nodejs/node/commit/40a03d3d14)] - **test**: add chacha20-poly1305 to auth tag order test (Tobias Nießen) [#58367](https://github.com/nodejs/node/pull/58367) +- \[[`cccb15df7e`](https://github.com/nodejs/node/commit/cccb15df7e)] - **test**: skip wasm-allocation tests for pointer compression builds (Joyee Cheung) [#58171](https://github.com/nodejs/node/pull/58171) +- \[[`f18041ae8e`](https://github.com/nodejs/node/commit/f18041ae8e)] - **test**: remove references to create(De|C)ipher (Tobias Nießen) [#58363](https://github.com/nodejs/node/pull/58363) +- \[[`ca8d66c1fc`](https://github.com/nodejs/node/commit/ca8d66c1fc)] - **test**: remove unnecessary `console.log` from test-repl-null-thrown (Dario Piotrowicz) [#58281](https://github.com/nodejs/node/pull/58281) +- \[[`455372023d`](https://github.com/nodejs/node/commit/455372023d)] - **test**: allow `tmpDir.path` to be modified (Aviv Keller) [#58173](https://github.com/nodejs/node/pull/58173) +- \[[`1f1fab60c7`](https://github.com/nodejs/node/commit/1f1fab60c7)] - **test**: fix executable flags (Livia Medeiros) [#58250](https://github.com/nodejs/node/pull/58250) +- \[[`8bafc0f061`](https://github.com/nodejs/node/commit/8bafc0f061)] - **test**: deflake test-http2-client-socket-destroy (Luigi Pinca) [#58212](https://github.com/nodejs/node/pull/58212) +- \[[`97aac9f17a`](https://github.com/nodejs/node/commit/97aac9f17a)] - **test**: skip test-buffer-tostring-rangeerror when low on memory (Ruben Bridgewater) [#58142](https://github.com/nodejs/node/pull/58142) +- \[[`2896760da1`](https://github.com/nodejs/node/commit/2896760da1)] - **test**: mark `test-http2-debug` as flaky on LinuxONE (Richard Lau) [#58494](https://github.com/nodejs/node/pull/58494) +- \[[`7327d14780`](https://github.com/nodejs/node/commit/7327d14780)] - **test**: reduce iteration count in test-child-process-stdout-flush-exit (Antoine du Hamel) [#58273](https://github.com/nodejs/node/pull/58273) +- \[[`1bd7a2edf9`](https://github.com/nodejs/node/commit/1bd7a2edf9)] - **test_runner**: support mocking json modules (Jacob Smith) [#58007](https://github.com/nodejs/node/pull/58007) +- \[[`a3877c53b1`](https://github.com/nodejs/node/commit/a3877c53b1)] - **test_runner**: add level parameter to reporter.diagnostic (Jacopo Martinelli) [#57923](https://github.com/nodejs/node/pull/57923) +- \[[`253772c2d9`](https://github.com/nodejs/node/commit/253772c2d9)] - **tools**: bump the eslint group in `/tools/eslint` with 6 updates (dependabot\[bot]) [#58549](https://github.com/nodejs/node/pull/58549) +- \[[`b7feda97b0`](https://github.com/nodejs/node/commit/b7feda97b0)] - **tools**: disable failing coverage jobs (Antoine du Hamel) [#58770](https://github.com/nodejs/node/pull/58770) +- \[[`8a47096093`](https://github.com/nodejs/node/commit/8a47096093)] - **tools**: ignore `deps/` and `benchmark/` for CodeQL (Rafael Gonzaga) [#58254](https://github.com/nodejs/node/pull/58254) +- \[[`70be158126`](https://github.com/nodejs/node/commit/70be158126)] - **tools**: add read permission to workflows that read contents (Antoine du Hamel) [#58255](https://github.com/nodejs/node/pull/58255) +- \[[`e4373be766`](https://github.com/nodejs/node/commit/e4373be766)] - **tools**: exclude deps/v8/tools from CodeQL scans (Rich Trott) [#58132](https://github.com/nodejs/node/pull/58132) +- \[[`23ceb364d4`](https://github.com/nodejs/node/commit/23ceb364d4)] - **tools**: bump the eslint group in /tools/eslint with 6 updates (dependabot\[bot]) [#58105](https://github.com/nodejs/node/pull/58105) +- \[[`5b6ced3255`](https://github.com/nodejs/node/commit/5b6ced3255)] - **tty**: improve color terminal color detection (Ruben Bridgewater) [#58146](https://github.com/nodejs/node/pull/58146) +- \[[`7be70979c6`](https://github.com/nodejs/node/commit/7be70979c6)] - **tty**: use terminal VT mode on Windows (Anna Henningsen) [#58358](https://github.com/nodejs/node/pull/58358) +- \[[`b7d7ffe793`](https://github.com/nodejs/node/commit/b7d7ffe793)] - **typings**: add inspector internalBinding typing (Shima Ryuhei) [#58492](https://github.com/nodejs/node/pull/58492) +- \[[`0056d1a2e2`](https://github.com/nodejs/node/commit/0056d1a2e2)] - **typings**: remove no longer valid `FixedSizeBlobCopyJob` type (Dario Piotrowicz) [#58305](https://github.com/nodejs/node/pull/58305) +- \[[`581c0738f9`](https://github.com/nodejs/node/commit/581c0738f9)] - **typings**: remove no longer valid `revokeDataObject` type (Dario Piotrowicz) [#58305](https://github.com/nodejs/node/pull/58305) +- \[[`1db1c870f0`](https://github.com/nodejs/node/commit/1db1c870f0)] - **typings**: add missing typings for `TypedArray` (Jason Zhang) [#58248](https://github.com/nodejs/node/pull/58248) +- \[[`6d3f43c9a6`](https://github.com/nodejs/node/commit/6d3f43c9a6)] - **url**: improve performance of the format function (Giovanni Bucci) [#57099](https://github.com/nodejs/node/pull/57099) +- \[[`54288bdb42`](https://github.com/nodejs/node/commit/54288bdb42)] - **(SEMVER-MINOR)** **util**: add 'none' style to styleText (James M Snell) [#58437](https://github.com/nodejs/node/pull/58437) +- \[[`6af5358f9c`](https://github.com/nodejs/node/commit/6af5358f9c)] - **util**: add internal `assignFunctionName()` function (LiviaMedeiros) [#57916](https://github.com/nodejs/node/pull/57916) +- \[[`9f2e5aad38`](https://github.com/nodejs/node/commit/9f2e5aad38)] - **vm**: import call should return a promise in the current context (Chengzhong Wu) [#58309](https://github.com/nodejs/node/pull/58309) +- \[[`92304a5e62`](https://github.com/nodejs/node/commit/92304a5e62)] - **watch**: fix watch args not being properly filtered (Dario Piotrowicz) [#58279](https://github.com/nodejs/node/pull/58279) +- \[[`539df8e98d`](https://github.com/nodejs/node/commit/539df8e98d)] - **win,tools**: use Azure Trusted Signing (Stefan Stojanovic) [#58502](https://github.com/nodejs/node/pull/58502) +- \[[`ef66357637`](https://github.com/nodejs/node/commit/ef66357637)] - **worker**: give names to `MessagePort` functions (Livia Medeiros) [#58307](https://github.com/nodejs/node/pull/58307) +- \[[`b3cd847528`](https://github.com/nodejs/node/commit/b3cd847528)] - **zlib**: remove mentions of unexposed Z_TREES constant (Jimmy Leung) [#58371](https://github.com/nodejs/node/pull/58371) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.17.0/node-v22.17.0-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.17.0/node-v22.17.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.17.0/node-v22.17.0-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.17.0/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.17.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.17.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.17.0/node-v22.17.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.17.0/node-v22.17.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.17.0/node-v22.17.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.17.0/node-v22.17.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.17.0/node-v22.17.0.tar.gz \ +Other release files: https://nodejs.org/dist/v22.17.0/ \ +Documentation: https://nodejs.org/docs/v22.17.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +2af6ce32705926ad81e3873917ed67e9298665be4a1b57eed359e485e79b08d7 node-v22.17.0-aix-ppc64.tar.gz +ee4c124b6539864189db92204adab71569e2f3f1b51c7349472dce47715d9c3b node-v22.17.0-arm64.msi +615dda58b5fb41fad2be43940b6398ca56554cbe05800953afadc724729cb09e node-v22.17.0-darwin-arm64.tar.gz +cc9cc294eaf782dd93c8c51f460da610cc35753c6a9947411731524d16e97914 node-v22.17.0-darwin-arm64.tar.xz +c39c8ec3cdadedfcc75de0cb3305df95ae2aecebc5db8d68a9b67bd74616d2ad node-v22.17.0-darwin-x64.tar.gz +f79de1f64df4ac68493a344bb5ab7d289d0275271e87b543d1278392c9de778a node-v22.17.0-darwin-x64.tar.xz +4aa859c413e6c8550015be16b0a55df85358a70e4ac1f04ad23ee42e8566c13c node-v22.17.0-headers.tar.gz +46238c1a2d5e8a3807741683aaf8e2a854affb700f6ae5106e073b9fb1bccccb node-v22.17.0-headers.tar.xz +3e99df8b01b27dc8b334a2a30d1cd500442b3b0877d217b308fd61a9ccfc33d4 node-v22.17.0-linux-arm64.tar.gz +140aee84be6774f5fb3f404be72adbe8420b523f824de82daeb5ab218dab7b18 node-v22.17.0-linux-arm64.tar.xz +ce120efe921de3eaaba2394edaacfab3e61376a56199cb93fc7e9bf0b3f14a16 node-v22.17.0-linux-armv7l.tar.gz +28613fc5a6b1427910c2b1352997fd8ffb76d3c43c23685e812acb9f89b42b6e node-v22.17.0-linux-armv7l.tar.xz +c3a49ac3d56404290a66afdd9b149d87201fa1dc52740c21cf70b182cf8dfc4c node-v22.17.0-linux-ppc64le.tar.gz +3670b7a8517b4abd0d3069c24117a7072fd2bf156e62315d9a43999b5ba0f318 node-v22.17.0-linux-ppc64le.tar.xz +394f839554bfd8c7e8db006a4de7604553bc478c26e6082749731f6d612c6f78 node-v22.17.0-linux-s390x.tar.gz +a0af149f0f17fb757f384ec71e101af2967063930b445565c846b078931da369 node-v22.17.0-linux-s390x.tar.xz +0fa01328a0f3d10800623f7107fbcd654a60ec178fab1ef5b9779e94e0419e1a node-v22.17.0-linux-x64.tar.gz +325c0f1261e0c61bcae369a1274028e9cfb7ab7949c05512c5b1e630f7e80e12 node-v22.17.0-linux-x64.tar.xz +38a183b193b25a7c42b3ce40f11694ba12976ad98fd93cdc0990ed7d77f30c1a node-v22.17.0-win-arm64.7z +78355dc9ca117bb71d3f081e4b1b281855e2b134f3939bb0ca314f7567b0e621 node-v22.17.0-win-arm64.zip +77f58f65389a84b1243e58fc5af1bee1ceda57a029e22644cac1c1d3117aa826 node-v22.17.0-win-x64.7z +721ab118a3aac8584348b132767eadf51379e0616f0db802cc1e66d7f0d98f85 node-v22.17.0-win-x64.zip +4f9aa2d620c4ccd90ca895644807e8114ab8d28919271f105434669d4f2c671e node-v22.17.0-win-x86.7z +7817aab24c310a52f12063a8c1748c80c7bd02666f4869c090cbc4edefa24b62 node-v22.17.0-win-x86.zip +896ff4a1aff30468e93e77a8884bb1aec466df7febf08daaa1d22dd5e4b14756 node-v22.17.0-x64.msi +10f125469f972aa73ef9bd5ec5d5e017b3f71aa4cbc73c1eb1a0cd6a9de47884 node-v22.17.0-x86.msi +9fc5fe75e222c37e5581dcdab0d872bbabd5b671353a3ad1846783fe07042845 node-v22.17.0.pkg +f8bf095ff559033edf04108fb1f14f72e2be337c609d4f83e8af1e299af7f4b4 node-v22.17.0.tar.gz +7a3ef2aedb905ea7926e5209157266e2376a5db619d9ac0cba3c967f6f5db4f9 node-v22.17.0.tar.xz +b06cf160eca7522dc795b437289ebfcbd9fb309d6049a157120c3d1fd5835f55 win-arm64/node.exe +55e76551dd4efcade32b9112346cc39e9e4b9e960337457424cc544c982d1dde win-arm64/node.lib +1cf5b579ff14fea0397dc340541fd055e32658f70a6426f2befbbdab35ab1c3c win-arm64/node_pdb.7z +2e2354dcb8a0f132a32405849ed180cc09104dbb27a5468a9b4dd81a46aa938c win-arm64/node_pdb.zip +39d45b5933f339d3ebdebd76474893dab5d7da1038920f65cf5bbcf0f20f3636 win-x64/node.exe +4b439e66fc4644fe9ff2da51b950020679f1f14b317c06045f61e9e979fc514f win-x64/node.lib +ded15db5d44215fcedf9d6d579551e5c98ca697d2862a17d95a5a44cb5159051 win-x64/node_pdb.7z +456b3abf537f65f5abcc53fc47bd5624408374f2309627c09b6a3b065141b8b5 win-x64/node_pdb.zip +fbc2e68bb7b1efd24769ebdf914a98dd2752f5dfd459526a197259c9ddbbc60f win-x86/node.exe +2660035ca8007a5e1274e6a8cf04d70c1c0f3240a053da4bae297bb428d13f41 win-x86/node.lib +55c6a20d88c8fe6cf76237c86824267e53f01d05f66a81c6c909aa4593380d24 win-x86/node_pdb.7z +98a83abad92055eb54d53df2219575bc56bf41169c2acb28cfca9874852c861f win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmhbPvgACgkQIdkA/9sj +N1ae8g//WiPGUjbPxt7HXpSVjscVuCieJdQf5aVmuxPtwDGwZvwidZb+EOVfOevE +NU+in/tdxz/x3QxT3qd+qVKlPNcUlxUEYzYPUdXRhzqV4gZzg4/Kb3VXBIvfnYh9 +QPgR4D9wwiNMaZ8Fn1dIx+Th6EKkOx5QD8igJcRiFVGnaj1oukaXPr4OHg5vTSE5 +reoMjGiOd4t/XoaIDAzYaTg3YH/k3EunaP8cI0IafMz7MwscBNXujKhdBuPBjXVd +gF3GhxJEAbUPQp6SOd/dr5lA3PqbejpX3vZKbj8tW2tb9EwFQ6MnAy4UzbwNVpck +B2REBe0enSEdg6dMOVfaGBJB/mXiF2QRzhv6J2nLCeIX5ZU5N41T5yjmwo0jf+H0 +jRHdeR2Pgy3TPO6US0/W1T4YtBMMyV2QuZLDMI8YQ/8cUcj8x//r33FEIlrvfp9G +nt0EICURZh4ZccXiTbqUdfysfx3k9qenoNM6gXqmIsxeP824woRWF29kRmUkj4FO +aaJOIdODMUNCi4cPucwATbkRWRwEhlFc0BYXcSMfaaPaWdSEn2WW3McU7ry0PtRT +o/+EHbFfv7EV7BBAe347+8EG6/mLErPvziWdRKk/t3avv00SRlZkpGwWxB/XpW4K +XF7G1sW4qPTzTet9Tv7Q/ef3MgaSdfeDJtrrAT7NYaRPYQqvRVg= +=iP4d +-----END PGP SIGNATURE----- +``` From 49d65845ae6ff8d53a36f08f2f6353edc12d9b2f Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Thu, 26 Jun 2025 08:07:52 -0400 Subject: [PATCH 0573/1385] fix(AlertBox): override code styles in a markdown context (#7890) * fix(AlertBox): override code styles in a markdown context * fixup! fix(AlertBox): override code styles in a markdown context --- .../Common/AlertBox/index.module.css | 7 ++++++ .../Common/AlertBox/index.stories.tsx | 23 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/packages/ui-components/Common/AlertBox/index.module.css b/packages/ui-components/Common/AlertBox/index.module.css index 3c6cddc2bf0ed..6aa272d8ff19b 100644 --- a/packages/ui-components/Common/AlertBox/index.module.css +++ b/packages/ui-components/Common/AlertBox/index.module.css @@ -73,4 +73,11 @@ @apply bg-danger-700; } } + + code { + /* Ignore the styles from `markdown.css` */ + all: unset; + + @apply font-ibm-plex-mono; + } } diff --git a/packages/ui-components/Common/AlertBox/index.stories.tsx b/packages/ui-components/Common/AlertBox/index.stories.tsx index d26a407bdacc3..d900597de6e2f 100644 --- a/packages/ui-components/Common/AlertBox/index.stories.tsx +++ b/packages/ui-components/Common/AlertBox/index.stories.tsx @@ -6,6 +6,12 @@ import AlertBox from '#ui/Common/AlertBox'; type Story = StoryObj<typeof AlertBox>; type Meta = MetaObj<typeof AlertBox>; +const withMain = (args: React.ComponentProps<typeof AlertBox>) => ( + <main> + <AlertBox {...args} /> + </main> +); + export const Info: Story = { args: { level: 'info', @@ -46,6 +52,23 @@ export const Danger: Story = { }, }; +export const InMarkdown: Story = { + args: { + level: 'danger', + title: '0', + children: ( + <> + In a markdown component, <code>Code renders correctly,</code>{' '} + <a href="#"> + <code>even when in a link</code> + </a> + </> + ), + size: 'default', + }, + render: withMain, +}; + export const WithIcon: Story = { args: { level: 'info', From ba2021e0ad7a5f44bd90d56ef603375918272def Mon Sep 17 00:00:00 2001 From: Sajad Torkamani <sajadtorkamani1@gmail.com> Date: Thu, 26 Jun 2025 19:20:27 +0100 Subject: [PATCH 0574/1385] fix(learn): add missing word (#7897) docs: improve wording Signed-off-by: Sajad Torkamani <sajadtorkamani1@gmail.com> --- apps/site/pages/en/learn/getting-started/debugging.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/getting-started/debugging.md b/apps/site/pages/en/learn/getting-started/debugging.md index e4603e03606be..6b9504dca8945 100644 --- a/apps/site/pages/en/learn/getting-started/debugging.md +++ b/apps/site/pages/en/learn/getting-started/debugging.md @@ -38,7 +38,7 @@ restriction and will be able to run arbitrary code. By default `node --inspect` binds to 127.0.0.1. You explicitly need to provide a public IP address or 0.0.0.0, etc., if you intend to allow external connections to the debugger. Doing so may expose you to a potentially significant security -threat. We suggest you ensure appropriate firewalls and access controls in place +threat. We suggest you ensure appropriate firewalls and access controls are in place to prevent a security exposure. See the section on '[Enabling remote debugging scenarios](#enabling-remote-debugging-scenarios)' on some advice on how From 8762679491f1fcf7658236765795164aabcc3714 Mon Sep 17 00:00:00 2001 From: Carl Vitullo <vcarl@users.noreply.github.com> Date: Fri, 27 Jun 2025 08:53:14 -0400 Subject: [PATCH 0575/1385] feat(blog): pride (#7888) * Add blog post for Pride Month 2025 Signed-off-by: Carl Vitullo <vcarl@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Carl Vitullo <vcarl@users.noreply.github.com> * Add footer * Node.js Project, not OpenJS Foundation Signed-off-by: Carl Vitullo <vcarl@users.noreply.github.com> * Update 2025-pride.md Signed-off-by: Aviv Keller <me@aviv.sh> * Update apps/site/pages/en/blog/community/2025-pride.md Co-authored-by: Darshan Sen <raisinten@gmail.com> Signed-off-by: Aviv Keller <me@aviv.sh> * Update apps/site/pages/en/blog/community/2025-pride.md Co-authored-by: Darshan Sen <raisinten@gmail.com> Signed-off-by: Aviv Keller <me@aviv.sh> --------- Signed-off-by: Carl Vitullo <vcarl@users.noreply.github.com> Signed-off-by: Aviv Keller <me@aviv.sh> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Aviv Keller <me@aviv.sh> Co-authored-by: Darshan Sen <raisinten@gmail.com> --- .../pages/en/blog/community/2025-pride.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 apps/site/pages/en/blog/community/2025-pride.md diff --git a/apps/site/pages/en/blog/community/2025-pride.md b/apps/site/pages/en/blog/community/2025-pride.md new file mode 100644 index 0000000000000..543ac25be42bc --- /dev/null +++ b/apps/site/pages/en/blog/community/2025-pride.md @@ -0,0 +1,65 @@ +--- +date: '2025-06-27T09:00:00.000Z' +category: community +title: Open sourced identity +layout: blog-post +author: Carl Vitullo +--- + +# Open sourced identity + +This is a post about Pride Month 🌈. + +Do you remember when you first started writing code? You surely came across well-established patterns, groupings of tools that had clear labels. Procedural logic, OOP, LAMP, MERN, MVC, FP… There are infinite variations, so your journey may not look like mine. Perhaps you identified as a MERN developer, a Rails developer, a JS developer, a Minecraft modder. You learned, and incorporated what you learned into how you thought about yourself. + +The scope of projects you worked on expanded, and you started needing to glue together tools to get the behaviors you wanted, the performance you needed. You dove deeper into your chosen stack, moved off your one-size-fits-all framework, and ripped apart your monolith into smaller, fit-to-purpose pieces. You read a blog post that expands your understanding, a conference speaker teaches you how to make use of a new pattern, a peer shows you a new technique. + +Your expertise grew, and you realized that the labels you felt so comfortable with no longer adequately describe who you are. You rewrote a class using functional patterns, and found it a clearer expression of your intent. You tried a different language, and found it better able to capture the vision in your mind. + +I could rattle off a litany of examples of seismic shifts where new ideas shook what we believed to be true; Rails' influence on Ruby, Docker's influence on executables, CoffeeScript's influence on JavaScript, Electron's influence on desktop apps, Kubernetes' influence on systems architecture, React's influence on web development, the Serverless pattern's influence on http request handling. The only constant is change. + +--- + +Queer humans experience this for other parts of their identity. When we were young, the rules for many of us were simple. Boys like girls, and vice-versa. A mommy meets a daddy and if they love each other enough, baby comes! + +We grow older, and a boy finds they can't stop staring at how another boy moves. A girl touches her friend and starts burning inside. A young woman finds that dresses make her preferred activities more difficult, that her breasts feel malignant. We learned labels for these feelings: lesbian, gay, bisexual, transgender — LGBT. + +These labels are hard-won knowledge dating back decades, centuries, millenia. Regardless of your moral opinion on the matter, there are indisputable references to queer identity in literature, media, culture, religion, spirituality, dating back thousands of years. Its presence is inarguable. + +Even with this cultural legacy, some of us have learned through our lives that these labels too are insufficient. Like open source, we take what was known and build on it. New labels are created and spread through word of mouth, through writing and videos, through intimate conversations with our friends and partners. An academic publishes survey results; a TikTok creator's video resonates; a psychologist writes a bestselling book. As advancements in open source inform our profession, evolving language around queer identity informs our self image; indistinct visions gain clarity. + +--- + +Some may be exposed to these concepts early and encouraged to try on different labels, to discard what doesn't fit. Some take decades to realize that they can explore these labels for themselves. Understanding may come in a flash: a comment made by a peer exposes a gulf in experience; a moment of vulnerability is met with confusion and fear; a dream reveals what our conscious mind has suppressed. We discover a difference between our experience and others', and that we need more words to describe how. + +Some are surrounded by friends and families who know that this is a normal human experience, and encourage them to define themselves as clearly as they can. Others live in spaces that believe those rules we learned as children are fixed, immutable, right, _moral_ — that deviations from those rules are unhealthy, dangerous, and hateful; a rejection of goodness. + +Some know their truth and choose to wear a mask to remain accepted; some have buried their truth so deeply that they believe that their mask is all that they are. + +Sooner or later, though, the mask chafes. It grows uncomfortable, rubs raw. The best of us learn how to find where the boundary between their mask and their truth is. Some double down on their mask, rejecting their truth so they can pretend it's not there. It is. + +June is recognized as Pride Month for those of us who have found our truths, or are working to find them. I'm proud of who I am, and that has not always been true. I'll leave you with the most beautiful description I know of why we have Pride, from Laurie Voss, cofounder of npm: + +> [Laurie Voss (@seldo) June 23, 2018](https://x.com/seldo/status/1010401548998885376/) +> +> Psst. Hey, you. You've got these confusing thoughts sometimes. You've never acted on them. You're not even sure they're real, or serious enough to be worth doing anything about. You're not ready to give yourself a label yet, or even sure what label it would be. +> +> Happy Pride. +> +> You think nobody knows. You're not even sure _you_ know. You've never told anybody. +> +> We see you. We can tell. We knew before you did. But we know you're not ready. When you are, we'll be here. Until then, we love you, and stay safe. Pride is for you; it's _especially_ for you. +> +> Pride is for you. +> +> You're the reason for the bright colors and loud music and glitter. +> +> You don't have to join in. Be however you want to be. But because you're far away right now. We need you to be sure you can see us, and hear us. +> +> We need to be sure you know you're not alone. + +Happy Pride. + +As part of Pride Month, the Node.js Project is launching a series of blog posts highlighting the voices and work of LGBTQ technologists. If you identify as part of the community and want to share your journey, your projects, or how your identity has shaped your perspective and contributions, we’d love to hear from you, and we invite you to [submit a PR](https://github.com/nodejs/nodejs.org/tree/main/apps/site/pages/en/blog/community) with your answer to the prompt, "how did you come to understand who you are, and what contributions have you made to open source?" + +_[Carl Vitullo](https://vcarl.com/) (he/they) is a volunteer comunity leader for [the official Node.js Discord server](https://discord.gg/vUsrbjd)._ From 3615c30ea9ff1f33ba6eced3f9e1990d91fe8ced Mon Sep 17 00:00:00 2001 From: Matt Cowley <me@mattcowley.co.uk> Date: Fri, 27 Jun 2025 14:23:34 +0100 Subject: [PATCH 0576/1385] fix(blog): use redirect for Discord link (#7901) * fix(blog): use redirect for Discord link * fix(blog): community sp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Matt Cowley <me@mattcowley.co.uk> --------- Signed-off-by: Matt Cowley <me@mattcowley.co.uk> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- apps/site/pages/en/blog/community/2025-pride.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/blog/community/2025-pride.md b/apps/site/pages/en/blog/community/2025-pride.md index 543ac25be42bc..71d091bb43810 100644 --- a/apps/site/pages/en/blog/community/2025-pride.md +++ b/apps/site/pages/en/blog/community/2025-pride.md @@ -62,4 +62,4 @@ Happy Pride. As part of Pride Month, the Node.js Project is launching a series of blog posts highlighting the voices and work of LGBTQ technologists. If you identify as part of the community and want to share your journey, your projects, or how your identity has shaped your perspective and contributions, we’d love to hear from you, and we invite you to [submit a PR](https://github.com/nodejs/nodejs.org/tree/main/apps/site/pages/en/blog/community) with your answer to the prompt, "how did you come to understand who you are, and what contributions have you made to open source?" -_[Carl Vitullo](https://vcarl.com/) (he/they) is a volunteer comunity leader for [the official Node.js Discord server](https://discord.gg/vUsrbjd)._ +_[Carl Vitullo](https://vcarl.com/) (he/they) is a volunteer community leader for [the official Node.js Discord server](/discord)._ From 6dcda98c94808919558c488d45925365b6558715 Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 27 Jun 2025 14:35:25 -0400 Subject: [PATCH 0577/1385] feat(shiki): use wasm engine (#7896) * feat(shiki): use wasm engine * fixup! feat(shiki): use wasm engine --- packages/rehype-shiki/eslint.config.js | 8 ++++++-- packages/rehype-shiki/package.json | 1 + packages/rehype-shiki/src/highlighter.mjs | 2 -- packages/rehype-shiki/src/index.mjs | 17 +++++++++++++++++ packages/rehype-shiki/src/minimal.mjs | 4 ++++ pnpm-lock.yaml | 19 +++++++++++++++++++ 6 files changed, 47 insertions(+), 4 deletions(-) diff --git a/packages/rehype-shiki/eslint.config.js b/packages/rehype-shiki/eslint.config.js index a6d556fefa8f3..86d9d9da769ce 100644 --- a/packages/rehype-shiki/eslint.config.js +++ b/packages/rehype-shiki/eslint.config.js @@ -5,8 +5,12 @@ export default [ { languageOptions: { parserOptions: { - // Allow nullish syntax (i.e. "?." or "??") - ecmaVersion: 2020, + // Allow nullish syntax (i.e. "?." or "??"), + // and top-level await + ecmaVersion: 'latest', + }, + globals: { + globalThis: 'readonly', }, }, rules: { diff --git a/packages/rehype-shiki/package.json b/packages/rehype-shiki/package.json index 2d7207280e003..0a419501e7463 100644 --- a/packages/rehype-shiki/package.json +++ b/packages/rehype-shiki/package.json @@ -15,6 +15,7 @@ "dependencies": { "@shikijs/core": "^3.4.2", "@shikijs/engine-javascript": "^3.4.2", + "@shikijs/engine-oniguruma": "^3.7.0", "classnames": "~2.5.1", "hast-util-to-string": "^3.0.1", "shiki": "~3.4.2", diff --git a/packages/rehype-shiki/src/highlighter.mjs b/packages/rehype-shiki/src/highlighter.mjs index 9f37e26ae179e..b295d366988b8 100644 --- a/packages/rehype-shiki/src/highlighter.mjs +++ b/packages/rehype-shiki/src/highlighter.mjs @@ -1,5 +1,4 @@ import { createHighlighterCoreSync } from '@shikijs/core'; -import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript'; import shikiNordTheme from 'shiki/themes/nord.mjs'; const DEFAULT_THEME = { @@ -17,7 +16,6 @@ const DEFAULT_THEME = { export const createHighlighter = options => { const shiki = createHighlighterCoreSync({ themes: [DEFAULT_THEME], - engine: createJavaScriptRegexEngine(), ...options, }); diff --git a/packages/rehype-shiki/src/index.mjs b/packages/rehype-shiki/src/index.mjs index 1a7e144a46719..4b852a9e252d2 100644 --- a/packages/rehype-shiki/src/index.mjs +++ b/packages/rehype-shiki/src/index.mjs @@ -1,3 +1,5 @@ +import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript'; +import { createOnigurumaEngine } from '@shikijs/engine-oniguruma'; import cLanguage from 'shiki/langs/c.mjs'; import coffeeScriptLanguage from 'shiki/langs/coffeescript.mjs'; import cPlusPlusLanguage from 'shiki/langs/cpp.mjs'; @@ -17,6 +19,21 @@ import { createHighlighter } from './highlighter.mjs'; const { shiki, getLanguageDisplayName, highlightToHast, highlightToHtml } = createHighlighter({ + // We use the faster WASM engine on the server instead of the web-optimized version. + // + // Currently we fall back to the JavaScript RegEx engine + // on Cloudflare workers because `shiki/wasm` requires loading via + // `WebAssembly.instantiate` with custom imports, which Cloudflare doesn't support + // for security reasons. + // + // TODO(@avivkeller): When available, use `OPEN_NEXT_CLOUDFLARE` environmen + // variable for detection instead of current method, which will enable better + // tree-shaking. + // Reference: https://github.com/nodejs/nodejs.org/pull/7896#issuecomment-3009480615 + engine: + 'Cloudflare' in globalThis + ? createJavaScriptRegexEngine() + : await createOnigurumaEngine(import('shiki/wasm')), langs: [ ...cLanguage, ...coffeeScriptLanguage, diff --git a/packages/rehype-shiki/src/minimal.mjs b/packages/rehype-shiki/src/minimal.mjs index cdbb5c8f2ca9c..5fde25e944a30 100644 --- a/packages/rehype-shiki/src/minimal.mjs +++ b/packages/rehype-shiki/src/minimal.mjs @@ -1,3 +1,4 @@ +import { createJavaScriptRegexEngine } from '@shikijs/engine-javascript'; import powershellLanguage from 'shiki/langs/powershell.mjs'; import shellScriptLanguage from 'shiki/langs/shellscript.mjs'; @@ -5,6 +6,9 @@ import { createHighlighter } from './highlighter.mjs'; const { shiki, getLanguageDisplayName, highlightToHast, highlightToHtml } = createHighlighter({ + // For the minimal (web) Shiki, we want to use the simpler, + // JavaScript based engine. + engine: createJavaScriptRegexEngine(), langs: [...powershellLanguage, ...shellScriptLanguage], }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ceec0ef34f857..eb25eaa266a09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -310,6 +310,9 @@ importers: '@shikijs/engine-javascript': specifier: ^3.4.2 version: 3.4.2 + '@shikijs/engine-oniguruma': + specifier: ^3.7.0 + version: 3.7.0 classnames: specifier: ~2.5.1 version: 2.5.1 @@ -2548,6 +2551,9 @@ packages: '@shikijs/engine-oniguruma@3.4.2': resolution: {integrity: sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==} + '@shikijs/engine-oniguruma@3.7.0': + resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==} + '@shikijs/langs@1.29.2': resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} @@ -2566,6 +2572,9 @@ packages: '@shikijs/types@3.4.2': resolution: {integrity: sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==} + '@shikijs/types@3.7.0': + resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==} + '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -10476,6 +10485,11 @@ snapshots: '@shikijs/types': 3.4.2 '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/engine-oniguruma@3.7.0': + dependencies: + '@shikijs/types': 3.7.0 + '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/langs@1.29.2': dependencies: '@shikijs/types': 1.29.2 @@ -10502,6 +10516,11 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + '@shikijs/types@3.7.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + '@shikijs/vscode-textmate@10.0.2': {} '@smithy/abort-controller@2.2.0': From 7d8b9c58eb79bcc815f9f0e0b73a6435a45cdc07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= <arauujogui@gmail.com> Date: Fri, 27 Jun 2025 17:19:51 -0300 Subject: [PATCH 0578/1385] fix: svg props casing (#7902) --- packages/ui-components/Icons/Logos/Nodejs.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/ui-components/Icons/Logos/Nodejs.tsx b/packages/ui-components/Icons/Logos/Nodejs.tsx index d6129d77d73a5..820c604fc0963 100644 --- a/packages/ui-components/Icons/Logos/Nodejs.tsx +++ b/packages/ui-components/Icons/Logos/Nodejs.tsx @@ -72,7 +72,7 @@ const NodejsIcon: FC<NodeJsLogoProps> = ({ /> {variant === 'pride' ? ( - <g clip-path="url(#clip0_1_1661)"> + <g clipPath="url(#clip0_1_1661)"> <mask id="mask1_1_1661" style={{ maskType: 'alpha' }} @@ -183,7 +183,7 @@ const NodejsIcon: FC<NodeJsLogoProps> = ({ filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB" > - <feFlood flood-opacity="0" result="BackgroundImageFix" /> + <feFlood floodOpacity="0" result="BackgroundImageFix" /> <feColorMatrix in="SourceAlpha" type="matrix" @@ -218,7 +218,7 @@ const NodejsIcon: FC<NodeJsLogoProps> = ({ filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB" > - <feFlood flood-opacity="0" result="BackgroundImageFix" /> + <feFlood floodOpacity="0" result="BackgroundImageFix" /> <feColorMatrix in="SourceAlpha" type="matrix" From b582b7725fa178d619ebb213e8149b383328b61d Mon Sep 17 00:00:00 2001 From: Aviv Keller <me@aviv.sh> Date: Fri, 27 Jun 2025 19:48:26 -0400 Subject: [PATCH 0579/1385] chore(site): rename and merge utilities (#7853) * chore(site): rename and merge utilities * ua -> userAgent * fixup! ua -> userAgent * code review * fixup! code review * code review --- .../app/[locale]/next-data/api-data/route.ts | 4 +- .../next-data/og/[category]/[title]/route.tsx | 20 +++-- .../app/[locale]/next-data/page-data/route.ts | 2 +- apps/site/client-context.ts | 2 +- .../components/Blog/BlogPostCard/index.tsx | 2 +- .../Downloads/DownloadButton/index.tsx | 4 +- .../components/Downloads/DownloadLink.tsx | 7 +- .../Downloads/MinorReleasesTable/index.tsx | 4 +- .../Downloads/Release/DownloadLink.tsx | 2 +- .../Release/InstallationMethodDropdown.tsx | 6 +- .../Release/OperatingSystemDropdown.tsx | 12 +-- .../Release/PackageManagerDropdown.tsx | 6 +- .../Downloads/Release/PlatformDropdown.tsx | 8 +- .../Release/PrebuiltDownloadButtons.tsx | 4 +- .../Downloads/Release/ReleaseCodeBox.tsx | 2 +- apps/site/components/withAvatarGroup.tsx | 2 +- apps/site/components/withBadgeGroup.tsx | 2 +- apps/site/components/withBanner.tsx | 2 +- apps/site/components/withBlogCategories.tsx | 2 +- apps/site/components/withBreadcrumbs.tsx | 2 +- apps/site/components/withMetaBar.tsx | 2 +- apps/site/hooks/react-client/useDetectOS.ts | 19 ++-- .../hooks/react-client/useNavigationState.ts | 2 +- apps/site/i18n.tsx | 2 +- apps/site/layouts/Post.tsx | 4 +- apps/site/next.mdx.compiler.mjs | 2 +- apps/site/providers/matterProvider.tsx | 2 +- apps/site/types/{downloads.ts => download.ts} | 2 + apps/site/types/index.ts | 3 +- apps/site/types/release.ts | 16 ++-- apps/site/types/userAgent.ts | 13 +++ apps/site/types/userOS.ts | 14 --- .../{authorUtils.test.mjs => author.test.mjs} | 2 +- .../{blogUtils.test.mjs => blog.test.mjs} | 2 +- ...lientContext.test.mjs => context.test.mjs} | 2 +- .../{dateUtils.test.mjs => date.test.mjs} | 2 +- apps/site/util/__tests__/deepMerge.test.mjs | 20 ----- ...wnloadUtils.test.mjs => download.test.mjs} | 2 +- .../__tests__/getHighEntropyValues.test.mjs | 46 ---------- .../util/__tests__/getNodeApiLink.test.mjs | 52 ----------- .../util/__tests__/getUserPlatform.test.mjs | 18 ---- .../{gitHubUtils.test.mjs => github.test.mjs} | 2 +- apps/site/util/__tests__/hexToRGBA.test.mjs | 28 ------ .../{debounce.test.mjs => objects.test.mjs} | 18 +++- .../{stringUtils.test.mjs => string.test.mjs} | 2 +- ...tNodeDownloadUrl.test.mjs => url.test.mjs} | 50 ++++++++++- .../{detectOS.test.mjs => userAgent.test.mjs} | 61 ++++++++++++- apps/site/util/{authorUtils.ts => author.ts} | 4 +- apps/site/util/{blogUtils.ts => blog.ts} | 0 .../{assignClientContext.ts => context.ts} | 0 apps/site/util/{dateUtils.ts => date.ts} | 0 apps/site/util/debounce.ts | 16 ---- apps/site/util/detectOS.ts | 11 --- .../constants.json | 0 .../{downloadUtils => download}/index.tsx | 20 +++-- apps/site/util/getHighEntropyValues.ts | 33 ------- apps/site/util/getNodeApiLink.ts | 17 ---- apps/site/util/getUserPlatform.ts | 15 ---- apps/site/util/{gitHubUtils.ts => github.ts} | 0 apps/site/util/hexToRGBA.ts | 10 --- apps/site/util/{deepMerge.ts => objects.ts} | 19 +++- apps/site/util/{stringUtils.ts => string.ts} | 0 .../util/{getNodeDownloadUrl.ts => url.ts} | 24 +++-- apps/site/util/userAgent.ts | 88 +++++++++++++++++++ 64 files changed, 356 insertions(+), 384 deletions(-) rename apps/site/types/{downloads.ts => download.ts} (59%) create mode 100644 apps/site/types/userAgent.ts delete mode 100644 apps/site/types/userOS.ts rename apps/site/util/__tests__/{authorUtils.test.mjs => author.test.mjs} (99%) rename apps/site/util/__tests__/{blogUtils.test.mjs => blog.test.mjs} (88%) rename apps/site/util/__tests__/{assignClientContext.test.mjs => context.test.mjs} (94%) rename apps/site/util/__tests__/{dateUtils.test.mjs => date.test.mjs} (96%) delete mode 100644 apps/site/util/__tests__/deepMerge.test.mjs rename apps/site/util/__tests__/{downloadUtils.test.mjs => download.test.mjs} (99%) delete mode 100644 apps/site/util/__tests__/getHighEntropyValues.test.mjs delete mode 100644 apps/site/util/__tests__/getNodeApiLink.test.mjs delete mode 100644 apps/site/util/__tests__/getUserPlatform.test.mjs rename apps/site/util/__tests__/{gitHubUtils.test.mjs => github.test.mjs} (97%) delete mode 100644 apps/site/util/__tests__/hexToRGBA.test.mjs rename apps/site/util/__tests__/{debounce.test.mjs => objects.test.mjs} (65%) rename apps/site/util/__tests__/{stringUtils.test.mjs => string.test.mjs} (99%) rename apps/site/util/__tests__/{getNodeDownloadUrl.test.mjs => url.test.mjs} (52%) rename apps/site/util/__tests__/{detectOS.test.mjs => userAgent.test.mjs} (52%) rename apps/site/util/{authorUtils.ts => author.ts} (94%) rename apps/site/util/{blogUtils.ts => blog.ts} (100%) rename apps/site/util/{assignClientContext.ts => context.ts} (100%) rename apps/site/util/{dateUtils.ts => date.ts} (100%) delete mode 100644 apps/site/util/debounce.ts delete mode 100644 apps/site/util/detectOS.ts rename apps/site/util/{downloadUtils => download}/constants.json (100%) rename apps/site/util/{downloadUtils => download}/index.tsx (91%) delete mode 100644 apps/site/util/getHighEntropyValues.ts delete mode 100644 apps/site/util/getNodeApiLink.ts delete mode 100644 apps/site/util/getUserPlatform.ts rename apps/site/util/{gitHubUtils.ts => github.ts} (100%) delete mode 100644 apps/site/util/hexToRGBA.ts rename apps/site/util/{deepMerge.ts => objects.ts} (55%) rename apps/site/util/{stringUtils.ts => string.ts} (100%) rename apps/site/util/{getNodeDownloadUrl.ts => url.ts} (80%) create mode 100644 apps/site/util/userAgent.ts 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 de008a59739b0..29fedbdf8393e 100644 --- a/apps/site/app/[locale]/next-data/api-data/route.ts +++ b/apps/site/app/[locale]/next-data/api-data/route.ts @@ -4,8 +4,8 @@ import provideReleaseData from '#site/next-data/providers/releaseData'; import { GITHUB_API_KEY } from '#site/next.constants.mjs'; import { defaultLocale } from '#site/next.locales.mjs'; import type { GitHubApiFile } from '#site/types'; -import { getGitHubApiDocsUrl } from '#site/util/gitHubUtils'; -import { parseRichTextIntoPlainText } from '#site/util/stringUtils'; +import { getGitHubApiDocsUrl } from '#site/util/github'; +import { parseRichTextIntoPlainText } from '#site/util/string'; // Defines if we should use the GitHub API Key for the request // based on the environment variable `GITHUB_API_KEY` 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 05b304e5721ed..a521b6d686360 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 @@ -4,19 +4,21 @@ import { ImageResponse } from 'next/og'; import { DEFAULT_CATEGORY_OG_TYPE } from '#site/next.constants.mjs'; import { defaultLocale } from '#site/next.locales.mjs'; -import { hexToRGBA } from '#site/util/hexToRGBA'; // TODO: use CSS variables instead of absolute values const CATEGORY_TO_THEME_COLOUR_MAP = { - announcement: '#1a3f1d', - release: '#0c7bb3', - vulnerability: '#ae5f00', + announcement: 'rgb(26, 63, 29)', + release: 'rgb(12, 123, 179)', + vulnerability: 'rgb(174, 95, 0)', }; -type Category = keyof typeof CATEGORY_TO_THEME_COLOUR_MAP; - -type DynamicStaticPaths = { locale: string; category: Category; title: string }; -type StaticParams = { params: Promise<DynamicStaticPaths> }; +type StaticParams = { + params: Promise<{ + locale: string; + category: keyof typeof CATEGORY_TO_THEME_COLOUR_MAP; + title: string; + }>; +}; // This is the Route Handler for the `GET` method which handles the request // for generating OpenGraph images for Blog Posts and Pages @@ -29,7 +31,7 @@ export const GET = async (_: Request, props: StaticParams) => { ? CATEGORY_TO_THEME_COLOUR_MAP[params.category] : CATEGORY_TO_THEME_COLOUR_MAP[DEFAULT_CATEGORY_OG_TYPE]; - const gridBackground = `radial-gradient(circle, ${hexToRGBA(categoryColour)}, transparent)`; + const gridBackground = `radial-gradient(circle, ${categoryColour}, transparent)`; return new ImageResponse( ( diff --git a/apps/site/app/[locale]/next-data/page-data/route.ts b/apps/site/app/[locale]/next-data/page-data/route.ts index d7e9fdd09efd4..35e64530caef0 100644 --- a/apps/site/app/[locale]/next-data/page-data/route.ts +++ b/apps/site/app/[locale]/next-data/page-data/route.ts @@ -4,7 +4,7 @@ import matter from 'gray-matter'; import { dynamicRouter } from '#site/next.dynamic.mjs'; import { defaultLocale } from '#site/next.locales.mjs'; -import { parseRichTextIntoPlainText } from '#site/util/stringUtils'; +import { parseRichTextIntoPlainText } from '#site/util/string'; // This is the Route Handler for the `GET` method which handles the request // for a digest and metadata of all existing pages on Node.js Website diff --git a/apps/site/client-context.ts b/apps/site/client-context.ts index 8ed30d8fb353b..3b900b02a8123 100644 --- a/apps/site/client-context.ts +++ b/apps/site/client-context.ts @@ -1,7 +1,7 @@ import { cache } from 'react'; import type { ClientSharedServerContext } from '#site/types'; -import { assignClientContext } from '#site/util/assignClientContext'; +import { assignClientContext } from '#site/util/context'; // This allows us to have Server-Side Context's of the shared "contextual" data // which includes the frontmatter, the current pathname from the dynamic segments diff --git a/apps/site/components/Blog/BlogPostCard/index.tsx b/apps/site/components/Blog/BlogPostCard/index.tsx index 4f7487b86de75..9f8c7442685b3 100644 --- a/apps/site/components/Blog/BlogPostCard/index.tsx +++ b/apps/site/components/Blog/BlogPostCard/index.tsx @@ -6,7 +6,7 @@ import FormattedTime from '#site/components/Common/FormattedTime'; import Link from '#site/components/Link'; import WithAvatarGroup from '#site/components/withAvatarGroup'; import type { BlogCategory } from '#site/types'; -import { mapBlogCategoryToPreviewType } from '#site/util/blogUtils'; +import { mapBlogCategoryToPreviewType } from '#site/util/blog'; import styles from './index.module.css'; diff --git a/apps/site/components/Downloads/DownloadButton/index.tsx b/apps/site/components/Downloads/DownloadButton/index.tsx index f238ce4546505..d4f3e7a76dd4c 100644 --- a/apps/site/components/Downloads/DownloadButton/index.tsx +++ b/apps/site/components/Downloads/DownloadButton/index.tsx @@ -7,8 +7,8 @@ import type { FC, PropsWithChildren } from 'react'; import Button from '#site/components/Common/Button'; import { useClientContext } from '#site/hooks'; import type { NodeRelease } from '#site/types'; -import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; -import { getUserPlatform } from '#site/util/getUserPlatform'; +import { getNodeDownloadUrl } from '#site/util/url'; +import { getUserPlatform } from '#site/util/userAgent'; import styles from './index.module.css'; diff --git a/apps/site/components/Downloads/DownloadLink.tsx b/apps/site/components/Downloads/DownloadLink.tsx index e639a83d2ac7c..905adbf352d8a 100644 --- a/apps/site/components/Downloads/DownloadLink.tsx +++ b/apps/site/components/Downloads/DownloadLink.tsx @@ -4,10 +4,9 @@ import type { FC, PropsWithChildren } from 'react'; import LinkWithArrow from '#site/components/LinkWithArrow'; import { useClientContext } from '#site/hooks'; -import type { NodeRelease } from '#site/types'; -import type { DownloadKind } from '#site/util/getNodeDownloadUrl'; -import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; -import { getUserPlatform } from '#site/util/getUserPlatform'; +import type { DownloadKind, NodeRelease } from '#site/types'; +import { getNodeDownloadUrl } from '#site/util/url'; +import { getUserPlatform } from '#site/util/userAgent'; type DownloadLinkProps = { release: NodeRelease; kind?: DownloadKind }; diff --git a/apps/site/components/Downloads/MinorReleasesTable/index.tsx b/apps/site/components/Downloads/MinorReleasesTable/index.tsx index c2cf17ec975a5..641af7fec0cb8 100644 --- a/apps/site/components/Downloads/MinorReleasesTable/index.tsx +++ b/apps/site/components/Downloads/MinorReleasesTable/index.tsx @@ -7,7 +7,7 @@ import type { FC } from 'react'; import Link from '#site/components/Link'; import { BASE_CHANGELOG_URL } from '#site/next.constants.mjs'; import type { MinorVersion } from '#site/types'; -import { getNodeApiLink } from '#site/util/getNodeApiLink'; +import { getNodeApiUrl } from '#site/util/url'; import styles from './index.module.css'; @@ -50,7 +50,7 @@ export const MinorReleasesTable: FC<MinorReleasesTableProps> = ({ <Separator orientation="vertical" /> <Link kind="neutral" - href={getNodeApiLink(`v${release.version}`)} + href={getNodeApiUrl(`v${release.version}`)} > {t('actions.docs')} </Link> diff --git a/apps/site/components/Downloads/Release/DownloadLink.tsx b/apps/site/components/Downloads/Release/DownloadLink.tsx index dc685ccedda79..6d9e20179f7f1 100644 --- a/apps/site/components/Downloads/Release/DownloadLink.tsx +++ b/apps/site/components/Downloads/Release/DownloadLink.tsx @@ -5,7 +5,7 @@ import { useContext } from 'react'; import DownloadLinkBase from '#site/components/Downloads/DownloadLink'; import { ReleaseContext } from '#site/providers/releaseProvider'; -import type { DownloadKind } from '#site/util/getNodeDownloadUrl'; +import type { DownloadKind } from '#site/types/download'; type DownloadLinkProps = { kind?: DownloadKind }; diff --git a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx index b050b156f18c4..831b5b6e480ee 100644 --- a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx +++ b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx @@ -7,11 +7,7 @@ import type { FC } from 'react'; import { ReleaseContext } from '#site/providers/releaseProvider'; import type { InstallationMethod } from '#site/types/release'; -import { - nextItem, - INSTALL_METHODS, - parseCompat, -} from '#site/util/downloadUtils'; +import { nextItem, INSTALL_METHODS, parseCompat } from '#site/util/download'; const InstallationMethodDropdown: FC = () => { const release = useContext(ReleaseContext); diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index e5ba1e404d141..1e096adf3ffcd 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -7,14 +7,10 @@ import type { FC } from 'react'; import { useClientContext } from '#site/hooks'; import { ReleaseContext } from '#site/providers/releaseProvider'; -import type { UserOS } from '#site/types/userOS'; -import { - nextItem, - OPERATING_SYSTEMS, - parseCompat, -} from '#site/util/downloadUtils'; +import type { OperatingSystem } from '#site/types/userAgent'; +import { nextItem, OPERATING_SYSTEMS, parseCompat } from '#site/util/download'; -type OperatingSystemDropdownProps = { exclude?: Array<UserOS> }; +type OperatingSystemDropdownProps = { exclude?: Array<OperatingSystem> }; const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = () => { const { os } = useClientContext(); @@ -53,7 +49,7 @@ const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = () => { ); return ( - <Select<UserOS> + <Select<OperatingSystem> values={parsedOperatingSystems} defaultValue={release.os !== 'LOADING' ? release.os : undefined} loading={release.os === 'LOADING'} diff --git a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx index 28a48d178339d..defee5799e364 100644 --- a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx +++ b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx @@ -7,11 +7,7 @@ import type { FC } from 'react'; import { ReleaseContext } from '#site/providers/releaseProvider'; import type { PackageManager } from '#site/types/release'; -import { - nextItem, - PACKAGE_MANAGERS, - parseCompat, -} from '#site/util/downloadUtils'; +import { nextItem, PACKAGE_MANAGERS, parseCompat } from '#site/util/download'; const PackageManagerDropdown: FC = () => { const release = useContext(ReleaseContext); diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index 7e5405e612155..57a73d1d1a710 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -7,9 +7,9 @@ import { useEffect, useContext, useMemo } from 'react'; import { useClientContext } from '#site/hooks'; import { ReleaseContext } from '#site/providers/releaseProvider'; -import type { UserPlatform } from '#site/types/userOS'; -import { PLATFORMS, nextItem, parseCompat } from '#site/util/downloadUtils'; -import { getUserPlatform } from '#site/util/getUserPlatform'; +import type { Platform } from '#site/types/userAgent'; +import { PLATFORMS, nextItem, parseCompat } from '#site/util/download'; +import { getUserPlatform } from '#site/util/userAgent'; const PlatformDropdown: FC = () => { const { architecture, bitness } = useClientContext(); @@ -57,7 +57,7 @@ const PlatformDropdown: FC = () => { ); return ( - <Select<UserPlatform> + <Select<Platform> values={parsedPlatforms} defaultValue={release.platform !== '' ? release.platform : undefined} loading={release.os === 'LOADING' || release.platform === ''} diff --git a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx index ca037f6a443c2..fccff0462d69f 100644 --- a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx +++ b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx @@ -11,8 +11,8 @@ import { ReleaseContext } from '#site/providers/releaseProvider'; import { OS_NOT_SUPPORTING_INSTALLERS, OperatingSystemLabel, -} from '#site/util/downloadUtils'; -import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; +} from '#site/util/download'; +import { getNodeDownloadUrl } from '#site/util/url'; // Retrieves the pure extension piece from the input string const getExtension = (input: string) => String(input.split('.').slice(-1)); diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 2aa77839acb44..54ef178b43672 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -16,7 +16,7 @@ import { ReleasesContext, } from '#site/providers/releaseProvider'; import type { ReleaseContextType } from '#site/types/release'; -import { INSTALL_METHODS } from '#site/util/downloadUtils'; +import { INSTALL_METHODS } from '#site/util/download'; // Creates a minimal JavaScript interpreter for parsing the JavaScript code from the snippets // Note: that the code runs inside a sandboxed environment and cannot interact with any code outside of the sandbox diff --git a/apps/site/components/withAvatarGroup.tsx b/apps/site/components/withAvatarGroup.tsx index fc0569877c50f..0e2731c72e218 100644 --- a/apps/site/components/withAvatarGroup.tsx +++ b/apps/site/components/withAvatarGroup.tsx @@ -5,7 +5,7 @@ import type { ComponentProps, FC } from 'react'; import Link from '#site/components/Link'; import type { AuthorProps } from '#site/types'; -import { getAuthors } from '#site/util/authorUtils'; +import { getAuthors } from '#site/util/author'; type WithAvatarGroupProps = Omit< ComponentProps<typeof AvatarGroup>, diff --git a/apps/site/components/withBadgeGroup.tsx b/apps/site/components/withBadgeGroup.tsx index ceda7771adff4..069e762bf48bc 100644 --- a/apps/site/components/withBadgeGroup.tsx +++ b/apps/site/components/withBadgeGroup.tsx @@ -3,7 +3,7 @@ import type { FC } from 'react'; import Link from '#site/components/Link'; import { siteConfig } from '#site/next.json.mjs'; -import { dateIsBetween } from '#site/util/dateUtils'; +import { dateIsBetween } from '#site/util/date'; const WithBadgeGroup: FC<{ section: string }> = ({ section }) => { const badge = siteConfig.websiteBadges[section]; diff --git a/apps/site/components/withBanner.tsx b/apps/site/components/withBanner.tsx index 09f05065959d4..169ddd5598f4f 100644 --- a/apps/site/components/withBanner.tsx +++ b/apps/site/components/withBanner.tsx @@ -4,7 +4,7 @@ import type { FC } from 'react'; import Link from '#site/components/Link'; import { siteConfig } from '#site/next.json.mjs'; -import { dateIsBetween } from '#site/util/dateUtils'; +import { dateIsBetween } from '#site/util/date'; const WithBanner: FC<{ section: string }> = ({ section }) => { const banner = siteConfig.websiteBanners[section]; diff --git a/apps/site/components/withBlogCategories.tsx b/apps/site/components/withBlogCategories.tsx index c011a6b60b618..d007d1673893c 100644 --- a/apps/site/components/withBlogCategories.tsx +++ b/apps/site/components/withBlogCategories.tsx @@ -5,7 +5,7 @@ import BlogPostCard from '#site/components/Blog/BlogPostCard'; import LinkTabs from '#site/components/Common/LinkTabs'; import Pagination from '#site/components/Common/Pagination'; import type { BlogPostsRSC } from '#site/types'; -import { mapAuthorToCardAuthors } from '#site/util/authorUtils'; +import { mapAuthorToCardAuthors } from '#site/util/author'; type WithBlogCategoriesProps = { categories: ComponentProps<typeof LinkTabs>['tabs']; diff --git a/apps/site/components/withBreadcrumbs.tsx b/apps/site/components/withBreadcrumbs.tsx index a0fcc4f28792a..2d342a2b6803a 100644 --- a/apps/site/components/withBreadcrumbs.tsx +++ b/apps/site/components/withBreadcrumbs.tsx @@ -12,7 +12,7 @@ import { useSiteNavigation, } from '#site/hooks'; import type { NavigationKeys } from '#site/types'; -import { dashToCamelCase } from '#site/util/stringUtils'; +import { dashToCamelCase } from '#site/util/string'; type WithBreadcrumbsProps = { navKeys?: Array<NavigationKeys>; diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index a7dd313ad8167..b7c5348112beb 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -12,7 +12,7 @@ import useMediaQuery from '#site/hooks/react-client/useMediaQuery'; import { DEFAULT_DATE_FORMAT } from '#site/next.calendar.constants.mjs'; import { TRANSLATION_URL } from '#site/next.constants.mjs'; import { defaultLocale } from '#site/next.locales.mjs'; -import { getGitHubBlobUrl } from '#site/util/gitHubUtils'; +import { getGitHubBlobUrl } from '#site/util/github'; const WithMetaBar: FC = () => { const { headings, readingTime, frontmatter, filename } = useClientContext(); diff --git a/apps/site/hooks/react-client/useDetectOS.ts b/apps/site/hooks/react-client/useDetectOS.ts index e751738bd1c61..dc2d2cfcdf244 100644 --- a/apps/site/hooks/react-client/useDetectOS.ts +++ b/apps/site/hooks/react-client/useDetectOS.ts @@ -2,14 +2,17 @@ import { useEffect, useState } from 'react'; -import type { UserArchitecture, UserBitness, UserOS } from '#site/types/userOS'; -import { detectOS } from '#site/util/detectOS'; -import { getHighEntropyValues } from '#site/util/getHighEntropyValues'; +import type { + Architecture, + Bitness, + OperatingSystem, +} from '#site/types/userAgent'; +import { getHighEntropyValues, detectOS } from '#site/util/userAgent'; type UserOSState = { - os: UserOS | 'LOADING'; - bitness: UserBitness | ''; - architecture: UserArchitecture | ''; + os: OperatingSystem | 'LOADING'; + bitness: Bitness | ''; + architecture: Architecture | ''; }; const useDetectOS = () => { @@ -42,8 +45,8 @@ const useDetectOS = () => { }) => { setUserOSState(current => ({ ...current, - bitness: bitness as UserBitness, - architecture: architecture as UserArchitecture, + bitness: bitness as Bitness, + architecture: architecture as Architecture, })); } ); diff --git a/apps/site/hooks/react-client/useNavigationState.ts b/apps/site/hooks/react-client/useNavigationState.ts index ab3e420d6e668..dbdb093ac6e25 100644 --- a/apps/site/hooks/react-client/useNavigationState.ts +++ b/apps/site/hooks/react-client/useNavigationState.ts @@ -4,7 +4,7 @@ import type { RefObject } from 'react'; import { useContext, useEffect } from 'react'; import { NavigationStateContext } from '#site/providers/navigationStateProvider'; -import { debounce } from '#site/util/debounce'; +import { debounce } from '#site/util/objects'; const useNavigationState = <T extends HTMLElement>( id: string, diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index 3d899b06f6755..7abd8682746a9 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -4,7 +4,7 @@ import { getRequestConfig } from 'next-intl/server'; import { availableLocaleCodes, defaultLocale } from '#site/next.locales.mjs'; -import deepMerge from './util/deepMerge'; +import { deepMerge } from './util/objects'; // Loads the Application Locales/Translations Dynamically const loadLocaleDictionary = async (locale: string) => { diff --git a/apps/site/layouts/Post.tsx b/apps/site/layouts/Post.tsx index a614fc27a36bd..9b5234b727757 100644 --- a/apps/site/layouts/Post.tsx +++ b/apps/site/layouts/Post.tsx @@ -7,8 +7,8 @@ import WithFooter from '#site/components/withFooter'; import WithMetaBar from '#site/components/withMetaBar'; import WithNavBar from '#site/components/withNavBar'; import { useClientContext } from '#site/hooks/react-server'; -import { mapAuthorToCardAuthors } from '#site/util/authorUtils'; -import { mapBlogCategoryToPreviewType } from '#site/util/blogUtils'; +import { mapAuthorToCardAuthors } from '#site/util/author'; +import { mapBlogCategoryToPreviewType } from '#site/util/blog'; import styles from './layouts.module.css'; diff --git a/apps/site/next.mdx.compiler.mjs b/apps/site/next.mdx.compiler.mjs index 009c25f067e74..987e6c8803c7d 100644 --- a/apps/site/next.mdx.compiler.mjs +++ b/apps/site/next.mdx.compiler.mjs @@ -6,7 +6,7 @@ import { matter } from 'vfile-matter'; import { createSval } from './next.jsx.compiler.mjs'; import { REHYPE_PLUGINS, REMARK_PLUGINS } from './next.mdx.plugins.mjs'; -import { createGitHubSlugger } from './util/gitHubUtils'; +import { createGitHubSlugger } from './util/github'; // Defines a JSX Fragment and JSX Runtime for the MDX Compiler export const reactRuntime = { Fragment, jsx, jsxs }; diff --git a/apps/site/providers/matterProvider.tsx b/apps/site/providers/matterProvider.tsx index 1e683d3e9d974..38b032c2ca3a1 100644 --- a/apps/site/providers/matterProvider.tsx +++ b/apps/site/providers/matterProvider.tsx @@ -5,7 +5,7 @@ import type { FC, PropsWithChildren } from 'react'; import { useDetectOS } from '#site/hooks'; import type { ClientSharedServerContext } from '#site/types'; -import { assignClientContext } from '#site/util/assignClientContext'; +import { assignClientContext } from '#site/util/context'; export const MatterContext = createContext<ClientSharedServerContext>( assignClientContext({}) diff --git a/apps/site/types/downloads.ts b/apps/site/types/download.ts similarity index 59% rename from apps/site/types/downloads.ts rename to apps/site/types/download.ts index 91f4366c26a62..3be983a9466f2 100644 --- a/apps/site/types/downloads.ts +++ b/apps/site/types/download.ts @@ -3,3 +3,5 @@ export interface DownloadSnippet { language: string; content: string; } + +export type DownloadKind = 'installer' | 'binary' | 'source'; diff --git a/apps/site/types/index.ts b/apps/site/types/index.ts index 53eb2fe7fc6fa..38f5767b732db 100644 --- a/apps/site/types/index.ts +++ b/apps/site/types/index.ts @@ -11,4 +11,5 @@ export * from './server'; export * from './github'; export * from './calendar'; export * from './author'; -export * from './downloads'; +export * from './download'; +export * from './userAgent'; diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index 28f945f6cbd3a..fc150fec22d68 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -1,6 +1,6 @@ -import type { DownloadSnippet } from '#site/types/downloads'; +import type { DownloadSnippet } from '#site/types/download'; import type { NodeRelease } from '#site/types/releases'; -import type { UserOS, UserPlatform } from '#site/types/userOS'; +import type { OperatingSystem, Platform } from '#site/types/userAgent'; export type InstallationMethod = | 'NVM' @@ -17,23 +17,23 @@ export type PackageManager = 'NPM' | 'YARN' | 'PNPM'; // during runtime and do not have necessarily a consistent initial value export interface ReleaseState { version: string; - os: UserOS | 'LOADING'; - platform: UserPlatform | ''; + os: OperatingSystem | 'LOADING'; + platform: Platform | ''; installMethod: InstallationMethod | ''; packageManager: PackageManager; } export type ReleaseAction = | { type: 'SET_VERSION'; payload: string } - | { type: 'SET_OS'; payload: UserOS } - | { type: 'SET_PLATFORM'; payload: UserPlatform } + | { type: 'SET_OS'; payload: OperatingSystem } + | { type: 'SET_PLATFORM'; payload: Platform } | { type: 'SET_INSTALL_METHOD'; payload: InstallationMethod } | { type: 'SET_MANAGER'; payload: PackageManager }; export interface ReleaseDispatchActions { setVersion: (version: string) => void; - setOS: (os: UserOS) => void; - setPlatform: (bitness: UserPlatform) => void; + setOS: (os: OperatingSystem) => void; + setPlatform: (bitness: Platform) => void; setInstallMethod: (installMethod: InstallationMethod) => void; setPackageManager: (packageManager: PackageManager) => void; } diff --git a/apps/site/types/userAgent.ts b/apps/site/types/userAgent.ts new file mode 100644 index 0000000000000..55d55aee03b3f --- /dev/null +++ b/apps/site/types/userAgent.ts @@ -0,0 +1,13 @@ +import type constants from '../util/download/constants.json'; + +// Extract OS key type from the systems object +export type OperatingSystem = keyof typeof constants.systems; + +// Derive the union type of UserPlatform from the userOptions +export type Platform = (typeof constants.userOptions.platforms)[number]; + +// Derive the union type of UserBitness from the userOptions +export type Bitness = (typeof constants.userOptions.bitness)[number]; + +// Derive the union type of UserArchitecture from the userOptions +export type Architecture = (typeof constants.userOptions.architecture)[number]; diff --git a/apps/site/types/userOS.ts b/apps/site/types/userOS.ts deleted file mode 100644 index 76bd462f345e5..0000000000000 --- a/apps/site/types/userOS.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type constants from '../util/downloadUtils/constants.json'; - -// Extract OS key type from the systems object -export type UserOS = keyof typeof constants.systems; - -// Derive the union type of UserPlatform from the userOptions -export type UserPlatform = (typeof constants.userOptions.platforms)[number]; - -// Derive the union type of UserBitness from the userOptions -export type UserBitness = (typeof constants.userOptions.bitness)[number]; - -// Derive the union type of UserArchitecture from the userOptions -export type UserArchitecture = - (typeof constants.userOptions.architecture)[number]; diff --git a/apps/site/util/__tests__/authorUtils.test.mjs b/apps/site/util/__tests__/author.test.mjs similarity index 99% rename from apps/site/util/__tests__/authorUtils.test.mjs rename to apps/site/util/__tests__/author.test.mjs index 6a26617258a4d..04497a32ef3f2 100644 --- a/apps/site/util/__tests__/authorUtils.test.mjs +++ b/apps/site/util/__tests__/author.test.mjs @@ -6,7 +6,7 @@ import { getAuthorWithId, getAuthorWithName, getAuthors, -} from '#site/util/authorUtils'; +} from '#site/util/author'; describe('mapAuthorToCardAuthors', () => { it('maps authors to card authors with default avatar source', () => { diff --git a/apps/site/util/__tests__/blogUtils.test.mjs b/apps/site/util/__tests__/blog.test.mjs similarity index 88% rename from apps/site/util/__tests__/blogUtils.test.mjs rename to apps/site/util/__tests__/blog.test.mjs index 7142de43505fd..b68301c3ce300 100644 --- a/apps/site/util/__tests__/blogUtils.test.mjs +++ b/apps/site/util/__tests__/blog.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { mapBlogCategoryToPreviewType } from '#site/util/blogUtils'; +import { mapBlogCategoryToPreviewType } from '#site/util/blog'; describe('mapBlogCategoryToPreviewType', () => { it('returns the correct preview type for recognized categories', () => { diff --git a/apps/site/util/__tests__/assignClientContext.test.mjs b/apps/site/util/__tests__/context.test.mjs similarity index 94% rename from apps/site/util/__tests__/assignClientContext.test.mjs rename to apps/site/util/__tests__/context.test.mjs index 5768d13cb8c3b..22b00b0cc2dd7 100644 --- a/apps/site/util/__tests__/assignClientContext.test.mjs +++ b/apps/site/util/__tests__/context.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { assignClientContext } from '#site/util/assignClientContext'; +import { assignClientContext } from '#site/util/context'; const mockContext = { frontmatter: { title: 'Sample Title' }, diff --git a/apps/site/util/__tests__/dateUtils.test.mjs b/apps/site/util/__tests__/date.test.mjs similarity index 96% rename from apps/site/util/__tests__/dateUtils.test.mjs rename to apps/site/util/__tests__/date.test.mjs index f9dfe49d738da..804197aa76f75 100644 --- a/apps/site/util/__tests__/dateUtils.test.mjs +++ b/apps/site/util/__tests__/date.test.mjs @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { dateIsBetween } from '#site/util/dateUtils'; +import { dateIsBetween } from '#site/util/date'; describe('dateIsBetween', () => { it('should return true when the current date is between start and end dates', () => { diff --git a/apps/site/util/__tests__/deepMerge.test.mjs b/apps/site/util/__tests__/deepMerge.test.mjs deleted file mode 100644 index c41a2d421e979..0000000000000 --- a/apps/site/util/__tests__/deepMerge.test.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import assert from 'node:assert/strict'; -import { describe, it } from 'node:test'; - -import deepMerge from '#site/util/deepMerge'; - -describe('deepMerge', () => { - it('should merge nested objects', () => { - const obj1 = { a: { b: 1 }, c: 2 }; - const obj2 = { a: { d: 3 }, e: 4 }; - const result = deepMerge(obj1, obj2); - assert.deepEqual(result, { a: { b: 1, d: 3 }, c: 2, e: 4 }); - }); - - it('should overwrite primitive properties', () => { - const obj1 = { a: 1 }; - const obj2 = { a: 2 }; - const result = deepMerge(obj1, obj2); - assert.deepEqual(result, { a: 2 }); - }); -}); diff --git a/apps/site/util/__tests__/downloadUtils.test.mjs b/apps/site/util/__tests__/download.test.mjs similarity index 99% rename from apps/site/util/__tests__/downloadUtils.test.mjs rename to apps/site/util/__tests__/download.test.mjs index 1f1e9a8bbb502..d4bd959de1073 100644 --- a/apps/site/util/__tests__/downloadUtils.test.mjs +++ b/apps/site/util/__tests__/download.test.mjs @@ -8,7 +8,7 @@ import { INSTALL_METHODS, PACKAGE_MANAGERS, PLATFORMS, -} from '#site/util/downloadUtils'; +} from '#site/util/download'; describe('parseCompat', () => { it('should handle all OS, install methods, and package managers', () => { diff --git a/apps/site/util/__tests__/getHighEntropyValues.test.mjs b/apps/site/util/__tests__/getHighEntropyValues.test.mjs deleted file mode 100644 index 6d789d3092a31..0000000000000 --- a/apps/site/util/__tests__/getHighEntropyValues.test.mjs +++ /dev/null @@ -1,46 +0,0 @@ -import assert from 'node:assert/strict'; -import { describe, it, beforeEach } from 'node:test'; - -import { getHighEntropyValues } from '#site/util/getHighEntropyValues'; - -const mock = () => Promise.resolve({ platform: 'Win32', architecture: 'x86' }); - -describe('getHighEntropyValues', () => { - beforeEach(() => { - Object.defineProperty(global, 'navigator', { - value: { - userAgentData: { - getHighEntropyValues: mock, - }, - }, - configurable: true, - }); - }); - - it('should resolve and return hint values', async () => { - const hints = ['platform']; - const result = await getHighEntropyValues(hints); - assert.equal(result.platform, 'Win32'); - }); - - it('should return an empty object on rejection', async () => { - navigator.userAgentData.getHighEntropyValues = () => Promise.resolve({}); - const hints = ['platform']; - const result = await getHighEntropyValues(hints); - assert.equal(result.platform, undefined); - navigator.userAgentData.getHighEntropyValues = mock; - }); - - it('should return multiple hint values', async () => { - const hints = ['platform', 'architecture']; - const result = await getHighEntropyValues(hints); - assert.equal(result.platform, 'Win32'); - assert.equal(result.architecture, 'x86'); - }); - - it('should return undefined for unsupported hints', async () => { - const hints = ['unsupportedHint']; - const result = await getHighEntropyValues(hints); - assert.equal(result.unsupportedHint, undefined); - }); -}); diff --git a/apps/site/util/__tests__/getNodeApiLink.test.mjs b/apps/site/util/__tests__/getNodeApiLink.test.mjs deleted file mode 100644 index 1987405e325c3..0000000000000 --- a/apps/site/util/__tests__/getNodeApiLink.test.mjs +++ /dev/null @@ -1,52 +0,0 @@ -import assert from 'node:assert/strict'; -import { describe, it } from 'node:test'; - -import { getNodeApiLink } from '#site/util/getNodeApiLink'; - -describe('getNodeApiLink', () => { - it('should return the correct API link for versions >=0.3.1 and <0.5.1', () => { - const version = '0.4.0'; - const expectedLink = `https://nodejs.org/docs/${version}/api/`; - - const result = getNodeApiLink(version); - - assert.equal(result, expectedLink); - }); - - it('should return the correct URL for versions >=0.3.1 and <0.5.1', () => { - const url = getNodeApiLink('v0.4.10'); - assert.ok(url.includes('/api/')); - }); - - it('should return the correct API link for versions >=0.1.14 and <0.3.1', () => { - const version = '0.2.0'; - const expectedLink = `https://nodejs.org/docs/${version}/api.html`; - - const result = getNodeApiLink(version); - - assert.equal(result, expectedLink); - }); - - it('should return the correct API link for versions >=1.0.0 and <4.0.0', () => { - const version = '2.3.0'; - const expectedLink = `https://iojs.org/dist/${version}/docs/api/`; - - const result = getNodeApiLink(version); - - assert.equal(result, expectedLink); - }); - - it('should form the correct URL for versions >=1.0.0 and <4.0.0', () => { - const url = getNodeApiLink('v1.2.3'); - assert.ok(url.includes('iojs.org/dist/v1.2.3/docs/api/')); - }); - - it('should return the correct API link for other versions', () => { - const version = '5.0.0'; - const expectedLink = `https://nodejs.org/dist/${version}/docs/api/`; - - const result = getNodeApiLink(version); - - assert.equal(result, expectedLink); - }); -}); diff --git a/apps/site/util/__tests__/getUserPlatform.test.mjs b/apps/site/util/__tests__/getUserPlatform.test.mjs deleted file mode 100644 index 15a0ac90958d1..0000000000000 --- a/apps/site/util/__tests__/getUserPlatform.test.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import assert from 'node:assert/strict'; -import { describe, it } from 'node:test'; - -import { getUserPlatform } from '#site/util/getUserPlatform'; - -describe('getUserPlatform', () => { - it('should return arm64 for arm + 64', () => { - assert.equal(getUserPlatform('arm', '64'), 'arm64'); - }); - - it('should return x64 for non-arm + 64', () => { - assert.equal(getUserPlatform('amd64', '64'), 'x64'); - }); - - it('should return x86 otherwise', () => { - assert.equal(getUserPlatform('amd64', '32'), 'x86'); - }); -}); diff --git a/apps/site/util/__tests__/gitHubUtils.test.mjs b/apps/site/util/__tests__/github.test.mjs similarity index 97% rename from apps/site/util/__tests__/gitHubUtils.test.mjs rename to apps/site/util/__tests__/github.test.mjs index 5afc3e64b8c6a..03f20de2d4372 100644 --- a/apps/site/util/__tests__/gitHubUtils.test.mjs +++ b/apps/site/util/__tests__/github.test.mjs @@ -10,7 +10,7 @@ const { createGitHubSlugger, getGitHubBlobUrl, getGitHubApiDocsUrl, -} = await import('#site/util/gitHubUtils'); +} = await import('#site/util/github'); describe('gitHubUtils', () => { it('getGitHubAvatarUrl returns the correct URL', () => { diff --git a/apps/site/util/__tests__/hexToRGBA.test.mjs b/apps/site/util/__tests__/hexToRGBA.test.mjs deleted file mode 100644 index 94bdd29fa4f83..0000000000000 --- a/apps/site/util/__tests__/hexToRGBA.test.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import assert from 'node:assert/strict'; -import { describe, it } from 'node:test'; - -import { hexToRGBA } from '#site/util/hexToRGBA'; - -describe('hexToRGBA', () => { - it('should convert a hex color to an rgba color', () => { - const hexColor = '#000000'; - const rgbaColor = hexToRGBA(hexColor, 0.5); - - assert.equal(rgbaColor, 'rgba(0, 0, 0, 0.5)'); - }); - - it('should convert a hex color to an rgba color', () => { - const hexColor = '#ffffff'; - const rgbaColor = hexToRGBA(hexColor, 0.5); - - assert.equal(rgbaColor, 'rgba(255, 255, 255, 0.5)'); - }); - - it('should convert hex to RGBA correctly', () => { - assert.equal(hexToRGBA('#FFFFFF'), 'rgba(255, 255, 255, 0.9)'); - }); - - it('should handle custom alpha value', () => { - assert.equal(hexToRGBA('#000000', 0.5), 'rgba(0, 0, 0, 0.5)'); - }); -}); diff --git a/apps/site/util/__tests__/debounce.test.mjs b/apps/site/util/__tests__/objects.test.mjs similarity index 65% rename from apps/site/util/__tests__/debounce.test.mjs rename to apps/site/util/__tests__/objects.test.mjs index 0632a3c153f2b..d5309b40d4efd 100644 --- a/apps/site/util/__tests__/debounce.test.mjs +++ b/apps/site/util/__tests__/objects.test.mjs @@ -1,7 +1,23 @@ import assert from 'node:assert/strict'; import { describe, it, beforeEach } from 'node:test'; -import { debounce } from '#site/util/debounce'; +import { deepMerge, debounce } from '#site/util/objects'; + +describe('deepMerge', () => { + it('should merge nested objects', () => { + const obj1 = { a: { b: 1 }, c: 2 }; + const obj2 = { a: { d: 3 }, e: 4 }; + const result = deepMerge(obj1, obj2); + assert.deepEqual(result, { a: { b: 1, d: 3 }, c: 2, e: 4 }); + }); + + it('should overwrite primitive properties', () => { + const obj1 = { a: 1 }; + const obj2 = { a: 2 }; + const result = deepMerge(obj1, obj2); + assert.deepEqual(result, { a: 2 }); + }); +}); describe('debounce', () => { beforeEach(t => { diff --git a/apps/site/util/__tests__/stringUtils.test.mjs b/apps/site/util/__tests__/string.test.mjs similarity index 99% rename from apps/site/util/__tests__/stringUtils.test.mjs rename to apps/site/util/__tests__/string.test.mjs index 23429d185a32a..c4d95f125a9b8 100644 --- a/apps/site/util/__tests__/stringUtils.test.mjs +++ b/apps/site/util/__tests__/string.test.mjs @@ -5,7 +5,7 @@ import { getAcronymFromString, parseRichTextIntoPlainText, dashToCamelCase, -} from '#site/util/stringUtils'; +} from '#site/util/string'; describe('String utils', () => { it('getAcronymFromString returns the correct acronym', () => { diff --git a/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs b/apps/site/util/__tests__/url.test.mjs similarity index 52% rename from apps/site/util/__tests__/getNodeDownloadUrl.test.mjs rename to apps/site/util/__tests__/url.test.mjs index 8ec40abda7fb2..8f6cd5be3f302 100644 --- a/apps/site/util/__tests__/getNodeDownloadUrl.test.mjs +++ b/apps/site/util/__tests__/url.test.mjs @@ -1,10 +1,58 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { getNodeDownloadUrl } from '#site/util/getNodeDownloadUrl'; +import { getNodeDownloadUrl, getNodeApiUrl } from '../url'; const version = 'v18.16.0'; +describe('getNodeApiUrl', () => { + it('should return the correct API link for versions >=0.3.1 and <0.5.1', () => { + const version = '0.4.0'; + const expectedLink = `https://nodejs.org/docs/${version}/api/`; + + const result = getNodeApiUrl(version); + + assert.equal(result, expectedLink); + }); + + it('should return the correct URL for versions >=0.3.1 and <0.5.1', () => { + const url = getNodeApiUrl('v0.4.10'); + assert.ok(url.includes('/api/')); + }); + + it('should return the correct API link for versions >=0.1.14 and <0.3.1', () => { + const version = '0.2.0'; + const expectedLink = `https://nodejs.org/docs/${version}/api.html`; + + const result = getNodeApiUrl(version); + + assert.equal(result, expectedLink); + }); + + it('should return the correct API link for versions >=1.0.0 and <4.0.0', () => { + const version = '2.3.0'; + const expectedLink = `https://iojs.org/dist/${version}/docs/api/`; + + const result = getNodeApiUrl(version); + + assert.equal(result, expectedLink); + }); + + it('should form the correct URL for versions >=1.0.0 and <4.0.0', () => { + const url = getNodeApiUrl('v1.2.3'); + assert.ok(url.includes('iojs.org/dist/v1.2.3/docs/api/')); + }); + + it('should return the correct API link for other versions', () => { + const version = '5.0.0'; + const expectedLink = `https://nodejs.org/dist/${version}/docs/api/`; + + const result = getNodeApiUrl(version); + + assert.equal(result, expectedLink); + }); +}); + describe('getNodeDownloadUrl', () => { it('should return the correct download URL for Mac', () => { const os = 'MAC'; diff --git a/apps/site/util/__tests__/detectOS.test.mjs b/apps/site/util/__tests__/userAgent.test.mjs similarity index 52% rename from apps/site/util/__tests__/detectOS.test.mjs rename to apps/site/util/__tests__/userAgent.test.mjs index c056140aa714a..adfa42d05e285 100644 --- a/apps/site/util/__tests__/detectOS.test.mjs +++ b/apps/site/util/__tests__/userAgent.test.mjs @@ -1,7 +1,12 @@ import assert from 'node:assert/strict'; -import { describe, it } from 'node:test'; +import { describe, it, beforeEach } from 'node:test'; -import { detectOsInUserAgent, detectOS } from '#site/util/detectOS'; +import { + detectOS, + detectOsInUserAgent, + getHighEntropyValues, + getUserPlatform, +} from '#site/util/userAgent'; const userAgentTestCases = [ [ @@ -29,6 +34,22 @@ const userAgentTestCases = [ [undefined, 'OTHER'], ]; +const mock = () => Promise.resolve({ platform: 'Win32', architecture: 'x86' }); + +describe('getUserPlatform', () => { + it('should return arm64 for arm + 64', () => { + assert.equal(getUserPlatform('arm', '64'), 'arm64'); + }); + + it('should return x64 for non-arm + 64', () => { + assert.equal(getUserPlatform('amd64', '64'), 'x64'); + }); + + it('should return x86 otherwise', () => { + assert.equal(getUserPlatform('amd64', '32'), 'x86'); + }); +}); + describe('detectOsInUserAgent', () => { for (const [userAgent, expected] of userAgentTestCases) { it(`should return ${expected} for userAgent ${userAgent}`, () => { @@ -69,3 +90,39 @@ describe('detectOS', () => { assert.equal(detectOS(), 'OTHER'); }); }); + +describe('getHighEntropyValues', () => { + beforeEach(() => { + Object.defineProperty(global, 'navigator', { + value: { + userAgentData: { + getHighEntropyValues: mock, + }, + }, + configurable: true, + }); + }); + + it('should resolve and return hint values', async () => { + const result = await getHighEntropyValues(['platform']); + assert.equal(result.platform, 'Win32'); + }); + + it('should return an empty object on rejection', async () => { + navigator.userAgentData.getHighEntropyValues = () => Promise.resolve({}); + const result = await getHighEntropyValues(['platform']); + assert.equal(result.platform, undefined); + navigator.userAgentData.getHighEntropyValues = mock; + }); + + it('should return multiple hint values', async () => { + const result = await getHighEntropyValues(['platform', 'architecture']); + assert.equal(result.platform, 'Win32'); + assert.equal(result.architecture, 'x86'); + }); + + it('should return undefined for unsupported hints', async () => { + const result = await getHighEntropyValues(['unsupportedHint']); + assert.equal(result.unsupportedHint, undefined); + }); +}); diff --git a/apps/site/util/authorUtils.ts b/apps/site/util/author.ts similarity index 94% rename from apps/site/util/authorUtils.ts rename to apps/site/util/author.ts index 4a3cccc975ac5..92ab969b5d90d 100644 --- a/apps/site/util/authorUtils.ts +++ b/apps/site/util/author.ts @@ -1,7 +1,7 @@ import { authors } from '#site/next.json.mjs'; import type { AuthorProps } from '#site/types'; -import { getGitHubAvatarUrl } from '#site/util/gitHubUtils'; -import { getAcronymFromString } from '#site/util/stringUtils'; +import { getGitHubAvatarUrl } from '#site/util/github'; +import { getAcronymFromString } from '#site/util/string'; export const mapAuthorToCardAuthors = (author: string) => { // Clears text in parentheses diff --git a/apps/site/util/blogUtils.ts b/apps/site/util/blog.ts similarity index 100% rename from apps/site/util/blogUtils.ts rename to apps/site/util/blog.ts diff --git a/apps/site/util/assignClientContext.ts b/apps/site/util/context.ts similarity index 100% rename from apps/site/util/assignClientContext.ts rename to apps/site/util/context.ts diff --git a/apps/site/util/dateUtils.ts b/apps/site/util/date.ts similarity index 100% rename from apps/site/util/dateUtils.ts rename to apps/site/util/date.ts diff --git a/apps/site/util/debounce.ts b/apps/site/util/debounce.ts deleted file mode 100644 index ca569ba359e97..0000000000000 --- a/apps/site/util/debounce.ts +++ /dev/null @@ -1,16 +0,0 @@ -type DebounceFunction<T = unknown> = (...args: Array<T>) => void; - -let timeoutId: NodeJS.Timeout; - -export const debounce = - <T extends DebounceFunction>( - func: T, - delay: number - ): ((...args: Parameters<T>) => void) => - (...args: Parameters<T>) => { - clearTimeout(timeoutId); - - timeoutId = setTimeout(() => { - func(...args); - }, delay); - }; diff --git a/apps/site/util/detectOS.ts b/apps/site/util/detectOS.ts deleted file mode 100644 index c7769c5237375..0000000000000 --- a/apps/site/util/detectOS.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { UserOS } from '#site/types/userOS'; - -export const detectOsInUserAgent = (userAgent: string | undefined): UserOS => { - // Match OS names and convert to uppercase directly if there's a match - const osMatch = userAgent?.match(/(Win|Mac|Linux|AIX)/); - return osMatch ? (osMatch[1].toUpperCase() as UserOS) : 'OTHER'; -}; - -// Since `navigator.appVersion` is deprecated, we use the `userAgent`` -// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/appVersion -export const detectOS = (): UserOS => detectOsInUserAgent(navigator?.userAgent); diff --git a/apps/site/util/downloadUtils/constants.json b/apps/site/util/download/constants.json similarity index 100% rename from apps/site/util/downloadUtils/constants.json rename to apps/site/util/download/constants.json diff --git a/apps/site/util/downloadUtils/index.tsx b/apps/site/util/download/index.tsx similarity index 91% rename from apps/site/util/downloadUtils/index.tsx rename to apps/site/util/download/index.tsx index b7fa11d3dca8b..9b31281e4c1f8 100644 --- a/apps/site/util/downloadUtils/index.tsx +++ b/apps/site/util/download/index.tsx @@ -5,9 +5,13 @@ import * as PackageManagerIcons from '@node-core/ui-components/Icons/PackageMana import type { ElementType } from 'react'; import satisfies from 'semver/functions/satisfies'; -import type { IntlMessageKeys, NodeReleaseStatus } from '#site/types'; +import type { + IntlMessageKeys, + NodeReleaseStatus, + OperatingSystem, + Platform, +} from '#site/types'; import type * as Types from '#site/types/release'; -import type { UserOS, UserPlatform } from '#site/types/userOS'; import constants from './constants.json'; @@ -25,9 +29,9 @@ export const OperatingSystemLabel = Object.fromEntries( // Base types for dropdown functionality type DownloadCompatibility = { - os?: Array<UserOS | 'LOADING'>; + os?: Array<OperatingSystem | 'LOADING'>; installMethod?: Array<string>; - platform?: Array<UserPlatform | ''>; + platform?: Array<Platform | ''>; semver?: Array<string>; releases?: Array<NodeReleaseStatus>; }; @@ -103,7 +107,7 @@ export const OPERATING_SYSTEMS = Object.entries(systems as ActualSystems) .filter(([key]) => key !== 'LOADING' && key !== 'OTHER') .map(([key, data]) => ({ label: data.name as IntlMessageKeys, - value: key as UserOS, + value: key as OperatingSystem, compatibility: data.compatibility, iconImage: createIcon(OSIcons, data.icon), })); @@ -119,7 +123,7 @@ export const INSTALL_METHODS = installMethods.map(method => ({ info: method.info as IntlMessageKeys, compatibility: { ...method.compatibility, - os: method.compatibility?.os?.map(os => os as UserOS), + os: method.compatibility?.os?.map(os => os as OperatingSystem), releases: method.compatibility?.releases?.map( release => release as NodeReleaseStatus ), @@ -144,8 +148,8 @@ export const PLATFORMS = Object.fromEntries( key, data.platforms.map(platform => ({ label: platform.label, - value: platform.value as UserPlatform, + value: platform.value as Platform, compatibility: platform.compatibility || {}, })), ]) -) as Record<UserOS | 'LOADING', Array<DownloadDropdownItem<UserPlatform>>>; +) as Record<OperatingSystem | 'LOADING', Array<DownloadDropdownItem<Platform>>>; diff --git a/apps/site/util/getHighEntropyValues.ts b/apps/site/util/getHighEntropyValues.ts deleted file mode 100644 index 8a066490bb666..0000000000000 --- a/apps/site/util/getHighEntropyValues.ts +++ /dev/null @@ -1,33 +0,0 @@ -/// <reference types="user-agent-data-types" /> - -// This method is used to retrieve a User's platform based on their architecture and bitness. -// @see https://wicg.github.io/ua-client-hints/#http-ua-hints -export const getHighEntropyValues = async <T extends Array<keyof UADataValues>>( - hints: T -) => { - let result: UADataValues = {}; - - // This is necessary to detect Windows 11 on Edge. - // [MDN](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues) - // [MSFT](https://learn.microsoft.com/en-us/microsoft-edge/web-platform/how-to-detect-win11) - if (typeof navigator?.userAgentData?.getHighEntropyValues === 'function') { - const entropyValues = navigator.userAgentData.getHighEntropyValues(hints); - - // Apparently in some cases this is not a Promise, we can Promisify it. - result = await Promise.resolve(entropyValues).catch( - // Fallback to an empty object if the Promise fails. - () => ({}) as UADataValues - ); - } - - const mappedResult = hints.map(hint => [ - hint, - // Since the values could come as empty string in some situations - // we should check if the hint is present in the result and if it's not an empty string. - hint in result && result[hint] ? result[hint] : undefined, - ]); - - return Object.fromEntries(mappedResult) as { - [K in T[number]]: UADataValues[K]; - }; -}; diff --git a/apps/site/util/getNodeApiLink.ts b/apps/site/util/getNodeApiLink.ts deleted file mode 100644 index ec99cd89c543b..0000000000000 --- a/apps/site/util/getNodeApiLink.ts +++ /dev/null @@ -1,17 +0,0 @@ -import semVer from 'semver'; - -import { DOCS_URL, DIST_URL } from '#site/next.constants.mjs'; - -export const getNodeApiLink = (version: string) => { - if (semVer.satisfies(version, '>=0.3.1 <0.5.1')) { - return `${DOCS_URL}${version}/api/`; - } - - if (semVer.satisfies(version, '>=0.1.14 <0.3.1')) { - return `${DOCS_URL}${version}/api.html`; - } - - return semVer.satisfies(version, '>=1.0.0 <4.0.0') - ? `https://iojs.org/dist/${version}/docs/api/` - : `${DIST_URL}${version}/docs/api/`; -}; diff --git a/apps/site/util/getUserPlatform.ts b/apps/site/util/getUserPlatform.ts deleted file mode 100644 index 496fe4dec2f24..0000000000000 --- a/apps/site/util/getUserPlatform.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type * as Types from '#site/types/userOS'; - -// This method is used to retrieve a User's platform based on their architecture and bitness. -// Note: This is only used for automatic Platform detection for supported platforms by using `useDetectOS` -// @see https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues -export const getUserPlatform = ( - userArchitecture: Types.UserArchitecture | '', - userBitness: Types.UserBitness | '' -): Types.UserPlatform => { - if (userArchitecture === 'arm' && userBitness === '64') { - return 'arm64'; - } - - return userBitness === '64' ? 'x64' : 'x86'; -}; diff --git a/apps/site/util/gitHubUtils.ts b/apps/site/util/github.ts similarity index 100% rename from apps/site/util/gitHubUtils.ts rename to apps/site/util/github.ts diff --git a/apps/site/util/hexToRGBA.ts b/apps/site/util/hexToRGBA.ts deleted file mode 100644 index fcafe312303f4..0000000000000 --- a/apps/site/util/hexToRGBA.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const hexToRGBA = (hex = '', alpha = 0.9) => { - hex = hex.replace(/^#/, ''); - - const bigint = parseInt(hex, 16); - const r = (bigint >> 16) & 255; - const g = (bigint >> 8) & 255; - const b = bigint & 255; - - return `rgba(${r}, ${g}, ${b}, ${alpha})`; -}; diff --git a/apps/site/util/deepMerge.ts b/apps/site/util/objects.ts similarity index 55% rename from apps/site/util/deepMerge.ts rename to apps/site/util/objects.ts index 751c09a3afe16..b8e92400e8d81 100644 --- a/apps/site/util/deepMerge.ts +++ b/apps/site/util/objects.ts @@ -1,4 +1,21 @@ -export default function deepMerge<Obj1 extends object, Obj2 extends object>( +type DebounceFunction<T = unknown> = (...args: Array<T>) => void; + +export const debounce = <T extends DebounceFunction>( + func: T, + delay: number +): ((...args: Parameters<T>) => void) => { + let timeoutId: NodeJS.Timeout; + + return (...args: Parameters<T>) => { + clearTimeout(timeoutId); + + timeoutId = setTimeout(() => { + func(...args); + }, delay); + }; +}; + +export function deepMerge<Obj1 extends object, Obj2 extends object>( obj1: Obj1, obj2: Obj2 ): Obj1 & Obj2 { diff --git a/apps/site/util/stringUtils.ts b/apps/site/util/string.ts similarity index 100% rename from apps/site/util/stringUtils.ts rename to apps/site/util/string.ts diff --git a/apps/site/util/getNodeDownloadUrl.ts b/apps/site/util/url.ts similarity index 80% rename from apps/site/util/getNodeDownloadUrl.ts rename to apps/site/util/url.ts index d5f2a8ef0c44d..9fde24b05294e 100644 --- a/apps/site/util/getNodeDownloadUrl.ts +++ b/apps/site/util/url.ts @@ -1,12 +1,26 @@ -import { DIST_URL } from '#site/next.constants.mjs'; -import type { UserOS, UserPlatform } from '#site/types/userOS'; +import { satisfies } from 'semver'; -export type DownloadKind = 'installer' | 'binary' | 'source'; +import { DOCS_URL, DIST_URL } from '#site/next.constants.mjs'; +import type { OperatingSystem, Platform, DownloadKind } from '#site/types'; + +export const getNodeApiUrl = (version: string) => { + if (satisfies(version, '>=0.3.1 <0.5.1')) { + return `${DOCS_URL}${version}/api/`; + } + + if (satisfies(version, '>=0.1.14 <0.3.1')) { + return `${DOCS_URL}${version}/api.html`; + } + + return satisfies(version, '>=1.0.0 <4.0.0') + ? `https://iojs.org/dist/${version}/docs/api/` + : `${DIST_URL}${version}/docs/api/`; +}; export const getNodeDownloadUrl = ( versionWithPrefix: string, - os: UserOS | 'LOADING', - platform: UserPlatform = 'x64', + os: OperatingSystem | 'LOADING', + platform: Platform = 'x64', kind: DownloadKind = 'installer' ) => { const baseURL = `${DIST_URL}${versionWithPrefix}`; diff --git a/apps/site/util/userAgent.ts b/apps/site/util/userAgent.ts new file mode 100644 index 0000000000000..9f2417f7ee867 --- /dev/null +++ b/apps/site/util/userAgent.ts @@ -0,0 +1,88 @@ +/// <reference types="user-agent-data-types" /> + +import type { + OperatingSystem, + Architecture, + Bitness, + Platform, +} from '#site/types'; + +// Constants for better maintainability +const OS_PATTERNS = /(Win|Mac|Linux|AIX)/; +const EMPTY_UA_DATA: UADataValues = {}; + +/** + * Detects operating system from user agent string + * @param userAgent - The user agent string to parse + * @returns The detected OS or 'OTHER' if not recognized + */ +export const detectOsInUserAgent = ( + userAgent: string | undefined +): OperatingSystem => { + const osMatch = userAgent?.match(OS_PATTERNS); + return osMatch ? (osMatch[1].toUpperCase() as OperatingSystem) : 'OTHER'; +}; + +/** + * Detects operating system using navigator.userAgent + * Note: navigator.appVersion is deprecated, so we use userAgent instead + * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/appVersion + */ +export const detectOS = (): OperatingSystem => + detectOsInUserAgent(navigator?.userAgent); + +/** + * Determines user platform based on architecture and bitness + * Used for automatic platform detection with `useDetectOS` + * @see https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues + */ +export const getUserPlatform = ( + userArchitecture: Architecture | '', + userBitness: Bitness | '' +): Platform => { + if (userArchitecture === 'arm' && userBitness === '64') { + return 'arm64'; + } + + return userBitness === '64' ? 'x64' : 'x86'; +}; + +/** + * Retrieves high entropy values from User-Agent Client Hints API + * This method is used to get detailed user platform information including architecture and bitness + * Necessary for detecting Windows 11 on Edge and other platform-specific features + * + * @param hints - Array of hint keys to retrieve + * @returns Promise resolving to an object with requested hint values + * + * @see https://wicg.github.io/ua-client-hints/#http-ua-hints + * @see https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues + * @see https://learn.microsoft.com/en-us/microsoft-edge/web-platform/how-to-detect-win11 + */ +export const getHighEntropyValues = async <T extends Array<keyof UADataValues>>( + hints: T +): Promise<{ [K in T[number]]: UADataValues[K] }> => { + let result: UADataValues = EMPTY_UA_DATA; + + // Check if the User-Agent Client Hints API is available + if (typeof navigator?.userAgentData?.getHighEntropyValues === 'function') { + try { + const entropyValues = navigator.userAgentData.getHighEntropyValues(hints); + // Handle both Promise and non-Promise return values + result = await Promise.resolve(entropyValues); + } catch { + // Fallback to empty object if the API call fails + result = EMPTY_UA_DATA; + } + } + + // Map hints to their values, filtering out empty strings + const mappedResult = hints.map(hint => [ + hint, + hint in result && result[hint] ? result[hint] : undefined, + ]); + + return Object.fromEntries(mappedResult) as { + [K in T[number]]: UADataValues[K]; + }; +}; From 84fa7250f185322b323cb5424dba7337d2eed061 Mon Sep 17 00:00:00 2001 From: Sajad Torkamani <sajadtorkamani1@gmail.com> Date: Sat, 28 Jun 2025 09:22:44 +0100 Subject: [PATCH 0580/1385] docs: improve wording (#7898) * Update debugging.md Signed-off-by: Sajad Torkamani <sajadtorkamani1@gmail.com> * refactor: fix formatting --------- Signed-off-by: Sajad Torkamani <sajadtorkamani1@gmail.com> --- .../en/learn/getting-started/debugging.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/site/pages/en/learn/getting-started/debugging.md b/apps/site/pages/en/learn/getting-started/debugging.md index 6b9504dca8945..5b8c9e1c1517d 100644 --- a/apps/site/pages/en/learn/getting-started/debugging.md +++ b/apps/site/pages/en/learn/getting-started/debugging.md @@ -121,17 +121,17 @@ See https://eclipse.org/eclipseide for more information. The following table lists the impact of various runtime flags on debugging: -| Flag | Meaning | -| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| --inspect | Enable inspector agent; Listen on default address and port (127.0.0.1:9229) | -| --inspect=[host:port] | Enable inspector agent; Bind to address or hostname host (default: 127.0.0.1); Listen on port port (default: 9229) | -| --inspect-brk | Enable inspector agent; Listen on default address and port (127.0.0.1:9229); Break before user code starts | -| --inspect-brk=[host:port] | Enable inspector agent; Bind to address or hostname host (default: 127.0.0.1); Listen on port port (default: 9229); Break before user code starts | -| --inspect-wait | Enable inspector agent; Listen on default address and port (127.0.0.1:9229); Wait for debugger to be attached. | -| --inspect-wait=[host:port] | Enable inspector agent; Bind to address or hostname host (default: 127.0.0.1); Listen on port port (default: 9229); Wait for debugger to be attached. | -| --disable-sigusr1 | Disable the ability of starting a debugging session by sending a SIGUSR1 signal to the process. | -| node inspect script.js | Spawn child process to run user's script under --inspect flag; and use main process to run CLI debugger. | -| node inspect --port=xxxx script.js | Spawn child process to run user's script under --inspect flag; and use main process to run CLI debugger. Listen on port port (default: 9229) | +| Flag | Meaning | +| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| --inspect | Enable inspector agent; Listen on default address and port (127.0.0.1:9229) | +| --inspect=[host:port] | Enable inspector agent; Bind to address or hostname `host` (default: 127.0.0.1); Listen on port `port` (default: 9229) | +| --inspect-brk | Enable inspector agent; Listen on default address and port (127.0.0.1:9229); Break before user code starts | +| --inspect-brk=[host:port] | Enable inspector agent; Bind to address or hostname `host` (default: 127.0.0.1); Listen on port `port` (default: 9229); Break before user code starts | +| --inspect-wait | Enable inspector agent; Listen on default address and port (127.0.0.1:9229); Wait for debugger to be attached. | +| --inspect-wait=[host:port] | Enable inspector agent; Bind to address or hostname `host` (default: 127.0.0.1); Listen on port `port` (default: 9229); Wait for debugger to be attached. | +| --disable-sigusr1 | Disable the ability of starting a debugging session by sending a SIGUSR1 signal to the process. | +| node inspect script.js | Spawn child process to run user's script under --inspect flag; and use main process to run CLI debugger. | +| node inspect --port=xxxx script.js | Spawn child process to run user's script under --inspect flag; and use main process to run CLI debugger. Listen on port `port` (default: 9229) | ## Enabling remote debugging scenarios From a0f03ae69979a5fea7c16262ff88cbeef11452c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= <arauujogui@gmail.com> Date: Sat, 28 Jun 2025 14:31:17 -0300 Subject: [PATCH 0581/1385] fix(site): close release modal on eol link click (#7903) * fix(site): close release modal on eol button click * feat: review nits * feat: reorder alertbox --- .../Downloads/ReleaseModal/index.tsx | 35 ++++++++++++------- packages/i18n/locales/en.json | 6 ++-- .../Common/Modal/index.module.css | 6 ++-- .../Common/Modal/index.stories.tsx | 12 ++++--- packages/ui-components/Common/Modal/index.tsx | 30 ++++++++-------- 5 files changed, 52 insertions(+), 37 deletions(-) diff --git a/apps/site/components/Downloads/ReleaseModal/index.tsx b/apps/site/components/Downloads/ReleaseModal/index.tsx index a8887a5397116..3f0bf31f71edb 100644 --- a/apps/site/components/Downloads/ReleaseModal/index.tsx +++ b/apps/site/components/Downloads/ReleaseModal/index.tsx @@ -1,5 +1,5 @@ import AlertBox from '@node-core/ui-components/Common/AlertBox'; -import Modal from '@node-core/ui-components/Common/Modal'; +import { Modal, Title, Content } from '@node-core/ui-components/Common/Modal'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; @@ -32,7 +32,7 @@ const ReleaseModal: FC<ReleaseModalProps> = ({ }); return ( - <Modal open={isOpen} onOpenChange={closeModal} heading={modalHeading}> + <Modal open={isOpen} onOpenChange={closeModal}> {release.status === 'End-of-life' && ( <AlertBox title={t('components.common.alertBox.warning')} @@ -40,7 +40,14 @@ const ReleaseModal: FC<ReleaseModalProps> = ({ size="small" > {t.rich('components.releaseModal.unsupportedVersionWarning', { - link: text => <Link href="/about/previous-releases/">{text}</Link>, + link: text => ( + <Link + onClick={closeModal} + href="/about/previous-releases#release-schedule" + > + {text} + </Link> + ), })} </AlertBox> )} @@ -57,19 +64,23 @@ const ReleaseModal: FC<ReleaseModalProps> = ({ </AlertBox> )} - {release.releaseAnnounceLink && ( - <LinkWithArrow href={release.releaseAnnounceLink}> - {t('components.releaseModal.releaseAnnouncement')} - </LinkWithArrow> - )} + <Title>{modalHeading} + + + {release.releaseAnnounceLink && ( + + {t('components.releaseModal.releaseAnnouncement')} + + )} -
{t('components.releaseModal.overview')}
+
{t('components.releaseModal.overview')}
- + -
{t('components.releaseModal.minorVersions')}
+
{t('components.releaseModal.minorVersions')}
- + +
); }; diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json index a1e9f6a3699d9..064b82e74f790 100644 --- a/packages/i18n/locales/en.json +++ b/packages/i18n/locales/en.json @@ -163,12 +163,12 @@ "details": "Details" }, "releaseModal": { - "title": "Node.js {version} ({codename})", - "titleWithoutCodename": "Node.js {version}", + "title": "Node.js v{version} ({codename})", + "titleWithoutCodename": "Node.js v{version}", "overview": "Overview", "minorVersions": "Minor versions", "releaseAnnouncement": "Release Announcement", - "unsupportedVersionWarning": "This version is out of maintenance. Please use a currently supported version. Understand EOL support.", + "unsupportedVersionWarning": "This version is out of maintenance. Please use a supported version. Understand EOL support.", "ltsVersionFeaturesNotice": "Want new features sooner? Get the latest Node.js version instead and try the latest improvements!" }, "minorReleasesTable": { diff --git a/packages/ui-components/Common/Modal/index.module.css b/packages/ui-components/Common/Modal/index.module.css index 5b399767fdf7e..d5e385f7228bd 100644 --- a/packages/ui-components/Common/Modal/index.module.css +++ b/packages/ui-components/Common/Modal/index.module.css @@ -17,6 +17,7 @@ w-full max-w-3xl flex-col + gap-2 overflow-y-auto rounded border @@ -47,8 +48,7 @@ } .title { - @apply mb-2 - text-3xl + @apply text-3xl font-semibold text-neutral-900 dark:text-white; @@ -56,7 +56,7 @@ .description { @apply font-regular - mb-4 + mb-2 text-lg text-neutral-800 dark:text-neutral-200; diff --git a/packages/ui-components/Common/Modal/index.stories.tsx b/packages/ui-components/Common/Modal/index.stories.tsx index 8040bbd63134e..350be68bd68b5 100644 --- a/packages/ui-components/Common/Modal/index.stories.tsx +++ b/packages/ui-components/Common/Modal/index.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import Modal from '#ui/Common/Modal'; +import { Modal, Title, Description, Content } from '#ui/Common/Modal'; type Story = StoryObj; type Meta = MetaObj; @@ -8,10 +8,12 @@ type Meta = MetaObj; export const Default: Story = { args: { open: true, - heading: 'Node.js Versions Information', - subheading: 'Get all information about Node.js versions and their changes.', children: ( - <> + + Node.js Versions Information + + Get all information about Node.js versions and their changes. +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto atque sint doloremque, sapiente recusandae debitis libero nostrum @@ -24,7 +26,7 @@ export const Default: Story = { amet minus sit architecto blanditiis hic sed odit cumque numquam dignissimos delectus.

- +
), }, }; diff --git a/packages/ui-components/Common/Modal/index.tsx b/packages/ui-components/Common/Modal/index.tsx index 787a80e0cb73a..d254ce40facd5 100644 --- a/packages/ui-components/Common/Modal/index.tsx +++ b/packages/ui-components/Common/Modal/index.tsx @@ -7,15 +7,11 @@ import type { FC, PropsWithChildren } from 'react'; import styles from './index.module.css'; type ModalProps = PropsWithChildren<{ - heading: string; - subheading?: string; open?: boolean; onOpenChange?: (open: boolean) => void; }>; const Modal: FC = ({ - heading, - subheading, children, open = false, onOpenChange = () => {}, @@ -28,15 +24,7 @@ const Modal: FC = ({ - {heading} - - {subheading && ( - - {subheading} - - )} - -
{children}
+ {children} @@ -45,4 +33,18 @@ const Modal: FC = ({ ); -export default Modal; +const Title = ({ children }: PropsWithChildren) => ( + {children} +); + +const Description = ({ children }: PropsWithChildren) => ( + + {children} + +); + +const Content = ({ children }: PropsWithChildren) => ( +
{children}
+); + +export { Modal, Title, Description, Content }; From 3ab796a53693595665a3a5e98704830f46ef3783 Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Sat, 28 Jun 2025 19:44:25 +0200 Subject: [PATCH 0582/1385] [automated]: crowdin sync (#7900) * 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 <118344674+github-merge-queue@users.noreply.github.com> --- apps/site/pages/fr/index.mdx | 124 ++++++++++++++++++++++++++++++++++ apps/site/pages/ja/index.mdx | 124 ++++++++++++++++++++++++++++++++++ packages/i18n/locales/fr.json | 4 +- packages/i18n/locales/ja.json | 4 +- 4 files changed, 254 insertions(+), 2 deletions(-) create mode 100644 apps/site/pages/fr/index.mdx create mode 100644 apps/site/pages/ja/index.mdx diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx new file mode 100644 index 0000000000000..c889e618669a6 --- /dev/null +++ b/apps/site/pages/fr/index.mdx @@ -0,0 +1,124 @@ +--- +title: Exécuter du JavaScript partout +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, des outils en ligne de commande et des scripts. + +
+ +
+
+ + + + + +
+ +
+
+ +
+
+ ```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 { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; + 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/ja/index.mdx b/apps/site/pages/ja/index.mdx new file mode 100644 index 0000000000000..81c87d4a41b0d --- /dev/null +++ b/apps/site/pages/ja/index.mdx @@ -0,0 +1,124 @@ +--- +title: どこでもJavaScriptを使おう +layout: home +--- + +
+ + +
+

どこでもJavaScriptを使おう

+ + Node.js®はクロスプラットフォームに対応したフリーでオープンソースのJavaScript実行環境です。開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトなどを開発する環境を提供します。 + +
+ +
+
+ + + + + +
+ +
+
+ +
+
+ ```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 { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; + 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/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index 4b9a0fa5b742d..3ab68c51fa7cc 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -168,7 +168,8 @@ "overview": "Vue d'ensemble", "minorVersions": "Versions mineures", "releaseAnnouncement": "Annonce de publication", - "unsupportedVersionWarning": "Cette version ne fait plus l'objet d'une maintenance. Veuillez utiliser une version actuellement supportée. Comprendre l'accompagnement de fin de vie." + "unsupportedVersionWarning": "Cette version ne fait plus l'objet d'une maintenance. Veuillez utiliser une version actuellement supportée. Comprendre l'accompagnement de fin de vie.", + "ltsVersionFeaturesNotice": "Vous voulez de nouvelles fonctionnalités plus tôt ? Téléchargez la dernière version de Node.js à la place et essayez les dernières améliorations !" }, "minorReleasesTable": { "version": "Version", @@ -319,6 +320,7 @@ }, "codeBox": { "unsupportedVersionWarning": "Cette version ne fait plus l'objet d'une maintenance. Veuillez utiliser une version actuellement supportée. Comprendre l'accompagnement de fin de vie.", + "ltsVersionFeaturesNotice": "Vous voulez de nouvelles fonctionnalités plus tôt ? Procurez-vous plutôt la dernière version de Node.js et essayez les dernières améliorations !", "communityPlatformInfo": "Les méthodes d'installation qui impliquent des logiciels communautaires sont soutenues par les équipes qui maintiennent ces logiciels.", "externalSupportInfo": "Si vous rencontrez des problèmes, veuillez consulter le site web de {platform}", "noScriptDetected": "Cette page nécessite JavaScript. Vous pouvez télécharger Node.js sans JavaScript en visitant directement la page page de diffusion directement.", diff --git a/packages/i18n/locales/ja.json b/packages/i18n/locales/ja.json index e08ca56dc88c4..896e8bfe92a09 100644 --- a/packages/i18n/locales/ja.json +++ b/packages/i18n/locales/ja.json @@ -168,7 +168,8 @@ "overview": "概要", "minorVersions": "マイナーバージョン", "releaseAnnouncement": "リリース", - "unsupportedVersionWarning": "このバージョンのメンテナンスは終了しています。現在サポートされているバージョンを利用してください。" + "unsupportedVersionWarning": "このバージョンのメンテナンスは終了しています。現在サポートされているバージョンを利用してください。EOLのサポートについて。", + "ltsVersionFeaturesNotice": "すぐに最新の機能を試したいですか?最新バージョンのNode.jsを代わりにインストールして最新の機能を試してください!" }, "minorReleasesTable": { "version": "バージョン", @@ -319,6 +320,7 @@ }, "codeBox": { "unsupportedVersionWarning": "このバージョンのメンテナンスは終了しています。現在サポートされているバージョンを利用してください。EOLのサポートについて。", + "ltsVersionFeaturesNotice": "すぐに最新の機能を試したいですか?最新バージョンのNode.jsを代わりにインストールして最新の機能を試してください!", "communityPlatformInfo": "コミュニティーソフトウェアを含むインストール方法はそのソフトウェアを管理しているチームによってサポートされます。", "externalSupportInfo": "もし何らかの問題を見つけた場合は{platform}のウェブサイトを参照してください。", "noScriptDetected": "このページはJavaScriptが必要です。JavaScriptなしでもリリースページから直接Node.jsをダウンロードできます。", From c15a2a3dbb66f7f4a8e308b589f1481f88a156bb Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Mon, 30 Jun 2025 17:59:55 +0200 Subject: [PATCH 0583/1385] feat(blog): Emelia Smith Pride Post (#7907) * Create 2025-06-28-Emelia-Smith.md Signed-off-by: Emelia Smith * Apply suggestions from code review Co-authored-by: Aviv Keller Signed-off-by: Emelia Smith * Apply suggestions from code review Co-authored-by: Aviv Keller Signed-off-by: Emelia Smith * Apply suggestions from code review Signed-off-by: Emelia Smith * Run format * Fix test failure due to colon in title of frontmatter * Reworking a few paragraphs a little * Adopting more review and adjusting language to read easier * Adjust the last paragraph because it didn't feel right * Update apps/site/pages/en/blog/community/2025-06-28-Emelia-Smith.md Co-authored-by: Antoine du Hamel Signed-off-by: Emelia Smith * Hopefully final adjustments * Add emelia to authors * Re-review and fix the double paragraph and awkward language issues * Update apps/site/pages/en/blog/community/2025-06-28-Emelia-Smith.md Co-authored-by: Antoine du Hamel Signed-off-by: Emelia Smith --------- Signed-off-by: Emelia Smith Co-authored-by: Aviv Keller Co-authored-by: Antoine du Hamel --- apps/site/authors.json | 5 +++ .../blog/community/2025-06-28-Emelia-Smith.md | 37 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 apps/site/pages/en/blog/community/2025-06-28-Emelia-Smith.md diff --git a/apps/site/authors.json b/apps/site/authors.json index cecd925a3ab7f..646f4d2be3b06 100644 --- a/apps/site/authors.json +++ b/apps/site/authors.json @@ -83,6 +83,11 @@ "name": "Domenic Denicola", "website": "https://github.com/domenic" }, + "Emelia Smith": { + "id": "thisismissem", + "name": "Emelia Smith", + "website": "https://github.com/thisismissem" + }, "Emily Rose": { "id": "emilyrose", "name": "Emily Rose", diff --git a/apps/site/pages/en/blog/community/2025-06-28-Emelia-Smith.md b/apps/site/pages/en/blog/community/2025-06-28-Emelia-Smith.md new file mode 100644 index 0000000000000..7d2b78a34c1b6 --- /dev/null +++ b/apps/site/pages/en/blog/community/2025-06-28-Emelia-Smith.md @@ -0,0 +1,37 @@ +--- +date: '2025-06-30T16:00:00.000Z' +category: community +title: 'Node.js LGBTQIA+ Stories: Emelia Smith' +layout: blog-post +author: Emelia Smith +--- + +# Node.js LGBTQIA+ Stories: Emelia Smith + +[Carl](https://nodejs.org/en/blog/community/2025-pride) put it rather elegantly in the opening blog post for this series, when he said “When we were young, the rules for many of us were simple. Boys like girls, and vice-versa. A mommy meets a daddy and if they love each other enough, baby comes!”, and that resonates with my own experiences. + +I grew up in a very rural part of Australia, in a small country town. It was incredibly hot in the summers, and there wasn't a whole lot to do. Growing up, I knew people could be gay, but didn't know anyone who was actually gay, I knew transgender people existed but didn't understand someone like me could be transgender. Society just wasn't as accepting of LGBTQIA+ identities then as it is today. I always felt like I didn't quite fit in with the society I lived in. + +As there was little else to do in that part of Australia, besides play football or go swimming, I ended up seeking refuge in online communities. Originally I wanted to be a graphic designer, because I loved art, that took me to DeviantART.com, where I found my way into internet chat rooms. One of those chat rooms was a tech support room: I liked computers, so why not help people with them? One thing lead to another, and I found myself doing programming and learning all about web development. + +It was 2008 when I first realized that maybe this web development stuff could be a career, when a recruiter had seen some blog posts of mine about the client for DeviantART's chat rooms that I'd been building using XULRunner. I was 15 at the time, and couldn't quite believe it, ultimately it didn't pan out, but it did show me that there was value in what I was learning and that I could find future employment from doing things on my computer. Things were different back in 2008. The chat client I'd been working on was my first taste of asynchronous network I/O, and I liked it. + +Fast-forward a year, when Node.js was [announced by Ryan at JSConf.eu](https://www.youtube.com/watch?v=EeYvFl7li9E), once I watched the video, I immediately wanted to try to use it. It seemed so much better than what I was used to working with in XULRunner for network I/O. One thing lead to another, and I began contributing to Node.js. Back then, this was pretty easy as the code was still new and there were plenty of bugs to fix and features to add. I was there from pretty early on, I saw the birth of npm and package managers for JavaScript, I saw the first versions of connect and express, and watched the project grow. It was an exciting time! + +My early contributions to Node.js were adding the [`fs.readdirSync`](https://github.com/nodejs/node/commit/05d6da6c4af25fc417902ad1bbae9198e58ff37a) method, adding [`fs.chmod`](https://github.com/nodejs/node/commit/bcc032e43aac86d71739150009d8d75b5a9de26f), and implementing the [`'upgrade'` event](https://github.com/nodejs/node/commit/f990f24ad36ddaff3c378531d15ea5c052467d41) that enabled implementing WebSockets in Node.js (I maintained one of the first [WebSocket server packages](https://www.npmjs.com/package/node-websocket-server)). I kept contributing regularly and learned a lot from the early community. + +The largest change I made to Node.js was splitting up the [documentation into multiple files and pages](https://github.com/nodejs/node/commit/e190c9616ed0b05eb66e1ae6681a8bb4a5f5f3e5), prior to this change, all the documentation had been on a single large page only. This change lifted me up to be within the top ten contributors to the project at the time, due to the sheer number of lines of code changed. This was the contribution that lead to me getting a job straight out of high school with a company in San Francisco, which allowed me to meet many of the community members I'd interacted with on IRC. I also ran one of the first Node.js podcasts with Mikeal Rogers called The Noded, and there's still some unreleased interviews from key people in the project from 2010 (maybe one day I'll edit and release these?). + +It wasn't until I was in my mid-20s that I realised I was queer. I remember being on a bus to the office, and pondering the question "are men's and women's clothes really that different?", it was an odd question for someone who at the time still considered themselves straight and cisgender, but it was something I explored mentally before concluding that "no, they're all just clothes, they're not that different". That moment was really just me trying to give myself permission to try dressing differently, telling myself it wasn't taboo to try something different. Around the same time, I was having issues where I did not recognize myself in the mirror, which lead me to realising that I wasn't the cisgender guy I thought I was. On New Year's Eve of 2014/2015, I came out as genderqueer, and began experimenting with my gender presentation. + +Around the time I was figuring things out, I met some more wonderful queer people (thank you so much to [Jessie](https://mastodon.social/@jessie) for organising the meet up that helped me initially get out of the closet). I decided London wasn't the place for me to be, so I moved to Berlin, and continued working with Node.js and building startups. After about a year, I realised that I wasn't just genderqueer, but actually a transgender woman, who is also a lesbian. + +Now, I've been out and proud for a decade, I still contribute to Open Source frequently, in fact, a large percentage of my work today is on Open Source software. I still use Node.js regularly, and contribute to various packages, but not to the core project anymore. My time now is taken up with my own Open Source projects and contributing to [Mastodon](https://github.com/mastodon/mastodon/pulls?q=is%3Amerged+is%3Apr+author%3AThisIsMissEm+), [Hollo](https://github.com/fedify-dev/hollo/pulls?q=is%3Amerged+is%3Apr+author%3AThisIsMissEm+) and helping people with the [Adonis.js Framework](https://adonisjs.com). Chances are, you've probably used software I've contributed to in one way or another. You've almost certainly used code or patterns that LGBTQIA+ individuals have created. + +Node.js has always had strong participation and representation from the LGBTQIA+ community. For me, Node.js and DeviantART communities were a refuge for me, when I was living in a world I didn't quite fit into, I found safety. Without Node.js, I wouldn't have had the experiences I have, I wouldn't have met the wonderful people I have met, nor would I have gotten out of that dusty small country town, broadened my horizons, changed, and found my happiness. + +Node.js is very much so to thank for who I am today. + +--- + +You can find me on Mastodon as [@thisismissem@hachyderm.io](https://hachyderm.io/@thisismissem), and support my Open Source work financially at: [https://support.thisismissem.social](https://support.thisismissem.social). From a591c0c29f9e5590acd77dbe64ac51ef8c03753c Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Tue, 1 Jul 2025 06:13:47 -0400 Subject: [PATCH 0584/1385] chore(logo): use default logo (#7910) --- apps/site/site.json | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/site/site.json b/apps/site/site.json index 6da498a337cd1..919c132a3e00b 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -3,7 +3,6 @@ "description": "Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.", "favicon": "/static/images/favicons/favicon.png", "accentColor": "#333", - "logoVariant": "pride", "twitter": { "username": "@nodejs", "card": "summary", From 6ce9ac9c19dbcf93f5af658cca3784484762d8a3 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Tue, 1 Jul 2025 11:17:33 -0400 Subject: [PATCH 0585/1385] fix(table): only apply border to immediate `td` children (#7911) * fix(table): only apply border to immediate `td` children Signed-off-by: Aviv Keller * story * use old name --------- Signed-off-by: Aviv Keller --- .../__design__/table.stories.tsx | 40 ++++++++++--------- packages/ui-components/styles/markdown.css | 2 +- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/packages/ui-components/__design__/table.stories.tsx b/packages/ui-components/__design__/table.stories.tsx index 1bdd818e2a32b..c19c8bd4832ab 100644 --- a/packages/ui-components/__design__/table.stories.tsx +++ b/packages/ui-components/__design__/table.stories.tsx @@ -25,24 +25,28 @@ export const Table: StoryObj = { ))} ))} - - -
- ), -}; - -export const HeadlessTable: StoryObj = { - render: () => ( -
- - - {tableData.map((row, rowIndex) => ( - - {row.map((cell, cellIndex) => ( - - ))} - - ))} + + +
{cell}
+ + + + + + + + + + + + + + + + + +
Sub 1Sub 2
Sub ASub B
Sub CSub D
+
diff --git a/packages/ui-components/styles/markdown.css b/packages/ui-components/styles/markdown.css index 862cd6450f05e..efdfa4c9a328b 100644 --- a/packages/ui-components/styles/markdown.css +++ b/packages/ui-components/styles/markdown.css @@ -157,7 +157,7 @@ main { @apply font-semibold; } - tr:last-child td { + tr:last-child > td { @apply sm:border-b-0; &:last-child { From a7ba5fcdf6bc5180173cf25383fb673806db7a8d Mon Sep 17 00:00:00 2001 From: "Claudio W." Date: Wed, 2 Jul 2025 17:43:00 +0200 Subject: [PATCH 0586/1385] chore(homepage): link to our blog, rather than HeroDevs (#7883) * chore; moves the link from herodevs to our ESP blog post Signed-off-by: Claudio W. * Update apps/site/pages/en/index.mdx Co-authored-by: Aviv Keller Signed-off-by: Claudio W. --------- Signed-off-by: Claudio W. Co-authored-by: Aviv Keller --- apps/site/pages/en/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index 458f1a3e951d8..cde8da1dc141d 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -21,7 +21,7 @@ layout: home - + - + + +
+ + {({ release }) => + + Node.js LTS + } + + + + {({ release }) => + + Node.js Current + } + +
+ + "LTS" refers to the long-term support version of Node.js. Learn more about Node.js releases. diff --git a/packages/ui-components/src/Common/AlertBox/index.module.css b/packages/ui-components/src/Common/AlertBox/index.module.css index 6aa272d8ff19b..58e8101f89fbf 100644 --- a/packages/ui-components/src/Common/AlertBox/index.module.css +++ b/packages/ui-components/src/Common/AlertBox/index.module.css @@ -74,6 +74,14 @@ } } + &.neutral { + @apply bg-neutral-600; + + .title { + @apply bg-neutral-700; + } + } + code { /* Ignore the styles from `markdown.css` */ all: unset; diff --git a/packages/ui-components/src/Common/AlertBox/index.stories.tsx b/packages/ui-components/src/Common/AlertBox/index.stories.tsx index d900597de6e2f..12dfbeee31506 100644 --- a/packages/ui-components/src/Common/AlertBox/index.stories.tsx +++ b/packages/ui-components/src/Common/AlertBox/index.stories.tsx @@ -52,6 +52,16 @@ export const Danger: Story = { }, }; +export const Neutral: Story = { + args: { + level: 'neutral', + title: 'Note', + children: + "This is a neutral informational message that doesn't fit into the other alert categories.", + size: 'default', + }, +}; + export const InMarkdown: Story = { args: { level: 'danger', diff --git a/packages/ui-components/src/Common/AlertBox/index.tsx b/packages/ui-components/src/Common/AlertBox/index.tsx index 346c8fb07e999..de4b1d3a5d634 100644 --- a/packages/ui-components/src/Common/AlertBox/index.tsx +++ b/packages/ui-components/src/Common/AlertBox/index.tsx @@ -4,7 +4,7 @@ import type { FC, PropsWithChildren } from 'react'; import styles from './index.module.css'; type AlertBoxProps = PropsWithChildren<{ - level: 'info' | 'success' | 'warning' | 'danger'; + level: 'info' | 'success' | 'warning' | 'danger' | 'neutral'; title: string; size?: 'default' | 'small'; }>; diff --git a/packages/ui-components/src/Common/Badge/index.module.css b/packages/ui-components/src/Common/Badge/index.module.css index 19bdba865743c..944bd2b39af77 100644 --- a/packages/ui-components/src/Common/Badge/index.module.css +++ b/packages/ui-components/src/Common/Badge/index.module.css @@ -35,4 +35,16 @@ bg-warning-600 dark:border-warning-600; } + + &.info { + @apply border-info-200 + bg-info-600 + dark:border-info-800; + } + + &.neutral { + @apply border-neutral-200 + bg-neutral-600 + dark:border-neutral-800; + } } diff --git a/packages/ui-components/src/Common/Badge/index.stories.tsx b/packages/ui-components/src/Common/Badge/index.stories.tsx index 86df07062de4d..b5be7b849a75c 100644 --- a/packages/ui-components/src/Common/Badge/index.stories.tsx +++ b/packages/ui-components/src/Common/Badge/index.stories.tsx @@ -23,6 +23,18 @@ export const Warning: Story = { }, }; +export const Info: Story = { + args: { + kind: 'info', + }, +}; + +export const Neutral: Story = { + args: { + kind: 'neutral', + }, +}; + export const Small: Story = { args: { size: 'small', diff --git a/packages/ui-components/src/Common/Badge/index.tsx b/packages/ui-components/src/Common/Badge/index.tsx index 5b9730368e35d..1a6dc8efa6cc2 100644 --- a/packages/ui-components/src/Common/Badge/index.tsx +++ b/packages/ui-components/src/Common/Badge/index.tsx @@ -3,10 +3,11 @@ import type { FC, HTMLAttributes, PropsWithChildren } from 'react'; import styles from './index.module.css'; -type BadgeKind = 'default' | 'warning' | 'error'; +type BadgeKind = 'default' | 'warning' | 'error' | 'info' | 'neutral'; +type BadgeSize = 'small' | 'medium'; type BadgeProps = HTMLAttributes & { - size?: 'small' | 'medium'; + size?: BadgeSize; kind?: BadgeKind; }; diff --git a/packages/ui-components/src/Common/BadgeGroup/index.module.css b/packages/ui-components/src/Common/BadgeGroup/index.module.css index 754356aa6012c..7f53505bd92a4 100644 --- a/packages/ui-components/src/Common/BadgeGroup/index.module.css +++ b/packages/ui-components/src/Common/BadgeGroup/index.module.css @@ -1,8 +1,9 @@ @reference "../../styles/index.css"; .wrapper { - @apply flex - w-fit + @apply xs:w-fit + flex + w-full items-center rounded-full border @@ -35,7 +36,8 @@ dark:text-green-300; } - .message { + .message, + .message a:not(:hover) { @apply text-green-700 dark:text-green-300; } @@ -52,7 +54,8 @@ dark:text-danger-300; } - .message { + .message, + .message a:not(:hover) { @apply text-danger-700 dark:text-danger-300; } @@ -69,9 +72,46 @@ dark:text-warning-300; } - .message { + .message, + .message a:not(:hover) { @apply text-warning-700 dark:text-warning-300; } } + + &.info { + @apply border-info-200 + bg-info-100 + dark:border-info-700 + dark:bg-neutral-900; + + .icon { + @apply text-info-500 + dark:text-info-300; + } + + .message, + .message a:not(:hover) { + @apply text-info-700 + dark:text-info-300; + } + } + + &.neutral { + @apply border-neutral-200 + bg-neutral-100 + dark:border-neutral-700 + dark:bg-neutral-900; + + .icon { + @apply text-neutral-500 + dark:text-neutral-300; + } + + .message, + .message a:not(:hover) { + @apply text-neutral-700 + dark:text-neutral-300; + } + } } diff --git a/packages/ui-components/src/Common/BadgeGroup/index.stories.tsx b/packages/ui-components/src/Common/BadgeGroup/index.stories.tsx index ae100c07c653a..b3e746ca14cfc 100644 --- a/packages/ui-components/src/Common/BadgeGroup/index.stories.tsx +++ b/packages/ui-components/src/Common/BadgeGroup/index.stories.tsx @@ -14,6 +14,16 @@ export const Default: Story = { }, }; +export const SmallDefault: Story = { + args: { + href: '/', + children: 'OpenJS Foundation Certification 2023', + kind: 'default', + badgeText: 'New', + size: 'small', + }, +}; + export const Error: Story = { args: { href: '/', @@ -32,4 +42,22 @@ export const Warning: Story = { }, }; +export const Info: Story = { + args: { + href: '/', + children: 'OpenJS Foundation Certification 2023', + kind: 'info', + badgeText: 'New', + }, +}; + +export const Neutral: Story = { + args: { + href: '/', + children: 'OpenJS Foundation Certification 2023', + kind: 'neutral', + badgeText: 'New', + }, +}; + export default { component: BadgeGroup } as Meta; diff --git a/packages/ui-components/src/Common/BadgeGroup/index.tsx b/packages/ui-components/src/Common/BadgeGroup/index.tsx index 2975fc8fe3f9b..dbbadebab464f 100644 --- a/packages/ui-components/src/Common/BadgeGroup/index.tsx +++ b/packages/ui-components/src/Common/BadgeGroup/index.tsx @@ -6,16 +6,16 @@ import type { LinkLike } from '#ui/types'; import styles from './index.module.css'; -type BadgeGroupKind = 'default' | 'warning' | 'error'; - type BadgeGroupProps = { - kind?: BadgeGroupKind; + kind?: ComponentProps['kind']; + size?: ComponentProps['size']; badgeText?: string; as: LinkLike; } & ComponentProps; const BadgeGroup: FC> = ({ kind = 'default', + size = 'medium', badgeText, children, as: Component = 'a', @@ -23,11 +23,13 @@ const BadgeGroup: FC> = ({ }) => ( {badgeText && ( - + {badgeText} )} + {children} + {args.href && } ); diff --git a/packages/ui-components/src/styles/markdown.css b/packages/ui-components/src/styles/markdown.css index efdfa4c9a328b..b4f9a2cc73cde 100644 --- a/packages/ui-components/src/styles/markdown.css +++ b/packages/ui-components/src/styles/markdown.css @@ -80,7 +80,7 @@ main { &:hover { @apply text-green-900 - dark:text-green-300; + dark:text-green-200; } &[role='button'] { From 4d3182b1699ee0824d1632746808071522f65023 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Thu, 10 Jul 2025 07:20:14 -0400 Subject: [PATCH 0629/1385] feat(ui): add NotificationProvider (#7967) --- apps/site/components/Common/CodeBox.tsx | 3 +- .../__tests__/useNotification.test.jsx | 54 ------------------- apps/site/hooks/react-client/index.ts | 1 - .../hooks/react-client/useNotification.ts | 9 ---- apps/site/hooks/react-server/index.ts | 1 - .../hooks/react-server/useNotification.ts | 5 -- apps/site/layouts/Base.tsx | 2 +- apps/site/package.json | 1 - .../__tests__/notificationProvider.test.jsx | 43 --------------- .../src/Providers/NotificationProvider.tsx | 7 ++- .../__tests__/NotificationProvider.test.jsx | 53 ++++++++++++++++++ pnpm-lock.yaml | 3 -- 12 files changed, 61 insertions(+), 121 deletions(-) delete mode 100644 apps/site/hooks/react-client/__tests__/useNotification.test.jsx delete mode 100644 apps/site/hooks/react-client/useNotification.ts delete mode 100644 apps/site/hooks/react-server/useNotification.ts delete mode 100644 apps/site/providers/__tests__/notificationProvider.test.jsx rename apps/site/providers/notificationProvider.tsx => packages/ui-components/src/Providers/NotificationProvider.tsx (87%) create mode 100644 packages/ui-components/src/Providers/__tests__/NotificationProvider.test.jsx diff --git a/apps/site/components/Common/CodeBox.tsx b/apps/site/components/Common/CodeBox.tsx index 5d494fe825f3c..049e95196c4df 100644 --- a/apps/site/components/Common/CodeBox.tsx +++ b/apps/site/components/Common/CodeBox.tsx @@ -3,11 +3,12 @@ import { CodeBracketIcon } from '@heroicons/react/24/outline'; import BaseCodeBox from '@node-core/ui-components/Common/BaseCodeBox'; import styles from '@node-core/ui-components/Common/BaseCodeBox/index.module.css'; +import { useNotification } from '@node-core/ui-components/Providers/NotificationProvider'; import { useTranslations } from 'next-intl'; import type { FC, PropsWithChildren } from 'react'; import Link from '#site/components/Link'; -import { useCopyToClipboard, useNotification } from '#site/hooks'; +import { useCopyToClipboard } from '#site/hooks'; type CodeBoxProps = { language: string; diff --git a/apps/site/hooks/react-client/__tests__/useNotification.test.jsx b/apps/site/hooks/react-client/__tests__/useNotification.test.jsx deleted file mode 100644 index fcba40ea86091..0000000000000 --- a/apps/site/hooks/react-client/__tests__/useNotification.test.jsx +++ /dev/null @@ -1,54 +0,0 @@ -import { render } from '@testing-library/react'; - -import { describe, it } from 'node:test'; -import assert from 'node:assert/strict'; - -import useNotification from '#site/hooks/react-client/useNotification'; -import { NotificationProvider } from '#site/providers/notificationProvider'; - -describe('useNotification', () => { - it('should return the notification dispatch function', () => { - // Arrange - const TestComponent = () => { - const notificationDispatch = useNotification(); - return ( -
- {notificationDispatch ? 'Dispatch available' : 'Dispatch unavailable'} -
- ); - }; - - // Act - const { getByText } = render( - - - - ); - - // Assert - const result = getByText('Dispatch available'); - assert.ok(result.ownerDocument); - }); - - it('should return null outside NotificationProvider', () => { - // Arrange - const TestComponent = () => { - const notificationDispatch = useNotification(); - return ( -
- {notificationDispatch ? 'Dispatch available' : 'Dispatch unavailable'} -
- ); - }; - - // Act - const { queryByText } = render(); - - // Assert - const result = queryByText((content, element) => { - return element.textContent === 'Dispatch unavailable'; - }); - - assert.equal(result, null); - }); -}); diff --git a/apps/site/hooks/react-client/index.ts b/apps/site/hooks/react-client/index.ts index 33a9392db1a58..30d4e71478cea 100644 --- a/apps/site/hooks/react-client/index.ts +++ b/apps/site/hooks/react-client/index.ts @@ -1,6 +1,5 @@ export { default as useCopyToClipboard } from './useCopyToClipboard'; 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 useNavigationState } from './useNavigationState'; diff --git a/apps/site/hooks/react-client/useNotification.ts b/apps/site/hooks/react-client/useNotification.ts deleted file mode 100644 index acac47f606faf..0000000000000 --- a/apps/site/hooks/react-client/useNotification.ts +++ /dev/null @@ -1,9 +0,0 @@ -'use client'; - -import { useContext } from 'react'; - -import { NotificationDispatch } from '#site/providers/notificationProvider'; - -const useNotification = () => useContext(NotificationDispatch); - -export default useNotification; diff --git a/apps/site/hooks/react-server/index.ts b/apps/site/hooks/react-server/index.ts index a6cf9825ba2c2..e4c16cec3c466 100644 --- a/apps/site/hooks/react-server/index.ts +++ b/apps/site/hooks/react-server/index.ts @@ -1,5 +1,4 @@ export { default as useCopyToClipboard } from './useCopyToClipboard'; export { default as useDetectOS } from './useDetectOS'; export { default as useMediaQuery } from './useMediaQuery'; -export { default as useNotification } from './useNotification'; export { default as useClientContext } from './useClientContext'; diff --git a/apps/site/hooks/react-server/useNotification.ts b/apps/site/hooks/react-server/useNotification.ts deleted file mode 100644 index b85483fc24713..0000000000000 --- a/apps/site/hooks/react-server/useNotification.ts +++ /dev/null @@ -1,5 +0,0 @@ -const useNotification = () => { - throw new Error('Attempted to call useNotification from RSC'); -}; - -export default useNotification; diff --git a/apps/site/layouts/Base.tsx b/apps/site/layouts/Base.tsx index 83ff12826ed06..ab7770efb10ef 100644 --- a/apps/site/layouts/Base.tsx +++ b/apps/site/layouts/Base.tsx @@ -1,9 +1,9 @@ 'use client'; +import { NotificationProvider } from '@node-core/ui-components/Providers/NotificationProvider'; import type { FC, PropsWithChildren } from 'react'; import { NavigationStateProvider } from '#site/providers/navigationStateProvider'; -import { NotificationProvider } from '#site/providers/notificationProvider'; import styles from './layouts.module.css'; diff --git a/apps/site/package.json b/apps/site/package.json index bdd04d21b59d5..a0d9710f005a0 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -44,7 +44,6 @@ "@oramacloud/client": "^2.1.4", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-tabs": "^1.1.12", - "@radix-ui/react-toast": "^1.2.14", "@radix-ui/react-tooltip": "^1.2.7", "@tailwindcss/postcss": "~4.1.11", "@types/node": "catalog:", diff --git a/apps/site/providers/__tests__/notificationProvider.test.jsx b/apps/site/providers/__tests__/notificationProvider.test.jsx deleted file mode 100644 index 9a95573ef7511..0000000000000 --- a/apps/site/providers/__tests__/notificationProvider.test.jsx +++ /dev/null @@ -1,43 +0,0 @@ -import { describe, it } from 'node:test'; -import assert from 'node:assert/strict'; - -import { render, act, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; - -import { - NotificationProvider, - NotificationDispatch, -} from '#site/providers/notificationProvider'; - -describe('NotificationProvider', () => { - it('renders children and shows notification with the provided message', async t => { - t.mock.timers.enable(); - const testMessage = 'Test Notification'; - const testDuration = 3000; - - const { getByText } = render( - - - {dispatch => ( - - )} - - - ); - - act(() => { - userEvent.click(getByText('Show Notification')); - t.mock.timers.tick(3000); - }); - - t.mock.timers.reset(); - - await waitFor(() => assert.ok(getByText(testMessage).ownerDocument)); - }); -}); diff --git a/apps/site/providers/notificationProvider.tsx b/packages/ui-components/src/Providers/NotificationProvider.tsx similarity index 87% rename from apps/site/providers/notificationProvider.tsx rename to packages/ui-components/src/Providers/NotificationProvider.tsx index cd07fe6c1e029..743bc50c0f9a8 100644 --- a/apps/site/providers/notificationProvider.tsx +++ b/packages/ui-components/src/Providers/NotificationProvider.tsx @@ -1,5 +1,5 @@ -import Notification from '@node-core/ui-components/Common/Notification'; import * as Toast from '@radix-ui/react-toast'; +import { createContext, useContext, useEffect, useState } from 'react'; import type { Dispatch, FC, @@ -7,7 +7,8 @@ import type { ReactNode, SetStateAction, } from 'react'; -import { createContext, useEffect, useState } from 'react'; + +import Notification from '#ui/Common/Notification'; type NotificationContextType = { message: string | ReactNode; @@ -22,6 +23,8 @@ export const NotificationDispatch = createContext< Dispatch> >(() => {}); +export const useNotification = () => useContext(NotificationDispatch); + export const NotificationProvider: FC> = ({ viewportClassName, children, diff --git a/packages/ui-components/src/Providers/__tests__/NotificationProvider.test.jsx b/packages/ui-components/src/Providers/__tests__/NotificationProvider.test.jsx new file mode 100644 index 0000000000000..33525f1f42509 --- /dev/null +++ b/packages/ui-components/src/Providers/__tests__/NotificationProvider.test.jsx @@ -0,0 +1,53 @@ +import { render } from '@testing-library/react'; + +import { describe, it } from 'node:test'; +import assert from 'node:assert/strict'; + +import { NotificationProvider, useNotification } from '../NotificationProvider'; + +describe('useNotification', () => { + it('should return the notification dispatch function', () => { + // Arrange + const TestComponent = () => { + const notificationDispatch = useNotification(); + return ( +
+ {notificationDispatch ? 'Dispatch available' : 'Dispatch unavailable'} +
+ ); + }; + + // Act + const { getByText } = render( + + + + ); + + // Assert + const result = getByText('Dispatch available'); + assert.ok(result.ownerDocument); + }); + + it('should return null outside NotificationProvider', () => { + // Arrange + const TestComponent = () => { + const notificationDispatch = useNotification(); + return ( +
+ {notificationDispatch ? 'Dispatch available' : 'Dispatch unavailable'} +
+ ); + }; + + // Act + const { queryByText } = render(); + + // Assert + const result = queryByText((content, element) => { + return element.textContent === 'Dispatch unavailable'; + }); + + assert.equal(result, null); + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b3dfd68b48b0..6df9fdce2ce2c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,9 +111,6 @@ importers: '@radix-ui/react-tabs': specifier: ^1.1.12 version: 1.1.12(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toast': - specifier: ^1.2.14 - version: 1.2.14(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tooltip': specifier: ^1.2.7 version: 1.2.7(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) From cc3607782b5be8dcbb87490dff59982e784d84b1 Mon Sep 17 00:00:00 2001 From: shubham oulkar <91728992+ShubhamOulkar@users.noreply.github.com> Date: Thu, 10 Jul 2025 16:55:32 +0530 Subject: [PATCH 0630/1385] feat(learn): setTimeout() return type (#7960) doc: clarify setTimeout() return type in node Co-authored-by: Aviv Keller Co-authored-by: vishal --- .../asynchronous-work/discover-javascript-timers.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/discover-javascript-timers.md b/apps/site/pages/en/learn/asynchronous-work/discover-javascript-timers.md index f5f1d3a395387..c4cd42cf154d8 100644 --- a/apps/site/pages/en/learn/asynchronous-work/discover-javascript-timers.md +++ b/apps/site/pages/en/learn/asynchronous-work/discover-javascript-timers.md @@ -33,15 +33,15 @@ const myFunction = (firstParam, secondParam) => { setTimeout(myFunction, 2000, firstParam, secondParam); ``` -`setTimeout` returns the timer id. This is generally not used, but you can store this id, and clear it if you want to delete this scheduled function execution: +`setTimeout` returns a [`Timeout`](https://nodejs.org/api/timers.html#class-timeout) instance in Node.js, whereas in browsers it returns a numeric timer ID. This object or ID can be used to cancel the scheduled function execution: ```js -const id = setTimeout(() => { +const timeout = setTimeout(() => { // should run after 2 seconds }, 2000); // I changed my mind -clearTimeout(id); +clearTimeout(timeout); ``` ### Zero delay @@ -80,11 +80,11 @@ setInterval(() => { The function above runs every 2 seconds unless you tell it to stop, using `clearInterval`, passing it the interval id that `setInterval` returned: ```js -const id = setInterval(() => { +const timeout = setInterval(() => { // runs every 2 seconds }, 2000); -clearInterval(id); +clearInterval(timeout); ``` It's common to call `clearInterval` inside the setInterval callback function, to let it auto-determine if it should run again or stop. For example this code runs something unless App.somethingIWait has the value `arrived`: From 8d8aeae1d57db17b2826637c948ae91f04155f12 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Sat, 12 Jul 2025 10:03:45 -0400 Subject: [PATCH 0631/1385] feat(ui): move more Toast logic (#7973) --- apps/site/layouts/Base.tsx | 2 +- packages/ui-components/.storybook/preview.tsx | 8 ++++---- .../__tests__/index.test.jsx} | 2 +- .../Providers/NotificationProvider/index.module.css | 8 ++++++++ .../index.tsx} | 13 +++++-------- 5 files changed, 19 insertions(+), 14 deletions(-) rename packages/ui-components/src/Providers/{__tests__/NotificationProvider.test.jsx => NotificationProvider/__tests__/index.test.jsx} (94%) create mode 100644 packages/ui-components/src/Providers/NotificationProvider/index.module.css rename packages/ui-components/src/Providers/{NotificationProvider.tsx => NotificationProvider/index.tsx} (84%) diff --git a/apps/site/layouts/Base.tsx b/apps/site/layouts/Base.tsx index ab7770efb10ef..2f1d967be9ecc 100644 --- a/apps/site/layouts/Base.tsx +++ b/apps/site/layouts/Base.tsx @@ -8,7 +8,7 @@ import { NavigationStateProvider } from '#site/providers/navigationStateProvider import styles from './layouts.module.css'; const BaseLayout: FC = ({ children }) => ( - +
{children}
diff --git a/packages/ui-components/.storybook/preview.tsx b/packages/ui-components/.storybook/preview.tsx index 0f63ea379f10f..97d9fef3894c6 100644 --- a/packages/ui-components/.storybook/preview.tsx +++ b/packages/ui-components/.storybook/preview.tsx @@ -1,7 +1,8 @@ -import * as Toast from '@radix-ui/react-toast'; import { withThemeByDataAttribute } from '@storybook/addon-themes'; import type { Preview, ReactRenderer } from '@storybook/react'; +import { NotificationProvider } from '#ui/Providers/NotificationProvider'; + import { STORYBOOK_MODES, STORYBOOK_SIZES } from './constants'; import '#ui/styles/index.css'; @@ -13,10 +14,9 @@ const preview: Preview = { }, decorators: [ Story => ( - + - - +
), withThemeByDataAttribute({ themes: { light: '', dark: 'dark' }, diff --git a/packages/ui-components/src/Providers/__tests__/NotificationProvider.test.jsx b/packages/ui-components/src/Providers/NotificationProvider/__tests__/index.test.jsx similarity index 94% rename from packages/ui-components/src/Providers/__tests__/NotificationProvider.test.jsx rename to packages/ui-components/src/Providers/NotificationProvider/__tests__/index.test.jsx index 33525f1f42509..b66c3c5dd8a10 100644 --- a/packages/ui-components/src/Providers/__tests__/NotificationProvider.test.jsx +++ b/packages/ui-components/src/Providers/NotificationProvider/__tests__/index.test.jsx @@ -3,7 +3,7 @@ import { render } from '@testing-library/react'; import { describe, it } from 'node:test'; import assert from 'node:assert/strict'; -import { NotificationProvider, useNotification } from '../NotificationProvider'; +import { NotificationProvider, useNotification } from '..'; describe('useNotification', () => { it('should return the notification dispatch function', () => { diff --git a/packages/ui-components/src/Providers/NotificationProvider/index.module.css b/packages/ui-components/src/Providers/NotificationProvider/index.module.css new file mode 100644 index 0000000000000..9a3e6fa8c950c --- /dev/null +++ b/packages/ui-components/src/Providers/NotificationProvider/index.module.css @@ -0,0 +1,8 @@ +@reference "../../styles/index.css"; + +.viewport { + @apply fixed + bottom-0 + right-0 + list-none; +} diff --git a/packages/ui-components/src/Providers/NotificationProvider.tsx b/packages/ui-components/src/Providers/NotificationProvider/index.tsx similarity index 84% rename from packages/ui-components/src/Providers/NotificationProvider.tsx rename to packages/ui-components/src/Providers/NotificationProvider/index.tsx index 743bc50c0f9a8..3aca3b54edd9a 100644 --- a/packages/ui-components/src/Providers/NotificationProvider.tsx +++ b/packages/ui-components/src/Providers/NotificationProvider/index.tsx @@ -10,13 +10,13 @@ import type { import Notification from '#ui/Common/Notification'; +import styles from './index.module.css'; + type NotificationContextType = { message: string | ReactNode; duration: number; } | null; -type NotificationProps = { viewportClassName?: string }; - const NotificationContext = createContext(null); export const NotificationDispatch = createContext< @@ -25,10 +25,7 @@ export const NotificationDispatch = createContext< export const useNotification = () => useContext(NotificationDispatch); -export const NotificationProvider: FC> = ({ - viewportClassName, - children, -}) => { +export const NotificationProvider: FC = ({ children }) => { const [notification, dispatch] = useState(null); useEffect(() => { @@ -43,13 +40,13 @@ export const NotificationProvider: FC> = ({ {children} - - {notification && ( {notification.message} )} + + From b035290373d4bfd6c5c9f38ef3aeb9e32fc3577f Mon Sep 17 00:00:00 2001 From: 9saurabh9 <167856572+9saurabh9@users.noreply.github.com> Date: Mon, 14 Jul 2025 19:34:19 +0530 Subject: [PATCH 0632/1385] learn: fix net module import in server and client example (#7975) --- apps/site/pages/en/learn/modules/how-to-use-streams.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/learn/modules/how-to-use-streams.md b/apps/site/pages/en/learn/modules/how-to-use-streams.md index 8356d15e15568..e276da1d47d46 100644 --- a/apps/site/pages/en/learn/modules/how-to-use-streams.md +++ b/apps/site/pages/en/learn/modules/how-to-use-streams.md @@ -302,7 +302,7 @@ server.listen(8080, () => { ``` ```mjs -import { net } from 'node:net'; +import net from 'node:net'; // Create a TCP server const server = net.createServer(socket => { @@ -345,7 +345,7 @@ client.on('end', () => { ``` ```mjs -import { net } from 'node:net'; +import net from 'node:net'; // Connect to the server at localhost:8080 const client = net.createConnection({ port: 8080 }, () => { From 53352b306fcbcdb527095209221fd17b7fc955b9 Mon Sep 17 00:00:00 2001 From: Everkers <44750827+Everkers@users.noreply.github.com> Date: Tue, 15 Jul 2025 20:09:33 +0100 Subject: [PATCH 0633/1385] fix: improve clipboard success animation in code blocks (#7946) (#7950) * site: fix sudden success clipboard animation * site: revert animation classes * site: remove unnecessary animation logic --------- Co-authored-by: Wael --- apps/site/components/Common/CodeBox.tsx | 2 +- .../ui-components/src/Providers/NotificationProvider/index.tsx | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/site/components/Common/CodeBox.tsx b/apps/site/components/Common/CodeBox.tsx index 049e95196c4df..e7d1079d5ee11 100644 --- a/apps/site/components/Common/CodeBox.tsx +++ b/apps/site/components/Common/CodeBox.tsx @@ -25,7 +25,7 @@ const CodeBox: FC> = props => { copyToClipboard(text); notify({ - duration: 300, + duration: 800, message: (
diff --git a/packages/ui-components/src/Providers/NotificationProvider/index.tsx b/packages/ui-components/src/Providers/NotificationProvider/index.tsx index 3aca3b54edd9a..b086b09b17a7f 100644 --- a/packages/ui-components/src/Providers/NotificationProvider/index.tsx +++ b/packages/ui-components/src/Providers/NotificationProvider/index.tsx @@ -39,7 +39,6 @@ export const NotificationProvider: FC = ({ children }) => { {children} - {notification && ( {notification.message} From 5cba6c07a236a10d37277c7d85b8730ecf02eb11 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga Date: Tue, 15 Jul 2025 19:34:15 -0300 Subject: [PATCH 0634/1385] Blog: add July 25 security release (#7987) * Blog: add post release announcement Refs: https://github.com/nodejs-private/security-release/pull/62 Signed-off-by: RafaelGSS * Blog: v20.19.4 release post Refs: https://github.com/nodejs-private/node-private/pull/727 * Blog: v22.17.1 release post Refs: https://github.com/nodejs-private/node-private/pull/726 * Blog: v24.4.1 release post Refs: https://github.com/nodejs-private/node-private/pull/725 --------- Signed-off-by: RafaelGSS --- apps/site/pages/en/blog/release/v20.19.4.md | 101 +++++++++++++++++ apps/site/pages/en/blog/release/v22.17.1.md | 102 ++++++++++++++++++ apps/site/pages/en/blog/release/v24.4.1.md | 91 ++++++++++++++++ .../july-2025-security-releases.md | 42 +++++++- apps/site/site.json | 6 +- 5 files changed, 338 insertions(+), 4 deletions(-) create mode 100644 apps/site/pages/en/blog/release/v20.19.4.md create mode 100644 apps/site/pages/en/blog/release/v22.17.1.md create mode 100644 apps/site/pages/en/blog/release/v24.4.1.md diff --git a/apps/site/pages/en/blog/release/v20.19.4.md b/apps/site/pages/en/blog/release/v20.19.4.md new file mode 100644 index 0000000000000..785632236a7a9 --- /dev/null +++ b/apps/site/pages/en/blog/release/v20.19.4.md @@ -0,0 +1,101 @@ +--- +date: '2025-07-15T22:15:06.297Z' +category: release +title: Node v20.19.4 (LTS) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-07-15, Version 20.19.4 'Iron' (LTS), @RafaelGSS + +This is a security release. + +### Notable Changes + +- (CVE-2025-27210) Windows Device Names (CON, PRN, AUX) Bypass Path Traversal Protection in path.normalize() + +### Commits + +- \[[`db7b93fcef`](https://github.com/nodejs/node/commit/db7b93fcef)] - **(CVE-2025-27210)** **lib**: handle all windows reserved driver name (RafaelGSS) [nodejs-private/node-private#721](https://github.com/nodejs-private/node-private/pull/721) + +Windows 32-bit Installer: https://nodejs.org/dist/v20.19.4/node-v20.19.4-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v20.19.4/node-v20.19.4-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.19.4/node-v20.19.4-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v20.19.4/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v20.19.4/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.19.4/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v20.19.4/node-v20.19.4.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.19.4/node-v20.19.4-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.19.4/node-v20.19.4-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v20.19.4/node-v20.19.4-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.19.4/node-v20.19.4-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.19.4/node-v20.19.4-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v20.19.4/node-v20.19.4-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v20.19.4/node-v20.19.4-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v20.19.4/node-v20.19.4-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v20.19.4/node-v20.19.4.tar.gz \ +Other release files: https://nodejs.org/dist/v20.19.4/ \ +Documentation: https://nodejs.org/docs/v20.19.4/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +60230a634608f7ebefe9c56e98c690596e971a76e3ef2f9f90e276a410252ec1 node-v20.19.4-aix-ppc64.tar.gz +3943b720515ffba292f8cec4f59df4e11880716d9bbcb8cd09bcd9f68394fd95 node-v20.19.4-arm64.msi +8b89801f527a85e3f7de539512c9dde08673ac99db6458cc7cc627e05d707054 node-v20.19.4-darwin-arm64.tar.gz +34f01058aea5bbdb735bdb96077232f34a9fc25bfb32f5fb07dd7df3bd49e5c9 node-v20.19.4-darwin-arm64.tar.xz +cc47ed094c1876b211a9091d09a78537c1cbbb0f8cf5a49c9fd79933ee8fd7fd node-v20.19.4-darwin-x64.tar.gz +56d293b415e0253adfe8df7a19d14e43f8f4cadab1076929ed29c4fcb076c687 node-v20.19.4-darwin-x64.tar.xz +e8140a84f5b6974bc363c96376d2dd7dd8d75f92a40d6c906e37e04220b87791 node-v20.19.4-headers.tar.gz +b94d9157d658abc04a476d7902713a578a873715fe9b7b227aeff17d97977e76 node-v20.19.4-headers.tar.xz +d200798332b7a56d355888ce58e6a639fac7939a4833e5bc8780c66888e1ce4d node-v20.19.4-linux-arm64.tar.gz +4492c29882f604eb4cba6ce52ad2e6436f4eeb2b2917a74b0f85e6e42e261252 node-v20.19.4-linux-arm64.tar.xz +bdff86d5ff91214c6d6c421b42b35442daebcf42f85bbfb6643e7a950a093c3b node-v20.19.4-linux-armv7l.tar.gz +53b04763def6a35d876abf10312536170ea02b4ac0ff44b9b69533b1656ac914 node-v20.19.4-linux-armv7l.tar.xz +572e3a4cc5371680b763eddda3df45704e3478d3c2d3c774927186184fba3ac9 node-v20.19.4-linux-ppc64le.tar.gz +8cc2bb753c4666f9148f07e44706d3c6cf029c8c27f282972207983f9d2591e6 node-v20.19.4-linux-ppc64le.tar.xz +17a95c4591478bf3ccd8919ff74810feb46d320c73e90430ac8ef0fb724705ae node-v20.19.4-linux-s390x.tar.gz +dc34e66d92e7708d5ab42586ce30e654f5617cb520fc033ebae98f6c5311452a node-v20.19.4-linux-s390x.tar.xz +d80a33707605ced9a31b8f543cea9ab512bc3d2fef2c148f31a50e939ff07560 node-v20.19.4-linux-x64.tar.gz +7a488a09e2fc02fbd1bc4ae084bea8a589314f741c182fc02c5f3f07c79a29d4 node-v20.19.4-linux-x64.tar.xz +8bc6b30ab6e23c49bfffe64512041a43170b6a0e8ec875d636fa77f32b56d094 node-v20.19.4-win-arm64.7z +1554251027d777d3dbb276af0553b2e9f89822a1579067216bc0b9522a3a22d3 node-v20.19.4-win-arm64.zip +034802e68bf326c67bb8a7ed77ef97935485fd83f6e250dede39b9aea144b366 node-v20.19.4-win-x64.7z +1bf83e5958157d13673507349238236aec4f6efc95cf426cbe126a999a3e4c0b node-v20.19.4-win-x64.zip +a21039667013459d743f349bf539dc38d10e396df1b266809816264b6197204d node-v20.19.4-win-x86.7z +b16bac5090e882172b45bd3258c0f937c37860d6b2fd65c7e91d54d06ec960aa node-v20.19.4-win-x86.zip +358c0d097a5fce3228015558b1ce52edfb1398ac6f6e2dd745acd54380805320 node-v20.19.4-x64.msi +7ecbdc27dcc9bf99249c65487105872810a864419a986204a6ee911648b50973 node-v20.19.4-x86.msi +743113245f60515ccec7f5aabed8d4db2af1c0518761fee5605bbea13f2f36a5 node-v20.19.4.pkg +cc363c0a90fe5025939175c1c29ab67235f36ebe4b5d78506634da27a73eef5d node-v20.19.4.tar.gz +b87fd7106013d3906706913ffc63a4403715fbb272c4f83ff4338527353eec0f node-v20.19.4.tar.xz +b10724f69284147aa40ac4964d2e7da45b7de4c0771896af7bdf566639e58190 win-arm64/node.exe +dd8b0acfe80fa4ac731561848405b173cdc16ade8347e0ebb59bdb7aee668ed1 win-arm64/node.lib +9a94958669a7bf9f58c50d82aba206e460c508c4ecf26c6271198966feab7357 win-arm64/node_pdb.7z +64bd0e9cb6c9f7aca6e395d0072407581156c7a95383c4c8c1d3b8b120a24416 win-arm64/node_pdb.zip +7ffc3c2d46bb511c6330503040b76d4f0ed7bd04e767a1f7ba2486435e6a06ac win-x64/node.exe +7d545cfcf38456553e83f419c72e91bf9bc80500bf8c0f3f838a7be020e88def win-x64/node.lib +b43a3681914472d6b9bad07166e8a585fa196ac5b24f7dd9d27adcb138c43fe2 win-x64/node_pdb.7z +8f6676761ddbabe21f45c2ccd55480784c9a9d92ba898f89e5130072961bf71b win-x64/node_pdb.zip +5347fb68e3f18bc0c6a487dd1ed2062d49bb08a96866419f39531c298f7a5678 win-x86/node.exe +d22e597766b0a8de355d244cd9417f8b67bbbc39e8a66ae2e1009ee4c7409bb2 win-x86/node.lib +8f5b93eaf5011cd969fab5ccadcd278e240fc194bb9faa5040fc4f0795e48819 win-x86/node_pdb.7z +5de1f3158813d0ca66714fdb0b2ae1676e337fd3bfe631becf2f8b3162877968 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmh20aIACgkQi+q0389V +XvQIsQv/e13DVozeLCT4Do9wl5wXvRS1in37M4Ha+hbQb7Q+XmxthH2ocod/IeEy +cnhYqN8u2pDFc9s8e40mDCJ+e8+o4dLrleLhmmCyR4eFYp/fOp4r32FaYN0FSP3f +Iwy28BRh1KHoYkZgAwrhksz+OqnEsq1HW3OHWzMYgX20YAkTfJlamChfrmIfExSW +qGKC13yjQp3K1ntke7ZdxY7mWJPAVwB1eg4psx87jXibn8tD8scFrUp5D2vwyUm4 +x7TTXdlH7eTMPpRA4Rmmfe85YH3roXE16v3NeegRvRHX59y2iU5RsXufLuwU7MET +1CYM3pUj3ptiw0xDg46LjQCs5CrN/56tzKzGzUwniCB89SkI1V4aIvrsDspTryh4 +GtNm3Ct7/AC5843S/1yNW9tSJCFr5gxeStwK1E1gom64RhmBLlxkSaoKNHP5NlDX ++zbRxWxWzr8XMDTM+eMWMXyFFNc4rPEVJm2q2BuU7S2B5uPtGsh/OG1D9ir3m5fm +N9WeqreY +=ehgP +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v22.17.1.md b/apps/site/pages/en/blog/release/v22.17.1.md new file mode 100644 index 0000000000000..4a5b83fbfcfa8 --- /dev/null +++ b/apps/site/pages/en/blog/release/v22.17.1.md @@ -0,0 +1,102 @@ +--- +date: '2025-07-15T22:14:56.543Z' +category: release +title: Node v22.17.1 (LTS) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-07-15, Version 22.17.1 'Jod' (LTS), @RafaelGSS + +This is a security release. + +### Notable Changes + +- (CVE-2025-27210) Windows Device Names (CON, PRN, AUX) Bypass Path Traversal Protection in path.normalize() + +### Commits + +- \[[`8cf5d66ab7`](https://github.com/nodejs/node/commit/8cf5d66ab7)] - **(CVE-2025-27210)** **lib**: handle all windows reserved driver name (RafaelGSS) [nodejs-private/node-private#721](https://github.com/nodejs-private/node-private/pull/721) +- \[[`9c0cb487ec`](https://github.com/nodejs/node/commit/9c0cb487ec)] - **win,build**: fix MSVS v17.14 compilation issue (StefanStojanovic) [#58902](https://github.com/nodejs/node/pull/58902) + +Windows 32-bit Installer: https://nodejs.org/dist/v22.17.1/node-v22.17.1-x86.msi \ +Windows 64-bit Installer: https://nodejs.org/dist/v22.17.1/node-v22.17.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.17.1/node-v22.17.1-arm64.msi \ +Windows 32-bit Binary: https://nodejs.org/dist/v22.17.1/win-x86/node.exe \ +Windows 64-bit Binary: https://nodejs.org/dist/v22.17.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.17.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v22.17.1/node-v22.17.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.17.1/node-v22.17.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.17.1/node-v22.17.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v22.17.1/node-v22.17.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.17.1/node-v22.17.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.17.1/node-v22.17.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v22.17.1/node-v22.17.1-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.17.1/node-v22.17.1-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.17.1/node-v22.17.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v22.17.1/node-v22.17.1.tar.gz \ +Other release files: https://nodejs.org/dist/v22.17.1/ \ +Documentation: https://nodejs.org/docs/v22.17.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +988da3f531740238fea22bd73bd27b3d3a9d780c3248494ae797fd1dc4737b6e node-v22.17.1-aix-ppc64.tar.gz +538276e62f7428a86302bbe8908aa28b1a1f4635b75def8e308392894a0c3b6c node-v22.17.1-arm64.msi +a983f4f2a7b71512b78d7935b9ccf6b72120a255810070afd635c4146bca7b31 node-v22.17.1-darwin-arm64.tar.gz +346ed47b18d7ce5ec0b7a3cd24f08623af1a8efdc8069ebc7cb7c38af1bdb7b4 node-v22.17.1-darwin-arm64.tar.xz +b925103150fac0d23a44a45b2d88a01b73e5fff101e5dcfbae98d32c08d4bee3 node-v22.17.1-darwin-x64.tar.gz +152731560b9753d62a8c67e4bcb4d9b78dcba3f3b4dfcc0ae6e1738595887ed1 node-v22.17.1-darwin-x64.tar.xz +21d248e607efae5852b3cbef0747af796432d37b50c4d644ec7ab54e52ad3f00 node-v22.17.1-headers.tar.gz +489aaa932c3bdcb69e4b0cbf2da7e677ef21931b2cc66f36b726ab090f5b26fb node-v22.17.1-headers.tar.xz +f53510706998cf044f634190416f0588e7e1937aecea938768952e0f0ac1f41b node-v22.17.1-linux-arm64.tar.gz +a5bb879af2fe70e7b5dc5e0bbadecba88e87f45bd8e62c0c57b5c815a4cbbaa6 node-v22.17.1-linux-arm64.tar.xz +520dcd113eca345074cab3c3e7c23b93517a6a0a22fac98e843b195fcfdcc5d7 node-v22.17.1-linux-armv7l.tar.gz +5be9a0d4808415365dce0fa4d051db93f2a708d175beb956762970971aa3ed81 node-v22.17.1-linux-armv7l.tar.xz +c07ee9fb0c0396f5551a9c0228570fdb45ebf21ba9723f7098671320f364a202 node-v22.17.1-linux-ppc64le.tar.gz +e97d90a254d4741ee4c9ca989fb21d743c0708eb7176cdc78e1b7026a954fe49 node-v22.17.1-linux-ppc64le.tar.xz +5ee94f6e421a383435c2f96b8e5742ad0eea54a851dc6b66583fc28a2f84cd33 node-v22.17.1-linux-s390x.tar.gz +c1e144457f6779d18eac9ffc31ca687cc127d27fe7c73092cc321be21d6a1011 node-v22.17.1-linux-s390x.tar.xz +cfb6ac0cf339825fe36efd1f18a79016b02aca19fbfa6c9547c57e27dc09f6ea node-v22.17.1-linux-x64.tar.gz +ff04bc7c3ed7699ceb708dbaaf3580d899ff8bf67f17114f979e83aa74fc5a49 node-v22.17.1-linux-x64.tar.xz +6cc39aee7c832b1de1c7c44f1f4746351fc38d7880af67aa5238503eb647d830 node-v22.17.1-win-arm64.7z +588d42c7c90eecf14ed4fc126a64cc70993e3a002f93e26be9c979cdc516b0d3 node-v22.17.1-win-arm64.zip +87e44340313b125ee7f4ea1a3877ba9aede1030fcbc8edd9f57e43fd3257037c node-v22.17.1-win-x64.7z +b1fdb5635ba860f6bf71474f2ca882459a582de49b1d869451e3ad188e3943eb node-v22.17.1-win-x64.zip +b7e7e75d570074cd40645c8db6806ea08d121a00c1af11fd110540434664ae45 node-v22.17.1-win-x86.7z +ccfc8901bba74052a4fd9c15ec8e01f45d3014646d909026e3a07a270c4194fb node-v22.17.1-win-x86.zip +29bf63d4be9e9ba53d8974086cd9ef2403317e6c237d98d6e498205da4d48753 node-v22.17.1-x64.msi +79ff602686c2ef16187c1624b9fb3bce3bc09e33716bcfab3168a6111832e87e node-v22.17.1-x86.msi +31f30608a6c9961ef3d19002a578899d40cdaa6583d0d46744ae2be9aa137b0d node-v22.17.1.pkg +167539d86368bb911488f888a05355df5002b302285d353179c9dd957233add5 node-v22.17.1.tar.gz +327415fd76fcebb98133bf56e2d90e3ac048b038fac2676f03b6db91074575b9 node-v22.17.1.tar.xz +d3b6849e4e0d9770024df678c4f77356065922d30c07a37dcf1bc4012c711d94 win-arm64/node.exe +c174ae3348a4a59c9d61629a7a73a38679fd27c55b2a7d85a2ea3e65de2beb13 win-arm64/node.lib +6d85c14c2f3c11607f3e15912391971783046198f0aebe5251c7a1b7d6f06b91 win-arm64/node_pdb.7z +62d2b887ebe89621d2e5441a01e95f74839773c039cdd8a43a087f4285b3bfa0 win-arm64/node_pdb.zip +0f1098a455c7058daaaccd660d3a71dfed1cc0ffe8bea826170a7807d36fcef2 win-x64/node.exe +4af0951712fb05a686a03e0592880e195ba53e5eb70e224d7ea7b8b76f2a3e86 win-x64/node.lib +b97379b2499adec83b4ac64fec048390404f29b667d3676fa3d1fead01d1ca5e win-x64/node_pdb.7z +fedbd933bcfdc60fc514c5234dbb10ac8fd0f2c0e7f9c203c738364dcea7602d win-x64/node_pdb.zip +efb130fb88544c16e480524fbd0c77725864dd08c96d86b9849bfadb13fea13e win-x86/node.exe +e1830d28633bfa80180edfffe5f091dc945701ba8cf2b743ca542d34759f505a win-x86/node.lib +66233b440709942b94af935aa4b1aaf3faa520de73efbf53ed19ee61144c72f6 win-x86/node_pdb.7z +8b09448a6c5a9d863151f1c0a067d2c26632aa69a29af08ca75899a4e4f8c4e6 win-x86/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmh20jIACgkQi+q0389V +XvSXTAv/Xzy1q8t4LcX8TvXSf806U0cEhX7QK929dpvpdsMIgcbc8/u9AGWNkeOx +8fL7iQ35qQ6sUGkusfgXHx9a+QJkKXOCbjM1gHKvLBAEyemv2Aea4iQFe4yInSKQ +eQcBL11UsfQ4W7Ef/saMGzNaTSYKg3Ky/7t9icf8HAxvykNRr5IL2exMePdiiox2 +Fq/Gq0RAMBUt12yUD80Q8pcrp75OgB9BXrngDed3wDeX/cj4YZMsNE5I8r7hxRo3 +7Dm4F4/6XZc2iBkXRhcSMDXfCvPK+r42XP56d7V8sQf2NEFmlXnEoWTRddZ0D2hW +/RnlqdE8x0B6r34x+QXK0RNwL9qrcoTJ3q7ksCPWpWsVPDVMWeSfCHeoPlnJBX9J ++81oSiXzLtWT2JMnihl0OSabqZhjN/P2BP7Ny346kb9a+WsG7FpMwcR1Teq0UFCv +aC5ImzM5FA85EPAVGNQt0QuTK8aIfYt8jEzRovUVd5j8pkePUPMM/I2v+FheAj4N +YTq/Tg58 +=rDZQ +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/release/v24.4.1.md b/apps/site/pages/en/blog/release/v24.4.1.md new file mode 100644 index 0000000000000..5f69a2c04ab89 --- /dev/null +++ b/apps/site/pages/en/blog/release/v24.4.1.md @@ -0,0 +1,91 @@ +--- +date: '2025-07-15T22:14:44.786Z' +category: release +title: Node v24.4.1 (Current) +layout: blog-post +author: Rafael Gonzaga +--- + +## 2025-07-15, Version 24.4.1 (Current), @RafaelGSS + +This is a security release. + +### Notable Changes + +- (CVE-2025-27209) HashDoS in V8 with new RapidHash algorithm +- (CVE-2025-27210) Windows Device Names (CON, PRN, AUX) Bypass Path Traversal Protection in path.normalize() + +### Commits + +- \[[`c33223f1a5`](https://github.com/nodejs/node/commit/c33223f1a5)] - **(CVE-2025-27209)** **deps**: V8: revert rapidhash commits (Michaël Zasso) [nodejs-private/node-private#713](https://github.com/nodejs-private/node-private/pull/713) +- \[[`56f9db2aaa`](https://github.com/nodejs/node/commit/56f9db2aaa)] - **(CVE-2025-27210)** **lib**: handle all windows reserved driver name (RafaelGSS) [nodejs-private/node-private#721](https://github.com/nodejs-private/node-private/pull/721) + +Windows 64-bit Installer: https://nodejs.org/dist/v24.4.1/node-v24.4.1-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.4.1/node-v24.4.1-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v24.4.1/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.4.1/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v24.4.1/node-v24.4.1.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.4.1/node-v24.4.1-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.4.1/node-v24.4.1-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v24.4.1/node-v24.4.1-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.4.1/node-v24.4.1-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.4.1/node-v24.4.1-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v24.4.1/node-v24.4.1-aix-ppc64.tar.gz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v24.4.1/node-v24.4.1-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v24.4.1/node-v24.4.1.tar.gz \ +Other release files: https://nodejs.org/dist/v24.4.1/ \ +Documentation: https://nodejs.org/docs/v24.4.1/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +d2b3496c3795515844bd8d2d45404d0e8ddbc714855ce68e895a644a6059feb3 node-v24.4.1-aix-ppc64.tar.gz +7a3cdd9f5d8f0cb4dce7b21f509b5379bb51fd18e5dfa6a9662cafcd8ae63c60 node-v24.4.1-arm64.msi +55a772a600b7bdafb4b35945b3935090e27aff9934b4c11b281220fcd99139d7 node-v24.4.1-darwin-arm64.tar.gz +7ea25548b120ebaeaffadd37878b83c3d917cbb1eb3e9dbab7cb861bd8763a56 node-v24.4.1-darwin-arm64.tar.xz +59fbad953a0705e78d220079fb6d10d341d0a61afd3aeb4db2a87207fddd8944 node-v24.4.1-darwin-x64.tar.gz +e391194c578cf91e2af35acb30dc6c23fe8893fb3409a2c9a4e25b51f87a6cb0 node-v24.4.1-darwin-x64.tar.xz +f2071f773135460a56c6cdc368a58e98f5f3d14e3a0bf1010a4323d294482740 node-v24.4.1-headers.tar.gz +5cc534bca66b184c837923ce5d9cc25ae7f3b3f6d8455ded509da0db041c16d7 node-v24.4.1-headers.tar.xz +fde5421e2652e51199bc678e1e6c4d80bbb4c55337ec0a82206568517e9792ef node-v24.4.1-linux-arm64.tar.gz +555659c36fc72d0617e278b5d26ffcaebc3760a3de354926b1e5f1b0bfd66083 node-v24.4.1-linux-arm64.tar.xz +b4ee745e4d8a2c3f3a793a50695d769322b81c79f2b7b79c2a359bca892a0f36 node-v24.4.1-linux-ppc64le.tar.gz +2d549d5c63d282012192bf8594ea105b9876e9198d3af8401c61efe15c3d8cb1 node-v24.4.1-linux-ppc64le.tar.xz +8c9a680c3ae7c8b4a02f55faa055d960ab639a67b257efe7a466d49934746630 node-v24.4.1-linux-s390x.tar.gz +70316824c88fa396b12363fb9695b8f9a88f671377056bd86761dc96962240f8 node-v24.4.1-linux-s390x.tar.xz +063f2eb299ba60e3fc9b424d8e87d0e2f6be84b39bdeadc421ee2865914c498b node-v24.4.1-linux-x64.tar.gz +7e067b13cd0dc7ee8b239f4ebe1ae54f3bba3a6e904553fcb5f581530eb8306d node-v24.4.1-linux-x64.tar.xz +a9e19728d981b03fd0ef075d6df0dc28c9d543f4b2ea6cad5cb1e3dff5c01e11 node-v24.4.1-win-arm64.7z +8cb993d89d13119f582c77a4c734be5bdfeee5557e6cfe850ea1a2f23fa94686 node-v24.4.1-win-arm64.zip +daa849d978dfd6ae623e2c70cab5602b385e2c1e6bb3b5012de6609be78ddcdc node-v24.4.1-win-x64.7z +0428a6ca7544df310de4ed12c10e84c0bc7c9022945dc16de22f7c0dc4893dd2 node-v24.4.1-win-x64.zip +521032573be257d214589043d4aa57d1e32a0a4ff8e30c3275e6617de4c55ee4 node-v24.4.1-x64.msi +3473b9ebee25cc0681f543b93586988a2379836bf2be5a47c159a5920289e032 node-v24.4.1.pkg +f5d4525390f67bd2ba91efe2ad94722f570a9a4fd18756ab420cb5885d0f6c10 node-v24.4.1.tar.gz +adb79ca0987486ed66136213da19ff17ef6724dcb340c320e010c9442101652f node-v24.4.1.tar.xz +da416aa539b6b84d20c58b2bbd1fc5fc74b2d95dad213ef49110f697cbb2bb33 win-arm64/node.exe +6809fc156673d10cca7dff0e54f28309bb111d235c54493a4a0ca401c2113be7 win-arm64/node.lib +de892d4574417946a45e95720cb3a802eaa51209219ddd8a4fd36f8e6de6b7ef win-arm64/node_pdb.7z +62a4b97ca6aaa558fc2d7dba98a16faac64ec60776d5b4a519d515e2a7340c53 win-arm64/node_pdb.zip +1b41336fc188453644a3986ddc508627e2c7288df74e7c86abfc46106bc603e3 win-x64/node.exe +34882ca2bb450431047f2dd3bae1c3b8c1cd2b4cffd5c1a0bf079948846d2b83 win-x64/node.lib +759fbb25d32aaed69069b48b32844a161264d01aec457a91c3ca735b95131d2d win-x64/node_pdb.7z +57e04e1121f8e5b29739697e54ab07f51f70dab0376c94f9a9f159b412d32ba0 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmh20p0ACgkQi+q0389V +XvSHQwv7BdDwI42lmmpsvn3490Rzlj79vab+z87ZVsLh0zq2hDTn7Vn9kXtBFTDA +L3GkRAa6jAqJGxXcyExDJpwyMUEk6ES0QDiJMYBIEayfBFLGWkx9ah80ixaj/4dD +w/YLw7/HQTLPYAHfKkNsJDm06zUsl+CPkEuRR08wblnNyrrxCjQZuJv3zEuB0GFl +Uyoe4i9AF3akFspAwrLU5oKJK7rJp5q7v6fc5/+Ks/NdoRRMGEiZUJo5DulOOYKA +F0MCVhZaKiJWcZfnRqLbSbB4lw2hVcOUI6tY5sKi6w8sSIRgPnCdu4FVp7OrZy/M +6aEgUk0o88P4Kwe/BO4bZXyQM38O38xKyC45taKmzfhPXihXPefJD/m+nRpM1Ola +RF6hXGeFT/XEJpsW/irD8qRVAU4ao4eI9/y9rnu7Oifm2u6noTEgNnMAjt1UwIN7 +sX0aYXDGkxk2GQ6uDNd1gAiDCT0Aidcno2NXbBjdqM6Hx+EhOw9KeryRXXzGl50+ +wW2Q5ZCk +=ZLrr +-----END PGP SIGNATURE----- +``` diff --git a/apps/site/pages/en/blog/vulnerability/july-2025-security-releases.md b/apps/site/pages/en/blog/vulnerability/july-2025-security-releases.md index 3ed74d345f5a6..dabcd9be00c13 100644 --- a/apps/site/pages/en/blog/vulnerability/july-2025-security-releases.md +++ b/apps/site/pages/en/blog/vulnerability/july-2025-security-releases.md @@ -1,5 +1,5 @@ --- -date: 2025-07-08T03:00:00.000Z +date: 2025-07-15T00:00:00.000Z category: vulnerability title: Tuesday, July 15, 2025 Security Releases slug: july-2025-security-releases @@ -7,6 +7,46 @@ layout: blog-post author: The Node.js Project --- +## Security releases available + +Updates are now available for the 24.x, 22.x, 20.x Node.js release lines for the +following issues. + +## Windows Device Names (CON, PRN, AUX) Bypass Path Traversal Protection in path.normalize() (CVE-2025-27210) - (high) + +An incomplete fix has been identified for CVE-2025-23084 in Node.js, specifically affecting Windows device names like CON, PRN, and AUX. + +This vulnerability affects Windows users of `path.join` API. + +Impact: + +- This vulnerability affects all users in active release lines: 20.x, 22.x, 24.x + +Thank you, to oblivionsage for reporting this vulnerability and thank you RafaelGSS for fixing it. + +## HashDoS in V8 (CVE-2025-27209) - (high) + +The V8 release used in Node.js v24.0.0 has changed how string hashes are computed using rapidhash. +This implementation re-introduces the HashDoS vulnerability as an attacker who can control the strings to be hashed can generate +many hash collisions - an attacker can generate collisions even without knowing the hash-seed. + +While the V8 team does not classify this as a security vulnerability, the Node.js project considers it one due to its potential +impact in real-world scenarios. + +- This vulnerability affects Node.js v24.x users. + +Impact: + +- This vulnerability affects all users in active release lines: 24.x + +Thank you, to sharp_edged for reporting this vulnerability and thank you targos for fixing it. + +## Downloads and release details + +- [Node.js v20.19.4](/blog/release/v20.19.4/) +- [Node.js v22.17.1](/blog/release/v22.17.1/) +- [Node.js v24.4.1](/blog/release/v24.4.1/) + # Summary The Node.js project will release new versions of the 24.x, 22.x, 20.x diff --git a/apps/site/site.json b/apps/site/site.json index 3cd0f99094fe2..4ef62998f1413 100644 --- a/apps/site/site.json +++ b/apps/site/site.json @@ -28,9 +28,9 @@ ], "websiteBanners": { "index": { - "startDate": "2025-07-08T03:00:00.000Z", - "endDate": "2025-07-15T03:00:00.000Z", - "text": "New security releases to be made available Tuesday, July 15, 2025", + "startDate": "2025-07-15T00:00:00.000Z", + "endDate": "2025-07-22T00:00:00.000Z", + "text": "July Security Release is available", "link": "https://nodejs.org/en/blog/vulnerability/july-2025-security-releases", "type": "warning" } From 306a762bc3146e51fa77d4a9d2ee9367ee2cd3a8 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Wed, 16 Jul 2025 07:08:36 -0400 Subject: [PATCH 0635/1385] fix(release): fix issues with maintenance and active lts (#7979) * fix(release): fix issues with maintenance and active lts * Update apps/site/app/[locale]/next-data/api-data/route.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller * Update apps/site/next-data/generators/releaseData.mjs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller * fixup! --------- Signed-off-by: Aviv Keller Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../site/app/[locale]/next-data/api-data/route.ts | 2 +- .../Downloads/DownloadReleasesTable/index.tsx | 15 ++++----------- .../Downloads/Release/ReleaseCodeBox.tsx | 2 +- .../Downloads/Release/VersionDropdown.tsx | 4 ++-- .../components/Downloads/ReleaseModal/index.tsx | 2 +- apps/site/components/withDownloadSection.tsx | 4 +++- apps/site/next-data/generators/releaseData.mjs | 6 +++--- apps/site/pages/en/index.mdx | 2 +- apps/site/types/releases.ts | 4 ++-- apps/site/util/download/constants.json | 2 +- 10 files changed, 19 insertions(+), 24 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 04b2c5a493024..4ba97056079e4 100644 --- a/apps/site/app/[locale]/next-data/api-data/route.ts +++ b/apps/site/app/[locale]/next-data/api-data/route.ts @@ -24,7 +24,7 @@ export const GET = async () => { const releases = provideReleaseData(); const { versionWithPrefix } = releases.find( - release => release.status === 'LTS' + release => release.status === 'Active LTS' )!; const gitHubApiResponse = await fetch( diff --git a/apps/site/components/Downloads/DownloadReleasesTable/index.tsx b/apps/site/components/Downloads/DownloadReleasesTable/index.tsx index 462221477b8e3..e3d83f154edc3 100644 --- a/apps/site/components/Downloads/DownloadReleasesTable/index.tsx +++ b/apps/site/components/Downloads/DownloadReleasesTable/index.tsx @@ -8,20 +8,12 @@ import getReleaseData from '#site/next-data/releaseData'; const BADGE_KIND_MAP = { 'End-of-life': 'warning', - Maintenance: 'neutral', - LTS: 'info', + 'Maintenance LTS': 'neutral', + 'Active LTS': 'info', Current: 'default', Pending: 'default', } as const; -const BADGE_TEXT_MAP = { - 'End-of-life': 'End-of-Life (EOL)', - Maintenance: 'Maintenance LTS', - LTS: 'Active LTS', - Current: 'Current', - Pending: 'Pending', -} as const; - const DownloadReleasesTable: FC = async () => { const releaseData = await getReleaseData(); @@ -52,7 +44,8 @@ const DownloadReleasesTable: FC = async () => { - {BADGE_TEXT_MAP[release.status]} + {release.status} + {release.status === 'End-of-life' ? ' (EoL)' : ''} diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 54ef178b43672..ccd9073412f41 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -127,7 +127,7 @@ const ReleaseCodeBox: FC = () => { )} - {release.status === 'LTS' && ( + {release.isLts && ( { - if (status === 'LTS') { + if (status.endsWith('LTS')) { return `${version} (LTS)`; } @@ -37,7 +37,7 @@ const VersionDropdown: FC = () => { ({ versionWithPrefix }) => versionWithPrefix === version ); - if (release?.status === 'LTS' && pathname.includes('current')) { + if (release?.isLts && pathname.includes('current')) { redirect({ href: '/download', locale: locale }); return; } diff --git a/apps/site/components/Downloads/ReleaseModal/index.tsx b/apps/site/components/Downloads/ReleaseModal/index.tsx index 8abb1aa952d7e..5ae420ed70cf8 100644 --- a/apps/site/components/Downloads/ReleaseModal/index.tsx +++ b/apps/site/components/Downloads/ReleaseModal/index.tsx @@ -54,7 +54,7 @@ const ReleaseModal: FC = ({
)} - {release.status === 'LTS' && ( + {release.isLts && (
= async ({ children }) => { .concat(snippets); // Decides which initial release to use based on the current pathname - const initialRelease = pathname.endsWith('/current') ? 'Current' : 'LTS'; + const initialRelease = pathname.endsWith('/current') + ? 'Current' + : 'Active LTS'; return ( diff --git a/apps/site/next-data/generators/releaseData.mjs b/apps/site/next-data/generators/releaseData.mjs index 03800543b882f..4faef90dcb217 100644 --- a/apps/site/next-data/generators/releaseData.mjs +++ b/apps/site/next-data/generators/releaseData.mjs @@ -12,11 +12,11 @@ const getNodeReleaseStatus = (now, support) => { } if (maintenanceStart && now >= new Date(maintenanceStart)) { - return 'Maintenance'; + return 'Maintenance LTS'; } if (ltsStart && now >= new Date(ltsStart)) { - return 'LTS'; + return 'Active LTS'; } if (currentStart && now >= new Date(currentStart)) { @@ -96,7 +96,7 @@ const generateReleaseData = async () => { version: latestVersion.semver.raw, versionWithPrefix: `v${latestVersion.semver.raw}`, codename: major.support.codename || '', - isLts: status === 'LTS', + isLts: status.endsWith('LTS'), npm: latestVersion.dependencies.npm || '', v8: latestVersion.dependencies.v8, releaseDate: latestVersion.releaseDate, diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index c08fc9c9bc2ab..ef36bd8187fed 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -28,7 +28,7 @@ layout: home
- + {({ release }) => Node.js LTS diff --git a/apps/site/types/releases.ts b/apps/site/types/releases.ts index cf71f7bea406d..f57709c13041a 100644 --- a/apps/site/types/releases.ts +++ b/apps/site/types/releases.ts @@ -1,6 +1,6 @@ export type NodeReleaseStatus = - | 'LTS' - | 'Maintenance' + | 'Active LTS' + | 'Maintenance LTS' | 'Current' | 'End-of-life' | 'Pending'; diff --git a/apps/site/util/download/constants.json b/apps/site/util/download/constants.json index a04695ee3dd40..72b7756e18884 100644 --- a/apps/site/util/download/constants.json +++ b/apps/site/util/download/constants.json @@ -142,7 +142,7 @@ "name": "Brew", "compatibility": { "os": ["MAC", "LINUX"], - "releases": ["Current", "LTS"] + "releases": ["Current", "Active LTS", "Maintenance LTS"] }, "url": "https://brew.sh/", "info": "layouts.download.codeBox.platformInfo.brew" From 77f675cabeabec5fcb464539d47bff82613c297b Mon Sep 17 00:00:00 2001 From: Mostafa Mahmoud Date: Wed, 16 Jul 2025 14:13:47 +0300 Subject: [PATCH 0636/1385] fix(learn): Adjust V8 RangeError message formatting (#7977) docs: adjust V8 RangeError message formatting Signed-off-by: Mostafa Mahmoud --- .../learn/asynchronous-work/event-loop-timers-and-nexttick.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md b/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md index c5e4f107c5d22..91f0e4cfaacde 100644 --- a/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md +++ b/apps/site/pages/en/learn/asynchronous-work/event-loop-timers-and-nexttick.md @@ -331,7 +331,7 @@ callback _after_ the rest of the user's code and _before_ the event loop is allowed to proceed. To achieve this, the JS call stack is allowed to unwind then immediately execute the provided callback which allows a person to make recursive calls to `process.nextTick()` without reaching a -`RangeError: Maximum call stack size exceeded from v8`. +`RangeError: Maximum call stack size exceeded` from v8. This philosophy can lead to some potentially problematic situations. Take this snippet for example: From a008bedf3c5f841ab073a1d74bad6625a18a4681 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Thu, 17 Jul 2025 13:36:38 -0400 Subject: [PATCH 0637/1385] feat(ui): minify css (#7988) * feat(ui): minify * use tailwind's minify --- packages/ui-components/.postcssrc.json | 4 +++- packages/ui-components/package.json | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/ui-components/.postcssrc.json b/packages/ui-components/.postcssrc.json index d750bab9d9e52..825f848e6b60c 100644 --- a/packages/ui-components/.postcssrc.json +++ b/packages/ui-components/.postcssrc.json @@ -1,6 +1,8 @@ { "plugins": { "postcss-calc": {}, - "@tailwindcss/postcss": {} + "@tailwindcss/postcss": { + "optimize": true + } } } diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 930f9105cb204..c0ee4e63a2f59 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -41,14 +41,12 @@ "classnames": "catalog:" }, "devDependencies": { - "@tailwindcss/postcss": "~4.1.11", - "postcss-calc": "^10.1.1", - "tailwindcss": "catalog:", "@storybook/addon-styling-webpack": "^2.0.0", "@storybook/addon-themes": "^9.0.15", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", "@storybook/react": "^9.0.15", "@storybook/react-webpack5": "^9.0.15", + "@tailwindcss/postcss": "~4.1.11", "@testing-library/user-event": "~14.6.1", "@types/node": "catalog:", "@types/react": "catalog:", @@ -57,6 +55,7 @@ "eslint-plugin-react": "~7.37.4", "eslint-plugin-storybook": "~9.0.3", "global-jsdom": "^26.0.0", + "postcss-calc": "^10.1.1", "postcss-cli": "^11.0.1", "postcss-loader": "~8.1.1", "react": "catalog:", @@ -66,6 +65,7 @@ "stylelint-config-standard": "^38.0.0", "stylelint-order": "7.0.0", "stylelint-selector-bem-pattern": "4.0.1", + "tailwindcss": "catalog:", "tsx": "^4.20.3", "typescript": "catalog:", "typescript-eslint": "~8.35.1" From edacebc10ce5780e6048cbda8a7c8411a1e1f782 Mon Sep 17 00:00:00 2001 From: Claudio Wunder Date: Sun, 20 Jul 2025 03:23:37 +0200 Subject: [PATCH 0638/1385] chore: updated pills text and badge group behaviour (#7997) --- apps/site/components/withBadgeGroup.tsx | 3 +++ apps/site/pages/en/index.mdx | 4 ++-- packages/ui-components/src/Common/BadgeGroup/index.tsx | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/site/components/withBadgeGroup.tsx b/apps/site/components/withBadgeGroup.tsx index 069e762bf48bc..678ab8404bd93 100644 --- a/apps/site/components/withBadgeGroup.tsx +++ b/apps/site/components/withBadgeGroup.tsx @@ -15,6 +15,9 @@ const WithBadgeGroup: FC<{ section: string }> = ({ section }) => { badgeText={badge.title} kind={badge.kind} href={badge.link} + // Ensure that External Links have a target="_blank" and an arrow icon + // indicating that the link is external and should open in a new tab + target={/^https?:/.test(badge.link) ? '_blank' : undefined} > {badge.text} diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index ef36bd8187fed..bb680a0fccb9c 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -31,14 +31,14 @@ layout: home {({ release }) => - Node.js LTS + Latest LTS } {({ release }) => - Node.js Current + Latest Release }
diff --git a/packages/ui-components/src/Common/BadgeGroup/index.tsx b/packages/ui-components/src/Common/BadgeGroup/index.tsx index dbbadebab464f..809becde96250 100644 --- a/packages/ui-components/src/Common/BadgeGroup/index.tsx +++ b/packages/ui-components/src/Common/BadgeGroup/index.tsx @@ -1,4 +1,4 @@ -import ArrowRightIcon from '@heroicons/react/24/solid/ArrowRightIcon'; +import ArrowUpRightIcon from '@heroicons/react/24/solid/ArrowUpRightIcon'; import type { ComponentProps, FC, PropsWithChildren } from 'react'; import Badge from '#ui/Common/Badge'; @@ -30,7 +30,7 @@ const BadgeGroup: FC> = ({ {children} - {args.href && } + {args.target === '_blank' && } ); From 3628c11de905f3b833dcd6ffaadbae46f24121e9 Mon Sep 17 00:00:00 2001 From: Claudio Wunder Date: Sun, 20 Jul 2025 16:45:58 +0200 Subject: [PATCH 0639/1385] feat: pills on footer and clean up code (#7999) --- .../Downloads/ReleaseModal/index.tsx | 7 - apps/site/components/withFooter.tsx | 54 ++++++-- apps/site/next-data/downloadSnippets.ts | 9 +- .../next-data/generators/downloadSnippets.mjs | 8 +- .../site/next-data/generators/releaseData.mjs | 16 --- apps/site/next.helpers.mjs | 9 +- apps/site/package.json | 1 - apps/site/pages/en/index.mdx | 18 --- apps/site/pages/fr/index.mdx | 124 ------------------ apps/site/pages/ja/index.mdx | 124 ------------------ apps/site/types/releases.ts | 1 - packages/i18n/src/locales/en.json | 4 + .../ui-components/src/Common/Badge/index.tsx | 23 ++-- .../src/Common/BadgeGroup/index.module.css | 5 +- .../src/Common/BadgeGroup/index.tsx | 2 +- .../src/Containers/DocSideBar/index.tsx | 0 .../src/Containers/Footer/index.tsx | 25 +++- pnpm-lock.yaml | 3 - 18 files changed, 95 insertions(+), 338 deletions(-) delete mode 100644 apps/site/pages/fr/index.mdx delete mode 100644 apps/site/pages/ja/index.mdx delete mode 100644 packages/ui-components/src/Containers/DocSideBar/index.tsx diff --git a/apps/site/components/Downloads/ReleaseModal/index.tsx b/apps/site/components/Downloads/ReleaseModal/index.tsx index 5ae420ed70cf8..f5a89e8a8a776 100644 --- a/apps/site/components/Downloads/ReleaseModal/index.tsx +++ b/apps/site/components/Downloads/ReleaseModal/index.tsx @@ -6,7 +6,6 @@ import type { FC } from 'react'; import { MinorReleasesTable } from '#site/components/Downloads/MinorReleasesTable'; import { ReleaseOverview } from '#site/components/Downloads/ReleaseOverview'; import Link from '#site/components/Link'; -import LinkWithArrow from '#site/components/LinkWithArrow'; import type { NodeRelease } from '#site/types'; type ReleaseModalProps = { @@ -71,12 +70,6 @@ const ReleaseModal: FC = ({ {modalHeading} - {release.releaseAnnounceLink && ( - - {t('components.releaseModal.releaseAnnouncement')} - - )} -
{t('components.releaseModal.minorVersions')}
diff --git a/apps/site/components/withFooter.tsx b/apps/site/components/withFooter.tsx index 5f5407fbe277d..705a347cc36ee 100644 --- a/apps/site/components/withFooter.tsx +++ b/apps/site/components/withFooter.tsx @@ -1,18 +1,20 @@ -'use client'; - +import BadgeGroup from '@node-core/ui-components/Common/BadgeGroup'; import Footer from '@node-core/ui-components/Containers/Footer'; -import { useTranslations } from 'next-intl'; +import { getTranslations } from 'next-intl/server'; import type { FC } from 'react'; +import { getClientContext } from '#site/client-context'; import Link from '#site/components/Link'; -import { usePathname } from '#site/navigation.mjs'; import { siteNavigation } from '#site/next.json.mjs'; -const WithFooter: FC = () => { - const t = useTranslations(); - const pathname = usePathname(); +import WithNodeRelease from './withNodeRelease'; + +const WithFooter: FC = async () => { + const t = await getTranslations(); + const { pathname } = getClientContext(); const { socialLinks, footerLinks } = siteNavigation; + const updatedFooterLinks = footerLinks .slice(0, -1) .map(link => ({ ...link, text: t(link.text) })); @@ -25,7 +27,43 @@ const WithFooter: FC = () => { footerLinks: updatedFooterLinks, }; - return
; + const primary = ( + <> + + {({ release }) => ( + + {t('components.containers.footer.releasePills.latestLTS')} + + )} + + + + {({ release }) => ( + + {t('components.containers.footer.releasePills.latestRelease')} + + )} + + + ); + + return ( +
+ ); }; export default WithFooter; diff --git a/apps/site/next-data/downloadSnippets.ts b/apps/site/next-data/downloadSnippets.ts index ba2d596eaf062..48dab66a9ac56 100644 --- a/apps/site/next-data/downloadSnippets.ts +++ b/apps/site/next-data/downloadSnippets.ts @@ -1,14 +1,12 @@ import { ENABLE_STATIC_EXPORT, - NEXT_DATA_URL, IS_NOT_VERCEL_RUNTIME_ENV, + NEXT_DATA_URL, } from '#site/next.constants.mjs'; import { availableLocaleCodes } from '#site/next.locales.mjs'; import type { DownloadSnippet } from '#site/types'; -export default async function getDownloadSnippets( - lang: string -): Promise> { +export default async function getDownloadSnippets(lang: string) { // Prevents attempting to retrieve data for an unsupported language as both the generator // and the API endpoint will simply return 404. And we want to prevent a 404 response. if (!availableLocaleCodes.includes(lang)) { @@ -39,5 +37,6 @@ export default async function getDownloadSnippets( // 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 const response = await fetch(fetchURL); - return JSON.parse(await response.text()); + + return JSON.parse(await response.text()) as Array; } diff --git a/apps/site/next-data/generators/downloadSnippets.mjs b/apps/site/next-data/generators/downloadSnippets.mjs index e8b2559b87f76..346f7a96ebaad 100644 --- a/apps/site/next-data/generators/downloadSnippets.mjs +++ b/apps/site/next-data/generators/downloadSnippets.mjs @@ -1,10 +1,8 @@ 'use strict'; -import { readFile } from 'node:fs/promises'; +import { readFile, glob } from 'node:fs/promises'; import { basename, extname, join } from 'node:path'; -import { glob } from 'glob'; - import { availableLocaleCodes } from '../../next.locales.mjs'; /** @@ -20,11 +18,13 @@ export default async function generateDownloadSnippets() { const downloadSnippets = availableLocaleCodes.flatMap(async locale => { // We retrieve the full pathnames of all Blog Posts to read each file individually // Note that we get the files original language (Bash/PowerShell, etc) - const filenames = await glob('**/*.bash', { + const filenamesPromise = glob('**/*.bash', { root: process.cwd(), cwd: `snippets/${locale}/download`, }); + const filenames = await Array.fromAsync(filenamesPromise); + // Creates the base path for the snippets for Node to read from const basePath = join(process.cwd(), `snippets/${locale}/download`); diff --git a/apps/site/next-data/generators/releaseData.mjs b/apps/site/next-data/generators/releaseData.mjs index 4faef90dcb217..c26ee62508982 100644 --- a/apps/site/next-data/generators/releaseData.mjs +++ b/apps/site/next-data/generators/releaseData.mjs @@ -1,7 +1,6 @@ 'use strict'; import nodevu from '@nodevu/core'; -import { glob } from 'glob'; // Gets the appropriate release status for each major release const getNodeReleaseStatus = (now, support) => { @@ -33,12 +32,6 @@ const getNodeReleaseStatus = (now, support) => { * @returns {Promise>} */ const generateReleaseData = async () => { - const releaseAnnouncements = await glob('**/*-release-announce.md', { - root: process.cwd(), - cwd: 'pages/en/blog/announcements/', - absolute: false, - }); - const nodevuOutput = await nodevu({ fetch }); const majors = Object.entries(nodevuOutput).filter( @@ -81,14 +74,6 @@ const generateReleaseData = async () => { releaseDate: release.releaseDate, })); - const majorVersion = latestVersion.semver.major; - - const releaseAnnounceLink = releaseAnnouncements.includes( - `v${majorVersion}-release-announce.md` - ) - ? `/blog/announcements/v${majorVersion}-release-announce` - : undefined; - return { ...support, status: status, @@ -101,7 +86,6 @@ const generateReleaseData = async () => { v8: latestVersion.dependencies.v8, releaseDate: latestVersion.releaseDate, modules: latestVersion.modules.version || '', - releaseAnnounceLink: releaseAnnounceLink, minorVersions: minorVersions, }; }); diff --git a/apps/site/next.helpers.mjs b/apps/site/next.helpers.mjs index 272424cf77152..b6136e3a5d4e4 100644 --- a/apps/site/next.helpers.mjs +++ b/apps/site/next.helpers.mjs @@ -1,9 +1,8 @@ 'use strict'; +import { glob } from 'node:fs/promises'; import { fileURLToPath } from 'node:url'; -import { glob } from 'glob'; - /** * We create a locale cache of Glob Promises * to avoid reading the file system multiple times @@ -37,7 +36,11 @@ export const getMarkdownFiles = async (root, cwd, ignore = []) => { const cacheKey = `${root}${cwd}${ignore.join('')}`; if (!globCacheByPath.has(cacheKey)) { - globCacheByPath.set(cacheKey, glob('**/*.{md,mdx}', { root, cwd, ignore })); + const result = Array.fromAsync( + glob('**/*.{md,mdx}', { root, cwd, ignore }) + ); + + globCacheByPath.set(cacheKey, result); } return globCacheByPath.get(cacheKey); diff --git a/apps/site/package.json b/apps/site/package.json index a0d9710f005a0..ff09cf141f365 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -56,7 +56,6 @@ "cross-env": "catalog:", "feed": "~5.1.0", "github-slugger": "~2.0.0", - "glob": "~11.0.1", "gray-matter": "~4.0.3", "next": "15.3.4", "next-intl": "~4.3.4", diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index bb680a0fccb9c..02f5c43bd78a2 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -26,24 +26,6 @@ layout: home
for Node.js 18 and below - -
- - {({ release }) => - - Latest LTS - } - - - - {({ release }) => - - Latest Release - } - -
- - "LTS" refers to the long-term support version of Node.js. Learn more about Node.js releases.
diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx deleted file mode 100644 index c889e618669a6..0000000000000 --- a/apps/site/pages/fr/index.mdx +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Exécuter du JavaScript partout -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, des outils en ligne de commande et des scripts. - -
- -
-
- - - - - -
- -
-
- -
-
- ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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/ja/index.mdx b/apps/site/pages/ja/index.mdx deleted file mode 100644 index 81c87d4a41b0d..0000000000000 --- a/apps/site/pages/ja/index.mdx +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: どこでもJavaScriptを使おう -layout: home ---- - -
- - -
-

どこでもJavaScriptを使おう

- - Node.js®はクロスプラットフォームに対応したフリーでオープンソースのJavaScript実行環境です。開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトなどを開発する環境を提供します。 - -
- -
-
- - - - - -
- -
-
- -
-
- ```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 { createReadStream, createWriteStream } from 'node:fs'; - import { pipeline } from 'node:stream/promises'; - 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/types/releases.ts b/apps/site/types/releases.ts index f57709c13041a..1c98008cec210 100644 --- a/apps/site/types/releases.ts +++ b/apps/site/types/releases.ts @@ -28,6 +28,5 @@ export interface NodeRelease extends NodeReleaseSource { versionWithPrefix: string; isLts: boolean; status: NodeReleaseStatus; - releaseAnnounceLink?: string; minorVersions: Array; } diff --git a/packages/i18n/src/locales/en.json b/packages/i18n/src/locales/en.json index 064b82e74f790..eb3ff873d6a72 100644 --- a/packages/i18n/src/locales/en.json +++ b/packages/i18n/src/locales/en.json @@ -8,6 +8,10 @@ "versionSupport": "Version Support", "codeOfConduct": "Code of Conduct", "security": "Security Policy" + }, + "releasePills": { + "latestLTS": "Latest LTS", + "latestRelease": "Latest Release" } }, "navBar": { diff --git a/packages/ui-components/src/Common/Badge/index.tsx b/packages/ui-components/src/Common/Badge/index.tsx index 1a6dc8efa6cc2..c5d2e6991880c 100644 --- a/packages/ui-components/src/Common/Badge/index.tsx +++ b/packages/ui-components/src/Common/Badge/index.tsx @@ -17,20 +17,13 @@ const Badge: FC> = ({ className, children, ...props -}) => { - return ( - - {children} - - ); -}; +}) => ( + + {children} + +); export default Badge; diff --git a/packages/ui-components/src/Common/BadgeGroup/index.module.css b/packages/ui-components/src/Common/BadgeGroup/index.module.css index 7f53505bd92a4..e29c6c9cb9aab 100644 --- a/packages/ui-components/src/Common/BadgeGroup/index.module.css +++ b/packages/ui-components/src/Common/BadgeGroup/index.module.css @@ -1,9 +1,8 @@ @reference "../../styles/index.css"; .wrapper { - @apply xs:w-fit - flex - w-full + @apply flex + w-fit items-center rounded-full border diff --git a/packages/ui-components/src/Common/BadgeGroup/index.tsx b/packages/ui-components/src/Common/BadgeGroup/index.tsx index 809becde96250..f48cd4e3017ab 100644 --- a/packages/ui-components/src/Common/BadgeGroup/index.tsx +++ b/packages/ui-components/src/Common/BadgeGroup/index.tsx @@ -10,7 +10,7 @@ type BadgeGroupProps = { kind?: ComponentProps['kind']; size?: ComponentProps['size']; badgeText?: string; - as: LinkLike; + as?: LinkLike; } & ComponentProps; const BadgeGroup: FC> = ({ diff --git a/packages/ui-components/src/Containers/DocSideBar/index.tsx b/packages/ui-components/src/Containers/DocSideBar/index.tsx deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/packages/ui-components/src/Containers/Footer/index.tsx b/packages/ui-components/src/Containers/Footer/index.tsx index 53a977ed33fc2..2fbeabe7ffb7d 100644 --- a/packages/ui-components/src/Containers/Footer/index.tsx +++ b/packages/ui-components/src/Containers/Footer/index.tsx @@ -1,6 +1,4 @@ -'use client'; - -import type { FC, SVGProps } from 'react'; +import type { FC, ReactNode, SVGProps } from 'react'; import NavItem from '#ui/Containers/NavBar/NavItem'; import { @@ -37,16 +35,31 @@ type Navigation = { }>; }; -const Footer: FC<{ +type ExtraNavigationSlots = { + primary?: ReactNode; + secondary?: ReactNode; +}; + +type FooterProps = { pathname: string; as: LinkLike; navigation: Navigation; -}> = ({ pathname = '/', as = 'a', navigation }) => { + slots?: ExtraNavigationSlots; +}; + +const Footer: FC = ({ + pathname = '/', + as = 'a', + navigation, + slots, +}) => { const openJSlink = navigation.footerLinks.at(-1)!; return ( - ); -}; + + +); export default Footer; diff --git a/packages/ui-components/src/Containers/NavBar/index.module.css b/packages/ui-components/src/Containers/NavBar/index.module.css index 7e569a8eb13fb..a7f3a189d5cc3 100644 --- a/packages/ui-components/src/Containers/NavBar/index.module.css +++ b/packages/ui-components/src/Containers/NavBar/index.module.css @@ -3,129 +3,135 @@ .container { @apply border-neutral-200 bg-white - xl:flex xl:h-16 - xl:flex-row - xl:items-center - xl:gap-8 xl:border-b xl:px-8 dark:border-neutral-900 dark:bg-neutral-950; -} -.nodeIconAndMobileItemsToggler { - @apply flex - h-16 - shrink-0 - items-center - border-b - border-neutral-200 - px-4 - xl:flex - xl:h-full - xl:items-center - xl:border-0 - xl:px-0 - dark:border-neutral-900; -} + .innerContainer { + @apply max-w-10xl + xl:mx-auto + xl:flex + xl:h-16 + xl:flex-row + xl:items-center + xl:gap-8; -.sidebarItemToggler { - @apply absolute - right-4 - -z-10 - -translate-y-[200%] - appearance-none - opacity-0; -} + .nodeIconAndMobileItemsToggler { + @apply flex + h-16 + shrink-0 + items-center + border-b + border-neutral-200 + px-4 + xl:flex + xl:h-full + xl:items-center + xl:border-0 + xl:px-0 + dark:border-neutral-900; -.nodeIconWrapper { - @apply h-[30px] - flex-1; -} + .nodeIconWrapper { + @apply h-[30px] + flex-1; + } -.navInteractionIcon, -.sidebarItemToggler { - @apply size-6; -} + .sidebarItemTogglerLabel { + @apply block + cursor-pointer + xl:hidden; -.sidebarItemTogglerLabel { - @apply block - cursor-pointer - xl:hidden; -} + .navInteractionIcon { + @apply size-6; + } + } + } -.main { - @apply flex-1 - flex-col - justify-between - gap-4 - xl:flex - xl:flex-row - xl:items-center; -} + .sidebarItemToggler { + @apply absolute + right-4 + -z-10 + size-6 + -translate-y-[200%] + appearance-none + opacity-0; + } -.navItems { - @apply flex - flex-col - gap-0 - border-b - border-neutral-200 - p-4 - xl:flex-1 - xl:flex-row - xl:gap-1 - xl:border-0 - xl:p-0 - dark:border-neutral-900; -} + .main { + @apply flex-1 + flex-col + justify-between + gap-4 + xl:flex + xl:flex-row + xl:items-center; + } -.actionsWrapper { - @apply flex - flex-row - flex-wrap - items-center - justify-between - gap-2 - border-b - border-neutral-200 - p-4 - sm:flex-nowrap - xl:basis-96 - xl:border-0 - xl:p-0 - dark:border-neutral-900; -} + .navItems { + @apply flex + flex-col + gap-0 + border-b + border-neutral-200 + p-4 + xl:flex-1 + xl:flex-row + xl:gap-1 + xl:border-0 + xl:p-0 + dark:border-neutral-900; + } -span.searchButtonSkeleton { - @apply my-px - mr-2 - flex-grow - rounded-xl; + .actionsWrapper { + @apply flex + flex-row + flex-wrap + items-center + justify-between + gap-2 + border-b + border-neutral-200 + p-4 + sm:flex-nowrap + xl:basis-96 + xl:border-0 + xl:p-0 + dark:border-neutral-900; - &:empty { - @apply h-10; - } -} + span.searchButtonSkeleton { + @apply my-px + mr-2 + grow + rounded-xl; -span.themeToggleSkeleton { - @apply size-9 - rounded-md - py-4; -} + &:empty { + @apply h-10; + } + } -.ghIconWrapper { - @apply size-9 - rounded-md - p-2; + span.themeToggleSkeleton { + @apply size-9 + rounded-md + py-4; + } - svg { - @apply fill-neutral-700 - dark:fill-neutral-300; - } + .ghIconWrapper { + @apply size-9 + rounded-md + p-2; + + svg { + @apply fill-neutral-700 + dark:fill-neutral-300; + } - &:hover { - @apply bg-neutral-100 - dark:bg-neutral-900; + &:hover { + @apply bg-neutral-100 + dark:bg-neutral-900; + } + } + } } } diff --git a/packages/ui-components/src/Containers/NavBar/index.tsx b/packages/ui-components/src/Containers/NavBar/index.tsx index 5c5f6891f1960..4456420968c6d 100644 --- a/packages/ui-components/src/Containers/NavBar/index.tsx +++ b/packages/ui-components/src/Containers/NavBar/index.tsx @@ -14,11 +14,11 @@ import type { ElementType, } from 'react'; -import style from './index.module.css'; +import styles from './index.module.css'; const navInteractionIcons = { - show: , - close: , + show: , + close: , }; type NavbarProps = { @@ -44,48 +44,54 @@ const NavBar: FC> = ({ const [isMenuOpen, setIsMenuOpen] = useState(false); return ( -